From eecb7fcae665bd4c199d446715fd08925d732192 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 4 Jul 2026 13:38:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(erp):=20=E8=A1=A5=E5=85=85=E5=90=88?= =?UTF-8?q?=E5=90=8C=E4=BF=A1=E6=81=AF=E5=AD=97=E6=AE=B5=E5=B9=B6=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E9=87=87=E8=B4=AD=E8=AE=A1=E5=88=92=E5=85=B3=E8=81=94?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在ErpContractOptionVo中添加crm_order全量字段包括订单类型、交货日期、订单状态等 - 添加@JsonFormat注解支持日期格式化 - 新增selectContractsByOrderCodes方法支持按合同编号批量查询 - 更新SQL映射文件中的selectContractPage和新增selectContractsByOrderCodes查询 - 在采购计划服务实现中查询时刷新进度并关联合同详情 - 在前端界面中新增关联合同标签页显示合同详细信息表格 - 重构采购到货界面将采购要求和到货明细合并显示 - 添加合同状态文本转换方法和相关样式定义 --- .../erp/domain/vo/ErpContractOptionVo.java | 99 +++++++++++++++++ .../klp/erp/domain/vo/ErpPurchasePlanVo.java | 3 + .../klp/erp/mapper/ErpPurchasePlanMapper.java | 5 + .../impl/ErpPurchasePlanServiceImpl.java | 9 ++ .../mapper/erp/ErpPurchasePlanMapper.xml | 100 ++++++++++++++++-- .../src/views/erp/purchaseDelivery/index.vue | 49 +++++++-- klp-ui/src/views/erp/purchasePlan/index.vue | 28 +++++ 7 files changed, 276 insertions(+), 17 deletions(-) diff --git a/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpContractOptionVo.java b/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpContractOptionVo.java index 1e9f0eaad..3043ceb48 100644 --- a/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpContractOptionVo.java +++ b/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpContractOptionVo.java @@ -1,9 +1,11 @@ package com.klp.erp.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; +import java.util.Date; /** * 采购计划左侧「合同列表」视图对象:crm_order + 该合同已有的采购计划数。 @@ -42,4 +44,101 @@ public class ErpContractOptionVo implements Serializable { /** 该合同已挂接的采购计划数 */ private Integer planCount; + + // ====== 以下为 crm_order 全量补充字段 ====== + + /** 订单类型:pre-预订单,formal-正式订单 */ + private Long orderType; + + /** 交货日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date deliveryDate; + + /** 订单状态 */ + private Long orderStatus; + + /** 财务状态 */ + private Long financeStatus; + + /** 未结款数额 */ + private BigDecimal unpaidAmount; + + /** 签订时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date signTime; + + /** 签订地点 */ + private String signLocation; + + /** 产品内容 */ + private String productContent; + + /** 合同内容 */ + private String contractContent; + + /** 供方地址 */ + private String supplierAddress; + + /** 供方电话 */ + private String supplierPhone; + + /** 供方开户行 */ + private String supplierBank; + + /** 供方账号 */ + private String supplierAccount; + + /** 供方税号 */ + private String supplierTaxNo; + + /** 需方地址 */ + private String customerAddress; + + /** 需方电话 */ + private String customerPhone; + + /** 需方开户行 */ + private String customerBank; + + /** 需方账号 */ + private String customerAccount; + + /** 需方税号 */ + private String customerTaxNo; + + /** 技术附件 */ + private String techAnnex; + + /** 商务附件 */ + private String businessAnnex; + + /** 排产函 */ + private String productionSchedule; + + /** 算单价备注 */ + private String unitPriceRemark; + + /** 应付定金(万元) */ + private BigDecimal depositPayable; + + /** 已付定金(万元) */ + private BigDecimal depositPaid; + + /** 定金比例(%) */ + private BigDecimal depositRatio; + + /** 合同状态 0=草稿 1=生效 2=作废 3=已完成 */ + private Long status; + + /** 关联合同ID */ + private Long contractId; + + /** 附件 */ + private String annexFiles; + + /** 备注 */ + private String remark; + + /** 是否置顶 */ + private Integer isTop; } diff --git a/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpPurchasePlanVo.java b/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpPurchasePlanVo.java index 3700fb25e..c3aecdd64 100644 --- a/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpPurchasePlanVo.java +++ b/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpPurchasePlanVo.java @@ -86,6 +86,9 @@ public class ErpPurchasePlanVo implements Serializable { /** 关联销售合同编号(展示用) */ private List contractCodes; + /** 关联销售合同信息(来自 crm_order,含客户、金额、销售员等) */ + private List contractInfos; + /** 审核历史(每次审核/驳回留痕) */ private List auditLogs; } diff --git a/klp-erp/src/main/java/com/klp/erp/mapper/ErpPurchasePlanMapper.java b/klp-erp/src/main/java/com/klp/erp/mapper/ErpPurchasePlanMapper.java index 00c2cb581..c49b3a72b 100644 --- a/klp-erp/src/main/java/com/klp/erp/mapper/ErpPurchasePlanMapper.java +++ b/klp-erp/src/main/java/com/klp/erp/mapper/ErpPurchasePlanMapper.java @@ -61,4 +61,9 @@ public interface ErpPurchasePlanMapper extends BaseMapperPlus selectDistinctManufacturers(@Param("kw") String kw); + + /** + * 根据合同编号(order_code)批量查询 crm_order 合同信息。 + */ + List selectContractsByOrderCodes(@Param("codes") List codes); } diff --git a/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java b/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java index 6f7e5d341..b2967a137 100644 --- a/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java +++ b/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java @@ -73,6 +73,8 @@ public class ErpPurchasePlanServiceImpl implements IErpPurchasePlanService { @Override public ErpPurchasePlanVo queryById(Long planId) { + // 刷新到货进度(含在途统计),确保每次查看都是最新数据 + refreshProgress(planId); ErpPurchasePlanVo vo = baseMapper.selectVoById(planId); if (vo == null) { return null; @@ -88,6 +90,10 @@ public class ErpPurchasePlanServiceImpl implements IErpPurchasePlanService { if (!orderIds.isEmpty()) { vo.setContractCodes(baseMapper.selectOrderCodes(orderIds)); } + // 关联合同详情(从 crm_order 按 contractCodes 批量查) + if (vo.getContractCodes() != null && !vo.getContractCodes().isEmpty()) { + vo.setContractInfos(baseMapper.selectContractsByOrderCodes(vo.getContractCodes())); + } fillProgress(vo); // 审核历史(含每次驳回理由) vo.setAuditLogs(queryAuditLogs(planId)); @@ -484,6 +490,9 @@ public class ErpPurchasePlanServiceImpl implements IErpPurchasePlanService { if (!orderIds.isEmpty()) { v.setContractCodes(baseMapper.selectOrderCodes(orderIds)); } + if (v.getContractCodes() != null && !v.getContractCodes().isEmpty()) { + v.setContractInfos(baseMapper.selectContractsByOrderCodes(v.getContractCodes())); + } } return TableDataInfo.build(result); } diff --git a/klp-erp/src/main/resources/mapper/erp/ErpPurchasePlanMapper.xml b/klp-erp/src/main/resources/mapper/erp/ErpPurchasePlanMapper.xml index 9bc505264..f4713426f 100644 --- a/klp-erp/src/main/resources/mapper/erp/ErpPurchasePlanMapper.xml +++ b/klp-erp/src/main/resources/mapper/erp/ErpPurchasePlanMapper.xml @@ -32,17 +32,48 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY order_id, item_id - + + + +