自动化立体仓库 - WMS系统
src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -12,11 +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.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.LocOwnerService;
import com.zy.asrs.service.MatService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +42,9 @@
    private LocDetlMapper locDetlMapper;
    @Autowired
    private MatService matService;
    @Autowired
    private LocOwnerService locOwnerService;
    @RequestMapping(value = "/locDetl/update")
    public R update1() {
@@ -245,6 +253,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){
@@ -270,41 +298,100 @@
        List<LocDetl> list = locDetlService.selectList(wrapper);
        List<AbnormalLocDetlParam> result = new ArrayList<>();
        Page<LocDetl> groupLocDetl = locDetlService.getStockStatis2(toPage(1, 10000, param, LocDetl.class));
        for (LocDetl locDetl : groupLocDetl.getRecords()) {
        // 使用完整的明细数据,而不是分组数据
        for (LocDetl locDetl : list) {
            AbnormalLocDetlParam abnormalLocDetlParam = new AbnormalLocDetlParam();
            Mat mat = matService.selectOne(new EntityWrapper<Mat>()
                    .eq("matnr", locDetl.getMatnr()));
            if (Cools.isEmpty(mat)) {
                continue;
            }
            if (!Cools.isEmpty(mat                                                                          .getStoreMax()) || !Cools.isEmpty(mat.getStoreMin())) {
                abnormalLocDetlParam.setStoreMax(mat.getStoreMax());
                abnormalLocDetlParam.setStoreMaxDate(mat.getStoreMaxDate());
                abnormalLocDetlParam.setStoreMin(mat.getStoreMin());
                abnormalLocDetlParam.setAnfme(locDetl.getAnfme());
                abnormalLocDetlParam.setMaktx(mat.getMaktx());
                abnormalLocDetlParam.setMatnr(mat.getMatnr());
                abnormalLocDetlParam.setSpecs(mat.getSpecs());
                abnormalLocDetlParam.setBatch(locDetl.getBatch());
//                SimpleDateFormat simple = new SimpleDateFormat("yyyyMMdd");
//                Date maxDate = simple.parse(locDetl.getBatch());
//                long time = maxDate.getTime();
//                Date now = new Date();
//                long time1 = now.getTime();
//                abnormalLocDetlParam.setNowTime((int) ((time1 - time) / (1000 * 60 * 60 * 24)));
            // 设置基本信息(无论是否异常)
            abnormalLocDetlParam.setStoreMax(mat.getStoreMax());
            abnormalLocDetlParam.setStoreMaxDate(mat.getStoreMaxDate());
            abnormalLocDetlParam.setStoreMin(mat.getStoreMin());
            abnormalLocDetlParam.setAnfme(locDetl.getAnfme());
            abnormalLocDetlParam.setMaktx(mat.getMaktx());
            abnormalLocDetlParam.setMatnr(mat.getMatnr());
            abnormalLocDetlParam.setSpecs(mat.getSpecs());
            abnormalLocDetlParam.setBatch(locDetl.getBatch());
                if (!Cools.isEmpty(mat.getStoreMax()) && locDetl.getAnfme() > mat.getStoreMax()) {
                    result.add(abnormalLocDetlParam);
                } else if (!Cools.isEmpty(mat.getStoreMin()) && locDetl.getAnfme() < mat.getStoreMin()) {
                    result.add(abnormalLocDetlParam);
                }
            // 设置导出需要的其他字段
            abnormalLocDetlParam.setLocNo(locDetl.getLocNo());
            abnormalLocDetlParam.setZpallet(locDetl.getZpallet());
            abnormalLocDetlParam.setOrderNo(locDetl.getOrderNo());
            abnormalLocDetlParam.setModiTime(locDetl.getModiTime());
            // 计算库龄(实际在库天数)
            if (locDetl.getAppeTime() != null) {
                long diff = System.currentTimeMillis() - locDetl.getAppeTime().getTime();
                int days = (int) (diff / (1000 * 60 * 60 * 24));
                abnormalLocDetlParam.setNowTime(days);
            }
            // 确保所有字段都有值,避免空值导致导出异常
            if (abnormalLocDetlParam.getLocNo() == null) abnormalLocDetlParam.setLocNo("");
            if (abnormalLocDetlParam.getZpallet() == null) abnormalLocDetlParam.setZpallet("");
            if (abnormalLocDetlParam.getOrderNo() == null) abnormalLocDetlParam.setOrderNo("");
            if (abnormalLocDetlParam.getSpecs() == null) abnormalLocDetlParam.setSpecs("");
            // 总是添加到结果列表
            result.add(abnormalLocDetlParam);
        }
        return R.ok(exportSupport(result, 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) {