#
zwl
2026-02-09 ad79ba405b2d1ac96423f88f4e8a76c584b9d38a
src/main/java/com/zy/common/service/CommonService.java
@@ -12,11 +12,13 @@
import com.zy.common.utils.NavigateUtils;
import com.zy.common.utils.RedisUtil;
import com.zy.core.News;
import com.zy.core.enums.RedisKeyType;
import com.zy.core.enums.SlaveType;
import com.zy.core.enums.WrkIoType;
import com.zy.core.enums.WrkStsType;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.*;
import com.zy.core.model.StationObjModel;
import com.zy.core.model.Task;
import com.zy.core.model.command.StationCommand;
import com.zy.core.thread.StationThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -24,6 +26,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
@Slf4j
@Service
@@ -43,6 +46,8 @@
    private NavigateUtils navigateUtils;
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private BasOutStationAreaService basOutStationAreaService;
    /**
     * 生成工作号
@@ -174,7 +179,10 @@
        if (!sourceCrnResult.getCrnNo().equals(targetCrnResult.getCrnNo())) {
            throw new CoolException("源库位和目标库位不在同一巷道");
        }
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wms_wrk_no", param.getTaskNo()));
        if (!wrkMasts.isEmpty()) {
            throw new CoolException("已经生成改任务号任务="+param.getTaskNo());
        }
        // 获取工作号
        int workNo = getWorkNo(WrkIoType.LOC_MOVE.id);
        // 保存工作档
@@ -219,6 +227,7 @@
    //入库任务
    public WrkMast createInTask(CreateInTaskParam param) {
        Date now = new Date();
//        String s = Utils.WMSLocToWCSLoc(param.getLocNo());
        LocMast locMast = locMastService.queryByLoc(param.getLocNo());
        if (null == locMast) {
            throw new CoolException(param.getLocNo() + "目标库位不存在");
@@ -245,16 +254,22 @@
        WrkMast wrkMast = new WrkMast();
        wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(now);
        wrkMast.setWrkSts(WrkStsType.NEW_INBOUND.sts); // 工作状态:1.生成入库任务
        wrkMast.setWrkSts(WrkStsType.INBOUND_DEVICE_RUN.sts); // 工作状态:3.设备搬运中
        wrkMast.setIoType(WrkIoType.IN.id); // 入出库状态: 1.入库
        wrkMast.setIoPri(ioPri);
        wrkMast.setLocNo(param.getLocNo()); // 目标库位
        wrkMast.setSourceStaNo(param.getSourceStaNo());//源站
        wrkMast.setStaNo(param.getStaNo());//目标站
        wrkMast.setWmsWrkNo(param.getTaskNo());
        wrkMast.setSourceStaNo(Integer.valueOf(param.getSourceStaNo()));//源站
        wrkMast.setStaNo(Integer.valueOf(param.getSourceStaNo()));//目标站
        wrkMast.setWmsWrkNo(String.valueOf(param.getTaskNo()));
        wrkMast.setBarcode(param.getBarcode());
        wrkMast.setAppeTime(now);
        wrkMast.setModiTime(now);
        StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, 1);
        StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
                wrkMast.getWrkNo(), Integer.valueOf(param.getSourceStaNo()), Integer.valueOf(param.getSourceStaNo()), 0);
        MessageQueue.offer(SlaveType.Devp, 1, new Task(2, command));
        if (findCrnResult.getCrnType().equals(SlaveType.Crn)) {
            wrkMast.setCrnNo(findCrnResult.getCrnNo());
@@ -282,7 +297,7 @@
    //出库任务
    public boolean createOutTask(CreateOutTaskParam param) {
        Date now = new Date();
        LocMast locMast = locMastService.queryByLoc(param.getLocNo());
        LocMast locMast = locMastService.queryByLoc(param.getSourceLocNo());
        if (null == locMast) {
            throw new CoolException("源库位不存在");
        }
@@ -302,7 +317,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("未找到输送目标站点可走行路径");
        }
@@ -317,12 +348,33 @@
        wrkMast.setIoType(WrkIoType.OUT.id); // 入出库状态: 101.出库
        wrkMast.setIoPri(ioPri);
        wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位
        if(!Cools.isEmpty(param.getLocNo())) {
            //目标站点
            LocMast locMast1 = locMastService.queryByLoc(param.getLocNo());
            if (null == locMast1) {
                throw new CoolException("源库位不存在");
            }
            if (!locMast1.getLocSts().equals("O")) {
                throw new CoolException("目标库位不处于在库状态");
            }
            wrkMast.setLocNo(locMast1.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));
@@ -427,7 +479,7 @@
                    break;
                }
            } catch (Exception e) {
                e.printStackTrace();
//                e.printStackTrace();
            }
        }
        return targetStationId;
@@ -459,7 +511,7 @@
                    break;
                }
            } catch (Exception e) {
                e.printStackTrace();
//                e.printStackTrace();
            }
        }
        return finalSourceStationId;