From 9ed4cb53a2c643b879f993537f5a2793fba56ba1 Mon Sep 17 00:00:00 2001 From: ZY <zc857179121@qq.com> Date: 星期一, 31 三月 2025 07:57:13 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/asrs/controller/AgvOpenController.java | 238 +++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 173 insertions(+), 65 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java index 55492df..48b4713 100644 --- a/src/main/java/com/zy/asrs/controller/AgvOpenController.java +++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java @@ -6,13 +6,17 @@ import com.core.annotations.AppAuth; import com.core.common.Cools; import com.core.common.R; +import com.zy.asrs.entity.AgvBasDevp; import com.zy.asrs.entity.AgvWrkMast; +import com.zy.asrs.entity.WrkMastExecute; import com.zy.asrs.entity.param.AgvTaskCallBackParam; import com.zy.asrs.service.*; import com.zy.asrs.utils.AppAuthUtil; import com.zy.common.web.BaseController; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -25,8 +29,11 @@ import javax.servlet.http.HttpServletRequest; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Date; import java.util.EnumSet; import java.util.Map; + +import static org.reflections.Reflections.log; /** * 涓婃姤浜嬩欢绫诲瀷锛坋ventType锛夛細 @@ -49,118 +56,219 @@ @RequestMapping("/agv") public class AgvOpenController extends BaseController { + private static final Logger log = LoggerFactory.getLogger(AgvMobileController.class); + @Autowired AgvWrkMastService agvWrkMastService; @Autowired ApiLogService apiLogService; + @Autowired + private WrkMastExecuteService wrkMastExecuteService; + @Autowired + private AgvBasDevpService agvBasDevpService; @PostMapping("/task/event/status") @AppAuth(memo = "ESS浠诲姟鍥炶皟") - public R taskEventStaus(@RequestBody AgvTaskCallBackParam param, HttpServletRequest request){ + public R taskEventStaus(@RequestBody AgvTaskCallBackParam param, HttpServletRequest request) { + + //save api log (appkey 鍚庣画娣诲姞) + + R r = new R(0, "鎴愬姛"); + + AppAuthUtil.auth("", param, request); + int wrkNo = Integer.parseInt(param.getTaskCode()); + if (wrkNo < 0) { + wrkNo = -wrkNo; + } + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo)); + if (Cools.isEmpty(agvWrkMast)) { + agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getPodCode())); + if (Cools.isEmpty(agvWrkMast)) { + r = R.error("浠诲姟缂栧彿閿欒"); + logPost(param, JSONObject.toJSONString(r), false); + return r; + } + } + if (agvWrkMast.getIoType().equals(121)) { + try { + if (agvWrkMast.getWrkSts().equals(12L)) { + WrkMastExecute wrkMastExecute = wrkMastExecuteService.selectOne(new EntityWrapper<WrkMastExecute>().eq("wrk_no", wrkNo)); + if (Cools.isEmpty(wrkMastExecute) || wrkMastExecute.getWrkSts() != 1) { + r = R.error("浠诲姟鐘舵�乄rkSts鍙傛暟鏈夎,WrkSts:" + wrkMastExecute.getWrkSts$()); + logPost(param, "浠诲姟鐘舵�乄rkSts鍙傛暟鏈夎,WrkSts:" + wrkMastExecute.getWrkSts$() + JSONObject.toJSONString(r), false); + return r; + } else { + wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode()); + wrkMastExecuteService.updateById(wrkMastExecute); + } + } else { + r = R.error("浠诲姟寮傚父"); + logPost(param, JSONObject.toJSONString(r), false); + + return r; + } + } catch (Exception e) { + r = R.error("" + e.getMessage()); + logPost(param, JSONObject.toJSONString(r), false); + return r; + } + } else { + if (agvWrkMast.getWrkSts() >= 205) { + r = R.error("褰撳墠浠诲姟宸插畬鎴�"); + logPost(param, JSONObject.toJSONString(r), false); + return r; + } + + AgvTask agvTask = AgvTask.valueOf(param.getMethod()); + Class<AgvTask> clz = AgvTask.class; + try { + Method method = clz.getDeclaredMethod("success", AgvWrkMast.class, AgvTaskCallBackParam.class); + method.invoke(agvTask, agvWrkMast, param); + } catch (NoSuchMethodException e) { + r = R.error("浠诲姟鐘舵�乻tatus鍙傛暟鏈夎"); + logPost(param, JSONObject.toJSONString(r), false); + return r; + } catch (InvocationTargetException e) { + log.error(e.getMessage()); + r = R.error("" + e.getMessage()); + logPost(param, JSONObject.toJSONString(r), false); + return r; + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + r = R.error("" + e.getMessage()); + logPost(param, JSONObject.toJSONString(r), false); + return r; + } + } + logPost(param, JSONObject.toJSONString(r), true); + return r; + } + + @PostMapping("/conveyor/loadContainerFinish ") + @AppAuth(memo = "鍙栬揣鏋跺畬鎴愰�氱煡") + public R loadContainerFinish(@RequestBody Map<String, Object> params) { + + return R.ok(); + } + + private void logPost(AgvTaskCallBackParam param, String response, boolean success) { apiLogService.save( "ESS浠诲姟鍥炶皟", "/phyzwms/agv/task/event/status", null, null, JSON.toJSONString(JSONObject.toJSONString(param)), - null, - true + response, + success ); - - - //save api log (appkey 鍚庣画娣诲姞) - - AppAuthUtil.auth("",param, request); - int wrkNo = Integer.parseInt(param.getTaskCode()); - if(wrkNo < 0){ - wrkNo = -wrkNo; - } - AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo)); - if(Cools.isEmpty(agvWrkMast)){ - agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode",param.getPodCode())); - if (Cools.isEmpty(agvWrkMast)){ - return R.error("浠诲姟缂栧彿閿欒"); - } - } - - AgvTask agvTask = AgvTask.valueOf(param.getMethod()); - Class<AgvTask> clz = AgvTask.class; - try { - Method method = clz.getDeclaredMethod("success", AgvWrkMast.class, AgvTaskCallBackParam.class); - method.invoke(agvTask,agvWrkMast,param); - } catch (NoSuchMethodException e) { - return R.error("浠诲姟鐘舵�乻tatus鍙傛暟鏈夎"); - } catch (InvocationTargetException e) { - log.error(e.getMessage()); - return R.error(); - } catch (IllegalAccessException e) { - log.error(e.getMessage()); - return R.error(); - } - return R.ok(); - } - - @PostMapping("/conveyor/loadContainerFinish ") - @AppAuth(memo = "鍙栧鍣ㄥ畬鎴愰�氱煡") - public R loadContainerFinish(@RequestBody Map<String,Object> params){ - - return R.ok(); } } -enum AgvTask{ +enum AgvTask { /** - * 涓婃姤浠诲姟鐘舵�� + * 涓婃姤浠诲姟瀹屾垚 */ - end{ + end { @Transactional public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { + + //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 agvWrkMast.setWrkSts(205L); - //agvWrkMast.setLocNo(param.getLocationCode()); - agvWrkMastService.updateById(agvWrkMast); - //agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),205); - //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱 - if(agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103 || agvWrkMast.getIoType() == 107){ - //淇敼鍑哄簱绔欑偣鐘舵�� - agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + if (agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103 || agvWrkMast.getIoType() == 107) { + AgvBasDevp byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getLocNo()); + if (byDevNo != null) { + log.info("鍑哄簱浠诲姟杩涘叆绔欑偣===>>绔欑偣鐮侊細{}锛岀珯鐐圭姸鎬亄}", byDevNo.getDevNo(), byDevNo.getLocSts()); + //淇敼鍑哄簱绔欑偣鐘舵�� + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); + + } } //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱 - if(agvWrkMast.getIoType() == 110){ - agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + if (agvWrkMast.getIoType() == 110) { + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); + agvWrkMast.setWrkSts(206L); } + agvWrkMast.setModiTime(new Date()); + agvWrkMastService.updateById(agvWrkMast); } }, /** * 浠诲姟寮�濮� */ - start{ + start { @Transactional public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负203.浠诲姟寮�濮� agvWrkMast.setWrkSts(203L); + agvWrkMast.setModiTime(new Date()); + agvWrkMast.setPdcType(param.getRobotCode()); agvWrkMastService.updateById(agvWrkMast); } }, /** * 璧板嚭鍌ㄤ綅鐘舵�� */ - outbin{ + outbin { @Transactional public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { - //鍏ュ簱浠诲姟 || 鎷f枡鍏ュ簱浠诲姟 ||鐩樼偣鍐嶅叆搴� ||绌烘澘鍏ュ簱 - if(agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 || agvWrkMast.getIoType() == 10){ - //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜 - agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",null); + switch (agvWrkMast.getIoType()) { + //鍏ュ簱浠诲姟 + case 1: + // 绌烘澘鍏ュ簱 + case 10: + // 鎷f枡鍏ュ簱浠诲姟 + case 53: + // 绔欑偣閫�鍥� + case 58: + // 鐩樼偣鍐嶅叆搴� + case 57: + AgvBasDevp byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo()); + String locSts = "O"; + if (byDevNo != null) { + assert log != null; +// if (!Cools.isEmpty(agvWrkMast.getBarcode())) { +// AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", agvWrkMast.getBarcode())); +// if (!Cools.isEmpty(agvBasDevp) && agvBasDevp.getLocSts().equals("F") && !agvBasDevp.getDevNo().equals(byDevNo.getDevNo())) { +// agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(), locSts, "", null); +// } +// } + log.info("鏂欐灦绂诲紑鏃跺綋鍓嶇珯鐐圭姸鎬�:{},{}", byDevNo.getDevNo(), byDevNo.getLocSts()); + if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) { + log.info("鏂欐灦绂诲紑鏃跺綋鍓嶇珯鐐圭姸鎬佷繚鎸佷笉鍙�1:{},{}", byDevNo.getDevNo(), byDevNo.getLocSts()); + locSts = byDevNo.getLocSts(); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), locSts, byDevNo.getBarcode(), null); + } else { + log.info("鏂欐灦绂诲紑鏃跺綋鍓嶇珯鐐圭姸鎬佷繚鎸佷笉鍙�2:{},{}", byDevNo.getDevNo(), byDevNo.getLocSts()); + locSts = "O"; + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), locSts, "", null); + } + + } + break; } + if (agvWrkMast.getIoType() == 108 || agvWrkMast.getIoType() == 114) { + //鏇存柊搴撳瓨鏄庣粏 + agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); + } else if (agvWrkMast.getIoType() == 109 && !agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); + } + //if(agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 || agvWrkMast.getIoType() == 10){ + // //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜 + // agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",null); + //} + //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负203.RCS鏀捐揣涓� - agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),204); + agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(), 204); } @@ -168,7 +276,7 @@ /** * 涓婃姤鏀剧鐘舵�� */ - cancel{ + cancel { @Transactional public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { @@ -176,7 +284,7 @@ } }, - apply{ + apply { @Transactional public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { @@ -233,8 +341,8 @@ AgvWrkDetlLogService agvWrkDetlLogService; @PostConstruct - public void postConstruct(){ - for(AgvTask task : EnumSet.allOf(AgvTask.class)){ + public void postConstruct() { + for (AgvTask task : EnumSet.allOf(AgvTask.class)) { task.setAgvBasDevpService(agvBasDevpService); task.setAgvLocDetlService(agvLocDetlService); task.setAgvLocMastService(agvLocMastService); -- Gitblit v1.9.1