From 7f698802b1742ab3f323c0bae93b1757883442ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Tue, 10 Feb 2026 11:02:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A7=94=E6=89=98=E5=8A=A0=E5=B7=A5=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=8F=91=E8=B4=A7=E5=B7=A5=E5=8E=82=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=92=8C=E6=98=8E=E7=BB=86=E6=B7=BB=E5=8A=A0=E9=87=91=E5=B1=9E?= =?UTF-8?q?=E5=85=83=E7=B4=A0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/RealTimeReportsTreeRespVO.java | 176 ++++++++++- .../plandate/PlanOrderServiceImpl.java | 2 + .../plandate/RealTimeReportsServiceImpl.java | 289 +++++++++++++++++- .../vo/EntrustOrderOrderPageReqVO.java | 2 + .../vo/EntrustOrderOrderRespVO.java | 4 + .../vo/EntrustOrderOrderSaveReqVO.java | 3 + .../OriginalMaterialProcessingController.java | 46 +-- ...inalMaterialProcessingDetailPageReqVO.java | 13 +- ...riginalMaterialProcessingDetailRespVO.java | 15 +- ...inalMaterialProcessingDetailSaveReqVO.java | 8 +- .../OriginalMaterialProcessingPageReqVO.java | 5 + .../vo/OriginalMaterialProcessingRespVO.java | 9 +- .../OriginalMaterialProcessingSaveReqVO.java | 26 +- .../entrustorder/EntrustOrderOrderDO.java | 7 + .../OriginalMaterialProcessingDO.java | 202 +++++++----- .../OriginalMaterialProcessingDetailDO.java | 18 +- ...riginalMaterialProcessingDetailMapper.java | 2 +- .../OriginalMaterialProcessingMapper.java | 1 + ...alMaterialProcessingDetailServiceImpl.java | 24 ++ .../OriginalMaterialProcessingService.java | 1 + ...inalMaterialProcessingServiceImplImpl.java | 24 +- 21 files changed, 764 insertions(+), 113 deletions(-) diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/plandate/vo/RealTimeReportsTreeRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/plandate/vo/RealTimeReportsTreeRespVO.java index 1ad40846..109cbb84 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/plandate/vo/RealTimeReportsTreeRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/plandate/vo/RealTimeReportsTreeRespVO.java @@ -1,7 +1,181 @@ package com.zt.plat.module.base.controller.admin.plandate.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.util.List; +/** + * 实时报表树形结构返回VO(包含执行量字段) + */ @Data +@Schema(description = "管理后台 - 实时报表树形结构 Response VO") public class RealTimeReportsTreeRespVO { -} + + // ========== 基础节点信息 ========== + @Schema(description = "主键 ID", example = "10584") + private Long id; + + @Schema(description = "计划名称", example = "铜精矿年度计划") + private String planName; + + @Schema(description = "计划编码") + private String planCoding; + + @Schema(description = "父级ID", example = "6059") + private Long parentId; + + @Schema(description = "年份", example = "2025") + private String year; + + @Schema(description = "初始值") + private BigDecimal initialValue; + + @Schema(description = "平均值") + private BigDecimal averageValue; + + @Schema(description = "合计值(计划)") + private BigDecimal sumValue; + + // ========== 执行量核心字段 ========== + @Schema(description = "合计执行量(所有月份执行量总和)") + private BigDecimal sumExecuteValue; + + @Schema(description = "执行率(sumExecuteValue / sumValue * 100)") + private BigDecimal executeRate; + + // ========== 12个月计划值(保留原字段) ========== + @Schema(description = "一月计划值") + private BigDecimal january; + + @Schema(description = "二月计划值") + private BigDecimal february; + + @Schema(description = "三月计划值") + private BigDecimal march; + + @Schema(description = "四月计划值") + private BigDecimal april; + + @Schema(description = "五月计划值") + private BigDecimal may; + + @Schema(description = "六月计划值") + private BigDecimal june; + + @Schema(description = "七月计划值") + private BigDecimal july; + + @Schema(description = "八月计划值") + private BigDecimal august; + + @Schema(description = "九月计划值") + private BigDecimal september; + + @Schema(description = "十月计划值") + private BigDecimal october; + + @Schema(description = "十一月计划值") + private BigDecimal november; + + @Schema(description = "十二月计划值") + private BigDecimal december; + + // ========== 12个月执行量(新增核心字段) ========== + @Schema(description = "一月执行量") + private BigDecimal januaryExecute; + + @Schema(description = "二月执行量") + private BigDecimal februaryExecute; + + @Schema(description = "三月执行量") + private BigDecimal marchExecute; + + @Schema(description = "四月执行量") + private BigDecimal aprilExecute; + + @Schema(description = "五月执行量") + private BigDecimal mayExecute; + + @Schema(description = "六月执行量") + private BigDecimal juneExecute; + + @Schema(description = "七月执行量") + private BigDecimal julyExecute; + + @Schema(description = "八月执行量") + private BigDecimal augustExecute; + + @Schema(description = "九月执行量") + private BigDecimal septemberExecute; + + @Schema(description = "十月执行量") + private BigDecimal octoberExecute; + + @Schema(description = "十一月执行量") + private BigDecimal novemberExecute; + + @Schema(description = "十二月执行量") + private BigDecimal decemberExecute; + + // ========== 其他基础字段 ========== + @Schema(description = "创建时间") + private LocalDateTime createTime; + + // ========== 树形结构核心字段 ========== + @Schema(description = "子节点列表") + private List children; + + @Schema(description = "是否为叶子节点", example = "true") + private Boolean isLeaf; + + @Schema(description = "节点层级(根节点为0)", example = "0") + private Integer level; + + // ========== 辅助方法:自动计算合计执行量和执行率 ========== + /** + * 计算当前节点的合计执行量(12个月执行量求和) + */ + public void calculateSumExecuteValue() { + this.sumExecuteValue = BigDecimal.ZERO; + // 累加12个月执行量(空值处理为0) + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(januaryExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(februaryExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(marchExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(aprilExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(mayExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(juneExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(julyExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(augustExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(septemberExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(octoberExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(novemberExecute)); + this.sumExecuteValue = this.sumExecuteValue.add(getNotNullValue(decemberExecute)); + } + + /** + * 计算执行率(执行量/计划值 * 100,保留2位小数) + */ + public void calculateExecuteRate() { + if (this.sumValue == null || this.sumValue.compareTo(BigDecimal.ZERO) == 0) { + this.executeRate = BigDecimal.ZERO; + return; + } + if (this.sumExecuteValue == null) { + this.calculateSumExecuteValue(); + } + // 执行率 = (执行量 / 计划值) * 100,保留2位小数 + this.executeRate = this.sumExecuteValue.divide(this.sumValue, 4, RoundingMode.HALF_UP) + .multiply(new BigDecimal("100")) + .setScale(2, RoundingMode.HALF_UP); + } + + /** + * 空值处理:null转为BigDecimal.ZERO + */ + private BigDecimal getNotNullValue(BigDecimal value) { + return value == null ? BigDecimal.ZERO : value; + } +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/plandate/PlanOrderServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/plandate/PlanOrderServiceImpl.java index 20685a31..f9d6b1f0 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/plandate/PlanOrderServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/plandate/PlanOrderServiceImpl.java @@ -49,6 +49,8 @@ public class PlanOrderServiceImpl implements PlanOrderService { public PageResult getBoundOrder(String id) { OrderAndPlanDataReqDTO reqVO = new OrderAndPlanDataReqDTO(); reqVO.setPlanId(id); + reqVO.setPageNo(0); + reqVO.setPageNo(10000); CommonResult> pageResultCommonResult = orderApi.queryOrderPlanData(reqVO); return pageResultCommonResult.getData(); } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/plandate/RealTimeReportsServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/plandate/RealTimeReportsServiceImpl.java index 32419f71..f3cc12eb 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/plandate/RealTimeReportsServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/plandate/RealTimeReportsServiceImpl.java @@ -1,9 +1,13 @@ package com.zt.plat.module.base.service.plandate; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.module.base.controller.admin.plandate.vo.PlanDatePageReqVO; import com.zt.plat.module.base.controller.admin.plandate.vo.PlanDateRespVO; import com.zt.plat.module.base.controller.admin.plandate.vo.RealTimeReportsTreeRespVO; +import com.zt.plat.module.contractorder.api.dto.order.OrderDTO; import com.zt.plat.module.receivedeliver.api.bill.BillMainApi; import com.zt.plat.module.receivedeliver.api.bill.dto.billMain.BillMainExecutionVolumeReqDTO; import com.zt.plat.module.receivedeliver.api.bill.dto.billMain.BillMainExecutionVolumeStatisticsRespDTO; @@ -11,12 +15,13 @@ import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; -import java.util.ArrayList; -import java.util.List; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; @Service @Validated -public class RealTimeReportsServiceImpl implements RealTimeReportsService{ +public class RealTimeReportsServiceImpl implements RealTimeReportsService { @Resource private PlanDateService planDateService; @@ -24,11 +29,279 @@ public class RealTimeReportsServiceImpl implements RealTimeReportsService{ private PlanOrderService planOrderService; @Resource private BillMainApi billMainApi; + @Override public List tree(PlanDatePageReqVO reqVO) { - List planDate = planDateService.listPlanDateTree(reqVO); - BillMainExecutionVolumeReqDTO billMainExecutionVolumeReqDTO=new BillMainExecutionVolumeReqDTO(); - CommonResult> billMainExecutionVolumeList = billMainApi.getBillMainExecutionVolumeList(billMainExecutionVolumeReqDTO); - return new ArrayList<>(); + // 1. 获取计划数据树形结构 + List planDateTree = planDateService.listPlanDateTree(reqVO); + if (planDateTree == null || planDateTree.isEmpty()) { + return new ArrayList<>(); + } + + // 2. 获取执行量数据 +// List executionVolumeList = getExecutionVolumeData(reqVO); + // 构建执行量数据映射(物料编码为KEY,兼容多客商/多订单的情况,取第一条匹配数据) + // Map executionVolumeMap = buildExecutionVolumeMap(executionVolumeList); + + // 3. 转换为树形VO并填充执行量 + List resultTree = convertPlanDateToTreeVO(planDateTree, reqVO); + + // 4. 后序遍历汇总子节点执行量(父节点=所有子节点执行量之和) + traverseAndSumExecutionVolume(resultTree); + + return resultTree; } -} + + /** + * 调用API获取执行量数据 + */ + private List getExecutionVolumeData(PlanDatePageReqVO reqVO, PlanDateRespVO planDate) { + //获取已绑定的订单 + PageResult boundOrder = planOrderService.getBoundOrder(String.valueOf(planDate.getId())); + if (boundOrder == null || boundOrder.getList() == null || boundOrder.getList().isEmpty()) { + return new ArrayList<>(); + } + BillMainExecutionVolumeReqDTO reqDTO = new BillMainExecutionVolumeReqDTO(); + reqDTO.setQueryYear(reqVO.getYear()); + reqDTO.setOrderNos(boundOrder.getList().stream().map(OrderDTO::getSystemOrderNumber).collect(Collectors.toList())); + CommonResult> result = billMainApi.getBillMainExecutionVolumeList(reqDTO); + return result != null && result.getData() != null ? result.getData() : new ArrayList<>(); + } + + /** + * 构建执行量数据映射(按物料编码匹配,唯一标识) + * 注:如果同一物料编码有多个DTO,取第一条(可根据业务调整为求和/取最新) + */ + private Map buildExecutionVolumeMap( + List executionVolumeList) { + Map map = new HashMap<>(); + for (BillMainExecutionVolumeStatisticsRespDTO dto : executionVolumeList) { + // 核心匹配键:物料编码(优先)→ 物料名称 + String key = Optional.ofNullable(dto.getMaterialCoding()).orElse(dto.getMaterialName()); + if (key != null && !map.containsKey(key)) { // 避免覆盖,只存第一条 + map.put(key, dto); + } + } + return map; + } + + /** + * 将PlanDateRespVO树形转换为RealTimeReportsTreeRespVO,并填充执行量 + */ + private List convertPlanDateToTreeVO( + List planDateList, + PlanDatePageReqVO reqVO) { + List treeVOList = new ArrayList<>(); + for (PlanDateRespVO planDate : planDateList) { + List executionVolumeData = getExecutionVolumeData(reqVO, planDate); + Map executionVolumeMap = buildExecutionVolumeMap(executionVolumeData); + RealTimeReportsTreeRespVO treeVO = convertSingleNode(planDate, executionVolumeMap); + // 递归转换子节点 + if (planDate.getChildren() != null && !planDate.getChildren().isEmpty()) { + treeVO.setChildren(convertPlanDateToTreeVO(planDate.getChildren(), reqVO)); + treeVO.setIsLeaf(false); + } else { + treeVO.setChildren(new ArrayList<>()); + treeVO.setIsLeaf(true); + } + treeVOList.add(treeVO); + } + return treeVOList; + } + + /** + * 转换单个节点并填充执行量(核心:对齐DTO字段) + */ + private RealTimeReportsTreeRespVO convertSingleNode( + PlanDateRespVO planDate, + Map executionVolumeMap) { + RealTimeReportsTreeRespVO treeVO = new RealTimeReportsTreeRespVO(); + + // 1. 复制基础字段 + treeVO.setId(planDate.getId()); + treeVO.setPlanName(planDate.getPlanName()); + treeVO.setPlanCoding(planDate.getPlanCoding()); + treeVO.setParentId(planDate.getParentId()); + treeVO.setYear(planDate.getYear()); + treeVO.setInitialValue(planDate.getInitialValue()); + treeVO.setAverageValue(planDate.getAverageValue()); + treeVO.setSumValue(planDate.getSumValue()); + treeVO.setCreateTime(planDate.getCreateTime()); + + // 2. 复制12个月计划值 + treeVO.setJanuary(planDate.getJanuary()); + treeVO.setFebruary(planDate.getFebruary()); + treeVO.setMarch(planDate.getMarch()); + treeVO.setApril(planDate.getApril()); + treeVO.setMay(planDate.getMay()); + treeVO.setJune(planDate.getJune()); + treeVO.setJuly(planDate.getJuly()); + treeVO.setAugust(planDate.getAugust()); + treeVO.setSeptember(planDate.getSeptember()); + treeVO.setOctober(planDate.getOctober()); + treeVO.setNovember(planDate.getNovember()); + treeVO.setDecember(planDate.getDecember()); + + // 3. 填充12个月执行量(核心:严格对齐DTO字段) + fillExecutionVolume(treeVO, planDate, executionVolumeMap); + + // 4. 初始化层级 + treeVO.setLevel(0); + + return treeVO; + } + + /** + * 为节点填充执行量数据(适配DTO的实际字段名) + */ + private void fillExecutionVolume( + RealTimeReportsTreeRespVO treeVO, + PlanDateRespVO planDate, + Map executionVolumeMap) { + // 匹配规则:计划编码/计划名称 → 物料编码/物料名称(根据实际业务调整匹配逻辑) + String matchKey; + // 优先用计划编码匹配物料编码 + if (planDate.getPlanCoding() != null) { + matchKey = planDate.getPlanCoding(); + } + // 备用:计划名称匹配物料名称 + else if (planDate.getPlanName() != null) { + matchKey = planDate.getPlanName(); + } else { + matchKey = null; + } + + BillMainExecutionVolumeStatisticsRespDTO executionDTO = null; + if (matchKey != null) { + executionDTO = executionVolumeMap.get(matchKey); + // 备用匹配:如果物料名称包含计划名称(模糊匹配,可选) + if (executionDTO == null) { + executionDTO = executionVolumeMap.entrySet().stream() + .filter(entry -> entry.getKey().contains(matchKey)) + .map(Map.Entry::getValue) + .findFirst() + .orElse(null); + } + } + + if (executionDTO == null) { + // 无匹配执行量,设为0 + setZeroToAllExecutionFields(treeVO); + return; + } + + // ========== 严格对齐DTO的12个月执行量字段 ========== + treeVO.setJanuaryExecute(getBigDecimalValue(executionDTO.getJanExecutionQuantity())); + treeVO.setFebruaryExecute(getBigDecimalValue(executionDTO.getFebExecutionQuantity())); + treeVO.setMarchExecute(getBigDecimalValue(executionDTO.getMarExecutionQuantity())); + treeVO.setAprilExecute(getBigDecimalValue(executionDTO.getAprExecutionQuantity())); + treeVO.setMayExecute(getBigDecimalValue(executionDTO.getMayExecutionQuantity())); + treeVO.setJuneExecute(getBigDecimalValue(executionDTO.getJunExecutionQuantity())); + treeVO.setJulyExecute(getBigDecimalValue(executionDTO.getJulExecutionQuantity())); + treeVO.setAugustExecute(getBigDecimalValue(executionDTO.getAugExecutionQuantity())); + treeVO.setSeptemberExecute(getBigDecimalValue(executionDTO.getSepExecutionQuantity())); + treeVO.setOctoberExecute(getBigDecimalValue(executionDTO.getOctExecutionQuantity())); + treeVO.setNovemberExecute(getBigDecimalValue(executionDTO.getNovExecutionQuantity())); + treeVO.setDecemberExecute(getBigDecimalValue(executionDTO.getDecExecutionQuantity())); + + // 自动计算合计执行量和执行率 + treeVO.calculateSumExecuteValue(); + treeVO.calculateExecuteRate(); + } + + /** + * 后序遍历树形VO,汇总子节点执行量到父节点 + */ + private void traverseAndSumExecutionVolume(List rootNodeList) { + if (rootNodeList == null || rootNodeList.isEmpty()) { + return; + } + for (RealTimeReportsTreeRespVO rootNode : rootNodeList) { + traverseNodeAndSum(rootNode, 0); + } + } + + /** + * 递归遍历单个节点并汇总子节点执行量 + */ + private void traverseNodeAndSum(RealTimeReportsTreeRespVO currentNode, int level) { + currentNode.setLevel(level); // 设置节点层级 + + // 1. 先递归处理子节点 + List children = currentNode.getChildren(); + if (children != null && !children.isEmpty()) { + for (RealTimeReportsTreeRespVO child : children) { + traverseNodeAndSum(child, level + 1); + } + + // 2. 汇总子节点执行量到当前节点(如果当前节点无直接执行量) + BigDecimal sumChildExecute = children.stream() + .map(RealTimeReportsTreeRespVO::getSumExecuteValue) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + // 如果父节点本身无执行量,用子节点总和填充 + if (currentNode.getSumExecuteValue() == null || currentNode.getSumExecuteValue().compareTo(BigDecimal.ZERO) == 0) { + currentNode.setSumExecuteValue(sumChildExecute); + // 重新计算执行率 + currentNode.calculateExecuteRate(); + } + } + } + + // ========== 工具方法 ========== + /** + * 空值转换为BigDecimal.ZERO + */ + private BigDecimal getBigDecimalValue(BigDecimal value) { + return value == null ? BigDecimal.ZERO : value; + } + + /** + * 所有执行量字段设为0 + */ + private void setZeroToAllExecutionFields(RealTimeReportsTreeRespVO treeVO) { + treeVO.setJanuaryExecute(BigDecimal.ZERO); + treeVO.setFebruaryExecute(BigDecimal.ZERO); + treeVO.setMarchExecute(BigDecimal.ZERO); + treeVO.setAprilExecute(BigDecimal.ZERO); + treeVO.setMayExecute(BigDecimal.ZERO); + treeVO.setJuneExecute(BigDecimal.ZERO); + treeVO.setJulyExecute(BigDecimal.ZERO); + treeVO.setAugustExecute(BigDecimal.ZERO); + treeVO.setSeptemberExecute(BigDecimal.ZERO); + treeVO.setOctoberExecute(BigDecimal.ZERO); + treeVO.setNovemberExecute(BigDecimal.ZERO); + treeVO.setDecemberExecute(BigDecimal.ZERO); + // 计算合计和执行率 + treeVO.calculateSumExecuteValue(); + treeVO.calculateExecuteRate(); + } + + // ========== 调试用遍历方法(保留) ========== + public static void traversePlanDateTreePostOrder(List rootNodeList) { + if (rootNodeList == null || rootNodeList.isEmpty()) { + System.out.println("入参planDate为空,无需遍历"); + return; + } + for (PlanDateRespVO rootNode : rootNodeList) { + traverseNodePostOrder(rootNode, 0); + } + } + + private static void traverseNodePostOrder(PlanDateRespVO currentNode, int level) { + List children = currentNode.getChildren(); + if (children != null && !children.isEmpty()) { + for (PlanDateRespVO child : children) { + traverseNodePostOrder(child, level + 1); + } + } + handleCurrentNode(currentNode, level); + } + + private static void handleCurrentNode(PlanDateRespVO node, int level) { + String indent = " ".repeat(level); + System.out.printf("%s【层级%d】计划名称:%s,计划编码:%s,合计值:%s%n", + indent, level, node.getPlanName(), node.getPlanCoding(), node.getSumValue()); + } +} \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderPageReqVO.java index 57d18281..c265b255 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderPageReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderPageReqVO.java @@ -140,5 +140,7 @@ public class EntrustOrderOrderPageReqVO extends PageParam { private String sendWarehouseNumber; @Schema(description = "物权转移", example = "张三") private String meteringType; + @Schema(description = "订单类型,(字典:SPLY_BSN_TP)") + private String splyBsnTp; } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderRespVO.java index dbeac43c..3e81ac2a 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderRespVO.java @@ -189,4 +189,8 @@ public class EntrustOrderOrderRespVO { private String sendWarehouseNumber; @Schema(description = "物权转移", example = "张三") private String meteringType; + @ExcelProperty("订单类型") + @Schema(description = "订单类型,(字典:SPLY_BSN_TP)") + private String splyBsnTp; + } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderSaveReqVO.java index abeb22d4..5a7b39bf 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/entrustorder/vo/EntrustOrderOrderSaveReqVO.java @@ -161,4 +161,7 @@ public class EntrustOrderOrderSaveReqVO { private String sendWarehouseNumber; @Schema(description = "物权转移", example = "张三") private String meteringType; + @Schema(description = "订单类型,(字典:SPLY_BSN_TP)") + private String splyBsnTp; + } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java index 792e4596..8579c4c9 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java @@ -7,15 +7,14 @@ import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.excel.core.util.ExcelUtils; -import com.zt.plat.module.contractorder.controller.admin.entrustorder.vo.EntrustOrderOrderPageReqVO; import com.zt.plat.module.contractorder.controller.admin.originalmaterialprocessing.vo.OriginalMaterialProcessingPageReqVO; import com.zt.plat.module.contractorder.controller.admin.originalmaterialprocessing.vo.OriginalMaterialProcessingRespVO; import com.zt.plat.module.contractorder.controller.admin.originalmaterialprocessing.vo.OriginalMaterialProcessingSaveReqVO; + import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.DownOrUpOrderReqVO; import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.DownOrUpOrderRespVO; import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.LinkOrderReqVO; -import com.zt.plat.module.contractorder.dal.dataobject.entrustorder.EntrustOrderOrderDO; import com.zt.plat.module.contractorder.dal.dataobject.originalmaterialprocessing.OriginalMaterialProcessingDO; import com.zt.plat.module.contractorder.service.originalmaterialprocessing.OriginalMaterialProcessingService; import io.swagger.v3.oas.annotations.Operation; @@ -45,15 +44,22 @@ public class OriginalMaterialProcessingController { @PostMapping("/create") @Operation(summary = "创建来料加工订单") - @PreAuthorize("@ss.hasPermission('bse:purchase-order:create')") - public CommonResult createEntrustOrderOrder(@Valid @RequestBody OriginalMaterialProcessingSaveReqVO createReqVO) { + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:create')") + public CommonResult createOriginalMaterialProcessingOrder(@Valid @RequestBody OriginalMaterialProcessingSaveReqVO createReqVO) { return success(originalMaterialProcessingService.createOriginalMaterialProcessing(createReqVO)); } + @PostMapping("/create-batch") + @Operation(summary = "批量创建来料加工订单") + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:create')") + public CommonResult> createBatchOriginalMaterialProcessingOrder(@Valid @RequestBody List createReqVOS) { + return success(originalMaterialProcessingService.createBatchOriginalMaterialProcessing(createReqVOS)); + } + @PutMapping("/update") @Operation(summary = "更新来料加工订单") - @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") - public CommonResult updateEntrustOrderOrder(@Valid @RequestBody OriginalMaterialProcessingSaveReqVO updateReqVO) { + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:update')") + public CommonResult updateOriginalMaterialProcessingOrder(@Valid @RequestBody OriginalMaterialProcessingSaveReqVO updateReqVO) { originalMaterialProcessingService.updateOriginalMaterialProcessing(updateReqVO); return success(true); } @@ -61,8 +67,8 @@ public class OriginalMaterialProcessingController { @DeleteMapping("/delete") @Operation(summary = "删除来料加工订单") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('bse:purchase-order:delete')") - public CommonResult deleteEntrustOrderOrder(@RequestParam("id") Long id) { + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:delete')") + public CommonResult deleteOriginalMaterialProcessingOrder(@RequestParam("id") Long id) { originalMaterialProcessingService.deleteOriginalMaterialProcessing(id); return success(true); } @@ -70,8 +76,8 @@ public class OriginalMaterialProcessingController { @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除来料加工订单") - @PreAuthorize("@ss.hasPermission('bse:purchase-order:delete')") - public CommonResult deleteEntrustOrderOrderList(@RequestBody BatchDeleteReqVO req) { + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:delete')") + public CommonResult deleteOriginalMaterialProcessingOrderList(@RequestBody BatchDeleteReqVO req) { originalMaterialProcessingService.deleteOriginalMaterialProcessingListByIds(req.getIds()); return success(true); } @@ -79,8 +85,8 @@ public class OriginalMaterialProcessingController { @GetMapping("/get") @Operation(summary = "获得来料加工订单") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") - public CommonResult getEntrustOrderOrder(@RequestParam("id") Long id) { + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:query')") + public CommonResult getOriginalMaterialProcessingOrder(@RequestParam("id") Long id) { OriginalMaterialProcessingDO originalMaterialProcessingDO = originalMaterialProcessingService.getOriginalMaterialProcessing(id); OriginalMaterialProcessingRespVO bean = BeanUtils.toBean(originalMaterialProcessingDO, OriginalMaterialProcessingRespVO.class); if (bean != null) { @@ -91,8 +97,8 @@ public class OriginalMaterialProcessingController { @GetMapping("/page") @Operation(summary = "获得来料加工订单分页") - @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") - public CommonResult> getEntrustOrderOrderPage(@Valid OriginalMaterialProcessingPageReqVO pageReqVO) { + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:query')") + public CommonResult> getOriginalMaterialProcessingOrderPage(@Valid OriginalMaterialProcessingPageReqVO pageReqVO) { PageResult pageResult = originalMaterialProcessingService.getOriginalMaterialProcessingPage(pageReqVO); PageResult bean = BeanUtils.toBean(pageResult, OriginalMaterialProcessingRespVO.class); if (bean != null && !bean.getList().isEmpty()) { @@ -105,9 +111,9 @@ public class OriginalMaterialProcessingController { @GetMapping("/export-excel") @Operation(summary = "导出来料加工订单 Excel") - @PreAuthorize("@ss.hasPermission('bse:purchase-order:export')") + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:export')") @ApiAccessLog(operateType = EXPORT) - public void exportEntrustOrderOrderExcel(@Valid OriginalMaterialProcessingPageReqVO pageReqVO, + public void exportOriginalMaterialProcessingOrderExcel(@Valid OriginalMaterialProcessingPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = originalMaterialProcessingService.getOriginalMaterialProcessingPage(pageReqVO).getList(); @@ -120,14 +126,14 @@ public class OriginalMaterialProcessingController { //关联订单 @PostMapping("/link-order") @Operation(summary = "关联订单") - @PreAuthorize("@ss.hasAnyPermissions('base:purchase-order:update','purchase:order:list:OrderList:edit')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:update','original-material-processing:order:list:OrderList:edit')") public CommonResult linkOrder(@RequestBody @Validated LinkOrderReqVO req) { return success(originalMaterialProcessingService.linkOrder(req)); } @PostMapping("/order-by-order-id-and-type") @Operation(summary = "根据订单id和方式获取上或下游订单") - @PreAuthorize("@ss.hasAnyPermissions('base:purchase-order:query')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:query')") public CommonResult> getOrderByOrderIdAndType(@RequestBody DownOrUpOrderReqVO reqVO) { return success(originalMaterialProcessingService.getOrderByOrderIdAndType(reqVO)); } @@ -135,7 +141,7 @@ public class OriginalMaterialProcessingController { @PostMapping("/bound-order") @Operation(summary = "获取已绑定的订单") - @PreAuthorize("@ss.hasAnyPermissions('base:purchase-order:query')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:query')") public CommonResult> boundOrder(@RequestBody DownOrUpOrderReqVO reqVO) { return success(originalMaterialProcessingService.getBindOrderByOrder(reqVO)); } @@ -143,7 +149,7 @@ public class OriginalMaterialProcessingController { //关闭订单 @PostMapping("/close-order") @Operation(summary = "关闭订单") - @PreAuthorize("@ss.hasAnyPermissions('base:purchase-order:update')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:update')") public CommonResult closeOrder(@RequestBody List ids) { originalMaterialProcessingService.closeOrder(ids); return success(true); diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailPageReqVO.java index d71e7bf4..45e4f22f 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailPageReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailPageReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.controller.admin.originalmaterialprocessing.vo; +import com.alibaba.excel.annotation.ExcelProperty; import lombok.*; import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; @@ -48,7 +49,7 @@ public class OriginalMaterialProcessingDetailPageReqVO extends PageParam { private String materialNumber; @Schema(description = "计量单位") - private String uom; + private String unit; @Schema(description = "暂估数量") private BigDecimal forecastQuantity; @@ -104,4 +105,14 @@ public class OriginalMaterialProcessingDetailPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称") + private String elementName; + + @Schema(description = "金属元素编码") + private String elementNumber; + } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailRespVO.java index 4347e993..92b6ab2a 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailRespVO.java @@ -63,7 +63,7 @@ public class OriginalMaterialProcessingDetailRespVO { @Schema(description = "计量单位") @ExcelProperty("计量单位") - private String uom; + private String unit; @Schema(description = "暂估数量") @ExcelProperty("暂估数量") @@ -133,4 +133,17 @@ public class OriginalMaterialProcessingDetailRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "删除标识") + @ExcelProperty("删除标识") + private Boolean deleted; + @ExcelProperty("金属元素缩写") + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + @ExcelProperty("金属元素名称") + @Schema(description = "金属元素名称") + private String elementName; + @ExcelProperty("金属元素编码") + @Schema(description = "金属元素编码") + private String elementNumber; + } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailSaveReqVO.java index 2d066a4a..570db17a 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailSaveReqVO.java @@ -49,7 +49,7 @@ public class OriginalMaterialProcessingDetailSaveReqVO { private String materialNumber; @Schema(description = "计量单位") - private String uom; + private String unit; @Schema(description = "暂估数量") private BigDecimal forecastQuantity; @@ -99,4 +99,10 @@ public class OriginalMaterialProcessingDetailSaveReqVO { @Schema(description = "价格条件") private String priceCondition; + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + @Schema(description = "金属元素名称") + private String elementName; + @Schema(description = "金属元素编码") + private String elementNumber; } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingPageReqVO.java index eaeeaef5..879445c0 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingPageReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingPageReqVO.java @@ -121,5 +121,10 @@ public class OriginalMaterialProcessingPageReqVO extends PageParam { @Schema(description = "采购组名称", example = "张三") private String purchaseGroupName; + @Schema(description = "订单类型,(字典:SPLY_BSN_TP)") + private String splyBsnTp; + @Schema(description = "相关订单ID") + private Long relatedOrderId; + } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingRespVO.java index d06ea064..5c646ee3 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingRespVO.java @@ -158,7 +158,14 @@ public class OriginalMaterialProcessingRespVO { @Schema(description = "采购组名称", example = "张三") @ExcelProperty("采购组名称") private String purchaseGroupName; - + @Schema(description = "订单明细") private List details; + @ExcelProperty("业务类型(字典:SPLY_BSN_TP)") + @Schema(description = "订单类型,(字典:SPLY_BSN_TP)") + private String splyBsnTp; + @Schema(description = "相关订单ID") + @ExcelProperty("相关订单ID") + private Long relatedOrderId; + } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingSaveReqVO.java index 3dcef368..42ba7aea 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.controller.admin.originalmaterialprocessing.vo; +import com.zt.plat.module.contractorder.controller.admin.entrustorder.vo.EntrustOrderDetailSaveReqVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -20,10 +21,12 @@ public class OriginalMaterialProcessingSaveReqVO { // @NotEmpty(message = "订单号不能为空") private String systemOrderNumber; - @Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) - //@NotEmpty(message = "公司编码;推送ERP(必须)不能为空") + @Schema(description = "公司名称;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) private String cpName; + @Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + private String cpNum; + @Schema(description = "客商编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) //@NotEmpty(message = "客商编码;推送ERP(必须)不能为空") private String supplierNumber; @@ -140,7 +143,26 @@ public class OriginalMaterialProcessingSaveReqVO { @Schema(description = "创建时间") private LocalDateTime createTime; + @Schema(description = "计量单位", example = "张三") + private String unit; + + @Schema(description = "物料类型", example = "张三") + private String mtrlTp; + @Schema(description = "发货工厂名称", example = "张三") + private String sendFactoryName; + @Schema(description = "发货工厂编码", example = "张三") + private String sendFactoryNumber; + @Schema(description = "发货库位名称", example = "张三") + private String sendWarehouseName; + @Schema(description = "发货库位编码", example = "张三") + private String sendWarehouseNumber; + @Schema(description = "物权转移", example = "张三") + private String meteringType; @Schema(description = "来料加工订单明细") private List details; + @Schema(description = "订单类型,(字典:SPLY_BSN_TP)") + private String splyBsnTp; + @Schema(description = "相关订单ID") + private Long relatedOrderId; } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/entrustorder/EntrustOrderOrderDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/entrustorder/EntrustOrderOrderDO.java index c7aa3033..59d27f73 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/entrustorder/EntrustOrderOrderDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/entrustorder/EntrustOrderOrderDO.java @@ -257,4 +257,11 @@ public class EntrustOrderOrderDO extends BusinessBaseDO { */ @TableField("MTNG_TP") private String meteringType; + + /** + * 订单分类(字典:SPLY_BSN_TP) + * + */ + @TableField("SPLY_BSN_TP") + private String splyBsnTp; } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDO.java index 9cf9ff27..02d803eb 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDO.java @@ -26,185 +26,190 @@ import java.time.LocalDateTime; public class OriginalMaterialProcessingDO extends BusinessBaseDO { - /** - * 主键 - */ + * 主键 + */ @TableId(type = IdType.ASSIGN_ID) private Long id; /** - * ERP订单号 - */ + * ERP订单号 + */ @TableField("ORD_SAP_NUM") private String orderSAPNumber; /** - * 订单号 - */ + * 订单号 + */ @TableField("SYS_ORD_NUM") private String systemOrderNumber; /** - * 公司编码;推送ERP(必须) - */ - @TableField("CPN_NUM") + * 公司名称 + */ + @TableField("CPN_NAME") private String cpName; /** - * 客商编码;推送ERP(必须) - */ + * 公司编码;推送ERP(必须) + */ + @TableField("CPN_NUM") + private String cpNum; + + /** + * 客商编码;推送ERP(必须) + */ @TableField("SPLR_NUM") private String supplierNumber; /** - * 客商名称 - */ + * 客商名称 + */ @TableField("SPLR_NAME") private String supplierName; /** - * 订单类型(字典:PRCH_ORD_TP);推送ERP(必须) - */ + * 订单类型(字典:PRCH_ORD_TP);推送ERP(必须) + */ @TableField("TP") private String type; /** - * 凭证日期;推送ERP(必须) - */ + * 凭证日期;推送ERP(必须) + */ @TableField("VCHR_DT") private LocalDateTime voucherDate; /** - * 采购组织编码;推送ERP(必须) - */ + * 采购组织编码;推送ERP(必须) + */ @TableField("PRCH_ORGZ_CD") private String purchaseOrganizationCustomsDeclaration; /** - * 收货工厂名称 - */ + * 收货工厂名称 + */ @TableField("RCV_FACT_NAME") private String receiveFactoryName; /** - * 收货工厂编码;推送ERP(必须) - */ + * 收货工厂编码;推送ERP(必须) + */ @TableField("RCV_FACT_NUM") private String receiveFactoryNumber; /** - * 收货库位名称 - */ + * 收货库位名称 + */ @TableField("RCV_WRH_NAME") private String receiveWarehouseName; /** - * 收货库位编码;推送ERP - */ + * 收货库位编码;推送ERP + */ @TableField("RCV_WRH_NUM") private String receiveWarehouseNumber; /** - * 采购组编码(字典:PRCH_GRP_TP);推送ERP(必须) - */ + * 采购组编码(字典:PRCH_GRP_TP);推送ERP(必须) + */ @TableField("PRCH_GRP") private String purchaseGroup; /** - * 货币码(字典:CUR);推送ERP(必须) - */ + * 货币码(字典:CUR);推送ERP(必须) + */ @TableField("CUR_NUM") private String currencyNumber; /** - * 汇率;推送ERP - */ + * 汇率;推送ERP + */ @TableField("EXCH_RTE") private BigDecimal exchangeRate; /** - * 合同纸质合同号;推送ERP(必须) - */ + * 合同纸质合同号;推送ERP(必须) + */ @TableField("PPR_CTRT_NUM") private String paperContractNumber; /** - * 小协议号;推送ERP - */ + * 小协议号;推送ERP + */ @TableField("AGR_NUM") private String agreementNumber; /** - * 备注;推送ERP - */ + * 备注;推送ERP + */ @TableField("RMK") private String remark; /** - * 代理方编码;推送ERP - */ + * 代理方编码;推送ERP + */ @TableField("AGT_NUM") private String agentNumber; /** - * 代理方名称 - */ + * 代理方名称 + */ @TableField("AGT_NAME") private String agentName; /** - * 订单编码 - */ + * 订单编码 + */ // @TableField("ORD_NUM") // private String orderNumber; /** - * 系统合同编号 - */ + * 系统合同编号 + */ @TableField("CTRT_NUM") private String contractNumber; /** - * 物料编码 - */ + * 物料编码 + */ @TableField("MTRL_NUM") private String materialNumber; /** - * 物料名称 - */ + * 物料名称 + */ @TableField("MTRL_NAME") private String materialName; /** - * 合同名称 - */ + * 合同名称 + */ @TableField("CTRT_NAME") private String contractName; /** - * 小户头号 - */ + * 小户头号 + */ @TableField("TNT_NUM") private String tenantNumber; /** - * ERP公司编号 - */ + * ERP公司编号 + */ @TableField("ERP_PRCH_CPN_NUM") private String erpPurchaseCompanyNumber; /** - * ERP公司名称 - */ + * ERP公司名称 + */ @TableField("ERP_PRCH_CPN_NAME") private String erpPurchaseCompanyName; /** - * ERP客商公司编码 - */ + * ERP客商公司编码 + */ @TableField("ERP_SALE_CPN_NUM") private String erpSalesCompanyNumber; /** - * ERP客商公司名称 - */ + * ERP客商公司名称 + */ @TableField("ERP_SALE_CPN_NAME") private String erpSalesCompanyName; /** - * 采购组织名称 - */ + * 采购组织名称 + */ @TableField("PRCH_ORGZ_NAME") private String purchaseOrganizationName; /** - * ERP状态(字典: ERP_REQ_STS) - */ + * ERP状态(字典: ERP_REQ_STS) + */ @TableField("ERP_STS") private String erpStatus; /** - * 请求ERP失败原因 - */ + * 请求ERP失败原因 + */ @TableField("CAUS") private String cause; /** - * 订单状态(字典:PRCH_ORD_STS) - */ + * 订单状态(字典:PRCH_ORD_STS) + */ @TableField("STS") private String status; /** - * 采购组名称 - */ + * 采购组名称 + */ @TableField("PRCH_GRP_NAME") private String purchaseGroupName; /** @@ -212,4 +217,53 @@ public class OriginalMaterialProcessingDO extends BusinessBaseDO { */ @TableField("IS_PUSH") private int isPush; + /** + * 计量单位 + */ + @TableField("UNT") + private String unit; + /** + * 物料类型 + */ + @TableField("MTRL_TP") + private String mtrlTp; + + /** + * 发货工厂名称 + */ + @TableField("SND_FACT_NAME") + private String sendFactoryName; + /** + * 发货工厂编码 + */ + @TableField("SND_FACT_NUM") + private String sendFactoryNumber; + + /** + * 发货库位名称 + */ + @TableField("SND_WRH_NAME") + private String sendWarehouseName; + /** + * 发货库位编码 + */ + @TableField("SND_WRH_NUM") + private String sendWarehouseNumber; + /** + * 物权转移(字典:ASY_MTNG_TP) + */ + @TableField("MTNG_TP") + private String meteringType; + + /** + * 订单分类(字典:SPLY_BSN_TP) + * + */ + @TableField("SPLY_BSN_TP") + private String splyBsnTp; + /** + * 关联订单ID + */ + @TableField("REL_ORD_ID") + private Long relatedOrderId; } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDetailDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDetailDO.java index fc654a67..befbad4e 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDetailDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDetailDO.java @@ -95,7 +95,7 @@ public class OriginalMaterialProcessingDetailDO extends BusinessBaseDO { * 计量单位 */ @TableField("UOM") - private String uom; + private String unit; /** * 暂估数量 */ @@ -177,4 +177,20 @@ public class OriginalMaterialProcessingDetailDO extends BusinessBaseDO { @TableField("PRC_CND") private String priceCondition; + /** + * 金属元素缩写 + */ + @TableField("ELEM_ABBR") + private String elementAbbreviation; + /** + * 金属元素名称 + */ + @TableField("ELEM_NAME") + private String elementName; + /** + * 金属元素编码 + */ + @TableField("ELEM_NUM") + private String elementNumber; + } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/originalmaterialprocessing/OriginalMaterialProcessingDetailMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/originalmaterialprocessing/OriginalMaterialProcessingDetailMapper.java index 2ed99506..3686708a 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/originalmaterialprocessing/OriginalMaterialProcessingDetailMapper.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/originalmaterialprocessing/OriginalMaterialProcessingDetailMapper.java @@ -30,7 +30,7 @@ public interface OriginalMaterialProcessingDetailMapper extends BaseMapperX insertBatchSomeColumn(List originalMaterialProcessingDetailSaveReqVOS) { List originalMaterialProcessingDetails = BeanUtils.toBean(originalMaterialProcessingDetailSaveReqVOS, OriginalMaterialProcessingDetailDO.class); + originalMaterialProcessingDetails.forEach(this::setElemInfo); originalMaterialProcessingDetailMapper.insertBatch(originalMaterialProcessingDetails); return BeanUtils.toBean(originalMaterialProcessingDetails, OriginalMaterialProcessingDetailRespVO.class); } @@ -101,6 +111,7 @@ public class OriginalMaterialProcessingDetailServiceImpl implements OriginalMate @Override public void updateBatchSomeColumn(List originalMaterialProcessingDetailSaveReqVOS) { List updateList = BeanUtils.toBean(originalMaterialProcessingDetailSaveReqVOS, OriginalMaterialProcessingDetailDO.class); + updateList.forEach(this::setElemInfo); originalMaterialProcessingDetailMapper.insertOrUpdate(updateList); } @@ -114,5 +125,18 @@ public class OriginalMaterialProcessingDetailServiceImpl implements OriginalMate public void deleteOriginalMaterialProcessingDetailByOrderIds(List orderIds) { originalMaterialProcessingDetailMapper.delete(OriginalMaterialProcessingDetailDO::getOrderId,orderIds); } + private void setElemInfo(OriginalMaterialProcessingDetailDO originalMaterialProcessingDetailDO) { + if (originalMaterialProcessingDetailDO.getElementAbbreviation() == null) { + return; + } + ElementDO elementBySymbol = elementService.getElementBySymbol(originalMaterialProcessingDetailDO.getElementAbbreviation()); + if (elementBySymbol != null) { + originalMaterialProcessingDetailDO.setElementName(elementBySymbol.getName()); + originalMaterialProcessingDetailDO.setElementNumber(elementBySymbol.getCoding()); + } else { + log.warn("元素【{}】不存在,订单ID【{}】", originalMaterialProcessingDetailDO.getElementAbbreviation(), originalMaterialProcessingDetailDO.getOrderId()); + } + + } } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/originalmaterialprocessing/OriginalMaterialProcessingService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/originalmaterialprocessing/OriginalMaterialProcessingService.java index d4c59eb1..28d7ea65 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/originalmaterialprocessing/OriginalMaterialProcessingService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/originalmaterialprocessing/OriginalMaterialProcessingService.java @@ -32,6 +32,7 @@ public interface OriginalMaterialProcessingService { */ OriginalMaterialProcessingRespVO createOriginalMaterialProcessing(@Valid OriginalMaterialProcessingSaveReqVO createReqVO); + List createBatchOriginalMaterialProcessing(@Valid List createReqVO); /** * 更新采购订单 * diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/originalmaterialprocessing/OriginalMaterialProcessingServiceImplImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/originalmaterialprocessing/OriginalMaterialProcessingServiceImplImpl.java index 4afe09fd..79838ee2 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/originalmaterialprocessing/OriginalMaterialProcessingServiceImplImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/originalmaterialprocessing/OriginalMaterialProcessingServiceImplImpl.java @@ -82,6 +82,28 @@ public class OriginalMaterialProcessingServiceImplImpl implements OriginalMateri return bean; } + @Override + public List createBatchOriginalMaterialProcessing(List createReqVOS) { + List respVOS = new ArrayList<>(); + createReqVOS.forEach(createReqVO->{ + // 插入 + OriginalMaterialProcessingDO originalMaterialProcessingDO = BeanUtils.toBean(createReqVO, OriginalMaterialProcessingDO.class); + originalMaterialProcessingDO.setIsPush(0); + originalMaterialProcessingDO.setStatus(OrderStatusEnum.IN_PROGRESS.getCode()); + originalMaterialProcessingDO.setSystemOrderNumber(this.generateOrderNumber("")); + originalMaterialProcessingMapper.insert(originalMaterialProcessingDO); + OriginalMaterialProcessingRespVO bean = BeanUtils.toBean(originalMaterialProcessingDO, OriginalMaterialProcessingRespVO.class); + //批量插入来料加工订单明细 + if (createReqVO.getDetails() != null && !createReqVO.getDetails().isEmpty()) { + createReqVO.getDetails().forEach(entrustOrderDetail -> entrustOrderDetail.setOrderId(originalMaterialProcessingDO.getId())); + List originalMaterialProcessingDetailRespVOS = originalMaterialProcessingDetailService.insertBatchSomeColumn(createReqVO.getDetails()); + bean.setDetails(originalMaterialProcessingDetailRespVOS); + } + respVOS.add(bean); + }); + return respVOS; + } + private String generateOrderNumber(String materialType) { return sequenceApi.getNextSequence("ENTRUST_ORDER_NUMBER", null, null).getData(); } @@ -233,8 +255,6 @@ public class OriginalMaterialProcessingServiceImplImpl implements OriginalMateri @Override @Transactional(rollbackFor = Exception.class) public void closeOrder(List ids) { - EntrustOrderOrderDO updateObj = new EntrustOrderOrderDO(); - updateObj.setStatus(OrderStatusEnum.CLOSED.getCode()); originalMaterialProcessingMapper.update(new LambdaUpdateWrapper() .set(OriginalMaterialProcessingDO::getStatus, OrderStatusEnum.CLOSED.getCode()) .in(OriginalMaterialProcessingDO::getId, ids));