| | |
| | | private WrkMastStaService wrkMastStaService; |
| | | @Autowired |
| | | private MatnrCodeService matnrCodeService; |
| | | @Autowired |
| | | private WaitPakinService waitPakinService; |
| | | |
| | | @Value("${wms.url}") |
| | | private String wmsUrl; |
| | |
| | | List<StaDesc> staDescs = staDescService.selectList(new EntityWrapper<StaDesc>().eq("type_no", 10).eq("stn_no", sta.getStaNo())); |
| | | for (StaDesc staDesc:staDescs){ |
| | | |
| | | BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", staDesc.getCrnStn())); |
| | | BasDevp basDevp = new BasDevp(); |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("crn_no", staDesc.getCrnNo()).gt("io_type", 100)); |
| | | if (!Cools.isEmpty(wrkMast)){ |
| | | if (staDesc.getCrnNo() == 1){ |
| | | basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 1004)); |
| | | } else if (staDesc.getCrnNo() == 2) { |
| | | basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 1008)); |
| | | } |
| | | if (Cools.isEmpty(basDevp)){ |
| | | continue; |
| | | } |
| | | |
| | |
| | | // && staProtocol.isEmptyMk() |
| | | && staProtocol.getWorkNo() == 0 |
| | | ) { |
| | | WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(sta.getStaNo()); |
| | | Integer staNo = sta.getStaNo(); |
| | | switch (staProtocol.getSiteId()){ |
| | | case 4007: |
| | | staNo = 4002;break; |
| | | case 4016: |
| | | staNo = 4011;break; |
| | | } |
| | | WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(staNo); |
| | | if (null != pakoutEmpty) { |
| | | return; |
| | | } |
| | | List<StaDesc> staDescs = staDescService.selectList(new EntityWrapper<StaDesc>().eq("stn_no", sta.getStaNo())); |
| | | |
| | | List<StaDesc> staDescs = staDescService.selectList(new EntityWrapper<StaDesc>().eq("stn_no", staNo)); |
| | | for (StaDesc staDesc: staDescs){ |
| | | BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", staDesc.getCrnNo())); |
| | | if (!basCrnp.getCrnSts().equals(3) || basCrnp.getCrnErr() != 0){ |
| | |
| | | try { |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("crnNo", staDesc.getCrnNo());//目标站 |
| | | map.put("staNo",staDesc.getStnNo()); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setParams(map) |
| | |
| | | crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 源库位排 |
| | | crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 源库位列 |
| | | crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 源库位层 |
| | | crnCommand.setDestinationPosX(locMast.getRow1()==9?(short)4:(short)5); // 目标库位排 |
| | | crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 目标库位排 |
| | | crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 目标库位列 |
| | | crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 目标库位层 |
| | | crnCommand.setLocType1(locMast.getLocType1().shortValue()); // 货物类型 |
| | |
| | | crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号 |
| | | crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式: 库位移转 |
| | | crnCommand.setSourcePosX(locMast.getRow1()==9?(short)4:(short)5); // 源库位排 |
| | | crnCommand.setSourcePosX(locMast.getRow1().shortValue()); // 源库位排 |
| | | crnCommand.setSourcePosY(locMast.getBay1().shortValue()); // 源库位列 |
| | | crnCommand.setSourcePosZ(locMast.getLev1().shortValue()); // 源库位层 |
| | | crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 目标库位排 |
| | |
| | | }else { |
| | | rgvProtocol = rgvProtocol.clone(); |
| | | } |
| | | List<WrkMastSta> wrkMastStas = wrkMastStaService.selectRGVTask1(rgvSlave.getId()); |
| | | if (!Cools.isEmpty(wrkMastStas)){ |
| | | continue; |
| | | } |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getLoaded1() == 0){ |
| | | boolean work1 = false; |
| | | boolean work2 = false; |
| | |
| | | short type2 = 0; |
| | | short anfme = 0; |
| | | short anfme2 = 0; |
| | | Double weight = 0d; |
| | | Double weight2 = 0d; |
| | | |
| | | //工位一任务 |
| | | for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ |
| | |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | break; |
| | | // continue; |
| | | // break; |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo()>0){ |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && (staProtocol.getWorkNo()>0 && staProtocol.getWorkNo()<9900)){ |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | |
| | | break; |
| | | |
| | | |
| | | } else if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && (staProtocol.getWorkNo()>=9900 || staProtocol.getWorkNo()==0)) { |
| | | if (rgvSlave.getId() != 2 ){ |
| | | continue; |
| | | } |
| | | workNo1 = workNo++; |
| | | souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo()); |
| | | if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 1){ |
| | | sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2103); |
| | | } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 2) { |
| | | sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2002); |
| | | } else if (inStn.getSourceStaNo() == 2102 && staProtocol.isFullPlt()) { |
| | | sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2301); |
| | | } else { |
| | | sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo()); |
| | | } |
| | | |
| | | if (inStn.getSourceStaNo() == 2102 && staProtocol.isEmptyMk()){ //区分空板 |
| | | type = 1; |
| | | } |
| | | if(inStn.getSourceStaNo() == 2102){ |
| | | weight = staProtocol.getWeight().doubleValue()/10; |
| | | } |
| | | |
| | | work1 = true; |
| | | if (inStn.getSourcePlcId() == 4 || inStn.getSourcePlcId() ==5){ //灌装站需要获取输送线物料代码 |
| | | matnr = staProtocol.getMatnr(); |
| | | } |
| | | |
| | | devpThread.setPakMk(inStn.getSourceStaNo(),false); |
| | | break; |
| | | } |
| | | } |
| | | |
| | |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | break; |
| | | // continue; |
| | | // break; |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk() && staProtocol.getWorkNo()>0){ |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk() && (staProtocol.getWorkNo()>0 && staProtocol.getWorkNo()<9900)){ |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | |
| | | work2 = true; |
| | | devpThread.setPakMk(inStn.getSourceStaNo(),false); |
| | | break; |
| | | } else if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && (staProtocol.getWorkNo()>=9900 || staProtocol.getWorkNo()==0)) { |
| | | if (rgvSlave.getId() != 2 ){ |
| | | continue; |
| | | } |
| | | workNo2 = workNo++; |
| | | souSta2 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo()); |
| | | if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 1){ |
| | | sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2103); |
| | | } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 2) { |
| | | sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2002); |
| | | }else if (inStn.getSourceStaNo() == 2102 && staProtocol.isFullPlt()) { |
| | | sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2301); |
| | | } else { |
| | | sta2 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo()); |
| | | } |
| | | |
| | | if (inStn.getSourceStaNo() == 2102 && staProtocol.isEmptyMk()){ //区分空板 |
| | | type2 = 1; |
| | | } |
| | | |
| | | if(inStn.getSourceStaNo() == 2102){ |
| | | weight2 = staProtocol.getWeight().doubleValue()/10; |
| | | } |
| | | |
| | | work2 = true; |
| | | if (inStn.getSourcePlcId() == 4){ |
| | | matnr2 = staProtocol.getMatnr(); |
| | | } |
| | | devpThread.setPakMk(inStn.getSourceStaNo(),false); |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | command.setType(type); |
| | | command.setType2(type2); |
| | | |
| | | command.setWeight(weight); |
| | | command.setWeight2(weight2); |
| | | |
| | | if (workNo1 == 0 && workNo2 !=0){ |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 任务模式: 2取放货 |
| | |
| | | log.info("{}号rgv工位一工作完成复位,工作号:{}",rgvSlave.getId(),rgvProtocol.getTaskNo1()); |
| | | if (offer){ |
| | | //完成rgv任务 |
| | | Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo1()); |
| | | Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvSlave.getId()).eq("wrk_no", rgvProtocol.getTaskNo1()); |
| | | WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); |
| | | if (Cools.isEmpty(wrkMastSta1)){ |
| | | log.error("完成{}号车工位一任务未找到对应rgv任务,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | log.error("完成{}号车工位一任务未找到对应rgv任务,{}",rgvSlave.getId(),rgvProtocol.getTaskNo1()); |
| | | }else { |
| | | if (wrkMastSta1.getWrkType() == 8 ){ |
| | | wrkMastSta1.setWrkSts(3); |
| | |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvSlave.getId(), rgvProtocol.getTaskNo1()); |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo1()); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | log.error("未查询到rgv工作任务,rgv编号{},工作号{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | log.error("未查询到rgv工作任务,rgv编号{},工作号{}",rgvSlave.getId(),rgvProtocol.getTaskNo1()); |
| | | continue; |
| | | } |
| | | for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ |
| | |
| | | continue; |
| | | } |
| | | for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ |
| | | if (!Objects.equals(Utils.getStaNo(rgvSlave.getId(), wrkMastSta.getWrkEnd()), outStn.getStaNo())){ |
| | | continue; |
| | | } |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); |
| | | if (staProtocol == null) { |
| | |
| | | continue; |
| | | } |
| | | for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ |
| | | if (!Objects.equals(Utils.getStaNo(rgvSlave.getId(), wrkMastSta.getStaEnd()), outStn.getStaNo())){ |
| | | continue; |
| | | } |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); |
| | | if (staProtocol == null) { |
| | |
| | | boolean offer = MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4, new RgvCommand())); |
| | | log.info("{}号rgv工位二工作完成复位,工作号:{}",rgvSlave.getId(),rgvProtocol.getTaskNo2()); |
| | | if (offer){ |
| | | Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo2()); |
| | | Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no2", rgvProtocol.getTaskNo2()); |
| | | WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); |
| | | if (Cools.isEmpty(wrkMastSta1)){ |
| | | log.error("完成{}号车工位二任务未找到对应工作任务,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); |
| | |
| | | |
| | | public boolean rgvTaskSave(RgvCommand command){ |
| | | // Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", command.getRgvNo()).eq("wrk_no", command.getTaskNo1()); |
| | | List<WrkMastSta> wrkMastSta1 = wrkMastStaService.selectBywrkNoHistoricalTasks(command.getRgvNo(),command.getTaskNo1(),command.getTaskNo2()); |
| | | if (!Cools.isEmpty(wrkMastSta1)){ |
| | | wrkMastStaService.deleteBatchIds(wrkMastSta1); |
| | | if (command.getTaskNo1() > 0){ |
| | | List<WrkMastSta> wrkMastSta1 = wrkMastStaService.selectBywrkNoHistoricalTasks(command.getRgvNo(),command.getTaskNo1()); |
| | | if (!Cools.isEmpty(wrkMastSta1)){ |
| | | for (WrkMastSta wrkMastSta :wrkMastSta1){ |
| | | wrkMastStaService.deleteById(wrkMastSta); |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (command.getTaskNo2() > 0){ |
| | | List<WrkMastSta> wrkMastSta1 = wrkMastStaService.selectBywrkNoHistoricalTasks2(command.getRgvNo(),command.getTaskNo2()); |
| | | if (!Cools.isEmpty(wrkMastSta1)){ |
| | | for (WrkMastSta wrkMastSta :wrkMastSta1){ |
| | | wrkMastStaService.deleteById(wrkMastSta); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | WrkMastSta wrkMastSta = new WrkMastSta(); |
| | | wrkMastSta.setWrkNo(Long.valueOf(command.getTaskNo1())); |
| | | wrkMastSta.setWrkNo2(Long.valueOf(command.getTaskNo2())); |
| | |
| | | wrkMastSta.setUpdateTime(now); |
| | | wrkMastSta.setWrkCrn(command.getRgvNo()); |
| | | wrkMastSta.setWrkType(command.getTaskMode().intValue()); |
| | | wrkMastSta.setMatnr1(command.getMatnr().intValue()); |
| | | wrkMastSta.setMatnr2(command.getMatnr2().intValue()); |
| | | wrkMastSta.setMatnr1(command.getMatnr()); |
| | | wrkMastSta.setMatnr2(command.getMatnr2()); |
| | | wrkMastSta.setType(command.getType().intValue()); |
| | | wrkMastSta.setType2(command.getType2().intValue()); |
| | | wrkMastSta.setBatch(command.getBatch()); |
| | | wrkMastSta.setBatch2(command.getBatch2()); |
| | | wrkMastSta.setAnfme(command.getAnfme().intValue()); |
| | | wrkMastSta.setAnfme2(command.getAnfme2().intValue()); |
| | | wrkMastSta.setWeight(command.getWeight()); |
| | | wrkMastSta.setWeight2(command.getWeight2()); |
| | | |
| | | return wrkMastStaService.insert(wrkMastSta); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | // 获取入库通知档 |
| | | List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N")); |
| | | if (waitPakins.isEmpty()) { |
| | | WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N")); |
| | | if (Cools.isEmpty(waitPakin)) { |
| | | try { |
| | | CreateComb(barcode,staProtocol.getMatnr().intValue(),staProtocol.getWorkNo().intValue()); |
| | | CreateComb(barcode, staProtocol.getMatnr(),staProtocol.getWorkNo().intValue(),staProtocol.getBatch()); |
| | | }catch (IOException e) { |
| | | throw new CoolException(e); |
| | | } |
| | | }else { |
| | | } else if (waitPakin.getWeight() == null) { |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no", staProtocol.getWorkNo().intValue())); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no2", staProtocol.getWorkNo().intValue())); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | throw new CoolException("未找到对应的任务信息"); |
| | | } |
| | | waitPakin.setWeight(wrkMastSta.getWeight2()); |
| | | }else { |
| | | waitPakin.setWeight(wrkMastSta.getWeight()); |
| | | } |
| | | waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N")); |
| | | } else { |
| | | try { |
| | | LocTypeDto locTypeDto = new LocTypeDto(staProtocol); |
| | | SearchLocParam param = new SearchLocParam(); |
| | |
| | | |
| | | } |
| | | |
| | | public void CreateComb(String barcode,Integer code,Integer wrkNo) throws IOException { |
| | | String batch = ""; |
| | | Double anfme = 0D; |
| | | public void CreateComb(String barcode,Integer code,Integer wrkNo,String batch) throws IOException { |
| | | Double anfme = 0d; |
| | | Double weight = 0d; |
| | | |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no", wrkNo)); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no2", wrkNo)); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | throw new CoolException("未找到对应的任务信息"); |
| | | if (code >0 && !Cools.isEmpty(batch)){ |
| | | anfme = 1d; |
| | | }else { |
| | | throw new CoolException("未找到对应的任务信息"); |
| | | } |
| | | }else { |
| | | batch = wrkMastSta.getBatch2(); |
| | | anfme = wrkMastSta.getAnfme2().doubleValue(); |
| | | code = wrkMastSta.getMatnr2(); |
| | | weight = wrkMastSta.getWeight2(); |
| | | } |
| | | batch = wrkMastSta.getBatch2(); |
| | | anfme = wrkMastSta.getAnfme2().doubleValue(); |
| | | code = wrkMastSta.getMatnr2(); |
| | | }else { |
| | | batch = wrkMastSta.getBatch(); |
| | | anfme = wrkMastSta.getAnfme().doubleValue(); |
| | | code = wrkMastSta.getMatnr1(); |
| | | weight = wrkMastSta.getWeight(); |
| | | } |
| | | MatnrCode matnrCode = matnrCodeService.selectByCode(code); |
| | | if (Cools.isEmpty(matnrCode)){ |
| | |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | |
| | | }else { |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/mobile/comb/auth", JSON.toJSONString(combParam), response); |
| | | } |
| | | } |
| | | |