From 45b95bf88ab48e4b4db7ff9205e9afa2b83e8737 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期五, 03 四月 2026 19:29:09 +0800
Subject: [PATCH] no message
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 884 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 753 insertions(+), 131 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 5a20ba6..78c07c3 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.*;
import com.core.exception.CoolException;
+import com.zy.api.enums.MatLocType;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.*;
@@ -21,10 +22,7 @@
import com.zy.common.constant.HIKApiConstant;
import com.zy.common.constant.MesConstant;
import com.zy.common.entity.Parameter;
-import com.zy.common.model.DetlDto;
-import com.zy.common.model.LocTypeDto;
-import com.zy.common.model.MesCombParam;
-import com.zy.common.model.StartupDto;
+import com.zy.common.model.*;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
@@ -43,6 +41,8 @@
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -1316,29 +1316,66 @@
if (Objects.isNull(params.getOrgSite())) {
throw new CoolException("婧愮珯鐐逛笉鑳戒负绌猴紒锛�");
}
- BasAreas basAreas = basAreasService
- .selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_IN_CACHE.type));
- LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>()
- .eq("area_id", basAreas.getId())
- .eq("frozen", 0)
- .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
- .orderAsc(Arrays.asList("loc_no"))
- .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
- if (Objects.isNull(locCache)) {
- throw new CoolException("璇锋鏌ョ洰鏍囧簱浣嶆槸鍚﹂棽缃腑锛侊紒");
- }
+ if (!Objects.isNull(params.getTaskType()) && params.getTaskType().equals("XM1")) {
+ String taskType = params.getTaskType();
+ generateXAgvTask(params.getOrgSite(), params.getTarSite(), userId, taskType);
+ } else {
+ String taskType = "M2";
+ if (!params.getIsNewIn().isEmpty()) {
+ taskType = "M1";
+ int cacheCount = locCacheService.selectCount(new EntityWrapper<LocCache>().eq("barcode", params.getBarcode()));
+ if (cacheCount > 0) {
+ throw new CoolException("鍙拌溅宸插叆搴擄紝涓嶈兘鍕鹃�夋柊鍙拌溅锛侊紒");
+ }
+ }
- String taskType = "M2";
- if (!params.getIsNewIn().isEmpty()) {
- taskType = "M1";
- }
- try {
- generateAgvTask("agv", locCache, params.getOrgSite(), params.getBarcode(), userId, taskType);
- } catch (Exception e) {
- throw new CoolException(e.getMessage());
- }
+ BasAreas basAreas = basAreasService
+ .selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_IN_CACHE.type));
+ LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>()
+ .eq("area_id", basAreas.getId())
+ .eq("frozen", 0)
+ .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+ .orderAsc(Arrays.asList("loc_no"))
+ .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+ if (Objects.isNull(locCache)) {
+ throw new CoolException("璇锋鏌ョ洰鏍囧簱浣嶆槸鍚﹂棽缃腑锛侊紒");
+ }
+ try {
+ generateAgvTask("agv", locCache, params.getOrgSite(), params.getBarcode(), userId, taskType);
+ } catch (Exception e) {
+ throw new CoolException(e.getMessage());
+ }
+ }
return R.ok();
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ public void generateXAgvTask(String orgSite, String tarSite, Long userId, String taskType) {
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(4);
+ // 淇濆瓨宸ヤ綔妗�
+ Task task = new Task();
+ task.setWrkNo(workNo)
+ .setIoTime(new Date())
+ .setWrkSts(201L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ .setIoType(1) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+ .setTaskType("agv")
+ .setIoPri(10D)
+ .setIsNewIn(taskType)
+ .setFullPlt("Y") // 婊℃澘锛歒
+ .setPicking("N") // 鎷f枡
+ .setExitMk("N")// 閫�鍑�
+ .setSourceStaNo(orgSite)
+ .setStaNo(tarSite)
+ .setLinkMis("N")
+ .setAppeUser(userId)
+ .setAppeTime(new Date())
+ .setModiUser(userId)
+ .setModiTime(new Date());
+ if (!taskService.insert(task)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
}
/**
@@ -1432,9 +1469,19 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public R callEmptyCar(AgvCallParams params, Long userId) {
-
BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("name", params.getOrgSite()));
+
+ BasStation station1 = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", params.getTarSite()));
+ if (Objects.isNull(station1) || Objects.isNull(basAreas)) {
+ return R.error("鐩爣绔欑偣鎴栧簱鍖轰笉瀛樺湪锛岃鑱旂郴绠$悊锛侊紒");
+ }
+
+ List<String> list = Arrays.asList("SSX01", "SSX02", "SSX03", "SSX04", "SSX05", "SSX06", "SSX07", "SSX08", "SSX09", "SSX10");
+ if (Long.parseLong(station1.getAreaId()) != basAreas.getId() && !list.contains(params.getTarSite())) {
+ return R.error("璧峰鍖哄拰鐩爣绔欑偣涓嶅湪鍚屼竴涓簱鍖猴紝璇烽噸鏂版搷浣滐紒锛�");
+ }
List<LocCache> locCaches = locCacheService.selectList(new EntityWrapper<LocCache>()
.eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type)
@@ -1451,20 +1498,6 @@
}
generateCacheOutTask(station, locCaches.get(0), userId);
- // HIKApiDTO hikApiDTO =new HIKApiDTO()
- // .setOrg(locCaches.get(0).getLocNo())
- // .setOrgType("05")
- // .setTar(params.getTarSite())
- // .setTarType("05")
- // .setTaskType("GT5")
- // .setPriority("1")
- // .setCtnrType("2")
- // ;
- // HIKResultDTO hikResultDTO = sendAgvTask(hikApiDTO,
- // HIKApiConstant.AGV_CALL_IN_PATH);
- // if (!hikResultDTO.isSuccess()){
- // return R.error(hikResultDTO.getMessage());
- // }
return R.ok();
}
@@ -1477,6 +1510,9 @@
}
BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("name", params.getTarSite()));
+ if (Objects.isNull(basAreas)) {
+ return R.error("绔欑偣涓嶅瓨鍦紝璇锋鏌ョ珯鐐规槸鍚﹁緭鍏ユ纭紒锛�");
+ }
List<LocCache> locCaches = locCacheService.selectList(new EntityWrapper<LocCache>()
.in("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
@@ -1498,18 +1534,12 @@
@Transactional(rollbackFor = Exception.class)
public void generateSOEOInTask(String type, LocCache loc, String orgSite, String barcode, Long userId) {
- List<BasStationDetl> basStationDetls = basStationDetlService
- .selectList(new EntityWrapper<BasStationDetl>().eq("dev_no", orgSite));
- if (Objects.isNull(basStationDetls) || basStationDetls.isEmpty()) {
- throw new CoolException("绔欑偣淇℃伅涓嶅瓨鍦紒锛�");
- }
-
List<Task> tasks = taskService.selectList(new EntityWrapper<Task>().eq("barcode", barcode));
if (!tasks.isEmpty()) {
throw new CoolException("鎵樼洏宸插湪浠诲姟鎵ц涓�..");
}
// 鑾峰彇宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+ int workNo = commonService.getWorkNo(4);
// 淇濆瓨宸ヤ綔妗�
Task task = new Task();
task.setWrkNo(workNo)
@@ -1534,7 +1564,9 @@
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
- for (BasStationDetl basStationDetl : basStationDetls) {
+ List<BasStationDetl> basStationDetls = basStationDetlService
+ .selectList(new EntityWrapper<BasStationDetl>().eq("dev_no", orgSite));
+ basStationDetls.forEach(basStationDetl -> {
TaskDetl wrkDetl = new TaskDetl();
BeanUtils.copyProperties(basStationDetl, wrkDetl);
wrkDetl.setWrkNo(workNo)
@@ -1556,36 +1588,32 @@
if (!taskDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
- }
+ });
// 淇敼鐩爣搴撲綅鐘舵��
if (loc.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
loc.setLocSts(LocStsType.LOC_STS_TYPE_S.type); // S.鍏ュ簱棰勭害
loc.setModiTime(new Date());
loc.setModiUser(userId);
- if (!locCacheService.updateById(loc)) {
+ if (!locCacheService.update(loc, new EntityWrapper<LocCache>().eq("loc_no", loc.getLocNo()))) {
throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
}
} else {
throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
}
- // 淇敼鐩爣绔欑偣淇℃伅
+ // 淇敼鍘熺珯鐐逛俊鎭�
BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", orgSite));
if (Objects.isNull(station)) {
throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
}
- if (station.getLocSts().equals(LocStsType.LOC_STS_TYPE_F.type)) {
- station.setLocSts("R"); // S.鍏ュ簱棰勭害
- station.setBarcode(barcode);
- station.setModiTime(new Date());
- station.setModiUser(userId);
- if (!basStationService.updateById(station)) {
- throw new CoolException("鏇存柊鐩爣绔欑偣鐘舵�佸け璐�");
- }
- } else {
- throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + station.getLocSts());
+ station.setLocSts("R"); // S.鍏ュ簱棰勭害
+ station.setBarcode(barcode);
+ station.setModiTime(new Date());
+ station.setModiUser(userId);
+ if (!basStationService.updateById(station)) {
+ throw new CoolException("鏇存柊鐩爣绔欑偣鐘舵�佸け璐�");
}
}
@@ -1639,7 +1667,7 @@
}
/**
- * 缂撳瓨鍖轰笂鏋剁粍鎵�
+ * 缂撳瓨鍖哄苟鏉夸笂鏋剁粍鎵�
*
* @param param
* @param userId
@@ -1655,30 +1683,33 @@
if (Objects.isNull(param.getCombMats()) || param.getCombMats().isEmpty()) {
throw new CoolException("缁勬墭鏄庣粏涓嶈兘涓虹┖锛侊紒");
}
+
WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
- .eq("wrk_sts", 14)
- .eq("io_type", 104)
+ .eq("wrk_sts", 14)
+ .eq("io_type", 104)
.eq("barcode", param.getBarcode()));
if (Objects.isNull(wrkMast)) {
- throw new CoolException("浠诲姟妗d俊鎭笉瀛樺湪锛侊紒");
+ throw new CoolException("浠诲姟妗d俊鎭笉瀛樺湪,璇锋鏌ユ墭鐩橈細" + param.getBarcode() + "浠诲姟妗f槸鍚﹀凡瀹屾垚鍑哄簱 锛侊紒");
}
for (CombParam.CombMat combMat : param.getCombMats()) {
BasStationDetl stationDetl = basStationDetlService.selectOne(new EntityWrapper<BasStationDetl>()
.eq("zpallet", param.getCarBarcode())
- .eq("three_code", combMat.getThreeCode()));
+ .eq(!Objects.isNull(combMat.getMatnr()), "matnr", combMat.getMatnr())
+ .eq(!Objects.isNull(combMat.getThreeCode()), "three_code", combMat.getThreeCode()));
if (Objects.isNull(stationDetl)) {
throw new CoolException("鏄庣粏鍐呭涓嶅瓨鍦紒锛�");
}
WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>()
.eq("matnr", stationDetl.getMatnr())
.eq("wrk_no", wrkMast.getWrkNo())
- .eq("supp_code", combMat.getSuppCode()));
+ .eq("supp_code", stationDetl.getSuppCode()));
if (Objects.isNull(wrkDetl)) {
//TODO 鏂版彃鍏�
- Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", stationDetl.getMatnr())
- .eq("supp_code", combMat.getSuppCode()));
+ Mat mat = matService.selectOne(new EntityWrapper<Mat>()
+ .eq("matnr", stationDetl.getMatnr())
+ .eq("supp_code", combMat.getSuppCode()));
if (Objects.isNull(mat)) {
throw new CoolException("鐗╂枡鍩虹淇℃伅宸蹭笉瀛樺湪锛侊紒");
}
@@ -1686,22 +1717,63 @@
BeanUtils.copyProperties(stationDetl, detl);
detl.setAnfme(combMat.getAnfme());
detl.setBarcode(wrkMast.getBarcode());
- detl.setBoxType1(combMat.getBoxType1());
+ detl.setZpallet(param.getBarcode());
+ detl.setBoxType1(param.getBoxType1());
detl.setStandby1(combMat.getSuppCode());
+ detl.setThreeCode(combMat.getThreeCode());
+ detl.setAdjustQty(combMat.getAdjustQty());
+ detl.setSplusQty(combMat.getSplusQty());
detl.setWrkNo(wrkMast.getWrkNo());
if (!wrkDetlService.insert(detl)) {
throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒");
}
} else {
+ if (Objects.isNull(combMat.getAnfme())) {
+ throw new CoolException("鏁伴噺涓嶈兘涓虹┖锛侊紒");
+ }
double val = Math.round((combMat.getAnfme() + wrkDetl.getAnfme()) * 10000) / 10000.0;
- if (!wrkDetlService.updateAnfme(val, wrkMast.getWrkNo(), wrkDetl.getMatnr(),
- wrkDetl.getSuppCode())) {
+ WrkDetl detl = new WrkDetl();
+ detl.setOrderNo(stationDetl.getOrderNo());
+ detl.setBoxType1(param.getBoxType1());
+ detl.setZpallet(param.getBarcode());
+ detl.setBarcode(param.getBarcode());
+ detl.setThreeCode(combMat.getThreeCode());
+ detl.setStandby1(combMat.getSuppCode());
+ detl.setAdjustQty(combMat.getAdjustQty());
+ detl.setSplusQty(combMat.getSplusQty());
+ detl.setAnfme(val);
+ detl.setModiTime(new Date());
+ if (!wrkDetlService.update(detl, new EntityWrapper<WrkDetl>()
+ .eq("wrk_no", wrkMast.getWrkNo())
+ .eq("supp_code", stationDetl.getSuppCode())
+ .eq("matnr", stationDetl.getMatnr()))) {
throw new CoolException(wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�"
+ wrkDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
}
}
+ BasStationDetl stationDetl1 = basStationDetlService.selectOne(new EntityWrapper<BasStationDetl>()
+ .eq("zpallet", param.getCarBarcode())
+ .eq("three_code", combMat.getThreeCode()));
+
+ if (!Objects.isNull(stationDetl1)) {
+ Double v = Math.round((stationDetl1.getAnfme() - combMat.getAnfme()) * 10000) / 10000.0;
+ if (v.compareTo(0.0) == 0) {
+ if (!basStationDetlService.delete(new EntityWrapper<BasStationDetl>()
+ .eq("zpallet", param.getCarBarcode())
+ .eq("three_code", combMat.getThreeCode()))) {
+ throw new CoolException("绔欑偣淇℃伅鏇存柊澶辫触锛侊紒");
+ }
+ } else {
+ stationDetl1.setAnfme(v);
+ if (!basStationDetlService.update(stationDetl1, new EntityWrapper<BasStationDetl>()
+ .eq("zpallet", param.getCarBarcode())
+ .eq("three_code", combMat.getThreeCode()))) {
+ throw new CoolException("绔欑偣淇℃伅鏇存柊澶辫触锛侊紒");
+ }
+ }
+ }
}
}
@@ -1731,7 +1803,7 @@
throw new CoolException("瀹瑰櫒缂栫爜鏈淮鎶わ紝璇风淮鎶ゅ悗鍐嶆搷浣滐紒锛�");
}
- Integer whsType = 2;
+ Integer whsType = 1;
Short lcoType = 1;
//鐢ㄤ簬鍒ゆ柇鏂欑鎵樼洏锛屾枡绠憋紝绗兼
if (!container.getType().equals(ContainerType.CONTAINER_TYPE_BOX.type)) {
@@ -1811,6 +1883,12 @@
if (Cools.isEmpty(basStation)) {
throw new CoolException("璇疯緭鍏ユ纭殑绔欑偣鍙�");
}
+
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", params.getOrgBarcode()));
+ if (Objects.isNull(wrkMast)) {
+ throw new CoolException("鍑哄簱浠诲姟妗d俊鎭笉瀛樺湪锛侊紒");
+ }
+
for (CollectionPakinParams.CombMat combMat : params.getCombMats()) {
if (combMat.getWorkQty().compareTo(BigDecimal.ZERO) == 0) {
continue;
@@ -1826,8 +1904,23 @@
BasStationDetl basStationDetl = basStationDetlService.selectOne(new EntityWrapper<BasStationDetl>()
.eq("dev_no", basStation.getDevNo())
.eq("matnr", combMat.getMatnr())
- .eq("batch", combMat.getBatch())
+ .eq("order_no", combMat.getOrderNo())
+ .eq(!Cools.isEmpty(combMat.getBatch()), "batch", combMat.getBatch())
.eq(!Cools.isEmpty(combMat.getStandby1()), "standby1", combMat.getStandby1()));
+
+
+ Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>()
+ .eq("wrk_no", wrkMast.getWrkNo())
+ .eq("matnr", combMat.getMatnr())
+ .eq("supp_coode", combMat.getStandby1());
+//// .eq(!Objects.isNull(params.getBoxType1()), "boxType1", params.getBoxType1())
+//
+// if (!Objects.isNull(params.getBoxType1())) {
+// wrapper.eq("box_type1", params.getBoxType1());
+// }
+
+// WrkDetl wrkDetl = wrkDetlService.selectOne(wrapper);
+
if (Cools.isEmpty(basStationDetl)) {
basStationDetl = new BasStationDetl();
Mat mat = matService.selectByMatnr(combMat.getMatnr());
@@ -1839,12 +1932,18 @@
.setBarcode(params.getTarBarcode())
.setZpallet(params.getTarBarcode())
.setBatch(combMat.getBatch())
+ .setBoxType1(params.getBoxType1())
.setSuppCode(combMat.getStandby1())
.setStandby1(combMat.getStandby1())
.setAnfme(combMat.getWorkQty().doubleValue());
+
+// if (!Objects.isNull(wrkDetl) && !wrkDetl.getMatnr().equals(combMat.getMatnr())) {
+// throw new CoolException("璇锋鏌ラ殧灞傛槸鍚︾粦瀹氭纭紒锛�");
+// }
if (!basStationDetlService.insert(basStationDetl)) {
throw new CoolException("鎻掑叆鏄庣粏澶辫触");
}
+
} else {
BigDecimal anfme = new BigDecimal(basStationDetl.getAnfme().toString()).add(combMat.getWorkQty());
basStationDetl.setAnfme(anfme.doubleValue());
@@ -1868,7 +1967,7 @@
OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
.eq("order_id", orderPakin.getId())
.eq("matnr", combMat.getMatnr())
- .eq(!Cools.isEmpty(combMat.getBatch()),"batch", combMat.getBatch())
+ .eq(!Cools.isEmpty(combMat.getBatch()), "batch", combMat.getBatch())
.eq(!Cools.isEmpty(combMat.getStandby1()), "supp_code", combMat.getStandby1()));
if (Cools.isEmpty(orderDetlPakin)) {
throw new CoolException("妫�绱㈠崟鎹槑缁嗘暟鎹け璐�");
@@ -1892,7 +1991,6 @@
@Override
public R collectionPakinView(CollectionPakinParams params) {
-
WrkMast wrkMast = wrkMastService.selectByBarcode(params.getOrgBarcode());
if (Cools.isEmpty(wrkMast)) {
throw new CoolException("鏈壘鍒颁换鍔�");
@@ -1900,14 +1998,15 @@
if (wrkMast.getIoType().equals(TaskIOType.ALL_OUT.type)
&& wrkMast.getIoType().equals(TaskIOType.PICK_OUT.type)) {
- throw new CoolException("浜虹墿绫诲瀷閿欒");
+ throw new CoolException("浠诲姟绫诲瀷閿欒");
}
- wrkDetlService.selectList(new EntityWrapper<WrkDetl>()
- .eq(!Objects.isNull(params.getMatnr()), "matnr", params.getMatnr())
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>()
+ .like(!Objects.isNull(params.getMatnr()), "matnr", params.getMatnr())
+ .eq(!Objects.isNull(params.getBoxType1()), "box_type1", params.getBoxType1())
.eq("wrk_no", wrkMast.getWrkNo()));
- List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+// List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
if (Cools.isEmpty(wrkDetls)) {
throw new CoolException("鏈壘鍒颁换鍔℃槑缁�");
}
@@ -2146,7 +2245,16 @@
AtomicReference<Double> totalOut = new AtomicReference<>(0.0);
listMap.forEach((matnr, detls) -> {
Map<String, List<LocDetl>> supIds = detls.stream().collect(Collectors.groupingBy(LocDetl::getStandby1));
- supIds.forEach((supId, sups) -> {
+ for (String supId : supIds.keySet()) {
+ List<LocDetl> sups = supIds.get(supId);
+// }
+// supIds.forEach((supId, sups) -> {
+ Mat mats = matService.selectOne(new EntityWrapper<Mat>()
+ .eq("supp_code", supId)
+ .eq("matnr", matnr));
+ if (Objects.isNull(mats)) {
+ throw new CoolException("鐗╂枡涓嶅瓨鍦紒锛�");
+ }
// 鏍规嵁supId(渚涘簲鍟�)鍒嗙被锛屽緱鍒伴渶瑕佸瓨鏀剧殑鎬荤┖搴撳瓨鏁伴噺
Double sum = sups.stream().mapToDouble(LocDetl::getAnfme).sum();
AtomicReference<Double> itemed = new AtomicReference<>(0.0);
@@ -2174,12 +2282,6 @@
if (container.getMixMax() > sets.size()) {
//浣欎笅鍙贩鏀剧绫�
long suplus = Math.round((container.getMixMax() - sets.size()) * 10000) / 10000;
- Mat mats = matService.selectOne(new EntityWrapper<Mat>()
- .eq("supp_code", supId)
- .eq("matnr", matnr));
- if (Objects.isNull(mats)) {
- throw new CoolException("鐗╂枡涓嶅瓨鍦紒锛�");
- }
//浣欎笅鏈�澶у彲鏀炬暟閲�
Double v = Math.round((mats.getUpQty() * suplus) * 10000) / 10000.0;
// 鍏ュ簱鏁伴噺灏忎簬闆朵笖鍏ュ簱鏁伴噺鍑忓幓宸茶鍒掑嚭鏁伴噺澶т簬闆讹紙锛�
@@ -2192,8 +2294,46 @@
}
}
});
+ } else {
+ // 鑾峰彇褰撳墠渚涘簲鍟�+ 鐗╂枡鍦ㄥ簱
+ LocMast notFullList = locMastService.selectNotFull(mats.getLocType(), one.getId());
+ if (Objects.isNull(notFullList)) {
+ continue;
+ }
+ BasContainer container = basContainerService
+ .selectOne(new EntityWrapper<BasContainer>().eq("barcode", notFullList.getBarcode()));
+ if (Objects.isNull(container)) {
+ throw new CoolException("鏁版嵁閿欒锛屽鍣ㄤ笉瀛樺湪锛侊紒");
+ }
+ List<LocDetl> adetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", notFullList.getLocNo()));
+ Set<String> sets = adetls.stream().map(LocDetl::getMatnr).collect(Collectors.toSet());
+ List<LocDetl> locDtls = new ArrayList<>();
+ // 鍒ゆ柇瀹瑰櫒鏄惁杩樺彲娣锋斁,鍙婂綋鍓嶇墿鏂欏彲鏀惧灏�
+ if (container.getMixMax() > sets.size()) {
+ //浣欎笅鍙贩鏀剧绫�
+ long suplus = Math.round((container.getMixMax() - sets.size()) * 10000) / 10000;
+ //浣欎笅鏈�澶у彲鏀炬暟閲�
+ Double v = Math.round((mats.getUpQty() * suplus) * 10000) / 10000.0;
+ // 鍏ュ簱鏁伴噺灏忎簬闆朵笖鍏ュ簱鏁伴噺鍑忓幓宸茶鍒掑嚭鏁伴噺澶т簬闆讹紙锛�
+ if (sum.compareTo(v) <= 0 && sum.compareTo(itemed.get()) > 0) {
+ itemed.set(Math.round((itemed.get() + v) * 10000) / 10000.0);
+ // 鍙斁涓�
+ LocDetl locDetl = new LocDetl();
+ BeanUtils.copyProperties(mats, locDetl);
+ locDetl.setLocNo(notFullList.getLocNo());
+ locDetl.setAnfme(0.0);
+ locDetl.setMatnr(mats.getMatnr());
+ locDetl.setZpallet(notFullList.getBarcode());
+ locDetl.setSuppCode(mats.getSuppCode());
+ locDetl.setMaktx(mats.getMaktx());
+ locDtls.add(locDetl);
+ CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(notFullList.getLocNo()).setLocDetlList(locDtls);
+ locMasts.add(crnTaskDetlDTO);
+ totalOut.set(Math.round((totalOut.get() + itemed.get()) * 10000) / 10000.0);
+ }
+ }
}
- });
+ }
});
/**鏄惁浼樺厛绌烘澘鍑哄簱*/
@@ -2208,9 +2348,8 @@
if (Objects.isNull(locMast)) {
throw new CoolException("鏈煡璇㈠埌鍙敤鐨勭┖鏉夸俊鎭紒锛�");
}
- CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(locDetls);
+ CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(new ArrayList<>());
locMasts.add(crnTaskDetlDTO);
-
// 绌烘澘鍑哄簱
generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId, station);
} else {
@@ -2228,7 +2367,7 @@
if (Objects.isNull(locMast)) {
throw new CoolException("鏈煡璇㈠埌鍙敤鐨勭┖鏉夸俊鎭紒锛�");
}
- CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(locDetls);
+ CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(new ArrayList<>());
locMasts.add(crnTaskDetlDTO);
// 绌烘澘鍑哄簱
@@ -2258,9 +2397,9 @@
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
if (Cools.isEmpty(wrkMast1)) {
-// Integer outSta = devp.getDevNo();
+ Integer outSta = devp.getDevNo();
// 鑾峰彇璺緞
-// StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+ StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
@@ -2271,7 +2410,7 @@
wrkMast.setIoPri(13D); // 浼樺厛绾э細13
wrkMast.setCrnNo(locMast.getCrnNo());
// wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
-// wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
+ wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
//灏忔澗椤圭洰锛岀紦瀛樺嚭搴揂GV绔欑偣锛岀敤浜庢竻绌虹紦瀛樺尯搴撳瓨
wrkMast.setPauseMk(station.getDevNo());
@@ -2333,7 +2472,7 @@
@Transactional(rollbackFor = Exception.class)
public void generateCacheOutTask(BasStation station, LocCache loc, Long userId) {
// 鑾峰彇宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+ int workNo = commonService.getWorkNo(4);
// 淇濆瓨宸ヤ綔妗�
Task task = new Task();
task.setWrkNo(workNo)
@@ -2390,9 +2529,10 @@
loc.setModiUser(userId);
loc.setModiTime(new Date());
- if (!locCacheService.updateById(loc)) {
- throw new CoolException("鏇存柊搴撲綅鐘舵�佷俊鎭紒锛�");
- }
+// if (!) {
+// throw new CoolException("鏇存柊搴撲綅鐘舵�佷俊鎭紒锛�");
+// }
+ locCacheService.update(loc, new EntityWrapper<LocCache>().eq("loc_no", loc.getLocNo()));
// 淇敼鐩爣绔欑偣淇℃伅
if (station.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
@@ -2403,7 +2543,8 @@
throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
}
} else {
- throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + station.getLocSts());
+ log.error("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + station.getLocSts());
+// throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + station.getLocSts());
}
}
@@ -2420,14 +2561,14 @@
throw new CoolException("鎵樼洏宸插湪浠诲姟鎵ц涓�..");
}
// 鑾峰彇宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+ int workNo = commonService.getWorkNo(4);
// 淇濆瓨宸ヤ綔妗�
Task task = new Task();
task.setWrkNo(workNo)
.setIoTime(new Date())
.setWrkSts(201L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
.setIoType(1) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
- .setTaskType("agv")
+ .setTaskType(type)
.setIoPri(10D)
.setIsNewIn(isNewIn)
.setLocNo(loc.getLocNo()) // 鐩爣搴撲綅
@@ -2479,28 +2620,27 @@
throw new CoolException("鏇存柊缁勬墭淇℃伅澶辫触");
}
}
- }
- // 淇敼鐩爣搴撲綅鐘舵��
- if (loc.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
- loc.setLocSts(LocStsType.LOC_STS_TYPE_S.type); // S.鍏ュ簱棰勭害
- loc.setModiTime(new Date());
- loc.setModiUser(userId);
- if (!locCacheService.updateById(loc)) {
- throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ // 淇敼鐩爣搴撲綅鐘舵��
+ if (loc.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ loc.setLocSts(LocStsType.LOC_STS_TYPE_S.type); // S.鍏ュ簱棰勭害
+ loc.setModiTime(new Date());
+ loc.setModiUser(userId);
+
+ if (!locCacheService.update(loc, new EntityWrapper<LocCache>().eq("loc_no", loc.getLocNo()))) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
}
- } else {
- throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
- }
- // 淇敼鐩爣绔欑偣淇℃伅
- BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", orgSite));
- if (Objects.isNull(station)) {
- throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
- }
+ // 淇敼鐩爣绔欑偣淇℃伅
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", orgSite));
+ if (Objects.isNull(station)) {
+ throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
+ }
- if (station.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type) || station.getLocSts().equals(LocStsType.LOC_STS_TYPE_D.type)) {
- station.setLocSts("R"); // S.鍏ュ簱棰勭害
+ station.setLocSts("R"); // R.鍏ュ簱棰勭害
station.setBarcode(barcode);
station.setModiTime(new Date());
station.setModiUser(userId);
@@ -2508,7 +2648,27 @@
throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
}
} else {
- throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + station.getLocSts());
+ // 淇敼鐩爣搴撲綅鐘舵��
+ loc.setLocSts(LocStsType.LOC_STS_TYPE_D.type); // S.鍏ュ簱棰勭害
+ loc.setModiTime(new Date());
+ loc.setModiUser(userId);
+ if (!locCacheService.update(loc, new EntityWrapper<LocCache>().eq("loc_no", loc.getLocNo()))) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+
+ // 淇敼鐩爣绔欑偣淇℃伅
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", orgSite));
+ if (Objects.isNull(station)) {
+ throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
+ }
+ station.setLocSts("O");
+ station.setBarcode(barcode);
+ station.setModiTime(new Date());
+ station.setModiUser(userId);
+ if (!basStationService.updateById(station)) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
}
}
@@ -2593,13 +2753,12 @@
if (Objects.isNull(station)) {
throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
}
-
try {
//绌哄彴杞﹀洖搴�
generateAgvTask("agv_back", locCache, callAgvBackParam.getOrgSite(), station.getBarcode(), userId, "M2");
} catch (Exception e) {
- e.printStackTrace();
- return R.error(e.getMessage());
+ log.error(e.getMessage());
+ throw new CoolException(e.getMessage());
}
return R.ok(locCache);
@@ -2732,6 +2891,7 @@
/**
* 鑾峰彇缂撳瓨绔欑偣淇℃伅
+ *
* @param type
* @return
*/
@@ -2746,6 +2906,470 @@
return R.error("绔欑偣涓嶅瓨鍦紒");
}
return R.ok("鏌ヨ鎴愬姛").add(stations);
+ }
+
+ /**
+ * 鑾峰彇鎹嗗寘鏄庣粏淇℃伅
+ *
+ * @param params
+ * @return
+ */
+ @Override
+ public R getAllBindInfo(AgvCallParams params) {
+ if (Objects.isNull(params.getCarBarcode())) {
+ return R.error("鍙拌溅缂栫爜涓嶈兘涓虹┖锛�");
+ }
+ List<TaskDetl> taskDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>()
+ .eq("zpallet", params.getCarBarcode()));
+
+ taskDetls.forEach(taskDetl -> {
+ OrderPakout orderDetlPakout = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>()
+ .eq("order_no", taskDetl.getOrderNo()));
+ taskDetl.setMemo(orderDetlPakout.getShipCode());
+ });
+
+ return R.ok("鏌ヨ鎴愬姛").add(taskDetls);
+ }
+
+ /**
+ * 鎸夊彴杞﹀嚭搴�
+ *
+ * @param params
+ * @return com.core.common.R
+ * @author Ryan
+ * @date 2026/3/28 8:41
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R outStockByTc(AgvCallParams params) {
+ if (Objects.isNull(params.getCarBarcode())) {
+ return R.error("鍙拌溅鐮佷笉鑳戒负绌猴紒锛�");
+ }
+ LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("barcode", params.getCarBarcode()));
+ if (Objects.isNull(locCache)) {
+ return R.error("褰撳墠鍙拌溅涓嶅湪缂撳啿搴撳尯锛侊紒");
+ }
+ if (Objects.isNull(params.getTarSite())) {
+ return R.error("鐩爣绔欑偣涓嶈兘涓虹┖锛侊紒");
+ }
+ BasStation devNo = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", params.getTarSite()));
+ if (Objects.isNull(devNo) || !devNo.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ return R.error("鐩爣绔欑偣蹇欑涓紒锛�");
+ }
+
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locCache.getLocNo()));
+ if (Objects.isNull(locDetls) || locDetls.isEmpty()) {
+ return R.error("鍙拌溅涓婃病鏈夊搴旀槑缁嗕俊鎭紒锛�");
+ }
+ List<LocDto> locDtos = new ArrayList<>();
+ locDetls.forEach(locDetl -> {
+ List<OrderPakout> orderPakouts = orderPakoutService.selectList(new EntityWrapper<OrderPakout>()
+ .eq("doc_type", 5)
+ .eq("number", locDetl.getOrderNo()));
+ if (Objects.isNull(orderPakouts) || orderPakouts.isEmpty()) {
+ throw new CoolException("鍗曟嵁淇℃伅涓嶅瓨鍦ㄦ垨宸蹭笂鎶ュ畬鎴愶紒锛�");
+ }
+ for (OrderPakout orderPakout : orderPakouts) {
+ OrderDetlPakout orderDetl = orderDetlPakoutService.selectOne(new EntityWrapper<OrderDetlPakout>()
+ .eq("matnr", locDetl.getMatnr())
+ .eq("supp_code", locDetl.getSuppCode())
+ .eq("order_no", orderPakout.getOrderNo()));
+ if (Objects.isNull(orderDetl)) {
+ continue;
+ }
+ locDetl.setMemo(orderPakout.getShipCode());
+ locDetl.setOrderNo(orderPakout.getOrderNo());
+
+ LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), locDetl.getAnfme());
+ locDto.setFrozen(locDetl.getFrozen());
+ locDto.setFrozenLoc(locCache.getFrozen());
+ locDto.setAgvStaNo(params.getTarSite());
+ locDto.setBrand(orderDetl.getBrand());
+ locDto.setSuppCode(orderDetl.getSuppCode());
+ locDto.setStandby1(orderDetl.getStandby1());
+ locDto.setStandby2(orderDetl.getStandby2());
+ locDto.setStandby3(orderDetl.getStandby3());
+ locDto.setBoxType1(orderDetl.getBoxType1());
+ locDto.setBoxType2(orderDetl.getBoxType2());
+ locDto.setBoxType3(orderDetl.getBoxType3());
+ locDtos.add(locDto);
+
+ }
+// exist.add(locDetl.getLocNo());
+ });
+
+ generateAgvTaskByTc(locDtos);
+
+ return R.ok();
+ }
+
+ /**
+ * 鑾峰彇绔欑偣鏄庣粏淇℃伅
+ *
+ * @param params
+ * @return
+ */
+ @Override
+ public R getStationInfos(AgvCallParams params) {
+ if (Objects.isNull(params.getOrgSite())) {
+ return R.error("绔欑偣涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(params.getCarBarcode())) {
+ return R.error("绔欑偣鍙拌溅涓嶈兘涓虹┖锛侊紒");
+ }
+// if (!Cools.isEmpty(params.getMatnr())) {
+// return R.error("鐗╂枡淇℃伅涓嶈兘涓虹┖锛侊紒");
+// }
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
+ .eq("dev_no", params.getOrgSite())
+ .eq("barcode", params.getCarBarcode()));
+ if (Objects.isNull(station)) {
+ throw new CoolException("鍙拌溅涓庣珯鐐圭粦瀹氬叧绯讳笉瀛樺湪锛岃鑱旂郴绠$悊鍛橈紒");
+ }
+ List<BasStationDetl> stationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>()
+ .like(!Cools.isEmpty(params.getMatnr()), "matnr", params.getMatnr())
+ .eq("dev_no", station.getDevNo()));
+ if (!stationDetls.isEmpty()) {
+ return R.ok().add(stationDetls);
+ }
+ return R.ok();
+ }
+
+ /**
+ * 绔欑偣鐗╂枡瑙g粦
+ *
+ * @param params
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R unbindMatnr(CombParam params) {
+ if (Objects.isNull(params.getCombMats()) || params.getCombMats().isEmpty()) {
+ return R.error("鏄庣粏涓嶈兘涓虹┖锛侊紒");
+ }
+ for (CombParam.CombMat combMat : params.getCombMats()) {
+ if (Objects.isNull(combMat)) {
+ continue;
+ }
+ OrderPakin order = orderPakinService.selectOne(new EntityWrapper<OrderPakin>()
+ .lt("settle", 4)
+ .eq("order_no", combMat.getOrderNo()));
+ if (Objects.isNull(order)) {
+ return R.error("鏈煡璇㈠埌璁㈠崟锛岃纭鏄惁涓哄簱鍙g粍鎵樹俊鎭紒锛�");
+ }
+ //鍏ュ簱
+ OrderDetlPakin detlPakin = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
+ .eq("order_no", combMat.getOrderNo())
+ .eq("matnr", combMat.getMatnr())
+ .eq("supp_code", combMat.getStandby1())
+ .last("AND anfme != qty"));
+
+ if (!Objects.isNull(detlPakin)) {
+ Double v = Math.round((detlPakin.getWorkQty() - combMat.getAnfme()) * 10000) / 10000.0;
+ detlPakin.setWorkQty(v);
+ if (!orderDetlPakinService.update(detlPakin, new EntityWrapper<OrderDetlPakin>()
+ .eq("order_no", combMat.getOrderNo())
+ .eq("matnr", combMat.getMatnr())
+ .eq("supp_code", combMat.getStandby1()))) {
+ throw new CoolException("璁㈠崟鏄庣粏鏇存柊澶辫触锛侊紒");
+ }
+
+ BasStationDetl stationDetl = basStationDetlService.selectOne(new EntityWrapper<BasStationDetl>()
+ .eq("order_no", combMat.getOrderNo())
+ .eq("matnr", combMat.getMatnr())
+ .eq("supp_code", combMat.getStandby1()));
+ if (!Objects.isNull(stationDetl)) {
+ if (!basStationDetlService.delete(new EntityWrapper<BasStationDetl>()
+ .eq("order_no", combMat.getOrderNo())
+ .eq("matnr", combMat.getMatnr())
+ .eq("supp_code", combMat.getStandby1()))) {
+ throw new CoolException("瑙g粦澶辫触锛岀珯鐐瑰簱瀛樺垹闄ゅけ璐ワ紒");
+ }
+ }
+
+ BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_IN_CACHE.type));
+ if (Objects.isNull(basAreas)) {
+ throw new CoolException("绔欑偣鏌ヨ澶辫触锛岃鑱旂郴绠$悊鍛橈紒锛�");
+ }
+
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+ .eq("area_id", basAreas.getId())
+ .eq("order_no", combMat.getOrderNo())
+ .eq("matnr", combMat.getMatnr())
+ .eq("supp_code", combMat.getStandby1()));
+ if (!Objects.isNull(locDetl)) {
+ if (!locDetlService.delete(new EntityWrapper<LocDetl>()
+ .eq("area_id", basAreas.getId())
+ .eq("order_no", combMat.getOrderNo())
+ .eq("matnr", combMat.getMatnr())
+ .eq("supp_code", combMat.getStandby1()))) {
+ throw new CoolException("瑙g粦澶辫触锛岀紦鍐插簱鍖哄簱瀛樺垹闄ゅけ璐ワ紒");
+ }
+ }
+
+ WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>()
+ .eq("order_no", combMat.getOrderNo())
+ .eq("matnr", combMat.getMatnr())
+ .eq("supp_code", combMat.getStandby1()));
+ if (!Objects.isNull(waitPakin)) {
+ if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("order_no", combMat.getOrderNo())
+ .eq("matnr", combMat.getMatnr())
+ .eq("supp_code", combMat.getStandby1()))) {
+ throw new CoolException("鍘熺粍鎵樻。鍒犻櫎澶辫触锛侊紒");
+ }
+ }
+ } else {
+ throw new CoolException("璁㈠崟鏄庣粏缁戝畾鍏崇郴涓嶅瓨鍦ㄦ垨宸插畬鎴愬叆搴擄紒锛�");
+ }
+ }
+ return R.ok();
+ }
+
+
+ @Transactional(rollbackFor = Exception.class)
+ public void generateAgvTaskByTc(List<LocDto> locDtos) {
+ List<LocDto> locDtoArrayList = new ArrayList<>();
+ for (LocDto locDto : locDtos) {
+ if (locDto.getFrozen() != 1 && locDto.getFrozenLoc() != 1) {
+ locDtoArrayList.add(locDto);
+ }
+ }
+ locDtos = locDtoArrayList;
+ if (Cools.isEmpty(locDtos)) {
+ throw new CoolException("搴撳瓨/搴撲綅琚喕缁擄紝璇峰鐞嗗悗鍑哄簱锛侊紒锛�");
+ }
+ boolean lack = true;
+ for (LocDto locDto : locDtos) {
+ if (!locDto.isLack()) {
+ lack = false;
+ break;
+ }
+ }
+ if (lack) {
+ throw new CoolException("搴撳瓨涓嶈冻");
+ }
+
+ try {
+ Thread.sleep(300L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+
+ List<TaskDto> taskDtos = new ArrayList<>();
+ // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
+ for (LocDto locDto : locDtos) {
+ if (locDto.isLack()) {
+ continue;
+ }
+ TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
+ if (TaskDto.hasAgv(taskDtos, taskDto)) {
+ TaskDto dto = TaskDto.findAgv(taskDtos, taskDto);
+ assert dto != null;
+ dto.getLocDtos().addAll(taskDto.getLocDtos());
+ } else {
+ taskDtos.add(taskDto);
+ }
+ }
+ // -----------------------------------------------------------------------------------------------
+ Map<String, List<TaskDto>> listMap = taskDtos.stream().collect(Collectors.groupingBy(TaskDto::getLocNo));
+ listMap.keySet().forEach(locNo -> {
+ listMap.get(locNo).forEach(taskDto -> {
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
+ .in("loc_sts", Arrays.asList(LocStsType.LOC_STS_TYPE_O.type, LocStsType.LOC_STS_TYPE_O.type))
+ .eq("dev_no", taskDto.getAgvStaNo()));
+ if (Objects.isNull(station)) {
+ throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪鎴栧凡浣跨敤锛侊紒");
+ }
+ workService.agvStockOut(station, taskDto, 9527L);
+ });
+ });
+ }
+
+ /**
+ * 纭鎹嗗寘鍑哄簱
+ *
+ * @param combParam
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R confirmOutstock(CombParam combParam) {
+ if (Objects.isNull(combParam.getCombMats()) || combParam.getCombMats().isEmpty()) {
+ return R.error("鎹嗗寘淇℃伅涓嶈兘涓虹┖锛侊紒");
+ }
+ Task task = taskService.selectOne(new EntityWrapper<Task>()
+ .eq("wrk_sts", 304)
+ .eq("barcode", combParam.getBarcode()));
+ if (Objects.isNull(task)) {
+ throw new CoolException("浠诲姟淇℃伅涓嶅瓨鍦紒锛�");
+ }
+ if (task.getIoType().equals(103)) {
+ List<TaskDetl> taskDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>()
+ .eq("wrk_no", task.getWrkNo()));
+
+ int workNo = commonService.getWorkNo(4);
+ Task task1 = new Task();
+ BeanUtils.copyProperties(task, task1);
+ task1.setIoType(53);
+ task1.setLocNo(task.getSourceLocNo());
+ task1.setSourceStaNo(task.getStaNo());
+ task1.setWrkNo(workNo);
+ task1.setWrkSts(TaskStatusType.AGV_IN_START.type);
+
+ if (!taskService.insert(task1)) {
+ throw new CoolException("鍏ュ簱浠诲姟鐢熸垚澶辫触锛侊紒");
+ }
+ if (!Objects.isNull(taskDetls) && !taskDetls.isEmpty()) {
+ for (CombParam.CombMat combMat : combParam.getCombMats()) {
+ taskDetls.forEach(taskDetl -> {
+ if (taskDetl.getMatnr().equals(combMat.getMatnr()) && taskDetl.getSuppCode().equals(combMat.getSuppCode())) {
+ //TODO
+ if (!taskDetl.getAnfme().equals(combMat.getAnfme())) {
+ throw new CoolException("鐗╂枡--->" + combMat.getMatnr() + "鏈嫞鏂欏畬鎴愶紝璇风‘璁ゅ畬鎴愬悗鍐嶅皾璇曪紒锛�");
+ }
+ List<TaskDetl> taskDetls1 = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
+ if (!Objects.isNull(taskDetls1) && !taskDetls1.isEmpty()) {
+ taskDetls1.forEach(detl -> {
+ detl.setWrkNo(workNo);
+ detl.setBoxType1(combMat.getBoxType1());
+ detl.setSupp(combMat.getSuppCode());
+ if (!taskDetlService.update(detl, new EntityWrapper<TaskDetl>()
+ .eq("matnr", detl.getMatnr())
+ .eq("order_no", detl.getOrderNo())
+ .eq("supp_code", detl.getSuppCode())
+ .eq("wrk_no", task.getWrkNo()))) {
+ throw new CoolException("浠诲姟鍙蜂俊鎭洿鏂板け璐ワ紒锛�");
+ }
+ });
+ }
+ }
+ });
+ }
+ }
+ task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
+ if (!taskService.update(task, new EntityWrapper<Task>().eq("wrk_no", task.getWrkNo()))) {
+ throw new CoolException("浠诲姟淇℃伅鏇存柊澶辫触锛侊紒");
+ }
+ }
+ return R.ok("鍛煎彨鎴愬姛锛侊紒");
+ }
+
+
+ /**
+ * 绌烘澘鍑哄簱浠诲姟
+ *
+ * @param params
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R getEmptyOutStock(AgvCallParams params) {
+ if (Objects.isNull(params.getOrgSite())) {
+ return R.error("鎵樼洏绫诲瀷涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(params.getTarSite())) {
+ return R.error("鐩爣绔欑偣涓嶈兘涓虹┖锛侊紒");
+ }
+ Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type);
+ if (params.getOrgSite().equals(MatLocType.AUTOMATED.type)) {
+ wrapper.like("barcode", "LX80");
+ } else if (params.getOrgSite().equals(MatLocType.SO_HOLDING.type)) {
+ wrapper.like("barcode", "TP80");
+ } else {
+ wrapper.like("barcode", "TP88");
+ }
+ wrapper.orderAsc(Arrays.asList("row1", "lev1"));
+ LocMast locMast = locMastService.selectOne(wrapper);
+ if (Objects.isNull(locMast)) {
+ return R.error("娌℃湁鍙敤绌烘澘锛侊紒");
+ }
+
+ locMast.setLocSts(LocStsType.LOC_STS_TYPE_R.type);
+
+ if (!locMastService.update(locMast, new EntityWrapper<LocMast>().eq("loc_no", locMast.getLocNo()))) {
+ throw new CoolException(locMast.getLocNo() + "鍑哄簱棰勭害澶辫触锛侊紒");
+ }
+
+ WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locMast.getLocNo()));
+ if (!Objects.isNull(wrkMast1)) {
+ throw new CoolException("浠诲姟妗e凡鐢熸垚锛岃涓嶈閲嶅鎿嶄綔锛侊紒");
+ }
+ int workNo = commonService.getWorkNo(0);
+ //TODO 鐢熸垚骞舵澘鍑哄簱浠诲姟
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setIoType(104);
+ wrkMast.setWrkSts(11L);
+ wrkMast.setStaNo(params.getTarSite());
+ wrkMast.setSourceLocNo(locMast.getLocNo());
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setIoPri(14.0);
+ wrkMast.setAppeTime(new Date());
+ wrkMast.setModiTime(new Date());
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkDate(new Date());
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setTaskType("crn");
+
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("鏂板缓浠诲姟澶辫触锛侊紒");
+ }
+
+ return R.ok().add(wrkMast);
+ }
+
+ /**
+ * 鑾峰彇鍑哄簱鍙拌溅鎵�鏈変俊鎭�
+ *
+ * @param params
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R getTcAllInfos(AgvCallParams params) {
+ if (Objects.isNull(params.getCarBarcode())) {
+ return R.error("鍙拌溅鐮佷笉鑳戒负绌猴紒锛�");
+ }
+// Task task = taskService.selectOne(new EntityWrapper<Task>().eq("barcode", params.getCarBarcode()));
+// if (Objects.isNull(task)) {
+// throw new CoolException("浠诲姟妗d笉瀛樺湪锛侊紒");
+// }
+// if (Objects.isNull(task.getSourceLocNo())) {
+// throw new CoolException("璇锋鏌ヤ换鍔$被鍨嬫槸鍚﹀睘浜庡嚭搴撴崋缁戯紒锛�");
+// }
+ LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("barcode", params.getCarBarcode()));
+ if (Objects.isNull(locCache)) {
+ return R.error("褰撳墠鍙拌溅涓嶅湪缂撳啿搴撳尯锛侊紒");
+ }
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locCache.getLocNo()));
+ if (!Objects.isNull(locDetls) && !locDetls.isEmpty()) {
+ locDetls.forEach(locDetl -> {
+ OrderPakout orderPakout = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>()
+ .eq("number", locDetl.getOrderNo()));
+ if (!Objects.isNull(orderPakout)) {
+ locDetl.setMemo(orderPakout.getShipCode());
+ }
+ });
+ }
+
+ try {
+ Map<String, List<LocDetl>> listMap = locDetls.stream().collect(Collectors.groupingBy(LocDetl::getMemo));
+ if (!Cools.isEmpty(params.getShipCode())) {
+ List<LocDetl> detlList = listMap.get(params.getShipCode());
+ return R.ok().add(detlList);
+ }
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ }
+
+ return R.ok().add(locDetls);
+// Map<String, List<LocDetl>> listMap = locDetls.stream().collect(Collectors.groupingBy(LocDetl::getMemo));
+// if (!Objects.isNull(params.getShipCode())) {
+// List<LocDetl> detlList = listMap.get(params.getShipCode());
+// return R.ok().add(detlList);
+// } else {
+// return R.ok().add(locDetls);
+// }
}
/**
@@ -2795,12 +3419,12 @@
LocCache loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_IN_CACHE);
if (loc != null) return loc;
- // 2. Try SO Area
- loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_SO);
- if (loc != null) return loc;
-
- // 3. Try EO Area
- loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_EO);
+// // 2. Try SO Area
+// loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_SO);
+// if (loc != null) return loc;
+//
+// // 3. Try EO Area
+// loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_EO);
return loc;
}
@@ -2814,9 +3438,7 @@
}
return locCacheService.selectOne(new EntityWrapper<LocCache>()
.eq("area_id", area.getId())
- .eq("frozen", 0)
.eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
- .orderAsc(Arrays.asList("loc_no"))
- .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+ .orderAsc(Arrays.asList("loc_no")));
}
}
--
Gitblit v1.9.1