chen.lin
1 天以前 42b24af07f1ec2d1a375232d754128ba41d56f0a
src/main/java/com/zy/asrs/controller/MaterialReceiveController.java
@@ -41,24 +41,55 @@
                  @RequestParam(required = false) String condition,
                  @RequestParam(required = false) Boolean pdaQuery,
                  @RequestParam Map<String, Object> param) {
        EntityWrapper<MaterialReceive> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        // 移除pdaQuery参数,因为它不是数据库字段,只是控制参数
        param.remove("pdaQuery");
        convert(param, wrapper);
        allLike(MaterialReceive.class, param.keySet(), wrapper, condition);
        // 参考其他出库模块,PDA出库查询时过滤掉已全部出库的物料(只显示还有剩余数量的)
        // 通过 pdaQuery 参数判断是否是PDA出库查询
        if (pdaQuery != null && pdaQuery) {
            // PDA出库查询:只显示剩余数量大于0的记录
            wrapper.gt("remain_qty", 0);
        try {
            EntityWrapper<MaterialReceive> wrapper = new EntityWrapper<>();
            excludeTrash(param);
            // 移除pdaQuery参数,因为它不是数据库字段,只是控制参数
            param.remove("pdaQuery");
            // 处理生产单号/任务单号的多个值查询(用|分隔)
            if (param.containsKey("soCodeOrFbillno")) {
                String soCodeOrFbillno = String.valueOf(param.get("soCodeOrFbillno"));
                param.remove("soCodeOrFbillno");
                // 分割多个值
                String[] codeArray = soCodeOrFbillno.split("\\|");
                List<String> validCodes = new ArrayList<>();
                for (String codeStr : codeArray) {
                    String code = codeStr.trim();
                    if (code.length() > 0) {
                        validCodes.add(code);
                    }
                }
                if (!validCodes.isEmpty()) {
                    // 构建OR查询条件
                    // 格式:so_code IN (value1, value2, ...) OR fbillno IN (value1, value2, ...)
                    wrapper.andNew()
                          .in("so_code", validCodes)
                          .or()
                          .in("fbillno", validCodes);
                }
            }
            convert(param, wrapper);
            allLike(MaterialReceive.class, param.keySet(), wrapper, condition);
            // 参考其他出库模块,PDA出库查询时过滤掉已全部出库的物料(只显示还有剩余数量的)
            // 通过 pdaQuery 参数判断是否是PDA出库查询
            if (pdaQuery != null && pdaQuery) {
                // PDA出库查询:只显示剩余数量大于0的记录
                wrapper.gt("remain_qty", 0);
            }
            if (!Cools.isEmpty(orderByField)) {
                wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
            }
            return R.ok(materialReceiveService.selectPage(new Page<>(curr, limit), wrapper));
        } catch (Exception e) {
            e.printStackTrace();
            return R.error("查询失败: " + e.getMessage());
        }
        if (!Cools.isEmpty(orderByField)) {
            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
        }
        return R.ok(materialReceiveService.selectPage(new Page<>(curr, limit), wrapper));
    }
    @RequestMapping(value = "/materialReceive/batchSave/auth", method = RequestMethod.POST)
@@ -304,9 +335,10 @@
    @RequestMapping(value = "/materialReceive/checkSyncStatus/auth")
    @ManagerAuth
    public R checkSyncStatus(@RequestParam String soCode, @RequestParam(required = false) String invCode) {
    public R checkSyncStatus(@RequestParam String soCode, @RequestParam(required = false) String invCode, @RequestParam(required = false) String fbillno) {
        EntityWrapper<MaterialReceive> wrapper = new EntityWrapper<>();
        wrapper.eq("so_code", soCode);
        wrapper.eq("fbillno", fbillno);
        if (!Cools.isEmpty(invCode)) {
            wrapper.eq("inv_code", invCode);
        }