From c5853051ea1f5bceda5d93558046086b5de480c9 Mon Sep 17 00:00:00 2001 From: liweidong-hj Date: Tue, 19 May 2026 17:12:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E8=BD=AC=E6=B4=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/dashboard/pojo/dto/DsTaskingDTO.java | 3 + .../desk/order/pojo/entity/AssayContent.java | 4 +- .../controller/DsTaskingController.java | 7 +- .../service/impl/DsTaskingServiceImpl.java | 175 +++++++++++++++--- .../controller/OrderBoxController.java | 4 +- .../service/impl/TaskServiceImpl.java | 6 +- 6 files changed, 157 insertions(+), 42 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskingDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskingDTO.java index cf1592b10..cf6abc7e1 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskingDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskingDTO.java @@ -29,6 +29,7 @@ import org.springblade.desk.dashboard.pojo.entity.DsTaskingEntity; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; +import java.util.List; /** * 任务分派表 数据传输对象实体类 @@ -47,4 +48,6 @@ public class DsTaskingDTO extends DsTaskingEntity { */ private String taskId; + private String taskIds; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContent.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContent.java index 9d00e3d35..56dc340af 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContent.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContent.java @@ -36,8 +36,8 @@ public class AssayContent extends BaseEntity { /** * 化验时间 */ - @DateTimeFormat(pattern = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField(value = "ASSAY_TIME") private Date assayTime; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java index 9b0401232..5122d69cd 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java @@ -214,14 +214,13 @@ public class DsTaskingController extends BladeController { return R.status(dsTaskingService.taskReception(taskId)); } - /** - * 任务转派 + * 批量任务转派 */ - @PostMapping("/taskRedeploy") + @PostMapping("/batch-taskRedeploy") @ApiOperationSupport(order = 4) @Operation(summary = "任务转派") - public R taskRedeploy( @RequestBody DsTaskingDTO tasking) { + public R batchTaskRedeploy( @RequestBody DsTaskingDTO tasking) { return R.status(dsTaskingService.taskRedeploy(tasking)); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java index b1da5329e..8cfb6dfff 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java @@ -667,32 +667,102 @@ public class DsTaskingServiceImpl extends BaseServiceImpl 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 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 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java index 36d51187a..f1467dd81 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java @@ -175,8 +175,8 @@ public class OrderBoxController extends BladeController { @PostMapping("/task-closed") @ApiOperationSupport(order = 11) @Operation( - summary = "详情", - description = "显示任务对应的物料和执行记录" + summary = "任务关闭", + description = "关闭当前任务,修改任务状态" ) public R taskClosed(@RequestBody TaskDetailsDto taskDetailsDto) { return R.data(taskService.taskClosed(taskDetailsDto)); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskServiceImpl.java index 412d424e5..f6543b53d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskServiceImpl.java @@ -95,8 +95,6 @@ public class TaskServiceImpl extends BaseServiceImpl implement @Autowired ILocationService locationService; - @Autowired - ITaskService taskService; @Override public void savePipelineWeigh(String boxBarcode, BigDecimal actualWeight, Integer statusStart) { @@ -245,7 +243,7 @@ public class TaskServiceImpl extends BaseServiceImpl implement } // 2. 查询任务 - Task task = taskService.getById(taskDetailsDto.getTaskId()); + Task task = this.getById(taskDetailsDto.getTaskId()); if (task == null) { throw new ServiceException("任务不存在, taskId: " + taskDetailsDto.getTaskId()); } @@ -258,7 +256,7 @@ public class TaskServiceImpl extends BaseServiceImpl implement // 4. 关闭任务 task.setTaskStatus(Task.STATUS_FINISHED); - return taskService.updateById(task); + return this.updateById(task); } /**