|
@@ -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.pojo.PageResult;
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
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.material.vo.IotMaintainMaterialSaveReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainSaveReqVO;
|
|
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.iotoutbound.IotOutboundMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMapper;
|
|
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.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.dingtalk.DingtalkSendApi;
|
|
import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi;
|
|
import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi;
|
|
import cn.iocoder.yudao.module.system.api.notify.dto.NotifySendSingleToUserReqDTO;
|
|
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
|
|
@Service
|
|
@Validated
|
|
@Validated
|
|
public class IotMaintainServiceImpl implements IotMaintainService {
|
|
public class IotMaintainServiceImpl implements IotMaintainService {
|
|
-
|
|
|
|
|
|
+ public static final String PROCESS_KEY = "maintain-out";
|
|
@Resource
|
|
@Resource
|
|
private IotMaintainMapper iotMaintainMapper;
|
|
private IotMaintainMapper iotMaintainMapper;
|
|
@Resource
|
|
@Resource
|
|
@@ -73,6 +76,16 @@ public class IotMaintainServiceImpl implements IotMaintainService {
|
|
private DingtalkSendApi dingtalkSendApi;
|
|
private DingtalkSendApi dingtalkSendApi;
|
|
@Resource
|
|
@Resource
|
|
private NotifyMessageSendApi notifyMessageSendApi;
|
|
private NotifyMessageSendApi notifyMessageSendApi;
|
|
|
|
+ @Resource
|
|
|
|
+ private BpmProcessInstanceApi processInstanceApi;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public Long submitForApproval(Long id) {
|
|
|
|
+ // 发起BPM流程
|
|
|
|
+ // 获取当前登录人信息
|
|
|
|
+ return 0L;
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -93,13 +106,21 @@ public class IotMaintainServiceImpl implements IotMaintainService {
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
iotMaintainMaterialMapper.insertBatch(collect);
|
|
iotMaintainMaterialMapper.insertBatch(collect);
|
|
//本地库存减少且记录出库
|
|
//本地库存减少且记录出库
|
|
- if ("finished".equals(createReqVO.getMaintain().getStatus())){
|
|
|
|
|
|
+ if ("finished".equals(createReqVO.getMaintain().getStatus())&&"in".equals(createReqVO.getMaintain().getType())) {
|
|
localStockAndOut(createReqVO);
|
|
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();
|
|
return iotMaintain.getId();
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
public void updateIotMaintain(IotMaintainSaveVO updateReqVO) {
|
|
public void updateIotMaintain(IotMaintainSaveVO updateReqVO) {
|
|
// 校验存在
|
|
// 校验存在
|
|
validateIotMaintainExists(updateReqVO.getMaintain().getId());
|
|
validateIotMaintainExists(updateReqVO.getMaintain().getId());
|
|
@@ -119,8 +140,10 @@ public class IotMaintainServiceImpl implements IotMaintainService {
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
iotMaintainMaterialMapper.insertBatch(collect);
|
|
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);
|
|
iotFailureReportMapper.updateById(iotFailureReportDO);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ //异步发送消息
|
|
CompletableFuture.runAsync(()->{
|
|
CompletableFuture.runAsync(()->{
|
|
sendMessage(BeanUtils.toBean(iotMaintain, IotMaintainDO.class));
|
|
sendMessage(BeanUtils.toBean(iotMaintain, IotMaintainDO.class));
|
|
});
|
|
});
|