|
|
|
|
@ -667,32 +667,102 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// @Override
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
// public boolean taskRedeploy(DsTaskingDTO tasking) {
|
|
|
|
|
// // 1. 参数校验
|
|
|
|
|
// if (tasking == null || tasking.getTaskIds() == null) {
|
|
|
|
|
// throw new ServiceException("任务ID不能为空");
|
|
|
|
|
// }
|
|
|
|
|
// if (StringUtils.isEmpty(tasking.getCraftMan())) {
|
|
|
|
|
// throw new ServiceException("转派目标工艺员不能为空");
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // 2. 查询原任务信息
|
|
|
|
|
// DsTaskingEntity dsTaskingEntity = taskingMapper.selectById(tasking.getId());
|
|
|
|
|
// if (dsTaskingEntity == null) {
|
|
|
|
|
// throw new ServiceException("任务不存在");
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // 3. 校验任务状态
|
|
|
|
|
//// if (!TaskingConstant.TASK_STATUS_ALREADY.equals(dsTaskingEntity.getTaskStatus())) {
|
|
|
|
|
//// throw new ServiceException("任务状态为非待接收状态,禁止转派");
|
|
|
|
|
//// }
|
|
|
|
|
//
|
|
|
|
|
// // 4. 获取当前操作人(工艺分派人)
|
|
|
|
|
// String assignMan = AuthUtil.getUser().getUserName();
|
|
|
|
|
//
|
|
|
|
|
// // 5. 校验目标工艺员是否存在
|
|
|
|
|
// UserInfo craftUserInfo = userClient.userInfo(Func.toLong(tasking.getCraftMan())).getData();
|
|
|
|
|
// if (craftUserInfo == null || craftUserInfo.getUser() == null) {
|
|
|
|
|
// throw new ServiceException("目标工艺员不存在");
|
|
|
|
|
// }
|
|
|
|
|
// String craftMan = craftUserInfo.getUser().getRealName();
|
|
|
|
|
// Long craftManId = craftUserInfo.getUser().getId();
|
|
|
|
|
//
|
|
|
|
|
// // 6. 记录转派前的信息(便于日志记录)
|
|
|
|
|
// String oldCraftMan = dsTaskingEntity.getCraftMan();
|
|
|
|
|
//
|
|
|
|
|
// // 7. 更新任务信息
|
|
|
|
|
// dsTaskingEntity.setAssignMan(assignMan);
|
|
|
|
|
// dsTaskingEntity.setCraftMan(craftMan);
|
|
|
|
|
// dsTaskingEntity.setAssignTime(new Date());
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// int updateResult = taskingMapper.updateById(dsTaskingEntity);
|
|
|
|
|
// if (updateResult != 1) {
|
|
|
|
|
// throw new ServiceException("任务转派失败,请重试");
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // 8. 发送转派消息通知
|
|
|
|
|
// // 建议同时通知原工艺员和现工艺员
|
|
|
|
|
// try {
|
|
|
|
|
// // 通知新工艺员
|
|
|
|
|
// mesNotifyMessageService.saveMsg(
|
|
|
|
|
// BizTypeConstant.CRAFT_TASK_REDEPLOY,
|
|
|
|
|
// "工艺任务转派",
|
|
|
|
|
// "您有新的任务转派,请及时处理,零件号:"+tasking.getPartCode(),
|
|
|
|
|
// craftManId
|
|
|
|
|
// );
|
|
|
|
|
//
|
|
|
|
|
// // 可选:通知原工艺员任务已被转派
|
|
|
|
|
// if (!StringUtils.isEmpty(oldCraftMan)) {
|
|
|
|
|
// mesNotifyMessageService.saveMsg(
|
|
|
|
|
// BizTypeConstant.CRAFT_TASK_REDEPLOY,
|
|
|
|
|
// "工艺任务转派",
|
|
|
|
|
// "您的工艺任务已被转派,零件号: "+tasking.getPartCode(),
|
|
|
|
|
// Long.valueOf(oldCraftMan)
|
|
|
|
|
// );
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // 可选:记录操作日志
|
|
|
|
|
// log.info("任务转派成功,任务ID:{},原工艺员:{},新工艺员:{},操作人:{}",
|
|
|
|
|
// tasking.getId(), oldCraftMan, craftMan, assignMan);
|
|
|
|
|
// } catch (Exception e) {
|
|
|
|
|
// log.error("发送转派消息失败,任务ID:{}", tasking.getId(), e);
|
|
|
|
|
// // 消息发送失败不影响主流程,但需要记录日志
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// return true;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public boolean taskRedeploy(DsTaskingDTO tasking) { |
|
|
|
|
// 1. 参数校验
|
|
|
|
|
if (tasking == null || tasking.getId() == null) { |
|
|
|
|
throw new ServiceException("任务ID不能为空"); |
|
|
|
|
if (tasking == null || StringUtils.isEmpty(tasking.getTaskIds())) { |
|
|
|
|
throw new ServiceException("任务ID列表不能为空"); |
|
|
|
|
} |
|
|
|
|
if (StringUtils.isEmpty(tasking.getCraftMan())) { |
|
|
|
|
throw new ServiceException("转派目标工艺员不能为空"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 2. 查询原任务信息
|
|
|
|
|
DsTaskingEntity dsTaskingEntity = taskingMapper.selectById(tasking.getId()); |
|
|
|
|
if (dsTaskingEntity == null) { |
|
|
|
|
throw new ServiceException("任务不存在"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 3. 校验任务状态
|
|
|
|
|
// if (!TaskingConstant.TASK_STATUS_ALREADY.equals(dsTaskingEntity.getTaskStatus())) {
|
|
|
|
|
// throw new ServiceException("任务状态为非待接收状态,禁止转派");
|
|
|
|
|
// }
|
|
|
|
|
List<Long> taskIds = Func.toLongList(tasking.getTaskIds()); |
|
|
|
|
|
|
|
|
|
// 4. 获取当前操作人(工艺分派人)
|
|
|
|
|
// 2. 获取当前操作人(工艺分派人)
|
|
|
|
|
String assignMan = AuthUtil.getUser().getUserName(); |
|
|
|
|
|
|
|
|
|
// 5. 校验目标工艺员是否存在
|
|
|
|
|
// 3. 校验目标工艺员是否存在
|
|
|
|
|
UserInfo craftUserInfo = userClient.userInfo(Func.toLong(tasking.getCraftMan())).getData(); |
|
|
|
|
if (craftUserInfo == null || craftUserInfo.getUser() == null) { |
|
|
|
|
throw new ServiceException("目标工艺员不存在"); |
|
|
|
|
@ -700,50 +770,95 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas |
|
|
|
|
String craftMan = craftUserInfo.getUser().getRealName(); |
|
|
|
|
Long craftManId = craftUserInfo.getUser().getId(); |
|
|
|
|
|
|
|
|
|
// 6. 记录转派前的信息(便于日志记录)
|
|
|
|
|
// 4. 批量处理任务
|
|
|
|
|
int successCount = 0; |
|
|
|
|
int failCount = 0; |
|
|
|
|
List<Long> failTaskIds = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
for (Long taskId : taskIds) { |
|
|
|
|
try { |
|
|
|
|
processSingleTaskRedeploy(taskId, assignMan, craftMan, craftManId); |
|
|
|
|
successCount++; |
|
|
|
|
} catch (ServiceException e) { |
|
|
|
|
log.error("任务转派失败,任务ID:{},原因:{}", taskId, e.getMessage()); |
|
|
|
|
failCount++; |
|
|
|
|
failTaskIds.add(taskId); |
|
|
|
|
throw new ServiceException("任务转派失败,任务ID:" + taskId + "," + e.getMessage()); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("任务转派异常,任务ID:{}", taskId, e); |
|
|
|
|
failCount++; |
|
|
|
|
failTaskIds.add(taskId); |
|
|
|
|
throw new ServiceException("任务转派异常,任务ID:" + taskId + "," + e.getMessage()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 5. 记录批量操作结果日志
|
|
|
|
|
log.info("批量转派完成,成功:{}个,失败:{}个,失败任务ID:{},目标工艺员:{},操作人:{}", |
|
|
|
|
successCount, failCount, failTaskIds, craftMan, assignMan); |
|
|
|
|
|
|
|
|
|
return failCount == 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 处理单个任务转派 |
|
|
|
|
*/ |
|
|
|
|
private void processSingleTaskRedeploy(Long taskId, String assignMan, String craftMan, Long craftManId) { |
|
|
|
|
// 1. 查询原任务信息
|
|
|
|
|
DsTaskingEntity dsTaskingEntity = taskingMapper.selectById(taskId); |
|
|
|
|
if (dsTaskingEntity == null) { |
|
|
|
|
throw new ServiceException("任务不存在"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 2. 校验任务状态(如需校验,放开注释)
|
|
|
|
|
// if (!TaskingConstant.TASK_STATUS_ALREADY.equals(dsTaskingEntity.getTaskStatus())) {
|
|
|
|
|
// throw new ServiceException("任务状态为非待接收状态,禁止转派");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// 3. 记录转派前的信息
|
|
|
|
|
String oldCraftMan = dsTaskingEntity.getCraftMan(); |
|
|
|
|
String partCode = dsTaskingEntity.getPartCode(); |
|
|
|
|
|
|
|
|
|
// 7. 更新任务信息
|
|
|
|
|
// 4. 更新任务信息
|
|
|
|
|
dsTaskingEntity.setAssignMan(assignMan); |
|
|
|
|
dsTaskingEntity.setCraftMan(craftMan); |
|
|
|
|
dsTaskingEntity.setAssignTime(new Date()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int updateResult = taskingMapper.updateById(dsTaskingEntity); |
|
|
|
|
if (updateResult != 1) { |
|
|
|
|
throw new ServiceException("任务转派失败,请重试"); |
|
|
|
|
throw new ServiceException("更新任务失败"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 8. 发送转派消息通知
|
|
|
|
|
// 建议同时通知原工艺员和现工艺员
|
|
|
|
|
// 5. 发送转派消息通知
|
|
|
|
|
sendRedeployNotification(taskId, oldCraftMan, craftManId, partCode); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 发送转派消息通知 |
|
|
|
|
*/ |
|
|
|
|
private void sendRedeployNotification(Long taskId, String oldCraftMan, Long craftManId, String partCode) { |
|
|
|
|
try { |
|
|
|
|
// 通知新工艺员
|
|
|
|
|
mesNotifyMessageService.saveMsg( |
|
|
|
|
BizTypeConstant.CRAFT_TASK_REDEPLOY, |
|
|
|
|
"工艺任务转派", |
|
|
|
|
"您有新的任务转派,请及时处理,零件号:"+tasking.getPartCode(), |
|
|
|
|
"您有新的任务转派,请及时处理,零件号:" + partCode, |
|
|
|
|
craftManId |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// 可选:通知原工艺员任务已被转派
|
|
|
|
|
// 通知原工艺员任务已被转派
|
|
|
|
|
if (!StringUtils.isEmpty(oldCraftMan)) { |
|
|
|
|
mesNotifyMessageService.saveMsg( |
|
|
|
|
BizTypeConstant.CRAFT_TASK_REDEPLOY, |
|
|
|
|
"工艺任务转派", |
|
|
|
|
"您的工艺任务已被转派,零件号: "+tasking.getPartCode(), |
|
|
|
|
"您的工艺任务已被转派,零件号: " + partCode, |
|
|
|
|
Long.valueOf(oldCraftMan) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 可选:记录操作日志
|
|
|
|
|
log.info("任务转派成功,任务ID:{},原工艺员:{},新工艺员:{},操作人:{}", |
|
|
|
|
tasking.getId(), oldCraftMan, craftMan, assignMan); |
|
|
|
|
log.info("任务转派成功,任务ID:{},原工艺员:{},新工艺员:{},零件号:{}", taskId, oldCraftMan, craftManId, partCode); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("发送转派消息失败,任务ID:{}", tasking.getId(), e); |
|
|
|
|
// 消息发送失败不影响主流程,但需要记录日志
|
|
|
|
|
log.error("发送转派消息失败,任务ID:{}", taskId, e); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|