From 1e71bc58ffd44e9bfe2f15f0d227a2abf38caa48 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期日, 01 二月 2026 17:22:44 +0800
Subject: [PATCH] no message
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 423 ++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 311 insertions(+), 112 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 e32396e..2943288 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;
@@ -584,12 +589,13 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void comb(CombParam param, Long userId) {
- if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
+// if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
+// throw new CoolException(BaseRes.PARAM);
+// }
+ if (Objects.isNull(param.getBarcode())) {
throw new CoolException(BaseRes.PARAM);
}
- if (param.getCombMats().size() < 1) {
- throw new CoolException("璇锋彁鍙栦竴涓晢鍝侊紝鎴栬�呭埛鏂伴噸鏂扮粍鎵橈紒");
- }
+
// 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())
.eq("io_status", "N")) > 0) {
@@ -621,51 +627,68 @@
Date now = new Date();
// 鏃犲崟缁勬墭
if (Cools.isEmpty(param.getOrderNo())) {
- // 鐢熸垚鍏ュ簱閫氱煡妗�
- List<DetlDto> detlDtos = new ArrayList<>();
- param.getCombMats().forEach(elem -> {
- DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(),
- elem.getStandby2(), elem.getStandby3(),
- elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme(),
- elem.getThreeCode());
- if (DetlDto.has(detlDtos, detlDto)) {
- DetlDto one = DetlDto.findDto(detlDtos, detlDto);
- assert one != null;
- one.setAnfme(one.getAnfme() + detlDto.getAnfme());
- } else {
- detlDtos.add(detlDto);
- }
- });
-
- for (DetlDto detlDto : detlDtos) {
- Mat mat = matService.selectByMatnr(detlDto.getMatnr());
- if (Cools.isEmpty(mat)) {
- throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
- }
- if (mat.getUpQty().compareTo(detlDto.getAnfme()) < 0) {
- throw new CoolException("鐗╂枡锛�" + detlDto.getMatnr() + "鍗曟鏈�澶х粍鎵樹笂闄愪负锛�" + mat.getUpQty());
- }
+ if (param.getPakinType().equals("3")) {
WaitPakin waitPakin = new WaitPakin();
- BeanUtils.copyProperties(mat, waitPakin);
- waitPakin.setBatch(detlDto.getBatch());
waitPakin.setZpallet(param.getBarcode());
waitPakin.setIoStatus("N");
- waitPakin.setAnfme(detlDto.getAnfme());
- waitPakin.setThreeCode(detlDto.getThreeCode());
waitPakin.setStatus("Y");
- waitPakin.setSuppCode(detlDto.getStandby1());
- waitPakin.setStandby1(detlDto.getStandby1());
- waitPakin.setStandby2(detlDto.getStandby2());
- waitPakin.setStandby3(detlDto.getStandby3());
- waitPakin.setBoxType1(detlDto.getBoxType1());
- waitPakin.setBoxType2(detlDto.getBoxType2());
- waitPakin.setBoxType3(detlDto.getBoxType3());
waitPakin.setAppeUser(userId);
waitPakin.setAppeTime(now);
waitPakin.setModiUser(userId);
waitPakin.setModiTime(now);
if (!waitPakinService.insert(waitPakin)) {
throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ } else {
+ if (param.getCombMats().size() < 1) {
+ throw new CoolException("璇锋彁鍙栦竴涓晢鍝侊紝鎴栬�呭埛鏂伴噸鏂扮粍鎵橈紒");
+ }
+ // 鐢熸垚鍏ュ簱閫氱煡妗�
+ List<DetlDto> detlDtos = new ArrayList<>();
+ param.getCombMats().forEach(elem -> {
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(),
+ elem.getStandby2(), elem.getStandby3(),
+ elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme(),
+ elem.getThreeCode());
+ if (DetlDto.has(detlDtos, detlDto)) {
+ DetlDto one = DetlDto.findDto(detlDtos, detlDto);
+ assert one != null;
+ one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+ } else {
+ detlDtos.add(detlDto);
+ }
+ });
+
+ for (DetlDto detlDto : detlDtos) {
+ Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+ }
+ if (mat.getUpQty().compareTo(detlDto.getAnfme()) < 0) {
+ throw new CoolException("鐗╂枡锛�" + detlDto.getMatnr() + "鍗曟鏈�澶х粍鎵樹笂闄愪负锛�" + mat.getUpQty());
+ }
+ WaitPakin waitPakin = new WaitPakin();
+ BeanUtils.copyProperties(mat, waitPakin);
+ waitPakin.setBatch(detlDto.getBatch());
+ waitPakin.setZpallet(param.getBarcode());
+ waitPakin.setIoStatus("N");
+ waitPakin.setAnfme(detlDto.getAnfme());
+ waitPakin.setThreeCode(detlDto.getThreeCode());
+ waitPakin.setStatus("Y");
+ waitPakin.setSuppCode(detlDto.getStandby1());
+ waitPakin.setStandby1(detlDto.getStandby1());
+ waitPakin.setStandby2(detlDto.getStandby2());
+ waitPakin.setStandby3(detlDto.getStandby3());
+ waitPakin.setBoxType1(detlDto.getBoxType1());
+ waitPakin.setBoxType2(detlDto.getBoxType2());
+ waitPakin.setBoxType3(detlDto.getBoxType3());
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ if (!waitPakinService.insert(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
}
}
// 鍏宠仈缁勬墭
@@ -1067,7 +1090,7 @@
// }
OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), detlDto.getMatnr(), detlDto.getBatch(),
detlDto.getBrand(), detlDto.getStandby1(), detlDto.getStandby2(), detlDto.getStandby3(),
- detlDto.getBoxType1(), detlDto.getBoxType2(), detlDto.getBoxType3(), detlDto.getAnfme());
+ "1", detlDto.getBoxType2(), detlDto.getBoxType3(), detlDto.getAnfme());
// 淇濆瓨鍏ュ簱閫氱煡妗�
Mat mat = matService.selectByMatnr(detlDto.getMatnr());
if (Cools.isEmpty(mat)) {
@@ -1180,7 +1203,7 @@
@Override
@Transactional
public void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl,
- Double curOutQty, Integer ioType, Long userId, Date now) {
+ Double curOutQty, Integer ioType, Long userId, Date now) {
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectById(locDetl.getLocNo());
// 鑾峰彇璺緞
@@ -1316,6 +1339,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,61 +1784,64 @@
*/
@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()));
+ BasContainer container = basContainerService.selectOne(new EntityWrapper<BasContainer>().eq("barcode", param.getBarcode()));
+ if (Objects.isNull(container)) {
+ throw new CoolException("瀹瑰櫒缂栫爜鏈淮鎶わ紝璇风淮鎶ゅ悗鍐嶆搷浣滐紒锛�");
+ }
+
+ Integer whsType = 1;
+ //鐢ㄤ簬鍒ゆ柇鏂欑鎵樼洏锛屾枡绠憋紝绗兼
+ if (container.getType().equals(ContainerType.CONTAINER_TYPE_SALVER.type)) {
+ whsType = 3;
+ } else if (container.getType().equals(ContainerType.CONTAINER_TYPE_CAGE.type)) {
+ whsType = 2;
+ }
+
+ 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,whsType, 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);
+
}
/**
* SO/EO 鍖虹粍鎵�
- * @author Ryan
- * @date 2025/12/18 15:19
+ *
* @param params
* @return com.core.common.R
+ * @author Ryan
+ * @date 2025/12/18 15:19
*/
@Override
@Transactional(rollbackFor = Exception.class)
@@ -1867,7 +1894,6 @@
if (!basStationDetlService.insert(basStationDetl)) {
throw new CoolException("鎻掑叆鏄庣粏澶辫触");
}
-
} else {
BigDecimal anfme = new BigDecimal(basStationDetl.getAnfme().toString()).add(combMat.getWorkQty());
basStationDetl.setAnfme(anfme.doubleValue());
@@ -1926,6 +1952,10 @@
throw new CoolException("浜虹墿绫诲瀷閿欒");
}
+ wrkDetlService.selectList(new EntityWrapper<WrkDetl>()
+ .eq(!Objects.isNull(params.getMatnr()), "matnr", params.getMatnr())
+ .eq("wrk_no", wrkMast.getWrkNo()));
+
List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
if (Cools.isEmpty(wrkDetls)) {
throw new CoolException("鏈壘鍒颁换鍔℃槑缁�");
@@ -1937,23 +1967,24 @@
/**
* 鐢熸垚鍫嗗灈鏈哄叆搴撲换鍔�
*
+ * @param whsType
* @param station
* @author Ryan
* @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, Integer whsType, 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();
@@ -1961,6 +1992,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;
@@ -1974,6 +2006,7 @@
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
+ locNo = mast.getLocNo();
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(mast.getWrkNo());
sourceStaNo.setModiTime(now);
@@ -1994,8 +2027,10 @@
} else {
throw new CoolException("鎵樼洏宸插瓨鍦ㄤ换鍔℃。锛侊紒");
}
+
} else {
- StartupDto dto = commonService.getLocNo(1, sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
+ StartupDto dto = commonService.getLocNo(1, sourceStaNo.getDevNo(), whsType, findLocNoAttributeVo, locTypeDto);
+
int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
wrkMast.setWrkNo(workNo);
@@ -2004,7 +2039,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()); // 鎵樼洏鐮�
@@ -2023,6 +2058,7 @@
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
+ locNo = dto.getLocNo();
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(workNo);
sourceStaNo.setModiTime(now);
@@ -2044,29 +2080,37 @@
// 鐢熸垚宸ヤ綔妗f槑缁�
waitPakins.forEach(waitPakin -> {
- WrkDetl wrkDetl = new WrkDetl();
- wrkDetl.sync(waitPakin);
- wrkDetl.setWrkNo(wrkMast.getWrkNo());
- wrkDetl.setIoTime(wrkMast.getIoTime());
- wrkDetl.setAppeTime(now);
- wrkDetl.setModiTime(now);
- if (!wrkDetlService.insert(wrkDetl)) {
- throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ if (!Objects.isNull(waitPakin.getMatnr())) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(waitPakin);
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setIoTime(wrkMast.getIoTime());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ } else {
+ wrkMast.setWrkSts(1L);
+ wrkMast.setIoType(10);
+
+ wrkMastService.updateById(wrkMast);
}
});
+ // 鏇存柊鍏ュ簱閫氱煡妗� 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け璐�");
+ }
-// // 鏇存柊鍏ュ簱閫氱煡妗� 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け璐�");
-// }
+ return wrkMast;
}
/**
@@ -2229,7 +2273,7 @@
WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locMast.getLocNo()));
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
- if (Cools.isEmpty(wrkMast1)){
+ if (Cools.isEmpty(wrkMast1)) {
Integer outSta = devp.getDevNo();
// 鑾峰彇璺緞
StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
@@ -2261,14 +2305,13 @@
if (!wrkMastService.insert(wrkMast)) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + locMast.getLocNo());
}
- }else {
+ } else {
workNo = wrkMast1.getWrkNo();
}
// 鐢熸垚宸ヤ綔妗f槑缁�
for (LocDetl detlDto : crnTaskDetlDTO.getLocDetlList()) {
WrkDetl wrkDetl = new WrkDetl();
BeanUtils.copyProperties(detlDto, wrkDetl);
- wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
wrkDetl.setWrkNo(workNo);
wrkDetl.setIoTime(now);
wrkDetl.setZpallet(null);
@@ -2541,10 +2584,11 @@
/**
* 鍛煎彨AGV绌哄彴杞﹁繑鍥�
- * @author Ryan
- * @date 2025/9/24
+ *
* @param callAgvBackParam
* @return com.core.common.R
+ * @author Ryan
+ * @date 2025/9/24
*/
@Override
@Transactional(rollbackFor = Exception.class)
@@ -2555,7 +2599,7 @@
// 鎸夊綋鍓嶆煡鎵惧簱浣嶉『搴忥紝鏌ュ埌涓�涓悗锛屼笉鍐嶅線涓嬫煡璇�
LocCache locCache = findPriorityLocCache();
-
+
if (Objects.isNull(locCache)) {
return R.error("鏈煡璇㈠埌鍙敤搴撲綅");
}
@@ -2578,6 +2622,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