Browse Source

保养标准导出实现新增,删除,修改功能

2 years ago
parent
commit
9093c273ee

+ 3 - 0
platform-dao/src/main/java/com/platform/dao/mapper/check/CheckStandardMapper.java

@@ -17,6 +17,7 @@ import java.util.List;
  */
 @Component
 public interface CheckStandardMapper extends MyMapper<CheckStandard> {
+
     /**
      * 分页查询
      * @param dto
@@ -45,4 +46,6 @@ public interface CheckStandardMapper extends MyMapper<CheckStandard> {
     List<CheckStandardVO> selectProjectStandardList(String projectId);
 
     void updateBatch(List<CheckStandard> updateStandardList);
+
+    void deleteBatch(List<CheckStandard> deleteStandardList);
 }

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/mapper/check/CheckStandardSpareMapper.java

@@ -2,6 +2,7 @@ package com.platform.dao.mapper.check;
 
 import com.platform.dao.config.MyMapper;
 import com.platform.dao.dto.check.CheckStandardSpareDTO;
+import com.platform.dao.entity.check.CheckStandard;
 import com.platform.dao.entity.check.CheckStandardSpare;
 import com.platform.dao.vo.query.check.CheckStandardSpareVO;
 import org.springframework.stereotype.Component;
@@ -16,6 +17,7 @@ import java.util.List;
  */
 @Component
 public interface CheckStandardSpareMapper extends MyMapper<CheckStandardSpare> {
+    void deleteBatch(List<CheckStandard> vos);
 
     /**
      * 查询保养对应的备件列表

+ 64 - 1
platform-dao/src/main/java/com/platform/dao/util/CustomExcelImportUtil.java

@@ -1186,6 +1186,68 @@ public class CustomExcelImportUtil {
         return result;
     }
 
+    /**
+     * 导入点检标准
+     *
+     * @param inputstream
+     * @return
+     * @throws IOException
+     * @throws InvalidFormatException
+     */
+    public static List<CheckStandard> importCheckStandardList2(InputStream inputstream) throws IOException, InvalidFormatException {
+        if (inputstream == null) {
+            return Collections.emptyList();
+        }
+        Workbook book = null;
+        if (!(inputstream.markSupported())) {
+            inputstream = new PushbackInputStream(inputstream, 8);
+        }
+        if (POIFSFileSystem.hasPOIFSHeader(inputstream)) {
+            book = new HSSFWorkbook(inputstream);
+        } else if (POIXMLDocument.hasOOXMLHeader(inputstream)) {
+            book = new XSSFWorkbook(OPCPackage.open(inputstream));
+        }
+        Sheet sheet = book.getSheetAt(0);
+        int rowCounts = sheet.getLastRowNum();
+        List<CheckStandard> result = new ArrayList<>(rowCounts);
+        CheckStandard record = null;
+        String sbNo = "" ;
+        int type = 0;// 没有负责人的,1有
+//        if(sheet.getRow(4).getCell(10) != null && StringUtils.isNotBlank(sheet.getRow(4).getCell(10).getStringCellValue())){
+//            type = 0;
+//            sbNo = sheet.getRow(4).getCell(10).getStringCellValue().trim();
+//        }else{
+//            type = 1;
+//            sbNo = sheet.getRow(4).getCell(13).getStringCellValue().trim();
+//        }
+        StringBuffer error = new StringBuffer();
+        LOGGER.info("文件行数:" + rowCounts);
+        int sort = 1;
+        for (int i = 1; i <= rowCounts; i++) {
+            sbNo = sheet.getRow(i).getCell(1).getStringCellValue().trim();
+
+            record = new CheckStandard();
+            Row row = sheet.getRow(i);
+            if(isRowEmpty(row)){
+                break;
+            }
+            try {
+                if(type == 0){
+                    setNoPerson(sbNo, row, record);
+                }else{
+                    setPerson(sbNo, row, record);
+                }
+            } catch (Exception e) {
+                throw new BusinessException("导入异常,行号:"+ i + ", 错误信息" + e.getMessage() +  ", 错误原因" + e.getCause());
+            }
+            record.setSort(sort++);
+            if(StringUtils.isNotBlank(record.getName())){
+                result.add(record);
+            }
+        }
+        return result;
+    }
+
     /**
      * 导入点检任务,更新时间
      *
@@ -1380,7 +1442,8 @@ public class CustomExcelImportUtil {
         record.setName(record.getRequirement().substring(0,length));
         record.setId(IdGeneratorUtils.getObjectId());
         record.setType(CheckStandardTypeEnum.POLLING.getValue());
-        record.setNo(sbNo);// 需要根据no来判断设备的id
+//        record.setNo(sbNo);// 需要根据no来判断设备的id
+        record.setSbId(sbNo);
         record.setStandardHours("0");
         record.setEnable(1);
         setRemark(row, record);

+ 9 - 9
platform-dao/src/main/java/com/platform/dao/vo/export/check/ExportCheckStandardVO.java

@@ -46,48 +46,48 @@ public class ExportCheckStandardVO implements Serializable {
     /**
      * 编码
      */
-    @Excel(name = "标准编码", orderNum = "7")
+    @Excel(name = "标准编码", orderNum = "6")
     private String no;
     /**
      * 要求
      */
-    @Excel(name = "检查项目", orderNum = "8")
+    @Excel(name = "检查项目", orderNum = "7")
     private String requirement;
 
     /**
      * 备注
      */
-    @Excel(name = "执行标准", orderNum = "9")
+    @Excel(name = "执行标准", orderNum = "8")
     private String remark;
     /**
      * 计划周期
      */
-    @Excel(name = "计划周期", orderNum = "10")
+    @Excel(name = "计划周期", orderNum = "9")
     private Integer period;
     /**
      * 周期类型
      */
-    @Excel(name = "周期类型", orderNum = "11", dicCode = "CHECK_PLAN_PERIOD_TYPE")
+    @Excel(name = "周期类型", orderNum = "10", dicCode = "CHECK_PLAN_PERIOD_TYPE")
     private Integer periodType;
     /**
      * 上次实际执行日期
      */
-    @Excel(name = "上次实际执行日期", orderNum = "12")
+    @Excel(name = "上次实际执行日期", orderNum = "11")
     private LocalDate lastDate;
     /**
      * 下次预计执行日期
      */
-    @Excel(name = "下次预计执行日期", orderNum = "13")
+    @Excel(name = "下次预计执行日期", orderNum = "12")
     private LocalDate nextDate;
     /**
      * 执行人方式(1使用人、2维修人、3指定人)
      */
-    @Excel(name = "执行人方式", orderNum = "14", dicCode = "CHECK_USER_TYPE")
+    @Excel(name = "执行人方式", orderNum = "13", dicCode = "CHECK_USER_TYPE")
     private Integer checkUserType;
 
     /**
      * 标准工时
      */
-    @Excel(name = "标准工时", orderNum = "15")
+    @Excel(name = "标准工时", orderNum = "14")
     private String standardHours;
 }

+ 92 - 0
platform-dao/src/main/java/com/platform/dao/vo/export/check/ExportCheckStandardVO2.java

@@ -0,0 +1,92 @@
+package com.platform.dao.vo.export.check;
+
+import com.platform.office.annotation.Excel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * @Description 点检标准导出VO
+ * @Author liuyu
+ * @Date 2020-05-28 17:23:30
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+public class ExportCheckStandardVO2 implements Serializable {
+
+    /**
+     * id
+     */
+    @Excel(name = "id", orderNum = "1")
+    private String id;
+    /**
+     * 标准名称
+     */
+    @Excel(name = "设备编号", orderNum = "2")
+    private String sbNo;
+    /**
+     * 标准名称
+     */
+    @Excel(name = "设备名称", orderNum = "3")
+    private String sbName;
+    /**
+     * 设备等级
+     */
+    @Excel(name = "设备等级", orderNum = "4", dicCode = "SBINFO_LEVEL")
+    private String sbLevel;
+    /**
+     * 设备第一维修人
+     */
+    @Excel(name = "设备第一维修人", orderNum = "5")
+    private String repairUserName;
+    /**
+     * 编码
+     */
+    @Excel(name = "标准编码", orderNum = "6")
+    private String no;
+    /**
+     * 要求
+     */
+    @Excel(name = "检查项目", orderNum = "7")
+    private String requirement;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "执行标准", orderNum = "8")
+    private String remark;
+    /**
+     * 计划周期
+     */
+    @Excel(name = "计划周期", orderNum = "9")
+    private String period;
+    /**
+     * 周期类型
+     */
+    @Excel(name = "周期类型", orderNum = "10", dicCode = "CHECK_PLAN_PERIOD_TYPE")
+    private String periodType;
+    /**
+     * 上次实际执行日期
+     */
+    @Excel(name = "上次实际执行日期", orderNum = "11")
+    private String lastDate;
+    /**
+     * 下次预计执行日期
+     */
+    @Excel(name = "下次预计执行日期", orderNum = "12")
+    private String nextDate;
+    /**
+     * 执行人方式(1使用人、2维修人、3指定人)
+     */
+    @Excel(name = "执行人方式", orderNum = "13", dicCode = "CHECK_USER_TYPE")
+    private String checkUserType;
+
+    /**
+     * 标准工时
+     */
+    @Excel(name = "标准工时", orderNum = "14")
+    private String standardHours;
+}

+ 8 - 0
platform-dao/src/main/resources/mapper/check/CheckStandardMapper.xml

@@ -213,4 +213,12 @@ checkstandard.last_date,
             where id = #{item.id}
         </foreach>
     </update>
+
+    <update id="deleteBatch" parameterType="java.util.List">
+        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
+            delete from t_check_standard
+
+            where id = #{item.id}
+        </foreach>
+    </update>
 </mapper>

+ 8 - 0
platform-dao/src/main/resources/mapper/check/CheckStandardSpareMapper.xml

@@ -53,4 +53,12 @@
             where id = #{item.id}
         </foreach>
     </update>
+
+    <update id="deleteBatch" parameterType="java.util.List">
+        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
+            delete from t_check_standard_spare
+
+            where check_id = #{item.id}
+        </foreach>
+    </update>
 </mapper>

+ 5 - 11
platform-rest/src/main/java/com/platform/rest/controller/check/CheckStandardController.java

@@ -214,33 +214,27 @@ public class CheckStandardController {
   }
 
     /**
-     * 导入保养标准
+     * 导入保养标准(包括修改,新增,删除)
      *
-     * @param file bom excel文件
+     * @param
      *
      * @return R
      */
     @SysLog("新增导入设备的保养标准")
     @PostMapping("/import/execute")
-    public R importList( @RequestParam("files") MultipartFile file) throws Exception {
+    public R importList( @RequestParam("file") MultipartFile file) throws Exception {
         checkStandardService.importList(file);
         return new R();
     }
 
 
-    /**
-     * 导入保养标准(包括修改,新增,删除)
-     *
-     * @param files bom excel文件
-     *
-     * @return R
-     */
+
     @SysLog("导入设备的保养标准")
     @PostMapping(value="/import",headers = "content-type=multipart/form-data")
     public R importListByAdd( @RequestParam("files") MultipartFile[] files) throws Exception {
         String result ="";
         for(MultipartFile file: files){
-            result = result + checkStandardService.importList(file);
+            result = result + checkStandardService.importListByAdd(file);
         }
         return new R<>(result);
     }

+ 71 - 28
platform-service/src/main/java/com/platform/service/check/impl/CheckStandardServiceImpl.java

@@ -3,6 +3,9 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.platform.common.bean.AbstractPageResultBean;
 import com.github.pagehelper.PageHelper;
+import com.platform.common.cache.DictCache;
+import com.platform.common.enums.DictTypeEnum;
+import com.platform.common.enums.DictValueTypeEnum;
 import com.platform.common.exception.BusinessException;
 import com.platform.common.util.*;
 import com.platform.dao.bean.MyPage;
@@ -37,6 +40,7 @@ import com.platform.dao.util.CustomExcelImportUtil;
 import com.platform.dao.util.ExcelUtil;
 import com.platform.dao.util.MessageTemplateUtil;
 import com.platform.dao.vo.export.check.ExportCheckStandardVO;
+import com.platform.dao.vo.export.check.ExportCheckStandardVO2;
 import com.platform.dao.vo.query.check.CheckStandardSpareVO;
 import com.platform.dao.vo.query.check.CheckStandardVO;
 import com.platform.dao.vo.sb.SbInfoVO;
@@ -60,6 +64,7 @@ import java.io.IOException;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -82,6 +87,7 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
     private CheckStandardSpareService spareService;
     private CheckJobMapper checkJobMapper;
     private PartInfoService partInfoService;
+    private CheckStandardSpareMapper checkStandardSpareMapper;
     private final SysFileMapper sysFileMapper;
 
     private final SysUserMapper sysUserMapper;
@@ -593,14 +599,14 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
         }
     }
 
-    private void packageSbInfoAndCheckStandard(SbInfo sbInfo,ExportCheckStandardVO vo,String sbId,CheckStandard checkStandard ) {
-        if (sbId == null) {
-            sbInfo.setNo(vo.getSbNo());
-            sbInfo = sbInfoMapper.selectOne(sbInfo);
-            if (sbInfo==null){
-                throw new BusinessException("未找到设备编号为"+vo.getSbNo()+"的编号!");
-            }
-        }
+    private void packageSbInfoAndCheckStandard(SbInfo sbInfo,ExportCheckStandardVO2 vo,String sbId,CheckStandard checkStandard ) {
+//        if (sbId == null) {
+//            sbInfo.setNo(vo.getSbNo());
+//            sbInfo = sbInfoMapper.selectOne(sbInfo);
+//            if (sbInfo==null){
+//                throw new BusinessException("未找到设备编号为"+vo.getSbNo()+"的编号!");
+//            }
+//        }
 //                    if (vo.getSbLevel().trim().equals("A级")){
 //                        sbInfo.setLevel(1);
 //                    }else if (vo.getSbLevel().trim().equals("B级")){
@@ -608,15 +614,28 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
 //                    }else if (vo.getSbLevel().trim().equals("C级")){
 //                        sbInfo.setLevel(3);
 //                    }
-        sbInfo.setLevel(vo.getSbLevel());
-        SysUser user = new SysUser();
-        user.setRealName(vo.getRepairUserName());
-        user = sysUserMapper.selectOne(user);
-        if (user==null){
-            throw new BusinessException("未找到名为为"+vo.getRepairUserName()+"的维修负责人!");
+//        sbInfo.setLevel(vo.getSbLevel());
+//        SysUser user = new SysUser();
+//        user.setRealName(vo.getRepairUserName());
+//        user = sysUserMapper.selectOne(user);
+//        if (user==null){
+//            throw new BusinessException("未找到名为为"+vo.getRepairUserName()+"的维修负责人!");
+//        }
+//        sbInfo.setRepairUser(user.getUserId());
+        if ("使用人".equals(vo.getCheckUserType().trim())){
+            checkStandard.setCheckUserType(1);
+        }else if ("维修人".equals(vo.getCheckUserType())){
+            checkStandard.setCheckUserType(2);
+        }else if ("厂家".equals(vo.getCheckUserType())){
+            checkStandard.setCheckUserType(3);
         }
-        sbInfo.setRepairUser(user.getUserId());
-
+        if (StringUtils.isNotBlank(vo.getLastDate())) {
+            checkStandard.setLastDate(LocalDate.parse(vo.getLastDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        }
+        if (StringUtils.isNotBlank(vo.getNextDate())) {
+            checkStandard.setNextDate(LocalDate.parse(vo.getNextDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        }
+        checkStandard.setPeriodType(DictCache.getValueByLabel("PERIOD_TYPE",vo.getPeriodType()));
         checkStandard.setCreatedTime(LocalDateTime.now());
         checkStandard.setCheckUserId(SecurityUtils.getUserInfo().getUserId());
         checkStandard.setUpdateTime(LocalDateTime.now());
@@ -625,8 +644,9 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
         checkStandard.setNo(vo.getNo());
         checkStandard.setRequirement(vo.getRequirement());
         checkStandard.setRemark(vo.getRemark());
-        checkStandard.setPeriod(vo.getPeriod());
-        checkStandard.setPeriodType(vo.getPeriodType());
+        checkStandard.setPeriod(Integer.parseInt(vo.getPeriod()));
+
+//        checkStandard.setPeriodType(vo.getPeriodType());
         checkStandard.setStandardHours(vo.getStandardHours());
 
         if (checkStandard.getCheckUserType() == 1) {
@@ -648,33 +668,56 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
             sb.append(standard.getId()).append(",");
         }
         String idStr = sb.toString();
-        List<ExportCheckStandardVO> list = ExcelUtil.importExcel(file.getInputStream(), ExportCheckStandardVO.class, 0);
+//        List<CheckStandard> list = CustomExcelImportUtil.importCheckStandardList(file.getInputStream());
+        List<ExportCheckStandardVO2> list = ExcelUtil.importExcel(file.getInputStream(), ExportCheckStandardVO2.class, 1);
         String sbId=null;
         SbInfo sbInfo = new SbInfo();
-        CheckStandard checkStandard = new CheckStandard();
-        for (ExportCheckStandardVO vo:list){
+        CheckStandard checkStandard ;
+        List<CheckStandard> updates = new ArrayList<>();
+        List<CheckStandard> adds = new ArrayList<>();
+        List<CheckStandard> deletes = new ArrayList<>();
+        for (ExportCheckStandardVO2 vo:list){
+            checkStandard = new CheckStandard();
+            checkStandard.setId(vo.getId());
             if (StringUtils.isNotBlank(vo.getId()) && idStr.contains(vo.getId())){
                 if (StringUtils.isNotBlank(vo.getNo())){
+
                     //修改
+
                     packageSbInfoAndCheckStandard(sbInfo,vo,sbId,checkStandard);
-                    sbInfoMapper.updateByPrimaryKey(sbInfo);
-                    mapper.updateByPrimaryKey(checkStandard);
+                    updates.add(checkStandard);
+//                    sbInfoMapper.updateByPrimaryKey(sbInfo);
+//                    mapper.updateByPrimaryKey(checkStandard);
                     }
                 else{
                     //no为空,删除
-                    CheckStandard standard = new CheckStandard();
-                    standard.setId(vo.getId());
-                    mapper.delete(standard);
+                    checkStandard.setId(vo.getId());
+                    deletes.add(checkStandard);
+//                    mapper.delete(standard);
                 }
 
-                }else if (StringUtils.isNotBlank(vo.getId()) && !idStr.contains(vo.getId())){
+                }else if (StringUtils.isNotBlank(vo.getSbNo()) && StringUtils.isBlank(vo.getId())){
                 //新增
+
                     packageSbInfoAndCheckStandard(sbInfo,vo,sbId,checkStandard);
-                    mapper.insert(checkStandard);
+                adds.add(checkStandard);
             }
 
 
             }
+        if (adds.size()>0){
+            mapper.insertListforComplex(adds);
+        }
+
+        if (updates.size()>0){
+            mapper.updateBatch(updates);
+        }
+        if (deletes.size()>0){
+            //先删除外键表数据
+            checkStandardSpareMapper.deleteBatch(deletes);
+            mapper.deleteBatch(deletes);
+        }
+
             return null;
         }