diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java index 66a530b2..d2a2cc3b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java @@ -205,11 +205,12 @@ public class ProjectOrderController { //材料成本 BigDecimal materialCost; materialCost=processBomService.materialCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); + projectOrderDO.setCailiaoCost(materialCost); + //内部工时费 BigDecimal internalLaborCost; internalLaborCost=processBomService.internalLaborCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); projectOrderDO.setNeibuCost(internalLaborCost); - projectOrderDO.setCailiaoCost(materialCost.add(outsourcedProcessingFee).add(internalLaborCost)); //装配工时费 BigDecimal assemblyLaborCost; assemblyLaborCost=processBomService.assemblyLaborCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); @@ -220,7 +221,7 @@ public class ProjectOrderController { yunFeiCost = deliverOrderService.getListYf(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); projectOrderDO.setYunFeiCost(yunFeiCost); - BigDecimal sum = projectOrderDO.getYunFeiCost().add(projectOrderDO.getCailiaoCost()).add(projectOrderDO.getBiaoZhunJianCost()).add(projectOrderDO.getZpCost()); + BigDecimal sum = projectOrderDO.getYunFeiCost().add(projectOrderDO.getCailiaoCost()).add(projectOrderDO.getBiaoZhunJianCost()).add(projectOrderDO.getZpCost().add(projectOrderDO.getNeibuCost()).add(projectOrderDO.getWaixeiCost())); projectOrderDO.setSumCost(sum); } return success(BeanUtils.toBean(pageResult, ProjectOrderCostRespVO.class)); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java index e5418310..22000807 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java @@ -274,12 +274,26 @@ public class TaskDispatchController { return success( list); } @GetMapping("/getListCl") - @Operation(summary = "获得材料成本") + @Operation(summary = "获得外部材料成本") @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") public CommonResult> getListCl(@RequestParam("id") Long id, @RequestParam("projectSubId") Long projectSubId ) { List list= taskDispatchService.getListCl(id,projectSubId); return success( list); } + @GetMapping("/getListNg") + @Operation(summary = "获得内部工时费") + @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") + public CommonResult> getListNg(@RequestParam("id") Long id, @RequestParam("projectSubId") Long projectSubId ) { + List list= taskDispatchService.getListNg(id,projectSubId); + return success( list); + } + @GetMapping("/getListNc") + @Operation(summary = "获得内部材料成本") + @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") + public CommonResult> getListNc(@RequestParam("id") Long id, @RequestParam("projectSubId") Long projectSubId ) { + List list= taskDispatchService.getListNc(id,projectSubId); + return success( list); + } @GetMapping("/taskBbPage") @Operation(summary = "获得外协零件分页") @PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java index 62050577..15330be5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java @@ -221,4 +221,6 @@ public interface ProcessBomMapper extends BaseMapperX { BigDecimal outsourcingExpenses(@Param("id") Long id,@Param("projectSubId") Long projectSubId); @Delete("delete from pro_process_bom where project_id=#{id}") void deleteOrderId(@Param("id") Long id); + + BigDecimal cuttingMaterials(@Param("id") Long id, @Param("projectSubId")Long projectSubId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index 8c6515a6..884cdf9a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -1037,4 +1037,15 @@ public interface TaskDispatchDetailMapper extends BaseMapperX getTaskDispatchDetails(List dispatchIds){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(TaskDispatchDetailDO.class) + .leftJoin(ProcedureDO.class,"p", ProcedureDO::getId, TaskDispatchDetailDO::getProcedureId); + query.in(TaskDispatchDetailDO::getDispatchId, dispatchIds) + .in(ProcedureDO::getName,"下料1","下料2"); + return selectList(query); + } + + List cuttingMaterialsBatch(@Param("bomDetailIds")List bomDetailIds); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java index 443843da..03992aaa 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchMapper.java @@ -239,4 +239,5 @@ public interface TaskDispatchMapper extends BaseMapperX { return selectList(query); } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java index ccaee271..b6d47db7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java @@ -1616,13 +1616,13 @@ public class ProcessBomServiceImpl implements ProcessBomService { // .map(purchaseOrderMakeDetailDO -> purchaseOrderMakeDetailDO.getFoamPrice() != null ? purchaseOrderMakeDetailDO.getFoamPrice() : BigDecimal.ZERO) // .reduce(BigDecimal.ZERO, BigDecimal::add); // } - BigDecimal cost= processBomMapper.bubbleFees(id,projectSubId); - - BigDecimal cost1=processBomMapper.inspection(id,projectSubId); - if (ObjectUtil.isEmpty(cost1)) cost1=BigDecimal.ZERO; +// BigDecimal cost= processBomMapper.bubbleFees(id,projectSubId); +// +// BigDecimal cost1=processBomMapper.inspection(id,projectSubId); + BigDecimal cost= processBomMapper.cuttingMaterials(id,projectSubId); if (ObjectUtil.isEmpty(cost)) cost=BigDecimal.ZERO; - return cost.add(cost1); + return cost; } @Override diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java index d5538647..79ed4a05 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java @@ -243,6 +243,7 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe // //出库库物料集合 // ArrayList outList = new ArrayList<>(); ArrayList logList = new ArrayList<>(); +// ArrayList outLogList = new ArrayList<>(); //生成入库单 StorageInDO storageInDO = new StorageInDO(); @@ -297,6 +298,7 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe // outMat.setProjectSubName(byId.getName()); ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(detailDO.getBoomDetailId()); StorageLogDO logDO = new StorageLogDO(); +// StorageLogDO outLogDO = new StorageLogDO(); if (ObjectUtil.isNotEmpty(bomDetailDO)){ String bomCode=""; String blueprintNo=""; @@ -335,10 +337,12 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe // storageMatDO.setMatId(materialDO.getId()); // outMat.setMatId(materialDO.getId()); logDO.setMatId(materialDO.getId()); +// outLogDO.setMatId(materialDO.getId()); }else { // storageMatDO.setMatId(material.getId()); // outMat.setMatId(material.getId()); logDO.setMatId(material.getId()); +// outLogDO.setMatId(material.getId()); } } // storageMatDOS.add(storageMatDO); @@ -401,9 +405,14 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe logDO.setGoodsType(2); logDO.setCodeNo(storageInDO.getStorageNo()); logList.add(logDO); +// outLogDO.setStockMode(25); +// outLogDO.setStockType(2); +// outLogDO.setGoodsType(2); +// outLogList.add(outLogDO); } } storageLogMapper.insertBatch(logList); +// storageLogMapper.insertBatch(outLogList); // storageMatMapper.insertBatch(storageMatDOS); // storageMatMapper.insertBatch(outList); // storageService.updateMatLogList(storageDO.getId(),2); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java index 98d36111..fd98141e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java @@ -121,4 +121,8 @@ public interface TaskDispatchService { CommonResult verification(TaskDispatchDetailPageReqVO pageReqVO); CommonResult productionCompleted(TaskDispatchDetailPageReqVO pageReqVO); + + List getListNg(Long id, Long projectSubId); + + List getListNc(Long id, Long projectSubId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java index d07091a2..025d10bb 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java @@ -1351,8 +1351,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { // // return taskDispatchDOS; List taskDispatchDOS = taskDispatchMapper.getListCl(id, projectSubId); - - if (taskDispatchDOS.isEmpty()) { + List list = new ArrayList<>(); + if (ObjectUtil.isEmpty(taskDispatchDOS)) { return taskDispatchDOS; } @@ -1363,6 +1363,9 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { // 2. 批量查询所有TaskDispatchDetailDO List allDetailDOS = getTaskDispatchDetailsBatch(dispatchIds); + if (ObjectUtil.isEmpty(allDetailDOS)){ + return taskDispatchDOS; + } Map> detailsByDispatchId = allDetailDOS.stream() .collect(Collectors.groupingBy(TaskDispatchDetailDO::getDispatchId)); @@ -1376,10 +1379,10 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { Map procedureMap = getProceduresBatch(procedureIds); // 5. 批量查询各种成本数据 - Map bubbleFeesMap = getBubbleFeesBatch(allDetailDOS, taskDispatchDOS); +// Map bubbleFeesMap = getBubbleFeesBatch(allDetailDOS, taskDispatchDOS); Map materialCostsMap = getMaterialCostsBatch(allDetailDOS, taskDispatchDOS); - Map internalLaborCostMap = getInternalLaborCostBatch(allDetailDOS); - Map processInspectionMap = getProcessInspectionBatch(allDetailDOS); +// Map internalLaborCostMap = getInternalLaborCostBatch(allDetailDOS); +// Map processInspectionMap = getProcessInspectionBatch(allDetailDOS); // 6. 处理计算结果 for (TaskDispatchDO taskDispatchDO : taskDispatchDOS) { @@ -1392,16 +1395,16 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { if (procedureDO == null) continue; // 从批量查询的结果中获取数据 - BigDecimal procedureCost = getCostValue(bubbleFeesMap, - new CostQueryKey(taskDispatchDO.getBomDetailId(), detailDO.getProcedureId())); +// BigDecimal procedureCost = getCostValue(bubbleFeesMap, +// new CostQueryKey(taskDispatchDO.getBomDetailId(), detailDO.getProcedureId())); BigDecimal materialCost = getCostValue(materialCostsMap, new CostQueryKey(taskDispatchDO.getBomDetailId(), detailDO.getProcedureId())); - BigDecimal internalLaborCost = getCostValue(internalLaborCostMap, detailDO.getId()); - BigDecimal processInspection = getCostValue(processInspectionMap, detailDO.getId()); +// BigDecimal internalLaborCost = getCostValue(internalLaborCostMap, detailDO.getId()); +// BigDecimal processInspection = getCostValue(processInspectionMap, detailDO.getId()); - BigDecimal sum = procedureCost.add(materialCost).add(internalLaborCost).add(processInspection); - costMap.put(procedureDO.getName(), sum); - assemblyLaborCost = assemblyLaborCost.add(sum); +// BigDecimal sum = procedureCost.add(materialCost).add(internalLaborCost).add(processInspection); + costMap.put(procedureDO.getName(), materialCost); + assemblyLaborCost = assemblyLaborCost.add(materialCost); } taskDispatchDO.setAssemblyLaborSum(assemblyLaborCost); @@ -1411,9 +1414,12 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } else { taskDispatchDO.setAssemblyLaborCost(BigDecimal.ZERO); } + if (assemblyLaborCost.compareTo(BigDecimal.ZERO) > 0){ + list.add(taskDispatchDO); + } } - return taskDispatchDOS; + return list; } private Map getProceduresBatch(Set procedureIds){ @@ -1429,8 +1435,10 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { wrapper.in(TaskDispatchDetailDO::getDispatchId, dispatchIds); return taskDispatchDetailMapper.selectList(wrapper); } - - // 批量成本查询方法 + private List getTaskDispatchDetails(List dispatchIds) { + return taskDispatchDetailMapper.getTaskDispatchDetails(dispatchIds); + } + // 批量成本查询方法 private Map getBubbleFeesBatch(List details, List dispatches) { // 1. 收集所有需要查询的键 Set queryKeys = collectBubbleFeeQueryKeys(details, dispatches); @@ -1550,7 +1558,18 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { List batchResults=taskDispatchDetailMapper.batchProcessInspection(bomDetailIds); return convertToMap(batchResults); } - + private Map getCuttingMaterialsBatch(List details) { + if (details.isEmpty()) { + return Collections.emptyMap(); + } + // 提取bomDetailIds和procedureIds + List bomDetailIds = details.stream() + .map(TaskDispatchDetailDO::getId) + .distinct() + .collect(Collectors.toList()); + List batchResults=taskDispatchDetailMapper.cuttingMaterialsBatch(bomDetailIds); + return convertToMap(batchResults); + } // 辅助方法 private BigDecimal getCostValue(Map costMap, Object key) { if (costMap == null || costMap.isEmpty()) { @@ -1641,6 +1660,147 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { return CommonResult.success( true); } + @Override + public List getListNg(Long id, Long projectSubId) { + List taskDispatchDOS = taskDispatchMapper.getListCl(id, projectSubId); + List list = new ArrayList<>(); + if (taskDispatchDOS.isEmpty()) { + return taskDispatchDOS; + } + + // 1. 批量获取所有dispatchId + List dispatchIds = taskDispatchDOS.stream() + .map(TaskDispatchDO::getId) + .collect(Collectors.toList()); + + // 2. 批量查询所有TaskDispatchDetailDO + List allDetailDOS = getTaskDispatchDetailsBatch(dispatchIds); + Map> detailsByDispatchId = allDetailDOS.stream() + .collect(Collectors.groupingBy(TaskDispatchDetailDO::getDispatchId)); + + // 3. 批量获取所有procedureId + Set procedureIds = allDetailDOS.stream() + .map(TaskDispatchDetailDO::getProcedureId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + // 4. 批量查询ProcedureDO + Map procedureMap = getProceduresBatch(procedureIds); + + // 5. 批量查询各种成本数据 +// Map bubbleFeesMap = getBubbleFeesBatch(allDetailDOS, taskDispatchDOS); +// Map materialCostsMap = getMaterialCostsBatch(allDetailDOS, taskDispatchDOS); + Map internalLaborCostMap = getInternalLaborCostBatch(allDetailDOS); + Map processInspectionMap = getProcessInspectionBatch(allDetailDOS); + + // 6. 处理计算结果 + for (TaskDispatchDO taskDispatchDO : taskDispatchDOS) { + List detailDOS = detailsByDispatchId.getOrDefault(taskDispatchDO.getId(), Collections.emptyList()); + Map costMap = new HashMap<>(); + BigDecimal assemblyLaborCost = BigDecimal.ZERO; + + for (TaskDispatchDetailDO detailDO : detailDOS) { + ProcedureDO procedureDO = procedureMap.get(detailDO.getProcedureId()); + if (procedureDO == null) continue; + + // 从批量查询的结果中获取数据 +// BigDecimal procedureCost = getCostValue(bubbleFeesMap, +// new CostQueryKey(taskDispatchDO.getBomDetailId(), detailDO.getProcedureId())); +// BigDecimal materialCost = getCostValue(materialCostsMap, +// new CostQueryKey(taskDispatchDO.getBomDetailId(), detailDO.getProcedureId())); + BigDecimal internalLaborCost = getCostValue(internalLaborCostMap, detailDO.getId()); + BigDecimal processInspection = getCostValue(processInspectionMap, detailDO.getId()); + + BigDecimal sum = internalLaborCost.add(processInspection); + costMap.put(procedureDO.getName(), sum); + assemblyLaborCost = assemblyLaborCost.add(sum); + } + + taskDispatchDO.setAssemblyLaborSum(assemblyLaborCost); + taskDispatchDO.setMap(costMap); + if (taskDispatchDO.getAmount() != null && taskDispatchDO.getAmount().compareTo(BigDecimal.ZERO) != 0) { + taskDispatchDO.setAssemblyLaborCost(assemblyLaborCost.divide(taskDispatchDO.getAmount(), 1, RoundingMode.HALF_UP)); + } else { + taskDispatchDO.setAssemblyLaborCost(BigDecimal.ZERO); + } + if (assemblyLaborCost.compareTo(BigDecimal.ZERO) > 0){ + list.add(taskDispatchDO); + } + } + + return list; + } + + @Override + public List getListNc(Long id, Long projectSubId) { + List taskDispatchDOS = taskDispatchMapper.getListCl(id, projectSubId); + List list = new ArrayList<>(); + if (taskDispatchDOS.isEmpty()) { + return taskDispatchDOS; + } + + // 1. 批量获取所有dispatchId + List dispatchIds = taskDispatchDOS.stream() + .map(TaskDispatchDO::getId) + .collect(Collectors.toList()); + + // 2. 批量查询所有TaskDispatchDetailDO + List allDetailDOS = getTaskDispatchDetails(dispatchIds); + Map> detailsByDispatchId = allDetailDOS.stream() + .collect(Collectors.groupingBy(TaskDispatchDetailDO::getDispatchId)); + + // 3. 批量获取所有procedureId + Set procedureIds = allDetailDOS.stream() + .map(TaskDispatchDetailDO::getProcedureId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + // 4. 批量查询ProcedureDO + Map procedureMap = getProceduresBatch(procedureIds); + + // 5. 批量查询各种成本数据 +// Map bubbleFeesMap = getBubbleFeesBatch(allDetailDOS, taskDispatchDOS); +// Map materialCostsMap = getMaterialCostsBatch(allDetailDOS, taskDispatchDOS); +// Map internalLaborCostMap = getInternalLaborCostBatch(allDetailDOS); +// Map processInspectionMap = getProcessInspectionBatch(allDetailDOS); + Map CuttingMaterialsMap = getCuttingMaterialsBatch(allDetailDOS); + + // 6. 处理计算结果 + for (TaskDispatchDO taskDispatchDO : taskDispatchDOS) { + List detailDOS = detailsByDispatchId.getOrDefault(taskDispatchDO.getId(), Collections.emptyList()); + Map costMap = new HashMap<>(); + BigDecimal assemblyLaborCost = BigDecimal.ZERO; + + for (TaskDispatchDetailDO detailDO : detailDOS) { + ProcedureDO procedureDO = procedureMap.get(detailDO.getProcedureId()); + if (procedureDO == null) continue; + + // 从批量查询的结果中获取数据 +// BigDecimal procedureCost = getCostValue(bubbleFeesMap, +// new CostQueryKey(taskDispatchDO.getBomDetailId(), detailDO.getProcedureId())); +// BigDecimal materialCost = getCostValue(materialCostsMap, +// new CostQueryKey(taskDispatchDO.getBomDetailId(), detailDO.getProcedureId())); + BigDecimal cuttingMaterialsCost = getCostValue(CuttingMaterialsMap, detailDO.getId()); +// BigDecimal processInspection = getCostValue(processInspectionMap, detailDO.getId()); + +// BigDecimal sum = internalLaborCost.add(processInspection); + costMap.put(procedureDO.getName(), cuttingMaterialsCost); + assemblyLaborCost = assemblyLaborCost.add(cuttingMaterialsCost); + } + + taskDispatchDO.setAssemblyLaborSum(assemblyLaborCost); + taskDispatchDO.setMap(costMap); + if (taskDispatchDO.getAmount() != null && taskDispatchDO.getAmount().compareTo(BigDecimal.ZERO) != 0) { + taskDispatchDO.setAssemblyLaborCost(assemblyLaborCost.divide(taskDispatchDO.getAmount(), 1, RoundingMode.HALF_UP)); + } else { + taskDispatchDO.setAssemblyLaborCost(BigDecimal.ZERO); + } + if (assemblyLaborCost.compareTo(BigDecimal.ZERO) > 0) { + list.add(taskDispatchDO); + } + } + return list; + } private void updateAssembleDetail(OperateTypeEnum operateTypeEnum,Long dispatchId, List list) { list.forEach(o -> o.setDispatchId(dispatchId)); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml index 346ab16b..56c4e327 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomMapper.xml @@ -124,6 +124,13 @@ GROUP BY s.id ) AS subquery; + UPDATE pro_process_bom_detail diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storage/StorageMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storage/StorageMapper.xml index 7e305426..a5a7fe85 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storage/StorageMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storage/StorageMapper.xml @@ -14,7 +14,7 @@ from wms_storage sto left join wms_storage_mat mat on mat.stock_id=sto.id and mat.deleted=0 and mat.tenant_id=2 left join base_material m on mat.mat_id=m.id and m.deleted=0 and m.tenant_id=2 - where sto.stock_in_type=5 and sto.status=4 and sto.project_no=#{projectSubId} + where sto.stock_in_type=5 and sto.status=4 and mat.project_no=#{projectSubId} + diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts index 02c8e677..1a099c65 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/saleordercost/index.ts @@ -43,10 +43,18 @@ export const getListqt = async (id: number,projectSubId: number) => { export const getListYfDetails = async (id: number,projectSubId: number) => { return await request.get({ url: `/heli/deliver-order/getListYfDetails?id=`+id+`&projectSubId=`+projectSubId }) } -//查询材料成本 +//查询外部材料成本 export const getListcl = async (id: number,projectSubId: number) => { return await request.get({ url: `/heli/task-dispatch/getListCl?id=`+id+`&projectSubId=`+projectSubId }) } +//查询内部材料成本 +export const getListNc = async (id: number,projectSubId: number) => { + return await request.get({ url: `/heli/task-dispatch/getListNc?id=`+id+`&projectSubId=`+projectSubId }) +} +//查询内部工时费 +export const getListNg = async (id: number,projectSubId: number) => { + return await request.get({ url: `/heli/task-dispatch/getListNg?id=`+id+`&projectSubId=`+projectSubId }) +} //查询装配成本 export const getListZp = async (id: number,projectSubId: number) => { return await request.get({ url: `/heli/task-dispatch/getListZp?id=`+id+`&projectSubId=`+projectSubId }) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue index e9ad0960..302022d9 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue @@ -284,7 +284,7 @@ const getSummaries = (param: SummaryMethodProps) => { const sums = []; columns.forEach((column, index) => { if (index === 0) { - sums[index] = '合计'; + sums[index] = ''; return; } if (!summaryField.includes(column.property)) { diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/outsourcingexpenses/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/outsourcingexpenses/index.vue index 8a0f9ba4..52945baf 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/outsourcingexpenses/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/outsourcingexpenses/index.vue @@ -177,7 +177,7 @@ const getSummaries = (param: SummaryMethodProps) => { const sums = []; columns.forEach((column, index) => { if (index === 0) { - sums[index] = '合计'; + sums[index] = ''; return; } if (!summaryField.includes(column.property)) { diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/edit.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/edit.vue index 0c0fff71..6b18b16c 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/edit.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/edit.vue @@ -40,10 +40,16 @@ - + + + + + + + @@ -80,7 +86,9 @@ {{ }} - {{ }} + {{ }} + {{ }} + {{ }} {{ }} {{ }} @@ -117,6 +125,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -413,7 +457,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -506,6 +845,8 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const list = ref([]) // 标准件数据 const listcl = ref([]) // 材料 + const listng = ref([]) // 材料 + const listnc = ref([]) // 材料 // const listFzc = ref([]) // 副资材 // const loading = ref(true) // 列表的加载中 const activeName = ref('biao') @@ -532,6 +873,7 @@ caiLiaoCost:undefined, zpCost:undefined, neiBuCost:undefined, + waixeiCost:undefined }) const handleClick = async(tab: TabsPaneContext, event: Event) => { @@ -558,6 +900,10 @@ list.value=listData const listclData = await SaleeOrderCost.getListcl(query.id,query.projectSubId) listcl.value=listclData + const listNgData = await SaleeOrderCost.getListNg(query.id,query.projectSubId) + listng.value=listNgData + const listNcData = await SaleeOrderCost.getListNc(query.id,query.projectSubId) + listnc.value=listNcData formData.value.projectName=query.projectName formData.value.code=query.code formData.value.customerName=query.customerName @@ -568,6 +914,9 @@ formData.value.caiLiaoCost=query.cailiaoCost formData.value.zpCost=query.zpCost formData.value.neiBuCost=query.neibuCost + formData.value.waixeiCost=query.waixeiCost + + // if (listYf.value!=null){ // listYf.value.map((item)=>{ // formData.value.yunFeiCost+=item.yunFeiMoney diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/index.vue index 0cc2b84d..6e03e5dd 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/saleordercost/index.vue @@ -66,7 +66,7 @@ - + @@ -79,8 +79,8 @@ - - + + @@ -120,6 +120,7 @@ import * as SaleeOrderCost from '@/api/heli/saleordercost' import * as UserApi from '@/api/system/user' import {DICT_TYPE} from "@/utils/dict"; import routeParamsCache from '@/utils/routeParamsCache' +import {ElTable} from "element-plus"; defineOptions({ name: 'Shenhe' }) const userList = ref([]) // 用户列表 const message = useMessage() // 消息弹窗 @@ -194,7 +195,72 @@ const handleExport = async () => { exportLoading.value = false } } - +const getSummaries = (param: SummaryMethodProps) => { + const summaryField = ["biaoZhunJianCost","cailiaoCost","waixeiCost","neibuCost","zpCost","yunFeiCost","sumCost"]; + const { columns, data } = param; + const sums = []; + columns.forEach((column, index) => { + if (index === 0) { + sums[index] = '合计'; + return; + } + if (!summaryField.includes(column.property)) { + sums[index] = ''; + return; + } + const values = data.map(item => Number(item[column.property])); + if (!values.every(value => isNaN(value))) { + sums[index] = values.reduce((prev, curr) => { + const value = Number(curr); + if (!isNaN(value)) { + return floatAdd(prev, curr); + } else { + return prev; + } + }, 0); + const thousandsField = []; + if (thousandsField.includes(column.property)) { + sums[index] = thousandsFormat(sums[index]); + } + } else { + sums[index] = ''; + } + }); + // const sumValue = computed(() => { + // return list.value.reduce((sum, item) => sum + item.quantityLent, 0); + // }); + // const sums = ['合计','','','','','','','',sumValue]; + return sums; +} +const floatAdd = (a, b) => { + var c, d, e; + if (undefined === a || null === a || "" === a || isNaN(a)) { a = 0; } + if (undefined === b || null === b || "" === b || isNaN(b)) { b = 0; } + try { + c = a.toString().split(".")[1].length; + } catch (f) { + c = 0; + } + try { + d = b.toString().split(".")[1].length; + } catch (f) { + d = 0; + } + e = Math.pow(10, Math.max(c, d)); + return (floatMul(a, e) + floatMul(b, e)) / e; +}; +const floatMul = (a, b) => { + var c = 0, + d = a.toString(), + e = b.toString(); + try { + c += d.split(".")[1].length; + } catch (f) {} + try { + c += e.split(".")[1].length; + } catch (f) {} + return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c); +} /** 初始化 **/ const route = useRoute() const routeValue = ref('') diff --git a/mes-ui/mini-app/src/pages/productionInReport/components/dataItem.vue b/mes-ui/mini-app/src/pages/productionInReport/components/dataItem.vue index 41681c53..119a0e69 100644 --- a/mes-ui/mini-app/src/pages/productionInReport/components/dataItem.vue +++ b/mes-ui/mini-app/src/pages/productionInReport/components/dataItem.vue @@ -78,7 +78,6 @@ const getListData = async () => { if (queryParams.pageNo < data.total) { // 页码累加 queryParams.pageNo++; - isFinish.value = true; } else { // 分页已结束 isFinish.value = true;