Browse Source

保养/维护计划 批量生成,单条数据生成失败不影响其他数据生成

huangpeng 1 year ago
parent
commit
89e14e58ef

+ 45 - 31
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/MaintenanceServiceImpl.java

@@ -19,6 +19,8 @@ import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommonentity.commonservers.vo.SysSerialVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -63,6 +65,7 @@ public class MaintenanceServiceImpl implements MaintenanceService {
     @Autowired
     private RwAdminFeign rwAdminFeign;
 
+    private final static Logger log = LoggerFactory.getLogger(MaintenanceServiceImpl.class);
     /**
      * 发布任务
      *
@@ -76,39 +79,50 @@ public class MaintenanceServiceImpl implements MaintenanceService {
     @Transactional
     public R saveTask(List<TaskCreatorDTO> taskCreators) {
 
+        String equipmentname =null;
        for(TaskCreatorDTO taskCreator:taskCreators){
 
-        // 查询主表信息
-        EquMaintenanceScheduleDo maintenanceSchedule = maintenanceScheduleService.getMaintenanceSiteByList(taskCreator);
-        // 查询子表信息
-        Integer month = Integer.parseInt(taskCreator.getMonth());
-        List<EquMaintenancePartDo> maintenancePartList = maintenancePartService.getMasterIdAndMonthByList(maintenanceSchedule.getId(), month, null);
-        // 查询是否有生成过任务
-        List<EquMaintenanceTaskDo> maintenanceSiteList = maintenanceTaskService.getMaintenanceSite(taskCreator);
-        // 判断所有部位是否都有生成过任务
-        if (maintenanceSiteList.size() == maintenancePartList.size()) {
-            return R.error(maintenanceSchedule.getEquipmentname() + "在" + taskCreator.getYear() + "年" + month + "月的所有部位已发布任务或没有可发布的任务!");
-        }
-        // 任务表没有数据则全部添加
-        if (maintenanceSiteList.size() != 0) {
-            // 去重
-            maintenancePartList = removeDuplicates(maintenancePartList, maintenanceSiteList);
-        }
-        // 通过主表ID查询备品备件信息
-        List<EquPartsSetoutStandardDo> partsSetoutStandardList = partsSetoutStandardService.getMasterIdByList(maintenancePartList.stream().map(EquMaintenancePartDo::getMaintenancestandid).collect(Collectors.toList()));
-        // 转移数据
-        List<EquMaintenanceTaskDo> equMaintenanceTaskDos = dataTransfer(maintenancePartList, maintenanceSchedule, month);
-        List<EquPartsSetoutTaskDo> partsSetoutTaskDoList = sparePartsConversion(partsSetoutStandardList, equMaintenanceTaskDos);
-        // 插入
-        int number = maintenanceTaskService.insertBatch(equMaintenanceTaskDos);
-        if (partsSetoutTaskDoList.size() != 0) {
-            partsSetoutTaskService.batchSave(partsSetoutTaskDoList);
-        }
-        maintenanceScheduleService.updatePlannedstatusByIds(Collections.singletonList(maintenanceSchedule.getId()), PlannedStatusEnum.PUBLISHED_TASK);
-        // 判断是否全部插入成功
-        if (number != equMaintenanceTaskDos.size()) {
-            return R.error("数据添加不完整,请核对数据!");
-        }
+           try{
+
+               // 查询主表信息
+               EquMaintenanceScheduleDo maintenanceSchedule = maintenanceScheduleService.getMaintenanceSiteByList(taskCreator);
+
+               equipmentname= maintenanceSchedule.getEquipmentname();
+
+               // 查询子表信息
+               Integer month = Integer.parseInt(taskCreator.getMonth());
+               List<EquMaintenancePartDo> maintenancePartList = maintenancePartService.getMasterIdAndMonthByList(maintenanceSchedule.getId(), month, null);
+               // 查询是否有生成过任务
+               List<EquMaintenanceTaskDo> maintenanceSiteList = maintenanceTaskService.getMaintenanceSite(taskCreator);
+               // 判断所有部位是否都有生成过任务
+               if (maintenanceSiteList.size() == maintenancePartList.size()) {
+                   return R.error(maintenanceSchedule.getEquipmentname() + "在" + taskCreator.getYear() + "年" + month + "月的所有部位已发布任务或没有可发布的任务!");
+               }
+               // 任务表没有数据则全部添加
+               if (maintenanceSiteList.size() != 0) {
+                   // 去重
+                   maintenancePartList = removeDuplicates(maintenancePartList, maintenanceSiteList);
+               }
+               // 通过主表ID查询备品备件信息
+               List<EquPartsSetoutStandardDo> partsSetoutStandardList = partsSetoutStandardService.getMasterIdByList(maintenancePartList.stream().map(EquMaintenancePartDo::getMaintenancestandid).collect(Collectors.toList()));
+               // 转移数据
+               List<EquMaintenanceTaskDo> equMaintenanceTaskDos = dataTransfer(maintenancePartList, maintenanceSchedule, month);
+               List<EquPartsSetoutTaskDo> partsSetoutTaskDoList = sparePartsConversion(partsSetoutStandardList, equMaintenanceTaskDos);
+               // 插入
+               int number = maintenanceTaskService.insertBatch(equMaintenanceTaskDos);
+               if (partsSetoutTaskDoList.size() != 0) {
+                   partsSetoutTaskService.batchSave(partsSetoutTaskDoList);
+               }
+               maintenanceScheduleService.updatePlannedstatusByIds(Collections.singletonList(maintenanceSchedule.getId()), PlannedStatusEnum.PUBLISHED_TASK);
+               // 判断是否全部插入成功
+               if (number != equMaintenanceTaskDos.size()) {
+                   return R.error("数据添加不完整,请核对数据!");
+               }
+
+           }catch (Exception e){
+               log.error("设备 {} 生成任务失败 {} ",equipmentname,e.getMessage());
+               return R.error( String.format("设备 %s 生成任务失败", equipmentname));
+           }
 
        }
         return R.ok();