fix:修复任务单状态问题

ck
HuangHuiKang 1 month ago
parent 75408b486b
commit 4935872568

@ -293,61 +293,70 @@ public class PlanController {
@PreAuthorize("@ss.hasPermission('mes:plan:update')")
public CommonResult<Boolean> updatePlanStatus(@Valid @RequestBody PlanStatusUpdateVO statusUpdateVO) {
PlanDO planDO = planMapper.selectById(statusUpdateVO.getId());
// 试产
if ("pre".equals(statusUpdateVO.getCode())) {
planDO.setStatus(PlanStatusEnum..getValue());
if (planDO == null) {
return success(false);
}
//开工
if ("start".equals(statusUpdateVO.getCode())) {
String code = statusUpdateVO.getCode();
// 1) 先处理计划状态
if ("pre".equals(code)) {
planDO.setStatus(PlanStatusEnum..getValue());
} else if ("start".equals(code)) {
planDO.setStatus(PlanStatusEnum..getValue());
}
//暂停
else if ("pause".equals(statusUpdateVO.getCode())) {
} else if ("pause".equals(code)) {
planDO.setStatus(PlanStatusEnum..getValue());
}
//完工
else if ("end".equals(statusUpdateVO.getCode())) {
} else if ("end".equals(code)) {
planDO.setStatus(PlanStatusEnum..getValue());
}
// 入库
else if ("store".equals(statusUpdateVO.getCode())) {
} else if ("store".equals(code)) {
planDO.setStatus(PlanStatusEnum..getValue());
} else if ("commence".equals(code)) {
planDO.setStatus(PlanStatusEnum..getValue());
}
// 2) 先落库计划状态store 最后一条判断依赖这个)
planMapper.updateById(planDO);
// 3) 入库后创建入库单
if ("store".equals(code)) {
planService.createPlanStockIn(statusUpdateVO, planDO);
}
// 4) 任务状态联动
if (planDO.getTaskId() != null) {
TaskDO taskDO = taskService.getTask(planDO.getTaskId());
if (taskDO != null) {
// 条件1任务单已完成排产按你的字段通常 isScheduled == 1
// commence -> 生产中
if ("commence".equals(code)) {
taskDO.setStatus(TaskStatusEnum..getValue());
taskService.updateTask(taskDO);
}
// store -> 满足条件则已完成
if ("store".equals(code)) {
boolean scheduledFinished = Integer.valueOf(1).equals(taskDO.getIsScheduled());
// 条件2任务单下所有计划都为入库
List<PlanDO> planList = planMapper.selectList(
Wrappers.<PlanDO>lambdaQuery()
.eq(PlanDO::getTaskId, planDO.getTaskId())
);
boolean allPlanFinished = !planList.isEmpty() && planList.stream()
boolean allPlanStored = !planList.isEmpty() && planList.stream()
.allMatch(p -> Integer.valueOf(PlanStatusEnum..getValue()).equals(p.getStatus()));
if (scheduledFinished && allPlanFinished) {
taskDO.setStatus(TaskStatusEnum..getValue()); // 10-已完成
if (scheduledFinished && allPlanStored) {
taskDO.setStatus(TaskStatusEnum..getValue());
taskService.updateTask(taskDO);
}
}
}
else if ("commence".equals(statusUpdateVO.getCode())) {
planDO.setStatus(PlanStatusEnum..getValue());
// 修改任务单状态为生产中
TaskDO taskDO = taskService.getTask(planDO.getTaskId());
if (taskDO != null) {
taskDO.setStatus(TaskStatusEnum..getValue());
taskService.updateTask(taskDO);
}
}
planMapper.updateById(planDO);
return success(true);
}
@PutMapping("/updatePlanZjStatus")
@Operation(summary = "更新生产计划质检状态")
@PreAuthorize("@ss.hasPermission('mes:plan:update')")

@ -205,20 +205,21 @@ public class PlanServiceImpl implements PlanService {
TaskDO task = taskService.getTask(plan.getTaskId());
if (task != null) {
// 9-生产中:不改状态
if (!TaskStatusEnum..getValue().equals(task.getStatus())) {
// 先默认改为 7-部分排产
Integer newStatus = TaskStatusEnum..getValue();
boolean fullyScheduled = totalNeed > 0 && totalPlanned >= totalNeed;
// 满足条件则改为 8-待生产
if (totalNeed > 0 && totalPlanned >= totalNeed) {
newStatus = TaskStatusEnum..getValue();
task.setIsScheduled(1); // 你原有逻辑保留
// 1) 完成排产标记:满足条件就更新(与是否生产中无关)
if (fullyScheduled) {
task.setIsScheduled(1);
}
task.setStatus(newStatus);
taskService.updateTask(task);
// 2) 状态:生产中(9)不改否则按条件改为7/8
if (!TaskStatusEnum..getValue().equals(task.getStatus())) {
task.setStatus(fullyScheduled
? TaskStatusEnum..getValue()
: TaskStatusEnum..getValue());
}
taskService.updateTask(task);
}

Loading…
Cancel
Save