| | |
| | | /** |
| | | * 罐装线要桶数量减少 |
| | | */ |
| | | private void decreaseWantBucketCount(int site, int decrease) throws InterruptedException { |
| | | private synchronized void decreaseWantBucketCount(int site, int decrease) throws InterruptedException { |
| | | |
| | | int siteNew; |
| | | switch (site) { |
| | |
| | | } |
| | | |
| | | log.info("自动出空桶减少罐装线要桶数成功,站点:{},减少前:{},减少数:{},剩余要桶数:{}", site, count, decrease, remaining); |
| | | Thread.sleep(700); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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) { |
| | |
| | | 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()); |
| | |
| | | } |
| | | } 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) { |
| | |
| | | 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()); |
| | |
| | | wrkMast.setWorkNoOther(0); // 清空另一个任务号 |
| | | // 修改成功后复位堆垛机 |
| | | if (wrkMastMapper.updateById(wrkMast) > 0) { |
| | | log.info("{}号堆垛机任务完成,申请复位,任务号:{}",crnProtocol.getCrnNo(),crnProtocol.getTaskNo()); |
| | | // 堆垛机复位 |
| | | News.warnNoLog(""+mark+" - 2"+" - 修改成功后复位堆垛机 : 堆垛机号={}",crnThread.getCrnProtocol().getCrnNo()); |
| | | crnThread.setResetFlag(true); |
| | |
| | | * 堆垛机回原点 |
| | | */ |
| | | 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()) { |
| | | // 获取堆垛机信息 |
| | |
| | | basCrnpService.updateById(basCrnp); // 设置更新时间,避免重复下发回原点 |
| | | log.info("{}号堆垛机回原点任务下发成功:{}", crn.getId(), JSON.toJSON(crnCommand)); |
| | | } |
| | | Thread.sleep(3000); |
| | | Thread.sleep(4000); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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; |
| | |
| | | // log.info("异常口入库入库目标站点已分配:{}", wrkMast.getStaNo()); |
| | | return; |
| | | } |
| | | |
| | | log.info("异常口入库请求wms前,任务号:{},任务状态:{}",wrkMast.getWrkNo(), wrkMast.getWrkSts()); |
| | | try { |
| | | CanningLineInLocParam param = new CanningLineInLocParam(); |
| | | param.setWrkNo(staProtocol.getWorkNo()); |
| | |
| | | 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); |
| | |
| | | } |
| | | |
| | | // 站点条件判断 |
| | | 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) { |
| | |
| | | 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(); |
| | | param.setIoType(10); |