| | |
| | | */ |
| | | public synchronized void generateInboundWrk() { |
| | | try { |
| | | // //检测是否存在调拨任务,不执行入库 |
| | | // boolean checkTransferWrkMast = wrkMastService.checkTransferWrkMast(); |
| | | // if (checkTransferWrkMast) { |
| | | // News.error("存在调拨任务,不执行入库"); |
| | | // return; |
| | | // } |
| | | |
| | | // 遍历入库口 |
| | | for (DevpSlave.Sta inSta : slaveProperties.getDevp().get(0).getInSta()) { |
| | | if (inSta.getStaNo() == 1014 || inSta.getStaNo() == 1025) { |
| | |
| | | if (Cools.isEmpty(barcode) || "?".endsWith(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { |
| | | continue; |
| | | } |
| | | |
| | | //检测是否存在出库任务 |
| | | List<WrkMast> wrkMastOutList = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .in("sta_no", 1024, 1013) |
| | | .eq("io_type", 101)); |
| | | if (!wrkMastOutList.isEmpty()) { |
| | | Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId()); |
| | | if (o == null) { |
| | | redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId(), "lock", 15); |
| | | MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId())); |
| | | setLedErrorData(staProtocol.getSiteId(), "任务冲突"); |
| | | } |
| | | News.error("站点存在出库任务,禁止入库,站点={}", staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | | |
| | | // 判断重复工作档 |
| | | 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) { |
| | |
| | | staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWrkNo()))); |
| | | staProtocol.setStaNo(Short.parseShort(String.valueOf(inSta.getStaNo() + 1))); |
| | | MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); |
| | | News.taskInfo(wrkMast.getWrkNo(), "输送线入库命令下发,任务数据={}", JSON.toJSON(wrkMast)); |
| | | News.info("输送线入库命令下发,任务数据={}", JSON.toJSON(wrkMast)); |
| | | wrkMast.setWrkSts(WrkStsType.INBOUND_DEVICE_RUN.sts); |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMastService.updateById(wrkMast); |
| | |
| | | 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(); |
| | | |
| | | //检测是否存在出库任务 |
| | | List<WrkMast> wrkMastOutList = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .in("sta_no", 1011, 1021) |
| | | .eq("io_type", 101)); |
| | | if (!wrkMastOutList.isEmpty()) { |
| | | Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId()); |
| | | if (o == null) { |
| | | redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId(), "lock", 15); |
| | | MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId())); |
| | | setLedErrorData(staProtocol.getSiteId(), "任务冲突"); |
| | | } |
| | | News.error("站点存在出库任务,禁止入库,站点={}", staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | | |
| | | // 判断重复工作档 |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("barcode", barcode)); |
| | | if (wrkMast == null) { |
| | |
| | | |
| | | |
| | | public void outFirst() { |
| | | // //检测是否存在调拨任务,存在不执行出库 |
| | | // boolean checkTransferWrkMast = wrkMastService.checkTransferWrkMast(); |
| | | // if (checkTransferWrkMast) { |
| | | // News.error("存在调拨任务,不执行出库"); |
| | | // return; |
| | | // } |
| | | |
| | | DevpSlave devpSlave = slaveProperties.getDevp().get(0); |
| | | // 遍历堆垛机出库站 |
| | | Date now = new Date(); |
| | |
| | | if (devpThread == null) { |
| | | continue; |
| | | } |
| | | |
| | | //检测是否存在入库任务 |
| | | Integer checkInSourceStaNo = null; |
| | | if (wrkMast.getStaNo() == 1013) { |
| | | checkInSourceStaNo = 1014; |
| | | } else if (wrkMast.getStaNo() == 1024) { |
| | | checkInSourceStaNo = 1025; |
| | | } else { |
| | | continue; |
| | | } |
| | | List<WrkMast> wrkMastInList = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("source_sta_no", checkInSourceStaNo) |
| | | .eq("io_type", 1)); |
| | | if (!wrkMastInList.isEmpty()) { |
| | | Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo()); |
| | | if (o == null) { |
| | | redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo(), "lock", 15); |
| | | MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo())); |
| | | setLedErrorData(wrkMast.getStaNo(), "任务冲突"); |
| | | } |
| | | News.error("站点存在入库任务,禁止出库,站点={}", wrkMast.getStaNo()); |
| | | continue; |
| | | } |
| | | |
| | | |
| | | Map<Integer, StaProtocol> station = devpThread.getStation(); |
| | | StaProtocol staProtocol = station.get(wrkMast.getStaNo()); |
| | | if (staProtocol == null) { |
| | |
| | | log.info("电视机数据设置:{},{}", staNo, data); |
| | | } else { |
| | | log.info("电视机数据设置异常:{},{}", wrkNo, response); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | private void setLedErrorData(Integer staNo, String msg) { |
| | | try { |
| | | HashMap<String, String> hashMap = new HashMap<>(); |
| | | hashMap.put("msg", msg); |
| | | hashMap.put("sta", String.valueOf(staNo)); |
| | | String response = null; |
| | | response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/rpc/led/getError") |
| | | .setJson(JSON.toJSONString(hashMap)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | Integer code = jsonObject.getInteger("code"); |
| | | if (code.equals(200)) { |
| | | String data = jsonObject.getString("data"); |
| | | List<LedCommand> wrkDetls = JSONArray.parseArray(data, LedCommand.class); |
| | | redisUtil.set("LED_" + staNo, wrkDetls, 30); |
| | | log.info("电视机数据设置:{},{}", staNo, data); |
| | | } else { |
| | | log.info("电视机数据设置异常:{},{}", staNo, response); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | if (wrkMast.getSourceStaNo() == 1022) { |
| | | led = 3; |
| | | } else if (wrkMast.getSourceStaNo() == 1031) { |
| | | //工作号一致判断 |
| | | if (!String.valueOf(staProtocol.getFinishWorkNo()).equals(wrkMast.getWmsWrkNo2())) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}工作号1,{}工作号2,1135过来的托盘,为将工作号写到至1031", staProtocol.getFinishWorkNo(), wrkMast.getWmsWrkNo2()); |
| | | return false; |
| | | } |
| | | } |
| | | // 尺寸检测异常 |
| | | boolean back = false; |
| | |
| | | staNo = 1023; |
| | | } else if (wrkMast.getSourceStaNo() == 1031) { |
| | | staNo = 1032; |
| | | //检测1135货物是否到达1031,到达才允许走到1032 |
| | | if (!(staProtocol.isAutoing() |
| | | && staProtocol.isLoading()) |
| | | ) { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | staProtocol = staProtocol.clone(); |
| | |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点,任务号不一致", wrkMast.getWrkNo(), staProtocol.getSiteId()); |
| | | return false; |
| | | } |
| | | |
| | | //调拨任务执行时,不允许有其他入出库任务工作 |
| | | boolean checkNoTransferWorking = wrkMastService.checkNoTransferWorking(); |
| | | if (checkNoTransferWorking) { |
| | | News.error("调拨任务执行时,不允许有其他入出库任务工作"); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | //判断提升机是否有其他任务(该任务需要换层必须提前独占提升机) |
| | |
| | | try { |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_OUTBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts).in("sta_no", 1011, 1021, 1031)); |
| | | for (WrkMast wrkMast : wrkMasts) { |
| | | |
| | | //检测是否存在入库任务 |
| | | Integer checkInSourceStaNo = null; |
| | | if (wrkMast.getStaNo() == 1011) { |
| | | checkInSourceStaNo = 1012; |
| | | } else if (wrkMast.getStaNo() == 1021) { |
| | | checkInSourceStaNo = 1022; |
| | | } |
| | | |
| | | if (checkInSourceStaNo != null) { |
| | | List<WrkMast> wrkMastInList = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("source_sta_no", checkInSourceStaNo) |
| | | .eq("io_type", 1)); |
| | | if (!wrkMastInList.isEmpty()) { |
| | | Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo()); |
| | | if (o == null) { |
| | | redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo(), "lock", 15); |
| | | MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo())); |
| | | setLedErrorData(wrkMast.getStaNo(), "任务冲突"); |
| | | } |
| | | News.error("站点存在入库任务,禁止出库,站点={}", wrkMast.getStaNo()); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | boolean step1 = this.liftOutExecuteStep1(wrkMast);//触发搬运任务 |
| | | if (!step1) { |
| | | continue; |
| | |
| | | } |
| | | if (wrkMast.getStaNo() == 1031) { |
| | | |
| | | //调拨任务执行时,不允许有其他入出库任务工作 |
| | | boolean checkNoTransferWorking = wrkMastService.checkNoTransferWorking(); |
| | | if (checkNoTransferWorking) { |
| | | News.error("调拨任务执行时,不允许有其他入出库任务工作-出库"); |
| | | return false; |
| | | } |
| | | |
| | | } else { |
| | | if (!isOutEnable(devpThread, wrkMast.getStaNo())) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点,没有可出信号", wrkMast.getWrkNo(), staProtocol.getSiteId()); |
| | | return false; |
| | | } |
| | | |
| | | // //检测是否存在调拨任务,存在不执行出库 |
| | | // boolean checkTransferWrkMast = wrkMastService.checkTransferWrkMast(); |
| | | // if (checkTransferWrkMast) { |
| | | // News.error("存在调拨任务,不执行出库"); |
| | | // return false; |
| | | // } |
| | | } |
| | | |
| | | String locNo = "0200305"; |
| | |
| | | //获取提升机命令 |
| | | List<LiftCommand> liftCommands = liftThread.getPalletOutCommand(wrkMast.getWrkNo(), sourceLev, wrkMast.getStaNo()); |
| | | LiftCommand liftCommand = liftCommands.get(0); |
| | | // if (wrkMast.getMainWrkNo() != null) { |
| | | liftCommand.setTaskNo(wrkMast.getWrkNo()); |
| | | // } else { |
| | | // int deviceWrk = commonService.getWorkNo(8);//生成提升机设备工作号 |
| | | // liftCommand.setTaskNo(deviceWrk);//更换随机任务号 |
| | | // } |
| | | |
| | | ArrayList<LiftCommand> commands = new ArrayList<>(); |
| | | commands.add(liftCommand); |
| | |
| | | } else if (staProtocol.getSiteId() == 1031 && staProtocol.isLoading()) { |
| | | wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getFinishWorkNo()).eq("wrk_sts", WrkStsType.OUTBOUND_DEVP_RUN_2.sts)); |
| | | if (wrkMast != null) { |
| | | staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWrkNo()))); |
| | | staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWmsWrkNo()))); |
| | | staProtocol.setStaNo(Short.parseShort(String.valueOf(1135))); |
| | | MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); |
| | | News.taskInfo(wrkMast.getWrkNo(), "输送线入库命令下发,任务数据={}", JSON.toJSON(wrkMast)); |
| | | wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts); |
| | | wrkMast.setModiTime(new Date()); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "输送线已确认且任务完成状态。输送线号={},完结工作号={}", staProtocol.getSiteId(), staProtocol.getFinishWorkNo()); |
| | | } else { |
| | | News.error("输送线已确认且任务完成状态,复位失败,但未找到工作档。输送线号={},完结工作号={}", staProtocol.getSiteId(), staProtocol.getFinishWorkNo()); |
| | | boolean offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); |
| | | if (offer) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "输送线入库命令下发,任务数据={}", JSON.toJSON(wrkMast)); |
| | | wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts); |
| | | wrkMast.setModiTime(new Date()); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "输送线已确认且任务完成状态。输送线号={},完结工作号={}", staProtocol.getSiteId(), staProtocol.getFinishWorkNo()); |
| | | } else { |
| | | News.error("输送线已确认且任务完成状态,复位失败,但未找到工作档。输送线号={},完结工作号={}", staProtocol.getSiteId(), staProtocol.getFinishWorkNo()); |
| | | } |
| | | } |
| | | } |
| | | } |