From f3e116dd3bbdd132cd5cb49c99cbf9ba59f112d8 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期六, 31 一月 2026 08:40:47 +0800
Subject: [PATCH] no message
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 400 +++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 289 insertions(+), 111 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 72bb2ae..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;
@@ -605,9 +610,6 @@
if (Objects.isNull(container)) {
throw new CoolException("鏁版嵁閿欒锛氬鍣ㄧ爜涓嶅瓨鍦紒锛�");
}
- // if (param.getBarcode().length() != 8) {
- // throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode());
- // }
if (Objects.isNull(param.getType())) {
param.setType("0");
@@ -689,7 +691,10 @@
OrderDetlPakin detls = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
.eq("order_id", order.getId())
.eq("matnr", elem.getMatnr()));
-
+ if (Objects.isNull(elem.getBoxType1())) {
+ throw new CoolException("鏍煎眰缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+ detls.setBoxType1(elem.getBoxType1());
if (Objects.isNull(detls)) {
throw new CoolException("鏁版嵁閿欒锛氬崟鎹槑缁嗕笉瀛樺湪锛侊紒");
}
@@ -699,14 +704,14 @@
}
OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(),
elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
- elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
- DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(),
+ "1", elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
+ DetlDto detlDto = new DetlDto(order.getOrderNo(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(),
elem.getStandby2(), elem.getStandby3(),
elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme(),
elem.getThreeCode());
detlDto.setOrderId(order.getId());
detlDto.setOrderNo(order.getOrderNo());
- if (DetlDto.has(detlDtos, detlDto)) {
+ if (DetlDto.hasOrder(detlDtos, detlDto)) {
DetlDto one = DetlDto.findDto(detlDtos, detlDto);
assert one != null;
one.setAnfme(one.getAnfme() + detlDto.getAnfme());
@@ -762,6 +767,7 @@
waitPakin.setThreeCode(detlDto.getThreeCode());
waitPakin.setSuppCode(detlDto.getStandby1());
waitPakin.setStandby1(detlDto.getStandby1());
+ waitPakin.setBoxType1(detlDto.getBoxType1());
waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
waitPakin.setStatus("Y"); // 鐘舵��
@@ -991,7 +997,7 @@
try {
response = new HttpHandler.Builder()
.setUri(MesConstant.URL)
- .setPath(MesConstant.PACK_DOWN_URL)
+ .setPath(MesConstant.IN_DISPATCH_RESULT)
.setJson(JSON.toJSONString(mesCombParam))
.build()
.doPost();
@@ -999,11 +1005,11 @@
if (jsonObject.getInteger("code").equals(200)) {
success = true;
} else if (jsonObject.getInteger("code").equals(500)) {
- log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PACK_DOWN_URL,
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
JSON.toJSONString(mesCombParam), response);
throw new CoolException(jsonObject.getString("msg"));
} else {
- log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PACK_DOWN_URL,
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
JSON.toJSONString(mesCombParam), response);
throw new CoolException("涓婃姤mes绯荤粺澶辫触");
}
@@ -1015,7 +1021,7 @@
// 淇濆瓨鎺ュ彛鏃ュ織
apiLogService.save(
"鎵撳寘涓嬬嚎甯墭涓婃姤",
- MesConstant.URL + MesConstant.PACK_DOWN_URL,
+ MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
null,
"127.0.0.1",
JSON.toJSONString(mesCombParam),
@@ -1066,7 +1072,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)) {
@@ -1179,7 +1185,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());
// 鑾峰彇璺緞
@@ -1315,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()) {
@@ -1741,7 +1748,7 @@
throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪锛侊紒");
}
station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
- station.setBarcode(null);
+ station.setBarcode("");
if (!basStationService.updateById(station)) {
throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
}
@@ -1759,61 +1766,53 @@
*/
@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(null);
- 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);
+
}
/**
* 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)
@@ -1866,7 +1865,6 @@
if (!basStationDetlService.insert(basStationDetl)) {
throw new CoolException("鎻掑叆鏄庣粏澶辫触");
}
-
} else {
BigDecimal anfme = new BigDecimal(basStationDetl.getAnfme().toString()).add(combMat.getWorkQty());
basStationDetl.setAnfme(anfme.doubleValue());
@@ -1925,6 +1923,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("鏈壘鍒颁换鍔℃槑缁�");
@@ -1941,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();
@@ -1960,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;
@@ -1973,6 +1976,7 @@
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
+ locNo = mast.getLocNo();
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(mast.getWrkNo());
sourceStaNo.setModiTime(now);
@@ -1993,8 +1997,10 @@
} else {
throw new CoolException("鎵樼洏宸插瓨鍦ㄤ换鍔℃。锛侊紒");
}
+
} else {
StartupDto dto = commonService.getLocNo(1, sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
+
int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
wrkMast.setWrkNo(workNo);
@@ -2003,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()); // 鎵樼洏鐮�
@@ -2022,6 +2028,7 @@
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
+ locNo = dto.getLocNo();
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(workNo);
sourceStaNo.setModiTime(now);
@@ -2055,17 +2062,18 @@
});
+ // 鏇存柊鍏ュ簱閫氱煡妗� 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;
}
/**
@@ -2195,8 +2203,14 @@
.eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type)
.orderAsc(Arrays.asList("row1", "bay1", "lev1"))
.last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+
+ if (Objects.isNull(locMast)) {
+ throw new CoolException("鏈煡璇㈠埌鍙敤鐨勭┖鏉夸俊鎭紒锛�");
+ }
+
CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(locDetls);
locMasts.add(crnTaskDetlDTO);
+
// 绌烘澘鍑哄簱
generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId, station);
}
@@ -2222,7 +2236,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);
@@ -2254,14 +2268,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);
@@ -2304,7 +2317,7 @@
Task task = new Task();
task.setWrkNo(workNo)
.setIoTime(new Date())
- .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
.setIoType(loc.getLocSts().equals("D") ? 110 : 101) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
.setTaskType("agv")
.setIoPri(10D)
@@ -2381,11 +2394,6 @@
*/
@Transactional(rollbackFor = Exception.class)
public void generateAgvTask(String type, LocCache loc, String orgSite, String barcode, Long userId) {
- List<WaitPakin> pakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
- if (Objects.isNull(pakins) || pakins.isEmpty()) {
- throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�");
- }
-
List<Task> tasks = taskService.selectList(new EntityWrapper<Task>().eq("barcode", barcode));
if (!tasks.isEmpty()) {
throw new CoolException("鎵樼洏宸插湪浠诲姟鎵ц涓�..");
@@ -2396,7 +2404,7 @@
Task task = new Task();
task.setWrkNo(workNo)
.setIoTime(new Date())
- .setWrkSts(1L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ .setWrkSts(201L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
.setIoType(1) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
.setTaskType("agv")
.setIoPri(10D)
@@ -2416,32 +2424,39 @@
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
- for (WaitPakin pakin : pakins) {
- TaskDetl wrkDetl = new TaskDetl();
- BeanUtils.copyProperties(pakin, wrkDetl);
- wrkDetl.setId(null).setWrkNo(workNo)
- .setIoTime(new Date())
- .setOrderNo(pakin.getOrderNo())
- .setAnfme(pakin.getAnfme())
- .setZpallet(pakin.getZpallet())
- .setBatch(pakin.getBatch())
- .setMatnr(pakin.getMatnr())
- .setMaktx(pakin.getMaktx())
- .setAppeUser(userId)
- .setUnit(pakin.getUnit())
- .setModel(pakin.getModel())
- .setAppeTime(new Date())
- .setModiUser(userId);
- if (!taskDetlService.insert(wrkDetl)) {
- throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ if (!type.equals("agv_back")) {
+ List<WaitPakin> pakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
+ if (Objects.isNull(pakins) || pakins.isEmpty()) {
+ throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�");
}
- }
+ for (WaitPakin pakin : pakins) {
+ TaskDetl wrkDetl = new TaskDetl();
+ BeanUtils.copyProperties(pakin, wrkDetl);
+ wrkDetl.setId(null).setWrkNo(workNo)
+ .setIoTime(new Date())
+ .setOrderNo(pakin.getOrderNo())
+ .setAnfme(pakin.getAnfme())
+ .setZpallet(pakin.getZpallet())
+ .setBatch(pakin.getBatch())
+ .setMatnr(pakin.getMatnr())
+ .setMaktx(pakin.getMaktx())
+ .setAppeUser(userId)
+ .setUnit(pakin.getUnit())
+ .setModel(pakin.getModel())
+ .setAppeTime(new Date())
+ .setModiUser(userId);
+ if (!taskDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
- for (WaitPakin pakin : pakins) {
- pakin.setIoStatus("Y");
- if (!waitPakinService.updateById(pakin)) {
- throw new CoolException("鏇存柊缁勬墭淇℃伅澶辫触");
+ }
+
+ for (WaitPakin pakin : pakins) {
+ pakin.setIoStatus("Y");
+ if (!waitPakinService.updateById(pakin)) {
+ throw new CoolException("鏇存柊缁勬墭淇℃伅澶辫触");
+ }
}
}
@@ -2463,9 +2478,9 @@
throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
}
- if (station.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ if (station.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type) || station.getLocSts().equals(LocStsType.LOC_STS_TYPE_D.type)) {
station.setLocSts("R"); // S.鍏ュ簱棰勭害
-// station.setBarcode(barcode);
+ station.setBarcode(barcode);
station.setModiTime(new Date());
station.setModiUser(userId);
if (!basStationService.updateById(station)) {
@@ -2531,11 +2546,12 @@
}
/**
- * 鍛煎彨AGV杩斿洖
- * @author Ryan
- * @date 2025/9/24
+ * 鍛煎彨AGV绌哄彴杞﹁繑鍥�
+ *
* @param callAgvBackParam
* @return com.core.common.R
+ * @author Ryan
+ * @date 2025/9/24
*/
@Override
@Transactional(rollbackFor = Exception.class)
@@ -2546,13 +2562,20 @@
// 鎸夊綋鍓嶆煡鎵惧簱浣嶉『搴忥紝鏌ュ埌涓�涓悗锛屼笉鍐嶅線涓嬫煡璇�
LocCache locCache = findPriorityLocCache();
-
+
if (Objects.isNull(locCache)) {
return R.error("鏈煡璇㈠埌鍙敤搴撲綅");
}
-
+
+ // 淇敼鐩爣绔欑偣淇℃伅
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", callAgvBackParam.getOrgSite()));
+ if (Objects.isNull(station)) {
+ throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
+ }
+
try {
- generateAgvTask("agv", locCache, callAgvBackParam.getOrgSite(), callAgvBackParam.getBarcode(), userId);
+ //绌哄彴杞﹀洖搴�
+ generateAgvTask("agv_back", locCache, callAgvBackParam.getOrgSite(), station.getBarcode(), userId);
} catch (Exception e) {
e.printStackTrace();
return R.error(e.getMessage());
@@ -2562,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