Parcourir la source

feat(check): 添加设备恢复使用时重新生成保养任务功能

- 为CheckJobService添加generateJobsForSb方法,支持为指定设备重新生成保养任务
- 在设备状态变更为使用中时,自动调用重新生成保养任务功能
- 优化设备停用清理保养任务逻辑,排除存在审核中/进行中报修单的设备
- 新增RepairApplicationFormMapper的selectSbIdsWithStatus查询方法
- 添加计算保养任务结束日期的辅助方法
- 修复维修完成后更新设备状态的日志记录方式
dazhaxie il y a 6 jours
Parent
commit
d9cb30b35b

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

@@ -1704,8 +1704,7 @@ public class CustomExcelImportUtil {
             }
             String index = getCellValue(row.getCell(1));
             try {
-                // i,j i:行 j:列
-                record.setId(getCellValue(row.getCell(0)).trim());
+                // i,j i:行 j:列(与新增导入importSbInfoList保持一致,不读取ID列,通过设备编号no匹配记录)
                 record.setNo(getCellValue(row.getCell(1)).trim());
                 record.setZbh(getCellValue(row.getCell(2)));
                 record.setName(getCellValue(row.getCell(3)).trim().replace("'", ""));

+ 109 - 105
platform-service/src/main/java/com/platform/service/sb/impl/SbInfoServiceImpl.java

@@ -1797,132 +1797,136 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
 
         int addNum = 0;
         List<String> modelError = new ArrayList<String>();
-        List<SbInfo> updateList = new ArrayList<SbInfo>();
         try {
             List<SbInfoVO> items = CustomExcelImportUtil.importListByUpdateALl(file.getInputStream());
-            // List<ExportSbInfoVO> items =
-            // ExcelImportUtil.importExcel(file.getInputStream(), ExportSbInfoVO.class,new
-            // ImportParams());
             if (!CollectionUtils.isEmpty(items)) {
-                if (!CollectionUtils.isEmpty(items)) {
-                    List<SbInfoVO> addItems = new ArrayList<SbInfoVO>();
-                    List<SysUser> users = sysUserMapper.selectAll();
-                    List<FirmProducer> producerList = new ArrayList<>(firmProducerMapper.selectAll());
-                    // 用于缓存本次导入新增的生产商,避免同名重复新增
-                    Map<String, FirmProducer> newProducerMap = new HashMap<>();
-                    List<SbPosition> positionList = sbPositionMapper.selectAll();
-                    LocalDateTime now = LocalDateTime.now();
-                    for (SbInfoVO item : items) {
-
-                        // 处理所属车间:将车间名称转换为车间ID(匹配不到则留空,不报错)
-                        if (StringUtils.isNotBlank(item.getPositionName())) {
-                            boolean findPosition = false;
-                            for (SbPosition position : positionList) {
-                                if (position.getName().equalsIgnoreCase(item.getPositionName().trim())) {
-                                    item.setPositionId(position.getId());
-                                    findPosition = true;
-                                    break;
-                                }
-                            }
-                            if (!findPosition) {
-                                log.warn("更新导入第{}行,系统找不到车间名称【{}】,车间ID留空", item.getNo(), item.getPositionName());
-                                item.setPositionId(null);
+                List<SysUser> users = sysUserMapper.selectAll();
+                List<FirmProducer> producerList = new ArrayList<>(firmProducerMapper.selectAll());
+                // 用于缓存本次导入新增的生产商,避免同名重复新增
+                Map<String, FirmProducer> newProducerMap = new HashMap<>();
+                List<SbPosition> positionList = sbPositionMapper.selectAll();
+                LocalDateTime now = LocalDateTime.now();
+                for (SbInfoVO item : items) {
+                    // 通过设备编号no查找已有记录,获取ID用于更新(与新增导入保持一致,不依赖Excel中的ID列)
+                    SbInfoVO existingInfo = mapper.getByNo(item.getNo());
+                    if (existingInfo == null) {
+                        log.warn("更新导入第{}行,设备编号【{}】在系统中不存在,跳过", item.getNo(), item.getNo());
+                        continue;
+                    }
+                    item.setId(existingInfo.getId());
+
+                    // 处理所属车间:将车间名称转换为车间ID(匹配不到则留空,不报错)
+                    if (StringUtils.isNotBlank(item.getPositionName())) {
+                        log.info("更新导入第{}行,读取到车间名称:{}", item.getNo(), item.getPositionName());
+                        boolean findPosition = false;
+                        for (SbPosition position : positionList) {
+                            if (position.getName().equalsIgnoreCase(item.getPositionName().trim())) {
+                                item.setPositionId(position.getId());
+                                log.info("更新导入第{}行,匹配车间成功,车间ID:{}", item.getNo(), position.getId());
+                                findPosition = true;
+                                break;
                             }
                         }
-                        // 是否固定资产:默认为否
-                        if (item.getIsFinancing() == null) {
-                            item.setIsFinancing(SbInfoFinancingEnum.NOT.getValue());
+                        if (!findPosition) {
+                            log.warn("更新导入第{}行,系统找不到车间名称【{}】,车间ID留空", item.getNo(), item.getPositionName());
+                            item.setPositionId(null);
                         }
+                    } else {
+                        log.warn("更新导入第{}行,车间名称为空,跳过车间匹配", item.getNo());
+                    }
+                    // 是否固定资产:默认为否
+                    if (item.getIsFinancing() == null) {
+                        item.setIsFinancing(SbInfoFinancingEnum.NOT.getValue());
+                    }
 
-                        boolean findSaveUser = false;
-                        if (StringUtils.isNotBlank(item.getSaveUserName())
-                                && !"null".equalsIgnoreCase(item.getSaveUserName())) {
-                            for (SysUser user : users) {
-                                if (user.getRealName().equalsIgnoreCase(item.getSaveUserName())) {
-                                    item.setSaveUser(user.getUserId());
-                                    item.setUseUser(user.getUserId());
-                                    findSaveUser = true;
-                                    break;
-                                }
-                            }
-                            if (!findSaveUser) {
-                                throw new BusinessException("找不到使用人员,请先添加, 名称" + item.getSaveUserName());
+                    boolean findSaveUser = false;
+                    if (StringUtils.isNotBlank(item.getSaveUserName())
+                            && !"null".equalsIgnoreCase(item.getSaveUserName())) {
+                        for (SysUser user : users) {
+                            if (user.getRealName().equalsIgnoreCase(item.getSaveUserName())) {
+                                item.setSaveUser(user.getUserId());
+                                item.setUseUser(user.getUserId());
+                                findSaveUser = true;
+                                break;
                             }
                         }
-                        if (StringUtils.isNotBlank(item.getRepairUserName())
-                                && !"null".equalsIgnoreCase(item.getRepairUserName())) {
-                            boolean findRepairUser = false;
-                            for (SysUser user : users) {
-                                if (user.getRealName().equalsIgnoreCase(item.getRepairUserName())) {
-                                    item.setRepairUser(user.getUserId());
-                                    findRepairUser = true;
-                                    break;
-                                }
-                            }
-                            if (!findRepairUser) {
-                                throw new BusinessException("找不到维修人员,请先添加, 名称" + item.getRepairUserName());
-                            }
+                        if (!findSaveUser) {
+                            throw new BusinessException("找不到使用人员,请先添加, 名称" + item.getSaveUserName());
                         }
-                        if (StringUtils.isNotBlank(item.getRepairUserNameSecond())
-                                && !"null".equalsIgnoreCase(item.getRepairUserNameSecond())) {
-                            boolean findRepairUser = false;
-                            for (SysUser user : users) {
-                                if (user.getRealName().equalsIgnoreCase(item.getRepairUserNameSecond())) {
-                                    item.setRepairUserSecond(user.getUserId());
-                                    findRepairUser = true;
-                                    break;
-                                }
-                            }
-                            if (!findRepairUser) {
-                                throw new BusinessException("找不到第二维修人员,请先添加, 名称" + item.getRepairUserNameSecond());
+                    }
+                    if (StringUtils.isNotBlank(item.getRepairUserName())
+                            && !"null".equalsIgnoreCase(item.getRepairUserName())) {
+                        boolean findRepairUser = false;
+                        for (SysUser user : users) {
+                            if (user.getRealName().equalsIgnoreCase(item.getRepairUserName())) {
+                                item.setRepairUser(user.getUserId());
+                                findRepairUser = true;
+                                break;
                             }
                         }
-
-                        List<SbType> typeList = sbTypeMapper.selectAll();
-                        boolean find = false;
-                        for (SbType type : typeList) {
-                            if (type.getName().equalsIgnoreCase(item.getTypeName())) {
-                                item.setTypeId(type.getId());
-                                find = true;
+                        if (!findRepairUser) {
+                            throw new BusinessException("找不到维修人员,请先添加, 名称" + item.getRepairUserName());
+                        }
+                    }
+                    if (StringUtils.isNotBlank(item.getRepairUserNameSecond())
+                            && !"null".equalsIgnoreCase(item.getRepairUserNameSecond())) {
+                        boolean findRepairUser = false;
+                        for (SysUser user : users) {
+                            if (user.getRealName().equalsIgnoreCase(item.getRepairUserNameSecond())) {
+                                item.setRepairUserSecond(user.getUserId());
+                                findRepairUser = true;
                                 break;
                             }
                         }
-                        if (!find) {
-                            throw new BusinessException("找不到设备类型,请先添加:" + item.getTypeName());
+                        if (!findRepairUser) {
+                            throw new BusinessException("找不到第二维修人员,请先添加, 名称" + item.getRepairUserNameSecond());
                         }
+                    }
 
-                        boolean findProdcuer = false;
-                        for (FirmProducer producer : producerList) {
-                            if (producer.getName().equalsIgnoreCase(item.getProducerId())) {
-                                item.setProducerId(producer.getId());
-                                findProdcuer = true;
-                                break;
-                            }
+                    List<SbType> typeList = sbTypeMapper.selectAll();
+                    boolean find = false;
+                    for (SbType type : typeList) {
+                        if (type.getName().equalsIgnoreCase(item.getTypeName())) {
+                            item.setTypeId(type.getId());
+                            find = true;
+                            break;
+                        }
+                    }
+                    if (!find) {
+                        throw new BusinessException("找不到设备类型,请先添加:" + item.getTypeName());
+                    }
+
+                    boolean findProdcuer = false;
+                    for (FirmProducer producer : producerList) {
+                        if (producer.getName().equalsIgnoreCase(item.getProducerId())) {
+                            item.setProducerId(producer.getId());
+                            findProdcuer = true;
+                            break;
                         }
-                        if (!findProdcuer) {
-                            String producerName = item.getProducerId();
-                            if (StringUtils.isBlank(producerName) || "null".equalsIgnoreCase(producerName)) {
-                                item.setProducerId(null);
-                            } else {
-                                // 库里没有则自动新增生产商
-                                FirmProducer newProducer = newProducerMap.get(producerName);
-                                if (newProducer == null) {
-                                    newProducer = new FirmProducer();
-                                    newProducer.setId(IdGeneratorUtils.getObjectId());
-                                    newProducer.setName(producerName);
-                                    newProducer.setLevel(1);
-                                    newProducer.setType(1);
-                                    newProducer.setDelFlag(DelFlagEnum.NORMAL.getValue());
-                                    newProducer.setCreatedTime(now);
-                                    firmProducerMapper.insertSelective(newProducer);
-                                    producerList.add(newProducer);
-                                    newProducerMap.put(producerName, newProducer);
-                                }
-                                item.setProducerId(newProducer.getId());
+                    }
+                    if (!findProdcuer) {
+                        String producerName = item.getProducerId();
+                        if (StringUtils.isBlank(producerName) || "null".equalsIgnoreCase(producerName)) {
+                            item.setProducerId(null);
+                        } else {
+                            // 库里没有则自动新增生产商
+                            FirmProducer newProducer = newProducerMap.get(producerName);
+                            if (newProducer == null) {
+                                newProducer = new FirmProducer();
+                                newProducer.setId(IdGeneratorUtils.getObjectId());
+                                newProducer.setName(producerName);
+                                newProducer.setLevel(1);
+                                newProducer.setType(1);
+                                newProducer.setDelFlag(DelFlagEnum.NORMAL.getValue());
+                                newProducer.setCreatedTime(now);
+                                firmProducerMapper.insertSelective(newProducer);
+                                producerList.add(newProducer);
+                                newProducerMap.put(producerName, newProducer);
                             }
+                            item.setProducerId(newProducer.getId());
                         }
-                        mapper.updateByPrimaryKeySelective(BeanConverterUtil.copyObjectProperties(item, SbInfo.class));
                     }
+                    mapper.updateByPrimaryKeySelective(BeanConverterUtil.copyObjectProperties(item, SbInfo.class));
                 }
             }
             return "总计更新:" + (items.size());