chen.lin
10 小时以前 4c036f937336085fb5071aabfe433c7f45f84cab
入库明细查询id冲突修复
2个文件已修改
40 ■■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WkOrderItemController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java
@@ -78,6 +78,14 @@
        return this.buildWrapper(like, null, "create_time");
    }
    /** 多表 JOIN 时给列加表别名,避免列名歧义;alias 为 null 或空时与不加别名一致 */
    private static String col(String tableAlias, String columnName) {
        if (tableAlias != null && !tableAlias.isEmpty()) {
            return tableAlias + ".`" + columnName + "`";
        }
        return "`" + columnName + "`";
    }
    public QueryWrapper<T> buildWrapper(boolean like, String timeField) {
        return this.buildWrapper(like, null, timeField);
    }
@@ -86,8 +94,9 @@
        return this.buildWrapper(like, null, "create_time", fields);
    }
    /** 同 buildWrapper(like, consumer, timeField),tableAlias 非空时给主表列加别名,用于多表 JOIN 避免歧义;传 null 行为与原来一致 */
    @SuppressWarnings("all")
    public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField) {
    public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField, String tableAlias) {
        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
        Map<String, Object> map = where.getMap();
        for (String key : map.keySet()) {
@@ -105,8 +114,8 @@
                    if (this.isToUnderlineCase) {
                        key = Utils.toSymbolCase(key, '_');
                    }
                    queryWrapper.ge(key, DateUtils.convert(list.get(0)));
                    queryWrapper.le(key, DateUtils.convert(list.get(1)));
                    queryWrapper.ge(col(tableAlias, key), DateUtils.convert(list.get(0)));
                    queryWrapper.le(col(tableAlias, key), DateUtils.convert(list.get(1)));
                }
            } else {
                if (this.isToUnderlineCase) {
@@ -114,11 +123,9 @@
                }
                String finalKey = key;
                if (like && key.contains(timeField)) {
                    queryWrapper.and(wrapper -> wrapper.like("`" + finalKey + "`", val));
//                    queryWrapper.like("`" +  key + "`", val);
                    queryWrapper.and(wrapper -> wrapper.like(col(tableAlias, finalKey), val));
                } else {
                    queryWrapper.and(wrapper -> wrapper.eq("`" + finalKey + "`", val));
//                    queryWrapper.eq("`" +  key + "`", val);
                    queryWrapper.and(wrapper -> wrapper.eq(col(tableAlias, finalKey), val));
                }
            }
        }
@@ -129,20 +136,19 @@
        if (!Cools.isEmpty(where.getTimeStart())) {
            Date timeStart = DateUtils.convert(String.valueOf(where.getTimeStart()), DateUtils.yyyyMMdd_F);
            queryWrapper.ge(timeField, timeStart);
            queryWrapper.ge(col(tableAlias, timeField), timeStart);
        }
        if (!Cools.isEmpty(where.getTimeEnd())) {
            Date timeStart = DateUtils.convert(String.valueOf(where.getTimeEnd()), DateUtils.yyyyMMdd_F);
            queryWrapper.le(timeField, timeStart);
            queryWrapper.le(col(tableAlias, timeField), timeStart);
        }
        if (!Cools.isEmpty(where.getOrderBy())) {
            if (sortIsSQL(where.getOrderBy())) {
                List<OrderItem> orders = parseOrderSQL(where.getOrderBy());
                // 如果所有排序字段都无效,使用默认排序
                if (orders.isEmpty()) {
                    queryWrapper.orderByDesc("create_time");
                    queryWrapper.orderByDesc(col(tableAlias, "create_time"));
                } else {
                    setOrders(orders);
                }
@@ -176,9 +182,9 @@
                        String column = columns.get(i);
                        String condition = where.getCondition();
                        if (i == 0) {
                            wrapper.or().like("`" + column + "`", condition);
                            wrapper.or().like(col(tableAlias, column), condition);
                        } else {
                            wrapper.or().like("`" + column + "`", condition);
                            wrapper.or().like(col(tableAlias, column), condition);
                        }
                    }
                });
@@ -188,6 +194,11 @@
    }
    @SuppressWarnings("all")
    public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField) {
        return buildWrapper(like, consumer, timeField, (String) null);
    }
    @SuppressWarnings("all")
    public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField, List<String> fields) {
        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
        Map<String, Object> map = where.getMap();
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WkOrderItemController.java
@@ -115,8 +115,7 @@
    public R pageInFull(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<WkOrderItem, BaseParam> pageParam = new PageParam<>(baseParam, WkOrderItem.class);
        QueryWrapper<WkOrderItem> wrapper = pageParam.buildWrapper(true);
        // 添加type为'in'的条件,注意这里应该指定表别名
        QueryWrapper<WkOrderItem> wrapper = pageParam.buildWrapper(true, null, "create_time", "mi");
        wrapper.eq("mo.type", OrderType.ORDER_IN.type);
        
        IPage<InOrderAndItem> page = asnOrderItemMapper.queryFullOrderWithPaging(pageParam, wrapper);