Browse Source

feat:教育节点开发

hmc 1 year ago
parent
commit
f4f0d5d2b4

+ 4 - 0
zkqy-process-execution/pom.xml

@@ -30,6 +30,10 @@
             <artifactId>core</artifactId>
             <version>3.5.1</version>
         </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 117 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/AssembleImpl.java

@@ -0,0 +1,117 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.jiaoyu;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import com.zkqy.execution.produce.utils.Sending;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 组装节点
+ */
+@Service("3c374962-9557-48ca-b968-65977f608af6")
+@Scope("prototype")
+public class AssembleImpl implements IRunBPMService {
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Autowired
+    private Sending sending;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        //不是空的就抛出异常差数据的方法
+        if(!bpmRunNodeFromVo.getFormDataVoList().isEmpty()){
+            return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+        }
+        //不是回滚节点执行
+        Map<String, Object> map = new HashMap<>();
+        map.put("id",Long.valueOf(bpmRunNodeFromVo.getTaskPlanKey()));
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("schedule_table", map, false,false));
+        CommonEntity echoNodeFormData1 = echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+        //获取数据采集设备上料数量
+        HashMap requestString=new HashMap();
+        requestString.put("id",echoNodeFormData1.getResultMap().get("taskId"));
+        String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
+        Map respMap1 = JSONObject.parseObject(string1, HashMap.class);
+        String string2 = respMap1.get("result").toString();
+        Map respMap2 = JSONObject.parseObject(string2, HashMap.class);
+        String assembled = respMap2.get("assembled").toString();
+        HashMap hashMap=new HashMap();
+        hashMap.put("assembled",assembled);//已组装数量
+        hashMap.put("taskNumber",echoNodeFormData1.getResultMap().get("taskId"));//任务id--计划号
+        echoNodeFormData1.getResultMap().remove("taskProcessKey");
+        echoNodeFormData1.getResultMap().remove("taskNodeKey");
+        echoNodeFormData1.getResultMap().putAll(hashMap);
+        return  echoNodeFormData1;
+    }
+
+    /**
+     * 前置验证节点
+     *
+     * @param iRunBPMEntity 节点执行参数
+     * @return
+     */
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 节点执行流程
+     *
+     * @param iRunBPMEntity 节点执行参数
+     * @return
+     */
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        CommonEntity commonEntity = new CommonEntity();
+        return AjaxResult.success();
+    }
+
+    /**
+     * 后置验证节点
+     *
+     * @param iRunBPMEntity 节点执行参数
+     */
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 需要手动修改返回为true!当前实现类中不得写逻辑代码!
+     * 此操作只为验证当前实现类是否存在!
+     * @return
+     */
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    /**
+     * @PreDestroy 注解用来清理当前bean。
+     * spring不会清理prototype作用域的bean。
+     *
+     * @return
+     */
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        // 执行清理操作
+        System.err.print("清理成功!");
+        return true;
+    }
+}

+ 119 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/DetectionImpl.java

@@ -0,0 +1,119 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.jiaoyu;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import com.zkqy.execution.produce.utils.Sending;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+//检验
+@Service("412d1936-1a9b-4478-8f7a-05b4bfb5a286")
+@Scope("prototype")
+public class DetectionImpl implements IRunBPMService {
+
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Autowired
+    private Sending sending;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        if(!bpmRunNodeFromVo.getFormDataVoList().isEmpty()){
+            return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+        }
+        //不是回滚节点执行
+        Map<String, Object> map = new HashMap<>();
+        map.put("id",Long.valueOf(bpmRunNodeFromVo.getTaskPlanKey()));
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("schedule_table", map, false,false));
+        CommonEntity echoNodeFormData1 = echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+        //获取数据采集设备上料数量
+        HashMap requestString=new HashMap();
+        requestString.put("id",echoNodeFormData1.getResultMap().get("taskId"));
+        String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
+        Map respMap1 = JSONObject.parseObject(string1, HashMap.class);
+        Map respMap2 = JSONObject.parseObject(respMap1.get("result").toString(), HashMap.class);
+        String assembled = respMap2.get("assembled").toString();
+        String qualified = respMap2.get("qualified").toString();
+        String unqualified = respMap2.get("unqualified").toString();
+        //必须得移除这个要不然第一此保存操作的时候就是修改操作了
+        HashMap hashMap=new HashMap();
+        hashMap.put("assembled",assembled);//已组装数量
+        hashMap.put("qualified",qualified);//质检合格数量
+        hashMap.put("unqualified",unqualified);//质检不合格数量
+        hashMap.put("taskNumber",echoNodeFormData1.getResultMap().get("taskId"));//任务id--计划号
+        echoNodeFormData1.getResultMap().remove("taskProcessKey");
+        echoNodeFormData1.getResultMap().remove("taskNodeKey");
+        echoNodeFormData1.getResultMap().putAll(hashMap);
+        return  echoNodeFormData1;
+    }
+
+    /**
+     * 前置验证节点
+     *
+     * @param iRunBPMEntity 节点执行参数
+     * @return
+     */
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 节点执行流程
+     *
+     * @param iRunBPMEntity 节点执行参数
+     * @return
+     */
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        CommonEntity commonEntity = new CommonEntity();
+        return AjaxResult.success();
+    }
+
+    /**
+     * 后置验证节点
+     *
+     * @param iRunBPMEntity 节点执行参数
+     */
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 需要手动修改返回为true!当前实现类中不得写逻辑代码!
+     * 此操作只为验证当前实现类是否存在!
+     * @return
+     */
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    /**
+     * @PreDestroy 注解用来清理当前bean。
+     * spring不会清理prototype作用域的bean。
+     *
+     * @return
+     */
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        // 执行清理操作
+        System.err.print("清理成功!");
+        return true;
+    }
+}

+ 137 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/LoadingImpl.java

@@ -0,0 +1,137 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.jiaoyu;
+
+
+import com.alibaba.fastjson2.JSONObject;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import com.zkqy.execution.produce.utils.Sending;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author hmc
+ * @date 2023-12-06 18:23
+ * @Description: 17af9e43-4bbe-4661-babc-ee09f67972b6
+ * 上料
+ */
+@Service("17af9e43-4bbe-4661-babc-ee09f67972b6")
+@Scope("prototype")
+public class LoadingImpl implements IRunBPMService {
+
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Autowired
+    private Sending sending;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        //不是空的就执行查询抛出异常的数据的方法
+        if(!bpmRunNodeFromVo.getFormDataVoList().isEmpty()){
+            return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+        }
+        //第一次执行节点获取回显数据的操作
+        Map<String, Object> map = new HashMap<>();
+        map.put("id",Long.valueOf(bpmRunNodeFromVo.getTaskPlanKey()));
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("schedule_table", map, false,false));
+        CommonEntity echoNodeFormData1 = echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+        //获取数据采集设备上料数量
+        HashMap requestString=new HashMap();
+        requestString.put("id",echoNodeFormData1.getResultMap().get("taskId"));
+        String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
+        Map respMap1 = JSONObject.parseObject(string1, HashMap.class);
+        String string2 = respMap1.get("result").toString();
+        Map respMap2 = JSONObject.parseObject(string2, HashMap.class);
+        String materials = respMap2.get("materials").toString();
+        //必须得移除这个要不然第一此保存操作的时候就是修改操作了
+        HashMap hashMap=new HashMap();
+        hashMap.put("materials",materials);//已上料数量
+        hashMap.put("taskNumber",echoNodeFormData1.getResultMap().get("taskId"));//任务id--计划号
+        echoNodeFormData1.getResultMap().remove("taskProcessKey");
+        echoNodeFormData1.getResultMap().remove("taskNodeKey");
+        echoNodeFormData1.getResultMap().putAll(hashMap);
+        return  echoNodeFormData1;
+    }
+/**
+ * //
+ * //        //查询计划表
+ * //
+ * //        //
+ * //        //投产数量---查询计划表
+ * ////        bpmRunNodeFromVo.get
+ * ////        HashMap hashMap=new HashMap();
+ * ////        hashMap.put("taskId", taskPlanKey);
+ * //        //查询任务执行状态
+ * ////        String string = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", hashMap, String.class).toString();
+ * //        CommonEntity common=new CommonEntity();
+ * ////        Map map = JSONObject.parseObject(string, HashMap.class);
+ * //        common.setResultMap(map);
+ */
+    /**
+     * 前置验证节点
+     *
+     * @param iRunBPMEntity 节点执行参数
+     * @return
+     */
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 节点执行流程
+     *
+     * @param iRunBPMEntity 节点执行参数
+     * @return
+     */
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        CommonEntity commonEntity = new CommonEntity();
+        return AjaxResult.success();
+    }
+
+    /**
+     * 后置验证节点
+     *
+     * @param iRunBPMEntity 节点执行参数
+     */
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 需要手动修改返回为true!当前实现类中不得写逻辑代码!
+     * 此操作只为验证当前实现类是否存在!
+     * @return
+     */
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    /**
+     * @PreDestroy 注解用来清理当前bean。
+     * spring不会清理prototype作用域的bean。
+     *
+     * @return
+     */
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        // 执行清理操作
+        System.err.print("清理成功!");
+        return true;
+    }
+}

+ 119 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/ProcessingImpl.java

@@ -0,0 +1,119 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.jiaoyu;
+
+
+import com.alibaba.fastjson2.JSONObject;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import com.zkqy.execution.produce.utils.Sending;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 加工
+ */
+@Service("b73ce52e-f3f4-446d-80bd-38f44e51371c")
+@Scope("prototype")
+public class ProcessingImpl implements IRunBPMService {
+
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Autowired
+    private Sending sending;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        //不是空的就执行查询抛出异常的数据的方法
+        if(!bpmRunNodeFromVo.getFormDataVoList().isEmpty()){
+            return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+        }
+        //第一次执行节点获取回显数据的操作
+        Map<String, Object> map = new HashMap<>();
+        map.put("id",Long.valueOf(bpmRunNodeFromVo.getTaskPlanKey()));
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("schedule_table", map, false,false));
+        CommonEntity echoNodeFormData1 = echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+        //获取数据采集设备上料数量
+        HashMap requestString=new HashMap();
+        requestString.put("id",echoNodeFormData1.getResultMap().get("taskId"));
+        String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
+        Map respMap1 = JSONObject.parseObject(string1, HashMap.class);
+        String string2 = respMap1.get("result").toString();
+        Map respMap2 = JSONObject.parseObject(string2, HashMap.class);
+        String processed = respMap2.get("processed").toString();
+        HashMap hashMap=new HashMap();
+        hashMap.put("processed",processed);//已加工数量
+        hashMap.put("taskNumber",echoNodeFormData1.getResultMap().get("taskId"));//任务id--计划号
+        echoNodeFormData1.getResultMap().remove("taskProcessKey");
+        echoNodeFormData1.getResultMap().remove("taskNodeKey");
+        echoNodeFormData1.getResultMap().putAll(hashMap);
+        return  echoNodeFormData1;
+    }
+
+    /**
+     * 前置验证节点
+     *
+     * @param iRunBPMEntity 节点执行参数
+     * @return
+     */
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 节点执行流程
+     *
+     * @param iRunBPMEntity 节点执行参数
+     * @return
+     */
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        CommonEntity commonEntity = new CommonEntity();
+        return AjaxResult.success();
+    }
+
+    /**
+     * 后置验证节点
+     *
+     * @param iRunBPMEntity 节点执行参数
+     */
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 需要手动修改返回为true!当前实现类中不得写逻辑代码!
+     * 此操作只为验证当前实现类是否存在!
+     * @return
+     */
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    /**
+     * @PreDestroy 注解用来清理当前bean。
+     * spring不会清理prototype作用域的bean。
+     *
+     * @return
+     */
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        // 执行清理操作
+        System.err.print("清理成功!");
+        return true;
+    }
+}

+ 118 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/WareHousingImpl.java

@@ -0,0 +1,118 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.jiaoyu;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import com.zkqy.execution.produce.utils.Sending;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 入库
+ */
+@Service("524b8b00-1153-41b4-b098-a0c60e66a1a6")
+@Scope("prototype")
+public class WareHousingImpl implements IRunBPMService {
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+
+    @Autowired
+    private Sending sending;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        //回滚异常节点表单数据查询
+        if(!bpmRunNodeFromVo.getFormDataVoList().isEmpty()){
+            return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+        }
+        //不是回滚节点执行
+        Map<String, Object> map = new HashMap<>();
+        map.put("id",Long.valueOf(bpmRunNodeFromVo.getTaskPlanKey()));
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("schedule_table", map, false,false));
+        CommonEntity echoNodeFormData1 = echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+        //获取数据采集设备上料数量
+        HashMap requestString=new HashMap();
+        requestString.put("id",echoNodeFormData1.getResultMap().get("taskId"));
+        String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
+        Map respMap1 = JSONObject.parseObject(string1, HashMap.class);
+        Map respMap2 = JSONObject.parseObject(respMap1.get("result").toString(), HashMap.class);
+        String inStock = respMap2.get("inStock").toString();
+        //必须得移除这个要不然第一此保存操作的时候就是修改操作了
+        HashMap hashMap=new HashMap();
+        hashMap.put("inStock",inStock);//已入库数量
+        hashMap.put("taskNumber",echoNodeFormData1.getResultMap().get("taskId"));//任务id--计划号
+        echoNodeFormData1.getResultMap().remove("taskProcessKey");
+        echoNodeFormData1.getResultMap().remove("taskNodeKey");
+        echoNodeFormData1.getResultMap().putAll(hashMap);
+        return  echoNodeFormData1;
+    }
+
+    /**
+     * 前置验证节点
+     *
+     * @param iRunBPMEntity 节点执行参数
+     * @return
+     */
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 节点执行流程
+     *
+     * @param iRunBPMEntity 节点执行参数
+     * @return
+     */
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        CommonEntity commonEntity = new CommonEntity();
+        return AjaxResult.success();
+    }
+
+    /**
+     * 后置验证节点
+     *
+     * @param iRunBPMEntity 节点执行参数
+     */
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 需要手动修改返回为true!当前实现类中不得写逻辑代码!
+     * 此操作只为验证当前实现类是否存在!
+     * @return
+     */
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    /**
+     * @PreDestroy 注解用来清理当前bean。
+     * spring不会清理prototype作用域的bean。
+     *
+     * @return
+     */
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        // 执行清理操作
+        System.err.print("清理成功!");
+        return true;
+    }
+}

+ 174 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/common/EducationCommonProductionSchedulingServiceImpl.java

@@ -0,0 +1,174 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.jiaoyu.common;
+
+import cn.hutool.core.date.DateTime;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.ser.std.DateSerializer;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import com.google.gson.JsonObject;
+import com.zkqy.common.utils.StringUtils;
+import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNode;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IntoProduction;
+import com.zkqy.execution.produce.dispersed.service.IBpmExecuteNodeService;
+import com.zkqy.execution.produce.dispersed.service.IScriptService;
+import com.zkqy.execution.produce.dispersed.service.impl.CommonServiceImpl;
+import com.zkqy.execution.produce.utils.Sending;
+import org.apache.xmlbeans.soap.SOAPArrayType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAccessor;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 教育行业投产脚本呢
+ */
+@Service("b89c0a3e-2c2b-4959-ac4f-a504966b5db6")
+@Scope("prototype")
+public class EducationCommonProductionSchedulingServiceImpl implements IScriptService {
+
+    @Autowired  // 执行节点记录表
+    private IBpmExecuteNodeService iBpmExecuteNodeService;
+
+    @Autowired
+    private Sending sending;
+
+    @Autowired
+    private CommonServiceImpl commonService;
+
+    @Override
+    public Object preExecutionScript(Object parameter) {
+        return true;
+    }
+
+    @Override
+    public Object executionScript(Object parameter) {
+        // 得到当前脚本执行所需数据
+        IntoProduction intoProduction = (IntoProduction) parameter;
+        // 根据流程别名 把开始节点执行
+        BpmExecuteNode bpmExecuteNode = new BpmExecuteNode();
+        bpmExecuteNode.setTaskNodeState("1");           // 0未执行、1已执行
+        bpmExecuteNode.setTaskNodeType("startEvent");   // 每个流程里只会存在一个开始节点
+        bpmExecuteNode.setTaskProcessKey(intoProduction.getTaskProcessKey()); // 当前任务流程的任务编码
+        iBpmExecuteNodeService.updateNodeState(bpmExecuteNode);  // 执行修改节点状态
+
+        // 修改用户业务表中的状态
+        CommonEntity commonEntity = new CommonEntity();
+        Map<String, Object> conMap = new HashMap<>();  // sql条件map
+        Map<String, Object> basicMap = new HashMap<>();  // 默认参数map
+
+        String con[] = intoProduction.getGuid().split("=");
+        conMap.put(con[0], con[1]);
+        commonEntity.setConditionMap(conMap);  // 得到修改表的条件
+        basicMap.put("tableName", intoProduction.getTableName());
+        commonEntity.setBasicMap(basicMap);  // 得到修改的表名
+        commonEntity.setCommMap(intoProduction.getStateMap());  // 需要修改的列
+        // 根据其他的条件更新投产表状态
+        int  i = sending.sendCommonUpdate(commonEntity);
+        //开启产线
+        //1、查询开启产线需要的相关信息
+        CommonEntity common =new CommonEntity();
+        //2、查询那张表的的数据
+        HashMap basicMapInfo=new HashMap();
+        basicMapInfo.put("tableName",intoProduction.getTableName());//查询的是计划表
+        common.setBasicMap(basicMapInfo);
+        //3、查询表数据的条件信息
+        HashMap conditionMapInfo=new HashMap();
+        conditionMapInfo.put(con[0],con[1]);
+        common.setConditionMap(conditionMapInfo);
+        CommonEntity planInfo = commonService.getInfoById(common);
+        //4、得到这个计划的基本信息
+        Map<String, Object> resultMap = planInfo.getResultMap();
+        resultMap.remove("remark");
+        resultMap.remove("task_name");
+        resultMap.remove("create_by_id");
+        resultMap.remove("create_by");
+        resultMap.remove("update_time");
+        resultMap.remove("process_key");
+        resultMap.remove("id");
+        resultMap.remove("update_by");
+        resultMap.remove("del_flag");
+        resultMap.remove("task_node_key");
+        resultMap.remove("create_time");
+        resultMap.remove("data_approval_status");
+        resultMap.remove("task_process_key");
+        resultMap.remove("update_by_id");
+        resultMap.remove("status");
+        Map<String, Object> resultMap2=new HashMap<>();
+        //转驼峰
+        resultMap.forEach((key,value)->{
+            resultMap2.put(StringUtils.toCamelCase(key),value);
+        });
+        //5、结果转Json对象(是不是启动产线所需要的数据)
+        if(resultMap2!=null){
+            try {
+                //5.1、转换Json SerializerFeature.WriteMapNullValue
+                // 创建 ObjectMapper 实例并设置其配置
+                ObjectMapper mapper = new ObjectMapper();
+                // 开启日期/时间格式化输出
+                mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+                mapper.registerModule(new JavaTimeModule());
+                SimpleModule module = new SimpleModule();
+                // 自定义日期格式
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                // 自定义日期格式
+                SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");
+                // 处理dataTime类型的
+                module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter));
+                // 处理data类型的
+                module.addSerializer(Date.class,new JsonSerializer<Date>() {
+                    @Override
+                    public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers)
+                            throws IOException {
+                        String formattedDate = formatter2.format(value);
+                        gen.writeString(formattedDate);
+                    }
+                });
+                mapper.registerModule(module);
+                //空的也让他序列化
+                mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS); // 或者 Include.NON_NULL 如果你想反向操作,排除所有null值
+                String JsonString = mapper.writeValueAsString(resultMap2);
+                //String res =sending.sendPostRequest("http://mes.063520.com/api/v1/mes/public/task/start", JsonString, String.class).toString();
+               // System.err.println(res);
+            } catch (JsonProcessingException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public Object afterExecutionScript(Object parameter) {
+        return null;
+    }
+
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        System.out.println("清理成功!");
+        return true;
+    }
+}

+ 44 - 4
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/utils/Sending.java

@@ -11,17 +11,17 @@ import com.zkqy.system.mapper.SysDictDataMapper;
 import com.zkqy.system.service.ISysBpmNodeScriptService;
 import com.zkqy.system.service.ISysRoleService;
 import com.zkqy.system.service.ISysUserService;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
+import org.springframework.http.*;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
 import javax.annotation.Resource;
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Array;
 import java.lang.reflect.Field;
 import java.net.URLEncoder;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -235,6 +235,46 @@ public class Sending<T> {
         return userService.selectUserByUserIds(userIds);
     }
 
+    /**
+     * 获取数据采集设备的
+     * @param baseUrl
+     * @param queryParams
+     * @param responseType
+     * @return
+     * @param <T>
+     */
+    public <T> T sendGetRequestWithParams(String baseUrl, Map<String, String> queryParams, Class<T> responseType) {
+        // 使用UriComponentsBuilder构建带有查询参数的URL
+        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(baseUrl);
+        for (Map.Entry<String, String> entry : queryParams.entrySet()) {
+            builder.queryParam(entry.getKey(), entry.getValue());
+        }
+        String urlWithParams = builder.build().encode().toUriString();
+        // 发送GET请求并获取响应结果
+        ResponseEntity<T> responseEntity = restTemplate.getForEntity(urlWithParams, responseType);
+        // 返回响应体
+        return responseEntity.getBody();
+    }
+
+    /**
+     * 发送启动产线的
+     * @param url
+     * @param requestBody
+     * @param responseType
+     * @return
+     * @param <T>
+     */
+    public <T> T sendPostRequest(String url, Object requestBody, Class<T> responseType) {
+        // 设置请求头内容类型为JSON
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        // 将请求体转换为HttpEntity对象
+        HttpEntity<Object> entity = new HttpEntity<>(requestBody, headers);
+        // 发送POST请求并获取响应结果
+        return restTemplate.postForObject(url, entity, responseType);
+    }
+
+
     /**
      * FORM_共通批量新增接口
      */