自动化立体仓库 - WMS系统
lty
2026-04-20 c82f9100d3586218e9e41497c2cea73a2cac44fe
src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -12,12 +12,16 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
import com.zy.asrs.entity.FrozenParam;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.ManLocDetl;
import com.zy.asrs.entity.LocOwner;
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.param.AbnormalLocDetlParam;
import com.zy.asrs.entity.result.LocDetlAll;
import com.zy.asrs.entity.result.LocDetlDTO;
import com.zy.asrs.mapper.LocDetlMapper;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.ManLocDetlService;
import com.zy.asrs.service.LocOwnerService;
import com.zy.asrs.service.MatService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -39,12 +43,66 @@
    @Autowired
    private MatService matService;
    @Autowired
    private LocOwnerService locOwnerService;
    @RequestMapping(value = "/locDetl/update")
    public R update1() {
        if (!locDetlService.updateLocNo("0402805", "0402804")) {
            return R.error();
        }
        return R.ok();
    }
    @RequestMapping(value = "/locDetl/groupLocList/auth")
    @ManagerAuth
    public R groupLocList(@RequestParam(defaultValue = "1") Integer curr,
                          @RequestParam(defaultValue = "10") Integer limit,
                          @RequestParam(required = false) String orderByField,
                          @RequestParam(required = false) String orderByType,
                          @RequestParam(required = false) String condition,
                          @RequestParam Map<String, Object> param) {
        Map<String, Object> queryParam = new HashMap<>();
        putIfPresent(queryParam, "matnr", param.get("matnr"));
        putIfPresent(queryParam, "maktx", param.get("maktx"));
        putIfPresent(queryParam, "specs", param.get("specs"));
        putIfPresent(queryParam, "warnStatus", param.get("warnStatus"));
        queryParam.put("pageNumber", curr);
        queryParam.put("pageSize", limit);
        Page<AbnormalLocDetlParam> locDetlPage = new Page<>();
        locDetlPage.setRecords(locDetlMapper.groupLocList(queryParam));
        locDetlPage.setTotal(locDetlMapper.groupLocListCount(queryParam));
        locDetlPage.setCurrent(curr);
        locDetlPage.setSize(limit);
        return R.ok(locDetlPage);
    }
    @RequestMapping(value = "/locDetl/groupLocExport/auth")
    @ManagerAuth(memo = "库位汇总导出")
    public R groupLocExport(@RequestBody JSONObject param) {
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("locDetl"));
        Map<String, Object> queryParam = new HashMap<>();
        putIfPresent(queryParam, "matnr", map.get("matnr"));
        putIfPresent(queryParam, "maktx", map.get("maktx"));
        putIfPresent(queryParam, "specs", map.get("specs"));
        putIfPresent(queryParam, "warnStatus", map.get("warnStatus"));
        int total = Optional.ofNullable(locDetlMapper.groupLocListCount(queryParam)).orElse(0);
        if (total <= 0) {
            return R.ok(new ArrayList<>());
        }
        queryParam.put("pageNumber", 1);
        queryParam.put("pageSize", total);
        List<AbnormalLocDetlParam> list = locDetlMapper.groupLocList(queryParam);
        return R.ok(exportSupport(list, fields));
    }
    private void putIfPresent(Map<String, Object> target, String key, Object value) {
        String normalized = normalizeFilterText(value);
        if (normalized != null) {
            target.put(key, normalized);
        }
    }
    @RequestMapping(value = "/locDetl/{id}/auth")
@@ -83,7 +141,11 @@
                param.remove("modi_time");
            }
        }
        return R.ok(locDetlService.getStockOut(toPage(curr, limit, param, LocDetl.class)));
        Page<LocDetl> stockOut = locDetlService.getStockOut(toPage(curr, limit, param, LocDetl.class));
        if (stockOut.getRecords().size()==0){
            stockOut = locDetlService.getStockOut(toPage(1, limit, param, LocDetl.class));
        }
        return R.ok(stockOut);
    }
    @RequestMapping(value = "/locDetl/list/auth")// /locDetl/list/auth 接口问题
@@ -107,6 +169,7 @@
//            }
//        }
        excludeTrash(param);
        applyBeBatchFilter(param, wrapper);
        convert(param, wrapper);
        allLike(LocDetl.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
@@ -121,18 +184,42 @@
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String val = String.valueOf(entry.getValue());
            String key = humpToLine(entry.getKey());
            if (val.contains(RANGE_TIME_LINK)){
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
                wrapper.ge(key, DateUtils.convert(dates[0]));
                wrapper.le(key, DateUtils.convert(dates[1]));
            } else {
                if (entry.getKey().equals("locNo")) {
                if ("loc_no".equals(key)) {
                    wrapper.eq("loc_no", String.valueOf(entry.getValue()));
                } else {
                    wrapper.like(entry.getKey(), String.valueOf(entry.getValue()));
                    wrapper.like(key, String.valueOf(entry.getValue()));
                }
            }
        }
    }
    private <T> void applyBeBatchFilter(Map<String, Object> map, EntityWrapper<T> wrapper) {
        Object beBatchObj = map.remove("beBatch");
        if (beBatchObj == null) {
            beBatchObj = map.remove("be_batch");
        }
        if (beBatchObj == null) {
            return;
        }
        String beBatch = String.valueOf(beBatchObj).trim();
        if (Cools.isEmpty(beBatch)) {
            return;
        }
        if ("1".equals(beBatch)) {
            wrapper.eq("be_batch", 1);
            return;
        }
        if ("0".equals(beBatch)) {
            wrapper.andNew().isNull("be_batch").or().eq("be_batch", 0);
            return;
        }
        wrapper.eq("be_batch", beBatch);
    }
    @RequestMapping(value = "/locDetl/add/auth")
@@ -171,6 +258,26 @@
        return R.ok();
    }
    @PostMapping(value = "/locDetl/frozenInventory")
    @ManagerAuth(memo = "库存冻结")
    public R frozen(@RequestBody List<FrozenParam> param){
        if (param.size() == 0)  {
            return R.parse("未收到数据");
        }
        return locDetlService.frozenInventory(param);
    }
    @PostMapping(value = "/locDetl/unfreezeInventory")
    @ManagerAuth(memo = "库存解冻")
    public R unfreeze(@RequestBody List<FrozenParam> param){
        if (param.size() == 0)  {
            return R.parse("未收到数据");
        }
        return locDetlService.unfreezeInventory(param);
    }
    @RequestMapping(value = "/locDetl/export/auth")
    @ManagerAuth(memo = "库位明细导出")
    public R export(@RequestBody JSONObject param){
@@ -183,20 +290,68 @@
            if (chooseRow.length() == 1) {
                row = "0" + chooseRow;
                map.remove("row");
            }else {
            } else {
                row = chooseRow;
                map.remove("row");
            }
        }
        applyBeBatchFilter(map, wrapper);
        convert(map, wrapper);
        if (!row.equals("")){
        if (!row.equals("")) {
            wrapper.and()
                    .where("loc_no like '" +row +"%'");
                    .where("loc_no like {0}", row + "%");
        }
        List<LocDetl> list = locDetlService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/locDetl/selectOwner/list/auth")
    @ManagerAuth
    public R selectOwnerlist(@RequestParam(defaultValue = "1")Integer curr,
                             @RequestParam(defaultValue = "10")Integer limit,
                             @RequestParam(required = false)String orderByField,
                             @RequestParam(required = false)String orderByType,
                             @RequestParam Map<String, Object> param){
        Integer owner = null;
        if (param.get("owner$") != null && param.get("owner$") != ""){
            LocOwner locOwner = locOwnerService.selectOne(new EntityWrapper<LocOwner>().like("owner", (String) param.get("owner$")));
            if(locOwner == null){
                return R.error("参数有误!");
            }
            param.remove("owner$");
            owner = locOwner.getId();
        }
        LocDetlDTO locDetlDTO = new LocDetlDTO();
        locDetlDTO.setPageSize(limit);
        locDetlDTO.setPageNumber(curr);
        String locNo = String.valueOf(param.get("locNo"));
        String matnr = String.valueOf(param.get("matnr"));
        if (!Cools.isEmpty(locNo) && !locNo.equals("null")) {
            locDetlDTO.setLocNo(locNo);
        }
        if (!Cools.isEmpty(matnr) && !matnr.equals("null")) {
            locDetlDTO.setMatnr(matnr);
        }
        if (!Cools.isEmpty(owner) && !owner.equals("null")) {
            locDetlDTO.setOwner(owner);
        }
        List<LocDetlAll> list = locDetlService.selectAllOwner(locDetlDTO);
        int count = locDetlService.selectAllCount(locDetlDTO);
        Page<LocDetlAll> page = new Page<>();
        page.setRecords(list);
        page.setTotal(count);
        if (list.size()==0){
            locDetlDTO.setPageNumber(1);
            list = locDetlService.selectAllOwner(locDetlDTO);
            count = locDetlService.selectAllCount(locDetlDTO);
            page = new Page<>();
            page.setRecords(list);
            page.setTotal(count);
        }
        return R.ok(page);
    }
    @RequestMapping(value = "/locDetlQuery/auth")
    @ManagerAuth
    public R query(String condition) {