From 75dc194ab072c039759e0801a4eec90c01414f64 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期日, 01 二月 2026 17:21:19 +0800
Subject: [PATCH] no message
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 265 ++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 212 insertions(+), 53 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index d998706..69711a7 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -17,6 +17,7 @@
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.OrderInAndOutUtil;
+import com.zy.asrs.utils.Utils;
import com.zy.common.constant.HIKApiConstant;
import com.zy.common.constant.MesConstant;
import com.zy.common.entity.Parameter;
@@ -25,6 +26,7 @@
import com.zy.common.model.MesCombParam;
import com.zy.common.model.StartupDto;
import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
@@ -86,6 +88,9 @@
private ManLocDetlService manLocDetlService;
@Autowired
private ManLocDetlMapper manLocDetlMapper;
+
+ @Autowired
+ private SlaveProperties slaveProperties;
@Autowired
private AdjDetlService adjDetlService;
@@ -1316,6 +1321,7 @@
throw new CoolException("鏁版嵁閿欒锛氬崟鎹笉瀛樺湪锛侊紒");
}
List<OrderDetlPakin> detlPakins = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>()
+ .eq(!Cools.isEmpty(params.getThreeCode()), "three_code", params.getThreeCode())
.eq(!Cools.isEmpty(params.getMatnr()), "matnr", params.getMatnr())
.eq("order_id", orderPakin.getId()));
if (Objects.isNull(detlPakins) || detlPakins.isEmpty()) {
@@ -1760,53 +1766,44 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public void combInPub(CompleteParam param, Long userId) {
+ public R combInPub(CompleteParam param, Long userId) {
if (Objects.isNull(param.getBarcode())) {
throw new CoolException("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�");
}
- if (Objects.isNull(param.getStation())) {
+ if (Objects.isNull(param.getSourceStaNo())) {
throw new CoolException("绔欑偣涓嶈兘涓虹┖!!");
}
-// // TODO 淇敼缂撳瓨绔欑偣鐘舵�佸強鏁版嵁
-// Task task = taskService.selectOne(new EntityWrapper<Task>()
-// .eq("wrk_sts", 14L)
-// .eq("barcode", param.getCarBarcode()));
-// if (Objects.isNull(task)) {
-// throw new CoolException("鏁版嵁閿欒,浠诲姟涓嶅瓨鍦�!!");
-// }
-// List<TaskDetl> taskDetls = taskDetlService
-// .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
-// if (Objects.isNull(taskDetls) || taskDetls.isEmpty()) {
-// throw new CoolException("鏁版嵁閿欒,浠诲姟鏄庣粏涓嶅瓨鍦�!!");
-// }
+ if (Objects.isNull(param.getLocType1())) {
+ param.setLocType1((short) 1);
+ }
- BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
- .eq("dev_no", param.getStation()));
+
+ log.info("WCS浠诲姟鐢熸垚璇锋眰鍙傛暟锛�", JSONObject.toJSONString(param));
+
+
+ BasDevp station = basDevpService.selectOne(new EntityWrapper<BasDevp>()
+ .eq("dev_no", param.getSourceStaNo()));
if (Objects.isNull(station)) {
throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
}
- station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
- station.setBarcode("");
- if (!basStationService.updateById(station)) {
- throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐�!");
- }
- basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
-
-// // 浠诲姟瀹屾垚
-// task.setWrkSts(15L);
-//
-// if (!taskService.updateById(task)) {
-// throw new CoolException("AGV浠诲姟瀹屾垚澶辫触!!");
-// }
-
List<WaitPakin> waitPakins = waitPakinService
- .selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+ .selectList(new EntityWrapper<WaitPakin>()
+ .eq("io_status", "N")
+ .eq("zpallet", param.getBarcode()));
if (Objects.isNull(waitPakins) || waitPakins.isEmpty()) {
throw new CoolException("鏁版嵁閿欒,缁勬嫋妗e凡涓嶅瓨鍦�!!");
}
- generateCrnInTask(waitPakins, station, param.getLocType1(), userId);
+ WrkMast wrkMast = generateCrnInTask(waitPakins, station, param.getLocType1(), userId);
+
+ Map<String, Object> response = new HashMap<>();
+ response.put("taskNo", wrkMast.getWrkNo());
+ response.put("locNo", wrkMast.getLocNo());
+ response.put("taskPri", wrkMast.getIoPri());
+
+ return R.ok("浠诲姟鐢熸垚鎴愬姛").add(response);
+
}
/**
@@ -1946,18 +1943,18 @@
* @date 2025/12/9 13:54
*/
@Transactional(rollbackFor = Exception.class)
- public void generateCrnInTask(List<WaitPakin> waitPakins, BasStation station, Short locType, Long userId) {
+ public WrkMast generateCrnInTask(List<WaitPakin> waitPakins, BasDevp station, Short locType, Long userId) {
Date now = new Date();
- StationRela rela = stationRelaService.selectOne(new EntityWrapper<StationRela>()
- .eq("agv_sta", station.getDevNo())
- .orderAsc(Arrays.asList("crn_sta"))
- .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+// StationRela rela = stationRelaService.selectOne(new EntityWrapper<StationRela>()
+// .eq("agv_sta", station.getDevNo())
+// .orderAsc(Arrays.asList("crn_sta"))
+// .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+//
+// if (Objects.isNull(rela)) {
+// throw new CoolException("鏈粦瀹氫綔涓氱珯鐐�!!");
+// }
- if (Objects.isNull(rela)) {
- throw new CoolException("鏈粦瀹氫綔涓氱珯鐐�!!");
- }
-
- BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.parseInt(rela.getCrnSta()), true);
+ BasDevp sourceStaNo = basDevpService.checkSiteStatus(station.getDevNo(), true);
sourceStaNo.setLocType1(locType);
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
WaitPakin pakin = waitPakins.stream().findFirst().get();
@@ -1965,6 +1962,7 @@
WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", pakin.getZpallet()));
WrkMast wrkMast = new WrkMast();
+ String locNo;
if (!Objects.isNull(mast)) {
if (mast.getIoType().equals(TaskIOType.MERGE_OUT.type) || mast.getIoType().equals(TaskIOType.PICK_OUT.type) || mast.getIoType().equals(TaskIOType.CHECK_OUT.type)) {
int ioType = mast.getIoType() - 50;
@@ -1978,6 +1976,7 @@
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
+ locNo = mast.getLocNo();
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(mast.getWrkNo());
sourceStaNo.setModiTime(now);
@@ -1998,8 +1997,10 @@
} else {
throw new CoolException("鎵樼洏宸插瓨鍦ㄤ换鍔℃。锛侊紒");
}
+
} else {
StartupDto dto = commonService.getLocNo(1, sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
+
int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
wrkMast.setWrkNo(workNo);
@@ -2008,7 +2009,7 @@
wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
wrkMast.setCrnNo(dto.getCrnNo());
wrkMast.setSourceStaNo(dto.getSourceStaNo() + "");
- wrkMast.setStaNo(dto.getStaNo() + "");
+ wrkMast.setStaNo(!Objects.isNull(dto.getStaNo()) ? dto.getStaNo() + "" : null);
wrkMast.setLocNo(dto.getLocNo());
wrkMast.setIoPri(13D); // 浼樺厛绾�
wrkMast.setBarcode(pakin.getZpallet()); // 鎵樼洏鐮�
@@ -2027,6 +2028,7 @@
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
+ locNo = dto.getLocNo();
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(workNo);
sourceStaNo.setModiTime(now);
@@ -2060,16 +2062,18 @@
});
-// // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
-// Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
-// .eq("zpallet", pakin.getZpallet());
-// WaitPakin setParam = new WaitPakin();
-// setParam.setLocNo(dto.getLocNo());
-// setParam.setIoStatus("Y");
-// setParam.setModiTime(now);
-// if (!waitPakinService.update(setParam, wrapper)) {
-// throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
-// }
+ // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+ Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
+ .eq("zpallet", pakin.getZpallet());
+ WaitPakin setParam = new WaitPakin();
+ setParam.setLocNo(locNo);
+ setParam.setIoStatus("Y");
+ setParam.setModiTime(now);
+ if (!waitPakinService.update(setParam, wrapper)) {
+ throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+ }
+
+ return wrkMast;
}
/**
@@ -2581,6 +2585,161 @@
}
/**
+ * 绉诲簱浠诲姟鐢宠
+ *
+ * @param combParam
+ * @param userId
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R taskMove(CompleteParam combParam, long userId) {
+ if (Objects.isNull(combParam.getWorkNo())) {
+ return R.error("浠诲姟鍙蜂笉鑳戒负绌�");
+ }
+ if (Objects.isNull(combParam.getSourceLocNo())) {
+ return R.error("婧愬簱浣嶄笉鑳戒负绌猴紒锛�");
+ }
+ if (Objects.isNull(combParam.getLocNo())) {
+ return R.error("鐩爣搴撲綅涓嶈兘涓虹┖锛�");
+ }
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", combParam.getWorkNo()));
+ if (Objects.isNull(wrkMast)) {
+ return R.error("浠诲姟妗d笉瀛樺湪锛侊紒");
+ }
+ String body = JSON.toJSONString(combParam);
+ boolean success = false;
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(HIKApiConstant.AGV_IP)
+ .setPath(MesConstant.MOVE_LOC_TASK)
+ .setJson(body)
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ wrkMast.setWrkSts(12L);
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
+ }
+ success = true;
+ } else {
+ log.error("鍙戦�乤gv浠诲姟澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.WCS_URL + MesConstant.MOVE_LOC_TASK, body, response);
+ }
+ } catch (Exception e) {
+ log.error("鍙戦�乤gv浠诲姟寮傚父", e);
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍙戦�乤gv浠诲姟",
+ MesConstant.WCS_URL + MesConstant.MOVE_LOC_TASK,
+ null,
+ "127.0.0.1",
+ body,
+ response,
+ success);
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * 6.15WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅
+ * @param combParam
+ * @param l
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R changeLoc(CompleteParam combParam, long l) {
+ if (Objects.isNull(combParam)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛�");
+ }
+ if (Objects.isNull(combParam.getLocNo())) {
+ return R.error("搴撲綅鍙蜂笉鑳戒负绌�!!");
+ }
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", combParam.getLocNo()));
+ if (Objects.isNull(locMast)) {
+ return R.error("搴撲綅淇℃伅涓嶅瓨鍦ㄦ垨搴撲綅鐘舵�侀潪 F.鍦ㄥ簱 鐘舵��");
+ }
+
+ List<Integer> doubleLocs = slaveProperties.getDoubleLocs();
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .in("row1", doubleLocs)
+ .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type));
+ Map<String, Object> result = new HashMap<>();
+ LocMast selected = new LocMast();
+ for (LocMast loc : locMasts) {
+ LocMast temLoc = locMastService.selectById(loc.getLocNo());
+ if (Objects.isNull(temLoc)) {
+ throw new CoolException("鏁版嵁閿欒锛� 鍘熷簱浣嶄俊鎭笉瀛樺湪锛侊紒");
+ }
+ String shallowLoc = Utils.getShallowLoc(slaveProperties, temLoc.getLocNo());
+
+ LocMast locMast1 = locMastService.selectById(shallowLoc);
+ if (Objects.isNull(locMast1)) {
+ throw new CoolException("鏁版嵁閿欒锛� 鏂板簱浣嶄俊鎭笉瀛樺湪锛侊紒");
+ }
+ if (!locMast1.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ continue;
+ }
+ selected = loc;
+
+ break;
+ }
+
+ WrkMast moveTask = generateMoveTask(selected, locMast);
+ result.put("locNo", selected.getLocNo());
+ result.put("taskNo", moveTask.getWrkNo());
+
+ return R.ok().add(result);
+
+ }
+
+ /**
+ * 鐢熸垚绉诲簱浠诲姟
+ *
+ * @param result
+ * @param sourceLoc
+ * @return
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public WrkMast generateMoveTask(LocMast result, LocMast sourceLoc) {
+ WrkMast wrkMast = new WrkMast();
+ int workNo = commonService.getWorkNo(0);
+
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setLocNo(result.getLocNo());
+ wrkMast.setSourceLocNo(sourceLoc.getLocNo());
+ wrkMast.setWrkSts(11L);
+ wrkMast.setIoType(11);
+ wrkMast.setCrnNo(sourceLoc.getCrnNo());
+ wrkMast.setAppeTime(new Date());
+ wrkMast.setModiTime(new Date());
+ wrkMast.setIoPri(13D);
+ wrkMast.setWrkDate(new Date());
+
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
+ }
+
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc.getLocNo()));
+ locDetls.forEach(detl -> {
+ detl.setLocNo(result.getLocNo());
+ if (!locDetlService.updateById(detl)) {
+ throw new CoolException("鏄庣粏鏇存柊澶辫触锛侊紒");
+ }
+ });
+
+ return wrkMast;
+ }
+
+ /**
* 鎸変紭鍏堢骇鏌ユ壘鍙敤搴撲綅
* 椤哄簭锛氬叆搴撶紦瀛樺尯 -> SO鍖� -> EO鍖�
*/
--
Gitblit v1.9.1