野心家
2025-03-13 7112338864ef558d54db0329d75b903322787f6c
#输送线循环,堆垛机暂存数
10个文件已修改
150 ■■■■■ 已修改文件
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/TaskWrkService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkMastService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/autoReportStartHandler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -15,7 +15,7 @@
    <properties>
        <java.version>1.8</java.version>
        <cool.version>3.2.0</cool.version>
        <cool.version>3.4.5</cool.version>
        <mysql-driver.version>5.1.47</mysql-driver.version>
        <mybatis-plus.version>2.3.2</mybatis-plus.version>
        <fastjson.version>1.2.58</fastjson.version>
src/main/java/com/zy/asrs/service/TaskWrkService.java
@@ -29,5 +29,9 @@
    List<TaskWrk> selectToBeHistoryData();
    int saveToHistory(String taskNo);//将任务转历史日志
    /**
     * 获取对应堆垛机号工作状态为14,12,2的工作档
     */
    int getStoreCount(Integer crnNo);
}
src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -15,4 +15,9 @@
    int getOutToStn182(Integer devpNo);
    /**
     * 获取对应堆垛机号工作状态为14,12,2的工作档
     */
    int getStoreCount(Integer crnNo);
}
src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
@@ -6,13 +6,19 @@
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.mapper.BasCrnpMapper;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.WrkMastService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Slf4j
@Service("basCrnpService")
public class BasCrnpServiceImpl extends ServiceImpl<BasCrnpMapper, BasCrnp> implements BasCrnpService {
    @Value("${wms.count}")
    private Integer maxCount;
    @Autowired
    private WrkMastService wrkMastService;
    @Override
    public BasCrnp checkSiteStatus(Integer crnId) {
        BasCrnp crnp = this.selectById(crnId);
@@ -36,6 +42,11 @@
            return false;
        }
        if (pakin) {
//            int storeCount = wrkMastService.getStoreCount(crnNo);
//            if(storeCount >= maxCount){
//                log.error("{}号堆垛机暂存数已满!", crnNo);
//                return false;
//            }
            if ("N".equals(crnp.getInEnable())) {
                log.error("{}号堆垛机不可入", crnNo);
                return false;
@@ -60,4 +71,5 @@
//        }
        return true;
    }
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -42,12 +42,14 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.CompletableFuture;
/**
 * 立体仓库WCS系统主流程业务
@@ -94,7 +96,10 @@
    private ApiLogService apiLogService;
    @Autowired
    private CommonService commonService;
    @Value("${wms.count}")
    private Integer maxCount;
    @Autowired
    private WrkMastService wrkMastService;
    @Value("${wms.url}")
    private String wmsUrl;
    @Value("${wms.inboundTaskApplyPath}")
@@ -107,6 +112,95 @@
    private CrnController crnController;
    @Autowired
    private SiteController siteController;
    //出库站点至112循环站点
    public synchronized void shiftTargetToCyclePoint() throws IOException, InterruptedException{
        try{
            for (DevpSlave devp : slaveProperties.getDevp()) {
                for (DevpSlave.Sta outSta : devp.getOutSta()) {
                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                    StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo());
                    StaProtocol staProtocol1 = devpThread.getStation().get(1001);
                    StaProtocol staProtocol2 = devpThread.getStation().get(1002);
                    StaProtocol staProtocol3 = devpThread.getStation().get(1003);
                    StaProtocol staProtocol4 = devpThread.getStation().get(1004);
                    if (staProtocol == null) {
                        continue;
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    if (staProtocol1 == null) {
                        continue;
                    } else {
                        staProtocol1 = staProtocol1.clone();
                    }
                    if (staProtocol2 == null) {
                        continue;
                    } else {
                        staProtocol2 = staProtocol2.clone();
                    }
                    if (staProtocol3 == null) {
                        continue;
                    } else {
                        staProtocol3 = staProtocol3.clone();
                    }
                    if (staProtocol4 == null) {
                        continue;
                    } else {
                        staProtocol4 = staProtocol4.clone();
                    }
                    boolean result = false;
                    switch(outSta.getStaNo()){
                        case 105: if (staProtocol1.isLoading()){
                            result = true;
                        }
                        case 107: if (staProtocol2.isLoading()){
                            result = true;
                        }
                        case 109: if (staProtocol3.isLoading()){
                            result = true;
                        }
                        case 110: if (staProtocol4.isLoading()){
                            result = true;
                        }
                        default: break;
                    }
                    if(result){
                        staProtocol.setStaNo((short) 112);
                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                    }
                }
            }
        }catch (Exception e) {
            log.error("generateStoreWrkFile e", e);
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
    //112循环站点至出库站
    public synchronized void shiftCyclePointToTarget() throws IOException, InterruptedException{
        try{
            for (DevpSlave devp : slaveProperties.getDevp()) {
                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                StaProtocol staProtocol = devpThread.getStation().get(112);
                if (staProtocol == null) {
                    continue;
                } else {
                    staProtocol = staProtocol.clone();
                }
                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
                if(wrkMast != null &&  wrkMast.getWrkNo() < 9000 && wrkMast.getWrkNo() > 7000){
                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                }
            }
        }catch (Exception e) {
            log.error("generateStoreWrkFile e", e);
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
    public synchronized void generateStoreWrkFile1() throws IOException, InterruptedException {
@@ -722,6 +816,7 @@
                    continue;
                }
                // 获取工作状态为2(设备上走)的入库工作档
                TaskWrk taskWrk = taskWrkMapper.selectPakIn(slave.getId(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString());
                if (null == taskWrk) {
@@ -847,6 +942,12 @@
                        if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
                            break;
                        }
                        int storeCount = taskWrkService.getStoreCount(taskWrk.getCrnNo());
                        if(storeCount >= maxCount){
                            log.error("{}号堆垛机暂存数已满!", taskWrk.getCrnNo());
                            break;
                        }
                        // 已经存在吊车执行任务时,则过滤
                        if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
@@ -2,11 +2,13 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.StaDesc;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.TaskWrkMapper;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.service.ApiLogService;
@@ -247,4 +249,9 @@
    public int saveToHistory(String taskNo) {
        return this.baseMapper.saveToHistory(taskNo);
    }
    @Override
    public int getStoreCount(Integer crnNo){
        return selectCount(new EntityWrapper<TaskWrk>().eq("crn_no", crnNo).in("wrk_sts",12,14,2));
    }
}
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -5,9 +5,11 @@
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.WrkMastService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("wrkMastService")
public class WrkMastServiceImpl extends ServiceImpl<WrkMastMapper, WrkMast> implements WrkMastService {
@@ -31,4 +33,9 @@
    public int getOutToStn182(Integer devpNo) {
        return selectCount(new EntityWrapper<WrkMast>().eq("sta_no", devpNo).in("wrk_sts",11,12));
    }
    @Override
    public int getStoreCount(Integer crnNo){
        return selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("wrk_sts",12,14,2));
    }
}
src/main/java/com/zy/asrs/task/autoReportStartHandler.java
@@ -85,7 +85,7 @@
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    public synchronized void execute() throws IOException {
        List<TaskWrk> taskWrks=taskWrkService.selectList(new EntityWrapper<TaskWrk>().eq("status",1).in("wrk_sts",12,13,3,4));
        List<TaskWrk> taskWrks=taskWrkService.selectList(new EntityWrapper<TaskWrk>().eq("status",1).in("wrk_sts",12,13,2,3,4));
        if(taskWrks.size()>0){
            for(TaskWrk taskWrk:taskWrks){
                if(Cools.isEmpty(taskWrk.getMarkStart())||taskWrk.getMarkStart()==0){
src/main/java/com/zy/core/MainProcess.java
@@ -62,6 +62,10 @@
//                    mainService.outOfDevp();
                    // 其他  ===>> // 入出库模式切换函数
                    //环形循环函数
                    mainService.shiftTargetToCyclePoint();
                    mainService.shiftCyclePointToTarget();
                    i++;
                    if (i > 1) {
//                        mainService.ioConvert();
src/main/resources/application.yml
@@ -44,6 +44,8 @@
  publicKeysStorePath: publicCerts.keystore
wms:
  #堆垛机任务暂存数
  count: 4
  # 是否开启上报
  start: true
  # WMS系统ip