Merge branch 'liweidong'

liweidong
liweidong-hj 2 weeks ago
commit c39f7af3c7
  1. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskingDTO.java
  2. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContent.java
  3. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java
  4. 175
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java
  5. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java
  6. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskServiceImpl.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;
}

@ -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;

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

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

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

@ -95,8 +95,6 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> 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<TaskMapper, Task> 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<TaskMapper, Task> implement
// 4. 关闭任务
task.setTaskStatus(Task.STATUS_FINISHED);
return taskService.updateById(task);
return this.updateById(task);
}
/**

Loading…
Cancel
Save