zjj
2024-01-07 bdf490f12fa38c99593fdace907fa5379cc04413
#输送报警对接+回退
9个文件已修改
172 ■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/LocTypeDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/DevpSlave.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/StaProtocol.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/BarcodeThread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -109,7 +109,7 @@
    Integer selectExistInEmpty();
    @Select("select * from asr_wrk_mast  where crn_no=#{crnNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC")
//    @Select("select * from asr_wrk_mast  where crn_no=#{crnNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC")
    public List<WrkMast> selectWrkIoType(@Param("crnNo") Integer crnNo);
    public  List<WrkMast> selectWaitPakIn(@Param("wrkNos")List<Integer> wrkNos);
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -90,6 +90,8 @@
    @Value("${wms.url}")
    private String wmsUrl;
    public short wrkNo = 10000;
    /**
     * 组托
     * 入库站,根据条码扫描生成入库工作档,工作状态 2
@@ -116,23 +118,51 @@
                    continue;
                }
                String barcode = barcodeThread.getBarcode();
                //9998退回,9996空板
                if (!Cools.isEmpty(barcode) && (staProtocol.getWorkNo() != 9998 || staProtocol.getWorkNo() != 9996)) {
//                    log.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcode(), barcode);
                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                        String errorMsg = "15站扫码失败,已退回14站";
                        staProtocol.setWorkNo((short) 9998);
                        staProtocol.setStaNo((short) 14);
                        devpThread.setPakMk(staProtocol.getSiteId(), false);
                        // led 异常显示
                        if (ledThread != null) {
                            News.error(methodName + ":扫码失败,请重试");
                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
                        }
                // 尺寸检测异常
                boolean back = false;
                String errMsg = "";
                if (staProtocol.isFrontErr()) {
                    errMsg = "前超限";
                    back = true;
                }
                if (!back && staProtocol.isBackErr()) {
                    errMsg = "后超限";
                    back = true;
                }
                if (!back && staProtocol.isHighErr()) {
                    errMsg = "高超限";
                    back = true;
                }
                if (!back && staProtocol.isLeftErr()) {
                    errMsg = "左超限";
                    back = true;
                }
                if (!back && staProtocol.isRightErr()) {
                    errMsg = "右超限";
                    back = true;
                }
                if (!back && staProtocol.isWeightErr()) {
                    errMsg = "超重";
                    back = true;
                }
                if (!back && staProtocol.isBarcodeErr()) {
                    errMsg = "扫码失败";
                    back = true;
                }
                // 退回
                if (back) {
//                        News.warn("扫码入库失败,{}入库站因{}异常,托盘已被退回", inSta.getStaNo(), errMsg);
                    if (!staProtocol.isLoading()){
                        continue;
                    }
                } else {
                    continue;
                    if (!staProtocol.isPakMk()) {
                        continue;
                    }
                    staProtocol.setWorkNo(wrkNo);
                    wrkNo++;
                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
                    devpThread.setPakMk(staProtocol.getSiteId(), false);
                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                }
                // 判断是否满足入库条件
src/main/java/com/zy/common/model/LocTypeDto.java
@@ -29,15 +29,11 @@
    }
    public LocTypeDto(StaProtocol staProtocol) {
//        if (staProtocol.isHigh() == staProtocol.isLow()) {
//            throw new CoolException("plc高低检测异常");
//        }
//        if (staProtocol.isLow()) {
//            this.locType1 = 1; // 低库位
//        } else {
//            this.locType1 = 2; // 高库位
//        }
        this.locType1 = 1;
        if (!staProtocol.isWeight()) {
            this.locType1 = 1; // 轻货
        } else {
            this.locType1 = 2; // 重货
        }
    }
    /**
src/main/java/com/zy/core/model/DevpSlave.java
@@ -36,6 +36,8 @@
        private Integer led;
        private Integer backSta;
    }
}
src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -46,6 +46,8 @@
    // 低
    private boolean low;
    private boolean weight;
    // 锁定标记
    private boolean pakMk = true;
@@ -58,6 +60,29 @@
    //允许空托出库
    private String allowEmptyOut;
    // 外形检测 ------------------------------------------------------------------------
    // 前超限
    private boolean frontErr = false;
    // 后超限
    private boolean backErr = false;
    // 高超限
    private boolean highErr = false;
    // 左超限
    private boolean leftErr = false;
    // 右超限
    private boolean rightErr = false;
    // 超重
    private boolean weightErr = false;
    // 扫码失败
    private boolean barcodeErr = false;
    public BasDevp toSqlModel(){
        BasDevp basDevp = new BasDevp();
        basDevp.setDevNo(siteId);
src/main/java/com/zy/core/thread/BarcodeThread.java
@@ -37,7 +37,7 @@
        this.barcode.delete(0, this.barcode.length());
        this.barcode.append(barcode);
        if(!Cools.isEmpty(barcode)) {
            News.info(methodName + ":{}号条码器,检索数据:{}", slave.getId(), this.barcode);
//            News.info(methodName + ":{}号条码器,检索数据:{}", slave.getId(), this.barcode);
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("time", DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F));
            jsonObject.put("barcode", barcode);
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -63,6 +63,15 @@
        add(308);add(309);add(310);add(311);
        add(312);
    }};
    public static final ArrayList<Integer> staNosErr1 = new ArrayList<Integer>() {{
        add(101); add(103); add(105);
    }};
    public static final ArrayList<Integer> staNosErr2 = new ArrayList<Integer>() {{
        add(201); add(203); add(205);
    }};
    public static final ArrayList<Integer> staNosErr3 = new ArrayList<Integer>() {{
        add(301); add(303); add(305);
    }};
    private ArrayList<Integer> getStaNo() {
        switch (slave.getId()) {
            case 1:
@@ -71,6 +80,18 @@
                return staNos2;
            case 3:
                return staNos3;
            default:
                throw new CoolException("获取站点失败!");
        }
    }
    private ArrayList<Integer> getStaNoErr() {
        switch (slave.getId()) {
            case 1:
                return staNosErr1;
            case 2:
                return staNosErr2;
            case 3:
                return staNosErr3;
            default:
                throw new CoolException("获取站点失败!");
        }
@@ -173,9 +194,7 @@
//                    System.out.println(i);
                }
                Integer siteId = staNos.get(i); // 站点编号
//                if(siteId==206){
//                    System.out.println(1);
//                }
                StaProtocol staProtocol = station.get(siteId);
                if (null == staProtocol) {
                    staProtocol = new StaProtocol();
@@ -195,10 +214,28 @@
                staProtocol.setFullPlt(status[5]);  // 满托盘
                staProtocol.setHigh(status[6]);     // 高库位
                staProtocol.setLow(status[7]);      // 低库位
                staProtocol.setWeight(status[8]);  //是否为重货
                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                    staProtocol.setPakMk(true);
                }
            }
        }
        //外形检测
        ArrayList<Integer> staNoErrs = getStaNoErr();
        int staNoErrsSize = staNoErrs.size();
        OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.800", (short) (staNoErrsSize*8));
        if (resultErr.IsSuccess){
            for (int i = 0;i<3;i++){
                Integer siteId = staNoErrs.get(i); // 站点编号
                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i*4+2, 1);
                StaProtocol staProtocol = station.get(siteId);
                staProtocol.setFrontErr(status[0]);
                staProtocol.setBackErr(status[1]);
                staProtocol.setHighErr(status[2]);
                staProtocol.setLeftErr(status[3]);
                staProtocol.setRightErr(status[4]);
                staProtocol.setWeightErr(status[5]);
                staProtocol.setBarcodeErr(status[6]);
            }
        }
@@ -285,16 +322,10 @@
            return;
        }
        int index = staNos.indexOf(staProtocol.getSiteId());
//        int[] array = new int[2];
//        array[0] = staProtocol.getWorkNo();
//        array[1] = staProtocol.getStaNo();
        OperateResult write1 = siemensS7Net.Write("DB100." + (index*6+4),staProtocol.getStaNo());
        OperateResult write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo().intValue());
//        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 工作号
//        Thread.sleep(500);
//        OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 目标站
        if (!write.IsSuccess && !write1.IsSuccess) {
            staProtocol = station.get(staProtocol.getSiteId());
src/main/resources/application.yml
@@ -213,16 +213,19 @@
      staNo: 101
      barcode: ${wcs-slave.barcode[0].id}
      led: ${wcs-slave.led[0].id}
      backSta: 100
      # 入库口2
    inSta[1]:
      staNo: 103
      barcode: ${wcs-slave.barcode[1].id}
      led: ${wcs-slave.led[1].id}
      backSta: 102
    # 入库口3
    inSta[2]:
      staNo: 105
      barcode: ${wcs-slave.barcode[2].id}
      led: ${wcs-slave.led[2].id}
      backSta: 104
    # 空板入库口1
    emptyInSta[0]:
      staNo: 101
@@ -265,16 +268,19 @@
      staNo: 201
      barcode: ${wcs-slave.barcode[3].id}
      led: ${wcs-slave.led[3].id}
      backSta: 200
      # 入库口2
    inSta[1]:
      staNo: 203
      barcode: ${wcs-slave.barcode[4].id}
      led: ${wcs-slave.led[4].id}
      backSta: 202
    # 入库口3
    inSta[2]:
      staNo: 205
      barcode: ${wcs-slave.barcode[5].id}
      led: ${wcs-slave.led[5].id}
      backSta: 204
    # 空板入库口1
    emptyInSta[0]:
      staNo: 201
@@ -317,16 +323,19 @@
      staNo: 301
      barcode: ${wcs-slave.barcode[6].id}
      led: ${wcs-slave.led[6].id}
      backSta: 300
      # 入库口2
    inSta[1]:
      staNo: 303
      barcode: ${wcs-slave.barcode[7].id}
      led: ${wcs-slave.led[7].id}
      backSta: 302
    # 入库口3
    inSta[2]:
      staNo: 305
      barcode: ${wcs-slave.barcode[8].id}
      led: ${wcs-slave.led[8].id}
      backSta: 304
    # 空板入库口1
    emptyInSta[0]:
      staNo: 301
src/main/resources/mapper/WrkMastMapper.xml
@@ -194,4 +194,9 @@
        and wrk_sts = 2 and io_type in (1,10,53,57)
        order by io_pri desc,io_time desc,wrk_no ASC
    </select>
    <select id="selectWrkIoType" resultMap="BaseResultMap">
        select * from asr_wrk_mast
        where crn_no=#{crnNo} and wrk_sts=11 and io_type>100
        order by io_pri desc,io_time desc,wrk_no ASC
    </select>
</mapper>