From 7203d67cfa3a2fc1cab9b8985dfd35c1797207b1 Mon Sep 17 00:00:00 2001
From: 18516761980 <4761516tqsxp>
Date: 星期一, 06 十二月 2021 18:36:29 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 228 ++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 184 insertions(+), 44 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 b1d2c77..89f2d25 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -12,16 +12,19 @@
import com.zy.asrs.entity.param.LocDetlAdjustParam;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.model.LocDetlDto;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.OutLocDto;
import com.zy.common.model.StartupDto;
+import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import com.zy.ints.entity.WaitMatchk;
import com.zy.ints.service.IoCompleteService;
import com.zy.ints.service.WaitMatchkLogService;
import com.zy.ints.service.WaitMatchkService;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -34,6 +37,7 @@
/**
* Created by vincent on 2020/6/11
*/
+@Slf4j
@Service
public class WorkServiceImpl implements WorkService {
static int i =1;
@@ -71,9 +75,12 @@
private WaitMatchkLogService waitMatchkLogService;
@Autowired
private IoCompleteService ioCompleteService;
+ @Autowired
+ private SlaveProperties slaveProperties;
@Override
@Transactional
+ //鍏ュ簱
public String startupFullPutStore(FullStoreParam param, Long userId) {
// 鍙傛暟闈炵┖鍒ゆ柇
if (Cools.isEmpty(param.getDevpNo(), param.getList())) {
@@ -169,6 +176,7 @@
@Override
@Transactional
+ //鍑哄簱浣滀笟
public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId) {
// 鍚堝苟鍚岀被椤�
@@ -186,47 +194,6 @@
}
}
dtos.add(new OutLocDto(locNo, list));
- }
-
- if(ioType == 107) {
- //鑾峰彇褰撳墠鏃堕棿鎴�
- SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
- String temp = sf.format(new Date());
- //鑾峰彇3浣嶉殢鏈烘暟
- Random rand = new Random();
- Integer r = rand.nextInt(900) + 100;
- String billNo = temp + r;
- //鐢熸垚鐩樼偣閫氱煡妗�
- for (LocDetlDto locDetlDto : locDetlDtos) {
-// String replace = UUID.randomUUID().toString().replace("-", "");
- LocDetl locDetl = locDetlDto.getLocDetl();
-
- //////鎻掑叆鐩樼偣妗e墠锛屽皢閫氱煡妗d箣鍓嶇浉鍚屽簱浣嶆暟鎹浆鍘嗗彶妗�
- List<WaitMatchk> waitMatchks = waitMatchkService.selectList(new EntityWrapper<WaitMatchk>().eq("loc_no",locDetl.getLocNo()));
- for(WaitMatchk one : waitMatchks){
- waitMatchkLogService.save(one.getBillNo(),one.getLocNo(),one.getMatNo());
- waitMatchkService.delete(new EntityWrapper<WaitMatchk>().eq("bill_no",one.getBillNo()).eq("loc_no",one.getLocNo()).eq("mat_no",one.getMatNo()));
- }
-
- //鐢熸垚鐩樼偣妗�
- WaitMatchk waitMatchk = new WaitMatchk();
- waitMatchk.setBillNo(billNo);//璁㈠崟缂栧彿
- waitMatchk.setLocNo(locDetl.getLocNo());//搴撲綅鍙�
- waitMatchk.setStockQty(locDetl.getQty());
- waitMatchk.setMatNo(locDetl.getMatNo());//浜у搧缂栧彿
- waitMatchk.setMatName(locDetl.getMatName());//閾插钩鍚嶇О
- waitMatchk.setSeqNo(i);
-// waitMatchk.setIoTime(new Date());
- waitMatchk.setZpallet(locDetl.getZpallet());
- waitMatchk.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
- waitMatchk.setAppeTime(new Date());
- waitMatchk.setModiUser(userId);
- waitMatchk.setModiTime(new Date());
- if (!waitMatchkService.insert(waitMatchk)) {
- throw new CoolException("淇濆瓨鐩樼偣妗eけ璐�");
- }
- i++;
- }
}
// 鐢熸垚宸ヤ綔妗�
@@ -248,7 +215,27 @@
throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
}
// 鐢熸垚宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+ int rok;
+ if(ioType==103||ioType==107){
+ rok=2;
+ }else{
+ rok=1;
+ }
+ int workNo = commonService.getWorkNo(rok);
+
+ // 褰撴繁搴撲綅鍑哄簱鏃讹紝鏌ユ壘瀵瑰簲鐨勬祬搴撲綅鏄惁涔熸湁鍑哄簱浠诲姟,濡傛灉鏈夛紝灏卞鍔犲叾浼樺厛绾�
+ boolean reduce = false;
+ if (Utils.isDeepLoc(slaveProperties, dto.getLocNo())) {
+ String shallowLoc = Utils.getShallowLoc(slaveProperties, dto.getLocNo());
+ if (locNos.contains(shallowLoc)) {
+ reduce = true;
+ }
+ }
+
+ // 娣卞簱浣嶇Щ搴�
+ if (!reduce) {
+ moveLocForDeepLoc(locMast.getCrnNo(), dto.getLocNo());
+ }
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
@@ -303,11 +290,54 @@
} else {
throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
}
+
+ if(ioType == 107) {
+ //鑾峰彇褰撳墠鏃堕棿鎴�
+ SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
+ String temp = sf.format(new Date());
+ //鑾峰彇3浣嶉殢鏈烘暟
+ Random rand = new Random();
+ Integer r = rand.nextInt(900) + 100;
+ String billNo = temp + r;
+ //鐢熸垚鐩樼偣閫氱煡妗�
+ for (LocDetlDto locDetlDto : locDetlDtos) {
+// String replace = UUID.randomUUID().toString().replace("-", "");
+ LocDetl locDetl = locDetlDto.getLocDetl();
+
+ //////鎻掑叆鐩樼偣妗e墠锛屽皢閫氱煡妗d箣鍓嶇浉鍚屽簱浣嶆暟鎹浆鍘嗗彶妗�
+ List<WaitMatchk> waitMatchks = waitMatchkService.selectList(new EntityWrapper<WaitMatchk>().eq("loc_no",locDetl.getLocNo()));
+ for(WaitMatchk one : waitMatchks){
+ waitMatchkLogService.save(one.getBillNo(),one.getLocNo(),one.getMatNo());
+ waitMatchkService.delete(new EntityWrapper<WaitMatchk>().eq("bill_no",one.getBillNo()).eq("loc_no",one.getLocNo()).eq("mat_no",one.getMatNo()));
+ }
+
+ //鐢熸垚鐩樼偣妗�
+ WaitMatchk waitMatchk = new WaitMatchk();
+ waitMatchk.setBillNo(billNo);//璁㈠崟缂栧彿
+ waitMatchk.setLocNo(locDetl.getLocNo());//搴撲綅鍙�
+ waitMatchk.setStockQty(locDetl.getQty());
+ waitMatchk.setMatNo(locDetl.getMatNo());//浜у搧缂栧彿
+ waitMatchk.setMatName(locDetl.getMatName());//閾插钩鍚嶇О
+ waitMatchk.setSeqNo(i);
+// waitMatchk.setIoTime(new Date());
+ waitMatchk.setZpallet(locDetl.getZpallet());
+ waitMatchk.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ waitMatchk.setAppeTime(new Date());
+ waitMatchk.setModiUser(userId);
+ waitMatchk.setModiTime(new Date());
+ if (!waitMatchkService.insert(waitMatchk)) {
+ throw new CoolException("淇濆瓨鐩樼偣妗eけ璐�");
+ }
+ i++;
+ }
+ }
+
}
}
@Override
@Transactional
+ //绌烘澘鍏ュ簱
public String emptyPlateIn(Integer devpNo, Long userId) {
// 婧愮珯鐐圭姸鎬佹娴�
BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
@@ -367,18 +397,20 @@
@Override
@Transactional
+ //绌烘澘鍑哄簱
public void emptyPlateOut(EmptyPlateOutParam param, Long userId) {
if (Cools.isEmpty(param.getOutSite())) {
throw new CoolException("绔欑偣涓嶅瓨鍦�");
}
for (String locNo : param.getLocNos()) {
// 鑾峰彇宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+ int workNo = commonService.getWorkNo(1);
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectById(locNo);
if (Cools.isEmpty(locMast)) {
throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
}
+
// 鑾峰彇婧愮珯
Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
.eq("type_no", 110)
@@ -428,6 +460,7 @@
@Override
@Transactional
+ //鐩樼偣鍑哄簱
public void locCheckOut(StockOutParam param, Long userId) {
// 鐩爣绔欑偣鐘舵�佹娴�
BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
@@ -570,7 +603,7 @@
throw new CoolException("搴撲綅涓嶅瓨鍦�");
}
//鏌ヨ搴撲綅鐘舵��
- if (locMast.getLocSts().equals("O")){
+ if (locMast.getLocSts().equals("O") || locMast.getLocSts().equals("D")){
//鏇存柊搴撲綅鐘舵��
locMast.setLocSts("F");
// boolean b = locMastService.updateById(locMast);
@@ -799,4 +832,111 @@
}
}
+ /**
+ * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆
+ */
+ public void moveLocForDeepLoc(Integer crnNo, String locNo){
+ // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
+ if (Utils.isDeepLoc(slaveProperties, locNo)) {
+ String shallowLocNo = Utils.getShallowLoc(slaveProperties, locNo);
+ LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+ // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+ if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+ WrkMast waitWrkMast = wrkMastService.selectByLocNo(shallowLocNo);
+ if (null == waitWrkMast) {
+ log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+ throw new CoolException(shallowLocNo + "搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒");
+ } else {
+ waitWrkMast.setIoPri(15D);
+ waitWrkMast.setModiTime(new Date());
+ if (!wrkMastService.updateById(waitWrkMast)) {
+ log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+ throw new CoolException("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿=" + waitWrkMast.getWrkNo());
+ }
+ }
+ } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+ // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
+ List<Integer> rows = locMastService.queryDistinctRow(crnNo);
+ LocMast loc = null;
+ for (Integer row : rows) {
+ if (Utils.isDeepLoc(slaveProperties, row)) {
+ loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1(),shallowLoc.getLocType2(),shallowLoc.getLocType3());
+ if (null != loc) { break; }
+ }
+ }
+ if (null == loc) {
+ for (Integer row : rows) {
+ if (Utils.isShallowLoc(slaveProperties, row)) {
+ loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1(),shallowLoc.getLocType2(),shallowLoc.getLocType3());
+ if (null != loc) { break; }
+ }
+ }
+ }
+ if (null == loc) {
+ throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+ }
+
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(0);
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+ wrkMast.setIoPri(13D);
+ wrkMast.setCrnNo(crnNo);
+ wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
+ wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+ wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+ wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeTime(new Date());
+ wrkMast.setModiTime(new Date());
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 宸ヤ綔妗f槑缁嗕繚瀛�
+ if (shallowLoc.getLocSts().equals("F")) {
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+ for (LocDetl locDetl : locDetls) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(new Date());
+ wrkDetl.setQty(locDetl.getQty());
+ VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+ wrkDetl.setAppeTime(new Date());
+ wrkDetl.setModiTime(new Date());
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ }
+ // 淇敼婧愬簱浣嶇姸鎬�
+ if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+ shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+ shallowLoc.setModiTime(new Date());
+ if (!locMastService.updateById(shallowLoc)){
+ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ }
+ } else {
+ throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
+ }
+ // 淇敼鐩爣搴撲綅鐘舵��
+ if (loc.getLocSts().equals("O")) {
+ loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+ loc.setModiTime(new Date());
+ if (!locMastService.updateById(loc)) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException("绉昏浆澶辫触");
+ }
+ }
+ }
+ }
+
}
--
Gitblit v1.9.1