|
@@ -13,14 +13,18 @@ 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.IotFailureReportPageReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportProcessVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportProcessVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportSaveReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportSaveReqVO;
|
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonPageReqVO;
|
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonRelationSaveReqVO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
|
|
|
|
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotdeviceperson.IotDevicePersonDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.failure.IotFailureReportMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.failure.IotFailureReportMapper;
|
|
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.enums.common.FailureAuditStatusEnum;
|
|
import cn.iocoder.yudao.module.pms.enums.common.FailureAuditStatusEnum;
|
|
import cn.iocoder.yudao.module.pms.message.PmsMessage;
|
|
import cn.iocoder.yudao.module.pms.message.PmsMessage;
|
|
|
|
+import cn.iocoder.yudao.module.pms.service.iotdeviceperson.IotDevicePersonService;
|
|
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
|
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
|
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
|
|
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.dingtalk.DingtalkSendApi;
|
|
@@ -79,53 +83,79 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
|
|
private RoleApi roleApi;
|
|
private RoleApi roleApi;
|
|
@Autowired
|
|
@Autowired
|
|
private PmsMessage pmsMessage;
|
|
private PmsMessage pmsMessage;
|
|
|
|
+ @Autowired
|
|
|
|
+ private IotDevicePersonService iotDevicePersonService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public void approvalFailureReport(Long id, Integer bpmResult) {
|
|
public void approvalFailureReport(Long id, Integer bpmResult) {
|
|
- if(bpmResult ==2 ){
|
|
|
|
- //更新故障上报状态及审核状态
|
|
|
|
- IotFailureReportDO failureReportDO = iotFailureReportMapper.selectById(id);
|
|
|
|
- failureReportDO.setStatus("trans");//转工单
|
|
|
|
- failureReportDO.setAuditStatus(FailureAuditStatusEnum.APPROVE.getStatus());
|
|
|
|
- iotFailureReportMapper.insertOrUpdate(failureReportDO);
|
|
|
|
- //生成工单
|
|
|
|
- IotMaintainDO iotMaintainDO = new IotMaintainDO();
|
|
|
|
- BeanUtils.copyProperties(failureReportDO, iotMaintainDO);
|
|
|
|
- iotMaintainDO.setStatus("tx");
|
|
|
|
- iotMaintainDO.setPic(null);
|
|
|
|
- //iotMaintainDO.setAuditStatus(0);
|
|
|
|
- iotMaintainDO.setAuditStatus(null);
|
|
|
|
- iotMaintainDO.setMaintainType("故障上报");
|
|
|
|
- iotMaintainDO.setMaintainPerson(Objects.isNull(failureReportDO.getAssigneeUserId())? Long.valueOf(failureReportDO.getCreator()) :failureReportDO.getAssigneeUserId());
|
|
|
|
- AdminUserRespDTO apiUser = adminUserApi.getUser(iotMaintainDO.getMaintainPerson());
|
|
|
|
- if (Objects.isNull(apiUser)) {
|
|
|
|
- throw new ServiceException(new ErrorCode(11,"责任人不存在"));
|
|
|
|
- }
|
|
|
|
- iotMaintainDO.setMaintainPersonName(apiUser.getNickname());
|
|
|
|
- iotMaintainDO.setFailureId(failureReportDO.getId());
|
|
|
|
- iotMaintainDO.setId(null);
|
|
|
|
- iotMaintainDO.setOutFile("[]");
|
|
|
|
- iotMaintainMapper.insert(iotMaintainDO);
|
|
|
|
- //发送消息
|
|
|
|
- Map<String, Object> templateParams = new HashMap<>();
|
|
|
|
- templateParams.put("name", iotMaintainDO.getDeviceName());
|
|
|
|
- templateParams.put("businessType", PmsConstants.GENERATE_MAINTAIN);
|
|
|
|
- templateParams.put("businessId", iotMaintainDO.getId());
|
|
|
|
- AdminUserRespDTO user = adminUserApi.getUser(Objects.isNull(failureReportDO.getAssigneeUserId()) ? Long.valueOf(failureReportDO.getCreator()) : failureReportDO.getAssigneeUserId());
|
|
|
|
|
|
+ IotFailureReportDO failureReportDO = iotFailureReportMapper.selectById(id);
|
|
|
|
+ if (Objects.nonNull(failureReportDO.getAssigneeUserId())) {
|
|
|
|
+ if(bpmResult ==2 ){
|
|
|
|
+ //更新故障上报状态及审核状态
|
|
|
|
+ failureReportDO.setStatus("trans");//转工单
|
|
|
|
+ failureReportDO.setAuditStatus(FailureAuditStatusEnum.APPROVE.getStatus());
|
|
|
|
+ iotFailureReportMapper.insertOrUpdate(failureReportDO);
|
|
|
|
+ //生成工单
|
|
|
|
+ IotMaintainDO iotMaintainDO = new IotMaintainDO();
|
|
|
|
+ BeanUtils.copyProperties(failureReportDO, iotMaintainDO);
|
|
|
|
+ iotMaintainDO.setStatus("tx");
|
|
|
|
+ iotMaintainDO.setPic(null);
|
|
|
|
+ //iotMaintainDO.setAuditStatus(0);
|
|
|
|
+ iotMaintainDO.setAuditStatus(null);
|
|
|
|
+ iotMaintainDO.setMaintainType("故障上报");
|
|
|
|
+ iotMaintainDO.setMaintainPerson(Objects.isNull(failureReportDO.getAssigneeUserId())? Long.valueOf(failureReportDO.getCreator()) :failureReportDO.getAssigneeUserId());
|
|
|
|
+ AdminUserRespDTO apiUser = adminUserApi.getUser(iotMaintainDO.getMaintainPerson());
|
|
|
|
+ if (Objects.isNull(apiUser)) {
|
|
|
|
+ throw new ServiceException(new ErrorCode(11,"责任人不存在"));
|
|
|
|
+ }
|
|
|
|
+ iotMaintainDO.setMaintainPersonName(apiUser.getNickname());
|
|
|
|
+ iotMaintainDO.setFailureId(failureReportDO.getId());
|
|
|
|
+ iotMaintainDO.setId(null);
|
|
|
|
+ iotMaintainDO.setOutFile("[]");
|
|
|
|
+ iotMaintainMapper.insert(iotMaintainDO);
|
|
|
|
+ //发送消息
|
|
|
|
+ Map<String, Object> templateParams = new HashMap<>();
|
|
|
|
+ templateParams.put("name", iotMaintainDO.getDeviceName());
|
|
|
|
+ templateParams.put("businessType", PmsConstants.GENERATE_MAINTAIN);
|
|
|
|
+ templateParams.put("businessId", iotMaintainDO.getId());
|
|
|
|
+ AdminUserRespDTO user = adminUserApi.getUser(Objects.isNull(failureReportDO.getAssigneeUserId()) ? Long.valueOf(failureReportDO.getCreator()) : failureReportDO.getAssigneeUserId());
|
|
// notifyMessageSendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
|
|
// notifyMessageSendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
|
|
// .setUserId(failureReportDO.getAssigneeUserId()).setTemplateCode(PmsConstants.GENERATE_MAINTAIN).setTemplateParams(templateParams));
|
|
// .setUserId(failureReportDO.getAssigneeUserId()).setTemplateCode(PmsConstants.GENERATE_MAINTAIN).setTemplateParams(templateParams));
|
|
- if (Objects.nonNull(user)) {
|
|
|
|
- pmsMessage.sendMessage(iotMaintainDO.getId(), iotMaintainDO.getDeviceName(), PmsConstants.GENERATE_MAINTAIN, failureReportDO.getAssigneeUserId(), user.getMobile());
|
|
|
|
|
|
+ if (Objects.nonNull(user)) {
|
|
|
|
+ if (Objects.nonNull(failureReportDO.getAssigneeUserId())) {
|
|
|
|
+ pmsMessage.sendMessage(iotMaintainDO.getId(), iotMaintainDO.getDeviceName(), PmsConstants.GENERATE_MAINTAIN, failureReportDO.getAssigneeUserId(), user.getMobile());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (bpmResult ==3 ) {
|
|
|
|
+ //更新故障上报状态及审核状态
|
|
|
|
+ failureReportDO.setStatus("close");//关闭
|
|
|
|
+ failureReportDO.setAuditStatus(FailureAuditStatusEnum.REJECT.getStatus());
|
|
|
|
+ iotFailureReportMapper.insertOrUpdate(failureReportDO);
|
|
}
|
|
}
|
|
- } else if (bpmResult ==3 ) {
|
|
|
|
- //更新故障上报状态及审核状态
|
|
|
|
- IotFailureReportDO failureReportDO = iotFailureReportMapper.selectById(id);
|
|
|
|
|
|
+ } else {
|
|
|
|
+ //最终节点为否的情况下
|
|
|
|
+ //首先更新故障上报的状态
|
|
failureReportDO.setStatus("close");//关闭
|
|
failureReportDO.setStatus("close");//关闭
|
|
- failureReportDO.setAuditStatus(FailureAuditStatusEnum.REJECT.getStatus());
|
|
|
|
|
|
+ failureReportDO.setAuditStatus(FailureAuditStatusEnum.APPROVE.getStatus());
|
|
iotFailureReportMapper.insertOrUpdate(failureReportDO);
|
|
iotFailureReportMapper.insertOrUpdate(failureReportDO);
|
|
|
|
+ //更新设备状态为观察使用
|
|
|
|
+ Long deviceId = failureReportDO.getDeviceId();
|
|
|
|
+ IotDevicePersonRelationSaveReqVO statusVo = new IotDevicePersonRelationSaveReqVO();
|
|
|
|
+ statusVo.setDeviceId(deviceId);
|
|
|
|
+ statusVo.setStatus("gcsy");
|
|
|
|
+ statusVo.setReason("没有生成维修工单,设备状态调整为观察使用");
|
|
|
|
+ iotDevicePersonService.saveDeviceStatuses(ImmutableList.of(statusVo));
|
|
|
|
+ IotDevicePersonPageReqVO pageReqVO = new IotDevicePersonPageReqVO();
|
|
|
|
+ pageReqVO.setDeviceIds(ImmutableList.of(deviceId));
|
|
|
|
+ List<IotDevicePersonDO> persons = iotDevicePersonService.getPersonsByDeviceIds(pageReqVO);
|
|
|
|
+ persons.forEach(e ->{
|
|
|
|
+ AdminUserRespDTO userApiUser = adminUserApi.getUser(e.getPersonId());
|
|
|
|
+ if (Objects.nonNull(userApiUser)) {
|
|
|
|
+ pmsMessage.sendMessage(failureReportDO.getId(), failureReportDO.getDeviceCode()+failureReportDO.getDeviceName(), PmsConstants.FAILURE_NO_PASS, e.getPersonId(), userApiUser.getMobile());
|
|
|
|
+ }
|
|
|
|
+ });
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -142,8 +172,10 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
|
|
approvalIds.add(Long.parseLong(s));
|
|
approvalIds.add(Long.parseLong(s));
|
|
}
|
|
}
|
|
assigness.put("failure_approval", approvalIds);
|
|
assigness.put("failure_approval", approvalIds);
|
|
|
|
+ Map<String, Object> variable = new HashMap<>();
|
|
|
|
+ variable.put("continue", "0");
|
|
String processInstanceId = processInstanceApi.createProcessInstance(SecurityFrameworkUtils.getLoginUserId(),
|
|
String processInstanceId = processInstanceApi.createProcessInstance(SecurityFrameworkUtils.getLoginUserId(),
|
|
- new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY).setBusinessKey(String.valueOf(id)).setStartUserSelectAssignees(assigness));
|
|
|
|
|
|
+ new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY).setBusinessKey(String.valueOf(id)).setStartUserSelectAssignees(assigness).setVariables(variable));
|
|
// 将流程实例id 更新到 供应商主数据表
|
|
// 将流程实例id 更新到 供应商主数据表
|
|
iotFailureReportMapper.updateById(new IotFailureReportDO().setId(id).setProcessInstanceId(processInstanceId).setAuditStatus(FailureAuditStatusEnum.PROCESS.getStatus()));
|
|
iotFailureReportMapper.updateById(new IotFailureReportDO().setId(id).setProcessInstanceId(processInstanceId).setAuditStatus(FailureAuditStatusEnum.PROCESS.getStatus()));
|
|
return processInstanceId;
|
|
return processInstanceId;
|
|
@@ -211,6 +243,12 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
|
|
reportDO.setAssigneeUserId(processVO.getAssigneeUserId());
|
|
reportDO.setAssigneeUserId(processVO.getAssigneeUserId());
|
|
reportDO.setType(processVO.getType());
|
|
reportDO.setType(processVO.getType());
|
|
iotFailureReportMapper.insertOrUpdate(reportDO);
|
|
iotFailureReportMapper.insertOrUpdate(reportDO);
|
|
|
|
+ //修改设备状态为待维修
|
|
|
|
+ IotDevicePersonRelationSaveReqVO statusVo = new IotDevicePersonRelationSaveReqVO();
|
|
|
|
+ statusVo.setDeviceId(reportDO.getDeviceId());
|
|
|
|
+ statusVo.setStatus("dwx");
|
|
|
|
+ statusVo.setReason("生成维修工单,设备状态为待维修");
|
|
|
|
+ iotDevicePersonService.saveDeviceStatuses(ImmutableList.of(statusVo));
|
|
//sendMessage(reportDO);
|
|
//sendMessage(reportDO);
|
|
return reportDO.getId();
|
|
return reportDO.getId();
|
|
}
|
|
}
|