#
Junjie
2026-01-15 6200ba627af8af4045155c1bd7e65220ce59d6ba
src/main/java/com/zy/common/service/CommonService.java
@@ -1,7 +1,5 @@
package com.zy.common.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
@@ -26,6 +24,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
@Slf4j
@Service
@@ -45,6 +44,8 @@
    private NavigateUtils navigateUtils;
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private BasOutStationAreaService basOutStationAreaService;
    /**
     * 生成工作号
@@ -85,8 +86,18 @@
    }
    public boolean completeTask(CompleteTaskParam param) {
        WrkMast wrkMast = null;
        Integer wrkNo = param.getWrkNo();
        WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo);
        String taskNo = param.getTaskNo();//wms任务号
        if(wrkNo == null) {
            if (!Cools.isEmpty(taskNo)) {
                wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wms_wrk_no", taskNo));
            }
        }else {
            wrkMast = wrkMastService.selectByWorkNo(wrkNo);
        }
        if (null == wrkMast) {
            throw new CoolException("任务不存在");
        }
@@ -105,8 +116,18 @@
    }
    public boolean cancelTask(CancelTaskParam param) {
        WrkMast wrkMast = null;
        Integer wrkNo = param.getWrkNo();
        WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo);
        String taskNo = param.getTaskNo();//wms任务号
        if(wrkNo == null) {
            if (!Cools.isEmpty(taskNo)) {
                wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wms_wrk_no", taskNo));
            }
        }else {
            wrkMast = wrkMastService.selectByWorkNo(wrkNo);
        }
        if (null == wrkMast) {
            throw new CoolException("任务不存在");
        }
@@ -156,7 +177,6 @@
        if (!sourceCrnResult.getCrnNo().equals(targetCrnResult.getCrnNo())) {
            throw new CoolException("源库位和目标库位不在同一巷道");
        }
        Integer crnNo = targetCrnResult.getCrnNo();
        // 获取工作号
        int workNo = getWorkNo(WrkIoType.LOC_MOVE.id);
@@ -169,11 +189,19 @@
        wrkMast.setIoPri(ioPri);
        wrkMast.setSourceLocNo(param.getSourceLocNo());
        wrkMast.setLocNo(param.getLocNo()); // 目标库位
        wrkMast.setCrnNo(crnNo);
        wrkMast.setWmsWrkNo(param.getTaskNo());
        wrkMast.setBarcode(sourceLocMast.getBarcode());
        wrkMast.setAppeTime(now);
        wrkMast.setModiTime(now);
        if (targetCrnResult.getCrnType().equals(SlaveType.Crn)) {
            wrkMast.setCrnNo(targetCrnResult.getCrnNo());
        } else if (targetCrnResult.getCrnType().equals(SlaveType.DualCrn)) {
            wrkMast.setDualCrnNo(targetCrnResult.getCrnNo());
        }else {
            throw new CoolException("未知设备类型");
        }
        boolean res = wrkMastService.insert(wrkMast);
        if (!res) {
            News.error("移库任务 --- 保存工作档失败!");
@@ -277,7 +305,23 @@
        }
        Integer crnNo = findCrnResult.getCrnNo();
        Integer sourceStationId = this.findOutStationId(findCrnResult, param.getStaNo());
        Integer staNo = param.getStaNo();
        String outArea = param.getOutArea();
        if(Cools.isEmpty(staNo) && Cools.isEmpty(outArea)) {
            throw new CoolException("请传入出库站点或出库区域");
        }
        if(Cools.isEmpty(staNo)) {
            List<BasOutStationArea> areaList = basOutStationAreaService.selectList(new EntityWrapper<BasOutStationArea>().eq("area_code", outArea));
            if (areaList.isEmpty()) {
                throw new CoolException("出库区域不存在");
            }
            int nextInt = new Random().nextInt(areaList.size());
            BasOutStationArea basOutStationArea = areaList.get(nextInt);
            staNo = basOutStationArea.getStationId();
        }
        Integer sourceStationId = this.findOutStationId(findCrnResult, staNo);
        if (sourceStationId == null) {
            throw new CoolException("未找到输送目标站点可走行路径");
        }
@@ -293,11 +337,19 @@
        wrkMast.setIoPri(ioPri);
        wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位
        wrkMast.setSourceStaNo(sourceStationId);//源站
        wrkMast.setStaNo(param.getStaNo());//目标站
        wrkMast.setStaNo(staNo);//目标站
        wrkMast.setWmsWrkNo(param.getTaskNo());
        wrkMast.setBarcode(locMast.getBarcode());
        wrkMast.setAppeTime(now);
        wrkMast.setModiTime(now);
        if (!Cools.isEmpty(param.getBatch())) {
            wrkMast.setBatch(param.getBatch());
        }
        if (!Cools.isEmpty(param.getBatchSeq())) {
            wrkMast.setBatchSeq(param.getBatchSeq());
        }
        if (findCrnResult.getCrnType().equals(SlaveType.Crn)) {
            BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", crnNo));
@@ -402,7 +454,7 @@
                    break;
                }
            } catch (Exception e) {
                e.printStackTrace();
//                e.printStackTrace();
            }
        }
        return targetStationId;
@@ -434,7 +486,7 @@
                    break;
                }
            } catch (Exception e) {
                e.printStackTrace();
//                e.printStackTrace();
            }
        }
        return finalSourceStationId;