| | |
| | | import com.zy.system.service.ConfigService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.*; |
| | |
| | | private LiftAction liftAction; |
| | | @Autowired |
| | | private BasWrkStatusService wrkStatusService; |
| | | @Value("${asrs.wmsUrl}") |
| | | private String wmsUrl; |
| | | |
| | | |
| | | public boolean isInEnable(DevpThread devpThread, Integer staNo) { |
| | |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) { |
| | | String barcode = staProtocol.getBarcode(); |
| | | // 判断重复工作档 |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("wrk_sts", WrkStsType.NEW_INBOUND.sts).eq("barcode", barcode)); |
| | | if (wrkMast != null) { |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("barcode", barcode)); |
| | | if (wrkMast != null && wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) { |
| | | News.error("工作档已存在,工作号={}", wrkMast.getWrkNo()); |
| | | //判断时提升机侧,还是无提升机测 |
| | | staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWrkNo()))); |
| | |
| | | wrkMast.setWrkSts(WrkStsType.INBOUND_DEVICE_RUN.sts); |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMastService.updateById(wrkMast); |
| | | } else if (wrkMast != null && wrkMast.getWrkSts() != WrkStsType.NEW_INBOUND.sts) { |
| | | continue; |
| | | } |
| | | try { |
| | | String wmsUrl = "192.168.10.201:8080/fyxcwms"; |
| | | SearchLocParam param = new SearchLocParam(); |
| | | param.setBarcode(barcode); |
| | | param.setIoType(1); |
| | | param.setSourceStaNo(inSta.getStaNo()); |
| | | param.setLocType1(staProtocol.getLocType1().shortValue()); |
| | | param.setLocType1((short) 1); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/rpc/pakin/loc/v1") |
| | |
| | | News.error("入库申请失败,任务数据={},请求响应={}", JSON.toJSON(param), JSON.toJSON(jsonObject)); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("调用wms报错1,{}", e.getMessage()); |
| | | } |
| | | } |
| | | } else if (inSta.getStaNo() == 1012 || inSta.getStaNo() == 1022) { |
| | | // 获取入库站信息 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | Short workNo = staProtocol.getWorkNo(); |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) { |
| | | String barcode = staProtocol.getBarcode(); |
| | | // 判断重复工作档 |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("barcode", barcode)); |
| | | if (wrkMast == null) { |
| | | try { |
| | | SearchLocParam param = new SearchLocParam(); |
| | | param.setBarcode(barcode); |
| | | param.setIoType(1); |
| | | param.setSourceStaNo(inSta.getStaNo()); |
| | | param.setLocType1((short) 1); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/rpc/pakin/loc/v1") |
| | | .setJson(JSON.toJSONString(param)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | Integer code = jsonObject.getInteger("code"); |
| | | if (code.equals(200)) { |
| | | |
| | | } else { |
| | | String msg = jsonObject.getString("msg"); |
| | | HashMap<String, String> hashMap = new HashMap<>(); |
| | | hashMap.put("msg", msg); |
| | | hashMap.put("sta", inSta.getStaNo().toString()); |
| | | new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/rpc/led/getError") |
| | | .setJson(JSON.toJSONString(hashMap)) |
| | | .build() |
| | | .doPost(); |
| | | News.error("入库申请失败,任务数据={},请求响应={}", JSON.toJSON(param), JSON.toJSON(jsonObject)); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("调用wms报错2,{}", e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | |
| | | News.info("{}任务,{}站点,不在自动状态", wrkMast.getWrkNo(), staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | | if (!staProtocol.isOutEnable()) { |
| | | if (!isOutEnable(devpThread, wrkMast.getStaNo())) { |
| | | News.info("{}任务,{}站点,没有可出信号", wrkMast.getWrkNo(), staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | |
| | | News.info("{}任务,调度小车失败", wrkMast.getWrkNo()); |
| | | continue; |
| | | } else { |
| | | News.info("{}任务,无提升机处调度小车成功", wrkMast.getWrkNo()); |
| | | WrkMast wrkMast1 = wrkMastService.selectByMainWrkNo(wrkMast.getWrkNo()); |
| | | if (wrkMast1 == null) { |
| | | News.info("{}任务,调度小车失败,终于发现了", wrkMast.getWrkNo()); |
| | | continue; |
| | | } else { |
| | | News.info("{}任务,无提升机处调度小车成功", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts); |
| | |
| | | } |
| | | |
| | | String sourceLocNo = "1200305"; |
| | | String locNo = "1100105"; |
| | | String locNo = "1300105"; |
| | | if (wrkMast.getStaNo() == 1013) { |
| | | sourceLocNo = "1200301"; |
| | | locNo = "1100101"; |
| | | locNo = "1300101"; |
| | | if (loc.contains(locNo)) { |
| | | locNo = "1000101"; |
| | | locNo = "1100101"; |
| | | } |
| | | } else { |
| | | if (loc.contains(locNo)) { |
| | | locNo = "1000105"; |
| | | locNo = "1100105"; |
| | | } |
| | | } |
| | | |
| | | boolean dispatchShuttle = shuttleDispatchUtils.shuttleMoveGenerate(wrkMast.getWrkNo(), sourceLocNo, locNo, wrkMast.getShuttleNo(), null, false); |
| | | if (!dispatchShuttle) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}小车,挪车调度至取货点失败", wrkMast.getShuttleNo()); |
| | | continue; |
| | | } |
| | | |
| | | staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWrkNo()))); |
| | |
| | | short staNo = 1012; |
| | | if (wrkMast.getSourceStaNo() == 1022) { |
| | | staNo = 1023; |
| | | } else if (wrkMast.getSourceStaNo() == 1031 || wrkMast.getSourceStaNo() == 1032) { |
| | | staNo = 1032; |
| | | } |
| | | |
| | | staProtocol = staProtocol.clone(); |
| | |
| | | News.info("{}任务,{}站点,托盘码不匹配,站点托盘码:{},任务托盘码:{}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode()); |
| | | return false; |
| | | } |
| | | } else { |
| | | } else if (sourceStaNo == 1012) { |
| | | if (staProtocol.getWorkNo().intValue() != wrkMast.getWrkNo()) { |
| | | News.info("{}任务,{}站点,任务号不一致", wrkMast.getWrkNo(), staProtocol.getSiteId()); |
| | | return false; |
| | | } |
| | | if (!staProtocol.getBarcode().equals(wrkMast.getBarcode())) { |
| | | News.info("{}任务,{}站点,托盘码不匹配,站点托盘码:{},任务托盘码:{}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode()); |
| | | return false; |
| | | } |
| | | } else if (sourceStaNo == 1032 || sourceStaNo == 1031) { |
| | | if (staProtocol.getWorkNo().intValue() != wrkMast.getWrkNo()) { |
| | | News.info("{}任务,{}站点,任务号不一致", wrkMast.getWrkNo(), staProtocol.getSiteId()); |
| | | return false; |
| | |
| | | String locNo = "0200305"; |
| | | if (wrkMast.getSourceStaNo() == 1012) { |
| | | locNo = "0200301"; |
| | | } else if (wrkMast.getSourceStaNo() == 1032 || wrkMast.getSourceStaNo() == 1031) { |
| | | locNo = "0200308"; |
| | | } |
| | | boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_LIFT"); |
| | | if (!dispatchShuttle) { |
| | |
| | | return false; |
| | | } |
| | | |
| | | int lev = 105; |
| | | if (wrkMast.getSourceStaNo() == 1012) { |
| | | lev = 101; |
| | | int lev = 101; |
| | | if (wrkMast.getSourceStaNo() == 1021) { |
| | | //TODO |
| | | // lev = 105; |
| | | lev = 1021; |
| | | } else if (wrkMast.getSourceStaNo() == 1032 || wrkMast.getSourceStaNo() == 1031) { |
| | | lev = 1031; |
| | | } |
| | | //获取提升机命令 |
| | | List<LiftCommand> liftCommands = liftThread.getPalletInCommand(wrkMast.getWrkNo(), sourceStaNo, lev); |
| | |
| | | return false; |
| | | } |
| | | |
| | | if (!staProtocol.isOutEnable()) { |
| | | if (!isOutEnable(devpThread, wrkMast.getStaNo())) { |
| | | News.info("{}任务,{}站点,没有可出信号", wrkMast.getWrkNo(), staProtocol.getSiteId()); |
| | | return false; |
| | | } |
| | |
| | | String locNo = "0200305"; |
| | | if (wrkMast.getStaNo() == 1011) { |
| | | locNo = "0200301"; |
| | | } else if (wrkMast.getStaNo() == 1032) { |
| | | locNo = "0200308"; |
| | | } |
| | | boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), locNo, "TRANSPORT_LIFT"); |
| | | if (!dispatchShuttle) { |
| | |
| | | } |
| | | |
| | | private void shuttleMoveExecuteTransportNoLift(WrkMast wrkMast) { |
| | | if (12 == Utils.getRow(wrkMast.getSourceLocNo()) && 3 == Utils.getBay(wrkMast.getSourceLocNo())) { |
| | | WrkMast mainWrk = wrkMastService.selectByWorkNo(wrkMast.getMainWrkNo()); |
| | | if (mainWrk != null && mainWrk.getIoType() == 1) { |
| | | //入库 |
| | | noLiftInService.shuttleMoveExecute(wrkMast); |
| | | } else { |
| | | noLiftInService.shuttleMoveExecute(wrkMast, mainWrk.getStaNo()); |
| | | } else if (mainWrk != null && mainWrk.getIoType() == 101) { |
| | | //出库 |
| | | noLiftOutService.shuttleMoveExecute(wrkMast); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 入出库模式切换函数 |
| | | */ |
| | | public synchronized void ioConvert() { |
| | | try { |
| | | // 根据输送线plc遍历 |
| | | FyDevpThread devpThread = (FyDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | WrkMast pakout = wrkMastService.selectWorkingPakout(1032); |
| | | if (pakout != null) { |
| | | if (devpThread.ioModeOf2_5 != IoModeType.PAKOUT_MODE) { |
| | | // 出库切换中 |
| | | WrkMast pakin = wrkMastService.selectWorkingPakin(1032); |
| | | if (pakin == null && !devpThread.getStation().get(1031).isLoading() |
| | | && !devpThread.getStation().get(1032).isLoading()) { |
| | | // 出库模式 |
| | | devpThread.ioModeOf2_5 = IoModeType.PAKOUT_MODE; |
| | | } |
| | | } |
| | | } else { |
| | | // 入库模式 |
| | | devpThread.ioModeOf2_5 = IoModeType.PAKIN_MODE; |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | } |