自动化立体仓库 - WMS系统
zhangchao
2024-11-04 de14adf3250bfecdf41600aa0ea8789111523ad1
Merge branch 'phyzwms2' into phyzasrs-erp

# Conflicts:
# src/main/java/com/zy/asrs/controller/AgvMobileController.java
4个文件已修改
179 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/AgvMobileController.java 166 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/properties/SystemProperties.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -11,6 +11,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.OrderServiceImpl;
import com.zy.common.web.BaseController;
import lombok.Synchronized;
import org.slf4j.Logger;
@@ -55,6 +56,8 @@
    private SnowflakeIdWorker snowflakeIdWorker;
    @Autowired
    private FlowLogService flowLogService;
    @Autowired
    private OrderServiceImpl orderService;
    /*
@@ -198,15 +201,15 @@
        String matnr = params.get("matnr");
        String floor = params.get("floor");
        Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).ne("process_sts", 1);
        Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).ne("process_sts",1);
//        wrapper.eq("orderNo",orderNo);
        wrapper = Cools.isEmpty(threeCode) ? wrapper.isNull("three_code") : wrapper.eq("three_code", threeCode);
        wrapper = Cools.isEmpty(threeCode) ? wrapper.isNull("three_code") : wrapper.eq("three_code",threeCode);
        if (threeCode.substring(0, 2).equals(30)) {
            wrapper.isNull("specs").or().eq("specs", "").eq("floor", 1);
        if (threeCode.substring(0,2).equals(30)) {
            wrapper.isNull("specs").or().eq("specs","").eq("floor",1);
        }
        List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(wrapper);
        List<AgvLocDetl> locDetls = new ArrayList<>();
@@ -216,10 +219,10 @@
                agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).notLike("loc_no", "F1"));
            } else {
                // 如果是加工单 只在 lev1 = 1 查库存
                if ("JG".equals(orderNo.substring(0, 2))) {
                    agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("lev1", 1).eq("loc_no", agvLocDetl.getLocNo()).like("loc_no", floor));
                if ("JG".equals(orderNo.substring(0,2))) {
                    agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("lev1",1).eq("loc_no", agvLocDetl.getLocNo()).like("loc_no",floor));
                } else {
                    agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).like("loc_no", floor));
                    agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).like("loc_no",floor));
                }
            }
@@ -237,31 +240,31 @@
    查询库存 入库订单与销售单号
     */
    @PostMapping("/query/locDetl/v3")
    public R queryAgvLocDetl3(@RequestBody HashMap<String, String> params) {
    public R queryAgvLocDetl3(@RequestBody HashMap<String,String> params){
        String orderNo = params.get("orderNo");
        String threeCode = params.get("threeCode");
        String matnr = params.get("matnr");
        String floor = params.get("floor");
        Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).ne("process_sts", 1);
        Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).ne("process_sts",1);
//        wrapper.eq("orderNo",orderNo);
        wrapper = Cools.isEmpty(threeCode) ? wrapper.isNull("three_code") : wrapper.eq("three_code", threeCode);
        wrapper = Cools.isEmpty(threeCode) ? wrapper.isNull("three_code") : wrapper.eq("three_code",threeCode);
        if (threeCode.substring(0, 2).equals(30)) {
            wrapper.isNull("specs").or().eq("specs", "").eq("floor", 1);
        if (threeCode.substring(0,2).equals(30)) {
            wrapper.isNull("specs").or().eq("specs","").eq("floor",1);
        }
        List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(wrapper);
        List<AgvLocDetl> locDetls = new ArrayList<>();
        for (AgvLocDetl agvLocDetl : agvLocDetls) {
            AgvLocMast agvLocMast = new AgvLocMast();
            if (Cools.isEmpty(floor)) {
                agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).notLike("loc_no", "F1"));
                agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).notLike("loc_no","F1"));
            } else {
                agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).like("loc_no", floor));
                agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).like("loc_no",floor));
            }
            if (Cools.isEmpty(agvLocMast)) continue;
@@ -278,7 +281,7 @@
    查询库存 入库订单与销售单号
     */
    @PostMapping("/query/locDetl/v2")
    public R queryAgvLocDetl2(@RequestBody HashMap<String, String> params) {
    public R queryAgvLocDetl2(@RequestBody HashMap<String,String> params){
        String orderNo = params.get("orderNo");
        String threeCode = params.get("threeCode");
@@ -291,23 +294,23 @@
//        wrapper.eq("orderNo",orderNo);
        wrapper = Cools.isEmpty(threeCode) ? wrapper.isNull("three_code") : wrapper.eq("three_code", threeCode);
        wrapper = Cools.isEmpty(threeCode) ? wrapper.isNull("three_code") : wrapper.eq("three_code",threeCode);
        if (threeCode.substring(0, 2).equals(30)) {
            wrapper.isNull("specs").or().eq("specs", "").eq("floor", 1);
        if (threeCode.substring(0,2).equals(30)) {
            wrapper.isNull("specs").or().eq("specs","").eq("floor",1);
        }
        List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(wrapper);
        List<AgvLocDetl> locDetls = new ArrayList<>();
        for (AgvLocDetl agvLocDetl : agvLocDetls) {
            AgvLocMast agvLocMast = new AgvLocMast();
            if (Cools.isEmpty(floor)) {
                agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).notLike("loc_no", "F1"));
                agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).notLike("loc_no","F1"));
            } else {
                // 如果是加工单 只在 lev1 = 1 查库存
                if (orderDetl.getSource().equals(35)) {
                    agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("lev1", 1).eq("loc_no", agvLocDetl.getLocNo()).like("loc_no", floor));
                    agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("lev1",1).eq("loc_no", agvLocDetl.getLocNo()).like("loc_no",floor));
                } else {
                    agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).like("loc_no", floor));
                    agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocDetl.getLocNo()).like("loc_no",floor));
                }
            }
@@ -327,7 +330,7 @@
    @PostMapping("/check/detl/v1")
    @ManagerAuth(memo = "库存盘点")
    @Synchronized
    public R checkLocDetl(@RequestBody HashMap<String, String> param) {
    public R checkLocDetl(@RequestBody HashMap<String,String> param){
        String locNo = param.get("locNo");
        String containerCode = param.get("containerCode");
@@ -335,16 +338,16 @@
        List<AgvLocDetl> listByLocNo = null;
        List<AgvLocDetl> listByContainerCode = null;
        if (!Cools.isEmpty(locNo)) {
        if(!Cools.isEmpty(locNo)){
            listByLocNo = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
        }
        if (!Cools.isEmpty(locNo)) {
        if(!Cools.isEmpty(locNo)){
            listByContainerCode = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("supp_code", containerCode));
        }
        Map<String, Object> result = new HashMap<String, Object>();
        result.put("locNo", listByLocNo);
        result.put("containerCode", listByContainerCode);
        Map<String,Object> result = new HashMap<String,Object>();
        result.put("locNo",listByLocNo);
        result.put("containerCode",listByContainerCode);
        return R.ok(result);
@@ -356,21 +359,21 @@
    @PostMapping("/update/detl/v1")
    @ManagerAuth(memo = "纠正库位")
    @Synchronized
    public R updateLocDetlLocNo(@RequestBody HashMap<String, String> param) {
    public R updateLocDetlLocNo(@RequestBody HashMap<String,String> param){
        String locNo = param.get("locNo");
        String containerCode = param.get("containerCode");
        if (Cools.isEmpty(locNo) || Cools.isEmpty(containerCode)) {
        if(Cools.isEmpty(locNo) || Cools.isEmpty(containerCode)){
            return R.error("参数不全");
        }
        List<AgvLocDetl> listByLocNo = null;
        List<AgvLocDetl> listByContainerCode = null;
        if (!Cools.isEmpty(locNo)) {
        if(!Cools.isEmpty(locNo)){
            // 源库位
            listByLocNo = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
        }
        if (!Cools.isEmpty(locNo)) {
        if(!Cools.isEmpty(locNo)){
            // 目标库位
            listByContainerCode = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("supp_code", containerCode));
        }
@@ -401,7 +404,7 @@
            agvLocMastByLocNo.setBarcode(containerCode);
            agvLocMastService.updateById(agvLocMastByLocNo);
            if (!Cools.isEmpty(agvLocMastByContainerCode) && Cools.eq("F", agvLocMastByContainerCode.getLocSts())) {
            if(!Cools.isEmpty(agvLocMastByContainerCode) && Cools.eq("F",agvLocMastByContainerCode.getLocSts())){
                agvLocMastByContainerCode.setLocSts("D");
                agvLocMastByContainerCode.setBarcode(barcode1);
                agvLocMastService.updateById(agvLocMastByContainerCode);
@@ -413,13 +416,13 @@
        // -------------2-----------------------------
        //库位信息不为空 货架信息为空
        if (!Cools.isEmpty(listByLocNo) && Cools.isEmpty(listByContainerCode)) {
        if(!Cools.isEmpty(listByLocNo) && Cools.isEmpty(listByContainerCode)){
            String newLocNo = agvLocMastByContainerCode.getLocNo();
            //更新货架信息的库位为当前库位
            listByLocNo.forEach(agvLocDetl -> {
                String sourceLoc = agvLocDetl.getLocNo();
                agvLocDetl.setLocNo(agvLocMastByContainerCode.getLocNo());
                agvLocDetlService.updateLocNo(newLocNo, sourceLoc, agvLocDetl);
                agvLocDetlService.updateLocNo(newLocNo,sourceLoc,agvLocDetl);
            });
            agvLocMastByContainerCode.setLocSts("F");
@@ -433,7 +436,7 @@
            return R.ok("维护成功");
        }
        if ((listByLocNo == null && listByContainerCode == null) || listByLocNo.equals(listByContainerCode)) {
        if((listByLocNo == null && listByContainerCode == null) || listByLocNo.equals(listByContainerCode)){
            //agvLocMastByContainerCode.setBarcode(agvLocMastByLocNo.getBarcode());
            //agvLocMastService.updateById(agvLocMastByContainerCode);
@@ -444,12 +447,13 @@
        }
        // --------------3----------------------------
        String locNo1 = listByContainerCode.get(0).getLocNo();
        listByContainerCode.forEach(agvLocDetl -> {
            String sourceLoc = agvLocDetl.getLocNo();
            agvLocDetl.setLocNo(agvLocMastByLocNo.getLocNo());
            agvLocDetlService.updateLocNo(locNo, sourceLoc, agvLocDetl);
            agvLocDetlService.updateLocNo(locNo,sourceLoc,agvLocDetl);
        });
        if (!Cools.isEmpty(listByLocNo)) {
@@ -458,7 +462,7 @@
            supp_codes.forEach(agvLocDetl -> {
                agvLocDetl.setLocNo(locNo1);
                agvLocDetlService.updateLocNo(locNo1, locNo, agvLocDetl);
                agvLocDetlService.updateLocNo(locNo1,locNo,agvLocDetl);
            });
        }
@@ -481,11 +485,11 @@
    @Transactional
    @ManagerAuth(memo = "调拨单任务下发")
    @Synchronized
    public R agvLocMove(@RequestBody HashMap<String, Object> params) {
    public R agvLocMove(@RequestBody HashMap<String,Object> params){
        String fl = String.valueOf(params.get("floor"));
        short floor = (short) Integer.parseInt(fl.substring(0, 1));
        List<HashMap<String, String>> dbList = (List<HashMap<String, String>>) params.get("dbList");
        params.get("dbList");
        short floor =(short)Integer.parseInt(fl.substring(0, 1));
        List<HashMap<String,String>> dbList = (List<HashMap<String, String>>) params.get("dbList");
         params.get("dbList");
        Object mT = params.get("moveType");
        String moveType = "";
        if (mT.equals("unAuto")) {
@@ -499,15 +503,15 @@
            AgvLocMast agvLocMast = agvLocMastService.selectOne(wrapper);
            agvLocMast.setLocType(moveType);
            agvLocMast.setLocType3(floor);
            agvLocMastService.update(agvLocMast, wrapper);
            agvLocMastService.update(agvLocMast,wrapper);
            // 同步调拨单
            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
            for (AgvLocDetl agvLocDetl : agvLocDetls) {
                // 更新订单
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()));
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
                orderDetl.setQty(orderDetl.getQty() + agvLocDetl.getAnfme());
                if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) {
                    throw new CoolException("修改订单明细失败,请联系管理员" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr());
                if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no","DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
                    throw new CoolException("修改订单明细失败,请联系管理员"+agvLocDetl.getOrderNo()+agvLocDetl.getMatnr());
                }
            }
        }
@@ -518,13 +522,14 @@
    @Transactional
    @ManagerAuth(memo = "调拨单任务下发")
    @Synchronized
    public R agvLocMove2(@RequestBody HashMap<String, Object> params) {
    public R agvLocMove2(@RequestBody HashMap<String,Object> params){
        Date now = new Date();
        String fl = String.valueOf(params.get("floor"));
        Integer floor = Integer.parseInt(fl.substring(0, 1));
        List<HashMap<String, String>> dbList = (List<HashMap<String, String>>) params.get("dbList");
        List<HashMap<String,String>> dbList = (List<HashMap<String, String>>) params.get("dbList");
        params.get("dbList");
        Object mT = params.get("moveType");
        String orderNo = params.get("orderNo").toString();
        String moveType = "";
        Integer ioType = 0;
        if (mT.equals("unAuto")) {
@@ -546,11 +551,11 @@
            if (!Cools.isEmpty(source_loc_no)) {
                throw new CoolException("当前库位已生成任务!");
            }
            AgvLocMast locMastS = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo).eq("loc_sts", "F"));
            AgvLocMast locMastS = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo).eq("loc_sts","F"));
            if (Cools.isEmpty(locMastS)) {
                throw new CoolException("当前库位非在库状态!库位号=" + locNo);
                throw new CoolException("当前库位非在库状态!库位号="+locNo);
            }
            AgvWrkMast wrkMast = createWrkMast(ioType, 22L, locNo, "", barcode, now, getUserId(), 30, floor);
            AgvWrkMast wrkMast = createWrkMast(ioType, 22L, locNo, "", barcode, now, getUserId(), 30,floor);
            // 同步调拨单
            long flowId = snowflakeIdWorker.nextId();
            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
@@ -559,6 +564,7 @@
                wrkDetl.setWrkNo(wrkMast.getWrkNo());
                wrkDetl.sync(agvLocDetl);
                wrkDetl.setSuppCode(agvLocDetl.getSuppCode());
                wrkDetl.setModel(orderNo);
                wrkDetl.setIoTime(now);
                wrkDetl.setAppeUser(getUserId());
                wrkDetl.setAppeTime(now);
@@ -567,10 +573,13 @@
                if (!agvWrkDetlService.insert(wrkDetl)) {
                    throw new CoolException("保存工作明细失败");
                }
                // 更新订单
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("source", 33).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()));
//                FlowLog flowLog = new FlowLog();
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no",orderNo).eq("source",33).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
                // 判断订单是否超量
                if (orderDetl.getQty() >= orderDetl.getAnfme()) {
                    throw new CoolException("调拨单:" + orderNo + "的<" + agvLocDetl.getMatnr() + ">已完成调拨数量,请检查!");
                }
                //                FlowLog flowLog = new FlowLog();
//                flowLog.setFid(String.valueOf(flowId));
//                flowLog.setSpare2(wrkMast.getWrkNo().toString());
//                flowLog.setLocNo(wrkMast.getSourceLocNo());
@@ -597,8 +606,16 @@
//                    throw new CoolException("同步半成品调拨单流水记录失败");
//                }
                orderDetl.setQty(orderDetl.getQty() + agvLocDetl.getAnfme());
                if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("source", 33).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) {
                    throw new CoolException("修改订单明细失败,请联系管理员" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr());
                if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no",orderNo).eq("source",33).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
                    throw new CoolException("订单号:{"+orderNo+"}更新订单明细失败! 异常物料:"+agvLocDetl.getMatnr()+"(半成品调拨单任务)" );
                }
                // 更新订单状态
                Order order = orderService.selectByNo(orderDetl.getOrderNo());
                Long settle = order.getSettle();
                if (settle == 1L) {
                    if (!orderService.updateSettle(order.getId(),2L,getUserId())) {
                        throw new CoolException("订单号:{"+order.getOrderNo()+"}更新订单状态:1-->2 失败!(半成品调拨单任务)" );
                    }
                }
            }
            // 更新源库位
@@ -613,9 +630,9 @@
    @Transactional
    @ManagerAuth(memo = "回调单任务下发")
    @Synchronized
    public R agvLocMove3(@RequestBody HashMap<String, Object> params) {
    public R agvLocMove3(@RequestBody HashMap<String,Object> params){
        Date now = new Date();
        List<HashMap<String, String>> dbList = (List<HashMap<String, String>>) params.get("dbList");
        List<HashMap<String,String>> dbList = (List<HashMap<String, String>>) params.get("dbList");
        params.get("dbList");
        for (HashMap<String, String> map : dbList) {
            String locNo = map.get("locNo");
@@ -624,11 +641,11 @@
            if (!Cools.isEmpty(source_loc_no)) {
                throw new CoolException("当前库位已生成任务!");
            }
            AgvLocMast locMastS = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo).eq("loc_sts", "F"));
            AgvLocMast locMastS = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo).eq("loc_sts","F"));
            if (Cools.isEmpty(locMastS)) {
                throw new CoolException("当前库位非在库状态!库位号=" + locNo);
                throw new CoolException("当前库位非在库状态!库位号="+locNo);
            }
            AgvWrkMast wrkMast = createWrkMast(114, 22L, locNo, "", barcode, now, getUserId(), 30, 1);
            AgvWrkMast wrkMast = createWrkMast(114, 22L, locNo, "", barcode, now, getUserId(), 30,1);
            // 同步调拨单
            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
            for (AgvLocDetl agvLocDetl : agvLocDetls) {
@@ -647,10 +664,10 @@
                // 更新订单
                // 先查询库订单明细 所属的订单
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("source", 36).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()));
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("source",36).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
                orderDetl.setQty(orderDetl.getQty() + agvLocDetl.getAnfme());
                if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("source", 36).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) {
                    throw new CoolException("修改订单明细失败,请联系管理员" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr());
                if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("source",36).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
                    throw new CoolException("修改订单明细失败,请联系管理员"+agvLocDetl.getOrderNo()+agvLocDetl.getMatnr());
                }
            }
            // 更新源库位
@@ -665,7 +682,7 @@
    @Transactional
    @ManagerAuth(memo = "手动库位转移")
    @Synchronized
    public R handControlLocMove(@RequestBody LocMoveParam param) {
    public R handControlLocMove(@RequestBody LocMoveParam param){
        agvMobileService.handControlLocMove(param, getUserId());
        return R.ok();
    }
@@ -674,7 +691,7 @@
    @Transactional
    @ManagerAuth(memo = "调拨离场")
    @Synchronized
    public R allocationOut(@RequestBody AgvMobileStartPakin param) {
    public R allocationOut(@RequestBody AgvMobileStartPakin param){
        agvMobileService.allocationOut(param, getUserId());
        return R.ok();
    }
@@ -683,7 +700,7 @@
    @Transactional
    @ManagerAuth(memo = "调拨进场")
    @Synchronized
    public R allocationIn(@RequestBody AgvMobileStartPakin param) {
    public R allocationIn(@RequestBody AgvMobileStartPakin param){
        agvMobileService.allocationIn(param, getUserId());
        return R.ok();
    }
@@ -692,7 +709,7 @@
    @Transactional
    @ManagerAuth(memo = "空架离场")
    @Synchronized
    public R empOut(@RequestBody AgvMobileStartPakin param) {
    public R empOut(@RequestBody AgvMobileStartPakin param){
        agvMobileService.empOut(param, getUserId());
        return R.ok();
    }
@@ -701,7 +718,7 @@
    @Transactional
    @ManagerAuth(memo = "空架进场")
    @Synchronized
    public R empIn(@RequestBody AgvMobileStartPakin param) {
    public R empIn(@RequestBody AgvMobileStartPakin param){
        agvMobileService.empIn(param, getUserId());
        return R.ok();
    }
@@ -710,8 +727,8 @@
    @Transactional
    @ManagerAuth(memo = "站点回退")
    @Synchronized
    public R doBack(@RequestBody AgvMobileStartPakin param) {
        if (Cools.isEmpty(param)) {
    public R doBack(@RequestBody AgvMobileStartPakin param){
        if (Cools.isEmpty(param)){
            return R.error("参数为空");
        }
        agvMobileService.doBack(param, getUserId());
@@ -722,7 +739,7 @@
    @Transactional
    @ManagerAuth(memo = "转手动回流")
    @Synchronized
    public R handBack(@RequestBody AgvMobileStartPakin param) {
    public R handBack(@RequestBody AgvMobileStartPakin param){
        agvMobileService.handBack(param, getUserId());
        return R.ok();
    }
@@ -731,7 +748,7 @@
    @Transactional
    @ManagerAuth(memo = "确认加工完成")
    @Synchronized
    public R processed(@RequestBody AgvMobileStartPakin param) {
    public R processed(@RequestBody AgvMobileStartPakin param){
        agvMobileService.processed(param, getUserId());
        return R.ok();
    }
@@ -755,11 +772,10 @@
        System.out.println(agvLocDetls22.equals(agvLocDetls2));
    }
    /*
   生成工作档
    */
    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor) {
    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId, int containerType,int floor){
        AgvWrkMast wrkMast = new AgvWrkMast();
        //工作状态
        wrkMast.setWrkSts(wrkSts);
@@ -788,7 +804,7 @@
            throw new CoolException("保存工作档失败");
        }
        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no", sourceLocNo));
        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo));
        return wrkMast;
    }
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -520,6 +520,15 @@
                if (Cools.isEmpty(orderDetl)) {
                    throw new CoolException("当前物料的调拨单不存在!");
                }
                Order order = orderService.selectByNo(orderDetl.getOrderNo());
                if (Cools.isEmpty(order)) {
                    throw new CoolException("当前物料的调拨单不存在!");
                }
                if (order.getSettle() == 4L) {
                    if (!orderService.updateSettle(order.getId(),2L,userId)) {
                        throw new CoolException("调拨单回滚异常!");
                    }
                }
                orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
                if (!orderDetlService.updateById(orderDetl)) {
                    throw new CoolException("保存工作明细失败");
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -56,7 +56,7 @@
        if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
            List<Order> orders = orderService.selectComplete();
            for (Order order : orders) {
                //如果是加工单则进行判断
                //如果是调拨单则进行判断
                if (order.getDocType() == 33) {
                    //查询库存中是否存在该订单的物料信息,存在则不处理该订单
                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
src/main/java/com/zy/common/properties/SystemProperties.java
@@ -63,7 +63,7 @@
    // 生成激活码
    public static void main(String[] args) {
        String timeStr = "2099-08-01 17:48:35";
        String timeStr = "2025-11-01 00:00:00";
        Date exprTime = DateUtils.convert(timeStr);
        String code = AesUtils.encrypt(DateUtils.convert(exprTime, DateUtils.yyyyMMddHHmmss), SystemProperties.SALT);
        System.out.println("激活码:"+code);