#
Junjie
昨天 8dc960dd9fda130ff19faaafed6b1234e622610b
src/main/java/com/zy/common/service/CommonService.java
@@ -1,6 +1,7 @@
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;
@@ -164,6 +165,7 @@
        wrkMast.setLocNo(param.getLocNo()); // 目标库位
        wrkMast.setCrnNo(crnNo);
        wrkMast.setWmsWrkNo(param.getTaskNo());
        wrkMast.setBarcode(sourceLocMast.getBarcode());
        wrkMast.setAppeTime(now);
        wrkMast.setModiTime(now);
        boolean res = wrkMastService.insert(wrkMast);
@@ -184,7 +186,7 @@
    }
    //入库任务
    public boolean createInTask(CreateInTaskParam param) {
    public WrkMast createInTask(CreateInTaskParam param) {
        Date now = new Date();
        LocMast locMast = locMastService.queryByLoc(param.getLocNo());
        if (null == locMast) {
@@ -234,7 +236,7 @@
        //缓存记录当前命令堆垛机编号
        redisUtil.set(RedisKeyType.CURRENT_CIRCLE_TASK_CRN_NO.key, crnNo, 60 * 60 * 24);
        return true;
        return wrkMast;
    }
    //出库任务
@@ -264,6 +266,20 @@
            throw new CoolException("未找到输送目标站点可走行路径");
        }
        BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", crnNo));
        if(basCrnp == null) {
            throw new CoolException("未找到对应堆垛机数据");
        }
        List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                .eq("crn_no", crnNo)
                .eq("io_type", WrkIoType.OUT.id)
        );
        // 检查是否超过最大出库任务数
        if(outWrkMasts.size() >= basCrnp.getMaxOutTask()){
            News.info("堆垛机:{} 已达最大出库任务数,当前任务数:{}", basCrnp.getCrnNo(), outWrkMasts.size());
            throw new CoolException("堆垛机:" + basCrnp.getCrnNo() + "已达最大出库任务数,当前任务数:" + outWrkMasts.size());
        }
        // 获取工作号
        int workNo = getWorkNo(WrkIoType.OUT.id);
        // 保存工作档
@@ -290,21 +306,17 @@
        locMast.setLocSts("R");
        locMast.setModiTime(new Date());
        locMastService.updateById(locMast);
        return true;
    }
    public Integer findCrnNoByLocNo(String locNo) {
        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
        for (BasCrnp basCrnp : basCrnps) {
            String controlRows = basCrnp.getControlRows();
            if (Cools.isEmpty(controlRows)) {
                continue;
            }
            List<Integer> rowList = JSON.parseArray(controlRows, Integer.class);
            if(rowList.contains(Utils.getRow(locNo))) {
                return basCrnp.getCrnNo();
            List<List<Integer>> rowList = basCrnp.getControlRows$();
            for (List<Integer> rows : rowList) {
                if(rows.contains(Utils.getRow(locNo))) {
                    return basCrnp.getCrnNo();
                }
            }
        }
        return null;