From 05466547c913ad2cd29944e5444dd387ce64b25f Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期四, 18 十二月 2025 16:07:48 +0800
Subject: [PATCH] bug修复
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 170 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 5e26534..d1d8539 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -12,6 +12,9 @@
import com.zy.asrs.entity.param.FullStoreParam;
import com.zy.asrs.entity.param.LocDetlAdjustParam;
import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.enums.LocAreaType;
+import com.zy.asrs.enums.LocStsType;
+import com.zy.asrs.enums.TaskIOType;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
import com.zy.asrs.service.*;
@@ -25,11 +28,13 @@
import com.zy.common.service.CommonService;
import com.zy.common.web.WcsController;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
+import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -91,6 +96,18 @@
@Autowired
private CheckOrderDetlService checkOrderDetlService;
+ @Autowired
+ private LocCacheServiceImpl locCacheService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private TaskDetlService taskDetlService;
+ @Autowired
+ private BasStationService basStationService;
+ @Autowired
+ private BasStationDetlService basStationDetlService;
+ @Autowired
+ private BasAreasService basAreasService;
@Override
@Transactional
@@ -141,7 +158,7 @@
// 鐢熸垚宸ヤ綔妗f槑缁�
List<DetlDto> detlDtos = new ArrayList<>();
param.getList().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());
+ 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 detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getBrand(), detlDto.getStandby1(), detlDto.getStandby2(), detlDto.getStandby3(), detlDto.getBoxType1(), detlDto.getBoxType2(), detlDto.getBoxType3());
assert detlDto1 != null;
@@ -267,7 +284,7 @@
}
detlDtos.add(new DetlDto(locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(),
- locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3(), locDetl.getAnfme()));
+ locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3(), locDetl.getAnfme(), locDetl.getThreeCode()));
locDetl.setOwner(param.getOwnerId());
try {
locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr", locDetl.getMatnr()));
@@ -402,8 +419,21 @@
// 鍒ゆ柇鏄惁鏄洏鐐瑰崟
String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
// OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
- CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", orderNo));
- int ioType = checkOrder.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
+
+ int ioType = (taskDto.isAll() ? 101 : 103);
+ if(ioType == 101){
+ boolean DiffQty = taskDto.getLocDtos().stream().allMatch(locDto ->
+ locDetlService.selectOne(new EntityWrapper<LocDetl>()
+ .eq("loc_no", locDto.getLocNo())
+ .eq("matnr", locDto.getMatnr())
+ .eq("batch", locDto.getBatch())
+ .eq("standby1",locDto.getStandby1())
+ ).getDiffQty().compareTo(BigDecimal.ZERO) == 0
+ );
+ if (!DiffQty){
+ ioType = 103;
+ }
+ }
StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
@@ -543,6 +573,7 @@
WrkDetl wrkDetl = new WrkDetl();
wrkDetl.sync(checkOrderDetls.get(0));
+ wrkDetl.setOrderId(checkOrderDetls.get(0).getId());
wrkDetl.setZpallet(wrkMast.getBarcode());
wrkDetl.setIoTime(now);
wrkDetl.setWrkNo(workNo);
@@ -569,6 +600,98 @@
locMast.setModiUser(userId);
locMast.setModiTime(now);
if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
+ }
+ } else {
+ throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void agvStockOut(BasStation staNo, TaskDto taskDto, Long userId) {
+ Date now = new Date();
+ List<LocDto> locDtos = taskDto.getLocDtos();
+ for (LocDto locDto : locDtos) {
+ if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
+ throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ // 鑾峰彇搴撲綅
+ LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", taskDto.getLocNo()));
+ int ioType = (taskDto.isAll() ? 101 : 103);
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+
+ Task task = new Task();
+ task.setWrkNo(workNo)
+ .setIoTime(new Date())
+ .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ .setIoType(ioType) // 鍏ュ嚭搴撶姸鎬�
+ .setTaskType("agv")
+ .setIoPri(10D)
+ .setFullPlt("Y") // 婊℃澘锛歒
+ .setPicking("N") // 鎷f枡
+ .setExitMk("N")// 閫�鍑�
+ .setStaNo(staNo.getDevNo())
+ .setSourceLocNo(locCache.getLocNo())
+ .setEmptyMk("N")// 绌烘澘
+ .setBarcode(locCache.getBarcode())// 鎵樼洏鐮�
+ .setLinkMis("N")
+ .setAppeUser(userId)
+ .setAppeTime(new Date())
+ .setModiUser(userId)
+ .setModiTime(new Date());
+ if (!taskService.insert(task)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDto locDto : taskDto.getLocDtos()) {
+ if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
+ continue;
+ }
+// OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+ OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getBrand()
+ , locDto.getStandby1(), locDto.getStandby2(), locDto.getStandby3(), locDto.getBoxType1(), locDto.getBoxType2(), locDto.getBoxType3());
+// if (orderDetl == null) {
+//// orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+// orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), null);
+//
+// }
+
+ TaskDetl wrkDetl = new TaskDetl();
+ BeanUtils.copyProperties(orderDetl, wrkDetl);
+ wrkDetl.setWrkNo(workNo)
+ .setId(null)
+ .setIoTime(new Date())
+ .setOrderNo(locDto.getOrderNo())
+ .setAnfme(locDto.getAnfme())
+ .setZpallet(locCache.getBarcode())
+ .setBatch(locDto.getBatch())
+ .setAppeUser(userId)
+ .setAppeTime(new Date())
+ .setModiUser(userId);
+ if (!taskDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+// // 淇敼璁㈠崟鏄庣粏
+// if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+// throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+// }
+// orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+ OrderInAndOutUtil.increaseWorkQty(Boolean.FALSE, orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(),
+ orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(),
+ orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3()
+ , locDto.getAnfme());
+ OrderInAndOutUtil.updateOrder(Boolean.FALSE, orderDetl.getOrderId(), 2L, userId);
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+
+ if (locCache.getLocSts().equals("F")) {
+ locCache.setLocSts(ioType == 101 ? "R" : "P");
+ locCache.setModiUser(userId);
+ locCache.setModiTime(now);
+ if (!locCacheService.updateById(locCache)) {
throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
}
} else {
@@ -1339,9 +1462,13 @@
@Override
@Transactional
public void pickWrkMast(String workNo, Long userId) {
- WrkMast wrkMast = wrkMastService.selectById(workNo);
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
if (Cools.isEmpty(wrkMast)) {
throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
+ }
+ BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_CRN.type));
+ if (Objects.isNull(basAreas)) {
+ throw new CoolException("鏁版嵁閿欒锛屽簱鍖轰笉瀛樺湪锛侊紒");
}
// 鍏ュ嚭搴撶被鍨嬪垽鏂�
if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
@@ -1351,6 +1478,7 @@
if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) {
throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�");
}
+
// 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
// if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
@@ -1384,13 +1512,49 @@
throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
}
// 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
- LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo()));
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("搴撲綅涓嶅瓨鍦�:" + wrkMast.getLocNo());
+ }
locMast.setLocSts("Q");
+ locMast.setAreaId(basAreas.getId());
+ locMast.setAreaName(basAreas.getName());
+ locMast.setBarcode(locMast.getBarcode());
locMast.setModiTime(now);
locMast.setModiUser(userId);
if (!locMastService.updateById(locMast)) {
throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
}
+
+
+ // .淇敼骞舵墭鍏ュ簱鏄庣粏鎵樼爜
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
+ .eq("area_id", locMast.getAreaId())
+ .eq("loc_no", locMast.getLocNo()));
+ if (!Objects.isNull(locDetls) && !locDetls.isEmpty()) {
+ locDetls.forEach(locDetl -> {
+ locDetl.setZpallet(locMast.getBarcode());
+ locDetl.setBarcode(locMast.getBarcode());
+ if (!locDetlService.updateById(locDetl)) {
+ throw new CoolException("搴撳瓨鏄庣粏淇敼澶辫触锛侊紒");
+ }
+ });
+ }
+
+ // .淇敼浠诲姟妗f槑缁嗘墭鐩樼爜
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (!Objects.isNull(wrkDetls) && !wrkDetls.isEmpty()) {
+ for (WrkDetl wrkDetl : wrkDetls) {
+ wrkDetl.setZpallet(wrkMast.getBarcode());
+ wrkDetl.setBarcode(wrkMast.getBarcode());
+ if (!wrkDetlService.update(wrkDetl, new EntityWrapper<WrkDetl>()
+ .eq("matnr", wrkDetl.getMatnr())
+ .eq("standby1", wrkDetl.getStandby1())
+ .eq("wrk_no", wrkMast.getWrkNo()))) {
+ throw new CoolException("浠诲姟妗f槑缁嗕慨鏀瑰け璐ワ紒锛�");
+ }
+ }
+ }
}
@Override
--
Gitblit v1.9.1