From e84d4700e32dba450aa4d239779fc39f38ae4afa Mon Sep 17 00:00:00 2001
From: admin <841110950@qq.com>
Date: 星期三, 01 九月 2021 17:22:32 +0800
Subject: [PATCH] 1.0.8
---
src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java | 102 ++++++++++++++++++++++++++------------------------
1 files changed, 53 insertions(+), 49 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java
index 8bc2e2c..e8ee621 100644
--- a/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java
@@ -11,6 +11,9 @@
import com.zy.common.model.LocDetlDto;
import com.zy.common.model.OutLocDto;
import com.zy.common.service.CommonService;
+import com.zy.ints.entity.WaitMatout;
+import com.zy.ints.mapper.WaitMatoutMapper;
+import com.zy.ints.service.WaitMatoutService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -38,58 +41,64 @@
private WrkDetlService wrkDetlService;
@Autowired
private WrkMastService wrkMastService;
+ @Autowired
+ private WaitMatoutMapper waitMatoutMapper;
+ @Autowired
+ private WaitMatoutService waitMatoutService;
@Override
@Transactional
public void startupMatOut(StockOutParam param, Long userId){
+
// 鐩爣绔欑偣鐘舵�佹娴�
BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
// 鑾峰彇搴撲綅鏄庣粏
List<LocDetlDto> locDetlDtos = new ArrayList<>();
for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
- if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatNo(), paramLocDetl.getCount())) {
- LocDetl sqlParam = new LocDetl();
- sqlParam.setLocNo(paramLocDetl.getLocNo());
- sqlParam.setMatNo(paramLocDetl.getMatNo());
- LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam));
- if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
+ if (!Cools.isEmpty(paramLocDetl.getMatNo())) {
+ //鏌ヨ鎵�鏈夊簱浣嶇姸鎬佷负F鐨勫簱浣嶄俊鎭�
+ List<LocDetl> locDetls=locDetlService.getlocDetlList(paramLocDetl.getMatNo());
+ if (locDetls.size()==0){
+ throw new CoolException("搴撲綅鐘舵�佸嚭閿�");
+ }
+ for (LocDetl locDetl : locDetls) {
+ WaitMatout waitMatout = waitMatoutService.selectOne(new EntityWrapper<WaitMatout>().eq("bill_no", paramLocDetl.getBillNo()).eq("seq_no",paramLocDetl.getSeqNo()));
+ Double outQty = paramLocDetl.getCount() - waitMatout.getOutQty();
+ if(waitMatout.getOutQty() >= waitMatout.getQty()){
+ break;
+ }
+ // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+ Double sumCount=locDetlService.getLocDetlSumQty(locDetl.getLocNo());
+ int ioType=0;
+ ioType=sumCount-outQty>0?103 : 101;
+
+ if (outQty >= locDetl.getQty()){
+ //鐢熸垚鏂囨。璁板綍
+ stockOut(waitMatout.getBillNo(),staNo,new LocDetlDto(locDetl,locDetl.getQty()),ioType,userId);
+ waitMatout.setOutQty(waitMatout.getOutQty() + locDetl.getQty());
+ //淇敼璁板綍
+ Integer update = waitMatoutMapper.update(waitMatout, new EntityWrapper<WaitMatout>().eq("bill_no", paramLocDetl.getBillNo())
+ .eq("seq_no",paramLocDetl.getSeqNo()));
+ }else {
+ //鐢熸垚鏂囨。璁板綍
+ stockOut(waitMatout.getBillNo(),staNo,new LocDetlDto(locDetl,outQty),ioType,userId);
+ waitMatout.setOutQty(waitMatout.getOutQty() + outQty);
+ //淇敼璁板綍
+ Integer update = waitMatoutMapper.update(waitMatout, new EntityWrapper<WaitMatout>().eq("bill_no", paramLocDetl.getBillNo())
+ .eq("seq_no",paramLocDetl.getSeqNo()));
+ }
+ }
}
- }
- if (!locDetlDtos.isEmpty()) {
- // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
- stockOut(staNo, locDetlDtos, null, userId);
- } else {
- throw new CoolException("搴撲綅浜у搧涓嶅瓨鍦�");
}
}
@Override
@Transactional
- public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId) {
- // 鍚堝苟鍚岀被椤�
- Set<String> locNos = new HashSet<>();
- locDetlDtos.forEach(dto -> locNos.add(dto.getLocDetl().getLocNo()));
- List<OutLocDto> dtos = new ArrayList<>();
- for (String locNo : locNos) {
- List<LocDetlDto> list = new ArrayList<>();
- Iterator<LocDetlDto> iterator = locDetlDtos.iterator();
- while (iterator.hasNext()) {
- LocDetlDto dto = iterator.next();
- if (locNo.equals(dto.getLocDetl().getLocNo())) {
- list.add(dto);
- iterator.remove();
- }
- }
- dtos.add(new OutLocDto(locNo, list));
- }
+ public void stockOut(String billNo,BasDevp staNo, LocDetlDto locDetlDtos, Integer ioType, Long userId) {
// 鐢熸垚宸ヤ綔妗�
- for (OutLocDto dto : dtos) {
- // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
- if (ioType == null) {
- ioType = dto.isAll() ? 101 : 103;
- }
+ LocDetl locDetl=locDetlDtos.getLocDetl();
// 鑾峰彇搴撲綅
- LocMast locMast = locMastService.selectById(dto.getLocNo());
+ LocMast locMast = locMastService.selectById(locDetl.getLocNo());
// 鑾峰彇璺緞
Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
.eq("type_no", ioType)
@@ -111,7 +120,7 @@
wrkMast.setCrnNo(locMast.getCrnNo());
wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
- wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
+ wrkMast.setSourceLocNo(locDetl.getLocNo()); // 婧愬簱浣�
wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
wrkMast.setPicking("N"); // 鎷f枡
wrkMast.setExitMk("N"); // 閫�鍑�
@@ -122,39 +131,34 @@
wrkMast.setModiUser(userId);
wrkMast.setModiTime(new Date());
if (!wrkMastService.insert(wrkMast)) {
- throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+locDetl.getLocNo());
}
- // 鐢熸垚宸ヤ綔妗f槑缁�
- for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
// 鍑哄簱鏃讹紝鏁伴噺涓�0鐨勭洿鎺ュ拷鐣�
- if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+ if (locDetlDtos.getCount()==null || locDetlDtos.getCount() <= 0.0D) {return;}
WrkDetl wrkDetl = new WrkDetl();
wrkDetl.setWrkNo(workNo);
wrkDetl.setIoTime(new Date());
- Double qty = ioType==101?detlDto.getLocDetl().getQty():detlDto.getCount();
- wrkDetl.setQty(qty); // 鏁伴噺
- VersionUtils.setWrkDetl(wrkDetl, detlDto.getLocDetl()); // 鐗堟湰鎺у埗
+ wrkDetl.setQty(locDetlDtos.getCount()); // 鏁伴噺
+ VersionUtils.setWrkDetl(wrkDetl, locDetlDtos.getLocDetl()); // 鐗堟湰鎺у埗
wrkDetl.setAppeTime(new Date());
wrkDetl.setAppeUser(userId);
wrkDetl.setModiTime(new Date());
+ wrkDetl.setBillNo(billNo);
wrkDetl.setModiUser(userId);
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
- }
// 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
- locMast = locMastService.selectById(dto.getLocNo());
+ locMast = locMastService.selectById(locDetl.getLocNo());
if (locMast.getLocSts().equals("F")) {
locMast.setLocSts(ioType==101?"R":"P");
locMast.setModiUser(userId);
locMast.setModiTime(new Date());
if (!locMastService.updateById(locMast)) {
- throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+locDetl.getLocNo());
}
} else {
- throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
}
}
- }
-
}
--
Gitblit v1.9.1