From 562c18ed0b3ac91589cf8d23511981675f59fabd Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期一, 18 十二月 2023 16:08:08 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 267 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 219 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index bd53665..3579cdc 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -10,6 +10,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.TaskOverToWms; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.entity.param.taskCreateParam; import com.zy.asrs.mapper.*; @@ -85,6 +86,11 @@ @Autowired private OpenServiceImpl openServiceImpl; + @Autowired + private StaDescService staDescService; + + @Autowired + private ApiLogService apiLogService; @Value("${wms.url}") private String wmsUrl; @@ -106,11 +112,9 @@ staProtocol = staProtocol.clone(); } Short workNo = staProtocol.getWorkNo(); - // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 - if (staProtocol.isAutoing() && staProtocol.isLoading() - && staProtocol.isInEnable() - && !staProtocol.isEmptyMk() && (workNo >= 0) - && staProtocol.isPakMk()) { + Short stano = staProtocol.getStaNo(); + + // 灏哄妫�娴嬪紓甯� boolean back = false; @@ -145,6 +149,12 @@ } // 閫�鍥� if (back) { + if (stano == inSta.getBackSta().shortValue()){ + continue; + } + if (workNo == 0 && stano == 0){ + continue; + } // News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg); staProtocol.setWorkNo(workNo); staProtocol.setStaNo(inSta.getBackSta().shortValue()); @@ -158,6 +168,11 @@ } continue; } + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() && staProtocol.isLoading() + && staProtocol.isInEnable() + && !staProtocol.isEmptyMk() && (workNo >= 0) + && staProtocol.isPakMk()) { // 鑾峰彇鏉$爜鎵弿浠俊鎭� BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); if (barcodeThread == null) { @@ -177,15 +192,18 @@ continue; } //StaDesc staDesc1 = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("stn_no",inSta.getBackSta())); - if (taskWrk.getTargetPoint() != null && taskWrk.getStartPoint() != null && taskWrk.getWrkNo() != null && taskWrk.getWrkNo().shortValue() != workNo){ + if (taskWrk.getTargetPoint() != null && taskWrk.getStartPoint() != null){ + if ( taskWrk.getWrkNo() != null && taskWrk.getWrkNo().shortValue() == workNo ){ + continue; + } //鑾峰彇鍫嗗灈鏈虹珯鐐� StaDesc staDesc = new StaDesc(); if (devp.getId() <= 1){ staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() - .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).lt("crn_stn", 200)); + .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).lt("stn_no", 200)); }else { staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() - .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).ge("crn_stn", 200)); + .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).lt("stn_no", 400).ge("stn_no", 250)); } staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); staProtocol.setStaNo(staDesc.getCrnStn().shortValue()); @@ -211,6 +229,14 @@ log.error("wms閫氳澶辫触,"+e.getMessage()); continue; } + apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛" + ,wmsUrl+"wcsManager/wcsInterface/inboundTaskApply" + ,null + ,"127.0.0.1" + ,JSON.toJSONString(toWmsDTO) + ,response + ,true + ); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class); @@ -415,6 +441,15 @@ if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); } + //寮�濮嬭繍琛� + String response = CrnStartRunning(taskWrk); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + + }else { + log.error("鍏ュ簱寮�濮嬭繍琛岄�氳澶辫触,"+jsonObject.get("msg")); + + } } // // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- @@ -513,25 +548,25 @@ String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint()); TaskWrk hallowLocNoTask = taskWrkMapper.selectByStartPoint(shallowLocNo); if (!Cools.isEmpty(hallowLocNoTask)){ - if (!Cools.isEmpty(hallowLocNoTask.getTargetPoint())){ - continue; - } -// new PostMesDataUtils().postMesData("绉诲簱浠诲姟鍒嗛厤搴撲綅",wmsUrl,movePath,hallowLocNoTask); - try { - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath(movePath) - .setJson(JSON.toJSONString(hallowLocNoTask)) - .build() - .doPost(); - System.out.println("response:"+response); - JSONObject jsonObject = JSON.parseObject(response); - if (jsonObject.getInteger("code").equals(200)) { - //瑙f瀽 - } - }catch (Exception e){ - log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/"+movePath, JSON.toJSONString(hallowLocNoTask), "璇锋眰绉诲簱浠诲姟鍒嗛厤搴撲綅"); - } +// if (!Cools.isEmpty(hallowLocNoTask.getTargetPoint())){ +// continue; +// } +//// new PostMesDataUtils().postMesData("绉诲簱浠诲姟鍒嗛厤搴撲綅",wmsUrl,movePath,hallowLocNoTask); +// try { +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath(movePath) +// .setJson(JSON.toJSONString(hallowLocNoTask)) +// .build() +// .doPost(); +// System.out.println("response:"+response); +// JSONObject jsonObject = JSON.parseObject(response); +// if (jsonObject.getInteger("code").equals(200)) { +// //瑙f瀽 +// } +// }catch (Exception e){ +// log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/"+movePath, JSON.toJSONString(hallowLocNoTask), "璇锋眰绉诲簱浠诲姟鍒嗛厤搴撲綅"); +// } continue; } } @@ -556,8 +591,17 @@ if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); } + //寮�濮嬭繍琛� + String response = CrnStartRunning(taskWrk); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + + }else { + log.error("鍑哄簱寮�濮嬭繍琛岄�氳澶辫触,"+jsonObject.get("msg")); + + } } - return; + } } } @@ -570,9 +614,50 @@ public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){ for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑绉诲簱宸ヤ綔妗� - List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut3(slave.getId(), crnStn.getStaNo().toString()); + List<TaskWrk> taskWrks = taskWrkMapper.selectList(new EntityWrapper<TaskWrk>() + .eq("crn_no",slave.getId()) + .eq("wrk_sts",11) + .eq("io_type",3)); for (TaskWrk taskWrk : taskWrks){ - if (taskWrk == null || Cools.isEmpty(taskWrk.getTargetPoint()) || taskWrk.getTargetPoint().equals("")) { + if (Cools.isEmpty(taskWrk.getTargetPoint())){ + List<Integer> list = openServiceImpl.getInEnableRoadway(); + Map<String, Object> map = new HashMap<>(); + map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); + ToWmsDTO toWmsDTO = new ToWmsDTO(); + toWmsDTO.setWarehouseId("1688469798893297665"); + toWmsDTO.setContainerCode(taskWrk.getBarcode()); + toWmsDTO.setApplyType("TUNNEL_LOCATION"); + toWmsDTO.setTaskTunnel(taskWrk.getCrnNo()); + toWmsDTO.setCanInboundTunnels(list); + String response = null; + try { + response = new HttpHandler.Builder() + .setHeaders(map) + .setUri(wmsUrl) + .setPath("wcsManager/wcsInterface/inboundTaskApply") + .setJson(JSON.toJSONString(toWmsDTO)) + .build() + .doPost(); + }catch (Exception e){ + log.error("wms閫氳澶辫触,"+e.getMessage()); + continue; + } + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class); + taskWrk.setOriginTargetPoint(getWmsDto.getTargetLocationCode()); + taskWrk.setTargetPoint(Utils.getWcsLocNo(getWmsDto.getTargetLocationCode())); + if (!taskWrkService.updateById(taskWrk)){ + log.error("淇濆瓨wms搴撲綅鍙峰け璐�"); + } + continue; + }else { + log.error("wms閫氳澶辫触,"+jsonObject.get("msg")); + continue; + } + + } + if (taskWrk == null || Cools.isEmpty(taskWrk.getTargetPoint()) || taskWrk.getTargetPoint().equals("") || taskWrk.getWrkNo() == null) { continue; } // 宸ヤ綔妗g姸鎬佸垽鏂� @@ -600,13 +685,14 @@ crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getRowShort(taskWrk.getStartPoint())); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(Utils.getBayShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(Utils.getLevShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞� - if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { + crnCommand.setSourcePosZ(Utils.getRowShort(taskWrk.getStartPoint())); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosX(Utils.getBayShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosY(Utils.getLevShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosZ(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosX(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosY(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞� + crnCommand.setCommand((short) 1); + if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand),false)) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); } else { // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� @@ -615,6 +701,15 @@ taskWrk.setModiTime(now); if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); + } + //寮�濮嬭繍琛� + String response = CrnStartRunning(taskWrk); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + + }else { + log.error("绉诲簱浠诲姟寮�濮嬭繍琛岄�氳澶辫触,"+jsonObject.get("msg")); + continue; } break; } @@ -639,12 +734,23 @@ //鑾峰彇鎸囦护ID Integer commandId = crnProtocol.getCommandId(); - CommandInfo commandInfo = commandInfoService.selectById(commandId); + CommandInfo commandInfo = new CommandInfo(); + if (Cools.isEmpty(commandId)){ + commandInfo = commandInfoService.selectOne(new EntityWrapper<CommandInfo>() + .eq("wrk_no",crnProtocol.getTaskNo()) + .eq("device","Crn")); + }else { + commandInfo = commandInfoService.selectById(commandId); + } + + if (commandInfo == null) { //鎸囦护涓嶅瓨鍦� continue; } - + if (commandInfo.getCommandStatus() == 3){ + continue; + } commandInfo.setCommandStatus(CommandStatusType.COMPLETE.id);//鎸囦护瀹屾垚 commandInfo.setCompleteTime(new Date());//鎸囦护瀹屾垚鏃堕棿 if (commandInfoService.updateById(commandInfo)) {//淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 @@ -712,20 +818,20 @@ if (crnProtocol == null) { continue; } - if (true) { + if (false) { // if (crnProtocol.getModeType() != CrnModeType.STOP) { // 鏈変换鍔� if (crnProtocol.getTaskNo() != 0) { BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue()); // 鏈夊紓甯� if (latest == null) { - if (crnProtocol.getAlarm1() != null && crnProtocol.getAlarm1() > 0) { + if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) { WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo()); if (wrkMast == null) { continue; } - BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm1()); - String errName = crnError==null? String.valueOf(crnProtocol.getAlarm1()):crnError.getErrName(); + BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm()); + String errName = crnError==null? String.valueOf(crnProtocol.getAlarm()):crnError.getErrName(); BasErrLog basErrLog = new BasErrLog( null, // 缂栧彿 wrkMast.getWrkNo(), // 宸ヤ綔鍙� @@ -768,11 +874,11 @@ } else { BasErrLog latest = basErrLogService.findLatest(crn.getId()); // 鏈夊紓甯� - if (crnProtocol.getAlarm1() != null && crnProtocol.getAlarm1() > 0) { + if (crnProtocol.getAlarm1() != null && crnProtocol.getAlarm() > 0) { // 璁板綍鏂板紓甯� - if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm1().intValue())) { - BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm1()); - String errName = crnError==null? String.valueOf(crnProtocol.getAlarm1()):crnError.getErrName(); + if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) { + BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm()); + String errName = crnError==null? String.valueOf(crnProtocol.getAlarm()):crnError.getErrName(); BasErrLog basErrLog = new BasErrLog( null, // 缂栧彿 null, // 宸ヤ綔鍙� @@ -844,7 +950,7 @@ for (TaskWrk taskWrk : taskWrks) { //鑾峰彇鍛戒护闆嗗悎 List<CommandInfo> commandInfos = commandInfoService.selectByTaskNo(taskWrk.getTaskNo()); - if (taskWrk.getCommandStep() != commandInfos.size()) { + if (taskWrk.getCommandStep() < commandInfos.size()) { continue;//褰撳墠姝ュ簭娌℃湁鍒拌揪鏈�鍚庝竴鏉″懡浠� } @@ -889,4 +995,69 @@ } + public synchronized String CrnStartRunning(TaskWrk taskWrk){ + String tasktype = null; + switch (taskWrk.getIoType()){ + case 1: + tasktype= "RK"; + break; + case 2: + tasktype= "CK"; + break; + case 3: + tasktype= "YK"; + break; + default: + tasktype= "鏈煡"; + } + Map<String, Object> map = new HashMap<>(); + map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); + TaskOverToWms taskOverToWms = new TaskOverToWms(); + taskOverToWms.setFeedbackFrom("WCS"); //鏉ユ簮 + taskOverToWms.setWarehouseId("1688469798893297665"); //浠撳簱鏍囪瘑 + taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //浠诲姟鍙� + taskOverToWms.setTaskType(tasktype); // 浠诲姟绫诲瀷 + taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 瀹瑰櫒缂栫爜 + if (taskWrk.getIoType() ==1 || taskWrk.getIoType() == 3){ + taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //璁惧缂栫爜 + taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //鐩爣搴撲綅 + }else if (taskWrk.getIoType() ==2){ + Map<Integer,String> map1 = new HashMap<>(); + map1.put(102,"J-1101"); + map1.put(106,"J-1103"); + map1.put(110,"J-1105"); + map1.put(114,"J-1107"); + map1.put(118,"J-1109"); + map1.put(122,"J-1111"); + map1.put(305,"H-1101"); + map1.put(405,"G-1101"); + taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //璁惧缂栫爜 + taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //婧愬簱浣� + } + + taskOverToWms.setTaskStatus("executing"); //浠诲姟鐘舵�� + String response = null; + try { + response = new HttpHandler.Builder() + .setHeaders(map) + .setUri(wmsUrl) + .setPath("wcsManager/wcsInterface/taskStatusFeedback") + .setJson(JSON.toJSONString(taskOverToWms)) + .build() + .doPost(); + }catch (Exception e){ + log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛澶辫触"); + } + apiLogService.save("鍫嗗灈鏈哄紑濮嬭繍琛�" + ,wmsUrl+"wcsManager/wcsInterface/taskStatusFeedback" + ,null + ,"127.0.0.1" + ,JSON.toJSONString(taskOverToWms) + ,response + ,true + ); + return response; + } + + } -- Gitblit v1.9.1