From 84988579b77ec4578af30d5c836690beeff3562c Mon Sep 17 00:00:00 2001 From: lsh <1> Date: 星期五, 22 三月 2024 13:44:27 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/model/protocol/StaProtocol.java | 3 src/main/java/com/zy/asrs/utils/Utils.java | 21 ++++ src/main/java/com/zy/asrs/controller/OpenController.java | 83 +++++++++++----- src/main/java/com/zy/asrs/entity/BasDevp.java | 4 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 159 ++++++++++++++----------------- src/main/resources/mapper/BasDevpMapper.xml | 1 src/main/java/com/zy/core/thread/SiemensDevpThread.java | 18 ++ 7 files changed, 170 insertions(+), 119 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index 385906e..0e360c4 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/src/main/java/com/zy/asrs/controller/OpenController.java @@ -13,6 +13,7 @@ import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.entity.param.TaskCreateParam; import com.zy.asrs.service.*; +import com.zy.asrs.utils.Utils; import com.zy.common.web.BaseController; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -78,38 +79,64 @@ //鍒涘缓浠诲姟 @PostMapping("/taskCreate") + @Transactional public R taskCreate(@RequestHeader String appkey, @RequestBody List<TaskCreateParam> param1, HttpServletRequest request) { auth(appkey, param1, request); - for (TaskCreateParam param : param1 - ) { - if (Cools.isEmpty(param)) { - return R.parse(BaseRes.PARAM); - } - if (Cools.isEmpty(param.getTaskNo())) { - return R.error("浠诲姟鍙穂taskNo]涓嶈兘涓虹┖"); - } - if (Cools.isEmpty(param.getIoType())) { - return R.error("浠诲姟绫诲瀷[ioType]涓嶈兘涓虹┖"); - } - if (Cools.isEmpty(param.getBarcode())) { - return R.error("鏉$爜[barcode]涓嶈兘涓虹┖"); - } - String locNo=null; - if(param.getIoType()==1){ - locNo=param.getTargetPoint(); - }else{ - locNo=param.getStartPoint(); - } - LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>() - .eq("loc_sts","F") - .eq("loc_no",locNo) - .eq("barcode",param.getBarcode())); - if(Cools.isEmpty(locMast)){ - return R.error("璇ュ簱浣嶄笉婊¤冻鍑哄簱鏉′欢"+param.getTargetPoint()); - } - openService.taskCreate(param); + try{ + List<TaskCreateParam> paramList = new ArrayList<>(); + List<String> locNoList = new ArrayList<>(); + for (TaskCreateParam param : param1) { + if (Cools.isEmpty(param)) { + return R.parse(BaseRes.PARAM); + } + if (Cools.isEmpty(param.getTaskNo())) { + return R.error("浠诲姟鍙穂taskNo]涓嶈兘涓虹┖"); + } + if (Cools.isEmpty(param.getIoType())) { + return R.error("浠诲姟绫诲瀷[ioType]涓嶈兘涓虹┖"); + } + if (Cools.isEmpty(param.getBarcode())) { + return R.error("鏉$爜[barcode]涓嶈兘涓虹┖"); + } + String locNo=null; + if(param.getIoType()==1){ + locNo=param.getTargetPoint(); + }else{ + locNo=param.getStartPoint(); + } + try{ + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() + .eq("loc_no", locNo).ne("loc_sts","X")); + if (Cools.isEmpty(locMast)){ + log.error("搴撲綅鍙蜂笉瀛樺湪"+locNo); + return R.error("搴撲綅鍙蜂笉瀛樺湪"+locNo).add("搴撲綅鍙蜂笉瀛樺湪"+locNo); + } + }catch (Exception e){ + log.error("搴撲綅鍙锋娴嬬▼搴忓紓甯�==銆嬪紓甯镐俊鎭�"+e); + return R.error("搴撲綅鍙锋娴嬬▼搴忓紓甯�").add("搴撲綅鍙锋娴嬬▼搴忓紓甯�==銆嬪紓甯镐俊鎭�"+e); + } + LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>() + .eq("loc_sts","F") + .eq("loc_no",locNo) + .eq("barcode",param.getBarcode())); + if(Cools.isEmpty(locMast)){ + return R.error("璇ュ簱浣嶄笉婊¤冻鍑哄簱鏉′欢"+param.getTargetPoint()); + } + if (!locNoList.contains(locMast.getLocNo())){ + locNoList.add(locMast.getLocNo()); + paramList.add(param); + }else { + return R.error("璇ュ簱浣嶄笉鑳藉悓鏃朵笅鍙戜袱绗斾换鍔�"+locMast.getLocNo()); + } + } + for (TaskCreateParam param : paramList){ + openService.taskCreate(param); + } + }catch (Exception e){ + log.error("浠诲姟涓嬪彂寮傚父"+e); + return R.error(); } return R.ok(); } diff --git a/src/main/java/com/zy/asrs/entity/BasDevp.java b/src/main/java/com/zy/asrs/entity/BasDevp.java index 79125fd..7003eef 100644 --- a/src/main/java/com/zy/asrs/entity/BasDevp.java +++ b/src/main/java/com/zy/asrs/entity/BasDevp.java @@ -230,6 +230,10 @@ @TableField("agv_target_place") private Integer agvTargetPlace; + @ApiModelProperty(value= "寮傚父鐮�") + @TableField("sta_err") + private Integer staErr; + public String getIoTime$(){ if (Cools.isEmpty(this.ioTime)){ 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 00b8ea0..6b12b1a 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -169,9 +169,9 @@ } // News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg); staProtocol.setWorkNo(workNo); - staProtocol.setStaNo(inSta.getBackSta().shortValue()); + staProtocol.setStaNo(inSta.getStaNo().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); - MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol)); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); if (taskWrk != null) { taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず @@ -213,13 +213,40 @@ HashMap<String, Object> headParam = new HashMap<>(); headParam.put("Content-Type","application/json"); String response; - response = new HttpHandler.Builder() - // .setHeaders(headParam) - .setUri(wmsUrl) - .setPath(inboundTaskApplyPath) - .setJson(JSON.toJSONString(toWmsDTO)) - .build() - .doPost(); + try{ + response = new HttpHandler.Builder() + // .setHeaders(headParam) + .setUri(wmsUrl) + .setPath(inboundTaskApplyPath) + .setJson(JSON.toJSONString(toWmsDTO)) + .build() + .doPost(); + }catch (Exception e){ + log.error("璇锋眰鍏ュ簱璋冪敤鎺ュ彛澶辫触"); + log.error("寮傚父淇℃伅鎵撳嵃锛�"+e); + try{ + BasDevp basDevp = basDevpService.selectById(inSta.getStaNo()); + if (Cools.isEmpty(basDevp)){ + log.error("绔欑偣鍙峰紓甯�"+inSta.getStaNo()); + } else if (basDevp.getStaErr()!=0){ + basDevp.setStaErr(2); + basDevpService.updateById(basDevp); + } + }catch (Exception e1){ + // 閫�鍥� + log.error("鎵爜妫�娴嬬▼搴忓紓甯�"+inSta.getStaNo()+"寮傚父淇℃伅"+e1); + } + staProtocol.setWorkNo((short)9999); + staProtocol.setStaNo(inSta.getStaNo().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); +// if (taskWrk != null) { +// taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず +// taskWrkMapper.updateById(taskWrk); +// } + continue; + } JSONObject jsonObject = JSON.parseObject(response); apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛" @@ -233,7 +260,43 @@ log.info("鍏ュ簱璇锋眰鍙傛暟{}" + JSON.toJSONString(toWmsDTO)); if (jsonObject.getInteger("code").equals(200) && !Cools.isEmpty(jsonObject.get("data").toString())) { GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class); + try{ + BasDevp basDevp = basDevpService.selectById(inSta.getStaNo()); + if (Cools.isEmpty(basDevp)){ + log.error("绔欑偣鍙峰紓甯�"+inSta.getStaNo()); + throw new CoolException("绔欑偣鍙峰紓甯�"+inSta.getStaNo()); + } + Integer staNoCrnNo = Utils.StaNoCrnNo(inSta.getStaNo()); + if (staNoCrnNo==0){ + basDevp.setStaErr(1); + basDevpService.updateById(basDevp); + throw new CoolException("绔欑偣鍙峰紓甯�"+inSta.getStaNo()); + }else { + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() + .eq("crn_no", staNoCrnNo.longValue()) + .eq("loc_no", getWmsDto.getLocNo())); + if (Cools.isEmpty(locMast)){ + basDevp.setStaErr(1); + basDevpService.updateById(basDevp); + throw new CoolException("绔欑偣鍙峰紓甯�"+inSta.getStaNo()); + } + } + } catch (Exception e){ +// log.error("鎵爜妫�娴嬬▼搴忓紓甯�"+inSta.getStaNo()+"寮傚父淇℃伅"+e); + // 閫�鍥� + log.error("鎵爜妫�娴嬬▼搴忓紓甯�"+inSta.getStaNo()+errMsg); + staProtocol.setWorkNo((short)9999); + staProtocol.setStaNo(inSta.getStaNo().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); +// if (taskWrk != null) { +// taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず +// taskWrkMapper.updateById(taskWrk); +// } + continue; + } //鏌ョ湅璇ュ簱浣嶆槸鍚︿负绌哄簱浣� LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_sts","O") @@ -288,87 +351,9 @@ continue; } -// StaDescService staDescService = SpringUtils.getBean(StaDescService.class); -// -// ToWmsDTO toWmsDTO = new ToWmsDTO(); -// Map<String, Object> map = new HashMap<>(); -// map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); -// List<Integer> list = openServiceImpl.getInEnableRoadway(); -// TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", barcode)); -// -// if (Cools.isEmpty(taskWrk)){ -// continue; -// } -// //StaDesc staDesc1 = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("stn_no",inSta.getBackSta())); -// 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("stn_no", 200)); -// }else { -// staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() -// .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()); -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol)); -// Thread.sleep(500); -// }else { -// //TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo()); -// toWmsDTO.setWarehouseId("1688469798893297665"); -// toWmsDTO.setContainerCode(barcode); -// toWmsDTO.setApplyType("TUNNEL_LOCATION"); -// toWmsDTO.setTaskTunnel(taskWrk.getCrnNo()); -// toWmsDTO.setCanInboundTunnels(list); -// String response = null; -// try { -// response = new HttpHandler.Builder() -// .setHeaders(map) -// .setUri(wmsUrl) -// .setPath(inboundTaskApplyPath) -// .setJson(JSON.toJSONString(toWmsDTO)) -// .build() -// .doPost(); -// }catch (Exception e){ -// 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); -// taskWrk.setOriginTargetPoint(getWmsDto.getTargetLocationCode()); -// taskWrk.setTargetPoint(Utils.getWcsLocNo(getWmsDto.getTargetLocationCode())); -// taskWrk.setStartPoint(String.valueOf(inSta.getBackSta())); -// if (!taskWrkService.updateById(taskWrk)){ -// log.error("淇濆瓨wms搴撲綅鍙峰け璐�"); -// } -// -// }else { -// log.error("wms閫氳澶辫触,"+jsonObject.get("msg")); -// -// } -// } - } else { // 閫�鍥� log.error("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg); -// staProtocol.setWorkNo((short)0); -// staProtocol.setStaNo(inSta.getStaNo().shortValue()); -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -// -// Thread.sleep(500); staProtocol.setWorkNo((short)9999); staProtocol.setStaNo(inSta.getStaNo().shortValue()); diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java index da37396..673a881 100644 --- a/src/main/java/com/zy/asrs/utils/Utils.java +++ b/src/main/java/com/zy/asrs/utils/Utils.java @@ -3,6 +3,7 @@ import com.core.common.Arith; import com.core.common.Cools; import com.core.common.SpringUtils; +import com.zy.asrs.entity.LocMast; import com.zy.core.model.CrnSlave; import com.zy.core.properties.SlaveProperties; @@ -384,4 +385,24 @@ String wcsLocNo = getWcsLocNo("01-01-01-01-01"); System.out.println(wcsLocNo); } + + public static Integer StaNoCrnNo(Integer staNo) { + switch (staNo){ + case 100: + case 101: + return 1; + case 102: + case 103: + return 2; + case 104: + case 105: + return 3; + case 106: + case 107: + return 4; + default: + return 0; + } + } + } diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java index a31159e..2fffdd3 100644 --- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java @@ -155,6 +155,9 @@ basDevp.setWrkNo(workNo.intValue()); basDevp.setAutoing(autoing?"Y":"N"); basDevp.setLoading(loading?"Y":"N"); + if (!loading){ + basDevp.setStaErr(0); + } basDevp.setInEnable(inEnable?"Y":"N"); basDevp.setOutEnable(outEnable?"Y":"N"); basDevp.setLocType1((short) 0); // 楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿 diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index f03b158..c96e8a7 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -262,7 +262,7 @@ } } - OperateResultExOne<byte[]> resultAgvAndPlcOk = siemensS7Net.Read("DB102.0", (short) 30); + OperateResultExOne<byte[]> resultAgvAndPlcOk = siemensS7Net.Read("DB132.0", (short) 30); if (resultAgvAndPlcOk.IsSuccess) { for (int i = 0; i < staNoSize; i++) { int sign =(i+2)/2-1; @@ -274,7 +274,7 @@ staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } - staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6+4)); // 鍏佽鍙栬揣 + staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6+4)); // 鍏佽鍙栬揣 staProtocol.setAgvTargetPlace((short)0); // 鍏佽鏀捐揣 continue; } @@ -285,8 +285,18 @@ staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } - staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6)); // 鍏佽鍙栬揣 - staProtocol.setAgvTargetPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6 + 2)); // 鍏佽鏀捐揣 + try{ + staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6)); // 鍙栬揣瀹屾垚 + if (staProtocol.getAgvTargetPick()!=0){ + System.out.println(staProtocol.getAgvTargetPick()); + } + staProtocol.setAgvTargetPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6 + 2)); // 鏀捐揣瀹屾垚 + if (staProtocol.getAgvTargetPlace()!=0){ + System.out.println(staProtocol.getAgvTargetPlace()); + } + }catch (Exception e){ + log.error(""+e); + } } } diff --git a/src/main/resources/mapper/BasDevpMapper.xml b/src/main/resources/mapper/BasDevpMapper.xml index 06c6ac0..b9898f2 100644 --- a/src/main/resources/mapper/BasDevpMapper.xml +++ b/src/main/resources/mapper/BasDevpMapper.xml @@ -45,6 +45,7 @@ <result column="agv_target_pick" property="agvTargetPick" /> <result column="agv_start_place" property="agvStartPlace" /> <result column="agv_target_place" property="agvTargetPlace" /> + <result column="sta_err" property="staErr" /> </resultMap> -- Gitblit v1.9.1