From 08d8933d3fe66fb83f1e2e7e4038e62b3c5143e1 Mon Sep 17 00:00:00 2001 From: cpT <1@123> Date: 星期四, 19 六月 2025 11:10:43 +0800 Subject: [PATCH] #改造 --- src/main/java/com/zy/asrs/controller/OpenController.java | 331 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 272 insertions(+), 59 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index 57bde1d..9dfc007 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/src/main/java/com/zy/asrs/controller/OpenController.java @@ -8,12 +8,21 @@ import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.CarryParam; -import com.zy.asrs.entity.param.TaskOverParam; -import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; -import com.zy.asrs.entity.param.TaskCreateParam; +import com.zy.asrs.entity.param.*; import com.zy.asrs.service.*; +import com.zy.asrs.service.impl.BasCrnErrorServiceImpl; +import com.zy.asrs.service.impl.TaskWrkLogServiceImpl; +import com.zy.asrs.utils.Utils; import com.zy.common.web.BaseController; +import com.zy.core.CrnThread; +import com.zy.core.cache.RgvStatusCache; +import com.zy.core.cache.SlaveConnection; +import com.zy.core.enums.SlaveType; +import com.zy.core.model.CrnSlave; +import com.zy.core.model.RgvSlave; +import com.zy.core.model.protocol.CrnProtocol; +import com.zy.core.model.protocol.RgvProtocol; +import com.zy.core.properties.SlaveProperties; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -29,6 +38,8 @@ @RequestMapping("/open") public class OpenController extends BaseController { + @Autowired + private SlaveProperties slaveProperties; @Autowired private OpenService openService; @Autowired @@ -47,6 +58,10 @@ private StaDescService staDescService; @Autowired private LocMastService locMastService; + @Autowired + private BasRgvErrService basRgvErrService; + @Autowired + private BasCrnErrorServiceImpl basCrnErrorService; @Value("${wms.url}") private String wmsUrl; @@ -56,6 +71,9 @@ public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{ add("ea1f0459efc02a79f046f982767939ae"); }}; + @Autowired + private TaskWrkLogServiceImpl taskWrkLogService; + //agv浠诲姟瀹屾垚 @PostMapping("/toAgvTaskOver") @AppAuth(memo = "agv浠诲姟瀹屾垚鎺ュ彛") @@ -77,33 +95,70 @@ } //鍒涘缓浠诲姟 - @PostMapping("/taskCreate") - public R taskCreate(@RequestHeader String appkey, + @PostMapping("/taskCreate2") + @AppAuth(memo = "WMS浠诲姟涓嬪彂") + @Transactional + public synchronized 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]涓嶈兘涓虹┖"); - } - LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>() - .eq("loc_sts","F") - .eq("loc_no",param.getTargetPoint()) - .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]涓嶈兘涓虹┖"); + } + param.updateIoTyoe(param.getIoType());//涓埅涓嬪彂 1锛氬嚭搴擄紝2锛氱Щ搴� 3锛氬叆搴� ====杞崲涓�====> 1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴� + + 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(); } @@ -120,6 +175,44 @@ } return R.ok().add(taskWrk); } + +// //鍙栨斁璐х敵璇� +// @PostMapping("/pick/and/place/v1") +// @AppAuth(memo = "agv鍙栨斁璐х敵璇�") +// public R getAgvPickAndPlaceV1(@RequestHeader String appkey, +// @RequestBody TaskOverParam param, +// HttpServletRequest request){ +// auth(appkey, param, request); +// if (Cools.isEmpty(param)) { +// return R.parse(BaseRes.PARAM); +// } +// if (Cools.isEmpty(param.getStaNo())){ +// return R.error("鐮佸ご[staNo]涓嶈兘涓虹┖"); +// } +// if (Cools.isEmpty(param.getType())){ +// return R.error("绫诲瀷[type]涓嶈兘涓虹┖"); +// } +// return openService.getAgvPickAndPlaceV1(param); +// } + +// //鍙栨斁璐у畬鎴愬弽棣� +// @PostMapping("/pick/and/place/v2") +// @AppAuth(memo = "agv鍙栨斁璐у畬鎴愬弽棣�") +// public R getAgvPickAndPlaceV2(@RequestHeader String appkey, +// @RequestBody TaskOverParam param, +// HttpServletRequest request){ +// auth(appkey, param, request); +// if (Cools.isEmpty(param)) { +// return R.parse(BaseRes.PARAM); +// } +// if (Cools.isEmpty(param.getStaNo())){ +// return R.error("鐮佸ご[staNo]涓嶈兘涓虹┖"); +// } +// if (Cools.isEmpty(param.getType())){ +// return R.error("绫诲瀷[type]涓嶈兘涓虹┖"); +// } +// return openService.getAgvPickAndPlaceV2(param); +// } //鏌ヨ浠诲姟鎸囦护闆嗗悎 @GetMapping("/queryTaskCommand") @@ -242,15 +335,18 @@ } //浠诲姟涓嬪彂鎺ュ彛 - @PostMapping("/outboundTaskSend") +// @PostMapping("/outboundTaskSend") + @PostMapping("/taskCreate") + @AppAuth(memo = "浠诲姟涓嬪彂鎺ュ彛") @Transactional public R outboundTaskSend(@RequestHeader String appkey, - @RequestBody List<CarryParam> params, + @RequestBody List<CarryParam> params,//涓埅涓嬪彂 1锛氬嚭搴擄紝2锛氱Щ搴� 3锛氬叆搴� HttpServletRequest request) { - //auth(appkey, params, request); - List<WMSAndAGVInterfaceParam> params1 =new ArrayList<>(); + auth(appkey, params, request); +// List<WMSAndAGVInterfaceParam> params1 =new ArrayList<>(); for (CarryParam param:params){ - + param.updateIoTyoe(param.getIoType());//涓埅涓嬪彂 1锛氬嚭搴擄紝2锛氱Щ搴� 3锛氬叆搴� ====杞崲涓�====> 1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴� + param.updateLocNo(); if (Cools.isEmpty(param)){ return R.error("鍙傛暟涓虹┖锛�"); } else if (Cools.isEmpty(param.getTaskNo())){ @@ -273,14 +369,32 @@ // } // } - LocMast locMast = locMastService.selectByLocNo(param.getStartPoint()); + + String locNo=null; + if(param.getIoType()==1){ + locNo=param.getTargetPoint(); + }else{ + locNo=param.getStartPoint(); + } + LocMast locMast = locMastService.selectByLocNo(locNo); if(Cools.isEmpty(locMast)){ return R.error("鍒濆搴撲綅鏃犳硶鎵惧埌"); } R r = null; - if(param.getIoType() == 2){ + if(param.getIoType() == 1){ + //鍏ュ簱浠诲姟鍒涘缓 + StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() + .eq("type_no",1) + .eq("crn_no",locMast.getCrnNo()) + .eq("stn_no",param.getStartPoint())); + if(Cools.isEmpty(staDesc)){ + return R.error("鍏ュ簱璺姴涓嶅瓨鍦�"); + } + r = openService.taskCreate(new TaskCreateParam(param,staDesc.getCrnNo(),staDesc.getCrnStn())); + + }else if(param.getIoType() == 2){ //鍑哄簱浠诲姟鍒涘缓 StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() .eq("type_no",2) @@ -289,8 +403,15 @@ if(Cools.isEmpty(staDesc)){ return R.error("鍑哄簱璺姴涓嶅瓨鍦�"); } - r = openService.taskCreate(new TaskCreateParam(param,staDesc.getCrnNo())); + r = openService.taskCreate(new TaskCreateParam(param,staDesc.getCrnNo(),staDesc.getStnNo())); }else if (param.getIoType() == 3){ + LocMast locMast2 = locMastService.selectByLocNo(param.getTargetPoint()); + if(Cools.isEmpty(locMast2)){ + return R.error("鐩爣搴撲綅鏃犳硶鎵惧埌"); + } + if (!locMast2.getCrnNo().equals(locMast.getCrnNo())){ + return R.error("璧峰搴撲綅涓庣洰鏍囧簱浣嶄笉鍐嶅悓涓�宸烽亾"); + } //绉诲簱浠诲姟鍒涘缓 r = openService.taskCreate(new TaskCreateParam(param,locMast.getCrnNo())); } @@ -312,42 +433,37 @@ //浠诲姟鍙栨秷鎺ュ彛 @PostMapping("/taskCancel") public R taskCancel(@RequestHeader String appkey, - @RequestBody WMSAndAGVInterfaceParam param, + @RequestBody WMSAndAGVInterfaceParam param,//涓埅涓嬪彂 1锛氬嚭搴擄紝2锛氱Щ搴� 3锛氬叆搴� 1锛氬彇娑� 2 瀹屾垚 HttpServletRequest request) { auth(appkey, param, request); +// param.updateTaskStatus(param.getTaskStatus()); if (Cools.isEmpty(param)){ return R.error("鍙傛暟涓虹┖锛�"); } else if (Cools.isEmpty(param.getTaskNo())){ return R.error("宸ヤ綔鍙蜂负绌猴紒"); - } else if (Cools.isEmpty(param.getTaskStatus())){ + } else if (Cools.isEmpty(param.getIoType())){ return R.error("鎿嶄綔绫诲瀷涓虹┖锛�"); + } else if (Cools.isEmpty(param.getBarcode())){ + return R.error("鎵樼洏鐮佷笉鑳戒负绌猴紒"); } -// else if (Cools.isEmpty(param.getWarehouseId())){ -// return R.error("浠撳簱鏍囪瘑涓虹┖锛�"); -// } - TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("task_no", param.getTaskNo())); + TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>() + .eq("task_no", param.getTaskNo()) + .eq("io_type",param.getIoType()) + .eq("barcode",param.getBarcode())); if (Cools.isEmpty(taskWrk)){ - return R.error("鏈煡鍒板綋鍓嶄换鍔�"); + return R.error("鏈煡鍒板綋鍓嶄换鍔�---"+param); } boolean sign =false; switch (param.getTaskStatus()){ case 1://姝e父鍙栨秷 - if (taskWrk.getWrkSts()>1){ + if (taskWrk.getStatus()>1){ return R.error("浠诲姟宸插紑濮嬫墽琛�"); - } - case 2://寮哄埗鍙栨秷 - if (taskWrk.getWrkSts()>3){ - return R.error("浠诲姟宸叉墽琛屽畬鎴�"); } break; - case 3://姝e父瀹屾垚 - if (taskWrk.getWrkSts()>11){ + case 2://姝e父瀹屾垚 + if (taskWrk.getStatus()>1){ return R.error("浠诲姟宸插紑濮嬫墽琛�"); - } - case 4://寮哄埗瀹屾垚 - if (taskWrk.getWrkSts()>14){ - return R.error("浠诲姟宸叉墽琛屽畬鎴�"); } sign=true; break; @@ -378,14 +494,111 @@ auth(appkey, "璁惧鐘舵�佹煡璇㈡帴鍙�", request); List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<>()); List<Object> list = new ArrayList<>(); + WcsStatusResponseModel wcsStatusResponseModel = new WcsStatusResponseModel(); for (BasDevp basDevp:basDevps){ - list.add(basDevp); + BasDevpWmsParam basDevpWmsParam = new BasDevpWmsParam(); + basDevpWmsParam.setDevNo(basDevp.getDevNo()); + basDevpWmsParam.setWrkNo(basDevp.getWrkNo().longValue()); + basDevpWmsParam.setAutoing(basDevp.getAutoing()); + basDevpWmsParam.setLoading(basDevp.getLoading()); + basDevpWmsParam.setInEnable(basDevp.getInEnable()); + basDevpWmsParam.setOutEnable(basDevp.getOutEnable()); + basDevpWmsParam.setDevErr(basDevp.getStaErr().longValue()); + basDevpWmsParam.setDevErrM(basDevpWmsParam.getDevErr$()); +// list.add(basDevpWmsParam); + wcsStatusResponseModel.getChainList().add(basDevpWmsParam); } - List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>()); - for (BasCrnp basCrnp:basCrnps){ - list.add(basCrnp); + List<BasCrnpWmsParam> basCrnpWmsParamList = new ArrayList<>(); + for (CrnSlave crn : slaveProperties.getCrn()) { + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { continue; } + BasCrnp basCrnp = basCrnpService.selectById(crn.getId()); + if (basCrnp == null) { + log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId()); + continue; + } + BasCrnpWmsParam basCrnpWmsParam = new BasCrnpWmsParam(); + basCrnpWmsParam.sync(basCrnp); + + basCrnpWmsParam.setCrnNoH(crnProtocol.getLaneNo()); + basCrnpWmsParam.setCrnSts(crnProtocol.getStatus().intValue()); + + try{ + BasCrnError basCrnError = basCrnErrorService.selectById(crnProtocol.getAlarm()); + basCrnpWmsParam.setCrnErrM(basCrnError.getErrName()); + } catch (Exception e){ + basCrnpWmsParam.setCrnErrM("鏈煡寮傚父"); + } + if (crnProtocol.getMode()!=3){ + basCrnpWmsParam.setCrnErr(999L); + basCrnpWmsParam.setCrnErrM("闈炶嚜鍔紒锛侊紒"); + } + basCrnpWmsParamList.add(basCrnpWmsParam); + +// list.add(basCrnpWmsParam); } - return R.ok(list); + wcsStatusResponseModel.setPilingCarList(basCrnpWmsParamList); + for (RgvSlave rgvSlave : slaveProperties.getRgv()) { + RgvProtocol rgvStatus = RgvStatusCache.getRgvStatus(rgvSlave.getId()); + if (Cools.isEmpty(rgvStatus)){ + continue; + } + BasRgvWmsParam basRgvWmsParam = new BasRgvWmsParam(); + basRgvWmsParam.setWrkNo(rgvStatus.getTaskNo()); + basRgvWmsParam.setCrnSts(rgvStatus.getStatus().intValue()); + basRgvWmsParam.setStatusType(rgvStatus.getStatusType().desc); + basRgvWmsParam.setSteNo(rgvSlave.getId()); + basRgvWmsParam.setSteErr(rgvStatus.getAlarm().longValue()); + basRgvWmsParam.setSteErrM(rgvStatus.getAlarmM()); +// try{ +// BasRgvErr basRgvErr = basRgvErrService.selectById((long)rgvStatus.getAlarm$()); +// +// basRgvWmsParam.setSteErrM(basRgvErr.getErrName()); +// } catch (Exception e){ +// basRgvWmsParam.setSteErrM("鏈煡寮傚父"); +// } + if (rgvStatus.getMode()!=1){ + basRgvWmsParam.setSteErr(999L); + basRgvWmsParam.setSteErrM("闈炶嚜鍔紒锛侊紒"); + } +// list.add(basRgvWmsParam); + wcsStatusResponseModel.getRgvList().add(basRgvWmsParam); + + } +// List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>()); +// for (BasCrnp basCrnp:basCrnps){ +// list.add(basCrnp); +// } + return R.ok(wcsStatusResponseModel); + } + + //璁惧鐘舵�佹煡璇㈡帴鍙� + @PostMapping("/taskWrkLogs") + @Transactional + public R taskWrkLogs(@RequestHeader String appkey, + HttpServletRequest request) { + List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<>()); + return R.ok(taskWrkLogs); + } + + //璁惧鐘舵�佹煡璇㈡帴鍙� + @PostMapping("/error") + @Transactional + public R errorRgv(@RequestHeader String appkey, + HttpServletRequest request) { + List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<>()); + return R.ok(taskWrkLogs); + } + + //璁惧鐘舵�佹煡璇㈡帴鍙� + @PostMapping("/wrkNo/wmsTaskNo") + @Transactional + public R wrkNoWmsTaskNo(@RequestHeader String appkey, + HttpServletRequest request) { + List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<>()); + return R.ok(taskWrkLogs); } -- Gitblit v1.9.1