|
@@ -5,6 +5,7 @@ import cn.hutool.json.JSONUtil;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.excel.ExcelWriter;
|
|
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.rongwei.bscommon.sys.dao.CommonDao;
|
|
|
import com.rongwei.bscommon.sys.excel.EquLubricationTaskManagementTemplate;
|
|
|
import com.rongwei.bscommon.sys.excel.EquMaintenanceTaskTemplate;
|
|
@@ -18,7 +19,9 @@ import com.rongwei.bsentity.enums.LubricationFrequencyEnum;
|
|
|
import com.rongwei.bsentity.enums.MaintenanceTypeEnum;
|
|
|
import com.rongwei.bsentity.enums.PlantEnum;
|
|
|
import com.rongwei.bsentity.enums.TaskStatusEnum;
|
|
|
+import com.rongwei.commonservice.service.RedisService;
|
|
|
import com.rongwei.rwadmincommon.system.domain.SysDictDo;
|
|
|
+import com.rongwei.rwadmincommon.system.domain.SysOrganizationDo;
|
|
|
import com.rongwei.rwadmincommon.system.service.SysDictService;
|
|
|
import com.rongwei.rwcommon.base.R;
|
|
|
import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
@@ -37,6 +40,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
@@ -84,7 +88,8 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
|
|
|
@Autowired
|
|
|
private SysFileItemService sysFileItemService;
|
|
|
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private RedisService redisService;
|
|
|
|
|
|
/**
|
|
|
* 根据任务ID发送 提醒
|
|
@@ -534,6 +539,7 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 润滑任务导出数据迁移
|
|
|
*
|
|
@@ -668,6 +674,141 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
|
|
|
return equMaintenanceTaskTemplate;
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 每天 早上 6点,系统根据 保养任务中的 年月、 使用车间 、 保养检修分类 ,按照如下信息 ,
|
|
|
+ * 将 本年本月的 待指派 的任务 派发到 对应人
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R maintenanceDistribution() {
|
|
|
+
|
|
|
+ List<EquMaintenanceTaskDo> updateList =new ArrayList<>();
|
|
|
+ //1. 获取当前年月待指派的保养记录
|
|
|
+
|
|
|
+ List<EquMaintenanceTaskDo> list = maintenanceTaskService.list(new LambdaQueryWrapper<EquMaintenanceTaskDo>()
|
|
|
+ .eq(EquMaintenanceTaskDo::getPlanyear, LocalDate.now().getYear())
|
|
|
+ .eq(EquMaintenanceTaskDo::getMonth, LocalDate.now().getMonth().getValue())
|
|
|
+ .eq(EquMaintenanceTaskDo::getTaskstate,TaskStatusEnum.EXPORT_DISTRIBUTION.code));
|
|
|
+
|
|
|
+ if (list.isEmpty()){
|
|
|
+ log.info("本年月待指派保养任务数量为空");
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ //2.读取 保养配置标配信息
|
|
|
+ List<EquMaintenanceTaskAssignConfigurationDo> assignConfiguration = maintenanceTaskService.getAssignConfiguration();
|
|
|
+
|
|
|
+ if (assignConfiguration.isEmpty()){
|
|
|
+ log.info("保养配置标配信息为空");
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Map<String, List<EquMaintenanceTaskAssignConfigurationDo>>> collect = assignConfiguration.stream()
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ EquMaintenanceTaskAssignConfigurationDo::getWorkshopid,
|
|
|
+ Collectors.groupingBy(EquMaintenanceTaskAssignConfigurationDo::getMaintenancetype)
|
|
|
+ ));
|
|
|
+
|
|
|
+ //3 读取组织组织机构 FULLPID 判断 保养记录所在部门 是否在 配置表的部门之下
|
|
|
+ List<SysOrganizationDo> orgdos = (List<SysOrganizationDo>) redisService.getRedisCatchObj("allOrgs");
|
|
|
+ Map<String, String> orgIdToFullPidMap = orgdos.stream()
|
|
|
+ .filter(org -> org.getFullpid() != null)
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ SysOrganizationDo::getId,
|
|
|
+ SysOrganizationDo::getFullpid
|
|
|
+ ));
|
|
|
+
|
|
|
+ //4.循环处理 保养任务派发
|
|
|
+ for (EquMaintenanceTaskDo equMaintenanceTaskDo:list){
|
|
|
+ try {
|
|
|
+
|
|
|
+ distribution(equMaintenanceTaskDo,collect,orgIdToFullPidMap,updateList);
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("保养任务ID {} 指派失败",equMaintenanceTaskDo.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新保养计划
|
|
|
+ if (!updateList.isEmpty()){
|
|
|
+ maintenanceTaskService.updateBatchById(updateList,100);
|
|
|
+ }else {
|
|
|
+ log.info("本年月的保养任务所在车间均不匹配配置表中的车间,无需派发");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 单独派发任务
|
|
|
+ *
|
|
|
+ * @param equMaintenanceTaskDo
|
|
|
+ * @param collect
|
|
|
+ * @param orgIdToFullPidMap
|
|
|
+ * @param updateList
|
|
|
+ */
|
|
|
+ private void distribution(EquMaintenanceTaskDo equMaintenanceTaskDo, Map<String, Map<String, List<EquMaintenanceTaskAssignConfigurationDo>>> collect, Map<String, String> orgIdToFullPidMap, List<EquMaintenanceTaskDo> updateList) {
|
|
|
+ //1. 先取值 组织机构
|
|
|
+ Set<String> orgs = collect.keySet();
|
|
|
+ // workshopid 等于 铸轧 或 冷轧 车间
|
|
|
+ if (orgs.contains(equMaintenanceTaskDo.getWorkshopid())){
|
|
|
+ maintainCreateSingleTaskNotify(equMaintenanceTaskDo,collect.get(equMaintenanceTaskDo.getWorkshopid()).get(equMaintenanceTaskDo.getMaintenancetype()).get(0),updateList);
|
|
|
+ }
|
|
|
+
|
|
|
+ // workshopid 父节点是在 铸轧 或 冷轧 车间 中
|
|
|
+ for (String orgid :orgs){
|
|
|
+ if (orgIdToFullPidMap.get(equMaintenanceTaskDo.getWorkshopid()).indexOf(orgid) >-1 ){
|
|
|
+ maintainCreateSingleTaskNotify(equMaintenanceTaskDo,collect.get(orgid).get(equMaintenanceTaskDo.getMaintenancetype()).get(0),updateList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 单独指派
|
|
|
+ *
|
|
|
+ * @param maintenanceTaskDo
|
|
|
+ * @param equMaintenanceTaskAssignConfigurationDo
|
|
|
+ * @param updateList
|
|
|
+ */
|
|
|
+ public void maintainCreateSingleTaskNotify(EquMaintenanceTaskDo maintenanceTaskDo, EquMaintenanceTaskAssignConfigurationDo equMaintenanceTaskAssignConfigurationDo, List<EquMaintenanceTaskDo> updateList){
|
|
|
+
|
|
|
+ // 发送人
|
|
|
+ List<String> userId = new ArrayList<>();
|
|
|
+
|
|
|
+ userId.addAll(Arrays.asList(equMaintenanceTaskAssignConfigurationDo.getAssignedpersonid().split(",")));
|
|
|
+
|
|
|
+ maintenanceTaskDo.setPrincipalid(equMaintenanceTaskAssignConfigurationDo.getAssignedpersonid());
|
|
|
+ maintenanceTaskDo.setPrincipal(equMaintenanceTaskAssignConfigurationDo.getAssignedpersonname());
|
|
|
+ // 发送标题
|
|
|
+ String title = MAINTAIN_SYSTEM_TITLE;
|
|
|
+ // 发送内容
|
|
|
+ String context = String.format(MAINTAIN_SYSTEM_CONTENT, maintenanceTaskDo.getPlanyear() + "-" + maintenanceTaskDo.getMonth(),
|
|
|
+ maintenanceTaskDo.getWorkshop(), maintenanceTaskDo.getEquipmentname(), maintenanceTaskDo.getEquipmentnumber(),
|
|
|
+ maintenanceTaskDo.getMaintenancesite(), maintenanceTaskDo.getPrincipal(), maintenanceTaskDo.getOtherengineers());
|
|
|
+ // 删除提醒
|
|
|
+ // CXCommonUtils.deleteSendNotify("maintain", id);
|
|
|
+ maintenanceTaskService.deleteNotice("maintain", maintenanceTaskDo.getId());
|
|
|
+ // maintenanceTaskService.deleteNoticeDetail(id);
|
|
|
+
|
|
|
+ // 发送提醒
|
|
|
+ CXCommonUtils.sendNotify(title, context, null, userId.stream().distinct().collect(Collectors.toList()),
|
|
|
+ maintenanceTaskDo.getId(), MAINTAIN, false);
|
|
|
+
|
|
|
+ EquMaintenanceTaskDo updateDo =new EquMaintenanceTaskDo();
|
|
|
+ updateDo.setId(maintenanceTaskDo.getId());
|
|
|
+ updateDo.setTaskstate(TaskStatusEnum.UNDER_WAY.code);
|
|
|
+ updateDo.setPrincipalid(equMaintenanceTaskAssignConfigurationDo.getAssignedpersonid());
|
|
|
+ updateDo.setPrincipal(equMaintenanceTaskAssignConfigurationDo.getAssignedpersonname());
|
|
|
+ updateList.add(updateDo);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|