diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/TaskItemNeedController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/TaskItemNeedController.java new file mode 100644 index 0000000000..bea8b1580d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/TaskItemNeedController.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.module.mes.controller.admin.task; + +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; +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.erp.service.product.ErpProductService; +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.service.bom.BomService; +import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemAnalysisService; +import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitionAndStock; +import cn.iocoder.yudao.module.mes.service.plan.PlanService; +import cn.iocoder.yudao.module.mes.service.task.TaskService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 生产任务单") +@RestController +@RequestMapping("/mes/task") +@Validated +public class TaskItemNeedController { + + @Resource + private TaskService taskService; + @Resource + private PlanService planService; + @Resource + private ErpProductService productService; + @Resource + private BomService bomService; + @Resource + private ItemAnalysisService itemAnalysisService; + + @GetMapping("/item-need/order") + @Operation(summary = "获得某订单所需物料数量") + @Parameter(name = "orderId", description = "订单编号", required = true) + public CommonResult> getProductItemNeed(@RequestParam("orderId") Long orderId) { + List list = itemAnalysisService.getItemAnalysis(orderId); + return success(list); + } + + @GetMapping("/item-need/task") + @Operation(summary = "获得生产任务单所需物料") + @Parameter(name = "taskId", description = "任务编号", required = true) + public CommonResult> getTaskItemNeed(@RequestParam("taskId") Long taskId) { + TaskDO task = taskService.getTask(taskId); + List list = itemAnalysisService.getItemAnalysis(task); + return success(list); + } + @GetMapping("/item-need/plan") + @Operation(summary = "获得生产计划所需物料") + @Parameter(name = "planId", description = "计划编号", required = true) + public CommonResult< List> getPlanItemNeed(@RequestParam("planId") Long planId) { + PlanDO plan = planService.getPlan(planId); + List list = itemAnalysisService.getItemAnalysis(plan); + return success(list); + } + @GetMapping("/item-need/product") + @Operation(summary = "获得某产品数量所需物料数量") + @Parameter(name = "productId", description = "任务编号", required = true) + public CommonResult> getProductItemNeed(@RequestParam("productId") Long productId, + @RequestParam("number") Long number) { + List list = itemAnalysisService.getItemAnalysis(productId,number); + return success(list); + } +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemAnalysisService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemAnalysisService.java index f78e9b453e..35f76c8469 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemAnalysisService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemAnalysisService.java @@ -35,12 +35,13 @@ public interface ItemAnalysisService { * @return 物料需求 */ public List getItemAnalysis(PlanDO plan); + List getItemAnalysis(Long productId, Long number); /** * 分析销售单的物料需求 * - * @param saleOrderDO 销售单 + * @param orderId 销售单 * @return 物料需求 */ - public List getItemAnalysis(ErpSaleOrderDO saleOrderDO); + public List getItemAnalysis(Long orderId); } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemAnalysisServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemAnalysisServiceImpl.java index 6117ba2184..91c9e4656a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemAnalysisServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemAnalysisServiceImpl.java @@ -96,9 +96,16 @@ public class ItemAnalysisServiceImpl implements ItemAnalysisService { //分析计划的物料需求 @Override public List getItemAnalysis(PlanDO plan) { + List list = getItemAnalysis(plan.getProductId(), plan.getPlanNumber()); + return list; + } + //分析计划的物料需求 + @Override + public List getItemAnalysis(Long productId, Long number) { List list = new ArrayList<>(); + if(productId ==null || number==null )return list; List bomDetailDOList = - bomService.getBomDetailListByProductId(plan.getProductId(), plan.getPlanNumber()); + bomService.getBomDetailListByProductId(productId, number); for (BomDetailDO bomDetail : bomDetailDOList) { Long itemId = bomDetail.getProductId(); ItemRequisitionAndStock temp = new ItemRequisitionAndStock() @@ -111,12 +118,13 @@ public class ItemAnalysisServiceImpl implements ItemAnalysisService { temp.setStockWorkshopNumber(stockWorkshopCount); list.add(temp); } + list = buildDetailVOList(list); return list; } - @Override - public List getItemAnalysis(ErpSaleOrderDO saleOrderDO) { - List detailDOList = saleOrderService.getSaleOrderItemListByOrderId(saleOrderDO.getId()); + public List getItemAnalysis(Long orderId) { + List detailDOList = saleOrderService.getSaleOrderItemListByOrderId(orderId); + if(orderId ==null)return new ArrayList<>(); Map itemMap = new HashMap<>(); //算物料需求 for (ErpSaleOrderItemDO detail :detailDOList) { diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java index 3bfc636278..ccc921e8ed 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java @@ -167,10 +167,10 @@ public class TaskServiceImpl implements TaskService { // List resultList = taskDetailMapper.selectSumListByTaskId(taskId); // System.out.println(Arrays.toString(resultList.toArray())); List summaryList = summaryMapper.selectListByTaskId(taskId); - for (ViewTaskProductSummary summary:summaryList) { - Long planTotalNumber = planMapper.selectSum(summary.getTaskId(),summary.getProductId(),null); - summary.setPlanNumber(planTotalNumber); - } +// for (ViewTaskProductSummary summary:summaryList) { +// Long planTotalNumber = planMapper.selectSum(summary.getTaskId(),summary.getProductId(),null); +// summary.setPlanNumber(planTotalNumber); +// } return summaryList; } private List buildDetailVOList(List list) {