From 4295f6d8006cc02cd98d19f46829a9dc3e5b36d4 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 08 九月 2025 20:28:33 +0800
Subject: [PATCH] 修复新编程序报表错误,增加mes接口
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/ExceptionDispathCleanTask.java | 43 ++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableContants.java | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/ProgramNodeService.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/TaskDispatchMapper.java | 7
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/ParamService.java | 38 ++-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/TaskDispatch.java | 27 +++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskFinishVO.java | 23 ++
blade-service/blade-mdm/pom.xml | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskVO.java | 71 +++++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/TaskDispatchMapper.xml | 5
blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/service/MesTaskService.java | 63 +++++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamConstants.java | 12 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java | 169 ++++++++++++++++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/TaskDispatchService.java | 30 ++
17 files changed, 473 insertions(+), 33 deletions(-)
diff --git a/blade-service/blade-mdm/pom.xml b/blade-service/blade-mdm/pom.xml
index 63ca8cf..0d51ae1 100644
--- a/blade-service/blade-mdm/pom.xml
+++ b/blade-service/blade-mdm/pom.xml
@@ -71,10 +71,6 @@
<artifactId>qiniu-java-sdk</artifactId>
</dependency>
<dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-flow-api</artifactId>
- </dependency>
- <dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>3.2.0</version>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamConstants.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamConstants.java
index 861faea..ce6296b 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamConstants.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamConstants.java
@@ -4,9 +4,9 @@
public static final String NETWORK_TYPE_KEY = "networkType";
/**
- * 宸ユ帶缃戝洖浼犵▼搴忕洃鎺х洰褰曢�楀彿鍒嗛殧
+ * 閲嶅娲惧伐澶╂暟楠岃瘉闂撮殧澶╂暟
*/
- public static final String PROGRAM_MONITOR_DIR_KEY = "programMonitorDir";
+ public static String TASK_DUPLICATE_CHECK_DAYS= "taskDuplicateCheckDays";
/**
* 娑夊瘑缃�
*/
@@ -25,4 +25,12 @@
* 绯荤粺鍙傛暟锛屾満鏋勪腑杞﹂棿鐨刱ey
*/
public static final String WORKSHOP_DICT_KEY = "workshopDictKey";
+ /**
+ * 璺熺洰褰曠殑id
+ */
+ public static String ROOT_DEPT_ID= "rootDeptId";
+ /**
+ * 閲嶅娲惧伐澶╂暟楠岃瘉闂撮殧澶╂暟
+ */
+ public static String TASK_EXPIRE_DAYS = "taskExpireDays";
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/ParamService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/ParamService.java
index 6a9a25a..4ba8b22 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/ParamService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/ParamService.java
@@ -4,6 +4,8 @@
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.mdm.commons.contants.ParamConstants;
import org.springblade.system.feign.ISysClient;
import org.springframework.stereotype.Service;
@@ -17,15 +19,9 @@
@AllArgsConstructor
public class ParamService{
public static String NETWORK_TYPE= "networkType";
- /**
- * 閲嶅娲惧伐澶╂暟楠岃瘉闂撮殧澶╂暟
- */
- public static String TASK_DUPLATE_CHECK_DAYS= "taskDuplicateCheckDays";
- /**
- * 閲嶅娲惧伐澶╂暟楠岃瘉闂撮殧澶╂暟
- */
- public static String TASK_EXPIRE_DAYS= "taskExpireDays";
+
+
/**
* 瀹℃壒鐢ㄦ埛瑙掕壊鍒悕鍙傛暟key锛岄�楀彿鍒嗛殧
@@ -51,14 +47,14 @@
public static String APPROVE_TABLE_TEMPLATE= "approveTableTemplate";
- /**
- * 瀹℃壒鐢ㄦ埛瑙掕壊鍒悕鍙傛暟key锛岄�楀彿鍒嗛殧
- */
- public static String ROOT_DEPT_ID= "rootDeptId";
+
/**
* 杞﹀簥鐨刱ey锛屽弬鏁板�兼寚鍚戞満搴婄被鍨嬩腑鐨勮溅搴�
*/
public static String MACHINE_SPEC_RURNING = "machineSecTurning";
+
+
+
private final ISysClient sysClient;
public String getParamValue(String paramKey,String defaultValue){
@@ -89,9 +85,9 @@
* 鑾峰彇浠诲姟閲嶅妫�鏌ュぉ鏁�
* @return 澶╂暟
*/
- public String taskDuplicateCheckDays(){
- return getParamValue(
- TASK_DUPLATE_CHECK_DAYS,"30");
+ public int taskDuplicateCheckDays(){
+ return Func.toInt(getParamValue(
+ ParamConstants.TASK_DUPLICATE_CHECK_DAYS,"30"));
}
@@ -100,9 +96,9 @@
CONFIRM_TABLE_TEMPLATE,"");
}
- public String rootDetpId() {
+ public String rootDeptId() {
return getParamValue(
- ROOT_DEPT_ID,"0");
+ ParamConstants.ROOT_DEPT_ID,"0");
}
public String approveTableTemplateOssFileName() {
@@ -125,4 +121,12 @@
}
+ /**
+ * 寮傚父鑰屽崡鏃犱繚鐣欏ぉ鏁�
+ * @return
+ */
+ public int getTaskExpireDays() {
+ String valueStr = getParamValue(ParamConstants.TASK_EXPIRE_DAYS,"30");
+ return Func.toInt(valueStr);
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableContants.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableContants.java
index fa60bbc..58da7fc 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableContants.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableContants.java
@@ -23,4 +23,8 @@
* 瀹為檯瀹℃壒楂樺笀id
*/
public static final String ACT_SENIOR = "actSenior";
+ /**
+ * 杩囩▼鍗″彿鍙橀噺鍚�
+ */
+ public static final String PROCESS_CARD = "processCard";
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/TaskDispatch.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/TaskDispatch.java
index db9525e..5ef26b8 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/TaskDispatch.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/TaskDispatch.java
@@ -1,6 +1,7 @@
package org.springblade.mdm.flow.entity;
import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import org.springblade.core.mp.base.BizEntity;
@@ -88,4 +89,30 @@
* 绋嬪簭缂栧彿
*/
private String programNo;
+
+ /**
+ * mes浠诲姟鍞竴鏍囪瘑
+ */
+ private String mesTaskId;
+
+ /**
+ * 妫�楠屽憳锛坢es鎻愪緵锛�
+ */
+ private String inspector;
+
+ /**
+ * 妫�楠屽弽棣堟椂闂达紙mes鎻愪緵锛�
+ */
+ private Date checkTime;
+ /**
+ * 杩囩▼鍗″彿
+ */
+ private String processCard;
+ /**
+ * 鏄惁涓洪噸澶嶆淳宸ユ暟鎹�
+ * @return 鏄惁
+ */
+ public boolean isDuplicateTask(){
+ return this.getStatus() == STATUS_DUP;
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/TaskDispatchMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/TaskDispatchMapper.java
index 9782ab8..76aa4af 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/TaskDispatchMapper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/TaskDispatchMapper.java
@@ -4,9 +4,16 @@
import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.flow.entity.TaskDispatch;
+import java.time.LocalDateTime;
import java.util.List;
public interface TaskDispatchMapper extends BladeMapper<TaskDispatch> {
List<String> distinctAllDrawingNo();
+
+ /**
+ * 鍒犻櫎瓒呰繃杩囨湡澶╂暟鐨勫紓甯镐换鍔�
+ * @param expiredTime 杩囨湡鐨勬椂闂寸偣
+ */
+ void deleteExpiredExceptionTasks(LocalDateTime expiredTime);
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/TaskDispatchMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/TaskDispatchMapper.xml
index 82a6f18..7dce5dd 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/TaskDispatchMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/TaskDispatchMapper.xml
@@ -8,9 +8,12 @@
<result column="update_time" property="updateTime"/>
<result column="is_deleted" property="isDeleted"/>
</resultMap>
+
<select id="distinctAllDrawingNo" resultType="java.lang.String">
select distinct drawing_no from mdm_task_dispatch
</select>
-
+ <delete id="deleteExpiredExceptionTasks">
+ delete from mdm_task_dispatch where status not in (1,2) and create_time < #{expiredTime}
+ </delete>
</mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/TaskDispatchService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/TaskDispatchService.java
index 481ea03..c72e8ca 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/TaskDispatchService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/TaskDispatchService.java
@@ -3,10 +3,8 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
-import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BizServiceImpl;
-import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.commons.service.ParamService;
import org.springblade.mdm.flow.entity.TaskDispatch;
import org.springblade.mdm.flow.mapper.TaskDispatchMapper;
@@ -20,6 +18,7 @@
import java.time.LocalDateTime;
import java.util.List;
+import java.util.Optional;
/**
* 浠诲姟娲惧伐鏁版嵁 澶勭悊鏈嶅姟
@@ -28,12 +27,13 @@
*/
@Slf4j
@Service
-@AllArgsConstructor
public class TaskDispatchService extends BizServiceImpl<TaskDispatchMapper, TaskDispatch> {
@Autowired
private ParamService paramService;
@Autowired
private DrawingNosMapper drawingNosMapper;
+
+
@Transactional(rollbackFor = Exception.class)
public TaskDispatch saveTask(TaskAssignVO startVO,boolean isDup) {
TaskDispatch taskDispatch = new TaskDispatch();
@@ -51,7 +51,7 @@
* 鍔爑浜轰笅鎷夋暟鎹�
* @param drawingNo
*/
- void addDrawingNos(String drawingNo){
+ public void addDrawingNos(String drawingNo){
DrawingNos data = drawingNosMapper.selectById(drawingNo);
if(data == null){
data = new DrawingNos();
@@ -85,7 +85,7 @@
return false;
}
- int taskDupDays = Func.toInt(paramService.taskDuplicateCheckDays());
+ int taskDupDays = paramService.taskDuplicateCheckDays();
LocalDateTime checkStartDate = LocalDateTime.now().minusDays(taskDupDays);
LambdaQueryChainWrapper<TaskDispatch> q = lambdaQuery().eq(TaskDispatch::getDrawingNo,startVO.getDrawingNo())
.eq(TaskDispatch::getProcessNo,startVO.getProcessNo())
@@ -113,4 +113,24 @@
}
}
+
+ /**
+ * 娓呯悊杩囨湡鐨勫紓甯镐换鍔¤鍒�
+ */
+ @Transactional
+ public void cleanExpiredExceptionTask() {
+ int expireDays = paramService.getTaskExpireDays();
+ LocalDateTime expiredTime = LocalDateTime.now().minusDays(expireDays);
+ baseMapper.deleteExpiredExceptionTasks(expiredTime);
+ }
+
+ /**
+ * 鏍规嵁mes鍞竴鏍囪瘑鑾峰彇娲惧伐鏁版嵁
+ * @param mesTaskId
+ * @return
+ */
+ public TaskDispatch getByMesTaskId(String mesTaskId) {
+ Optional<TaskDispatch> opt = lambdaQuery().eq(TaskDispatch::getMesTaskId, mesTaskId).oneOpt();
+ return opt.orElse(null);
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java
index c134be6..79478a4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java
@@ -68,9 +68,9 @@
runtimeService.setVariable(task.getExecutionId(),FlowContants.PROGRAMMER_NAME,userCommonService.getUserNameById(Func.toLong(variables.get("assignee"))));
}
}else if(task.getTaskDefinitionKey().equals("check")){
- runtimeService.setVariable(task.getExecutionId(),FlowVariableContants.ACT_CHECKER,Func.toLong(variables.get("assignee")));
+ variables.put(FlowVariableContants.ACT_CHECKER,Func.toStr(AuthUtil.getUserId()));
}else if(task.getTaskDefinitionKey().equals("approveTask")){
- runtimeService.setVariable(task.getExecutionId(),FlowVariableContants.ACT_SENIOR,Func.toLong(variables.get("assignee")));
+ variables.put(FlowVariableContants.ACT_SENIOR,Func.toStr(AuthUtil.getUserId()));
}
variables.remove("programOnMachine");//鍏朵粬鑺傜偣锛屽拷鐣ョ幇鍦虹紪绋嬫爣璁�
if (StringUtil.isNoneBlank(processInstanceId, comment)) {
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
index 34459f2..eb7932d 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
@@ -51,6 +51,8 @@
@Schema(description = "浜哄憳鑱岃矗琛╥d锛岀晫闈笂闆朵欢鍙峰尮閰嶄笉涓婄敤鎴锋寚瀹氱殑")
private Long producePlanId;
+ @Schema(description = "MES浠诲姟鍞竴鏍囪瘑")
+ private String mesTaskId;
/**
* 鏄惁 鏈� 绋嬪簭琛ュ厖娴佺▼锛堜复鏃舵祦绋嬶級
* @return 鏄惁
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/ProgramNodeService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/ProgramNodeService.java
index c592587..db03bef 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/ProgramNodeService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/ProgramNodeService.java
@@ -54,7 +54,7 @@
public List<ProgramNodeVO> loadTree(String includeSend) {
Integer workshopDictVal = Func.toInt(paramService.getParamValue(ParamConstants.WORKSHOP_DICT_KEY,DEFAULT_WORKSHOP_VALUE));
- Long rootDeptId = Func.toLong(paramService.rootDetpId());
+ Long rootDeptId = Func.toLong(paramService.rootDeptId());
TreeDept root = treeDeptService.getById(rootDeptId);
List<ProgramNodeVO> roots = new ArrayList<>();
ProgramNodeVO rootVO = new ProgramNodeVO();
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java
index 3b8f0b7..e79bedc 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java
@@ -129,7 +129,7 @@
}else{
vo.setActCheckerName(this.userCommonService.getUserNameById(props.getActCheckerId()) );
}
- if(props.getActCheckerId() == 0) {
+ if(props.getActSeniorId() == 0) {
vo.setActSeniorName(this.userCommonService.getUserNameById(props.getSeniorId()));
}else{
vo.setActSeniorName(this.userCommonService.getUserNameById(props.getActSeniorId()));
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/ExceptionDispathCleanTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/ExceptionDispathCleanTask.java
new file mode 100644
index 0000000..391fb6a
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/ExceptionDispathCleanTask.java
@@ -0,0 +1,43 @@
+package org.springblade.mdm.task;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.mdm.basesetting.machine.service.MachineService;
+import org.springblade.mdm.commons.service.ParamService;
+import org.springblade.mdm.flow.service.TaskDispatchService;
+import org.springblade.mdm.machinefile.service.MachineFileScanService;
+import org.springblade.mdm.machinefile.service.MachineFileService;
+import org.springblade.mdm.program.service.ProgramAnnotationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * 寮傚父浠诲姟璁″垝娓呴櫎瀹氭椂浠诲姟
+ */
+@Slf4j
+@Component
+@EnableScheduling
+public class ExceptionDispathCleanTask {
+ @Autowired
+ private TaskDispatchService taskDispatchService;
+ @Autowired
+ private ParamService paramService;
+ // 姣�5绉掓墽琛屼竴娆�
+ //@Scheduled(fixedRate = 1000000)
+ //@Scheduled(cron = "0 1 0 * * ?") // 姣忓ぉ涓婂崍0鐐�1鍒嗘墽琛�
+ //@Scheduled(cron = "0 */5 * * * ?")
+ //@Scheduled(cron = "0 15 19 * * ?") //test
+ @Scheduled(cron = "${task.cron.exception_dispatch_clean:0 1 * * * ?}")
+ public void execute() {
+ String networkType = paramService.getParamValue(ParamService.NETWORK_TYPE,ParamService.NETWORK_TYPE_SHEMI);
+
+
+ if(ParamService.NETWORK_TYPE_SHEMI.equals(networkType)){
+ //娑夊瘑缃戯紝鎵ц寮傚父浠诲姟娓呯悊
+ taskDispatchService.cleanExpiredExceptionTask();
+ }
+
+ }
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java
new file mode 100644
index 0000000..77b6682
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java
@@ -0,0 +1,169 @@
+package org.springblade.mdm.thirdpart.controller;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.core.tool.api.R;
+import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.entity.TaskDispatch;
+import org.springblade.mdm.flow.excution.StartDispatcher;
+import org.springblade.mdm.flow.service.TaskDispatchService;
+import org.springblade.mdm.flow.vo.FlowStartResult;
+import org.springblade.mdm.flow.vo.TaskAssignVO;
+import org.springblade.mdm.thirdpart.service.MesTaskService;
+import org.springblade.mdm.thirdpart.vo.MesTaskFinishVO;
+import org.springblade.mdm.thirdpart.vo.MesTaskVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@RestController
+@RequestMapping("/thirdparty/")
+@Tag(name = "MES鎺ュ彛", description = "MES鎺ュ彛")
+public class MesController {
+
+ @Autowired
+ private MesTaskService mesTaskService;
+ @Autowired
+ private StartDispatcher dispatcher;
+ @Autowired
+ private TaskDispatchService taskDispatchService;
+ /**
+ * 鏂板
+ */
+ @PostMapping("/new-mes-task")
+ @Operation(summary = "鎺ユ敹MES浠诲姟", description = "鎺ユ敹MES浠诲姟")
+ public R<Void> newTask(@RequestBody MesTaskVO mesTaskVO) {
+ try {
+ TaskAssignVO startVO = this.toTaskAssignVO(mesTaskVO);
+
+ List<String> errors = checkTaskData(startVO);
+ if (!errors.isEmpty()) {
+ String msg = formatError(errors);
+ log.error("鎺ユ敹MES浠诲姟{}锛岄獙璇佸け璐ワ細{}",mesTaskVO,msg);
+ return R.fail(msg);
+ }
+
+ TaskDispatch dispatch = mesTaskService.saveTask(startVO);
+
+ log.error("MES浠诲姟淇濆瓨鎴愬姛");
+ if(!dispatch.isDuplicateTask()){
+ try {
+ FlowStartResult result = dispatcher.start(startVO);
+
+ dispatch.setStatus(TaskDispatch.STATUS_STARTED);
+ dispatch.setProcessInstanceId(result.getProcessInstanceId());
+ dispatch.setProgramNo(result.getProgramNo());
+ taskDispatchService.updateById(dispatch);
+ }catch (Exception e){
+ dispatch.setStatus(TaskDispatch.STATUS_EXCEPTION);
+ dispatch.setErrMsg(e.getMessage());
+ taskDispatchService.updateById(dispatch);
+
+ log.error("MES浠诲姟鍚姩澶辫触", e);
+ }
+ }
+ return R.success();
+ }catch (Exception e) {
+ log.error("鎺ユ敹mes浠诲姟澶辫触", e);;
+ return R.fail(e.getMessage());
+ }
+
+ }
+
+ //private IResultCode formatError(List<String> errors) {
+ private String formatError(List<String> errors) {
+ return StringUtils.join(errors,",");
+ }
+
+ /**
+ * 楠岃瘉鏁版嵁
+ * @param startVO
+ * @return
+ */
+ private List<String> checkTaskData(TaskAssignVO startVO) {
+ List<String> errorList = new ArrayList<>();
+ if(StringUtils.isBlank(startVO.getDrawingNo())){
+ errorList.add("鍥惧彿涓嶈兘涓虹┖");
+ }
+
+ if(StringUtils.isBlank(startVO.getProcessNo())){
+ errorList.add("宸ュ簭鍙蜂笉鑳戒负绌�");
+ }
+
+ if(StringUtils.isBlank(startVO.getProcessEdition())){
+ errorList.add("宸ュ簭鐗堟涓嶈兘涓虹┖");
+ }
+ if(StringUtils.isBlank(startVO.getMachineCode())){
+ errorList.add("璁惧缂栫爜涓嶈兘涓虹┖");
+ }
+ //TODO 宸ュ簭鍚嶇О 鎴戜滑鏄繀濉紝
+ return errorList;
+ }
+
+ /**
+ * 浠巑esvo杞崲涓哄唴閮ㄤ换鍔″垎娲緑o
+ * @param mesTaskVO
+ * @return
+ */
+ TaskAssignVO toTaskAssignVO(MesTaskVO mesTaskVO) {
+ TaskAssignVO taskAssignVO = new TaskAssignVO();
+ BeanUtils.copyProperties(mesTaskVO, taskAssignVO);
+
+ taskAssignVO.setTitle(taskAssignVO.getDrawingNo()+"-"+taskAssignVO.getProcessNo()+"-"+taskAssignVO.getProcessEdition()+"璁″垝浠诲姟");
+ taskAssignVO.setIsTempFlow(FlowContants.N);
+ return taskAssignVO;
+ }
+
+ @PostMapping("/finish-task")
+ @Operation(summary = "MES浠诲姟瀹屾垚鎺ㄩ��", description = "MES浠诲姟瀹屾垚鎺ㄩ��")
+ public R<Void> finishTask(@RequestBody MesTaskFinishVO finishTaskVO) {
+ log.info("鏀跺埌mes浠诲姟瀹屾垚鎺ㄩ��:{}",finishTaskVO);
+ List<String> errors = checkFinishTaskData(finishTaskVO);
+ if (!errors.isEmpty()) {
+ String msg = formatError(errors);
+ log.error("鎺ユ敹MES瀹屾垚鎺ㄩ�亄}锛岄獙璇佸け璐ワ細{}",finishTaskVO,msg);
+ return R.fail(msg);
+ }
+ try {
+ mesTaskService.finishTask(finishTaskVO);
+ return R.success();
+ }catch(Exception e){
+ log.error("鎺ユ敹MES宸ュ簭瀹屾垚淇℃伅澶辫触", e);;
+ return R.fail("鍐呴儴閿欒");
+ }
+
+ }
+
+ private List<String> checkFinishTaskData(MesTaskFinishVO finishTaskVO) {
+ List<String> errorList = new ArrayList<>();
+ if(StringUtils.isBlank(finishTaskVO.getMesTaskId())){
+ errorList.add("鍞竴鏍囪瘑涓嶈兘涓虹┖");
+ }
+ if(StringUtils.isBlank(finishTaskVO.getInspector())){
+ errorList.add("妫�楠屽憳涓嶈兘涓虹┖");
+ }
+ if(finishTaskVO.getCheckTime() == null){
+ errorList.add("妫�楠屽弽棣堟椂闂翠笉鑳戒负绌�");
+ }
+ return errorList;
+
+ }
+ @GetMapping("/ping")
+ @Operation(summary = "MES ping", description = "娴嬭瘯鎺ュ彛閫氱晠")
+ public R<String> ping() {
+ try {
+
+ return R.data("pong");
+ }catch (Exception e) {
+ return R.fail(e.getMessage());
+ }
+
+ }
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/service/MesTaskService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/service/MesTaskService.java
new file mode 100644
index 0000000..d94029d
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/service/MesTaskService.java
@@ -0,0 +1,63 @@
+
+package org.springblade.mdm.thirdpart.service;
+
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.springblade.mdm.flow.constants.FlowVariableContants;
+import org.springblade.mdm.flow.entity.TaskDispatch;
+import org.springblade.mdm.flow.service.TaskDispatchService;
+import org.springblade.mdm.flow.vo.TaskAssignVO;
+import org.springblade.mdm.thirdpart.vo.MesTaskFinishVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 浠诲姟娲惧伐鏁版嵁 澶勭悊鏈嶅姟
+ *
+ * @author yangys
+ */
+@Slf4j
+@Service
+public class MesTaskService {
+ @Autowired
+ private TaskDispatchService taskDispatchService;
+ @Autowired
+ private RuntimeService runtimeService;
+ /**
+ * 淇濆瓨mes浠诲姟
+ * @param startVO
+ * @return
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public TaskDispatch saveTask(TaskAssignVO startVO) {
+ TaskDispatch taskDispatch = new TaskDispatch();
+ BeanUtils.copyProperties(startVO, taskDispatch);
+
+ boolean isDuplicate = taskDispatchService.checkIsDuplicate(startVO);
+ if(isDuplicate){
+ taskDispatch.setStatus(TaskDispatch.STATUS_DUP);
+ }
+ taskDispatchService.save(taskDispatch);
+
+ taskDispatchService.addDrawingNos(taskDispatch.getDrawingNo());
+ return taskDispatch;
+ }
+
+ /**
+ * mes 瀹屾垚鎺ㄩ��
+ * @param finishTaskVO
+ */
+ public void finishTask(MesTaskFinishVO finishTaskVO) {
+ TaskDispatch taskDispatch = taskDispatchService.getByMesTaskId(finishTaskVO.getMesTaskId());
+ if(taskDispatch != null && taskDispatch.getProcessInstanceId() != null){
+ taskDispatch.setProcessCard(finishTaskVO.getProcessCard());
+ taskDispatch.setInspector(finishTaskVO.getInspector());
+ taskDispatch.setCheckTime(finishTaskVO.getCheckTime());
+ taskDispatchService.updateById(taskDispatch);
+
+ runtimeService.setVariable(taskDispatch.getProcessInstanceId(), FlowVariableContants.PROCESS_CARD,finishTaskVO.getProcessCard());
+ }
+ }
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskFinishVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskFinishVO.java
new file mode 100644
index 0000000..2f5b425
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskFinishVO.java
@@ -0,0 +1,23 @@
+package org.springblade.mdm.thirdpart.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import java.time.LocalDate;
+import java.util.Date;
+
+@Data
+@Schema(description = "MES浠诲姟瀹屾垚鏁版嵁")
+public class MesTaskFinishVO {
+ @Schema(description = "妫�楠屽弽棣堟椂闂�")
+ private Date checkTime;
+ @Schema(description = "杩囩▼鍗″彿")
+ private String processCard;
+
+ @Schema(description = "鎵规鍙�")
+ private Long batchId;
+ @Schema(description = "妫�楠屽憳")
+ private String inspector;
+ @Schema(description = "MES浠诲姟鍞竴鏍囪瘑")
+ private String mesTaskId;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskVO.java
new file mode 100644
index 0000000..6a380a3
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskVO.java
@@ -0,0 +1,71 @@
+package org.springblade.mdm.thirdpart.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.mdm.flow.constants.FlowContants;
+
+import java.time.LocalDate;
+
+@Data
+@Schema(description = "MES浠诲姟璁″垝")
+public class MesTaskVO {
+ @Schema(description = "娴佺▼鏍囬")
+ private String title;
+ @Schema(description = "闆剁粍浠�/鍥惧彿")
+ private String drawingNo;
+ @Schema(description = "鍥惧彿鐗堟/璁捐鐗堟")
+ private String drawingNoEdition;
+ @Schema(description = "宸ュ簭鍙�")
+ private String processNo;
+ @Schema(description = "宸ュ簭鍚嶇О")
+ private String processName;
+ @Schema(description = "浜у搧鍨嬪彿")
+ private String productModel;
+ @Schema(description = "宸ュ簭鐗堟")
+ private String processEdition;
+
+ @Schema(description = "宸ヨ壓鐗堟")
+ private String craftEdition;
+
+ @Schema(description = "璁惧缂栧彿")
+ private String machineCode;
+
+ @Schema(description = "璁惧鍨嬪彿")
+ private String machineMode;
+
+ @Schema(description = "璁″垝閿佸畾鏃堕棿(澶�)")
+ private Integer planLockDays;
+
+ @Schema(description = "璁″垝寮�宸ユ椂闂�")
+ private LocalDate planStartTime;
+
+ @Schema(description = "鍋忕鍗曞彿")
+ private String deviation;
+ @Schema(description = "鏄惁涓存椂娴佺▼锛屽��:Y/N")
+ private String isTempFlow;
+
+ @Schema(description = "浠诲姟娲惧伐璁板綍琛╥d")
+ private Long taskDispatchId;
+
+ @Schema(description = "浜哄憳鑱岃矗琛╥d锛岀晫闈笂闆朵欢鍙峰尮閰嶄笉涓婄敤鎴锋寚瀹氱殑")
+ private Long producePlanId;
+
+ @Schema(description = "MES浠诲姟鍞竴鏍囪瘑")
+ private String mesTaskId;
+ /**
+ * 鏄惁 鏈� 绋嬪簭琛ュ厖娴佺▼锛堜复鏃舵祦绋嬶級
+ * @return 鏄惁
+ */
+ public boolean isTemporaryFlow(){
+ return FlowContants.Y.equals(isTempFlow);
+ }
+
+ /**
+ * 鏄惁鍋忕鍗�
+ * @return 鏄惁
+ */
+ public boolean isDeviationFlow(){
+ return StringUtils.isNotBlank(deviation);
+ }
+}
--
Gitblit v1.9.3