diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ImMaterialBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ImMaterialBo.java index a7be7fb..dfe8332 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ImMaterialBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ImMaterialBo.java @@ -93,4 +93,8 @@ public class ImMaterialBo extends BaseEntity { * jishikucun */ private String inInventory; + /*** + * 是否使用自主查询. 默认不使用 + */ + private Boolean useAutonomous = false; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/MssqlQueryService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/MssqlQueryService.java index c1309f4..eb685ca 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/MssqlQueryService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/MssqlQueryService.java @@ -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,12 +1373,28 @@ public class MssqlQueryService { return where.toString(); } - private static void appendLike(StringBuilder where, List args, String column, String value) { + private static void appendLike(StringBuilder where, List args, String column, String value, Boolean useAutonomous) { if (StringUtils.isBlank(value)) { return; } - where.append(" AND ").append(column).append(" LIKE ? "); - args.add("%" + value.trim() + "%"); + if(useAutonomous){ +// where.append(" AND ").append(column).append(" in (?) "); + List 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 mapKingdeeMaterialVos(List> rows) {