yangys
2025-09-10 143e74027f8b68fb7fa4dcd0026ccfa1e0e16788
blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java
@@ -5,6 +5,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.mdm.flow.constants.FlowContants;
import org.springblade.mdm.flow.entity.TaskDispatch;
import org.springblade.mdm.flow.excution.StartDispatcher;
@@ -36,7 +37,7 @@
   /**
    * 新增
    */
   @PostMapping("/new-mes-task")
   @PostMapping("/mes-new-task")
   @Operation(summary = "接收MES任务", description = "接收MES任务")
   public R<Void> newTask(@RequestBody MesTaskVO mesTaskVO) {
      try {
@@ -51,7 +52,7 @@
         TaskDispatch dispatch = mesTaskService.saveTask(startVO);
         log.error("MES任务保存成功");
         log.info("MES任务保存成功");
         if(!dispatch.isDuplicateTask()){
            try {
               FlowStartResult result = dispatcher.start(startVO);
@@ -84,7 +85,7 @@
   /**
    * 验证数据
    * @param startVO
    * @return
    * @return 粗呕信息列表
    */
   private List<String> checkTaskData(TaskAssignVO startVO) {
      List<String> errorList = new ArrayList<>();
@@ -102,25 +103,45 @@
      if(StringUtils.isBlank(startVO.getMachineCode())){
         errorList.add("设备编码不能为空");
      }
      //TODO 工序名称 我们是必填,
      if(StringUtils.isBlank(startVO.getProcessName())){
         errorList.add("工序名称不能为空");
      }
      return errorList;
   }
   /**
    * 从mesvo转换为内部任务分派vo
    * @param mesTaskVO
    * @return
    * @param mesTaskVO mes发送数据VO
    * @return mdm内部的派工VO
    */
   TaskAssignVO toTaskAssignVO(MesTaskVO mesTaskVO) {
      TaskAssignVO taskAssignVO = new TaskAssignVO();
      BeanUtils.copyProperties(mesTaskVO, taskAssignVO);
      taskAssignVO.setOrderNumber(mesTaskVO.getOrderNumber());
      taskAssignVO.setDrawingNo(mesTaskVO.getDrawingCode());
      taskAssignVO.setDrawingNoEdition(mesTaskVO.getDrawingVersion());
      taskAssignVO.setProcessNo(mesTaskVO.getOperationCode());
      taskAssignVO.setProcessName(mesTaskVO.getOperationName());
      taskAssignVO.setCraftEdition(mesTaskVO.getRoutingVersion());
      taskAssignVO.setProcessEdition(mesTaskVO.getOperationVersion());
      taskAssignVO.setOperationId(mesTaskVO.getOperationId());
      taskAssignVO.setMachineCode(mesTaskVO.getEquipmentCode());
      taskAssignVO.setMachineMode(mesTaskVO.getEquipmentModel());
      taskAssignVO.setDispatchBy(mesTaskVO.getDspatchBy());
      try {
         taskAssignVO.setPlanStartTime(DateUtil.fromDate(DateUtil.parse(mesTaskVO.getPlanStartTime(),"yyyy-MM-dd HH:mm:ss")).toLocalDate());
      }catch(Exception e){
         log.error("接收mes数据,计划开始时间转换错误");
      }
      taskAssignVO.setTitle(taskAssignVO.getDrawingNo()+"-"+taskAssignVO.getProcessNo()+"-"+taskAssignVO.getProcessEdition()+"计划任务");
      taskAssignVO.setIsTempFlow(FlowContants.N);
      return taskAssignVO;
   }
   @PostMapping("/finish-task")
   @PostMapping("/mes-finish-task")
   @Operation(summary = "MES任务完成推送", description = "MES任务完成推送")
   public R<Void> finishTask(@RequestBody MesTaskFinishVO finishTaskVO) {
      log.info("收到mes任务完成推送:{}",finishTaskVO);
@@ -140,15 +161,20 @@
   }
   /**
    * MES二次推送数据检查
    * @param finishTaskVO 二次推送数据
    * @return 错误信息列表
    */
   private List<String> checkFinishTaskData(MesTaskFinishVO finishTaskVO) {
      List<String> errorList = new ArrayList<>();
      if(StringUtils.isBlank(finishTaskVO.getMesTaskId())){
         errorList.add("唯一标识不能为空");
      if(StringUtils.isBlank(finishTaskVO.getOperationId())){
         errorList.add("工序唯一码不能为空");
      }
      if(StringUtils.isBlank(finishTaskVO.getInspector())){
         errorList.add("检验员不能为空");
      }
      if(finishTaskVO.getCheckTime() == null){
      if(finishTaskVO.getAcruslEndEime() == null){
         errorList.add("检验反馈时间不能为空");
      }
      return errorList;