PC出库单商品名称编码查询修改

This commit is contained in:
秦鸿展
2026-03-31 10:40:59 +08:00
parent 8dda7c17b6
commit c48ff1babd
4 changed files with 61 additions and 0 deletions
@@ -407,6 +407,12 @@ public class StockOutOrderDO extends BaseVOEntity {
@ApiModelProperty(name = "审核时间查询条件结束日期")
private String auditTimeEnd;
@ApiModelProperty("出库明细-物料名称(商品名称),模糊匹配")
private String materialName;
@ApiModelProperty("出库明细-物料编码,模糊匹配")
private String materialCode;
@ApiModelProperty(name = "已分配数量总数量")
private BigDecimal alreadyAllocationQuantityAll;
}
@@ -36,6 +36,13 @@ public class StockOutOrderAssembler {
stockOutOrderDO.setAuditTimeStart(stockOutOrderDTO.getAuditTimeStart());
stockOutOrderDO.setAuditTimeEnd(stockOutOrderDTO.getAuditTimeEnd());
stockOutOrderDO.setTabType(stockOutOrderDTO.getTabType());
// 列表筛选:前端常传「名称 (编码)」展示串,库内多为纯名称,去掉末尾括号段再 LIKE
if (stockOutOrderDTO.getMaterialName() != null && !stockOutOrderDTO.getMaterialName().isEmpty()) {
String normalized = normalizeDetailMaterialNameForQuery(stockOutOrderDTO.getMaterialName());
stockOutOrderDO.setMaterialName(normalized.isEmpty()
? stockOutOrderDTO.getMaterialName().trim()
: normalized);
}
return stockOutOrderDO;
}
@@ -83,4 +90,24 @@ public class StockOutOrderAssembler {
return stockOutOrderDO;
}
/**
* 去掉物料展示名末尾的「 (xxx) / (xxx)」等,便于与库内 material_name 模糊匹配。
*/
private static String normalizeDetailMaterialNameForQuery(String raw) {
if (raw == null) {
return null;
}
String s = raw.trim();
// 循环去掉末尾多组括号(兼容「名称 (编码)」或重复后缀)
String next;
do {
next = s.replaceFirst("[\\s\\u3000]*[(][^)]*[)]\\s*$", "").trim();
if (next.equals(s)) {
break;
}
s = next;
} while (!s.isEmpty());
return s;
}
}
@@ -397,6 +397,12 @@ public class StockOutOrderDTO extends StockOutOrderBaseDTO {
@ApiModelProperty(name = "审核时间查询条件结束日期")
private String auditTimeEnd;
@ApiModelProperty("出库明细-物料名称(商品名称),模糊匹配,与前端参数 materialName 一致")
private String materialName;
@ApiModelProperty("出库明细-物料编码,模糊匹配,与前端参数 materialCode 一致")
private String materialCode;
@ApiModelProperty("出库交接图片,PDA出库交接时上传的照片,多张图片以逗号隔开")
private String pictureApp;
}
@@ -286,6 +286,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="auditTimeEnd != null and auditTimeEnd != ''">
and date_format(a.audit_time,'%Y-%m-%d') &lt;= #{auditTimeEnd}
</if>
<!-- 出库明细:物料名称、物料编码(同一明细行同时满足;与出库明细口径一致)。关联 material_base_info 避免明细冗余名称与主档不一致时筛不到 -->
<if test="(materialName != null and materialName != '') or (materialCode != null and materialCode != '')">
and exists (
select 1 from out_material_detail omd
left join material_base_info mb on omd.material_base_info_id = mb.material_base_info_id and mb.del_flag = 1
where omd.out_order_number = a.out_order_number
and omd.del_flag = 1
and (omd.level is null or omd.level = 1)
<if test="materialName != null and materialName != ''">
and (
omd.material_name like concat('%', #{materialName}, '%')
or mb.material_name like concat('%', #{materialName}, '%')
)
</if>
<if test="materialCode != null and materialCode != ''">
and (
omd.material_code like concat('%', #{materialCode}, '%')
or mb.material_code like concat('%', #{materialCode}, '%')
)
</if>
)
</if>
<choose>
<when test="delFlag != null"> and a.del_flag = #{delFlag} </when>
<otherwise> and a.del_flag = 1 </otherwise>