From 5751b1892a26df14007984776d9ebca4d3272786 Mon Sep 17 00:00:00 2001
From: yxFwq <1>
Date: 星期六, 20 七月 2024 17:36:26 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 900 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 835 insertions(+), 65 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 25c72b6..418127e 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -8,11 +8,9 @@
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.EmptyPlateOutParam;
-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.entity.param.*;
import com.zy.asrs.service.*;
+import com.zy.asrs.utils.OutboundAllocationUtil;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.*;
import com.zy.common.model.enums.IoWorkType;
@@ -46,6 +44,8 @@
@Autowired
private WrkMastService wrkMastService;
@Autowired
+ private DocTypeService docTypeService;
+ @Autowired
private WrkDetlService wrkDetlService;
@Autowired
private BasDevpService basDevpService;
@@ -75,6 +75,8 @@
private RowLastnoService rowLastnoService;
@Autowired
private SlaveProperties slaveProperties;
+ @Autowired
+ private WaitPakinService waitPakinService;
@Override
@Transactional
@@ -88,14 +90,14 @@
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());
- StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto, 0);
+// List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
+ StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), param.getList().get(0).getMatnr(),null,null, locTypeDto);
// 鐢熸垚宸ヤ綔鍙�
int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
- wrkMast.setIoTime(new Date());
+ wrkMast.setIoTime(now);
wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
wrkMast.setIoPri(13D); // 浼樺厛绾э細13
@@ -129,7 +131,7 @@
detlDtos.add(detlDto);
}
});
- wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId);
+ wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId, now);
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(workNo);
sourceStaNo.setModiUser(userId);
@@ -159,19 +161,342 @@
BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
// 鑾峰彇搴撲綅鏄庣粏
List<LocDetlDto> locDetlDtos = new ArrayList<>();
+ List<String> locNoList = new ArrayList<>();
for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
+ if (!locNoList.contains(paramLocDetl.getLocNo())){
+ locNoList.add(paramLocDetl.getLocNo());
+ }
if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
- if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
+ if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount(), param.getOrderNo()));
}
}
+
+ List<String> locNoOtherListOne = new ArrayList<>();
+ for (String locNo :locNoList) {
+ //灏忔枡绠变即鐢熷嚭搴�
+ if (Utils.getRow(locNo) <= 8) {
+ String locNoOther = staNoOther(locNo);
+ if (!locNoList.contains(locNoOther)) {
+ locNoOtherListOne.add(locNoOther);
+ }
+ }
+ }
+
if (!locDetlDtos.isEmpty()) {
- // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
- stockOut(staNo, locDetlDtos, null, userId);
+ 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.鍑哄簱
+ stockOut(staNo, locDetlDtos, null, userId);
+ }else {
+ throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+ }
} else {
throw new CoolException("搴撳瓨涓嶅瓨鍦�");
}
+
+
+ for (String locNo:locNoOtherListOne){
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
+
+ //浼寸敓鍏ュ簱宸ヤ綔鍙�
+ int workNoRu = commonService.getWorkNo(0);
+
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(locNo);
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
+ }
+ if (locMast.getLocSts().equals("D")){
+ // 鑾峰彇婧愮珯
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", 110)
+ .eq("stn_no", param.getOutSite())
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ Integer sourceStaNo = staDesc.getCrnStn();
+ if (Cools.isEmpty(sourceStaNo)) {
+ throw new CoolException("妫�绱㈡簮绔欏け璐�");
+ }
+ Date now = new Date();
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
+ wrkMast.setIoPri(10D);
+ wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+ wrkMast.setStaNo(crnStaRu(locMast.getCrnNo())); // 鐩爣绔� 鍫嗗灈鏈哄叆搴撳彛
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ wrkMast.setWorkNoOther(workNoRu);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
+ if (locMast.getLocSts().equals("D")){
+ locMast.setLocSts("R");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+ }
+
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMastRu = new WrkMast();
+ wrkMastRu.setWrkNo(workNoRu);
+ wrkMastRu.setIoTime(new Date());
+ wrkMastRu.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMastRu.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
+ wrkMastRu.setIoPri(13D); // 浼樺厛绾�
+ wrkMastRu.setCrnNo(wrkMast.getCrnNo());
+ wrkMastRu.setSourceStaNo(wrkMast.getSourceStaNo());
+ wrkMastRu.setStaNo(wrkMast.getStaNo());
+// wrkMast.setLocNo(dto.getLocNo());
+ wrkMastRu.setFullPlt("N"); // 婊℃澘
+ wrkMastRu.setPicking("N"); // 鎷f枡
+ wrkMastRu.setExitMk("N"); // 閫�鍑�
+ wrkMastRu.setEmptyMk("Y"); // 绌烘澘
+ wrkMastRu.setLinkMis("Y");
+ wrkMastRu.setCtnType(wrkMast.getCtnType()); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMastRu.setAppeTime(new Date());
+ wrkMastRu.setModiTime(new Date());
+ boolean resOther = wrkMastService.insert(wrkMastRu);
+ if (!resOther) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ }else if (locMast.getLocSts().equals("F")){
+ // 鑾峰彇婧愮珯
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", 101)
+ .eq("stn_no", param.getOutSite())
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ Integer sourceStaNo = staDesc.getCrnStn();
+ if (Cools.isEmpty(sourceStaNo)) {
+ throw new CoolException("妫�绱㈡簮绔欏け璐�");
+ }
+
+ Date now = new Date();
+ List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo));
+
+// 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(101); // 鍏ュ嚭搴撶姸鎬侊細 101.婊℃澘鍑哄簱
+ wrkMast.setIoPri(13D);
+ wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+ wrkMast.setStaNo(crnStaRu(locMast.getCrnNo())); // 鐩爣绔� 鍫嗗灈鏈哄叆搴撳彛
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ wrkMast.setWorkNoOther(workNoRu);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+ // 鏇存柊搴撲綅鐘舵�� F.婊℃澘 -> R.鍑哄簱棰勭害
+ if (locMast.getLocSts().equals("F")){
+ locMast.setLocSts("R");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+ }
+
+
+
+ List<WaitPakin> waitPakins = new ArrayList<>();
+ for (LocDetl locDetl:locDetlList){
+ Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException("瑙勬牸娣诲姞澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ WaitPakin waitPakin = new WaitPakin();
+ waitPakin.sync(locDetl);
+ waitPakin.setBatch(locDetl.getBatch()); //鏈ㄧ缂栫爜 //鎵规 鍞竴鍊� 绠卞彿
+ waitPakin.setModel(locDetl.getModel()); //鍗峰彿 鍞竴鍊�
+ waitPakin.setIoStatus("Y"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme(locDetl.getAnfme()); // 鏁伴噺
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ waitPakin.setLocNo(null);
+ if (!waitPakinService.insert(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ waitPakins.add(waitPakin);
+ }
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMastRu = new WrkMast();
+ wrkMastRu.setWrkNo(workNoRu);
+ wrkMastRu.setIoTime(new Date());
+ wrkMastRu.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMastRu.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMastRu.setIoPri(13D); // 浼樺厛绾�
+ wrkMastRu.setSourceStaNo(sourceStaNo); // 婧愮珯
+ wrkMastRu.setStaNo(crnStaRu(locMast.getCrnNo())); // 鐩爣绔� 鍫嗗灈鏈哄叆搴撳彛
+ wrkMastRu.setCrnNo(locMast.getCrnNo());
+ wrkMastRu.setBarcode(locMast.getBarcode()); // 鎵樼洏鐮�
+ wrkMastRu.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMastRu.setPicking("N"); // 鎷f枡
+ wrkMastRu.setExitMk("N"); // 閫�鍑�
+ wrkMastRu.setEmptyMk("N"); // 绌烘澘
+ wrkMastRu.setLinkMis("Y");
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMastRu.setAppeTime(now);
+ wrkMastRu.setModiTime(now);
+ boolean resOther = wrkMastService.insert(wrkMastRu);
+ if (!resOther) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ waitPakins.forEach(waitPakin -> {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(waitPakin);
+ wrkDetl.setWrkNo(wrkMastRu.getWrkNo());
+ wrkDetl.setIoTime(wrkMastRu.getIoTime());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
+
+ }else {
+ throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+ }
+ }
}
+ @Override
+ @Transactional
+ public void startupFullTakeStoreOrder(StockOutParam param, Long userId) {
+ if (Cools.isEmpty(param) || Cools.isEmpty(param.getLocDetls())){
+ throw new CoolException("鍙傛暟涓虹┖");
+ }
+ if (Cools.isEmpty(param.getOrderNo())){
+ throw new CoolException("璁㈠崟鍙峰弬鏁颁负绌�");
+ }
+ DocType docType = docTypeService.selectOrAdd("鎵嬪姩鍑哄簱鍗�", Boolean.FALSE);
+ Order order = orderService.selectByNo(param.getOrderNo());
+ if (Cools.isEmpty(order)){
+ Date now = new Date();
+ order = new Order(
+ String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+ param.getOrderNo(), // 璁㈠崟缂栧彿
+ DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
+ docType.getDocId(), // 鍗曟嵁绫诲瀷
+ null, // 椤圭洰缂栧彿
+ null, //
+ null, // 璋冩嫧椤圭洰缂栧彿
+ null, // 鍒濆绁ㄦ嵁鍙�
+ null, // 绁ㄦ嵁鍙�
+ null, // 瀹㈡埛缂栧彿
+ null, // 瀹㈡埛
+ null, // 鑱旂郴鏂瑰紡
+ null, // 鎿嶄綔浜哄憳
+ null, // 鍚堣閲戦
+ null, // 浼樻儬鐜�
+ null, // 浼樻儬閲戦
+ null, // 閿�鍞垨閲囪喘璐圭敤鍚堣
+ null, // 瀹炰粯閲戦
+ null, // 浠樻绫诲瀷
+ null, // 涓氬姟鍛�
+ null, // 缁撶畻澶╂暟
+ null, // 閭垂鏀粯绫诲瀷
+ null, // 閭垂
+ null, // 浠樻鏃堕棿
+ null, // 鍙戣揣鏃堕棿
+ null, // 鐗╂祦鍚嶇О
+ null, // 鐗╂祦鍗曞彿
+// 2L, // 璁㈠崟鐘舵��
+ 1L, // 璁㈠崟鐘舵��
+ 1, // 鐘舵��
+ userId, // 娣诲姞浜哄憳
+ now, // 娣诲姞鏃堕棿
+ userId, // 淇敼浜哄憳
+ now, // 淇敼鏃堕棿
+ null // 澶囨敞
+ );
+ if (!orderService.insert(order)) {
+ throw new CoolException("淇濆瓨璁㈠崟涓绘。澶辫触");
+ }
+ // 鍗曟嵁鏄庣粏妗�
+ List<DetlDto> list = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
+ int i=0;
+ for (StockOutParam.LocDetl locDetl : locDetls) {
+ i++;
+ Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(locDetl.getMatnr() + "鐗╂枡缂栫爜妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
+ }
+ OrderDetl orderDetl = new OrderDetl();
+ orderDetl.sync(mat);
+ orderDetl.setSuppCode(String.valueOf(i)); // 琛屽彿
+ orderDetl.setManu(locDetl.getLocNo()); //搴撲綅鍙�
+ orderDetl.setBatch(locDetl.getBatch()); //鏈ㄧ缂栫爜
+ orderDetl.setAnfme(locDetl.getAnfme());//鍑哄簱鏁伴噺
+ orderDetl.setModel(locDetl.getModel());//鎵规
+ orderDetl.setSpecs(locDetl.getSpecs());//瑙勬牸
+ orderDetl.setBrand(locDetl.getBrand());//鏈ㄧ绫诲瀷
+ orderDetl.setBarcode(locDetl.getZpallet());//鏈ㄧ绫诲瀷
+ orderDetl.setWeight(locDetl.getWeight());
+// orderDetl.setWorkQty(locDetl.getAnfme());
+ orderDetl.setWorkQty(0.0);
+ orderDetl.setOrderId(order.getId());
+ orderDetl.setOrderNo(order.getOrderNo());
+ orderDetl.setOrigin(locDetl.getOrigin());
+ orderDetl.setCreateBy(userId);
+ orderDetl.setCreateTime(now);
+ orderDetl.setUpdateBy(userId);
+ orderDetl.setUpdateTime(now);
+ orderDetl.setStatus(1);
+ orderDetl.setQty(0.0D);
+ if (!orderDetlService.insert(orderDetl)) {
+ throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+
+// List<StockOutParam> stockOutParams = OutboundAllocationUtil.OutboundClassification(param);
+// for (StockOutParam stockOutParam : stockOutParams){
+// startupFullTakeStore(stockOutParam,userId);
+// }
+
+ } else {
+ throw new CoolException("璁㈠崟鍙烽噸澶嶏紝璁㈠崟"+param.getOrderNo()+"宸插瓨鍦紒锛侊紒");
+ }
+
+ }
+
@Override
@Transactional
@@ -206,8 +531,15 @@
assert ioType != null;
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectById(dto.getLocNo());
+
+ Integer outSta = staNo.getDevNo();
+// //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202
+// if(locMast.getCrnNo()==2){
+// outSta = ioType == 101 ? 204 : 202;
+// }
+
// 鑾峰彇璺緞
- StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo());
+ StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
// 鐢熸垚宸ヤ綔妗�
@@ -226,6 +558,10 @@
wrkMast.setExitMk("N"); // 閫�鍑�
wrkMast.setEmptyMk("N"); // 绌烘澘
wrkMast.setLinkMis("N");
+ wrkMast.setSheetNo("0");
+ if (staDesc.getStnNo()<118 || staDesc.getStnNo()>121){
+ wrkMast.setSheetNo("3");
+ }
wrkMast.setBarcode(locMast.getBarcode());
wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
wrkMast.setAppeTime(now);
@@ -239,7 +575,7 @@
if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
WrkDetl wrkDetl = new WrkDetl();
wrkDetl.sync(detlDto.getLocDetl());
- wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+ wrkDetl.setOrderNo(detlDto.getOrderNo()); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
wrkDetl.setWrkNo(workNo);
wrkDetl.setIoTime(now);
Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
@@ -331,7 +667,7 @@
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
// 淇敼璁㈠崟鏄庣粏
- if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+ if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
}
orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -357,12 +693,13 @@
BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
// 妫�绱㈠簱浣�
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
- StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto, 0);
+ StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null,null,null, locTypeDto);
int workNo = dto.getWorkNo();
+ Date now = new Date();
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
- wrkMast.setIoTime(new Date());
+ wrkMast.setIoTime(now);
wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
wrkMast.setIoPri(10D); // 浼樺厛绾э細10
@@ -378,9 +715,9 @@
wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
// 鎿嶄綔浜哄憳鏁版嵁
wrkMast.setAppeUser(userId);
- wrkMast.setAppeTime(new Date());
+ wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
- wrkMast.setModiTime(new Date());
+ wrkMast.setModiTime(now);
boolean res = wrkMastService.insert(wrkMast);
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
@@ -388,7 +725,7 @@
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(workNo);
sourceStaNo.setModiUser(userId);
- sourceStaNo.setModiTime(new Date());
+ sourceStaNo.setModiTime(now);
if (!basDevpService.updateById(sourceStaNo)){
throw new CoolException("鏇存柊婧愮珯澶辫触");
}
@@ -397,7 +734,7 @@
if (locMast.getLocSts().equals("O")){
locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
locMast.setModiUser(userId);
- locMast.setModiTime(new Date());
+ locMast.setModiTime(now);
if (!locMastService.updateById(locMast)){
throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
}
@@ -413,9 +750,330 @@
if (Cools.isEmpty(param.getOutSite())) {
throw new CoolException("绔欑偣涓嶅瓨鍦�");
}
+ List<String> locNoOtherListOne = new ArrayList<>();
for (String locNo : param.getLocNos()) {
+
+ //灏忔枡绠变即鐢熷嚭搴�
+ if (Utils.getRow(locNo)<=8){
+ String locNoOther = staNoOther(locNo);
+ if (!param.getLocNos().contains(locNoOther)){
+ locNoOtherListOne.add(locNoOther);
+ }
+ }
+
// 鑾峰彇宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(locNo);
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
+ }
+ if (!locMast.getLocSts().equals("D")){
+ throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+ }
+ // 鑾峰彇婧愮珯
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", 110)
+ .eq("stn_no", param.getOutSite())
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ Integer sourceStaNo = staDesc.getCrnStn();
+ if (Cools.isEmpty(sourceStaNo)) {
+ throw new CoolException("妫�绱㈡簮绔欏け璐�");
+ }
+ Date now = new Date();
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
+ wrkMast.setIoPri(10D);
+ wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+ wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
+ if (locMast.getLocSts().equals("D")){
+ locMast.setLocSts("R");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+ }
+ }
+
+ for (String locNo:locNoOtherListOne){
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
+
+ //浼寸敓鍏ュ簱宸ヤ綔鍙�
+ int workNoRu = commonService.getWorkNo(0);
+
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(locNo);
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
+ }
+ if (locMast.getLocSts().equals("D")){
+ // 鑾峰彇婧愮珯
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", 110)
+ .eq("stn_no", param.getOutSite())
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ Integer sourceStaNo = staDesc.getCrnStn();
+ if (Cools.isEmpty(sourceStaNo)) {
+ throw new CoolException("妫�绱㈡簮绔欏け璐�");
+ }
+ Date now = new Date();
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
+ wrkMast.setIoPri(10D);
+ wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+ wrkMast.setStaNo(crnStaRu(locMast.getCrnNo())); // 鐩爣绔� 鍫嗗灈鏈哄叆搴撳彛
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ wrkMast.setWorkNoOther(workNoRu);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
+ if (locMast.getLocSts().equals("D")){
+ locMast.setLocSts("R");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+ }
+
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMastRu = new WrkMast();
+ wrkMastRu.setWrkNo(workNoRu);
+ wrkMastRu.setIoTime(new Date());
+ wrkMastRu.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMastRu.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
+ wrkMastRu.setIoPri(13D); // 浼樺厛绾�
+ wrkMastRu.setCrnNo(wrkMast.getCrnNo());
+ wrkMastRu.setSourceStaNo(wrkMast.getSourceStaNo());
+ wrkMastRu.setStaNo(wrkMast.getStaNo());
+// wrkMast.setLocNo(dto.getLocNo());
+ wrkMastRu.setFullPlt("N"); // 婊℃澘
+ wrkMastRu.setPicking("N"); // 鎷f枡
+ wrkMastRu.setExitMk("N"); // 閫�鍑�
+ wrkMastRu.setEmptyMk("Y"); // 绌烘澘
+ wrkMastRu.setLinkMis("Y");
+ wrkMastRu.setCtnType(wrkMast.getCtnType()); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMastRu.setAppeTime(new Date());
+ wrkMastRu.setModiTime(new Date());
+ boolean resOther = wrkMastService.insert(wrkMastRu);
+ if (!resOther) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ }else if (locMast.getLocSts().equals("F")){
+ // 鑾峰彇婧愮珯
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", 110)
+ .eq("stn_no", param.getOutSite())
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ Integer sourceStaNo = staDesc.getCrnStn();
+ if (Cools.isEmpty(sourceStaNo)) {
+ throw new CoolException("妫�绱㈡簮绔欏け璐�");
+ }
+
+ Date now = new Date();
+ List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo));
+
+// 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(101); // 鍏ュ嚭搴撶姸鎬侊細 101.婊℃澘鍑哄簱
+ wrkMast.setIoPri(13D);
+ wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+ wrkMast.setStaNo(crnStaRu(locMast.getCrnNo())); // 鐩爣绔� 鍫嗗灈鏈哄叆搴撳彛
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ wrkMast.setWorkNoOther(workNoRu);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+ // 鏇存柊搴撲綅鐘舵�� F.婊℃澘 -> R.鍑哄簱棰勭害
+ if (locMast.getLocSts().equals("F")){
+ locMast.setLocSts("R");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+ }
+
+
+
+ List<WaitPakin> waitPakins = new ArrayList<>();
+ for (LocDetl locDetl:locDetlList){
+ Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException("瑙勬牸娣诲姞澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ WaitPakin waitPakin = new WaitPakin();
+ waitPakin.sync(locDetl);
+ waitPakin.setBatch(locDetl.getBatch()); //鏈ㄧ缂栫爜 //鎵规 鍞竴鍊� 绠卞彿
+ waitPakin.setModel(locDetl.getModel()); //鍗峰彿 鍞竴鍊�
+ waitPakin.setIoStatus("Y"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme(locDetl.getAnfme()); // 鏁伴噺
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ waitPakin.setLocNo(null);
+ if (!waitPakinService.insert(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ waitPakins.add(waitPakin);
+ }
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMastRu = new WrkMast();
+ wrkMastRu.setWrkNo(workNoRu);
+ wrkMastRu.setIoTime(new Date());
+ wrkMastRu.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMastRu.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMastRu.setIoPri(13D); // 浼樺厛绾�
+ wrkMastRu.setSourceStaNo(sourceStaNo); // 婧愮珯
+ wrkMastRu.setStaNo(crnStaRu(locMast.getCrnNo())); // 鐩爣绔� 鍫嗗灈鏈哄叆搴撳彛
+ wrkMastRu.setCrnNo(locMast.getCrnNo());
+ wrkMastRu.setBarcode(locMast.getBarcode()); // 鎵樼洏鐮�
+ wrkMastRu.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMastRu.setPicking("N"); // 鎷f枡
+ wrkMastRu.setExitMk("N"); // 閫�鍑�
+ wrkMastRu.setEmptyMk("N"); // 绌烘澘
+ wrkMastRu.setLinkMis("Y");
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMastRu.setAppeTime(now);
+ wrkMastRu.setModiTime(now);
+ boolean resOther = wrkMastService.insert(wrkMastRu);
+ if (!resOther) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ waitPakins.forEach(waitPakin -> {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(waitPakin);
+ wrkDetl.setWrkNo(wrkMastRu.getWrkNo());
+ wrkDetl.setIoTime(wrkMastRu.getIoTime());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
+
+ }else {
+ throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+ }
+ }
+ }
+
+ public Integer crnStaRu(Integer crnNo){
+ switch (crnNo){
+ case 1:
+ return 153;
+ case 2:
+ return 145;
+ default:
+ return null;
+ }
+ }
+
+ public String staNoOther(String locNo){
+ int row = Utils.getRow(locNo);
+ if (row%4==0 || row%4==1){
+ return getDeepLoc2(locNo,row);
+ }else {
+ return getDeepLoc(locNo,row);
+ }
+ }
+
+ /**
+ * 鑾峰彇 娴呭簱浣嶅搴旂殑娣卞簱浣嶅彿
+ */
+ public static String getDeepLoc(String shallowLoc,int row) {
+ if (row == 2 || row == 6) {
+ return Utils.zerofill(String.valueOf(row-1), 2) + shallowLoc.substring(2);
+ } else if (row == 3 || row == 7) {
+ return Utils.zerofill(String.valueOf(row+1), 2) + shallowLoc.substring(2);
+ }else {
+ return shallowLoc;
+ }
+ }
+
+ /**
+ * 鑾峰彇 娣卞簱浣嶅搴旂殑娴呭簱浣嶅彿
+ */
+ public static String getDeepLoc2(String shallowLoc,int row) {
+ if (row == 1 || row == 5) {
+ return Utils.zerofill(String.valueOf(row+1), 2) + shallowLoc.substring(2);
+ } else if (row == 4 || row == 8) {
+ return Utils.zerofill(String.valueOf(row-1), 2) + shallowLoc.substring(2);
+ }else {
+ return null;
+ }
+ }
+
+ @Override
+ @Transactional
+ public WrkMast emptyPlateOut(EmptyPlateOutParam param) {
+ WrkMast wrkMast = new WrkMast();
+ if (Cools.isEmpty(param.getOutSite())) {
+ throw new CoolException("绔欑偣涓嶅瓨鍦�");
+ }
+ for (String locNo : param.getLocNos()) {
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(0);
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectById(locNo);
if (Cools.isEmpty(locMast)) {
@@ -431,10 +1089,11 @@
if (Cools.isEmpty(sourceStaNo)) {
throw new CoolException("妫�绱㈡簮绔欏け璐�");
}
+ Date now = new Date();
// 淇濆瓨宸ヤ綔妗�
- WrkMast wrkMast = new WrkMast();
+
wrkMast.setWrkNo(workNo);
- wrkMast.setIoTime(new Date());
+ wrkMast.setIoTime(now);
wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
wrkMast.setIoPri(10D);
@@ -447,10 +1106,11 @@
wrkMast.setExitMk("N"); // 閫�鍑�
wrkMast.setEmptyMk("Y"); // 绌烘澘
wrkMast.setLinkMis("N");
- wrkMast.setAppeUser(userId);
- wrkMast.setAppeTime(new Date());
- wrkMast.setModiUser(userId);
- wrkMast.setModiTime(new Date());
+ wrkMast.setAppeUser(1L);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(1L);
+ wrkMast.setModiTime(now);
+ wrkMast.setMemo("鐢熸垚鑷姩绌烘澘鍑哄簱");
boolean res = wrkMastService.insert(wrkMast);
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
@@ -458,13 +1118,14 @@
// 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
if (locMast.getLocSts().equals("D")){
locMast.setLocSts("R");
- locMast.setModiUser(userId);
- locMast.setModiTime(new Date());
+ locMast.setModiUser(1L);
+ locMast.setModiTime(now);
if (!locMastService.updateById(locMast)) {
throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
}
}
}
+ return wrkMast;
}
@Override
@@ -477,12 +1138,17 @@
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());
- if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
+ if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount(),param.getOrderNo()));
}
}
if (!locDetlDtos.isEmpty()) {
- // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
- stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
+ if (locMast.getLocSts().equals("F")){
+ // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
+ stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
+ }else {
+ throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+ }
} else {
throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
}
@@ -500,15 +1166,19 @@
if (Cools.isEmpty(loc)){
throw new CoolException("鏈壘鍒板簱浣�");
}
+ if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))){
+ throw new CoolException("搴撲綅鐘舵�佸凡鏀瑰彉");
+ }
if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");
}
+ Date now = new Date();
// 鑾峰彇宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
// 淇濆瓨宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
- wrkMast.setIoTime(new Date());
+ wrkMast.setIoTime(now);
wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
wrkMast.setIoPri(10D);
@@ -522,9 +1192,9 @@
wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
wrkMast.setLinkMis("N");
wrkMast.setAppeUser(userId);
- wrkMast.setAppeTime(new Date());
+ wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
- wrkMast.setModiTime(new Date());
+ wrkMast.setModiTime(now);
boolean res = wrkMastService.insert(wrkMast);
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
@@ -534,11 +1204,11 @@
WrkDetl wrkDetl = new WrkDetl();
wrkDetl.sync(locDetl);
wrkDetl.setWrkNo(workNo);
- wrkDetl.setIoTime(new Date());
+ wrkDetl.setIoTime(now);
wrkDetl.setAnfme(locDetl.getAnfme());
- wrkDetl.setAppeTime(new Date());
+ wrkDetl.setAppeTime(now);
wrkDetl.setAppeUser(userId);
- wrkDetl.setModiTime(new Date());
+ wrkDetl.setModiTime(now);
wrkDetl.setModiUser(userId);
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
@@ -548,7 +1218,7 @@
if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
sourceLoc.setModiUser(userId);
- sourceLoc.setModiTime(new Date());
+ sourceLoc.setModiTime(now);
if (!locMastService.updateById(sourceLoc)){
throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
}
@@ -558,7 +1228,7 @@
// 淇敼鐩爣搴撲綅鐘舵��
if (loc.getLocSts().equals("O")) {
loc.setLocSts("S"); // S.鍏ュ簱棰勭害
- loc.setModiTime(new Date());
+ loc.setModiTime(now);
loc.setModiUser(userId);
if (!locMastService.updateById(loc)) {
throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
@@ -582,14 +1252,17 @@
if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
wrkMast.setWrkSts(4L);
// 鍑哄簱
- } else if (wrkMast.getWrkSts() > 10) {
+ } else if (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()!=202) {
wrkMast.setWrkSts(14L);
+ }else if (wrkMast.getIoType()==202){
+ wrkMast.setWrkSts(57L);
}
Date now = new Date();
wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
wrkMast.setCrnEndTime(now);
wrkMast.setModiTime(now);
wrkMast.setModiUser(userId);
+ wrkMast.setSheetNo("3");
// 瀹屾垚鎿嶄綔浜哄憳璁板綍
wrkMast.setManuType("鎵嬪姩瀹屾垚");
if (!wrkMastService.updateById(wrkMast)) {
@@ -628,7 +1301,7 @@
// todo 鐩樼偣璁板綍
// 淇敼搴撳瓨
if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
- throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
+ throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
}
// 淇濆瓨璋冩暣璁板綍
AdjDetl adjDetl = new AdjDetl();
@@ -653,7 +1326,7 @@
for (LocDetl locDetl : locDetls) {
// todo 鐩樼偣璁板綍
if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
- throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
+ throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
}
// 淇濆瓨璋冩暣璁板綍
AdjDetl adjDetl = new AdjDetl();
@@ -683,7 +1356,7 @@
locDetl.setAppeUser(userId);
locDetl.setAppeTime(now);
if (!locDetlService.insert(locDetl)) {
- throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
+ throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
}
// 淇濆瓨璋冩暣璁板綍
AdjDetl adjDetl = new AdjDetl();
@@ -711,7 +1384,7 @@
}
}
locMast.setModiUser(userId);
- locMast.setModiTime(new Date());
+ locMast.setModiTime(now);
if (!locMastService.updateById(locMast)) {
throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
}
@@ -721,9 +1394,26 @@
@Override
@Transactional
public void cancelWrkMast(String workNo, Long userId) {
+ Date now = new Date();
WrkMast wrkMast = wrkMastService.selectById(workNo);
if (Cools.isEmpty(wrkMast)){
throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+ }
+ if (Cools.isEmpty(wrkMast.getLocNo()) && Cools.isEmpty(wrkMast.getSourceLocNo())){
+ int devCount = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (devCount!=0){
+ throw new CoolException("鍙栨秷澶辫触锛屽伐浣滃彿锛�"+wrkMast.getWrkNo()+"鍦ㄨ緭閫佺嚎涓婅繍琛屼腑锛侊紒锛�");
+ }
+ try{
+ wrkMastService.deleteById(wrkMast.getWrkNo());
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ if (!wrkDetls.isEmpty()){
+ wrkDetlService.deleteById(wrkMast.getWrkNo());
+ }
+ }catch (Exception e){
+ throw new CoolException("鍙栨秷澶辫触锛屽紓甯�"+e);
+ }
+ return;
}
String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
@@ -731,24 +1421,21 @@
if (wrkMast.getWrkSts() < 4) {
locNo = wrkMast.getLocNo();
locSts = "O";
- /**
- * 搴撲綅杞Щ
- * 鍙栨秷鍚� 婧愬簱浣� ==>> F.鍦ㄥ簱
- * 鐩爣搴撲綅 ===>> O.绌哄簱浣�
- **/
+
+ // 搴撲綅杞Щ
if (wrkMast.getIoType() == 11) {
// 搴撲綅杞Щ锛氭簮搴撲綅
LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
if (Cools.isEmpty(locMast)) {
throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo());
}
- locMast.setLocSts("F");
- locMast.setModiTime(new Date());
+ locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F");
+ locMast.setModiTime(now);
locMast.setModiUser(userId);
locMastService.updateById(locMast);
}
// 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
- } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
+ } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14 && wrkMast.getIoType()!=202) {
locNo = wrkMast.getSourceLocNo();
// 鍑哄簱 ===>> F.鍦ㄥ簱
if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
@@ -765,28 +1452,80 @@
throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo());
}
locMast.setLocSts("O");
- locMast.setModiTime(new Date());
+ locMast.setModiTime(now);
locMast.setModiUser(userId);
locMastService.updateById(locMast);
}
+ } else if (wrkMast.getIoType()==202 || wrkMast.getIoType()==212){
} else {
throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
}
- // 璁㈠崟鍏宠仈
- List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
- for (WrkDetl wrkDetl : wrkDetls) {
- if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
- if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
- throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+
+ //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊
+ if(wrkMast.getIoType() == 1) {
+ List<WaitPakin> waitPakins=waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+ for (WaitPakin waitPakin:waitPakins){
+ if (!Cools.isEmpty(waitPakin)) {
+ waitPakin.setIoStatus("N");
+ waitPakin.setLocNo("");
+ waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>()
+// .eq("order_no", waitPakin.getOrderNo())
+ .eq("zpallet",waitPakin.getZpallet())
+ .eq("matnr", waitPakin.getMatnr())
+ .eq("batch", waitPakin.getBatch()));
}
- // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
-// stockOutRe(wrkMast, wrkDetls);
}
}
+
+ //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺
+ if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ for (WrkDetl wrkDetl : wrkDetls) {
+ if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+ if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+ throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+ }
+
+ //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼
+ boolean flag = true;
+ List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo()));
+ for(OrderDetl orderDetl : orderDetls){
+ if(orderDetl.getWorkQty() > 0){
+ flag = false;
+ }
+ }
+ if(flag){
+ 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("淇敼璁㈠崟鐘舵�佸け璐�");
+ }
+ }
+ }
+ }
+
+ }
+
+// // 璁㈠崟鍏宠仈
+// List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+// for (WrkDetl wrkDetl : wrkDetls) {
+// if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+// if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+// throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+// }
+// // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
+//// stockOutRe(wrkMast, wrkDetls);
+// }
+// }
+
// 鍙栨秷鎿嶄綔浜哄憳璁板綍
wrkMast.setManuType("鎵嬪姩鍙栨秷");
wrkMast.setModiUser(userId);
- wrkMast.setModiTime(new Date());
+ wrkMast.setModiTime(now);
if (!wrkMastService.updateById(wrkMast)) {
throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�");
}
@@ -805,6 +1544,9 @@
// 鍒犻櫎宸ヤ綔妗f槑缁�
boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
}
+ if (wrkMast.getIoType()==202 || wrkMast.getIoType()==212){
+ return;
+ }
// 淇敼搴撲綅鐘舵��
LocMast locMast = locMastService.selectById(locNo);
@@ -812,7 +1554,7 @@
throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
}
locMast.setLocSts(locSts);
- locMast.setModiTime(new Date());
+ locMast.setModiTime(now);
locMast.setModiUser(userId);
boolean locMastRes = locMastService.updateById(locMast);
if (!wrkMastRes || !locMastRes) {
@@ -852,6 +1594,7 @@
if (Cools.isEmpty(staDesc)) {
throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
}
+ Date now = new Date();
// 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
Integer staNo = staDesc.getCrnStn();
// 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
@@ -861,7 +1604,7 @@
wrkMast.setStaNo(staNo); // 鐩爣绔�
wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
- wrkMast.setModiTime(new Date());
+ wrkMast.setModiTime(now);
wrkMast.setModiUser(userId);
if (!wrkMastService.updateById(wrkMast)) {
throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
@@ -869,7 +1612,7 @@
// 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
locMast.setLocSts("Q");
- locMast.setModiTime(new Date());
+ locMast.setModiTime(now);
locMast.setModiUser(userId);
if (!locMastService.updateById(locMast)) {
throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
@@ -981,4 +1724,31 @@
return targetLoc.getLocNo();
}
+ @Override
+ @Transactional
+ public void turnMatLocDetl(EmptyPlateOutParam param, Long userId) {
+ Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("id", param.getMatId()));
+ if (Cools.isEmpty(mat)){
+ throw new CoolException("鐩爣搴撲綅鍟嗗搧缂栫爜鏈夎锛�");
+ }
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", param.getLocDetls().get(0).getMatnr()));
+ if (Cools.isEmpty(locDetls) || locDetls.size()<1){
+ throw new CoolException("寰呬慨鏀瑰晢鍝佹棤搴撳瓨锛屾棤闇�淇敼锛� 瑙勬牸锛�"+param.getLocDetls().get(0).getMatnr());
+ }
+ try {
+ locDetlService.updateMatTurn(param.getLocDetls().get(0).getMatnr(),mat.getMatnr());
+ }catch (Exception e){
+ throw new CoolException("瀵规暟鎹簱淇敼鍑洪敊锛�");
+ }
+ for (LocDetl locDetl:locDetls){
+ // 淇濆瓨璋冩暣璁板綍
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locDetl.getLocNo());
+ adjDetl.setMatnr(mat.getMatnr());
+ adjDetl.setMatnrOld(param.getLocDetls().get(0).getMatnr());
+ adjDetl.setAdjQty(locDetl.getAnfme());
+ adjDetlService.save(adjDetl, userId);
+ }
+ }
+
}
--
Gitblit v1.9.1