feat(oms):出入库导入按编号自动匹配名称并校验客户/物料存在性,模板列位改为动态识别
需求:①入库业务单导入模板只填物料编号+客户编号,物料名称/客户名称按编号自动匹配库中数据 ②③出库导入校验客户/物料是否已存在,不存在提示"进行维护" ④库中查询结果为空(确无数据)时报错 一、入库导入(ReservationStockInOrderImpl.parseStockInExcel): 1. 物料逐编号查库,缺失料号收集后一次性报错"物料[xx]不存在,请先维护物料信息后再导入" 2. 明细新增客户编号:去重后查库,为空报错"客户[编号]不存在,请先维护客户信息后再导入"; 查到则以该客户为单据货主并自动匹配名称;与物料归属货主不一致时拦截并提示两者编号 3. 明细回填库中物料名称;未填客户编号时维持原"货主取自物料"逻辑,兼容老模板 二、出库导入(parseExcelFile): 1. 物料/客户校验前移到落库前(原为先落库后查客户,报错会留半截数据) 2. 物料查不到收集后报错维护提示;客户查不到报错维护提示,客户ID/名称改取库中匹配值 (替换仅返回id且查不到时静默存null的queryShipperId) 3. 產品編號/客户編号漏填的行直接报错提示补全 三、模板解析改为按列头文字动态定位列(繁简体归一化),列/行顺序调整不影响解析, 识别不到时回落老模板固定列位,老模板行为不变: 1. StockInExcelListener(入库):以產品編號为锚点识别列头行,新增客戶編號列支持 2. DynamicDeliveryExcelListener(出库):左右分栏各自锚点识别;送货日期/线号/车次/ 发票张数/小计/纪录合共改按标签文字定位,行号列号不再写死 四、Mapper:ReservationStockOutOrderMapper新增queryCustomerByCode(按组织查询, USER_MEMBER_CODE或USER_SHIPPER.CUSTOMER_NC_CODE任一命中),删除queryShipperId
This commit is contained in:
+10
-2
@@ -470,8 +470,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="boxPalletNo" column="box_pallet_no"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="queryShipperId" resultType="java.lang.Long">
|
||||
select max(user_id) as user_id from NGWL_TEST_USER."USER" where ORGANIZATION_ID = #{organizationId} and USER_MEMBER_CODE = #{userMemberCode} and DEL_FLAG = 1
|
||||
<!-- 按客户编号+组织查询客户(用户表):出入库导入校验客户存在性并自动匹配客户名称,结果为空表示客户不存在。
|
||||
客户编码有两处维护:USER.USER_MEMBER_CODE(客户编码)与 USER_SHIPPER.CUSTOMER_NC_CODE(NC客户代码,即单据khdm),
|
||||
模板填写的客户编号两者任一命中即可匹配到客户 -->
|
||||
<select id="queryCustomerByCode" resultType="com.mhd.common.core.domain.po.UserPo">
|
||||
select max(u.user_id) as user_id, max(u.user_name) as user_name, max(u.user_member_code) as user_member_code
|
||||
from NGWL_TEST_USER."USER" u
|
||||
left join NGWL_TEST_USER.USER_SHIPPER us
|
||||
on us.USER_ID = u.USER_ID and us.DEL_FLAG = 1
|
||||
where u.ORGANIZATION_ID = #{organizationId} and u.DEL_FLAG = 1
|
||||
and (u.USER_MEMBER_CODE = #{userMemberCode} or us.CUSTOMER_NC_CODE = #{userMemberCode})
|
||||
</select>
|
||||
|
||||
<select id="countByOrderNumberPrefix" resultType="java.lang.Integer" parameterType="java.lang.String">
|
||||
|
||||
Reference in New Issue
Block a user