|
|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package cn.iocoder.yudao.module.mes.controller.admin.task;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
|
|
|
@ -7,11 +8,15 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
|
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanSaveReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanStatusEnum;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.task.vo.*;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDetailDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.task.ViewTaskProductSummary;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.mysql.plan.PlanMapper;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.task.TaskService;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
|
|
|
import io.swagger.v3.oas.annotations.media.Schema;
|
|
|
|
|
@ -26,8 +31,8 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
import javax.validation.Valid;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
|
|
|
@ -40,6 +45,8 @@ public class TaskController {
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private TaskService taskService;
|
|
|
|
|
@Resource
|
|
|
|
|
private PlanMapper planMapper;
|
|
|
|
|
|
|
|
|
|
@PostMapping("/create")
|
|
|
|
|
@Operation(summary = "创建生产任务单")
|
|
|
|
|
@ -108,9 +115,53 @@ public class TaskController {
|
|
|
|
|
@PreAuthorize("@ss.hasPermission('mes:task:query')")
|
|
|
|
|
public CommonResult<PageResult<TaskRespVO>> pagePlanTask(@Valid TaskPageReqVO pageReqVO) {
|
|
|
|
|
PageResult<TaskDO> pageResult = taskService.getTaskPage2(pageReqVO);
|
|
|
|
|
return success(BeanUtils.toBean(pageResult, TaskRespVO.class));
|
|
|
|
|
PageResult<TaskRespVO> respPage = BeanUtils.toBean(pageResult, TaskRespVO.class);
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isEmpty(respPage.getList())) {
|
|
|
|
|
return success(respPage);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Set<Long> taskIds = respPage.getList().stream()
|
|
|
|
|
.map(TaskRespVO::getId)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.collect(Collectors.toSet());
|
|
|
|
|
|
|
|
|
|
Map<Long, Long> storedPlanNumberMap = new HashMap<>();
|
|
|
|
|
Map<Long, Long> totalNumberMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(taskIds)) {
|
|
|
|
|
// 1) 已入库计划数量总和
|
|
|
|
|
List<PlanDO> storedPlans = planMapper.selectList(
|
|
|
|
|
Wrappers.<PlanDO>lambdaQuery()
|
|
|
|
|
.in(PlanDO::getTaskId, taskIds)
|
|
|
|
|
.eq(PlanDO::getStatus, PlanStatusEnum.已入库.getValue())
|
|
|
|
|
.eq(PlanDO::getDeleted, false)
|
|
|
|
|
);
|
|
|
|
|
storedPlanNumberMap = storedPlans.stream()
|
|
|
|
|
.collect(Collectors.groupingBy(
|
|
|
|
|
PlanDO::getTaskId,
|
|
|
|
|
Collectors.summingLong(p -> p.getPlanNumber() == null ? 0L : p.getPlanNumber())
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
// 2) 任务明细总数量
|
|
|
|
|
List<TaskDetailDO> detailList = taskService.getTaskDetailListByTaskIds(taskIds);
|
|
|
|
|
totalNumberMap = detailList.stream()
|
|
|
|
|
.collect(Collectors.groupingBy(
|
|
|
|
|
TaskDetailDO::getTaskId,
|
|
|
|
|
Collectors.summingLong(d -> d.getNumber() == null ? 0L : d.getNumber())
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (TaskRespVO item : respPage.getList()) {
|
|
|
|
|
Long taskId = item.getId();
|
|
|
|
|
item.setStoredPlanNumber(storedPlanNumberMap.getOrDefault(taskId, 0L));
|
|
|
|
|
item.setTotalNumber(totalNumberMap.getOrDefault(taskId, 0L));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return success(respPage);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@GetMapping("/page")
|
|
|
|
|
@Operation(summary = "获得生产任务单分页")
|
|
|
|
|
@PreAuthorize("@ss.hasPermission('mes:task:query')")
|
|
|
|
|
|