Prechádzať zdrojové kódy

保养任务生成默认计划分类-常规计划 之前切换版本代码没切换问题

huangpeng 9 mesiacov pred
rodič
commit
307f5026b5

+ 7 - 0
bs-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java

@@ -956,4 +956,11 @@ public class SaveConstans {
         //计划分类- 常规计划
         public static final String PLANCLASSIFICATION_CONVENTIONALPLAN = "01";
     }
+    /**
+     * 设备子系统——保养计划的保养部位
+     */
+    public static class EquMaintenancePart {
+        public static final Integer MAINTENANCE_PART_MONTH_Y = 1; //月份选择是,值为1
+
+    }
 }

+ 2 - 1
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/MaintenanceService.java

@@ -7,6 +7,7 @@ import com.rongwei.rwcommon.base.R;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.List;
 
 /**
  * @author shangmi
@@ -24,7 +25,7 @@ public interface MaintenanceService  {
      * @date 2023/11/27 16:25
      * @author shangmi
      */
-    R saveTask(TaskCreatorDTO taskCreator) ;
+    R saveTask(List<TaskCreatorDTO> taskCreators) ;
 
     /**
      * 批量生成保养计划

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

@@ -21,6 +21,8 @@ import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommonentity.commonservers.vo.SysSerialVo;
 import com.rongwei.safecommon.utils.CXCommonUtils;
+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;
@@ -32,6 +34,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import static com.rongwei.safecommon.utils.SaveConstans.EquMaintenancePart.MAINTENANCE_PART_MONTH_Y;
 import static com.rongwei.safecommon.utils.SaveConstans.EquMaintenanceTask.PLANCLASSIFICATION_CONVENTIONALPLAN;
 
 /**
@@ -67,6 +70,9 @@ public class MaintenanceServiceImpl implements MaintenanceService {
     @Autowired
     private RwAdminFeign rwAdminFeign;
 
+    private final static Logger log = LoggerFactory.getLogger(MaintenanceServiceImpl.class);
+
+
     /**
      * 发布任务
      *
@@ -78,42 +84,61 @@ public class MaintenanceServiceImpl implements MaintenanceService {
 
     @Override
     @Transactional
-    public R saveTask(TaskCreatorDTO taskCreator) {
-        // 查询主表信息
-        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.ok();
-        } else {
-            return R.ok("数据添加不完整,请核对数据!");
+    public R saveTask(List<TaskCreatorDTO> taskCreators) {
+        String equipmentname =null;
+        for(TaskCreatorDTO taskCreator:taskCreators){
+
+            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()) {
+                    continue;
+                    //   return R.error(maintenanceSchedule.getEquipmentname() + "在" + taskCreator.getYear() + "年" + month + "月的所有部位已发布任务或没有可发布的任务!");
+                }
+                // 任务表没有数据则全部添加
+                if (maintenanceSiteList.size() != 0) {
+                    // 去重
+                    maintenancePartList = removeDuplicates(maintenancePartList, maintenanceSiteList,month);
+                };
+                if (maintenancePartList.isEmpty()){
+                    continue;
+
+                }
+
+                // 通过主表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("生成成功");
     }
-
     /**
      * 批量生成保养计划
      *
@@ -511,23 +536,69 @@ public class MaintenanceServiceImpl implements MaintenanceService {
      *
      * @param maintenancePartList 部位表
      * @param maintenanceTaskList 任务表
+     * @param month
      * @return {@link List<EquMaintenancePartDo>}
      * @date 2023/11/27 18:14
      * @author shangmi
      */
     public List<EquMaintenancePartDo> removeDuplicates(
             List<EquMaintenancePartDo> maintenancePartList,
-            List<EquMaintenanceTaskDo> maintenanceTaskList) {
+            List<EquMaintenanceTaskDo> maintenanceTaskList, Integer month) {
         // 获取任务表中存在的保养部位
         List<String> maintenanceSite = maintenanceTaskList.stream()
                 .map(EquMaintenanceTaskDo::getMaintenancesite)
                 .collect(Collectors.toList());
         // 对部位表进行去重
         return maintenancePartList.stream().filter(info ->
-                !maintenanceSite.contains(info.getMaintenancesite())
+                !maintenanceSite.contains(info.getMaintenancesite() ) &&  MonthPartData(info,month)== MAINTENANCE_PART_MONTH_Y
         ).collect(Collectors.toList());
     }
 
+    public int MonthPartData(EquMaintenancePartDo info, Integer month){
+        int result=0;
+        switch (month){
+            case 1:
+                result = info.getJan();
+                break;
+            case 2:
+                result = info.getFeb();
+                break;
+            case 3:
+                result = info.getMar();
+                break;
+            case 4:
+                result = info.getApr();
+                break;
+            case 5:
+                result = info.getMay();
+                break;
+            case 6:
+                result = info.getJun();
+                break;
+            case 7:
+                result = info.getJul();
+                break;
+            case 8:
+                result = info.getAug();
+                break;
+            case 9:
+                result = info.getSep();
+                break;
+            case 10:
+                result = info.getOct();
+                break;
+            case 11:
+                result = info.getNov();
+                break;
+            case 12:
+                result = info.getDecember();
+                break;
+            default:
+        }
+
+        return result;
+
+    }
     /**
      * 数据转换(设备——计划)
      *

+ 5 - 3
cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/MaintenanceController.java

@@ -13,6 +13,8 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.List;
+
 /**
  * @author shangmi
  * @title MaintenanceController
@@ -37,10 +39,10 @@ public class MaintenanceController {
      * @author shangmi
      */
     @PostMapping("saveTask")
-    public R saveTask(@RequestBody TaskCreatorDTO taskCreator){
+    public R saveTask(@RequestBody List<TaskCreatorDTO> taskCreators){
         try {
-            log.info("进入接口:/maintenance/saveTask,入参:{}",taskCreator);
-            return maintenanceService.saveTask(taskCreator);
+            log.info("进入接口:/maintenance/saveTask,入参:{}",taskCreators);
+            return maintenanceService.saveTask(taskCreators);
         }catch (Exception e){
             ExceptionUtils.printExceptionDetail(e,"生成任务失败,请检查传入参数");
             return R.error(e.getMessage());