|
@@ -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;
|
|
|
+
|
|
|
+ }
|
|
|
/**
|
|
|
* 数据转换(设备——计划)
|
|
|
*
|