From 5ceb1fc9be10e20d1f6e59382b2d14c8034485cf Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 10 九月 2025 21:30:32 +0800
Subject: [PATCH] 1
---
src/main/java/com/zy/asrs/controller/AgvMobileController.java | 183 +++++++++++++++++++++++++++++++++++++++++----
1 files changed, 164 insertions(+), 19 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..480ee3d 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,13 +152,66 @@
@Transactional
@ManagerAuth(memo = "鍚姩鍏ュ簱")
public R startPakin(@RequestBody AgvMobileStartPakin params) {
+ if (params == null) {
+ return R.error("缂哄皯鍙傛暟");
+ }
log.info("鍚姩鍏ュ簱,{}", JSON.toJSONString(params));
// 缁勬墭
+ if (params.getBarcode().startsWith("31")) {
+ //绠卞3鍏ュ簱锛岃揣鏋朵笂鍙兘瑁呬竴绉�
+ if (!Cools.isEmpty(params.getCombParams())) {
+ if (params.getCombParams().size() > 1) {
+ return R.error("鍗婃垚鍝佺澹冲叆搴擄紝璐ф灦涓婂彧鑳借涓�绉嶇墿鏂�");
+ } else {
+ List<CombParam.CombMat> combMats = params.getCombParams().get(0).getCombMats();
+ if (!Cools.isEmpty(combMats) && combMats.size() > 1) {
+ return R.error("鍗婃垚鍝佺澹冲叆搴擄紝璐ф灦涓婂彧鑳借涓�绉嶇墿鏂�");
+ }
+ }
+
+ }
+ }
params.getCombParams().forEach(combParam -> {
agvMobileService.comb(combParam, getUserId());
});
params.setContainerType(Short.valueOf(params.getContainerCode().substring(0, 2)));
workService.emptyPlateIn(params.getDevNo(), params.getContainerCode(), params.getContainerType(), getUserId(), false);
+
+ return R.ok("鐢熸垚宸ヤ綔妗f垚鍔�");
+ }
+
+ /*
+ 鍚姩鍏ュ簱锛岀粍鎵� + 鐢熸垚宸ヤ綔妗�,涓昏鐢ㄤ簬鍚稿涓�妤肩殑鍏ュ簱
+ */
+ @PostMapping("/start/pakin/auth/v2")
+ @Synchronized
+ @Transactional
+ @ManagerAuth(memo = "鍚姩鍏ュ簱v2")
+ public R startPakinV2(@RequestBody AgvMobileStartPakin params) {
+ if (params == null) {
+ return R.error("缂哄皯鍙傛暟");
+ }
+ log.info("鍚姩鍏ュ簱v2,{}", JSON.toJSONString(params));
+ // 缁勬墭
+ if (params.getBarcode().startsWith("30")) {
+ //绠卞3鍏ュ簱锛岃揣鏋朵笂鍙兘瑁呬竴绉�
+ if (!Cools.isEmpty(params.getCombParams())) {
+ if (params.getCombParams().size() > 1) {
+ return R.error("绠卞3鍏ュ簱锛岃揣鏋朵笂鍙兘瑁呬竴绉嶇墿鏂�");
+ } else {
+ List<CombParam.CombMat> combMats = params.getCombParams().get(0).getCombMats();
+ if (!Cools.isEmpty(combMats) && combMats.size() > 1) {
+ return R.error("绠卞3鍏ュ簱锛岃揣鏋朵笂鍙兘瑁呬竴绉嶇墿鏂�");
+ }
+ }
+
+ }
+ }
+ params.getCombParams().forEach(combParam -> {
+ agvMobileService.comb(combParam, getUserId());
+ });
+ params.setContainerType(Short.valueOf(params.getContainerCode().substring(0, 2)));
+ workService.emptyPlateInV2(params.getDevNo(), params.getContainerCode(), params.getContainerType(), getUserId(), false, params.getFactory());
return R.ok("鐢熸垚宸ヤ綔妗f垚鍔�");
}
@@ -150,10 +223,15 @@
@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);
+ workService.emptyPlateInV3(pda.getDevNo(), pda.getContainerCode(), pda.getContainerType(), getUserId(), false);
}
return R.ok();
@@ -166,8 +244,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 +262,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 +331,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 +374,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);
@@ -337,9 +429,19 @@
if (!Cools.isEmpty(locNo)) {
listByLocNo = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
+ if (listByLocNo != null) {
+ for (AgvLocDetl agvLocDetl : listByLocNo) {
+ agvLocDetl.setCount(agvLocDetl.getAnfme());
+ }
+ }
}
- if (!Cools.isEmpty(locNo)) {
+ if (!Cools.isEmpty(containerCode)) {
listByContainerCode = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("supp_code", containerCode));
+ if (listByContainerCode != null) {
+ for (AgvLocDetl agvLocDetl : listByContainerCode) {
+ agvLocDetl.setCount(agvLocDetl.getAnfme());
+ }
+ }
}
Map<String, Object> result = new HashMap<String, Object>();
@@ -377,7 +479,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 +510,9 @@
agvLocMastByContainerCode.setBarcode(barcode1);
agvLocMastService.updateById(agvLocMastByContainerCode);
}
+ // 淇濆瓨璋冩暣璁板綍
+ AdjDetl adjDetl = new AdjDetl();
+
return R.ok("缁存姢鎴愬姛");
}
@@ -481,6 +588,7 @@
@Transactional
@ManagerAuth(memo = "璋冩嫧鍗曚换鍔′笅鍙�")
@Synchronized
+ @Deprecated //涓嶇敤浜�
public R agvLocMove(@RequestBody HashMap<String, Object> params) {
String fl = String.valueOf(params.get("floor"));
short floor = (short) Integer.parseInt(fl.substring(0, 1));
@@ -497,6 +605,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 +616,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 +639,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")) {
@@ -543,14 +658,14 @@
String locNo = map.get("locNo");
String barcode = map.get("suppCode");
AgvWrkMast source_loc_no = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", locNo));
- if (!Cools.isEmpty(source_loc_no)) {
+ if (!Cools.isEmpty(source_loc_no) && source_loc_no.getWrkSts() < 204) {
throw new CoolException("褰撳墠搴撲綅宸茬敓鎴愪换鍔★紒");
}
AgvLocMast locMastS = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo).eq("loc_sts", "F"));
if (Cools.isEmpty(locMastS)) {
throw new CoolException("褰撳墠搴撲綅闈炲湪搴撶姸鎬侊紒搴撲綅鍙�=" + locNo);
}
- AgvWrkMast wrkMast = createWrkMast(ioType, 22L, locNo, "", barcode, now, getUserId(), 30, floor);
+ AgvWrkMast wrkMast = createWrkMast(ioType, 22L, locNo, "", barcode, now, getUserId(), Integer.parseInt(barcode.substring(0, 2)), floor);
// 鍚屾璋冩嫧鍗�
long flowId = snowflakeIdWorker.nextId();
List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
@@ -559,6 +674,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 +683,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 +716,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 +744,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");
@@ -628,7 +756,7 @@
if (Cools.isEmpty(locMastS)) {
throw new CoolException("褰撳墠搴撲綅闈炲湪搴撶姸鎬侊紒搴撲綅鍙�=" + locNo);
}
- AgvWrkMast wrkMast = createWrkMast(114, 22L, locNo, "", barcode, now, getUserId(), 30, 1);
+ AgvWrkMast wrkMast = createWrkMast(114, 22L, locNo, "", barcode, now, getUserId(), Integer.parseInt(barcode.substring(0,2)), 1);
// 鍚屾璋冩嫧鍗�
List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
for (AgvLocDetl agvLocDetl : agvLocDetls) {
@@ -647,10 +775,18 @@
// 鏇存柊璁㈠崟
// 鍏堟煡璇㈠簱璁㈠崟鏄庣粏 鎵�灞炵殑璁㈠崟
- 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 澶辫触锛�(鍗婃垚鍝佽皟鎷ㄥ崟浠诲姟)");
+ }
}
}
// 鏇存柊婧愬簱浣�
@@ -736,6 +872,15 @@
return R.ok();
}
+ @PostMapping("/hand/control/processed/v2")
+ @Transactional
+ @ManagerAuth(memo = "纭鍔犲伐瀹屾垚V2")
+ @Synchronized
+ public R processedV2(@RequestBody AgvMobileStartPakin param) {
+ agvMobileService.processedV2(param, getUserId());
+ return R.ok();
+ }
+
public static void main(String[] args) {
List<AgvLocDetl> agvLocDetls1 = new ArrayList<>();
--
Gitblit v1.9.1