ae73d089ade681c2cae17f68b6f87a5f38f6e4fc..12010cb99f70f450318f1a016b87c070ce0c3519
2025-05-15 Junjie
#
12010c 对比 | 目录
2025-05-15 Junjie
#
c18be7 对比 | 目录
2025-05-15 Junjie
#
f1fe4e 对比 | 目录
2025-05-15 Junjie
#
f27451 对比 | 目录
2025-05-15 Junjie
#
088453 对比 | 目录
2025-05-15 Junjie
#
e936b2 对比 | 目录
2025-05-15 Junjie
#
da7e09 对比 | 目录
2025-05-15 Junjie
#
6e0e50 对比 | 目录
2025-05-15 Junjie
#
cadb48 对比 | 目录
2025-05-15 Junjie
#
bfeb1f 对比 | 目录
2025-05-15 Junjie
#
b94d54 对比 | 目录
2025-05-15 Junjie
#
d4f776 对比 | 目录
2025-05-15 Junjie
#
50d446 对比 | 目录
2025-05-15 Junjie
#
c1f361 对比 | 目录
2025-05-15 Junjie
#
67afd8 对比 | 目录
2025-05-15 Junjie
#
806ab4 对比 | 目录
5个文件已修改
145 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/SiteController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/enums/RedisKeyType.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/SiteController.java
@@ -80,6 +80,7 @@
            vo.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 入库标记
            vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 空板信号
            vo.setStaNo(staProtocol.getStaNo());                // 目标站
            vo.setWorkNo(staProtocol.getWorkNo().shortValue());                // 任务号
//            vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "低" : "高");     //高低库位
            vo.setLocType1(devp.getDevNo()==102 ? "高" : "低");
        }
@@ -112,6 +113,7 @@
            vo.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 入库标记
            vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 空板信号
            vo.setStaNo(staProtocol.getStaNo());                // 目标站
            vo.setWorkNo(staProtocol.getWorkNo().shortValue());                // 任务号
//            vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "低" : "高");     //高低库位
            vo.setLocType1(devp.getDevNo()==102 ? "高" : "低");
        }
src/main/java/com/zy/asrs/domain/enums/RedisKeyType.java
@@ -3,6 +3,7 @@
public enum RedisKeyType {
    QUEUE_TASK("queue_task_"),
    IN_TASK_LOCK("in_task_lock"),
    ;
    public String key;
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,6 +7,7 @@
import com.core.exception.CoolException;
import com.zy.asrs.domain.dto.NotifyCustomDataDto;
import com.zy.asrs.domain.enums.NotifyMsgType;
import com.zy.asrs.domain.enums.RedisKeyType;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.*;
@@ -18,15 +19,12 @@
import com.zy.asrs.utils.Utils;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.RedisUtil;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.*;
import com.zy.core.enums.DevpType.DevpRequestType;
import com.zy.core.enums.DevpType.DevpStateType;
import com.zy.core.enums.DevpType.DevpTrayType;
import com.zy.core.enums.DevpType.DevpWorkType;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.Task;
@@ -76,13 +74,9 @@
    @Autowired
    private TaskWrkService taskWrkService;
    @Autowired
    private ConfigService configService;
    @Autowired
    private StaDescMapper staDescMapper;
    @Autowired
    private CommandInfoService commandInfoService;
    @Autowired
    private OpenServiceImpl openServiceImpl;
    @Autowired
    private StaDescService staDescService;
    @Autowired
@@ -93,6 +87,8 @@
    private CrnOperaUtils crnOperaUtils;
    @Autowired
    private NotifyUtils notifyUtils;
    @Autowired
    private RedisUtil redisUtil;
    @Value("${wms.count}")
    private Integer maxCount;
    @Value("${wms.url}")
@@ -116,8 +112,6 @@
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    Short workNo = staProtocol.getWorkNo().shortValue();
                    Short stano = staProtocol.getStaNo();
                    // 尺寸检测异常
                    boolean back = false;
@@ -156,7 +150,9 @@
                            && staProtocol.isLoading()
                            && staProtocol.isInEnable()
                            && !staProtocol.isEmptyMk()
                            && staProtocol.isPakMk()) {
                            && staProtocol.isPakMk()
                            && staProtocol.getWorkNo() == 9999
                    ) {
                        // 获取条码扫描仪信息
                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                        if (barcodeThread == null) {
@@ -183,6 +179,11 @@
                        String response = "";
                        Boolean success = false;
                        try {
                            Object object = redisUtil.get(RedisKeyType.IN_TASK_LOCK.key);
                            if(object != null) {
                                continue;
                            }
                            response = new HttpHandler.Builder()
                                    .setUri(wmsUrl)
                                    .setPath(inboundTaskApplyPath)
@@ -190,14 +191,9 @@
                                    .build()
                                    .doPost();
                            JSONObject jsonObject = JSON.parseObject(response);
                            redisUtil.set(RedisKeyType.IN_TASK_LOCK.key, "lock", 5);
                            if (jsonObject.getInteger("code") != 200) {
                                log.info("条码:" + barcode + "申请WMS失败,response=" + JSON.toJSONString(jsonObject));
                                continue;
                            }
                            if (back) {
                                devpThread.setPakMk(staProtocol.getSiteId(), false);
                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                continue;
                            }
@@ -523,28 +519,6 @@
                        continue;
                    }
                    LocMast locMast=locMastService.selectByLocNo(taskWrk.getStartPoint());
                    //判断其库位是否为深库位,如果为深库位找其浅库位是都有货
                    if(locMast.getRow1()==1||locMast.getRow1()==5){
                        LocMast locMast1=locMastService.selectOne(new EntityWrapper<LocMast>()
                                .eq("row1", (locMast.getRow1()+1))
                                .eq("bay1",locMast.getBay1())
                                .eq("lev1",locMast.getLev1()).eq("loc_sts","F"));
                        if (!Cools.isEmpty(locMast1)){
                            log.info(locMast.getLocNo()+"出深库位,浅库位有货");
                            continue;
                        }
                    }else if(locMast.getRow1()==4||locMast.getRow1()==8){
                        LocMast locMast1=locMastService.selectOne(new EntityWrapper<LocMast>()
                                .eq("row1", (locMast.getRow1()-1))
                                .eq("bay1",locMast.getBay1())
                                .eq("lev1",locMast.getLev1()).eq("loc_sts","F"));
                        if (!Cools.isEmpty(locMast1)){
                            log.info(locMast.getLocNo()+"出深库位,浅库位有货");
                            continue;
                        }
                    }
                    // 获取堆垛机出库站信息
                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
                    StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
@@ -820,42 +794,13 @@
                    if (taskWrk.getIoType() == 1 && taskWrk.getWrkSts() == 3) {
                        taskWrk.setWrkSts(4);//入库完成
                        taskWrk.setStatus(5);//完结
                        //更新库位状态
                        LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
                        locMast.setLocSts("F");//F.在库
                        locMast.setBarcode(taskWrk.getBarcode());//托盘码
                        locMast.setModiTime(new Date());
                        locMast.setModiUser(9999L);
                        locMastService.updateById(locMast);
                    } else if (taskWrk.getIoType() == 2 && taskWrk.getWrkSts() == 12) {
                        taskWrk.setWrkSts(13);//出库完成
                        taskWrk.setStatus(5);//完结
                        //更新库位状态
                        LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                        locMast.setLocSts("O");//O.空库位
                        locMast.setBarcode("");//托盘码
                        locMast.setModiTime(new Date());
                        locMast.setModiUser(9999L);
                        locMastService.updateById(locMast);
                    } else if (taskWrk.getIoType() == 3 && taskWrk.getWrkSts() == 12) {
                        taskWrk.setWrkSts(4);//入库完成
                        taskWrk.setStatus(5);//完结
                        //更新库位状态
                        LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
                        locMast.setLocSts("F");//F.在库
                        locMast.setBarcode(taskWrk.getBarcode());//托盘码
                        locMast.setModiTime(new Date());
                        locMast.setModiUser(9999L);
                        locMastService.updateById(locMast);
                        LocMast locMast1 = locMastService.selectByLocNo(taskWrk.getStartPoint());
                        locMast1.setLocSts("O");//O.空库位
                        locMast1.setBarcode("");//托盘码
                        locMast1.setModiTime(new Date());
                        locMast1.setModiUser(9999L);
                        locMastService.updateById(locMast1);
                    }
                    taskWrkService.updateById(taskWrk);
                }
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -55,8 +55,8 @@
    }};
    public static final ArrayList<Integer> BarcodeList = new ArrayList<Integer>() {{
        add(1);add(2);add(3);add(4);
        add(5);add(6);add(7);add(8);
        add(0);add(1);add(2);add(3);
        add(4);add(5);add(6);add(7);
    }};
    public static final ArrayList<Integer> staNosErrList = new ArrayList<Integer>() {{
@@ -183,7 +183,7 @@
//        updateIoMode();
        ArrayList<Integer> staNos = getStaNo();
        int staNoSize = staNos.size();
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*2));
        if (result.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
@@ -193,11 +193,7 @@
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8));     // 工作号
                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4));   // 目标站
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2);
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*2, 2);
                staProtocol.setAutoing(status[0]);  // 自动
                staProtocol.setLoading(status[1]);  // 有物
                staProtocol.setInEnable(status[2]); // 可入
@@ -213,13 +209,29 @@
            }
        }
        OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.0", (short) (staNoSize*4));
        if (result1.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
                StaProtocol staProtocol = station.get(siteId);
                if (null == staProtocol) {
                    staProtocol = new StaProtocol();
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
                staProtocol.setWorkNo((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, i*4));     // 工作号
                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, i*4 + 2));   // 目标站
            }
        }
        //条码扫描器
        ArrayList<Integer> barcodeList = BarcodeList;
        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.100", (short) (barcodeList.size() * 8));
        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.100", (short) (barcodeList.size() * 10));
        if (result2.IsSuccess) {
            for (int i = 0; i < barcodeList.size(); i++) {
                Integer barcodeId = barcodeList.get(i);
                String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
                String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*10+2,8, "UTF-8");
                barcode = barcode.trim();
                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId + 1);
                if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
                    barcodeThread.setBarcode(barcode);
@@ -303,14 +315,15 @@
        ArrayList<Integer> staNos = getStaNo();
        int index = staNos.indexOf(staProtocol.getSiteId());
        OperateResult write = null;
        OperateResult write1 = null;
        //任务下发次数
        int writeCount = 0;
        do {
            write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo());    // 工作号
            Thread.sleep(200);
            write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo().shortValue());    // 目标站
            if(write.IsSuccess && write1.IsSuccess){
            short[] data = new short[2];
            data[0] = staProtocol.getWorkNo().shortValue();
            data[1] = staProtocol.getStaNo();
            write = siemensS7Net.Write("DB100." + index*4, data);
            if(write.IsSuccess){
                log.error("写入输送线命令成功。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                break;
            }
src/main/resources/application-prod.yml
@@ -120,7 +120,7 @@
      devpPlcId: ${wcs-slave.devp[0].id}
    ip: 192.168.10.90
    crnInStn[0]:    #堆垛机入库站点1
      staNo: 106
      staNo: 107
      row: 7
      bay: 1
      lev: 1
@@ -170,17 +170,17 @@
    emptyInSta[4]: #空板入库口5
      staNo: 203
    inSta[2]:
      staNo: 106
      staNo: 105
      barcode: ${wcs-slave.barcode[2].id}
    inSta[4]:
      staNo: 203
      staNo: 202
      barcode: ${wcs-slave.barcode[4].id}
    inSta[0]: #入库口1
      staNo: 102
      staNo: 101
      barcode: ${wcs-slave.barcode[0].id}
    id: 1
    inSta[6]:
      staNo: 209
      staNo: 208
      barcode: ${wcs-slave.barcode[6].id}
    emptyInSta[1]: #空板入库口2
      staNo: 104
@@ -197,17 +197,17 @@
    outSta[1]: #出库口2
      staNo: 101
    inSta[3]:
      staNo: 108
      staNo: 107
      barcode: ${wcs-slave.barcode[3].id}
    inSta[5]:
      staNo: 206
      staNo: 205
      barcode: ${wcs-slave.barcode[5].id}
    port: 102
    inSta[1]: #入库口2
      staNo: 104
      staNo: 103
      barcode: ${wcs-slave.barcode[1].id}
    inSta[7]:
      staNo: 212
      staNo: 211
      barcode: ${wcs-slave.barcode[7].id}
  barcode[5]: #条码扫描仪6
    port: 51236