自动化立体仓库 - WMS系统
Junjie
2025-06-07 be35fc91e03cb078e5a7a3354664b571e0d3ec89
Merge remote-tracking branch 'origin/ytflWms' into ytflWms
5个文件已修改
112 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MatController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/InventoryCheckOrder.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WorkMastScheduler.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MatController.java
@@ -69,7 +69,7 @@
        EntityWrapper<Mat> wrapper = new EntityWrapper<>();
        if (!Cools.isEmpty(condition)) {
//            wrapper.like("matnr", condition).or().like("maktx", condition);
            wrapper.like("matnr", condition).or().like("specs", condition);
            wrapper.like("matnr", condition).or().like("specs", condition).or().like("maktx", condition);
        }
        wrapper.orderBy("create_time", false);
        List<Mat> mats = matService.selectList(wrapper);
src/main/java/com/zy/asrs/entity/InventoryCheckOrder.java
@@ -87,9 +87,11 @@
        }
        switch (this.status){
            case "1":
                return "未提交";
                return "盘点中";
            case "2":
                return "已提交";
                return "盘点完";
            case "3":
                return "已上报";
            default:
                return "";
        }
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -17,6 +17,7 @@
import com.zy.common.model.DetlDto;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import com.zy.common.utils.Synchro;
import com.zy.nc.service.NccJcQilibcBarcodeflowWmsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -794,8 +795,6 @@
                        }
                    }
                    //如果已经拣料回库,就需要取locNo字段
//                    String locNo =Cools.isEmpty(wrkMast.getLocNo())?  wrkMast.getSourceLocNo():wrkMast.getLocNo();
//                    inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no",locNo))
                    iterator.remove();
                    iterator1.remove();
                }
@@ -827,7 +826,21 @@
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("添加" + wrkMast.getWrkNo() + "盘点任务," + wrkDetl.getMatnr() + "商品," + wrkDetl.getBatch() + "批号任务明细失败");
            }
            String locNo = Cools.isEmpty(wrkMast.getLocNo()) ? wrkMast.getSourceLocNo() : wrkMast.getLocNo();
            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no", locNo));
            for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
                if (wrkDetl.getMatnr().equals(checkOrderDetl.getMatnr()) && Cools.eq(wrkDetl.getBatch(), checkOrderDetl.getBatch())) {
                    checkOrderDetl.setCheckAnfme(wrkDetl.getAnfme());
                    checkOrderDetl.setStatus("2");
                } else {
                    InventoryCheckOrderDetl newDetl = new InventoryCheckOrderDetl();
                    Synchro.Copy(wrkDetl, newDetl);
                    newDetl.setAnfme(0D);
                    newDetl.setCheckAnfme(wrkDetl.getAnfme());
                    newDetl.setOrderNo(checkOrderDetl.getOrderNo());
                    newDetl.setStatus("2");
                }
            }
        }
        List<WrkDetl> wrkDetls1 = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
        for (WrkDetl wrkDetl : wrkDetls1) {
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -389,6 +389,10 @@
                    throw new CoolException("保存工作档明细失败");
                }
                if (ioType == 107) {
                    List<InventoryCheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrderNo).eq("loc_no", dto.getLocNo()));
                    if (checkOrderDetls != null && !checkOrderDetls.isEmpty()) {
                        throw new CoolException("该库位的盘点任务已经添加到了该库位中");
                    }
                    InventoryCheckOrderDetl checkOrderDetl = new InventoryCheckOrderDetl();
                    checkOrderDetl.setOrderNo(checkOrderNo);
                    checkOrderDetl.setMatnr(detlDto.getLocDetl().getMatnr());
@@ -396,6 +400,7 @@
                    checkOrderDetl.setBatch(detlDto.getLocDetl().getBatch());
                    checkOrderDetl.setLocNo(detlDto.getLocDetl().getLocNo());
                    checkOrderDetl.setAnfme(detlDto.getLocDetl().getAnfme());
                    checkOrderDetl.setIoTime(new Date());
                    checkOrderDetl.setStatus("0");
                    checkOrderDetlService.insert(checkOrderDetl);
                }
src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -1,9 +1,17 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.InventoryCheckOrder;
import com.zy.asrs.entity.InventoryCheckOrderDetl;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.InventoryCheckOrderDetlService;
import com.zy.asrs.service.InventoryCheckOrderService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.WorkMastHandler;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +34,18 @@
    @Autowired
    private WorkMastHandler workMastHandler;
    @Autowired
    private InventoryCheckOrderService inventoryCheckOrderService;
    @Autowired
    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
    @Autowired
    private ConfigService configService;
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute(){
        List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData();
@@ -45,4 +65,64 @@
        }
    }
    /**
     * 自动删除超过1天,无明细的盘点单
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute2() {
        List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>());
        if (inventoryCheckOrders.isEmpty()) {
            return;
        }
        for (InventoryCheckOrder checkOrder : inventoryCheckOrders) {
            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrder.getOrderNo()));
            if (checkOrderDetls.isEmpty() && System.currentTimeMillis() - checkOrder.getCreateTime().getTime() >= 1000 * 60 * 60 * 24) {
                if (!inventoryCheckOrderService.deleteById(checkOrder)) {
                    log.error("盘点单[orderNo={}]删除失败", checkOrder.getOrderNo());
                } else {
                    log.info("盘点单[orderNo={}]删除成功", checkOrder.getOrderNo());
                }
            }
        }
    }
    /**
     * 自动完结达到一定数量的盘点单
     */
    @Scheduled(cron = "0/30 * * * * ? ")
    public void execute3() {
        List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>());
        if (inventoryCheckOrders.isEmpty()) {
            return;
        }
        int num = 20;
        try {
            Config config = configService.selectConfigByCode("AutoLocMove");
            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
            } else {
                num = Integer.parseInt(config.getValue());
            }
        } catch (Exception e) {
        }
        for (InventoryCheckOrder checkOrder : inventoryCheckOrders) {
            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrder.getOrderNo()));
            boolean complete = true;
            for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
                if (!checkOrderDetl.getStatus().equals("2")) {
                    complete = false;
                }
            }
            if (complete && checkOrderDetls.size() >= num) {
                checkOrder.setStatus("2");
                if (!inventoryCheckOrderService.updateById(checkOrder)) {
                    log.error("盘点单[orderNo={}]更新状态成功", checkOrder.getOrderNo());
                } else {
                    log.info("盘点单[orderNo={}]更新状态失败", checkOrder.getOrderNo());
                }
            }
        }
    }
}