diff --git a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsBillsFaultInstanceController.java b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsBillsFaultInstanceController.java index 894a717..05ef38d 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsBillsFaultInstanceController.java +++ b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsBillsFaultInstanceController.java @@ -122,6 +122,16 @@ public class DmsBillsFaultInstanceController extends BaseController return toAjax(dmsBillsFaultInstanceService.updateDmsBillsFaultInstance(dmsBillsFaultInstance)); } + /** + * 指定派工 + */ + @PreAuthorize("@ss.hasPermi('dms:dmsBillsFaultInstance:edit')") + @PostMapping("/dispatch") + public AjaxResult dispatch(@RequestBody DmsFaultInstanceActivity dmsFaultInstanceActivity) + { + return toAjax(dmsBillsFaultInstanceService.dispatchRepair(dmsFaultInstanceActivity)); + } + /** * 删除检修工单 */ diff --git a/aucma-dms/src/main/java/com/aucma/dms/domain/DmsFaultInstanceActivity.java b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsFaultInstanceActivity.java index 874c141..1f17bc8 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/domain/DmsFaultInstanceActivity.java +++ b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsFaultInstanceActivity.java @@ -70,6 +70,9 @@ public class DmsFaultInstanceActivity extends DmsBaseEntity @Excel(name = "工单流程步骤顺序") private Long processStepOrder; + // 非持久化字段,用于前端显示“任务”名称 + private String processActivityName; + /** 执行开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "执行开始时间", width = 30, dateFormat = "yyyy-MM-dd") diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/IDmsBillsFaultInstanceService.java b/aucma-dms/src/main/java/com/aucma/dms/service/IDmsBillsFaultInstanceService.java index d996aea..561898d 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/service/IDmsBillsFaultInstanceService.java +++ b/aucma-dms/src/main/java/com/aucma/dms/service/IDmsBillsFaultInstanceService.java @@ -103,6 +103,14 @@ public interface IDmsBillsFaultInstanceService */ public int startRepair(DmsFaultInstanceActivity dmsFaultInstanceActivity); + /** + * 指定派工 + * + * @param dmsFaultInstanceActivity 报修工单实例节点(需包含 repairInstanceId、handleUserId、handleBy) + * @return 结果 + */ + public int dispatchRepair(DmsFaultInstanceActivity dmsFaultInstanceActivity); + /** * 完成维修 * diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java index cd4ca5a..5ca3598 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java +++ b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java @@ -79,6 +79,17 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS activity.setHandleTime(dmsBillsFaultInstance.getApplyTime()); } } + + // 设置任务名称,避免前端“任务”列为空 + if (activity.getProcessStepOrder() != null) { + if (activity.getProcessStepOrder() == 1L) { + activity.setProcessActivityName("报修"); + } else if (activity.getProcessStepOrder() == 2L) { + activity.setProcessActivityName("维修"); + } else { + activity.setProcessActivityName("步骤" + activity.getProcessStepOrder()); + } + } } } @@ -469,22 +480,41 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS dmsBillsFaultInstance.setUpdateTime(currentDate); dmsBillsFaultInstance.setUpdateBy(SecurityUtils.getUserId()); dmsBillsFaultInstanceMapper.updateDmsBillsFaultInstance(dmsBillsFaultInstance); - - dmsFaultInstanceActivity.setRepairInstanceId(dmsBillsFaultInstance.getRepairInstanceId()); - // 已废弃审批流功能 - 设置固定值或注释 - // dmsFaultInstanceActivity.setProcessActivityId(WfConstants.WF_BILLS_FAULT_INSTANCE_PROCESS_ACTIVITY_SECOND_ID); - dmsFaultInstanceActivity.setProcessActivityId(2L); // 临时设置固定值 - dmsFaultInstanceActivity.setDeviceId(dmsBillsFaultInstance.getDeviceId()); - dmsFaultInstanceActivity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_EXECUTING); - dmsFaultInstanceActivity.setProcessStepOrder(2L); - dmsFaultInstanceActivity.setStartTime(currentDate); - dmsFaultInstanceActivity.setHandleUserId(SecurityUtils.getUserId()); - dmsFaultInstanceActivity.setHandleBy(userName); - dmsFaultInstanceActivity.setHandleTime(currentDate); - dmsFaultInstanceActivity.setCreateBy(SecurityUtils.getUserId()); - dmsFaultInstanceActivity.setCreateTime(currentDate); - - dmsFaultInstanceActivityMapper.insertDmsFaultInstanceActivity(dmsFaultInstanceActivity); + // 若已存在第2步(派工后),则改为执行中;否则新增第2步 + DmsFaultInstanceActivity query = new DmsFaultInstanceActivity(); + query.setRepairInstanceId(dmsBillsFaultInstance.getRepairInstanceId()); + query.setProcessStepOrder(2L); + List step2List = dmsFaultInstanceActivityMapper.selectDmsFaultInstanceActivityList(query); + if (!CollectionUtils.isEmpty(step2List)) { + DmsFaultInstanceActivity updateStep2 = new DmsFaultInstanceActivity(); + updateStep2.setInstanceActivityId(step2List.get(0).getInstanceActivityId()); + updateStep2.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_EXECUTING); + updateStep2.setStartTime(currentDate); + // 若未指定执行人,默认当前人 + if (step2List.get(0).getHandleUserId() == null) { + updateStep2.setHandleUserId(SecurityUtils.getUserId()); + updateStep2.setHandleBy(userName); + } + updateStep2.setHandleTime(currentDate); + updateStep2.setUpdateBy(SecurityUtils.getUserId()); + updateStep2.setUpdateTime(currentDate); + dmsFaultInstanceActivityMapper.updateDmsFaultInstanceActivity(updateStep2); + } else { + dmsFaultInstanceActivity.setRepairInstanceId(dmsBillsFaultInstance.getRepairInstanceId()); + // 已废弃审批流功能 - 设置固定值或注释 + // dmsFaultInstanceActivity.setProcessActivityId(WfConstants.WF_BILLS_FAULT_INSTANCE_PROCESS_ACTIVITY_SECOND_ID); + dmsFaultInstanceActivity.setProcessActivityId(2L); // 临时设置固定值 + dmsFaultInstanceActivity.setDeviceId(dmsBillsFaultInstance.getDeviceId()); + dmsFaultInstanceActivity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_EXECUTING); + dmsFaultInstanceActivity.setProcessStepOrder(2L); + dmsFaultInstanceActivity.setStartTime(currentDate); + dmsFaultInstanceActivity.setHandleUserId(SecurityUtils.getUserId()); + dmsFaultInstanceActivity.setHandleBy(userName); + dmsFaultInstanceActivity.setHandleTime(currentDate); + dmsFaultInstanceActivity.setCreateBy(SecurityUtils.getUserId()); + dmsFaultInstanceActivity.setCreateTime(currentDate); + dmsFaultInstanceActivityMapper.insertDmsFaultInstanceActivity(dmsFaultInstanceActivity); + } DmsFaultInstanceActivity firstInstanceActivity = new DmsFaultInstanceActivity(); firstInstanceActivity.setInstanceActivityId(dmsBillsFaultInstance.getInstanceActivityId()); @@ -501,6 +531,72 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS return 1; } + /** + * 指定派工:为某工单的第2步设置执行人,状态置为待接取;若不存在第2步则创建 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int dispatchRepair(DmsFaultInstanceActivity dmsFaultInstanceActivity) { + if (dmsFaultInstanceActivity == null || dmsFaultInstanceActivity.getRepairInstanceId() == null) { + throw new ServiceException("参数错误"); + } + DmsBillsFaultInstance bills = dmsBillsFaultInstanceMapper + .selectDmsBillsFaultInstanceByRepairInstanceId(dmsFaultInstanceActivity.getRepairInstanceId()); + if (bills == null) { + throw new ServiceException("工单不存在"); + } + if (DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_FINISH.equals(bills.getBillsStatus())) { + throw new ServiceException("工单已完成,无法派工"); + } + + Date now = new Date(); + String userName = SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getUser().getNickName(); + Long handleUserId = dmsFaultInstanceActivity.getHandleUserId(); + String handleBy = dmsFaultInstanceActivity.getHandleBy(); + if (handleUserId == null) { + handleUserId = SecurityUtils.getUserId(); + } + if (StringUtils.isBlank(handleBy)) { + handleBy = userName; + } + + // 查找第2步 + DmsFaultInstanceActivity query = new DmsFaultInstanceActivity(); + query.setRepairInstanceId(bills.getRepairInstanceId()); + query.setProcessStepOrder(2L); + List step2List = dmsFaultInstanceActivityMapper.selectDmsFaultInstanceActivityList(query); + if (!CollectionUtils.isEmpty(step2List)) { + DmsFaultInstanceActivity exist = step2List.get(0); + // 已在执行或已结束则不允许派工 + if (DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_EXECUTING.equals(exist.getProcessHandleStatus()) + || DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_FINISH.equals(exist.getProcessHandleStatus())) { + throw new ServiceException("当前状态不可派工"); + } + DmsFaultInstanceActivity update = new DmsFaultInstanceActivity(); + update.setInstanceActivityId(exist.getInstanceActivityId()); + update.setHandleUserId(handleUserId); + update.setHandleBy(handleBy); + update.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_TO_PICK); + update.setUpdateBy(SecurityUtils.getUserId()); + update.setUpdateTime(now); + dmsFaultInstanceActivityMapper.updateDmsFaultInstanceActivity(update); + } else { + // 创建第2步,待接取 + DmsFaultInstanceActivity create = new DmsFaultInstanceActivity(); + create.setRepairInstanceId(bills.getRepairInstanceId()); + create.setProcessActivityId(2L); + create.setDeviceId(bills.getDeviceId()); + create.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_TO_PICK); + create.setProcessStepOrder(2L); + create.setHandleUserId(handleUserId); + create.setHandleBy(handleBy); + create.setCreateBy(SecurityUtils.getUserId()); + create.setCreateTime(now); + dmsFaultInstanceActivityMapper.insertDmsFaultInstanceActivity(create); + } + return 1; + } + @Override public List getDmsPartsList(Long repairInstanceId) {