lipenghui 4 mesiacov pred
rodič
commit
f66497159b

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/IotMaintainService.java

@@ -16,7 +16,7 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
  * @author 袁超
  */
 public interface IotMaintainService {
-
+    Long submitForApproval(Long id);
     /**
      * 创建维修工单
      *

+ 28 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/IotMaintainServiceImpl.java

@@ -7,6 +7,8 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
+import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainSaveReqVO;
@@ -22,6 +24,7 @@ import cn.iocoder.yudao.module.pms.dal.mysql.iotlockstock.IotLockStockMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotoutbound.IotOutboundMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.maintain.material.IotMaintainMaterialMapper;
+import cn.iocoder.yudao.module.pms.enums.common.FailureAuditStatusEnum;
 import cn.iocoder.yudao.module.system.api.dingtalk.DingtalkSendApi;
 import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi;
 import cn.iocoder.yudao.module.system.api.notify.dto.NotifySendSingleToUserReqDTO;
@@ -54,7 +57,7 @@ import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_MAINTAIN_N
 @Service
 @Validated
 public class IotMaintainServiceImpl implements IotMaintainService {
-
+    public static final String PROCESS_KEY = "maintain-out";
     @Resource
     private IotMaintainMapper iotMaintainMapper;
     @Resource
@@ -73,6 +76,16 @@ public class IotMaintainServiceImpl implements IotMaintainService {
     private DingtalkSendApi dingtalkSendApi;
     @Resource
     private NotifyMessageSendApi notifyMessageSendApi;
+    @Resource
+    private BpmProcessInstanceApi processInstanceApi;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Long submitForApproval(Long id) {
+        // 发起BPM流程
+        // 获取当前登录人信息
+        return 0L;
+    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -93,13 +106,21 @@ public class IotMaintainServiceImpl implements IotMaintainService {
         }).collect(Collectors.toList());
         iotMaintainMaterialMapper.insertBatch(collect);
         //本地库存减少且记录出库
-        if ("finished".equals(createReqVO.getMaintain().getStatus())){
+        if ("finished".equals(createReqVO.getMaintain().getStatus())&&"in".equals(createReqVO.getMaintain().getType())) {
             localStockAndOut(createReqVO);
         }
+        //如果委外发起流程
+        if ("out".equals(createReqVO.getMaintain().getType())){
+            String processInstanceId = processInstanceApi.createProcessInstance(SecurityFrameworkUtils.getLoginUserId(),
+                    new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY).setBusinessKey(String.valueOf(iotMaintain.getId())));
+            // 将流程实例id 更新到 供应商主数据表
+            iotMaintainMapper.updateById(new IotMaintainDO().setId(iotMaintain.getId()).setProcessInstanceId(processInstanceId).setAuditStatus(FailureAuditStatusEnum.PROCESS.getStatus()));
+        }
         return iotMaintain.getId();
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void updateIotMaintain(IotMaintainSaveVO updateReqVO) {
         // 校验存在
         validateIotMaintainExists(updateReqVO.getMaintain().getId());
@@ -119,8 +140,10 @@ public class IotMaintainServiceImpl implements IotMaintainService {
         }).collect(Collectors.toList());
         iotMaintainMaterialMapper.insertBatch(collect);
         //本地库存减少且记录出库
-        if ("finished".equals(updateReqVO.getMaintain().getStatus())){
-            localStockAndOut(updateReqVO);
+        localStockAndOut(updateReqVO);
+        //委外发起流程
+        if ("out".equals(updateReqVO.getMaintain().getType())){
+            submitForApproval(updateReqVO.getMaintain().getId());
         }
     }
 
@@ -172,6 +195,7 @@ public class IotMaintainServiceImpl implements IotMaintainService {
                 iotFailureReportMapper.updateById(iotFailureReportDO);
             }
         }
+        //异步发送消息
         CompletableFuture.runAsync(()->{
             sendMessage(BeanUtils.toBean(iotMaintain, IotMaintainDO.class));
         });