From 0e1dcb25ccb0249b1b62a4fec7cb3154a50f7e69 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期三, 15 十月 2025 10:15:40 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 396 +++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 362 insertions(+), 34 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 bb8bf20..06bcea3 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -12,7 +12,10 @@
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.mapper.LocMastMapper;
+import com.zy.asrs.entity.result.FindLocNoAttributeVo;
import com.zy.asrs.service.*;
+import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.*;
import com.zy.common.model.enums.IoWorkType;
@@ -20,11 +23,14 @@
import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import com.zy.common.web.WcsController;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -70,6 +76,8 @@
@Autowired
private OrderDetlService orderDetlService;
@Autowired
+ private ConfigService configService;
+ @Autowired
private WcsController wcsController;
@Autowired
private RowLastnoService rowLastnoService;
@@ -77,6 +85,18 @@
private SlaveProperties slaveProperties;
@Autowired
private WaitPakinService waitPakinService;
+
+ @Autowired
+ private LocOwnerService locOwnerService;
+
+ @Autowired
+ private ManLocDetlService manLocDetlService;
+
+ @Resource
+ private LocMastMapper locMastMapper;
+
+ @Resource
+ private OrderPakoutService orderPakOutService;
@Override
@Transactional
@@ -90,9 +110,13 @@
BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true);
// 妫�绱㈠簱浣�
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
- List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
+// List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
// List<String> batchs = param.getList().stream().map(FullStoreParam.MatCodeStore::getBatch).distinct().collect(Collectors.toList());
- StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), matnrs.get(0), null, null,locTypeDto);
+ FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(param.getList().get(0));
+ StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), findLocNoAttributeVo,locTypeDto);
+ if (Cools.isEmpty(dto)){
+ throw new CoolException("鏌ヨ搴撲綅澶辫触锛侊紒==銆媠tartupFullPutStore ==銆� commonService.getLocNo");
+ }
// 鐢熸垚宸ヤ綔鍙�
int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
@@ -123,9 +147,9 @@
// 鐢熸垚宸ヤ綔妗f槑缁�
List<DetlDto> detlDtos = new ArrayList<>();
param.getList().forEach(elem -> {
- DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), 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());
if (DetlDto.has(detlDtos, detlDto)) {
- DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ 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;
detlDto1.setAnfme(detlDto1.getAnfme() + detlDto.getAnfme());
} else {
@@ -164,11 +188,18 @@
List<LocDetlDto> locDetlDtos = new ArrayList<>();
for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
- LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
+ LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getBrand()
+ ,paramLocDetl.getStandby1(),paramLocDetl.getStandby2(),paramLocDetl.getStandby3(),paramLocDetl.getBoxType1(),paramLocDetl.getBoxType2(),paramLocDetl.getBoxType3());
if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
}
}
if (!locDetlDtos.isEmpty()) {
+ // 搴撲綅鍙烽泦鍚�
+ List<String> locNoList = param.getLocDetls().stream().map(StockOutParam.LocDetl::getLocNo).distinct().collect(Collectors.toList());
+ String firstFrozenLocNo = locMastMapper.findFirstFrozenLocNo(locNoList);
+ if (firstFrozenLocNo != null) {
+ throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!");
+ }
LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") ){
// 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
@@ -178,6 +209,84 @@
}
} else {
throw new CoolException("搴撳瓨涓嶅瓨鍦�");
+ }
+ }
+
+ @Override
+ @Transactional
+ public void turnOverOut(EmptyPlateOutParam param, Long userId) {
+ try {
+ if (Cools.isEmpty(param.getOwnerId())) {
+ throw new CoolException("瀹㈡埛鍚嶇О涓嶈兘涓虹┖");
+ }else if (param.getLocDetls().size()<=0){
+ throw new CoolException("璇锋彁鍙栨槑缁�");
+ }
+ ArrayList<String> locNos = new ArrayList<>();
+ String[][] locNos2 =new String[param.getLocDetls().size()][4];
+ int i=0;
+ for (EmptyPlateOutParam.LocDetl locDetl : param.getLocDetls()){
+ if (!locNos.contains(locDetl.getLoc_no())){
+ locNos.add(locDetl.getLoc_no());
+ locNos2[i][0]=locDetl.getLoc_no();
+ locNos2[i][1]=locDetl.getManu();
+ locNos2[i][2] = locDetl.getMatnr();
+ locNos2[i][3] = locDetl.getBatch();
+ i++;
+ }
+ }
+ LocOwner locOwner = locOwnerService.selectById(param.getOwnerId());
+ param.setOwner(locOwner.getOwner());
+ String lgort = "";
+ String owner="";
+ List<DetlDto> detlDtos = new ArrayList<>();
+ for (String[] locNo1 : locNos2) {
+ String locNo = locNo1[0];
+ if (locNo1[1].equals("骞冲簱")){
+ List<ManLocDetl> manLocDetls = new ArrayList<>();
+ if (locNo1[3] == null){
+ manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2]));
+ }else {
+ manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2]).eq("batch",locNo1[3]));
+ }
+ for (ManLocDetl manLocDetl:manLocDetls){
+ if (Cools.isEmpty(owner)) {
+ owner = manLocDetl.getOwner$();
+ }
+// detlDtos.add(new DetlDto(manLocDetl.getMatnr(), manLocDetl.getBatch(),manLocDetl.getBrand(),
+// manLocDetl.getStandby1(),manLocDetl.getStandby2(),manLocDetl.getStandby3(),
+// manLocDetl.getBoxType1(),manLocDetl.getBoxType2(),manLocDetl.getBoxType3(), manLocDetl.getAnfme()));
+ manLocDetl.setOwner(param.getOwnerId());
+ try{
+ manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",manLocDetl.getMatnr()));
+ }catch (Exception e){
+ throw new Exception("鏇存柊搴撳瓨鏄庣粏鎷ユ湁鑰呭瓧娈典俊鎭嚭閿欎簡");
+ }
+ }
+ }else if (locNo1[1].equals("绔嬪簱")){
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2]).eq("batch",locNo1[3]));
+ for (LocDetl locDetl:locDetls){
+ if (Cools.isEmpty(lgort)) {
+ lgort = locDetl.getOrigin();
+ }
+ if (Cools.isEmpty(owner)) {
+ owner = locDetl.getOwner$();
+ }
+ 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.setOwner(param.getOwnerId());
+ try{
+ locDetlService.update(locDetl,new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr",locDetl.getMatnr()));
+ }catch (Exception e){
+ throw new Exception("鏇存柊搴撳瓨鏄庣粏鎷ユ湁鑰呭瓧娈典俊鎭嚭閿欎簡");
+ }
+ }
+ }else {
+ throw new Exception("鏇存柊搴撲綅鎷ユ湁鑰呭瓧娈典俊鎭嚭閿欎簡");
+ }
+ }
+ }catch (Exception e){
+ throw new CoolException("绉讳氦浣滀笟鍑洪敊浜嗭細"+e);
}
}
@@ -202,6 +311,15 @@
dtos.add(new OutLocDto(locNo, locDetlDto));
}
}
+ Config config = configService.selectConfigByCode("AutoMPArea");
+
+ List<LocMast> list = locMastMapper.selectList(
+ new EntityWrapper<LocMast>()
+ .eq("whs_type", 5)
+ .eq("loc_sts", "O")
+ );
+ LocMast locMastRgv = list.isEmpty() ? null : list.get(0);
+
Integer ioType = null;
// 鐢熸垚宸ヤ綔妗�
for (OutLocDto dto : dtos) {
@@ -223,6 +341,10 @@
// 鑾峰彇璺緞
StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+ if(ioType.equals(107)){
+ staDesc = staDescService.queryCrnStnCheck(ioType, locMast.getCrnNo(), outSta);
+ }
+
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
// 鐢熸垚宸ヤ綔妗�
@@ -242,6 +364,12 @@
wrkMast.setEmptyMk("N"); // 绌烘澘
wrkMast.setLinkMis("N");
wrkMast.setBarcode(locMast.getBarcode());
+ if(locMastRgv !=null){
+ if (Boolean.parseBoolean(config.getValue()) && locMastRgv.getLocNo() != null && ioType != 107) { //鑻ユ湁绌哄簱浣嶄笖閰嶇疆鍏佽鍒欑粦瀹氬叾澶囨枡搴撲綅鍙�
+ wrkMast.setLocNo(locMastRgv.getLocNo());
+ wrkMast.setTakeNone("0"); //0rgv鏈彇锛�1rgv宸插彇璐�
+ }
+ }
wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
@@ -267,6 +395,20 @@
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
}
+ if(locMastRgv !=null){
+ if (Boolean.parseBoolean(config.getValue()) && locMastRgv.getLocNo() != null && ioType != 107) { //鑻ユ湁绌哄簱浣嶄笖閰嶇疆鍏佽鍒欑粦瀹氬叾澶囨枡搴撲綅鍙�
+ //淇敼agv澶囨枡鍖虹姸鎬�
+ if(locMastRgv.getLocSts().equals("O") && ioType != 107){
+ locMastRgv.setLocSts("S");
+ locMastRgv.setModiUser(userId);
+ locMastRgv.setModiTime(now);
+ if (!locMastService.updateById(locMastRgv)) {
+ throw new CoolException("棰勭害agv澶囨枡鍖哄簱浣嶇姸鎬佸け璐ワ紝搴撲綅鍙凤細"+locMastRgv.getLocNo());
+ }
+ }
+ }
+ }
+
// 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
locMast = locMastService.selectById(dto.getLocNo());
if (locMast.getLocSts().equals("F")) {
@@ -292,11 +434,25 @@
throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
}
}
+ Config config = configService.selectConfigByCode("AutoMPArea");
+
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectById(taskDto.getLocNo());
- // 鑾峰彇璺緞
- int ioType = taskDto.isAll() ? 101 : 103;
+ // 鍒ゆ柇鏄惁鏄洏鐐瑰崟
+ String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
+ OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
+ int ioType = orderPakout.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
+ List<LocMast> list = locMastMapper.selectList(
+ new EntityWrapper<LocMast>()
+ .eq("whs_type", 5)
+ .eq("loc_sts", "O")
+ );
+ LocMast locMastRgv = list.isEmpty() ? null : list.get(0);
+
+
+
+
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
// 鐢熸垚宸ヤ綔妗�
@@ -310,6 +466,10 @@
wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
+ if (Boolean.parseBoolean(config.getValue()) && locMastRgv.getLocNo() != null) { //鑻ユ湁绌哄簱浣嶄笖閰嶇疆鍏佽鍒欑粦瀹氬叾澶囨枡搴撲綅鍙�
+ wrkMast.setLocNo(locMastRgv.getLocNo());
+ wrkMast.setTakeNone("0"); //0rgv鏈彇锛�1rgv宸插彇璐�
+ }
wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
wrkMast.setPicking("N"); // 鎷f枡
wrkMast.setExitMk("N"); // 閫�鍑�
@@ -326,10 +486,14 @@
// 鐢熸垚宸ヤ綔妗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());
- if (orderDetl == null) {
- orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
- }
+// 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);
+//
+// }
WrkDetl wrkDetl = new WrkDetl();
wrkDetl.sync(orderDetl);
wrkDetl.setZpallet(wrkMast.getBarcode());
@@ -345,11 +509,28 @@
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
- // 淇敼璁㈠崟鏄庣粏
- if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
- throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+// // 淇敼璁㈠崟鏄庣粏
+// 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);
+ }
+ //淇敼agv澶囨枡鍖虹姸鎬�
+ if(locMastRgv.getLocSts().equals("O")){
+ locMastRgv.setLocSts("S");
+ locMastRgv.setModiUser(userId);
+ locMastRgv.setModiTime(now);
+ if (!locMastService.updateById(locMastRgv)) {
+ throw new CoolException("棰勭害agv澶囨枡鍖哄簱浣嶇姸鎬佸け璐ワ紝搴撲綅鍙凤細"+locMastRgv.getLocNo());
}
- orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+ }else{
+ throw new CoolException(locMastRgv.getLocNo() + "澶囨枡鍖轰笉鏄┖搴撲綅鐘舵��");
+
}
// 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
locMast = locMastService.selectById(taskDto.getLocNo());
@@ -372,7 +553,9 @@
BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
// 妫�绱㈠簱浣�
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
- StartupDto dto = commonService.getLocNo( 10, devpNo, null,null,null, locTypeDto);
+ FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+
+ StartupDto dto = commonService.getLocNo( 10, devpNo, findLocNoAttributeVo, locTypeDto);
int workNo = dto.getWorkNo();
Date now = new Date();
// 鐢熸垚宸ヤ綔妗�
@@ -429,6 +612,13 @@
if (Cools.isEmpty(param.getOutSite())) {
throw new CoolException("绔欑偣涓嶅瓨鍦�");
}
+
+ // 搴撲綅鍐荤粨涓嶈兘鍑哄簱
+ String firstFrozenLocNo = locMastMapper.findFirstFrozenLocNo(param.getLocNos());
+ if (firstFrozenLocNo != null) {
+ throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!");
+ }
+
for (String locNo : param.getLocNos()) {
// 鑾峰彇宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
@@ -560,11 +750,18 @@
List<LocDetlDto> locDetlDtos = new ArrayList<>();
for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
- LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
+ LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getBrand()
+ ,paramLocDetl.getStandby1(),paramLocDetl.getStandby2(),paramLocDetl.getStandby3(),paramLocDetl.getBoxType1(),paramLocDetl.getBoxType2(),paramLocDetl.getBoxType3());
if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
}
}
if (!locDetlDtos.isEmpty()) {
+ // 搴撲綅鍙烽泦鍚�
+ List<String> locNoList = param.getLocDetls().stream().map(StockOutParam.LocDetl::getLocNo).distinct().collect(Collectors.toList());
+ String firstFrozenLocNo = locMastMapper.findFirstFrozenLocNo(locNoList);
+ if (firstFrozenLocNo != null) {
+ throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!");
+ }
LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
if (locMast.getLocSts().equals("F")){
// 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
@@ -589,6 +786,19 @@
if (Cools.isEmpty(loc)){
throw new CoolException("鏈壘鍒板簱浣�");
}
+ // 鍒ゆ柇搴撲綅鏄惁鍐荤粨
+ String sourceLocFrozen = locMastMapper.findFirstFrozenLocNo(Arrays.asList(sourceLoc.getLocNo(),loc.getLocNo()));
+ if (sourceLocFrozen != null) {
+ throw new CoolException(sourceLocFrozen + "搴撲綅宸茶鍐荤粨!");
+ }
+
+ // 鍒ゆ柇搴撳瓨鏄惁鍐荤粨
+ Optional<LocDetl> first = locDetls.stream().filter(locDetl -> locDetl.getFrozen() == 1).findFirst();
+ if (first.isPresent()) {
+ LocDetl locDetl = first.get();
+ throw new CoolException(locDetl.getLocNo() + "," + locDetl.getMatnr() + "," + locDetl.getBatch() + "搴撳瓨鏄庣粏宸茶鍐荤粨!");
+ }
+
if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))){
throw new CoolException("搴撲綅鐘舵�佸凡鏀瑰彉");
}
@@ -707,6 +917,31 @@
List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
+ // 娣诲姞鍘嗗彶宸ヤ綔涓绘。
+ WrkMastLog wrkMast = new WrkMastLog();
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(5);
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceLocNo(locMast.getLocNo());
+ wrkMast.setLocNo(locMast.getLocNo());
+ wrkMast.setBarcode(locMast.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ wrkMast.setAppeUser(userId);
+ wrkMast.setModiUser(userId);
+
+ // 澧炲垹鏀瑰彧鍒涘缓涓�娆″伐浣滀富妗�
+ boolean updateFlag = true;
+ boolean deleteFlag = true;
+ boolean addFlag = true;
+
// 淇敼鏁伴噺
Iterator<LocDetl> iterator = locDetls.iterator();
while (iterator.hasNext()) {
@@ -720,7 +955,8 @@
if (!locDetl.getAnfme().equals(adjust.getCount())) {
// todo 鐩樼偣璁板綍
// 淇敼搴撳瓨
- if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+ if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(),
+ locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) {
throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
}
// 淇濆瓨璋冩暣璁板綍
@@ -735,6 +971,30 @@
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
adjDetlService.save(adjDetl, userId);
+
+ if (updateFlag) {
+ wrkMast.setWrkNo(commonService.getWorkNo(3));
+ wrkMast.setIoType(23);
+ boolean res = wrkMastLogService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("搴撳瓨璋冩暣-淇敼 淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ updateFlag = false;
+ }
+
+ // 娣诲姞鍘嗗彶宸ヤ綔鏄庣粏
+ WrkDetlLog wrkDetl = new WrkDetlLog();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setIoTime(wrkMast.getIoTime());
+ wrkDetl.setAnfme(adjust.getCount());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ wrkMast.setAppeUser(userId);
+ wrkMast.setModiUser(userId);
+ if (!wrkDetlLogService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
}
iterator.remove();
iterator1.remove();
@@ -745,7 +1005,8 @@
// 鍒犻櫎搴撳瓨
for (LocDetl locDetl : locDetls) {
// todo 鐩樼偣璁板綍
- if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+ if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(),
+ locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) {
throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
}
// 淇濆瓨璋冩暣璁板綍
@@ -760,6 +1021,30 @@
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
adjDetlService.save(adjDetl, userId);
+
+ if (deleteFlag) {
+ wrkMast.setWrkNo(commonService.getWorkNo(3));
+ wrkMast.setIoType(22);
+ boolean res = wrkMastLogService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("搴撳瓨璋冩暣-鍒犻櫎 淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ deleteFlag = false;
+ }
+
+ // 娣诲姞鍘嗗彶宸ヤ綔鏄庣粏
+ WrkDetlLog wrkDetl = new WrkDetlLog();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setIoTime(wrkMast.getIoTime());
+ wrkDetl.setAnfme(0.0);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ wrkMast.setAppeUser(userId);
+ wrkMast.setModiUser(userId);
+ if (!wrkDetlLogService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
}
// 娣诲姞搴撳瓨
@@ -770,6 +1055,7 @@
locDetl.sync(mat);
locDetl.setBatch(adjust.getBatch());
locDetl.setLocNo(locMast.getLocNo());
+ locDetl.setZpallet(locMast.getBarcode());
locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
locDetl.setModiTime(now);
@@ -790,6 +1076,30 @@
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
adjDetlService.save(adjDetl, userId);
+
+ if (addFlag) {
+ wrkMast.setWrkNo(commonService.getWorkNo(3));
+ wrkMast.setIoType(21);
+ boolean res = wrkMastLogService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("搴撳瓨璋冩暣-鏂板 淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ addFlag = false;
+ }
+
+ // 娣诲姞鍘嗗彶宸ヤ綔鏄庣粏
+ WrkDetlLog wrkDetl = new WrkDetlLog();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setIoTime(wrkMast.getIoTime());
+ wrkDetl.setAnfme(adjust.getCount());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ wrkMast.setAppeUser(userId);
+ wrkMast.setModiUser(userId);
+ if (!wrkDetlLogService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
}
// 淇敼搴撲綅鐘舵��
int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
@@ -883,30 +1193,46 @@
//鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺
if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ if(wrkMast.getLocNo() != null){
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ locMast.setLocSts("O");
+ locMast.setModiTime(now);
+ locMast.setModiUser(userId);
+ boolean locMastRes = locMastService.updateById(locMast);
+ if (!locMastRes) {
+ throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+ }
+ }
for (WrkDetl wrkDetl : wrkDetls) {
if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
- if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
- throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
- }
+// if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+// throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+// }
+ OrderInAndOutUtil.decrease(Boolean.FALSE,wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),
+ wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(), wrkDetl.getAnfme());
//淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼
boolean flag = true;
- List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo()));
+// List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo()));
+ Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, wrkDetl.getOrderNo());
+ List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId());
for(OrderDetl orderDetl : orderDetls){
if(orderDetl.getWorkQty() > 0){
flag = false;
}
}
if(flag){
- Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()));
+// Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()));
if(!Cools.isEmpty(order) && order.getSettle()==2){
order.setSettle(1L);
order.setUpdateBy(userId);
order.setUpdateTime(now);
}
- if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){
- throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�");
- }
+// if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){
+// throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�");
+// }
+ OrderInAndOutUtil.updateOrder(Boolean.FALSE,order.getId(),order.getSettle(),userId);
}
}
}
@@ -950,15 +1276,17 @@
// 淇敼搴撲綅鐘舵��
LocMast locMast = locMastService.selectById(locNo);
- if (Cools.isEmpty(locMast)) {
+ if (Cools.isEmpty(locMast) && wrkMast.getIoType() != 12) {
throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
}
- locMast.setLocSts(locSts);
- locMast.setModiTime(now);
- locMast.setModiUser(userId);
- boolean locMastRes = locMastService.updateById(locMast);
- if (!wrkMastRes || !locMastRes) {
- throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+ if(wrkMast.getIoType() != 12){
+ locMast.setLocSts(locSts);
+ locMast.setModiTime(now);
+ locMast.setModiUser(userId);
+ boolean locMastRes = locMastService.updateById(locMast);
+ if (!wrkMastRes || !locMastRes) {
+ throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+ }
}
}
--
Gitblit v1.9.1