上传 excel 导入 导出 相关代码
							parent
							
								
									70c1ee4c3f
								
							
						
					
					
						commit
						c15fdba0a7
					
				
							
								
								
									
										2
									
								
								pom.xml
								
								
								
								
							
							
						
						
									
										2
									
								
								pom.xml
								
								
								
								
							| 
						 | 
				
			
			@ -215,7 +215,7 @@
 | 
			
		|||
		    <artifactId>aliyun-java-sdk-core</artifactId>
 | 
			
		||||
		    <version>3.3.1</version>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		 	<dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
		    <groupId>com.aliyun</groupId>
 | 
			
		||||
		    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
 | 
			
		||||
		    <version>1.0.0</version>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,6 @@ package com.zcloud.controller.accident;
 | 
			
		|||
 | 
			
		||||
import cn.hutool.core.bean.BeanUtil;
 | 
			
		||||
import cn.hutool.core.convert.Convert;
 | 
			
		||||
import cn.hutool.core.lang.Assert;
 | 
			
		||||
import com.zcloud.controller.base.BaseController;
 | 
			
		||||
import com.zcloud.entity.Page;
 | 
			
		||||
import com.zcloud.entity.PageData;
 | 
			
		||||
| 
						 | 
				
			
			@ -11,12 +10,16 @@ import com.zcloud.service.accident.AccidentRecordsService;
 | 
			
		|||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import org.springframework.web.bind.annotation.PathVariable;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestParam;
 | 
			
		||||
import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
@RequiredArgsConstructor
 | 
			
		||||
| 
						 | 
				
			
			@ -25,7 +28,6 @@ public class AccidentRecordsController extends BaseController {
 | 
			
		|||
 | 
			
		||||
    private final AccidentRecordsService accidentRecordsService;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @RequestMapping(value = "/page")
 | 
			
		||||
    public Map<String, Object> queryPage(Page page, HttpServletRequest request) {
 | 
			
		||||
        page.setPd(new PageData(request));
 | 
			
		||||
| 
						 | 
				
			
			@ -38,16 +40,16 @@ public class AccidentRecordsController extends BaseController {
 | 
			
		|||
 | 
			
		||||
    @RequestMapping("/{id}")
 | 
			
		||||
    public Map<String, Object> getById(@PathVariable("id") Long id) {
 | 
			
		||||
        Assert.notNull(id, "id不能为空");
 | 
			
		||||
        Map<String, Object> result = new HashMap<>();
 | 
			
		||||
        result.put("result", "success");
 | 
			
		||||
        result.put("info", accidentRecordsService.getById(id));
 | 
			
		||||
        result.put("info", accidentRecordsService.getById(Optional.of(id).orElseThrow(() -> new RuntimeException("id不能为空"))));
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @RequestMapping("/save")
 | 
			
		||||
    public Map<String, Object> save(HttpServletRequest request) {
 | 
			
		||||
        AccidentRecords accidentRecords = BeanUtil.mapToBean(new PageData(request), AccidentRecords.class, true);
 | 
			
		||||
        accidentRecords.setCorpinfoId(Optional.of(accidentRecords.getCorpinfoId()).orElseThrow(() -> new RuntimeException("所属公司不能为空")));
 | 
			
		||||
        accidentRecordsService.save(accidentRecords);
 | 
			
		||||
        Map<String, Object> result = new HashMap<>();
 | 
			
		||||
        result.put("result", "success");
 | 
			
		||||
| 
						 | 
				
			
			@ -57,6 +59,8 @@ public class AccidentRecordsController extends BaseController {
 | 
			
		|||
    @RequestMapping("/update")
 | 
			
		||||
    public Map<String, Object> update(HttpServletRequest request) {
 | 
			
		||||
        AccidentRecords accidentRecords = BeanUtil.mapToBean(new PageData(request), AccidentRecords.class, true);
 | 
			
		||||
        accidentRecords.setId(Optional.of(accidentRecords.getId()).orElseThrow(() -> new RuntimeException("id不能为空")));
 | 
			
		||||
        accidentRecords.setCorpinfoId(Optional.of(accidentRecords.getCorpinfoId()).orElseThrow(() -> new RuntimeException("所属公司不能为空")));
 | 
			
		||||
        accidentRecordsService.update(accidentRecords);
 | 
			
		||||
        Map<String, Object> result = new HashMap<>();
 | 
			
		||||
        result.put("result", "success");
 | 
			
		||||
| 
						 | 
				
			
			@ -65,11 +69,25 @@ public class AccidentRecordsController extends BaseController {
 | 
			
		|||
 | 
			
		||||
    @RequestMapping("/delete/{ids}")
 | 
			
		||||
    public Map<String, Object> delete(@PathVariable("ids") String values) {
 | 
			
		||||
        Assert.notEmpty(values, "ids不能为空");
 | 
			
		||||
        Long[] ids = Arrays.stream(values.split(",")).map(Convert::toLong).collect(Collectors.toList()).toArray(new Long[]{});
 | 
			
		||||
        String[] split = Optional.of(values).orElseThrow(() -> new RuntimeException("ids不能为空")).split(",");
 | 
			
		||||
        Long[] ids = Arrays.stream(split).map(Convert::toLong).collect(Collectors.toList()).toArray(new Long[]{});
 | 
			
		||||
        accidentRecordsService.delete(ids);
 | 
			
		||||
        Map<String, Object> result = new HashMap<>();
 | 
			
		||||
        result.put("result", "success");
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @RequestMapping("/export/excel")
 | 
			
		||||
    public void exportExcel(HttpServletRequest request ,HttpServletResponse response) {
 | 
			
		||||
        PageData pd = new PageData(request);
 | 
			
		||||
        accidentRecordsService.exportExcel(pd,response);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @RequestMapping("/import/excel")
 | 
			
		||||
    public void importExcel(@RequestParam("file") MultipartFile file) {
 | 
			
		||||
        if (file == null || file.isEmpty()) {
 | 
			
		||||
            throw new RuntimeException("文件不能为空");
 | 
			
		||||
        }
 | 
			
		||||
        accidentRecordsService.importExcel(file);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,17 +7,14 @@ import java.util.*;
 | 
			
		|||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import com.zcloud.entity.system.Dictionaries;
 | 
			
		||||
import com.zcloud.entity.system.User;
 | 
			
		||||
import com.zcloud.service.bus.*;
 | 
			
		||||
import com.zcloud.service.system.*;
 | 
			
		||||
import com.zcloud.util.*;
 | 
			
		||||
import org.apache.commons.collections.map.ListOrderedMap;
 | 
			
		||||
import org.apache.commons.lang.StringUtils;
 | 
			
		||||
import org.apache.commons.lang.time.DateUtils;
 | 
			
		||||
import org.apache.fop.layoutmgr.PaddingElement;
 | 
			
		||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
 | 
			
		||||
import org.apache.shiro.crypto.hash.SimpleHash;
 | 
			
		||||
import org.hyperic.sigar.pager.PageList;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Controller;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
| 
						 | 
				
			
			@ -33,8 +30,6 @@ import com.zcloud.entity.PageData;
 | 
			
		|||
import com.zcloud.entity.system.Role;
 | 
			
		||||
 | 
			
		||||
import net.sf.json.JSONArray;
 | 
			
		||||
import sun.security.krb5.internal.PAData;
 | 
			
		||||
import sun.util.logging.resources.logging;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 说明:系统用户处理类
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,16 +1,27 @@
 | 
			
		|||
package com.zcloud.entity.accident;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.util.IdUtil;
 | 
			
		||||
import cn.hutool.core.util.StrUtil;
 | 
			
		||||
import com.zcloud.entity.PageData;
 | 
			
		||||
import com.zcloud.entity.accident.dto.AccidentRecordsExcel;
 | 
			
		||||
import com.zcloud.service.system.DictionariesService;
 | 
			
		||||
import com.zcloud.util.Jurisdiction;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
 | 
			
		||||
import javax.validation.constraints.NotNull;
 | 
			
		||||
import javax.validation.constraints.Size;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.text.ParseException;
 | 
			
		||||
import java.text.SimpleDateFormat;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 事故记录表
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
@Data
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
public class AccidentRecords implements Serializable {
 | 
			
		||||
| 
						 | 
				
			
			@ -24,13 +35,13 @@ public class AccidentRecords implements Serializable {
 | 
			
		|||
    /**
 | 
			
		||||
     * 事故案号
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 50,message = "事故案号最大长度要小于 50")
 | 
			
		||||
    @Size(max = 50, message = "事故案号最大长度要小于 50")
 | 
			
		||||
    private String incidentNumber;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故名称
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 100,message = "事故名称最大长度要小于 100")
 | 
			
		||||
    @Size(max = 100, message = "事故名称最大长度要小于 100")
 | 
			
		||||
    private String incidentName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -41,25 +52,25 @@ public class AccidentRecords implements Serializable {
 | 
			
		|||
    /**
 | 
			
		||||
     * 所属公司
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 100,message = "所属公司最大长度要小于 100")
 | 
			
		||||
    private String companyName;
 | 
			
		||||
    @Size(max = 100, message = "所属公司最大长度要小于 100")
 | 
			
		||||
    private String corpinfoId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故级别
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 50,message = "事故级别最大长度要小于 50")
 | 
			
		||||
    private String incidentLevel;
 | 
			
		||||
    @Size(max = 50, message = "事故级别最大长度要小于 50")
 | 
			
		||||
    private Integer incidentLevel;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故性质
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 50,message = "事故性质最大长度要小于 50")
 | 
			
		||||
    @Size(max = 50, message = "事故性质最大长度要小于 50")
 | 
			
		||||
    private String incidentNature;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故发生地点
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 200,message = "事故发生地点最大长度要小于 200")
 | 
			
		||||
    @Size(max = 200, message = "事故发生地点最大长度要小于 200")
 | 
			
		||||
    private String location;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -70,8 +81,8 @@ public class AccidentRecords implements Serializable {
 | 
			
		|||
    /**
 | 
			
		||||
     * 直接经济损失(万元)
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 100,message = "直接经济损失(万元)最大长度要小于 100")
 | 
			
		||||
    private String directLoss;
 | 
			
		||||
    @Size(max = 100, message = "直接经济损失(万元)最大长度要小于 100")
 | 
			
		||||
    private Integer directLoss;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 受伤人数
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +102,7 @@ public class AccidentRecords implements Serializable {
 | 
			
		|||
    /**
 | 
			
		||||
     * 事故起因
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 200,message = "事故起因最大长度要小于 200")
 | 
			
		||||
    @Size(max = 200, message = "事故起因最大长度要小于 200")
 | 
			
		||||
    private String cause;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +133,7 @@ public class AccidentRecords implements Serializable {
 | 
			
		|||
    /**
 | 
			
		||||
     * 填表人
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 50,message = "填表人最大长度要小于 50")
 | 
			
		||||
    @Size(max = 50, message = "填表人最大长度要小于 50")
 | 
			
		||||
    private String creator;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +144,7 @@ public class AccidentRecords implements Serializable {
 | 
			
		|||
    /**
 | 
			
		||||
     * 创建人
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 50,message = "创建人最大长度要小于 50")
 | 
			
		||||
    @Size(max = 50, message = "创建人最大长度要小于 50")
 | 
			
		||||
    private String createdBy;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -144,7 +155,7 @@ public class AccidentRecords implements Serializable {
 | 
			
		|||
    /**
 | 
			
		||||
     * 修改人
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 50,message = "修改人最大长度要小于 50")
 | 
			
		||||
    @Size(max = 50, message = "修改人最大长度要小于 50")
 | 
			
		||||
    private String updatedBy;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -159,4 +170,60 @@ public class AccidentRecords implements Serializable {
 | 
			
		|||
    private Integer isDeleted;
 | 
			
		||||
 | 
			
		||||
    private static final long serialVersionUID = 1L;
 | 
			
		||||
 | 
			
		||||
    public AccidentRecords(AccidentRecordsExcel reader, DictionariesService service) {
 | 
			
		||||
        this.id = IdUtil.getSnowflake(1, 1).nextId();
 | 
			
		||||
        this.corpinfoId = reader.getCompanyName();
 | 
			
		||||
        this.incidentNumber = reader.getIncidentNumber();
 | 
			
		||||
        this.incidentName = reader.getIncidentName();
 | 
			
		||||
        this.incidentType = findByName(reader.getIncidentType(), service);
 | 
			
		||||
        this.incidentLevel = findByName(reader.getIncidentLevel(), service);
 | 
			
		||||
        this.incidentNature = reader.getIncidentNature();
 | 
			
		||||
        this.location = reader.getLocation();
 | 
			
		||||
        this.incidentDate = dateFormat(reader.getIncidentDate());
 | 
			
		||||
        this.directLoss = reader.getDirectLoss();
 | 
			
		||||
        this.injured = reader.getInjured();
 | 
			
		||||
        this.fatalities = reader.getFatalities();
 | 
			
		||||
        this.seriouslyInjured = reader.getSeriouslyInjured();
 | 
			
		||||
        this.cause = reader.getCause();
 | 
			
		||||
        this.summary = reader.getSummary();
 | 
			
		||||
        this.analysis = reader.getAnalysis();
 | 
			
		||||
        this.suggestions = reader.getSuggestions();
 | 
			
		||||
        this.measures = reader.getMeasures();
 | 
			
		||||
        this.creator = reader.getCreator();
 | 
			
		||||
        this.reportDate = dateFormat(reader.getReportDate());
 | 
			
		||||
        this.createdBy = Jurisdiction.getUsername();
 | 
			
		||||
        this.createdTime = new Date();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Integer findByName(String name, DictionariesService service) {
 | 
			
		||||
        if (StrUtil.isEmpty(name)) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        PageData pageData = new PageData();
 | 
			
		||||
        pageData.put("NAME", name);
 | 
			
		||||
        try {
 | 
			
		||||
            PageData data = service.findByName(pageData);
 | 
			
		||||
            return Optional.ofNullable(data).map(pd -> (Integer) pd.get("BIANMA")).orElseThrow(() -> new RuntimeException("未找到字典数据:" + name));
 | 
			
		||||
        } catch (RuntimeException e) {
 | 
			
		||||
            log.error("转换字典失败", e);
 | 
			
		||||
            throw e;
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            log.error("获取字典失败", e);
 | 
			
		||||
            throw new RuntimeException("获取字典失败");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Date dateFormat(String dateStr) {
 | 
			
		||||
        if (StrUtil.isEmpty(dateStr)) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 | 
			
		||||
        try {
 | 
			
		||||
            return formatter.parse(dateStr);
 | 
			
		||||
        } catch (ParseException e) {
 | 
			
		||||
            log.error("日期转换失败", e);
 | 
			
		||||
            throw new RuntimeException("日期转换失败,支持的格式:yyyy-MM-dd HH:mm:ss");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
package com.zcloud.entity.accident;
 | 
			
		||||
 | 
			
		||||
import java.lang.annotation.Documented;
 | 
			
		||||
import java.lang.annotation.Retention;
 | 
			
		||||
import java.lang.annotation.Target;
 | 
			
		||||
 | 
			
		||||
import static java.lang.annotation.ElementType.FIELD;
 | 
			
		||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
 | 
			
		||||
 | 
			
		||||
@Target(FIELD)
 | 
			
		||||
@Retention(RUNTIME)
 | 
			
		||||
@Documented
 | 
			
		||||
public @interface ExcelValue {
 | 
			
		||||
 | 
			
		||||
    String value();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,136 +0,0 @@
 | 
			
		|||
package com.zcloud.entity.accident.dto;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.date.DatePattern;
 | 
			
		||||
import com.zcloud.entity.accident.validated.Create;
 | 
			
		||||
import com.zcloud.entity.accident.validated.Update;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import org.hibernate.validator.constraints.Range;
 | 
			
		||||
import org.springframework.format.annotation.DateTimeFormat;
 | 
			
		||||
 | 
			
		||||
import javax.validation.constraints.NotNull;
 | 
			
		||||
import javax.validation.constraints.Null;
 | 
			
		||||
import javax.validation.constraints.Size;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class AccidentRecordsDto implements Serializable {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 主键ID
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull(message = "主键ID不能为null", groups = Update.class)
 | 
			
		||||
    @Null(message = "主键ID必须null", groups = Create.class)
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故案号
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 50, message = "事故案号最大长度要小于 50", groups = {Create.class, Update.class})
 | 
			
		||||
    private String incidentNumber;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故名称
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 100, message = "事故名称最大长度要小于 100", groups = {Create.class, Update.class})
 | 
			
		||||
    private String incidentName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故类型
 | 
			
		||||
     */
 | 
			
		||||
    @Range(min = 1, max = 21, message = "事故类型范围在1-21之间", groups = {Create.class, Update.class})
 | 
			
		||||
    private Integer incidentType;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 所属公司
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 100, message = "所属公司最大长度要小于 100", groups = {Create.class, Update.class})
 | 
			
		||||
    private String companyName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故级别
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 50, message = "事故级别最大长度要小于 50", groups = {Create.class, Update.class})
 | 
			
		||||
    private String incidentLevel;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故性质
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 50, message = "事故性质最大长度要小于 50", groups = {Create.class, Update.class})
 | 
			
		||||
    private String incidentNature;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故发生地点
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 200, message = "事故发生地点最大长度要小于 200", groups = {Create.class, Update.class})
 | 
			
		||||
    private String location;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故发生时间
 | 
			
		||||
     */
 | 
			
		||||
    @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
 | 
			
		||||
    private Date incidentDate;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 直接经济损失(万元)
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 100, message = "直接经济损失(万元)最大长度要小于 100", groups = {Create.class, Update.class})
 | 
			
		||||
    private String directLoss;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 受伤人数
 | 
			
		||||
     */
 | 
			
		||||
    private Integer injured;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 死亡人数
 | 
			
		||||
     */
 | 
			
		||||
    private Integer fatalities;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 重伤人数
 | 
			
		||||
     */
 | 
			
		||||
    private Integer seriouslyInjured;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故起因
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 200, message = "事故起因最大长度要小于 200", groups = {Create.class, Update.class})
 | 
			
		||||
    private String cause;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故概述
 | 
			
		||||
     */
 | 
			
		||||
    private String summary;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故照片(可以存储图片路径或使用 BLOB 类型存储图片本身)
 | 
			
		||||
     */
 | 
			
		||||
    private String photos;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 原因分析及责任认定
 | 
			
		||||
     */
 | 
			
		||||
    private String analysis;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 考核建议
 | 
			
		||||
     */
 | 
			
		||||
    private String suggestions;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 整改措施
 | 
			
		||||
     */
 | 
			
		||||
    private String measures;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 填表人
 | 
			
		||||
     */
 | 
			
		||||
    @Size(max = 50, message = "填表人最大长度要小于 50", groups = {Create.class, Update.class})
 | 
			
		||||
    private String creator;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 报出日期
 | 
			
		||||
     */
 | 
			
		||||
    private Date reportDate;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,124 @@
 | 
			
		|||
package com.zcloud.entity.accident.dto;
 | 
			
		||||
 | 
			
		||||
import com.zcloud.entity.accident.ExcelValue;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class AccidentRecordsExcel implements Serializable {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故案号
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = " 事故案号")
 | 
			
		||||
    private String incidentNumber;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故名称
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = " 事故名称")
 | 
			
		||||
    private String incidentName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故类型
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = " 事故类型")
 | 
			
		||||
    private String incidentType;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 所属公司
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "所属公司")
 | 
			
		||||
    private String companyName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故级别
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "事故级别")
 | 
			
		||||
    private String incidentLevel;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故性质
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "事故性质")
 | 
			
		||||
    private String incidentNature;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故发生地点
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "事故发生地点")
 | 
			
		||||
    private String location;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故发生时间
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "事故发生时间")
 | 
			
		||||
    private String incidentDate;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 直接经济损失(万元)
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "直接经济损失(万元)")
 | 
			
		||||
    private Integer directLoss;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 受伤人数
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "受伤人数")
 | 
			
		||||
    private Integer injured;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 死亡人数
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "死亡人数")
 | 
			
		||||
    private Integer fatalities;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 重伤人数
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "重伤人数")
 | 
			
		||||
    private Integer seriouslyInjured;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故起因
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "事故起因")
 | 
			
		||||
    private String cause;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 事故概述
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "事故概述")
 | 
			
		||||
    private String summary;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 原因分析及责任认定
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "原因分析及责任认定")
 | 
			
		||||
    private String analysis;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 考核建议
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "考核建议")
 | 
			
		||||
    private String suggestions;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 整改措施
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "整改措施")
 | 
			
		||||
    private String measures;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 填表人
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "填表人")
 | 
			
		||||
    private String creator;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 报出日期
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelValue(value = "报出日期")
 | 
			
		||||
    private String reportDate;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3,6 +3,7 @@ package com.zcloud.mapper.datasource.accident;
 | 
			
		|||
import com.zcloud.entity.Page;
 | 
			
		||||
import com.zcloud.entity.PageData;
 | 
			
		||||
import com.zcloud.entity.accident.AccidentRecords;
 | 
			
		||||
import com.zcloud.entity.accident.dto.AccidentRecordsExcel;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
| 
						 | 
				
			
			@ -18,4 +19,8 @@ public interface AccidentRecordsMapper {
 | 
			
		|||
    int updateById(AccidentRecords accidentRecords);
 | 
			
		||||
 | 
			
		||||
    int delete(@Param("ids") Long[] ids);
 | 
			
		||||
 | 
			
		||||
    List<AccidentRecordsExcel> listExcel(PageData pd);
 | 
			
		||||
 | 
			
		||||
    void saveExcel(AccidentRecordsExcel records, long id, String username);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3,7 +3,9 @@ package com.zcloud.service.accident;
 | 
			
		|||
import com.zcloud.entity.Page;
 | 
			
		||||
import com.zcloud.entity.PageData;
 | 
			
		||||
import com.zcloud.entity.accident.AccidentRecords;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public interface AccidentRecordsService {
 | 
			
		||||
| 
						 | 
				
			
			@ -17,4 +19,8 @@ public interface AccidentRecordsService {
 | 
			
		|||
    void update(AccidentRecords bean);
 | 
			
		||||
 | 
			
		||||
    void delete(Long[] ids);
 | 
			
		||||
 | 
			
		||||
    void exportExcel(PageData pd, HttpServletResponse response);
 | 
			
		||||
 | 
			
		||||
    void importExcel(MultipartFile file);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,31 +1,59 @@
 | 
			
		|||
package com.zcloud.service.accident.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.lang.Assert;
 | 
			
		||||
import cn.hutool.core.util.CharsetUtil;
 | 
			
		||||
import cn.hutool.core.util.IdUtil;
 | 
			
		||||
import cn.hutool.core.util.ReflectUtil;
 | 
			
		||||
import cn.hutool.core.util.URLUtil;
 | 
			
		||||
import cn.hutool.poi.excel.ExcelReader;
 | 
			
		||||
import cn.hutool.poi.excel.ExcelUtil;
 | 
			
		||||
import cn.hutool.poi.excel.ExcelWriter;
 | 
			
		||||
import com.zcloud.entity.Page;
 | 
			
		||||
import com.zcloud.entity.PageData;
 | 
			
		||||
import com.zcloud.entity.accident.AccidentRecords;
 | 
			
		||||
import com.zcloud.entity.accident.validated.Create;
 | 
			
		||||
import com.zcloud.entity.accident.validated.Update;
 | 
			
		||||
import com.zcloud.entity.accident.ExcelValue;
 | 
			
		||||
import com.zcloud.entity.accident.dto.AccidentRecordsExcel;
 | 
			
		||||
import com.zcloud.mapper.datasource.accident.AccidentRecordsMapper;
 | 
			
		||||
import com.zcloud.service.accident.AccidentRecordsService;
 | 
			
		||||
import com.zcloud.service.system.DictionariesService;
 | 
			
		||||
import com.zcloud.util.Jurisdiction;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.apache.ibatis.session.ExecutorType;
 | 
			
		||||
import org.apache.ibatis.session.SqlSession;
 | 
			
		||||
import org.apache.ibatis.session.SqlSessionFactory;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
@Slf4j
 | 
			
		||||
@Service
 | 
			
		||||
@RequiredArgsConstructor
 | 
			
		||||
public class AccidentRecordsServiceImpl implements AccidentRecordsService {
 | 
			
		||||
 | 
			
		||||
    private final AccidentRecordsMapper accidentRecordsMapper;
 | 
			
		||||
    private final SqlSessionFactory sqlSessionFactory;
 | 
			
		||||
    private final DictionariesService dictionariesService;
 | 
			
		||||
    private static final Map<String, String> HEADER_ALIAS_CACHE;
 | 
			
		||||
 | 
			
		||||
    static {
 | 
			
		||||
        HEADER_ALIAS_CACHE = Arrays.stream(ReflectUtil.getFields(AccidentRecordsExcel.class))
 | 
			
		||||
                .filter(field -> field.isAnnotationPresent(ExcelValue.class))
 | 
			
		||||
                .collect(Collectors.toMap(Field::getName, field -> field.getAnnotation(ExcelValue.class).value()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<PageData> queryPage(Page page) {
 | 
			
		||||
        page.getPd().put("corpInfoId", Jurisdiction.getCORPINFO_ID());
 | 
			
		||||
        return accidentRecordsMapper.listPage(page);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +64,7 @@ public class AccidentRecordsServiceImpl implements AccidentRecordsService {
 | 
			
		|||
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public void save(@Validated(Create.class) AccidentRecords accidentRecords) {
 | 
			
		||||
    public void save(AccidentRecords accidentRecords) {
 | 
			
		||||
        accidentRecords.setId(IdUtil.getSnowflake(1, 1).nextId());
 | 
			
		||||
        accidentRecords.setCreatedBy(Jurisdiction.getUsername());
 | 
			
		||||
        accidentRecords.setCreatedTime(new Date());
 | 
			
		||||
| 
						 | 
				
			
			@ -46,7 +74,7 @@ public class AccidentRecordsServiceImpl implements AccidentRecordsService {
 | 
			
		|||
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public void update(@Validated(Update.class) AccidentRecords accidentRecords) {
 | 
			
		||||
    public void update(AccidentRecords accidentRecords) {
 | 
			
		||||
        accidentRecords.setUpdatedBy(Jurisdiction.getUsername());
 | 
			
		||||
        accidentRecords.setUpdatedTime(new Date());
 | 
			
		||||
        Assert.isTrue(accidentRecordsMapper.updateById(accidentRecords) == 1, "更新事故记录失败");
 | 
			
		||||
| 
						 | 
				
			
			@ -57,4 +85,56 @@ public class AccidentRecordsServiceImpl implements AccidentRecordsService {
 | 
			
		|||
    public void delete(Long[] ids) {
 | 
			
		||||
        Assert.isTrue(accidentRecordsMapper.delete(ids) == ids.length, "删除事故记录失败");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void exportExcel(PageData pd, HttpServletResponse response) {
 | 
			
		||||
        // 查询数据
 | 
			
		||||
        pd.put("corpInfoId", Jurisdiction.getCORPINFO_ID());
 | 
			
		||||
        List<AccidentRecordsExcel> list = accidentRecordsMapper.listExcel(pd);
 | 
			
		||||
 | 
			
		||||
        // 检查查询结果是否为空
 | 
			
		||||
        if (list == null || list.isEmpty()) {
 | 
			
		||||
            throw new RuntimeException("没有查询到数据");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // 设置响应头
 | 
			
		||||
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
 | 
			
		||||
        response.setCharacterEncoding("utf-8");
 | 
			
		||||
        response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + URLUtil.encode("事故调查表", CharsetUtil.UTF_8) + ".xlsx");
 | 
			
		||||
 | 
			
		||||
        try (ExcelWriter writer = ExcelUtil.getBigWriter()) {
 | 
			
		||||
            writer.setHeaderAlias(HEADER_ALIAS_CACHE)
 | 
			
		||||
                    .setOnlyAlias(true)
 | 
			
		||||
                    .write(list, true)
 | 
			
		||||
                    .flush(response.getOutputStream());
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            log.error("导出excel失败", e);
 | 
			
		||||
            throw new RuntimeException("导出excel失败");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void importExcel(MultipartFile file) {
 | 
			
		||||
        // ExecutorType.BATCH: 这个执行器会批量执行所有更新语句。
 | 
			
		||||
        SqlSession sqlSession = null;
 | 
			
		||||
        try (ExcelReader reader = ExcelUtil.getReader(file.getInputStream())) {
 | 
			
		||||
            // 标记别名
 | 
			
		||||
            HEADER_ALIAS_CACHE.forEach((k, v) -> reader.addHeaderAlias(v, k));
 | 
			
		||||
            List<AccidentRecordsExcel> recordsExcels = reader.readAll(AccidentRecordsExcel.class);
 | 
			
		||||
            sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
 | 
			
		||||
            AccidentRecordsMapper mapper = sqlSession.getMapper(AccidentRecordsMapper.class);
 | 
			
		||||
            recordsExcels.forEach(accidentRecord -> mapper.save(new AccidentRecords(accidentRecord, dictionariesService)));
 | 
			
		||||
            sqlSession.commit();
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            if (sqlSession != null) {
 | 
			
		||||
                sqlSession.rollback();
 | 
			
		||||
            }
 | 
			
		||||
            log.error("导入excel失败", e);
 | 
			
		||||
            throw new RuntimeException("导入excel失败");
 | 
			
		||||
        } finally {
 | 
			
		||||
            if (sqlSession != null) {
 | 
			
		||||
                sqlSession.close();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,68 +1,35 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 | 
			
		||||
<mapper namespace="com.zcloud.mapper.datasource.accident.AccidentRecordsMapper">
 | 
			
		||||
  <resultMap id="BaseResultMap" type="com.zcloud.entity.accident.AccidentRecords">
 | 
			
		||||
    <!--@mbg.generated-->
 | 
			
		||||
    <!--@Table accident_records-->
 | 
			
		||||
    <id column="id" jdbcType="BIGINT" property="id" />
 | 
			
		||||
    <result column="incident_number" jdbcType="VARCHAR" property="incidentNumber" />
 | 
			
		||||
    <result column="incident_name" jdbcType="VARCHAR" property="incidentName" />
 | 
			
		||||
    <result column="incident_type" jdbcType="BOOLEAN" property="incidentType" />
 | 
			
		||||
    <result column="company_name" jdbcType="VARCHAR" property="companyName" />
 | 
			
		||||
    <result column="incident_level" jdbcType="VARCHAR" property="incidentLevel" />
 | 
			
		||||
    <result column="incident_nature" jdbcType="VARCHAR" property="incidentNature" />
 | 
			
		||||
    <result column="location" jdbcType="VARCHAR" property="location" />
 | 
			
		||||
    <result column="incident_date" jdbcType="TIMESTAMP" property="incidentDate" />
 | 
			
		||||
    <result column="direct_loss" jdbcType="VARCHAR" property="directLoss" />
 | 
			
		||||
    <result column="injured" jdbcType="INTEGER" property="injured" />
 | 
			
		||||
    <result column="fatalities" jdbcType="INTEGER" property="fatalities" />
 | 
			
		||||
    <result column="seriously_injured" jdbcType="INTEGER" property="seriouslyInjured" />
 | 
			
		||||
    <result column="cause" jdbcType="VARCHAR" property="cause" />
 | 
			
		||||
    <result column="summary" jdbcType="LONGVARCHAR" property="summary" />
 | 
			
		||||
    <result column="photos" jdbcType="LONGVARCHAR" property="photos" />
 | 
			
		||||
    <result column="analysis" jdbcType="LONGVARCHAR" property="analysis" />
 | 
			
		||||
    <result column="suggestions" jdbcType="LONGVARCHAR" property="suggestions" />
 | 
			
		||||
    <result column="measures" jdbcType="LONGVARCHAR" property="measures" />
 | 
			
		||||
    <result column="creator" jdbcType="VARCHAR" property="creator" />
 | 
			
		||||
    <result column="report_date" jdbcType="DATE" property="reportDate" />
 | 
			
		||||
    <result column="created_by" jdbcType="VARCHAR" property="createdBy" />
 | 
			
		||||
    <result column="created_time" jdbcType="TIMESTAMP" property="createdTime" />
 | 
			
		||||
    <result column="updated_by" jdbcType="VARCHAR" property="updatedBy" />
 | 
			
		||||
    <result column="updated_time" jdbcType="TIMESTAMP" property="updatedTime" />
 | 
			
		||||
    <result column="is_deleted" jdbcType="BOOLEAN" property="isDeleted" />
 | 
			
		||||
  </resultMap>
 | 
			
		||||
  <sql id="Base_Column_List">
 | 
			
		||||
    <!--@mbg.generated-->
 | 
			
		||||
    id, incident_number, incident_name, incident_type, company_name, incident_level,
 | 
			
		||||
    incident_nature, `location`, incident_date, direct_loss, injured, fatalities, seriously_injured,
 | 
			
		||||
    cause, summary, photos, analysis, suggestions, measures, creator, report_date, created_by,
 | 
			
		||||
    created_time, updated_by, updated_time, is_deleted
 | 
			
		||||
  </sql>
 | 
			
		||||
 | 
			
		||||
  <select id="listPage" parameterType="page" resultType="pd">
 | 
			
		||||
      select id, company_name, location, incident_date, incident_name
 | 
			
		||||
      from accident_records
 | 
			
		||||
      select id, CORP_NAME as companyName, location, incident_date, incident_name
 | 
			
		||||
      from accident_records as ar
 | 
			
		||||
      left join bus_corp_info as bci on ar.corpinfo_id = bci.CORPINFO_ID
 | 
			
		||||
      <where>
 | 
			
		||||
          <if test="pd.corpInfoId != null and pd.corpInfoId != ''">
 | 
			
		||||
              and ar.corpinfo_id = #{pd.corpInfoId}
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="pd.incidentName != null and pd.incidentName != ''">
 | 
			
		||||
              and incident_number like concat('%', #{pd.incidentName}, '%')
 | 
			
		||||
              and incident_name like concat('%', #{pd.incidentName}, '%')
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="pd.incidentDates != null and pd.incidentDates.size() == 2">
 | 
			
		||||
              and incident_date between #{pd.incidentDates[0]} and #{pd.incidentDates[1]}
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="pd.location != null and pd.location != ''">
 | 
			
		||||
              and incident_number like concat('%', #{pd.location}, '%')
 | 
			
		||||
              and location like concat('%', #{pd.location}, '%')
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="pd.incidentLevel != null and pd.incidentLevel != ''">
 | 
			
		||||
              and incident_number like concat('%', #{pd.incidentLevel}, '%')
 | 
			
		||||
              and incident_level like concat('%', #{pd.incidentLevel}, '%')
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="pd.incidentType != null">
 | 
			
		||||
              and incidentType = #{pd.incidentType}
 | 
			
		||||
              and incident_type = #{pd.incidentType}
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="1 == 1">
 | 
			
		||||
              and is_deleted = 0
 | 
			
		||||
          </if>
 | 
			
		||||
      </where>
 | 
			
		||||
      order by incident_date desc , company_name
 | 
			
		||||
      order by incident_date desc , companyName
 | 
			
		||||
  </select>
 | 
			
		||||
 | 
			
		||||
  <select id="getById" resultType="com.zcloud.entity.PageData">
 | 
			
		||||
| 
						 | 
				
			
			@ -70,8 +37,8 @@
 | 
			
		|||
             incident_number,
 | 
			
		||||
             incident_name,
 | 
			
		||||
             incident_type,
 | 
			
		||||
             company_name,
 | 
			
		||||
             incident_level,
 | 
			
		||||
             CORP_NAME as companyName,
 | 
			
		||||
             incident_nature,
 | 
			
		||||
             `location`,
 | 
			
		||||
             incident_date,
 | 
			
		||||
| 
						 | 
				
			
			@ -87,8 +54,10 @@
 | 
			
		|||
             measures,
 | 
			
		||||
             creator,
 | 
			
		||||
             report_date
 | 
			
		||||
      from accident_records
 | 
			
		||||
      where id = #{id} and is_deleted = 0;
 | 
			
		||||
      from accident_records as ar
 | 
			
		||||
               left join bus_corp_info as bci on ar.corpinfo_id = bci.CORPINFO_ID
 | 
			
		||||
      where ar.id = #{id}
 | 
			
		||||
        and ar.is_deleted = 0;
 | 
			
		||||
  </select>
 | 
			
		||||
 | 
			
		||||
  <insert id="save" parameterType="com.zcloud.entity.accident.AccidentRecords">
 | 
			
		||||
| 
						 | 
				
			
			@ -106,8 +75,8 @@
 | 
			
		|||
          <if test="incidentType != null">
 | 
			
		||||
              incident_type,
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="companyName != null">
 | 
			
		||||
              company_name,
 | 
			
		||||
          <if test="corpinfoId != null">
 | 
			
		||||
              corpinfo_id,
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="incidentLevel != null">
 | 
			
		||||
              incident_level,
 | 
			
		||||
| 
						 | 
				
			
			@ -187,8 +156,8 @@
 | 
			
		|||
          <if test="incidentType != null">
 | 
			
		||||
              #{incidentType},
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="companyName != null">
 | 
			
		||||
              #{companyName},
 | 
			
		||||
          <if test="corpinfoId != null">
 | 
			
		||||
              #{corpinfoId},
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="incidentLevel != null">
 | 
			
		||||
              #{incidentLevel},
 | 
			
		||||
| 
						 | 
				
			
			@ -262,7 +231,7 @@
 | 
			
		|||
          <if test="incidentNumber != null">incident_number = #{incidentNumber},</if>
 | 
			
		||||
          <if test="incidentName != null">incident_name = #{incidentName},</if>
 | 
			
		||||
          <if test="incidentType != null">incident_type = #{incidentType},</if>
 | 
			
		||||
          <if test="companyName != null">company_name = #{companyName},</if>
 | 
			
		||||
          <if test="corpinfoId != null">corpinfo_id = #{corpinfoId},</if>
 | 
			
		||||
          <if test="incidentLevel != null">incident_level = #{incidentLevel},</if>
 | 
			
		||||
          <if test="incidentNature != null">incident_nature = #{incidentNature},</if>
 | 
			
		||||
          <if test="location != null">location = #{location},</if>
 | 
			
		||||
| 
						 | 
				
			
			@ -297,4 +266,54 @@
 | 
			
		|||
          #{item}
 | 
			
		||||
      </foreach>
 | 
			
		||||
  </update>
 | 
			
		||||
 | 
			
		||||
  <select id="listExcel" resultType="com.zcloud.entity.accident.dto.AccidentRecordsExcel">
 | 
			
		||||
      select incident_number,
 | 
			
		||||
             incident_name,
 | 
			
		||||
            (select NAME from sys_dictionaries_corp
 | 
			
		||||
            where DICTIONARIES_ID = '' and incident_type = BIANMA) as 'incidentType',
 | 
			
		||||
            (select NAME from sys_dictionaries_corp
 | 
			
		||||
            where DICTIONARIES_ID = '' and incident_level = BIANMA) as 'incidentLevel',
 | 
			
		||||
             CORP_NAME as 'companyName',
 | 
			
		||||
             incident_nature ,
 | 
			
		||||
             `location`,
 | 
			
		||||
             date_format(incident_date, '%Y年%m月%d日%H时%I分%s秒') as 'incidentDate',
 | 
			
		||||
             direct_loss,
 | 
			
		||||
             injured,
 | 
			
		||||
             fatalities,
 | 
			
		||||
             seriously_injured,
 | 
			
		||||
             cause,
 | 
			
		||||
             summary,
 | 
			
		||||
             analysis,
 | 
			
		||||
             suggestions,
 | 
			
		||||
             measures,
 | 
			
		||||
             ar.creator,
 | 
			
		||||
             date_format(report_date, '%Y年%m月%d日') as 'reportDate'
 | 
			
		||||
      from accident_records as ar
 | 
			
		||||
               left join bus_corp_info as bci on ar.corpinfo_id = bci.CORPINFO_ID
 | 
			
		||||
      <where>
 | 
			
		||||
          <if test="pd.corpInfoId != null and pd.corpInfoId != ''">
 | 
			
		||||
              and ar.corpinfo_id = #{pd.corpInfoId}
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="pd.incidentName != null and pd.incidentName != ''">
 | 
			
		||||
              and incident_name like concat('%', #{pd.incidentName}, '%')
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="pd.incidentDates != null and pd.incidentDates.size() == 2">
 | 
			
		||||
              and incident_date between #{pd.incidentDates[0]} and #{pd.incidentDates[1]}
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="pd.location != null and pd.location != ''">
 | 
			
		||||
              and location like concat('%', #{pd.location}, '%')
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="pd.incidentLevel != null and pd.incidentLevel != ''">
 | 
			
		||||
              and incident_level like concat('%', #{pd.incidentLevel}, '%')
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="pd.incidentType != null">
 | 
			
		||||
              and incident_type = #{pd.incidentType}
 | 
			
		||||
          </if>
 | 
			
		||||
          <if test="1 == 1">
 | 
			
		||||
              and is_deleted = 0
 | 
			
		||||
          </if>
 | 
			
		||||
      </where>
 | 
			
		||||
      order by incident_date desc, companyName
 | 
			
		||||
  </select>
 | 
			
		||||
</mapper>
 | 
			
		||||
		Loading…
	
		Reference in New Issue