修改物料搜索接口

This commit is contained in:
andy 2026-11-06 13:47:26 +08:00
parent a79b7b0734
commit 7d8694ac0b
2 changed files with 27 additions and 7 deletions

View File

@ -93,4 +93,8 @@ public class ImMaterialBo extends BaseEntity {
* jishikucun
*/
private String inInventory;
/***
* 是否使用自主查询. 默认不使用
*/
private Boolean useAutonomous = false;
}

View File

@ -1348,16 +1348,16 @@ public class MssqlQueryService {
if (bo == null) {
return where.toString();
}
appendLike(where, args, "m.FNUMBER", bo.getMaterialCode());
appendLike(where, args, "ml.FNAME", bo.getMaterialName());
appendLike(where, args, "m.FNUMBER", bo.getMaterialCode(), bo.getUseAutonomous());
appendLike(where, args, "ml.FNAME", bo.getMaterialName(), bo.getUseAutonomous());
if (StringUtils.isNotBlank(bo.getMaterialQuality())) {
where.append(" AND (ml.FSPECIFICATION LIKE ? OR assl.FDATAVALUE LIKE ?) ");
String qualityLike = "%" + bo.getMaterialQuality().trim() + "%";
args.add(qualityLike);
args.add(qualityLike);
}
appendLike(where, args, "ul.FNAME", bo.getUnit());
appendLike(where, args, "c.FNUMBER", bo.getImCategory());
appendLike(where, args, "ul.FNAME", bo.getUnit(), false);
appendLike(where, args, "c.FNUMBER", bo.getImCategory(), false);
if (bo.getSingleWeight() != null) {
where.append(" AND m.F_HBYT_DZ = ? ");
args.add(bo.getSingleWeight());
@ -1373,14 +1373,30 @@ public class MssqlQueryService {
return where.toString();
}
private static void appendLike(StringBuilder where, List<Object> args, String column, String value) {
private static void appendLike(StringBuilder where, List<Object> args, String column, String value, Boolean useAutonomous) {
if (StringUtils.isBlank(value)) {
return;
}
if(useAutonomous){
// where.append(" AND ").append(column).append(" in (?) ");
List<String> values = new ArrayList<>();
for (String v : value.trim().split(",")){
for (String v1 : v.trim().split("\\s*[,;:]\\s*")){
values.add(v1);
}
}
String[] placeHolder = new String[values.size()];
Arrays.fill(placeHolder, "?");
String inSql = String.join(",", placeHolder);
where.append(" AND ").append(column).append(" IN (").append(inSql).append(") ");
args.addAll(values);
}else{
where.append(" AND ").append(column).append(" LIKE ? ");
args.add("%" + value.trim() + "%");
}
}
private List<ImMaterialVo> mapKingdeeMaterialVos(List<Map<String, Object>> rows) {
List<ImMaterialVo> list = new ArrayList<>();
if (rows == null) {