feat(erp): 新增ERP接口对接功能

- 新增ErpExecution、ErpInOutBoundOrder等多个ERP实体类
- 修改IToErpService接口,调整createWorkshopInboundOrder方法参数
- 重构ToErpServiceImpl实现类,完善车间入库单和其它出入库单逻辑
- 新增WipTransferDoc及WipTransferDocD等工单转移相关实体类
- 调整ToWmsServiceImpl中二楼入库创建工艺单的调用方式
- 完善ERP接口请求URL配置及数据封装处理
- 优化作业生成流程中的异常处理机制
This commit is contained in:
liuhanqing
2025-12-12 10:29:04 +08:00
parent 0290bdaa61
commit 2885ba7323
13 changed files with 561 additions and 142 deletions

View File

@@ -0,0 +1,16 @@
package com.ruoyi.api.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class ErpExecution {
private String code;
private String sql_code;
private String description;
private String token_id;
}

View File

@@ -0,0 +1,54 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class ErpInOutBoundOrder {
//单号 入库 11T1-202512020001 出库 11T2-202512020001
@Alias("DOC_NO")
private String DOC_NO;
//单据类型.单据类型 入库 11T1 出库 11T2
@Alias("DOC_ID_DOC_CODE")
private String DOC_ID_DOC_CODE;
//单据类型.组织类型.工厂/储运.工厂/储运编号 B0801
@Alias("DOC_ID_Owner_Org_PLANT_CODR")
private String DOC_ID_Owner_Org_PLANT_CODR;
//单据日期
@Alias("DOC_DATE")
private String DOC_DATE;
//交易日期
@Alias("TRANSACTION_DATE")
private String TRANSACTION_DATE;
//关联员工.员工编号
@Alias("Owner_Emp_EMPLOYEE_CODE")
private String Owner_Emp_EMPLOYEE_CODE;
//组织类型.工厂/储运.工厂/储运编号 B0801
@Alias("Owner_Org_PLANT_PLANT_CODE")
private String Owner_Org_PLANT_PLANT_CODE;
//单据状态属性 N
@Alias("ApproveStatus")
private String ApproveStatus;
//单据性质 11
@Alias("CATEGORY")
private String CATEGORY;
//公司.公司编号 B08
@Alias("COMPANY_ID_COMPANY_CODE")
private String COMPANY_ID_COMPANY_CODE;
//关联部门.行政单元编码
@Alias("Owner_Dept_ADMIN_UNIT_CODE")
private String Owner_Dept_ADMIN_UNIT_CODE;
//库存影响
@Alias("STOCK_ACTION")
private Integer STOCK_ACTION;
//库存交易单单身
@Alias("TRANSACTION_DOC_D")
private List<ErpTransactionDocD> TRANSACTION_DOC_D;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpInterfaceParam<T> {
@Alias("std_data")
private ErpStdData<T> std_data;
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.api.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpParameter<T> {
private List<T> datas;
private ErpResult result;
}

View File

@@ -0,0 +1,13 @@
package com.ruoyi.api.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpResult {
private ErpSuccess success;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.api.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpStdData<T> {
private ErpExecution execution;
private ErpParameter<T> parameter;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpSuccess {
@Alias("DOC_NO")
private String DOC_NO;
}

View File

@@ -0,0 +1,39 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpTransactionDocD {
//序号
@Alias("SequenceNumber")
private Integer SequenceNumber;
//品号.品号
@Alias("ITEM_ID_ITEM_CODE")
private String ITEM_ID_ITEM_CODE;
//品名
@Alias("ITEM_DESCRIPTION")
private String ITEM_DESCRIPTION;
//规格
@Alias("ITEM_SPECIFICATION")
private String ITEM_SPECIFICATION;
//业务数量
@Alias("BUSINESS_QTY")
private Double BUSINESS_QTY;
//仓库.仓库编号
@Alias("WAREHOUSE_ID_WAREHOUSE_CODE")
private String WAREHOUSE_ID_WAREHOUSE_CODE;
//仓库.组织类型.工厂/储运.工厂/储运编号
@Alias("WAREHOUSE_ID_Owner_Org_PLANT_PLANT_CODE")
private String WAREHOUSE_ID_Owner_Org_PLANT_PLANT_CODE;
//业务单位.单位编号
@Alias("BUSINESS_UNIT_ID_UNIT_CODE")
private String BUSINESS_UNIT_ID_UNIT_CODE;
//单据来源
@Alias("GENERATE_SOURCE")
private String GENERATE_SOURCE;
}

View File

@@ -0,0 +1,82 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* WIP 转移文档主实体类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WipTransferDoc {
/**
* 单号 5C21-2501000000
*/
@Alias("DOC_NO")
private String DOC_NO;
/**
* 单据类型, 单据类型 5C21
*/
@Alias("DOC_ID_DOC_CODE")
private String DOC_ID_DOC_CODE;
/**
* 单据日期
*/
@Alias("DOC_DATE")
private String DOC_DATE;
/**
* 移出地, 工作中心, 工作中心编码
*/
@Alias("SOURCE_ID_WORK_CENTER_WORK_CENTER_CODE")
private String SOURCE_ID_WORK_CENTER_WORK_CENTER_CODE;
/**
* 移出部门, 行政单元编码
*/
@Alias("FROM_ADMIN_UNIT_ID_ADMIN_UNIT_CODE")
private String FROM_ADMIN_UNIT_ID_ADMIN_UNIT_CODE;
/**
* 关联部门, 行政单元编码
*/
@Alias("Owner_Dept_ADMIN_UNIT_CODE")
private String Owner_Dept_ADMIN_UNIT_CODE;
/**
* 移出部门, 生效日期
*/
@Alias("Owner_Dept_START_DATE")
private String Owner_Dept_START_DATE;
/**
* 关联员工, 员工编号
*/
@Alias("Owner_Emp_EMPLOYEE_CODE")
private String Owner_Emp_EMPLOYEE_CODE;
/**
* 备注
*/
@Alias("REMARK")
private String REMARK;
/**
* 限用仓库, 仓库编号
*/
@Alias("WAREHOUSE_ID_WAREHOUSE_CODE")
private String WAREHOUSE_ID_WAREHOUSE_CODE;
/**
* WIP 转移文档明细列表
*/
@Alias("WIP_TRANSFER_DOC_D")
private List<WipTransferDocD> WIP_TRANSFER_DOC_D;
}

View File

@@ -0,0 +1,110 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* WIP 转移文档明细项实体类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WipTransferDocD {
/**
* 工单单号, 单号
*/
@Alias("MO_ID_DOC_NO")
private String MO_ID_DOC_NO;
/**
* 移入部门, 行政单元编码
*/
@Alias("TO_ADMIN_UNIT_ID_ADMIN_UNIT_CODE")
private String TO_ADMIN_UNIT_ID_ADMIN_UNIT_CODE;
/**
* 移入部门, 生效日期
*/
@Alias("TO_ADMIN_UNIT_ID_START_DATE")
private String TO_ADMIN_UNIT_ID_START_DATE;
/**
* 数量
*/
@Alias("QTY")
private String QTY;
/**
* 产品品号, 品号
*/
@Alias("ITEM_ID_ITEM_CODE")
private String ITEM_ID_ITEM_CODE;
/**
* 产品品名
*/
@Alias("ITEM_NAME")
private String ITEM_NAME;
/**
* 产品规格
*/
@Alias("ITEM_SPECIFICATION")
private String ITEM_SPECIFICATION;
/**
* 移入地, 仓库, 仓库编号
*/
@Alias("SOURCE_ID_WAREHOUSE_WAREHOUSE_CODE")
private String SOURCE_ID_WAREHOUSE_WAREHOUSE_CODE;
/**
* 移入地, 仓库, 组织类型, 公司
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_COMPANY_COMPANY_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_COMPANY_COMPANY_CODE;
/**
* 移入地, 仓库, 组织类型, 销售
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SALES_CENTER_SALES_CENTER_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_SALES_CENTER_SALES_CENTER_CODE;
/**
* 移入地, 仓库, 组织类型, 采购
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SUPPLY_CENTER_SUPPLY_CENTER_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_SUPPLY_CENTER_SUPPLY_CENTER_CODE;
/**
* 移入地, 仓库, 组织类型, 营运
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_OPERATION_CENTER_OPERATION_CENTER_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_OPERATION_CENTER_OPERATION_CENTER_CODE;
/**
* 移入地, 仓库, 组织类型, 工厂
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SHOP_SHOP_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_SHOP_SHOP_CODE;
/**
* 移入地, 仓库, 组织类型, 服务
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SERVICE_CENTER_SERVICE_CENTER_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_SERVICE_CENTER_SERVICE_CENTER_CODE;
/**
* 移出工序, 序号
*/
@Alias("FROM_MO_ROUTING_D_ID_SequenceNumber")
private Integer FROM_MO_ROUTING_D_ID_SequenceNumber;
/**
* 移出工序, 工单工艺信息, 工单号
*/
@Alias("FROM_MO_ROUTING_D_ID_Parent_MO_ID_DOC_NO")
private String FROM_MO_ROUTING_D_ID_Parent_MO_ID_DOC_NO;
}