pang.jiabao
昨天 b1dfb711a89033765eccf16e536a90edbd4b8f1f
src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -107,6 +107,7 @@
        crnOutSiteToRgvSite.put(1093, (short) 1091);crnOutSiteToRgvSite.put(1099, (short) 1097);crnOutSiteToRgvSite.put(1107, (short) 1105);
        crnOutSiteToRgvSite2.put(1093, (short) 1091);crnOutSiteToRgvSite2.put(1099, (short) 1097);crnOutSiteToRgvSite2.put(1107, (short) 1105);
        crnOutSiteToRgvSite2.put(1087, (short) 1089);crnOutSiteToRgvSite2.put(1084, (short) 1086);crnOutSiteToRgvSite2.put(1081, (short) 1083);
        crnOutSiteToRgvSite2.put(1043, (short) 1041);crnOutSiteToRgvSite2.put(1016, (short) 1018);crnOutSiteToRgvSite2.put(1008, (short) 1006);
    }
@@ -325,7 +326,7 @@
    /**
     * 罐装线要桶数量减少
     */
    private void decreaseWantBucketCount(int site, int decrease) throws InterruptedException {
    private synchronized void decreaseWantBucketCount(int site, int decrease) throws InterruptedException {
        int siteNew;
        switch (site) {
@@ -362,6 +363,7 @@
        }
        log.info("自动出空桶减少罐装线要桶数成功,站点:{},减少前:{},减少数:{},剩余要桶数:{}", site, count, decrease, remaining);
        Thread.sleep(700);
    }
    /**
@@ -844,10 +846,16 @@
        WrkMast wrkMast1050 = wrkMastMapper.selectPakInStep2(4, workNo1050);
        // 判断1050没有被堆垛机取,并且没有尾拖信号
        if(wrkMast1050 != null && wrkMast1050.getCtnType() != 1) {
            WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo1050));
            String model = wrkDetl.getModel();
            // 判断这两个货是不是一种类型,不是给1050分配库位,给尾拖标识,是则给两个货分配库位
             if(wrkMast1050.getPdcType().equals(wrkMast1049.getPdcType())) {
                 // 取新库位组的第一个库位
                 List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
                 Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O");
                 if (model.equals("IBC")) { // 最上面一层只能放208L
                     wrapper.ne("lev1", 11);
                 }
                 List<LocMast> locMasts = locMastService.selectList(wrapper);
                 List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
                 List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList());
                 if (collect.size() <= 0 && collect1.size()  <= 0) {
@@ -866,8 +874,7 @@
                     News.error("站点:{},任务号{}:入库空桶库无对应空空桶组",1050,workNo1050);
                     return true;
                 }
                 WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo1050));
                 if (wrkDetl.getModel().equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 最上面一层只能放208L,库位剩余量不多时,如果是208L桶入库,则先从最顶层放
                 if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 最上面一层只能放208L,库位剩余量不多时,如果是208L桶入库,则先从最顶层放
                     locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
                 } else {
                     locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
@@ -903,7 +910,11 @@
                 }
             } else {
                 // 取新库位组的第一个库位
                 List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
                 Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O");
                 if (model.equals("IBC")) { // 最上面一层只能放208L
                     wrapper.ne("lev1", 11);
                 }
                 List<LocMast> locMasts = locMastService.selectList(wrapper);
                 List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
                 List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 第一个先放这两排
                 if (collect.size() <= 0 && collect1.size()  <= 0) {
@@ -922,8 +933,7 @@
                    News.error("站点:{},任务号{}:入库空桶库无对应空空桶组",1050,workNo1050);
                    return true;
                }
                 WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo1050));
                if (wrkDetl.getModel().equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 最上面一层只能放208L,库位剩余量不多时,如果是208L桶入库,则先从最顶层放
                if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 最上面一层只能放208L,库位剩余量不多时,如果是208L桶入库,则先从最顶层放
                    locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
                } else {
                    locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
@@ -1338,6 +1348,7 @@
                    wrkMast.setWorkNoOther(0); // 清空另一个任务号
                    // 修改成功后复位堆垛机
                    if (wrkMastMapper.updateById(wrkMast) > 0) {
                        log.info("{}号堆垛机任务完成,申请复位,任务号:{}",crnProtocol.getCrnNo(),crnProtocol.getTaskNo());
                        // 堆垛机复位
                        News.warnNoLog(""+mark+" - 2"+" - 修改成功后复位堆垛机 : 堆垛机号={}",crnThread.getCrnProtocol().getCrnNo());
                        crnThread.setResetFlag(true);
@@ -1353,6 +1364,10 @@
     * 堆垛机回原点
     */
    public synchronized void originGo() throws InterruptedException {
        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoHome").eq("status", 1));
        if (config == null || Cools.isEmpty(config.getValue()) || !config.getValue().equals("Y")) {
            return;
        }
        for (CrnSlave crn : slaveProperties.getCrn()) {
            // 获取堆垛机信息
@@ -1407,7 +1422,7 @@
                    basCrnpService.updateById(basCrnp); // 设置更新时间,避免重复下发回原点
                    log.info("{}号堆垛机回原点任务下发成功:{}", crn.getId(), JSON.toJSON(crnCommand));
                }
                Thread.sleep(3000);
                Thread.sleep(4000);
            }
        }
    }
@@ -1787,6 +1802,11 @@
                    matDto.setWeight(wrkDetl1.getWeight());
                    matDto.setGrossWeight(wrkDetl1.getManLength());
                    ledCommand.getMatDtos().add(matDto);
                } else {
                    // 入库空托盘,异常去异常口显示报警信息,给空工作明细
                    if(wrkMast.getIoType() == 3) {
                        ledCommand.getMatDtos().add(matDto);
                    }
                }
                // 订单
//                if(wrkDetl1 != null && !Cools.isEmpty(wrkDetl1.getOrderNo()))  {
@@ -2209,7 +2229,8 @@
                    wrkMast.setWrkSts(15L);
                    wrkMast.setModiTime(new Date());
                    wrkMastService.updateById(wrkMast);
                } else if(wrkMast.getIoType() == 110 && (wrkMast.getStaNo() == 1002 || wrkMast.getStaNo() == 1020 ||wrkMast.getStaNo() == 1035 || wrkMast.getStaNo() == 1024)) {
                } else if(wrkMast.getIoType() == 110 && (wrkMast.getStaNo() == 1002 || wrkMast.getStaNo() == 1020 ||wrkMast.getStaNo() == 1035
                        || wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016|| wrkMast.getStaNo() == 1043)) {
                    if(wrkMast.getWrkSts() != 2 ){
                        log.warn("rgv放货完成110,rgv未复位:rgv号{},任务号:{},任务状态{}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
                        continue;
@@ -2270,7 +2291,7 @@
//                log.info("异常口入库入库目标站点已分配:{}", wrkMast.getStaNo());
                return;
            }
            log.info("异常口入库请求wms前,任务号:{},任务状态:{}",wrkMast.getWrkNo(), wrkMast.getWrkSts());
            try {
                CanningLineInLocParam param = new CanningLineInLocParam();
                param.setWrkNo(staProtocol.getWorkNo());
@@ -2286,7 +2307,7 @@
                log.info("异常口入库请求wms原始返回:" + response);
                JSONObject jsonObject = JSON.parseObject(response);
                if (jsonObject.getInteger("code").equals(200)) {
                    log.error("异常口入库请求接口成功常,url:{},request:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
                    log.info("异常口入库请求接口成功,url:{},request:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
                } else {
                    log.error("异常口入库请求接口异常,url:{},request:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
                    News.error("异常口入库请求接口异常!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
@@ -2313,13 +2334,17 @@
                }
                // 站点条件判断
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWorkNo() == 0) {
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWorkNo() == 0 && staProtocol.isHigh()) {
                    if(site == 1019 && staProtocol.getHideWorkNo() != 0) {
                        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getHideWorkNo()));
                        if(wrkMast1 != null && wrkMast1.getWrkSts() != 15) {
                            News.warn("空托出库未完成,无法转空托入库任务,任务号:{},当前状态:{}",wrkMast1.getWrkNo(),wrkMast1.getWrkSts());
                            continue;
                        }
                    }
                    int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 10).eq("source_sta_no", site));
                    if (count >= 2) {
                        News.warn("限制{}空母托叠盘入库数小于2,当前:{}", site, count);
                    }
                    try {
                        SearchLocParam param = new SearchLocParam();
@@ -2671,7 +2696,7 @@
                // 根据罐装线反馈任务号查询工作档
                WrkMast wrkMast = wrkMastService.selectById(staProtocol.getWrkNo());
                if(wrkMast == null) {
                    log.error("出罐装线货物任务号工作档不存在:{}",staProtocol.getWrkNo());
                    News.error("出罐装线货物任务号工作档不存在:{}",staProtocol.getWrkNo());
                    continue;
                } else if(wrkMast.getWrkSts() != 2) {
                    log.error("出罐装线货物任务号工作档状态异常,不为2:{}",staProtocol.getWrkNo());
@@ -2747,10 +2772,15 @@
            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWorkNo() != 0) {
                // 查询工作档
                WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo());
                if (wrkMast != null && wrkMast.getWhsType() == null && wrkMast.getIoType() != 120) {
                if (wrkMast != null && wrkMast.getWhsType() == null) {
                    WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
                    staProtocol.setBucketType(wrkDetl.getMatnr());
                    staProtocol.setBucketCount(wrkDetl.getAnfme().intValue());
                    if(wrkMast.getIoType() == 120) {
                        staProtocol.setBucketType("1");
                        staProtocol.setBucketCount(1);
                    } else {
                        staProtocol.setBucketType(wrkDetl.getMatnr());
                        staProtocol.setBucketCount(wrkDetl.getAnfme().intValue());
                    }
                    boolean result = MessageQueue.offer(SlaveType.Devp, inGzxSiteList.indexOf(site) + 4, new Task(4, staProtocol));
                    if (result) {
                        log.info("告诉罐装线入库桶信息命令队列推送成功:" + staProtocol.getWorkNo() + "," +"托盘码:" + wrkMast.getBarcode() +"," + site + "," + staProtocol.getBucketType() +"," + staProtocol.getBucketCount());
@@ -2817,7 +2847,7 @@
            }
            // 站点条件判断
            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk()) {
            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
                // 更新站点信息 且 下发plc命令
                StaProtocol staProtocolNew = new StaProtocol();
                staProtocolNew.setSiteId(staProtocol.getSiteId());
@@ -2825,6 +2855,11 @@
                staProtocolNew.setStaNo(crnOutSiteToRgvSite2.get(wrkMast.getSourceStaNo()) != null ? crnOutSiteToRgvSite2.get(wrkMast.getSourceStaNo()) :wrkMast.getSourceStaNo().shortValue());
                devpThread.setPakMk(staProtocol.getSiteId(), false);
                boolean result = MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocolNew));
                Integer siteId = staProtocol.getSiteId();
                if(siteId == 1081 || siteId == 1084 || siteId == 1087) {
                    staProtocol.setPlaceableFlag(1);
                    MessageQueue.offer(SlaveType.Devp, outGzxSiteList.indexOf(staProtocol.getSiteId()) + 4, new Task(5, staProtocol));
                }
                log.info("手动站位转移输送线下发:" + staProtocolNew.getWorkNo() + "," + staProtocolNew.getSiteId() + "->" + staProtocolNew.getStaNo());
                if (!result) {
                    News.errorNoLog("" + " - 1" + " - 更新plc站点信息失败");