自动化立体仓库 - WMS系统
chen.lin
4 天以前 055743022694b6fc1bb1864137e0c81b6ea658c5
src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -14,6 +14,7 @@
import com.core.common.R;
import com.zy.asrs.entity.FrozenParam;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.LocOwner;
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.param.AbnormalLocDetlParam;
@@ -21,6 +22,7 @@
import com.zy.asrs.entity.result.LocDetlDTO;
import com.zy.asrs.mapper.LocDetlMapper;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.LocOwnerService;
import com.zy.asrs.service.MatService;
import com.zy.common.web.BaseController;
@@ -45,6 +47,9 @@
    @Autowired
    private LocOwnerService locOwnerService;
    @Autowired
    private LocMastService locMastService;
    @RequestMapping(value = "/locDetl/update")
    public R update1() {
@@ -152,13 +157,13 @@
    public R stockOutList(@RequestParam(defaultValue = "1")Integer curr,
                          @RequestParam(defaultValue = "10")Integer limit,
                          @RequestParam Map<String, Object> param){
        if (!Cools.isEmpty(param.get("modi_time"))){
            String val = String.valueOf(param.get("modi_time"));
        if (!Cools.isEmpty(param.get("appe_time"))){
            String val = String.valueOf(param.get("appe_time"));
            if (val.contains(RANGE_TIME_LINK)) {
                String[] dates = val.split(RANGE_TIME_LINK);
                param.put("startTime", DateUtils.convert(dates[0]));
                param.put("endTime", DateUtils.convert(dates[1]));
                param.remove("modi_time");
                param.remove("appe_time");
            }
        }
        Page<LocDetl> stockOut = locDetlService.getStockOut(toPage(curr, limit, param, LocDetl.class));
@@ -189,19 +194,86 @@
//            }
//        }
        excludeTrash(param);
        // 处理 mk 字段查询(需要关联 LocMast 表)
        Object mkParam = param.get("mk");
        if (!Cools.isEmpty(mkParam)) {
            String mkValue = String.valueOf(mkParam);
            EntityWrapper<LocMast> locMastWrapper = new EntityWrapper<>();
            if ("Y".equals(mkValue)) {
                locMastWrapper.eq("mk", "Y");
            } else  {
                locMastWrapper.ne("mk", "Y");
            }
            // 查询符合条件的库位号列表
            List<LocMast> locMastList = locMastService.selectList(locMastWrapper);
            if (locMastList != null && !locMastList.isEmpty()) {
                List<String> locNos = new ArrayList<>();
                for (LocMast locMast : locMastList) {
                    if (!Cools.isEmpty(locMast.getLocNo())) {
                        locNos.add(locMast.getLocNo());
                    }
                }
                if (!locNos.isEmpty()) {
                    wrapper.in("loc_no", locNos);
                } else {
                    // 如果没有符合条件的库位,返回空结果
                    wrapper.eq("1", "0");
                }
            } else {
                // 如果没有符合条件的库位,返回空结果
                wrapper.eq("1", "0");
            }
            // 移除 mk 参数,避免在 convert 方法中重复处理
            param.remove("mk");
        }
        convert(param, wrapper);
        allLike(LocDetl.class, param.keySet(), wrapper, condition);
        // 在 allLike 中排除 mk 字段,因为 mk 字段在 LocMast 表中
        Set<String> excludeFields = new HashSet<>(param.keySet());
        excludeFields.add("mk"); // 确保 mk 字段被排除
        allLike(LocDetl.class, excludeFields, wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
//        if (!row.equals("")){
//            wrapper.and()
//                    .where("loc_no like '" +row +"%'");
//        }
        return R.ok(locDetlService.selectPage(new Page<>(curr, limit), wrapper));
        Page<LocDetl> page = locDetlService.selectPage(new Page<>(curr, limit), wrapper);
        // 填充 mk 字段(是否盘点状态)
        if (page != null && page.getRecords() != null && !page.getRecords().isEmpty()) {
            // 收集所有库位号
            Set<String> locNos = new HashSet<>();
            for (LocDetl locDetl : page.getRecords()) {
                if (!Cools.isEmpty(locDetl.getLocNo())) {
                    locNos.add(locDetl.getLocNo());
                }
            }
            // 批量查询库位信息
            if (!locNos.isEmpty()) {
                Map<String, String> locMkMap = new HashMap<>();
                for (String locNo : locNos) {
                    com.zy.asrs.entity.LocMast locMast = locMastService.selectById(locNo);
                    if (locMast != null) {
                        locMkMap.put(locNo, locMast.getMk());
                    }
                }
                // 填充 mk 字段
                for (LocDetl locDetl : page.getRecords()) {
                    if (!Cools.isEmpty(locDetl.getLocNo())) {
                        locDetl.setMk(locMkMap.get(locDetl.getLocNo()));
                    }
                }
            }
        }
        return R.ok(page);
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String key = entry.getKey();
            // 排除 mk 字段,因为 mk 字段在 LocMast 表中,不在 LocDetl 表中
            if ("mk".equals(key)) {
                continue;
            }
            String val = String.valueOf(entry.getValue());
            if (val.contains(RANGE_TIME_LINK)){
                String[] dates = val.split(RANGE_TIME_LINK);