From 70b86bb70e6941127888979dbde37dda3b1db0b6 Mon Sep 17 00:00:00 2001
From: cp <513960435@qq.com>
Date: 星期二, 19 十一月 2024 09:14:43 +0800
Subject: [PATCH] 完善下架功能
---
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java | 506 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 483 insertions(+), 23 deletions(-)
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java
index 858b673..4872ed1 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java
@@ -3,7 +3,13 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.common.domain.dto.DetlDto;
import com.zy.asrs.common.domain.param.MobileAdjustParam;
+import com.zy.asrs.common.openapi.entity.dto.MergeBoardManyDto;
+import com.zy.asrs.common.openapi.entity.dto.PickMergeDto;
+import com.zy.asrs.common.openapi.entity.dto.PickMergeOrderDto;
import com.zy.asrs.common.openapi.entity.param.CombParam;
+import com.zy.asrs.common.openapi.entity.param.WarehouseOutMergeBoardManyParam;
+import com.zy.asrs.common.openapi.entity.param.WarehouseOutPickMergeParam;
+import com.zy.asrs.common.web.BaseController;
import com.zy.asrs.common.wms.entity.*;
import com.zy.asrs.common.wms.mapper.LocDetlMapper;
import com.zy.asrs.common.wms.service.*;
@@ -20,10 +26,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
/**
* 绉诲姩绔湇鍔℃牳蹇冪被
@@ -52,6 +55,8 @@
private LocDetlService locDetlService;
@Autowired
private WaitPakinLogService waitPakinLogService;
+ @Autowired
+ private AdjDetlService adjDetlService;
@Override
@Transactional
@@ -157,7 +162,7 @@
waitPakin.setAppeTime(now);
waitPakin.setModiUser(userId);
waitPakin.setModiTime(now);
- waitPakin.setOwner(param.getOwner());
+ waitPakin.setOwner(Optional.ofNullable(param.getOwner()).orElse(""));
if (!waitPakinService.save(waitPakin)) {
throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
}
@@ -246,36 +251,76 @@
@Override
@Transactional
- public R WarehouseIn(String locNo, String barcode,Long hostId) {
+ public R WarehouseIn(String locNo, String barcode,Long hostId,Long userId) {
//鍒ゆ柇搴撲綅鐘舵��
LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, locNo).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L));
if (Cools.isEmpty(locMast)){
return R.error("璇ュ簱浣嶄笉瀛樺湪");
}
- if (!locMast.getLocSts().equals("O")){
- return R.error("璇ュ簱浣嶇姸鎬佷负锛�"+locMast.getLocSts()+",绂佹鍏ュ簱");
- }
+// if (!locMast.getLocSts().equals("O")){
+// return R.error("璇ュ簱浣嶇姸鎬佷负锛�"+locMast.getLocSts()+",绂佹鍏ュ簱");
+// }
//鏌ヨ缁勬墭鏁版嵁
List<WaitPakin> list = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getZpallet, barcode).eq(WaitPakin::getHostId, hostId));
if (Cools.isEmpty(list)){
return R.error("鏈壘鍒扮粍鎵樹俊鎭�");
}
Date now = new Date();
+
//鎻掑叆搴撳瓨鏁版嵁
for (WaitPakin waitPakin: list){
- Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, waitPakin.getMatnr()).eq(Mat::getHostId, hostId));
- LocDetl locDetl = new LocDetl();
- locDetl.sync(mat);
- locDetl.setLocNo(locNo);
+ //澶勭悊搴撳瓨淇℃伅
+ AdjDetl adjDetl = new AdjDetl();
+ Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>()
+ .eq(Mat::getMatnr, waitPakin.getMatnr()).eq(Mat::getHostId, hostId));
+ LocDetl locDetl1=locDetlService.getOne(new LambdaQueryWrapper<LocDetl>()
+ .eq(LocDetl::getMatnr,waitPakin.getMatnr())
+ .eq(LocDetl::getHostId,hostId)
+ .eq(LocDetl::getLocNo,locNo));
+ double i=0.0;
+ if(!Cools.isEmpty(locDetl1)){
+ i=locDetl1.getAnfme();
+ locDetl1.setAnfme(locDetl1.getAnfme()+waitPakin.getAnfme());
+ locDetlService.updateById(locDetl1);
+ adjDetl.setMatnr(locDetl1.getMatnr());
+ adjDetl.setBatch(locDetl1.getBatch());
+ adjDetl.setAdjQty(locDetl1.getAnfme());
+ }else{
+ LocDetl locDetl = new LocDetl();
+ locDetl.sync(mat);
+ locDetl.setLocNo(locNo);
// locDetl.setBarcode(waitPakin.getBarcode());
- locDetl.setZpallet(waitPakin.getZpallet());
- locDetl.setAnfme(waitPakin.getAnfme());
- locDetl.setBatch(waitPakin.getBatch());
+ locDetl.setZpallet(waitPakin.getZpallet());
+ locDetl.setAnfme(waitPakin.getAnfme());
+ locDetl.setBatch(waitPakin.getBatch());
// locDetl.setWeight(waitPakin.getWeight());
- locDetl.setHostId(hostId);
- locDetl.setModiTime(now);
- locDetl.setAppeTime(now);
- locDetlService.save(locDetl);
+ locDetl.setHostId(hostId);
+ locDetl.setModiTime(now);
+ locDetl.setAppeTime(now);
+ locDetlService.save(locDetl);
+ adjDetl.setMatnr(locDetl.getMatnr());
+ adjDetl.setBatch(locDetl.getBatch());
+ adjDetl.setAdjQty(locDetl.getAnfme());
+ }
+
+ try {
+
+ adjDetl.setLocNo(locNo);
+ adjDetl.setOriQty(i);
+ adjDetl.setMemo("骞冲韩涓婃灦");
+ adjDetl.setModiUser(userId);
+ adjDetl.setAppeUser(userId);
+ adjDetl.setAppeTime(new Date());
+ adjDetl.setModiTime(new Date());
+ adjDetl.setOrderNo(waitPakin.getOrderNo());
+ if (!adjDetlService.save(adjDetl)) {
+ throw new CoolException("淇濆瓨搴撳瓨璋冩暣璁板綍澶辫触");
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage());
+ }
+
//鏄惁灞炰簬璁㈠崟鏁版嵁
if (!Cools.isEmpty(waitPakin.getOrderNo())){
Order order = orderService.selectByNo(waitPakin.getOrderNo(), hostId);
@@ -315,7 +360,7 @@
@Override
@Transactional
- public R WarehouseOut(CombParam combParam, Long hostId) {
+ public R WarehouseOut(CombParam combParam, Long hostId , Long userId) {
//鍒ゆ柇搴撲綅鐘舵��
LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L));
if (Cools.isEmpty(locMast)){
@@ -331,7 +376,7 @@
.eq(LocDetl::getHostId, hostId)
.eq(LocDetl::getZpallet, combMat.getZpallet())
.eq(LocDetl::getMatnr, combMat.getMatnr())
- .eq(LocDetl::getBatch, combMat.getBatch())
+// .eq(LocDetl::getBatch, combMat.getBatch())
);
if (Cools.isEmpty(locDetl)){
return R.error("鏈煡璇㈠埌搴撳瓨鏁版嵁");
@@ -352,7 +397,7 @@
continue;
}
if (orderDetl.getAnfme() < orderDetl.getWorkQty()+combMat.getAnfme()){
- throw new CoolException("涓嬫灦鏁伴噺鍑洪敊");
+ combMat.setAnfme(orderDetl.getAnfme()-orderDetl.getWorkQty());
}
// 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
if (!orderDetlService.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) {
@@ -366,6 +411,8 @@
orderService.checkComplete(combParam.getOrderNo(), hostId);
}
try {
+ double i=0.0;
+ double j=locDetl.getAnfme();
//澶勭悊搴撳瓨淇℃伅
if (combMat.getAnfme().equals(locDetl.getAnfme())){
//搴撳瓨鐩哥瓑鍒犻櫎鏁版嵁
@@ -378,8 +425,32 @@
}
}else {
BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme()));
+ i=subtract.byteValue();
locDetl.setAnfme(subtract.doubleValue());
locDetlService.updateById(locDetl);
+ }
+
+ try {
+ //澶勭悊搴撳瓨淇℃伅
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locDetl.getLocNo());
+ adjDetl.setMatnr(locDetl.getMatnr());
+ adjDetl.setBatch(locDetl.getBatch());
+ adjDetl.setOriQty(j);
+ adjDetl.setAdjQty(i);
+ adjDetl.setMemo("骞冲韩涓嬫灦");
+ adjDetl.setModiUser(userId);
+ adjDetl.setAppeUser(userId);
+ adjDetl.setAppeTime(new Date());
+ adjDetl.setModiTime(new Date());
+ adjDetl.setOrderNo(combParam.getOrderNo());
+ adjDetl.setHostId(hostId);
+ if (!adjDetlService.save(adjDetl)) {
+ throw new CoolException("淇濆瓨搴撳瓨璋冩暣璁板綍澶辫触");
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage());
}
}catch (Exception e){
throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊"+e.getMessage());
@@ -392,4 +463,393 @@
return R.ok();
}
+
+ @Override
+ @Transactional
+ public R WarehouseOutV1(CombParam combParam, Long hostId,Long userId) {
+ //鍒ゆ柇搴撲綅鐘舵��
+ LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,0L));
+ if (Cools.isEmpty(locMast)){
+ return R.error("璇ュ簱浣嶄笉瀛樺湪");
+ }
+ if (!locMast.getLocSts().equals("P")){
+ return R.error("璇ュ簱浣嶇姸鎬佷负锛�"+locMast.getLocSts()+",涓嶆弧瓒冲苟鏉块�斾腑鎷i�夋潯浠讹紒锛侊紒");
+ }
+ //鏌ヨ搴撳瓨鏁版嵁
+ for (CombParam.CombMat combMat :combParam.getCombMats()){
+ List<LocDetl> locDetlList = locDetlService.list(new LambdaQueryWrapper<LocDetl>()
+ .eq(LocDetl::getLocNo, combParam.getLocno())
+ .eq(LocDetl::getHostId, hostId)
+// .eq(LocDetl::getZpallet, combMat.getZpallet())
+ .eq(LocDetl::getMatnr, combMat.getMatnr())
+// .eq(LocDetl::getBatch, combMat.getBatch())
+ );
+ if (locDetlList.isEmpty()){
+ return R.error("鏈煡璇㈠埌搴撳瓨鏁版嵁");
+ }
+ if (locDetlList.size()>1){
+ return R.error("搴撳瓨鏁版嵁澶т簬1鏉★紝涓轰繚璇佹暟鎹噯纭�э紝璇风敤姝e父娴佺▼鍑哄簱锛侊紒锛�");
+ }
+ LocDetl locDetl = locDetlList.get(0);
+ if (combMat.getAnfme() > locDetl.getAnfme()){
+ return R.error("鎷i�夋暟閲忛敊璇紝瓒呭嚭搴撳瓨鏁伴噺");
+ }
+ if (!Cools.isEmpty(combMat.getOrderNo())){
+ Order order = orderService.selectByNo(combMat.getOrderNo(), hostId);
+ if (Cools.isEmpty(order)){
+ continue;
+ }
+ if (order.getSettle() == 1){
+ orderService.updateSettle(order.getId(), 2L, 9527L, hostId);
+ }
+ OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch(),hostId);
+ if (Cools.isEmpty(orderDetl)){
+ continue;
+ }
+ if (orderDetl.getAnfme() < (orderDetl.getWorkQty()+combMat.getAnfme())){
+ throw new CoolException("鎷i�夋暟閲忓嚭閿�,璁㈠崟鍓╀綑鍑哄簱鏁伴噺灏忎簬宸插嚭搴撴暟閲忎笌灏嗘嫞閫夋暟閲忎箣鍜岋紒锛侊紒");
+ }
+ // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
+ if (!orderDetlService.increaseWorkQtyByOrderNo(combMat.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触");
+ }
+ // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+ if (!orderDetlService.increase(order.getId(), hostId, combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触");
+ }
+ // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
+ orderService.checkComplete(combMat.getOrderNo(), hostId);
+ }
+ try {
+ //澶勭悊搴撳瓨淇℃伅
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locDetl.getLocNo());
+ adjDetl.setMatnr(locDetl.getMatnr());
+ adjDetl.setBatch(locDetl.getBatch());
+ adjDetl.setOriQty(locDetl.getAnfme());
+ adjDetl.setMemo("骞舵澘閫斾腑鎷f枡");
+ adjDetl.setModiUser(userId);
+ adjDetl.setAppeUser(userId);
+ adjDetl.setAppeTime(new Date());
+ adjDetl.setModiTime(new Date());
+ adjDetl.setOrderNo(combMat.getOrderNo());
+ if (combMat.getAnfme().equals(locDetl.getAnfme())){
+ adjDetl.setAdjQty(0D);
+ //搴撳瓨鐩哥瓑鍒犻櫎鏁版嵁
+ locDetlService.removeById(locDetl);
+ int count = locDetlService.count(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo,combParam.getLocno()).eq(LocDetl::getHostId, hostId));
+ if (count == 0){
+ LocMast locMast1 = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId, hostId));
+// locMast1.setLocSts("O");
+// locMastService.updateById(locMast1);
+ }
+ } else {
+ BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme()));
+ locDetl.setAnfme(subtract.doubleValue());
+ locDetlService.updateById(locDetl);
+ adjDetl.setAdjQty(subtract.doubleValue());
+ }
+
+ if (!adjDetlService.save(adjDetl)) {
+ throw new CoolException("淇濆瓨搴撳瓨璋冩暣璁板綍澶辫触");
+ }
+ }catch (Exception e){
+ throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊"+e.getMessage());
+ }
+ }
+ return R.ok();
+ }
+
+ @Override
+ @Transactional
+ public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId,Long userId) {
+ //鍒ゆ柇搴撲綅鐘舵��
+ LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, param.getLocNo()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,0L));
+ if (Cools.isEmpty(locMast)){
+ return R.error("璇ュ簱浣嶄笉瀛樺湪");
+ }
+ if (!locMast.getLocSts().equals("P")){
+ return R.error("璇ュ簱浣嶇姸鎬佷负锛�"+locMast.getLocSts()+",涓嶆弧瓒虫嫞鏂欓�斾腑骞舵澘鏉′欢锛侊紒锛�");
+ }
+
+ HashMap<String, OrderDetl> mapData = new HashMap<>();
+ for (OrderDetl orderDetl : param.getCombMats()) {
+ String key = orderDetl.getMatnr();
+ if (!Cools.isEmpty(orderDetl.getBatch())) {
+ key += "_" + orderDetl.getBatch();
+ }
+
+ OrderDetl value = mapData.get(key);
+ if(value == null){
+ mapData.put(key, orderDetl);
+ }else {
+ value.setAnfme(value.getAnfme() + orderDetl.getAnfme());
+ mapData.put(key, value);
+ }
+ }
+
+ List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, locMast.getLocNo()));
+
+ HashMap<String, PickMergeDto> locData = new HashMap<>();
+ for (LocDetl locDetl : locDetls) {
+ String matKey = locDetl.getMatnr();
+ if (!Cools.isEmpty(locDetl.getBatch())) {
+ matKey += "_" + locDetl.getBatch();
+ }
+
+ PickMergeDto dto = new PickMergeDto();
+ dto.setOriginAnfme(locDetl.getAnfme());
+ dto.setLocDetl(locDetl);
+ dto.setOrders(new ArrayList<>());
+ locData.put(matKey, dto);
+ }
+
+ for (Map.Entry<String, OrderDetl> entry : mapData.entrySet()) {
+ OrderDetl orderDetl = entry.getValue();
+ LocDetl locDetl = new LocDetl();
+ locDetl.sync(orderDetl);
+ locDetl.setId(null);
+ locDetl.setLocNo(param.getLocNo());
+ locDetl.setBarcode(locMast.getBarcode());
+ Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr,locDetl.getMatnr()));
+ locDetl.setHostId(hostId);
+ locDetl.setMaktx(mat.getMaktx());
+ if(hostId==1){
+ locDetl.setOwner("瀹佹尝浠�");
+ }else{
+ locDetl.setOwner("鏂版槍浠�");
+ }
+
+ String matKey = locDetl.getMatnr();
+ if (!Cools.isEmpty(locDetl.getBatch())) {
+ matKey += "_" + locDetl.getBatch();
+ }
+
+ PickMergeDto dto = locData.get(matKey);
+ if (dto == null) {
+ ArrayList<PickMergeOrderDto> orders = new ArrayList<>();
+ orders.add(new PickMergeOrderDto(locDetl.getOrderNo(), locDetl.getAnfme()));
+
+ dto = new PickMergeDto();
+ dto.setOriginAnfme(locDetl.getAnfme());
+ dto.setLocDetl(locDetl);
+ dto.setOrders(orders);
+
+ locData.put(matKey, dto);
+ }else {
+ LocDetl detl = dto.getLocDetl();
+ List<PickMergeOrderDto> orders = dto.getOrders();
+
+ detl.setAnfme(detl.getAnfme() + locDetl.getAnfme());
+ orders.add(new PickMergeOrderDto(locDetl.getOrderNo(), locDetl.getAnfme()));
+
+ dto.setLocDetl(detl);
+ dto.setOrders(orders);
+
+ locData.put(matKey, dto);
+ }
+ }
+
+
+ for (Map.Entry<String, PickMergeDto> entry : locData.entrySet()) {
+ PickMergeDto dto = entry.getValue();
+
+ Double originAnfme = dto.getOriginAnfme();
+ LocDetl locDetl = dto.getLocDetl();
+ List<PickMergeOrderDto> orders = dto.getOrders();
+
+ if (locDetl.getId() == null) {
+ if (!locDetlService.save(locDetl)) {
+ throw new CoolException("骞舵澘搴撳瓨鎻掑叆澶辫触");
+ }
+ }else {
+ if (!locDetlService.updateById(locDetl)) {
+ throw new CoolException("骞舵澘搴撳瓨鏇存柊澶辫触");
+ }
+ }
+
+ if (!orders.isEmpty()){
+ for (PickMergeOrderDto orderDto : orders) {
+ Order order = orderService.selectByNo(orderDto.getOrderNo(), hostId);
+ if (Cools.isEmpty(order)){
+ continue;
+ }
+ if (order.getSettle() == 1){
+ orderService.updateSettle(order.getId(), 2L, 9527L, hostId);
+ }
+ OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), locDetl.getMatnr(), locDetl.getBatch(),hostId);
+ if (Cools.isEmpty(orderDetl)){
+ continue;
+ }
+ if (orderDetl.getAnfme() < (orderDetl.getWorkQty() + orderDto.getAnfme())) {
+ throw new CoolException("骞舵澘鏁伴噺鍑洪敊,璁㈠崟鍓╀綑鍑哄簱鏁伴噺灏忎簬宸插嚭搴撴暟閲忎笌灏嗗苟鏉挎暟閲忎箣鍜岋紒锛侊紒");
+ }
+ // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
+ if (!orderDetlService.increaseWorkQtyByOrderNo(orderDto.getOrderNo(), locDetl.getMatnr(), locDetl.getBatch(), orderDto.getAnfme(), hostId)) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触");
+ }
+ // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+ if (!orderDetlService.increase(order.getId(), hostId, locDetl.getMatnr(), locDetl.getBatch(), orderDto.getAnfme())) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触");
+ }
+ // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
+ orderService.checkComplete(orderDto.getOrderNo(), hostId);
+
+ try {
+ //澶勭悊搴撳瓨淇℃伅
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locDetl.getLocNo());
+ adjDetl.setMatnr(locDetl.getMatnr());
+ adjDetl.setBatch(locDetl.getBatch());
+ adjDetl.setOriQty(originAnfme);
+ adjDetl.setAdjQty(locDetl.getAnfme());
+ adjDetl.setMemo("鎷f枡閫斾腑骞舵澘");
+ adjDetl.setModiUser(userId);
+ adjDetl.setAppeUser(userId);
+ adjDetl.setAppeTime(new Date());
+ adjDetl.setModiTime(new Date());
+ adjDetl.setOrderNo(order.getOrderNo());
+ if (!adjDetlService.save(adjDetl)) {
+ throw new CoolException("淇濆瓨搴撳瓨璋冩暣璁板綍澶辫触");
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage());
+ }
+ }
+ }
+
+
+ }
+ return R.ok();
+ }
+
+ @Override
+ @Transactional
+ public R WarehouseOutMergeBoardMany(WarehouseOutMergeBoardManyParam param, Long hostId,Long userId) {
+ WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode(), hostId);
+ if (wrkMast == null) {
+ throw new CoolException("宸ヤ綔妗d笉瀛樺湪");
+ }
+
+ if (wrkMast.getIoType() != 104) {
+ throw new CoolException("宸ヤ綔绫诲瀷涓嶅睘浜庡苟鏉垮嚭搴�");
+ }
+
+ if (wrkMast.getWrkSts() != 199) {
+ throw new CoolException("宸ヤ綔鐘舵�佷笉婊¤冻澶氭骞舵澘鍏ュ簱鐘舵��");
+ }
+
+ List<WrkDetl> wrkDetls = wrkDetlService.list(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getWrkNo, wrkMast.getWrkNo()));
+
+ HashMap<String, MergeBoardManyDto> wrkData = new HashMap<>();
+ for (WrkDetl wrkDetl : wrkDetls) {
+ String matKey = wrkDetl.getMatnr();
+ if (!Cools.isEmpty(wrkDetl.getBatch())) {
+ matKey += "_" + wrkDetl.getBatch() + "-" +wrkDetl.getOrderNo();
+ }
+
+ MergeBoardManyDto dto = new MergeBoardManyDto();
+ dto.setOriginAnfme(wrkDetl.getAnfme());
+ dto.setWrkDetl(wrkDetl);
+ dto.setOrders(new ArrayList<>());
+ wrkData.put(matKey, dto);
+ }
+
+ for (OrderDetl orderDetl : param.getCombMats()) {
+ String matKey = orderDetl.getMatnr();
+ if (!Cools.isEmpty(orderDetl.getBatch())) {
+ matKey += "_" + orderDetl.getBatch() + "-" +orderDetl.getOrderNo();
+ }
+
+ MergeBoardManyDto dto = wrkData.get(matKey);
+ if(dto == null){
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(orderDetl);
+ Mat mat=matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr,wrkDetl.getMatnr()));
+ wrkDetl.sync(mat);
+ wrkDetl.setId(null);
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setWrkMastId(wrkMast.getId());
+ wrkDetl.setZpallet(wrkMast.getBarcode());
+ wrkDetl.setIoTime(new Date());
+ wrkDetl.setHostId(hostId);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setAppeTime(new Date());
+ wrkDetl.setModiUser(userId);
+ wrkDetl.setModiTime(new Date());
+ ArrayList<PickMergeOrderDto> orderDtos = new ArrayList<>();
+ orderDtos.add(new PickMergeOrderDto(orderDetl.getOrderNo(), orderDetl.getAnfme()));
+
+ dto = new MergeBoardManyDto();
+ dto.setOriginAnfme(orderDetl.getAnfme());
+ dto.setWrkDetl(wrkDetl);
+ dto.setOrders(orderDtos);
+ }else {
+ WrkDetl wrkDetl = dto.getWrkDetl();
+ List<PickMergeOrderDto> orders = dto.getOrders();
+
+ wrkDetl.setAnfme(wrkDetl.getAnfme() + orderDetl.getAnfme());
+ wrkDetl.setIoTime(new Date());
+ wrkDetl.setHostId(hostId);
+ wrkDetl.setModiUser(userId);
+ wrkDetl.setModiTime(new Date());
+ orders.add(new PickMergeOrderDto(orderDetl.getOrderNo(), orderDetl.getAnfme()));
+ dto.setWrkDetl(wrkDetl);
+ dto.setOrders(orders);
+ }
+
+ wrkData.put(matKey, dto);
+ }
+
+ for (Map.Entry<String, MergeBoardManyDto> entry : wrkData.entrySet()) {
+ MergeBoardManyDto dto = entry.getValue();
+ List<PickMergeOrderDto> orders = dto.getOrders();
+ WrkDetl wrkDetl = dto.getWrkDetl();
+
+ if (wrkDetl.getId() == null) {
+ if (!wrkDetlService.save(wrkDetl)) {
+ throw new CoolException("澶氭骞舵澘鎻掑叆宸ヤ綔鏄庣粏澶辫触");
+ }
+ }else {
+ if (!wrkDetlService.updateById(wrkDetl)) {
+ throw new CoolException("澶氭骞舵澘鏇存柊宸ヤ綔鏄庣粏澶辫触");
+ }
+ }
+
+ if (!orders.isEmpty()){
+ for (PickMergeOrderDto orderDto : orders) {
+ Order order = orderService.selectByNo(orderDto.getOrderNo(), hostId);
+ if (Cools.isEmpty(order)){
+ continue;
+ }
+ if (order.getSettle() == 1){
+ orderService.updateSettle(order.getId(), 2L, 9527L, hostId);
+ }
+ OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), wrkDetl.getMatnr(), wrkDetl.getBatch(),hostId);
+ if (Cools.isEmpty(orderDetl)){
+ continue;
+ }
+ if (orderDetl.getAnfme() < (orderDetl.getWorkQty() + orderDto.getAnfme())) {
+ throw new CoolException("鎷i�夋暟閲忓嚭閿�,璁㈠崟鍓╀綑鍑哄簱鏁伴噺灏忎簬宸插嚭搴撴暟閲忎笌灏嗘嫞閫夋暟閲忎箣鍜岋紒锛侊紒");
+ }
+ // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
+ if (!orderDetlService.increaseWorkQtyByOrderNo(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme(), hostId)) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触");
+ }
+ // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+ if (!orderDetlService.increase(order.getId(), hostId, wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触");
+ }
+ // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
+ orderService.checkComplete(orderDto.getOrderNo(), hostId);
+
+
+ }
+ }
+ }
+
+ return R.ok();
+ }
+
}
--
Gitblit v1.9.1