|
@@ -8,6 +8,7 @@ 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.constant.PmsConstants;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportPageReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportProcessVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportSaveReqVO;
|
|
@@ -23,6 +24,7 @@ import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
|
|
|
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;
|
|
|
+import cn.iocoder.yudao.module.system.api.permission.RoleApi;
|
|
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
|
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
|
@@ -38,6 +40,7 @@ import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_FAILURE_REPORT_NOT_EXISTS;
|
|
@@ -69,6 +72,8 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
|
|
|
private IotMaintainMapper iotMaintainMapper;
|
|
|
@Autowired
|
|
|
private DeptApi deptApi;
|
|
|
+ @Autowired
|
|
|
+ private RoleApi roleApi;
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -102,7 +107,7 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Long submitForApproval(Long id) {
|
|
|
+ public String submitForApproval(Long id) {
|
|
|
// IotFailureReportDO iotFailureReportDO = iotFailureReportMapper.selectById(id);
|
|
|
// if (Objects.isNull(iotFailureReportDO)) {throw new ServiceException(IOT_FAILURE_REPORT_NOT_EXISTS);}
|
|
|
// 发起BPM流程
|
|
@@ -111,7 +116,7 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
|
|
|
new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY).setBusinessKey(String.valueOf(id)));
|
|
|
// 将流程实例id 更新到 供应商主数据表
|
|
|
iotFailureReportMapper.updateById(new IotFailureReportDO().setId(id).setProcessInstanceId(processInstanceId).setAuditStatus(FailureAuditStatusEnum.PROCESS.getStatus()));
|
|
|
- return 0l;
|
|
|
+ return processInstanceId;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -134,40 +139,38 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
|
|
|
iotFailureReport.setDealHour(v);
|
|
|
}
|
|
|
iotFailureReportMapper.insert(iotFailureReport);
|
|
|
- sendMessage(iotFailureReport);
|
|
|
} else {
|
|
|
iotFailureReport.setStatus("reporting");
|
|
|
iotFailureReport.setAuditStatus(FailureAuditStatusEnum.PROCESS.getStatus());
|
|
|
iotFailureReportMapper.insert(iotFailureReport);
|
|
|
//直接发起流程
|
|
|
- submitForApproval(iotFailureReport.getId());
|
|
|
- //sendMessage(iotFailureReport);
|
|
|
+ String processInstanceId = submitForApproval(iotFailureReport.getId());
|
|
|
+// sendMessage(iotFailureReport,processInstanceId);
|
|
|
}
|
|
|
// 返回
|
|
|
return iotFailureReport.getId();
|
|
|
}
|
|
|
|
|
|
- private void sendMessage(IotFailureReportDO iotFailureReport) {
|
|
|
+ private void sendMessage(IotFailureReportDO iotFailureReport, String processInstanceId) {
|
|
|
Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
|
|
|
DeptDO dept = deptService.getDept(loginUserDeptId);
|
|
|
- DeptRespDTO parentDept = deptApi.getDeptNoPermission(dept.getParentId());
|
|
|
- String templateCode = "failure-report"; // 站内信模版,记得在【站内信管理】中配置噢
|
|
|
+ Long deptId = dept.getParentId();
|
|
|
+ List<Long> users = adminUserApi.getUserListByDept(deptId).stream().map(AdminUserRespDTO::getId).collect(Collectors.toList());
|
|
|
+ List<Long> roleUserIds = roleApi.getRoleUserIds("公司设备管理");
|
|
|
+ Set<Long> collect = users.stream().filter(roleUserIds::contains).collect(Collectors.toSet());
|
|
|
Map<String, Object> templateParams = new HashMap<>();
|
|
|
+ templateParams.put("businessType", PmsConstants.FAILURE_REPORT);
|
|
|
+ templateParams.put("businessId", processInstanceId);
|
|
|
templateParams.put("name", iotFailureReport.getDeviceName());
|
|
|
- CompletableFuture.runAsync(() ->{
|
|
|
- if (Objects.nonNull(parentDept.getLeaderUserId())){
|
|
|
-// parentDept.getLeaderUserId().forEach(e ->{
|
|
|
- notifyMessageSendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
|
|
|
- .setUserId(parentDept.getLeaderUserId()).setTemplateCode(templateCode).setTemplateParams(templateParams));
|
|
|
- String msg = "【PMS】故障上报 - "+iotFailureReport.getFailureName()+"故障已解决。"+"["+new Date()+"]";
|
|
|
- AdminUserRespDTO user = adminUserApi.getUser(parentDept.getLeaderUserId());
|
|
|
- if (Objects.nonNull(user)) {
|
|
|
- dingtalkSendApi.send(user.getMobile(), msg);
|
|
|
- }
|
|
|
-// })
|
|
|
+ CompletableFuture.runAsync(() -> collect.forEach(e->{
|
|
|
+ notifyMessageSendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
|
|
|
+ .setUserId(e).setTemplateCode(PROCESS_KEY).setTemplateParams(templateParams));
|
|
|
+ String msg = "【PMS】您有新的故障上报 - "+iotFailureReport.getFailureName()+"流程待审批。"+"["+new Date()+"]";
|
|
|
+ AdminUserRespDTO user = adminUserApi.getUser(e);
|
|
|
+ if (Objects.nonNull(user)) {
|
|
|
+ dingtalkSendApi.send(user.getMobile(), msg);
|
|
|
}
|
|
|
-
|
|
|
- });
|
|
|
+ }));
|
|
|
}
|
|
|
|
|
|
@Override
|