From 2bc10d832acd06bc6511e50405202fde99b0e7c2 Mon Sep 17 00:00:00 2001 From: zhangc <zc@123> Date: 星期六, 18 一月 2025 10:20:25 +0800 Subject: [PATCH] java 优化库位检索逻辑,添加AGV工作明细服务,修复定时任务 --- src/main/java/com/zy/asrs/controller/AgvMobileController.java | 103 ++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 89 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/AgvMobileController.java b/src/main/java/com/zy/asrs/controller/AgvMobileController.java index b0112aa..8529651 100644 --- a/src/main/java/com/zy/asrs/controller/AgvMobileController.java +++ b/src/main/java/com/zy/asrs/controller/AgvMobileController.java @@ -11,6 +11,7 @@ import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; import com.zy.asrs.service.*; +import com.zy.asrs.service.impl.OrderServiceImpl; import com.zy.common.web.BaseController; import lombok.Synchronized; import org.slf4j.Logger; @@ -55,6 +56,8 @@ private SnowflakeIdWorker snowflakeIdWorker; @Autowired private FlowLogService flowLogService; + @Autowired + private OrderServiceImpl orderService; /* @@ -62,6 +65,9 @@ */ @PostMapping("/comb/auth") public R comb(@RequestBody CombParam combParam) { + if (combParam == null) { + return R.error("缂哄皯鍙傛暟"); + } agvMobileService.comb(combParam, getUserId()); return R.ok(); @@ -71,6 +77,9 @@ @RequestMapping("/pick/again/auth") @ManagerAuth(memo = "鍐嶆鎷f枡") public R pickAgain(@RequestBody PickParam pickParams) { + if (pickParams == null) { + return R.error("缂哄皯鍙傛暟"); + } agvMobileService.pickAgain(pickParams, 1l); return R.ok("鎷f枡鎴愬姛"); } @@ -80,6 +89,9 @@ */ @PostMapping("/combBinging/auth") public R combBinding(@RequestBody Map<String, Object> map) { + if (map == null || Cools.isEmpty(map.get("barcode")) || Cools.isEmpty(map.get("stationCode"))) { + return R.error("缂哄皯鍙傛暟"); + } String barcode = map.get("barcode").toString(); String stationCode = map.get("stationCode").toString(); Short containerType = Short.valueOf(barcode.substring(0, 2)); @@ -92,6 +104,9 @@ */ @PostMapping("/getBasDevp/auth") public R getBasDevpByFloor(@RequestBody Map<String, Object> map) { + if (map == null || Cools.isEmpty(map.get("floor"))) { + return R.error("缂哄皯鍙傛暟"); + } String floor = map.get("floor").toString(); if ("1".equals(floor) || "3".equals(floor)) { return R.ok(agvMobileService.getAgvBasDevpByFloor(Integer.parseInt(floor))); @@ -113,12 +128,17 @@ @PostMapping("/pakin/auth") @Synchronized public R pakin(@RequestBody Map<String, Object> map) { + if (map == null || Cools.isEmpty(map.get("devNo"))) { + return R.error("缂哄皯鍙傛暟"); + } List<String> devNos = (List<String>) map.get("devNo"); List<AgvBasDevp> agvBasDevpList = devNos.stream().map(devNo -> { return agvBasDevpService.selectById(devNo); }).collect(Collectors.toList()); - + if (agvBasDevpList == null) { + return R.error("鏆傚瓨浣嶄笉瀛樺湪"); + } workService.createWaitPainWrkMastStart(agvBasDevpList, getUserId(), false); return R.ok("鐢熸垚宸ヤ綔妗f垚鍔�"); @@ -132,6 +152,9 @@ @Transactional @ManagerAuth(memo = "鍚姩鍏ュ簱") public R startPakin(@RequestBody AgvMobileStartPakin params) { + if (params == null) { + return R.error("缂哄皯鍙傛暟"); + } log.info("鍚姩鍏ュ簱,{}", JSON.toJSONString(params)); // 缁勬墭 params.getCombParams().forEach(combParam -> { @@ -150,8 +173,13 @@ @Synchronized @ManagerAuth(memo = "绌烘澘鍏ュ簱") public R pakinEmpty(@RequestBody AgvMobileStartParam params) { - + if (params == null) { + return R.error("缂哄皯鍙傛暟"); + } for (AgvMobileStartParam.Pda pda : params.getPad()) { + if (pda == null || Cools.isEmpty(pda.getContainerCode())) { + return R.error("缂哄皯瀹瑰櫒鍙傛暟"); + } pda.setContainerType(Short.valueOf(pda.getContainerCode().substring(0, 2))); workService.emptyPlateIn(pda.getDevNo(), pda.getContainerCode(), pda.getContainerType(), getUserId(), false); } @@ -166,8 +194,13 @@ @Synchronized @ManagerAuth(memo = "绌烘澘鍑哄簱") public R pakoutEmpty(@RequestBody AgvMobileStartParam params) { - + if (params == null) { + return R.error("缂哄皯鍙傛暟"); + } for (AgvMobileStartParam.Pda pda : params.getPad()) { + if (pda == null || Cools.isEmpty(pda.getDevNo()) || Cools.isEmpty(pda.getContainerType())) { + return R.error("缂哄皯绔欑偣淇℃伅"); + } workService.emptyPlateOut(pda.getDevNo(), pda.getContainerType(), getUserId()); } @@ -179,8 +212,13 @@ */ @PostMapping("/pakout/empty/container/selector/auth") public R containerType(@RequestBody HashMap<String, String> params) { - + if (params == null) { + return R.error("缂哄皯鍙傛暟"); + } String devNo = params.get("devNo"); + if (Cools.isEmpty(devNo)) { + return R.error("缂哄皯绔欑偣鏁版嵁"); + } AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo); return R.ok(agvLocMastService.queryContainerTypeByLocType1(agvBasDevp.getLocType1())); @@ -243,7 +281,9 @@ String threeCode = params.get("threeCode"); String matnr = params.get("matnr"); String floor = params.get("floor"); - + if (Cools.isEmpty(matnr)) { + return R.error("鍙傛暟缂哄け"); + } Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).ne("process_sts", 1); @@ -284,7 +324,9 @@ String threeCode = params.get("threeCode"); String matnr = params.get("matnr"); String floor = params.get("floor"); - + if (Cools.isEmpty(orderNo, threeCode, matnr)) { + return R.error("鍙傛暟缂哄け"); + } OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", orderNo).eq("three_code", threeCode).eq("matnr", matnr)); Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr); @@ -377,7 +419,9 @@ AgvLocMast agvLocMastByContainerCode = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode", containerCode)); AgvLocMast agvLocMastByLocNo = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo)); - + if (agvLocMastByLocNo == null) { + return R.error("搴撲綅涓嶅瓨鍦�"); + } String barcode1 = agvLocMastByLocNo.getBarcode(); @@ -406,6 +450,9 @@ agvLocMastByContainerCode.setBarcode(barcode1); agvLocMastService.updateById(agvLocMastByContainerCode); } + // 淇濆瓨璋冩暣璁板綍 + AdjDetl adjDetl = new AdjDetl(); + return R.ok("缁存姢鎴愬姛"); } @@ -497,6 +544,9 @@ String locNo = map.get("locNo"); Wrapper<AgvLocMast> wrapper = new EntityWrapper<AgvLocMast>().eq("loc_no", locNo); AgvLocMast agvLocMast = agvLocMastService.selectOne(wrapper); + if (agvLocMast == null) { + return R.error("搴撲綅涓嶅瓨鍦�"); + } agvLocMast.setLocType(moveType); agvLocMast.setLocType3(floor); agvLocMastService.update(agvLocMast, wrapper); @@ -505,6 +555,9 @@ for (AgvLocDetl agvLocDetl : agvLocDetls) { // 鏇存柊璁㈠崟 OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode())); + if (orderDetl == null) { + throw new CoolException("璋冩嫧鍗曟槑缁嗕笉瀛樺湪"); + } orderDetl.setQty(orderDetl.getQty() + agvLocDetl.getAnfme()); if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) { throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr()); @@ -525,6 +578,7 @@ List<HashMap<String, String>> dbList = (List<HashMap<String, String>>) params.get("dbList"); params.get("dbList"); Object mT = params.get("moveType"); + String orderNo = params.get("orderNo").toString(); String moveType = ""; Integer ioType = 0; if (mT.equals("unAuto")) { @@ -559,6 +613,7 @@ wrkDetl.setWrkNo(wrkMast.getWrkNo()); wrkDetl.sync(agvLocDetl); wrkDetl.setSuppCode(agvLocDetl.getSuppCode()); + wrkDetl.setModel(orderNo); wrkDetl.setIoTime(now); wrkDetl.setAppeUser(getUserId()); wrkDetl.setAppeTime(now); @@ -567,10 +622,13 @@ if (!agvWrkDetlService.insert(wrkDetl)) { throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); } - // 鏇存柊璁㈠崟 - OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("source", 33).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode())); -// FlowLog flowLog = new FlowLog(); + OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", orderNo).eq("source", 33).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode())); + // 鍒ゆ柇璁㈠崟鏄惁瓒呴噺 + if (orderDetl.getQty() >= orderDetl.getAnfme()) { + throw new CoolException("璋冩嫧鍗�:" + orderNo + "鐨�<" + agvLocDetl.getMatnr() + ">宸插畬鎴愯皟鎷ㄦ暟閲�,璇锋鏌�!"); + } + // FlowLog flowLog = new FlowLog(); // flowLog.setFid(String.valueOf(flowId)); // flowLog.setSpare2(wrkMast.getWrkNo().toString()); // flowLog.setLocNo(wrkMast.getSourceLocNo()); @@ -597,8 +655,16 @@ // throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触"); // } orderDetl.setQty(orderDetl.getQty() + agvLocDetl.getAnfme()); - if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("source", 33).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) { - throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr()); + if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", orderNo).eq("source", 33).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) { + throw new CoolException("璁㈠崟鍙凤細{" + orderNo + "}鏇存柊璁㈠崟鏄庣粏澶辫触锛� 寮傚父鐗╂枡:" + agvLocDetl.getMatnr() + "(鍗婃垚鍝佽皟鎷ㄥ崟浠诲姟)"); + } + // 鏇存柊璁㈠崟鐘舵�� + Order order = orderService.selectByNo(orderDetl.getOrderNo()); + Long settle = order.getSettle(); + if (settle == 1L) { + if (!orderService.updateSettle(order.getId(), 2L, getUserId())) { + throw new CoolException("璁㈠崟鍙凤細{" + order.getOrderNo() + "}鏇存柊璁㈠崟鐘舵�侊細1-->2 澶辫触锛�(鍗婃垚鍝佽皟鎷ㄥ崟浠诲姟)"); + } } } // 鏇存柊婧愬簱浣� @@ -617,6 +683,7 @@ Date now = new Date(); List<HashMap<String, String>> dbList = (List<HashMap<String, String>>) params.get("dbList"); params.get("dbList"); + String orderNo = params.get("orderNo").toString(); for (HashMap<String, String> map : dbList) { String locNo = map.get("locNo"); String barcode = map.get("suppCode"); @@ -647,11 +714,19 @@ // 鏇存柊璁㈠崟 // 鍏堟煡璇㈠簱璁㈠崟鏄庣粏 鎵�灞炵殑璁㈠崟 - OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("source", 36).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode())); + OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", orderNo).eq("source", 17).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode())); orderDetl.setQty(orderDetl.getQty() + agvLocDetl.getAnfme()); - if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("source", 36).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) { + if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", orderNo).eq("source", 17).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) { throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr()); } + // 鏇存柊璁㈠崟鐘舵�� + Order order = orderService.selectByNo(orderNo); + Long settle = order.getSettle(); + if (settle == 1L) { + if (!orderService.updateSettle(order.getId(), 2L, getUserId())) { + throw new CoolException("璁㈠崟鍙凤細{" + order.getOrderNo() + "}鏇存柊璁㈠崟鐘舵�侊細1-->2 澶辫触锛�(鍗婃垚鍝佽皟鎷ㄥ崟浠诲姟)"); + } + } } // 鏇存柊婧愬簱浣� AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo)); -- Gitblit v1.9.1