Selaa lähdekoodia

aps-订单评审合并表单保存和流程事务

sucheng 7 kuukautta sitten
vanhempi
commit
6690d17531

+ 115 - 16
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductionOrderServiceImpl.java

@@ -14,6 +14,7 @@ import com.rongwei.bscommon.sys.utils.ApsUtils;
 import com.rongwei.bsentity.domain.*;
 import com.rongwei.bsentity.vo.*;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
+import com.rongwei.rwadmincommon.system.service.SysGeneralCRUDService;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.BaseDo;
 import com.rongwei.rwcommon.base.R;
@@ -28,9 +29,12 @@ import com.rongwei.safecommon.utils.CXCommonUtils;
 import com.rongwei.safecommon.utils.SaveConstans;
 import com.rongwei.wfentity.sys.ProcessInstDo;
 import com.rongwei.wfentity.sys.RunTaskDo;
+import com.rongwei.wfentity.sys.vo.CreateProcessVo;
+import com.rongwei.wfentity.sys.vo.FlowBackVo;
+import com.rongwei.wfentity.sys.vo.RunTaskVo;
+import com.rongwei.wfserver.wfcommon.core.service.impl.WorkFlowServiceImpl;
 import com.rongwei.wfserver.wfcommon.sys.service.ProcessInstService;
 import com.rongwei.wfserver.wfcommon.sys.service.RunTaskService;
-import org.hibernate.validator.internal.constraintvalidators.bv.time.futureorpresent.FutureOrPresentValidatorForMonthDay;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -159,6 +163,10 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
     private ApsReportThProcessPhotoService apsReportThProcessPhotoService;
     @Autowired
     private ApsReportOutputServiceImpl apsReportOutputService;
+    @Autowired
+    private WorkFlowServiceImpl workFlowService;
+    @Autowired
+    private SysGeneralCRUDService sysGeneralCRUDService;
 
 
     public static final String ERROR_MSG = "%s上诉订单的排程交货期大于承诺交货期";
@@ -519,6 +527,26 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                     apsProcessOperationProcessEquService.updateProductionStatus(request);
                 }
             }
+
+            String processinstid = apsProductionOrderDo.getProcessinstid();
+            RunTaskDo runTaskDo = runTaskService.getOne(new LambdaQueryWrapper<RunTaskDo>().eq(BaseDo::getDeleted, "0")
+                    .eq(RunTaskDo::getProcessinstid, processinstid)
+                    .in(RunTaskDo::getTaskstatus, "10", "20")
+                    .orderByDesc(BaseDo::getCreatedate), false);
+            RunTaskVo runTaskVo = new RunTaskVo();
+            BeanUtils.copyProperties(runTaskDo, runTaskVo);
+            runTaskVo.setProcessInstId(processinstid);
+            runTaskVo.setBusinesstableid(apsProductionOrderDo.getId());
+            runTaskVo.setProcesstitle("订单评审");
+            runTaskVo.setProcessdefid("order_review");
+            runTaskVo.setAuditoperation("10");
+            runTaskVo.setTaskstatusname("待处理");
+            try {
+                workFlowService.runTask(runTaskVo, true);
+            } catch (Exception e) {
+                log.error("流程更新失败");
+                throw new RuntimeException("执行流程失败,请刷新页面后重试");
+            }
         } finally {
             log.debug("校验-订单提交完毕,从map中清空当前订单锁,订单ID:{}", id);
             productOrderLock.remove(id);
@@ -1032,25 +1060,40 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
     }
 
     @Override
+    @Transactional
     public R generalMsInsert(OrderSaveOrUpdateVo req) {
         MasterSlaveInsertVo masterSlaveInsert = req.getMasterSlaveInsert();
-//        String id = masterSlaveInsert.getMasterInsert().getInsertcolumns().get("ID").toString();
-//        SysUserVo currentUser = CXCommonUtils.getCurrentUser();
-//        if (productOrderLock.containsKey(id)) {
-//            log.error("新增-该订单已被:{}提交", productOrderLock.get(id));
-//            return R.error("该订单已被提交");
-//        }
-//        productOrderLock.put(id, currentUser.getId());
-//        try {
-        cxAdminFeginClient.generalMsInsert(masterSlaveInsert);
-//        } finally {
-//            log.debug("新增-订单提交完毕,从map中清空当前订单锁,订单ID:{}", id);
-//            productOrderLock.remove(id);
-//        }
+        try {
+        sysGeneralCRUDService.generalMsInsert(masterSlaveInsert);
+        } catch (Exception e) {
+            throw new RuntimeException("新增订单信息错误,请刷新页面后重试");
+        }
+        //发起流程
+        if (req.getIsStartWf()){
+            ApsProductionOrderDo oldOrder = req.getOldOrder();
+            CreateProcessVo createProcessVo = new CreateProcessVo();
+            createProcessVo.setProcessdefid("order_review");
+            createProcessVo.setBusinesstablename("aps_production_order");
+            createProcessVo.setBusinesstableid(oldOrder.getId());
+            createProcessVo.setProcessname("订单评审");
+            createProcessVo.setProcesstitle(oldOrder.getOrderno()+"-订单评审-"+DateUtil.now());
+            createProcessVo.setUserId(oldOrder.getId());
+            createProcessVo.setNotifycontent("订单评审");
+            //查询订单信息,map格式返回
+            Map<String, Object> map = this.getMap(new LambdaQueryWrapper<ApsProductionOrderDo>().eq(ApsProductionOrderDo::getId, oldOrder.getId()));
+            createProcessVo.setBusinesstableValue(map);
+            try {
+                workFlowService.createProcessInstance(createProcessVo);
+            } catch (Exception e) {
+                log.error("流程创建失败");
+                throw new RuntimeException("执行创建流程失败,请刷新页面后重试");
+            }
+        }
         return R.ok();
     }
 
     @Override
+    @Transactional
     public R generalMsUpdate(OrderSaveOrUpdateVo req) {
         MasterSlaveUpdateVo masterSlaveUpdate = req.getMasterSlaveUpdate();
         String id = masterSlaveUpdate.getMasterUpdate().getColumnQueryTypes().get(0).getColumns().get(0).getValue();
@@ -1069,8 +1112,64 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
             if (!oldOrder.getAuditstatus().equals(nowApsProductionOrderDo.getAuditstatus())) {
                 return R.error("该订单已被提交,请刷新页面后重新操作");
             }
-
-            cxAdminFeginClient.generalMsUpdate(masterSlaveUpdate);
+            try {
+                sysGeneralCRUDService.generalMsUpdate(masterSlaveUpdate);
+            } catch (Exception e) {
+                throw new RuntimeException("更新订单信息错误,请刷新页面后重试");
+            }
+            //提交流程
+            if (req.getIsSubmitWf()){
+                String processinstid = nowApsProductionOrderDo.getProcessinstid();
+                RunTaskDo runTaskDo = runTaskService.getOne(new LambdaQueryWrapper<RunTaskDo>().eq(BaseDo::getDeleted, "0")
+                        .eq(RunTaskDo::getProcessinstid, processinstid)
+                        .in(RunTaskDo::getTaskstatus, "10", "20")
+                        .orderByDesc(BaseDo::getCreatedate), false);
+                RunTaskVo runTaskVo = new RunTaskVo();
+                BeanUtils.copyProperties(runTaskDo, runTaskVo);
+                runTaskVo.setProcessInstId(processinstid);
+                runTaskVo.setBusinesstableid(nowApsProductionOrderDo.getId());
+                runTaskVo.setProcesstitle("订单评审");
+                runTaskVo.setProcessdefid("order_review");
+                runTaskVo.setAuditoperation("10");
+                runTaskVo.setTaskstatusname("待处理");
+                runTaskVo.setComment(req.getComment());
+                try {
+                    workFlowService.runTask(runTaskVo, true);
+                } catch (Exception e) {
+                    log.error("流程更新失败");
+                    throw new RuntimeException("执行提交流程失败,请刷新页面后重试");
+                }
+            }
+            //退回流程
+            if (req.getIsBackWf()){
+                try{
+                    workFlowService.flowBackByType(req.getFlowBackVo());
+                    return R.ok();
+                }catch (Exception e){
+                    log.error("流程退回失败");
+                    throw new RuntimeException("执行退回流程失败,请刷新页面后重试");
+                }
+            }
+            //发起流程
+            if (req.getIsStartWf()){
+                CreateProcessVo createProcessVo = new CreateProcessVo();
+                createProcessVo.setProcessdefid("order_review");
+                createProcessVo.setBusinesstablename("aps_production_order");
+                createProcessVo.setBusinesstableid(nowApsProductionOrderDo.getId());
+                createProcessVo.setProcessname("订单评审");
+                createProcessVo.setProcesstitle(nowApsProductionOrderDo.getOrderno()+"-订单评审-"+DateUtil.now());
+                createProcessVo.setUserId(currentUser.getId());
+                createProcessVo.setNotifycontent("订单评审");
+                //查询订单信息,map格式返回
+                Map<String, Object> map = this.getMap(new LambdaQueryWrapper<ApsProductionOrderDo>().eq(ApsProductionOrderDo::getId, nowApsProductionOrderDo.getId()));
+                createProcessVo.setBusinesstableValue(map);
+                try {
+                    workFlowService.createProcessInstance(createProcessVo);
+                } catch (Exception e) {
+                    log.error("流程创建失败");
+                    throw new RuntimeException("执行创建流程失败,请刷新页面后重试");
+                }
+            }
         } finally {
             log.debug("修改-订单提交完毕,从map中清空当前订单锁,订单ID:{}", id);
             productOrderLock.remove(id);

+ 5 - 0
cx-aps/cx-aps-entity/pom.xml

@@ -35,5 +35,10 @@
             <artifactId>rw-common-utils</artifactId>
             <version>1.1-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>com.rongwei</groupId>
+            <artifactId>wf-entity</artifactId>
+            <version>1.1-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 </project>

+ 3 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/CheckAndSaveOrUpdateOrderReq.java

@@ -40,4 +40,7 @@ public class CheckAndSaveOrUpdateOrderReq {
 
     //页面上订单信息
     private ApsProductionOrderDo oldOrder;
+
+    //流程的审批意见
+    private String comment = "";
 }

+ 15 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/OrderSaveOrUpdateVo.java

@@ -3,6 +3,7 @@ package com.rongwei.bsentity.vo;
 import com.rongwei.bsentity.domain.ApsProductionOrderDo;
 import com.rongwei.rwcommon.vo.generalsql.MasterSlaveInsertVo;
 import com.rongwei.rwcommon.vo.generalsql.MasterSlaveUpdateVo;
+import com.rongwei.wfentity.sys.vo.FlowBackVo;
 import lombok.Data;
 
 /**
@@ -19,4 +20,18 @@ public class OrderSaveOrUpdateVo {
 
     //修改数据
     private MasterSlaveUpdateVo masterSlaveUpdate;
+
+    //是否提交流程
+    private Boolean isSubmitWf = false;
+
+    //是否退回流程
+    private Boolean isBackWf = false;
+    //退回流程入参
+    private FlowBackVo flowBackVo;
+
+    //是否发起流程
+    private Boolean isStartWf = false;
+
+    //审批意见
+    private String comment = "";
 }

+ 1 - 1
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProductionOrderController.java

@@ -187,7 +187,7 @@ public class ApsProductionOrderController {
      * 数据眼报表 定时任务 准备数据
      */
     @GetMapping("/dataEyeReport")
-    @Scheduled(cron = "0 30 0 * * *")
+//    @Scheduled(cron = "0 30 0 * * *")
     public R dataEyeReport() {
         log.info("数据眼报表 定时任务 准备数据开始");
         Thread thread = new Thread(() -> apsProductionOrderService.dataEyeReport());