feat(dms): 新增指定派工功能并优化任务名称显示

- 在控制器中新增 /dispatch 接口用于指定派工操作-为 DmsFaultInstanceActivity 实体类添加非持久化字段 processActivityName
- 根据步骤顺序设置默认的任务名称,避免前端显示为空
-优化派工逻辑:若第2步已存在则更新状态和执行人,否则新建该步骤- 新增 dispatchRepair 方法实现完整的派工业务逻辑与校验规则
- 完善接口权限控制及参数合法性检查- 支持自动填充当前用户作为默认执行人- 状态管理细化,确保只有符合条件的状态才允许派工操作
master
zangch@mesnac.com 1 month ago
parent 94967ea1b3
commit f94e8e8cd7

@ -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));
}
/**
*
*/

@ -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")

@ -103,6 +103,14 @@ public interface IDmsBillsFaultInstanceService
*/
public int startRepair(DmsFaultInstanceActivity dmsFaultInstanceActivity);
/**
*
*
* @param dmsFaultInstanceActivity repairInstanceIdhandleUserIdhandleBy
* @return
*/
public int dispatchRepair(DmsFaultInstanceActivity dmsFaultInstanceActivity);
/**
*
*

@ -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<DmsFaultInstanceActivity> 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;
}
/**
* 22
*/
@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<DmsFaultInstanceActivity> 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<DmsFaultCompentsParts> getDmsPartsList(Long repairInstanceId) {

Loading…
Cancel
Save