feat(aps): 新增排产单明细合并功能及优化界面展示

- 在排产单明细表格中添加多选合并功能
- 实现排产单明细合并对话框及合并逻辑
- 优化排产单明细表格列配置和表单布局
- 添加合并校验和接收产需单API接口
- 重构订单绑定解绑逻辑提升用户体验
- 添加ScheduleDetailCoilBind组件引入
This commit is contained in:
2026-06-29 16:07:29 +08:00
parent da01bfaa48
commit ee376f922f
19 changed files with 1547 additions and 154 deletions

View File

@@ -128,13 +128,9 @@ public class SchProdScheduleItem extends BaseEntity {
*/
private String returnReason;
/**
* 排产单主表ID
* 排产明细关联主表ID逗号分隔未合并存单值合并后存多个
*/
private String scheduleIds;
/**
* 来源销售订单明细ID溯源原始订单规格
*/
private String orderDetailIds;
private String scheduleDetailIds;
/**
* 规格 例1.0X1250
*/

View File

@@ -154,14 +154,9 @@ public class SchProdScheduleItemBo extends BaseEntity {
private String returnReason;
/**
* 排产单主表ID
* 排产明细关联主表ID逗号分隔未合并存单值合并后存多个
*/
private String scheduleIds;
/**
* 来源销售订单明细ID溯源原始订单规格
*/
private String orderDetailIds;
private String scheduleDetailIds;
/**
* 规格 例1.0X1250

View File

@@ -0,0 +1,22 @@
package com.klp.flow.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 排产单合并校验请求对象
*
* @author klp
* @date 2026-06-29
*/
@Data
public class SchProdScheduleItemMergeValidateBo {
/**
* 待合并记录ID列表
*/
@NotEmpty(message = "待合并记录ID不能为空")
private List<Long> ids;
}

View File

@@ -0,0 +1,21 @@
package com.klp.flow.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 产需单接收请求对象
*
* @author klp
* @date 2026-06-29
*/
@Data
public class SchProdScheduleItemReceiveBo {
/**
* 排产单主表ID产需单ID
*/
@NotNull(message = "排产单主表ID不能为空")
private Long scheduleId;
}

View File

@@ -0,0 +1,115 @@
package com.klp.flow.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* 排产单合并校验视图对象
*
* @author klp
* @date 2026-06-29
*/
@Data
public class SchProdScheduleItemMergeValidateVo {
/** 是否所有 header 字段一致 */
private Boolean consistent;
/** 有差异的字段列表 */
private List<FieldDiff> diffs;
/** 被合并记录快照 */
private List<ItemInfo> items;
/** 汇总信息 */
private MergedSummary summary;
/**
* 字段差异
*/
@Data
public static class FieldDiff {
/** 字段名Java属性名 */
private String fieldName;
/** 字段中文标签 */
private String fieldLabel;
/** scheduleId → 值 */
private Map<String, Object> values;
}
/**
* 被合并记录快照
*/
@Data
public static class ItemInfo {
/** sch_prod_schedule_item 主键 */
private Long itemId;
/** 第一个源 schedule_id从 scheduleIds 解析) */
private Long sourceScheduleId;
/** 排产单号 */
private String scheduleNo;
/** 订货单位 */
private String customerName;
/** 品名 */
private String productType;
/** 规格 */
private String spec;
/** 材质 */
private String material;
/** 排产吨数 */
private BigDecimal scheduleWeight;
/** 来源排产明细ID串 */
private String scheduleDetailIds;
/** 业务员 */
private String businessUser;
/** 联系电话 */
private String businessPhone;
/** 交货期(天) */
private Long deliveryCycle;
/** 产品用途 */
private String usePurpose;
/** 厚度公差 */
private String thicknessTolerance;
/** 宽度公差 */
private String widthTolerance;
/** 表面质量 */
private String surfaceQuality;
/** 表面处理 */
private String surfaceTreatment;
/** 内径尺寸 */
private String innerDiameter;
/** 外径要求 */
private String outerDiameter;
/** 包装要求 */
private String packReq;
/** 切边要求 */
private String cutEdgeReq;
/** 单件重量 */
private String singleCoilWeight;
/** 交货重量偏差 */
private String weightDeviation;
/** 其他技术要求 */
private String otherTechReq;
/** 付款情况说明 */
private String paymentDesc;
/** 关联销售合同号 */
private String relContractNo;
/** 排产总计划吨数 */
private BigDecimal totalPlanWeight;
/** 订单日期 */
private java.util.Date orderDate;
}
/**
* 合并汇总
*/
@Data
public static class MergedSummary {
/** 明细条数 */
private int itemCount;
/** 合计排产吨数 */
private BigDecimal totalScheduleWeight;
}
}

View File

@@ -8,6 +8,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
/**
@@ -40,6 +41,8 @@ public class SchProdScheduleItemVo {
*/
@ExcelProperty(value = "生产日期", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "和=合同号组成业务关联键")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date prodDate;
/**
@@ -181,17 +184,10 @@ public class SchProdScheduleItemVo {
private String returnReason;
/**
* 排产单主表ID
* 排产明细关联主表ID逗号分隔
*/
@ExcelProperty(value = "排产主表ID")
private String scheduleIds;
/**
* 来源销售订单明细ID溯源原始订单规格
*/
@ExcelProperty(value = "来源销售订单明细ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "溯=源原始订单规格")
private String orderDetailIds;
@ExcelProperty(value = "排产明细关联主表ID")
private String scheduleDetailIds;
/**
* 规格 例1.0X1250