From 34e08619ee8fa88ea81b32b19a553743587f9244 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期二, 29 三月 2022 10:37:44 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 293 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 263 insertions(+), 30 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 83bd495..0ce118a 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -1,10 +1,12 @@
package com.zy.asrs.service.impl;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.DateUtils;
+import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
@@ -13,11 +15,14 @@
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.VersionUtils;
-import com.zy.common.model.LocDetlDto;
-import com.zy.common.model.OutLocDto;
-import com.zy.common.model.StartupDto;
+import com.zy.common.model.*;
+import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
+import com.zy.common.service.wms.Result;
+import com.zy.common.service.wms.WmsService;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -28,6 +33,7 @@
/**
* Created by vincent on 2020/6/11
*/
+@Slf4j
@Service
public class WorkServiceImpl implements WorkService {
@@ -56,6 +62,16 @@
private AdjDetlService adjDetlService;
@Autowired
private WrkMastLogService wrkMastLogService;
+ @Autowired
+ private WrkDetlLogService wrkDetlLogService;
+ @Autowired
+ private WmsService wmsService;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private OrderDetlService orderDetlService;
@Override
@Transactional
@@ -66,11 +82,14 @@
}
// 婧愮珯鐐圭姸鎬佹娴�
BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true);
- // 鐢熸垚宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
// 妫�绱㈠簱浣�
+ LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+ log.info(JSON.toJSONString(locTypeDto));
+ log.info("{}鍏ュ簱鍙e昂瀵告娴嬶細{}", param.getDevpNo(), locTypeDto.getLocType1()==1?"浣庤鏍煎簱浣�":"楂樿鏍煎簱浣�");
List<String> matNos = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatNo).distinct().collect(Collectors.toList());
- StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matNos);
+ StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matNos, locTypeDto, 0);
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
@@ -99,11 +118,11 @@
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
// 鐢熸垚宸ヤ綔妗f槑缁�
- List<MatCodeCountDto> matDtos = new ArrayList<>();
+ List<DetlDto> detlDtos = new ArrayList<>();
param.getList().forEach(elem -> {
- matDtos.add(new MatCodeCountDto(elem.getMatNo(), elem.getCount()));
+ detlDtos.add(new DetlDto(elem.getMatNo(), elem.getCount()));
});
- wrkDetlService.createWorkDetail(workNo, matDtos, param.getBarcode(), userId);
+ wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId);
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(workNo);
sourceStaNo.setModiUser(userId);
@@ -153,6 +172,7 @@
@Override
@Transactional
public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId) {
+ Date now = new Date();
// 鍚堝苟鍚岀被椤�
Set<String> locNos = new HashSet<>();
locDetlDtos.forEach(dto -> locNos.add(dto.getLocDetl().getLocNo()));
@@ -187,11 +207,11 @@
throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
}
// 鐢熸垚宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
- wrkMast.setIoTime(new Date());
+ wrkMast.setIoTime(now);
wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
wrkMast.setIoPri(13D); // 浼樺厛绾э細13
@@ -205,9 +225,9 @@
wrkMast.setEmptyMk("N"); // 绌烘澘
wrkMast.setLinkMis("N");
wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
- wrkMast.setAppeTime(new Date());
+ wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
- wrkMast.setModiTime(new Date());
+ wrkMast.setModiTime(now);
if (!wrkMastService.insert(wrkMast)) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
}
@@ -221,9 +241,9 @@
Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
wrkDetl.setAnfme(anfme); // 鏁伴噺
VersionUtils.setWrkDetl(wrkDetl, detlDto.getLocDetl()); // 鐗堟湰鎺у埗
- 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槑缁嗗け璐�");
@@ -234,7 +254,7 @@
if (locMast.getLocSts().equals("F")) {
locMast.setLocSts(ioType==101?"R":"P");
locMast.setModiUser(userId);
- locMast.setModiTime(new Date());
+ locMast.setModiTime(now);
if (!locMastService.updateById(locMast)) {
throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
}
@@ -246,25 +266,100 @@
@Override
@Transactional
+ public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
+ Date now = new Date();
+ List<LocDto> locDtos = taskDto.getLocDtos();
+ for (LocDto locDto : locDtos) {
+ if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
+ throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(taskDto.getLocNo());
+ // 鑾峰彇璺緞
+ int ioType = taskDto.isAll() ? 101 : 103;
+ StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo());
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+ wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
+ 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);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+taskDto.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗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());
+
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setIoTime(now);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setBatch(locDto.getBatch());
+ wrkDetl.setOrderNo(locDto.getOrderNo());
+ wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
+ VersionUtils.setWrkDetl(wrkDetl, orderDetl); // 鐗堟湰鎺у埗
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectById(taskDto.getLocNo());
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts(ioType==101?"R":"P");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+taskDto.getLocNo());
+ }
+ } else {
+ throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
+
+ @Override
+ @Transactional
public String emptyPlateIn(Integer devpNo, Long userId) {
// 婧愮珯鐐圭姸鎬佹娴�
BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
- // 鐢熸垚宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
// 妫�绱㈠簱浣�
- StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null);
+ LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+ StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto, 0);
+ int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(new Date());
wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
- wrkMast.setIoPri(13D); // 浼樺厛绾э細10
+ wrkMast.setIoPri(10D); // 浼樺厛绾э細10
wrkMast.setCrnNo(dto.getCrnNo());
wrkMast.setSourceStaNo(dto.getSourceStaNo());
wrkMast.setStaNo(dto.getStaNo());
wrkMast.setLocNo(dto.getLocNo());
- wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setFullPlt("N"); // 婊℃澘
wrkMast.setPicking("N"); // 鎷f枡
wrkMast.setExitMk("N"); // 閫�鍑�
wrkMast.setEmptyMk("Y"); // 绌烘澘
@@ -309,7 +404,7 @@
}
for (String locNo : param.getLocNos()) {
// 鑾峰彇宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+ int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectById(locNo);
if (Cools.isEmpty(locMast)) {
@@ -401,7 +496,7 @@
throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");
}
// 鑾峰彇宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+ int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
// 淇濆瓨宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
@@ -488,6 +583,8 @@
wrkMast.setCrnEndTime(now);
wrkMast.setModiTime(now);
wrkMast.setModiUser(userId);
+ // 瀹屾垚鎿嶄綔浜哄憳璁板綍
+ wrkMast.setManuType("鎵嬪姩瀹屾垚");
if (!wrkMastService.updateById(wrkMast)) {
throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
}
@@ -532,12 +629,37 @@
adjDetl.setOriQty(0.0D);
adjDetl.setAdjQty(adjust.getCount());
adjDetlService.save(adjDetl, userId);
+ // 涓婃姤erp
+ String docNum = "CS-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
+ Integer docId = 14; // 鎶ユ孩鍗�
+ List<BillDto> dtos = new ArrayList<>();
+ BillDto billDto = new BillDto();
+ billDto.setMatnr(adjust.getMatnr());
+ billDto.setQty(Math.abs(adjust.getCount()));
+ dtos.add(billDto);
+ Result result = wmsService.erpUpload(dtos, docId, docNum);
+ if (result.getCode() != 200) {
+ throw new CoolException("搴撳瓨璋冩暣澶辫触锛屽師鍥狅細鏃犳硶涓婃姤鑷矱RP");
+ }
// 淇敼鍘熷簱瀛樻槑缁�
} else {
// 濡傛灉鏁伴噺淇敼锛屽垯鏇存柊搴撳瓨鏄庣粏
if (!adjust.getCount().equals(one.getAnfme())) {
// 褰撴暟閲忚淇敼涓� 0 鏃讹紝鐩存帴娓呴櫎搴撳瓨鏄庣粏
if (adjust.getCount() == 0) {
+ // 涓婃姤erp
+ String docNum = "CD-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
+ Integer docId = 9; // 鎶ユ崯鍗�
+ List<BillDto> dtos = new ArrayList<>();
+ BillDto billDto = new BillDto();
+ billDto.setMatnr(adjust.getMatnr());
+ billDto.setQty(Math.abs(one.getAnfme()));
+ dtos.add(billDto);
+ Result result = wmsService.erpUpload(dtos, docId, docNum);
+ if (result.getCode() != 200) {
+ throw new CoolException("搴撳瓨璋冩暣澶辫触锛屽師鍥狅細鏃犳硶涓婃姤鑷矱RP");
+ }
+ // 鍒犻櫎搴撳瓨
if (!locDetlService.delete(new EntityWrapper<>(one))) {
throw new CoolException("娓呴櫎搴撳瓨鏄庣粏澶辫触");
}
@@ -551,6 +673,27 @@
.eq("matnr", adjust.getMatnr()))) {
throw new CoolException("淇敼搴撳瓨鏄庣粏澶辫触");
}
+ // 涓婃姤erp
+ String docNum;
+ Integer docId;
+ if (one.getAnfme() > adjust.getCount()) {
+ // 鎶ユ崯
+ docNum = "CD-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
+ docId = 9;
+ } else {
+ // 鎶ユ孩
+ docNum = "CS-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
+ docId = 14;
+ }
+ List<BillDto> dtos = new ArrayList<>();
+ BillDto billDto = new BillDto();
+ billDto.setMatnr(adjust.getMatnr());
+ billDto.setQty(Math.abs(one.getAnfme() - adjust.getCount()));
+ dtos.add(billDto);
+ Result result = wmsService.erpUpload(dtos, docId, docNum);
+ if (result.getCode() != 200) {
+ throw new CoolException("搴撳瓨璋冩暣澶辫触锛屽師鍥狅細鏃犳硶涓婃姤鑷矱RP");
+ }
}
// 淇濆瓨璋冩暣璁板綍
AdjDetl adjDetl = new AdjDetl();
@@ -560,6 +703,15 @@
adjDetl.setAdjQty(adjust.getCount());
adjDetlService.save(adjDetl, userId);
}
+ }
+ }
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo()));
+ if (locDetls.isEmpty()) {
+ locMast.setLocSts("D");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
}
}
}
@@ -599,6 +751,18 @@
// 鍑哄簱 ===>> F.鍦ㄥ簱
if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
locSts = "F";
+ // 閿�鍞崟鍏宠仈锛屽垯鐢熸垚鏂扮殑鍑哄簱浠诲姟
+ if (wrkMast.getPdcType().equals("Y")) {
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
+ for (WrkDetl wrkDetl : wrkDetls) {
+ Double sumAnfme = Optional.ofNullable(locDetlService.getSumAnfme(wrkDetl.getMatnr())).orElse(0.0D);
+ if (sumAnfme < wrkDetl.getAnfme()) {
+ throw new CoolException("鍙栨秷澶辫触锛佸簱瀛樹笉瓒充互閲嶆柊鐢熸垚鍑哄簱浣滀笟");
+ }
+ }
+ // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
+ stockOutRe(wrkMast, wrkDetls);
+ }
// 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
} else if (wrkMast.getIoType() == 110) {
locSts = "D";
@@ -618,10 +782,29 @@
} else {
throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
}
- // 鍒犻櫎宸ヤ綔妗�
+ // 鍙栨秷鎿嶄綔浜哄憳璁板綍
+ wrkMast.setManuType("鎵嬪姩鍙栨秷");
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(new Date());
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�");
+ }
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎宸ヤ綔涓绘。
boolean wrkMastRes = wrkMastService.deleteById(wrkMast);
- // 鍒犻櫎宸ヤ綔妗f槑缁�
- boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
+
+ if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
+ // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+ if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎宸ヤ綔妗f槑缁�
+ boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
+ }
+
// 淇敼搴撲綅鐘舵��
LocMast locMast = locMastService.selectById(locNo);
if (Cools.isEmpty(locMast)) {
@@ -631,7 +814,7 @@
locMast.setModiTime(new Date());
locMast.setModiUser(userId);
boolean locMastRes = locMastService.updateById(locMast);
- if (!wrkMastRes || !wrkDetlRes || !locMastRes) {
+ if (!wrkMastRes || !locMastRes) {
throw new CoolException("淇濆瓨鏁版嵁澶辫触");
}
}
@@ -652,9 +835,9 @@
throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�");
}
// 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-// if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
-// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
-// }
+ if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+ }
// 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
@@ -692,4 +875,54 @@
}
}
+ @Autowired
+ private JdbcTemplate jdbcTemplate;
+ private boolean pickSite = false;
+ private void stockOutRe(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
+ for (WrkDetl wrkDetl : wrkDetls) {
+ List<LocDetl> locDetls = locDetlService.selectPakoutByRule(wrkDetl.getMatnr());
+ double issued = wrkDetl.getAnfme();
+ for (LocDetl locDetl : locDetls) {
+ if (issued > 0) {
+ // 鐢熸垚鍑哄簱宸ヤ綔妗�
+ // 鍏ㄦ澘
+ if (issued>=locDetl.getAnfme()) {
+ BasDevp staNo = basDevpService.checkSiteStatus(103);
+ List<LocDetlDto> detlDtos = new ArrayList<>();
+ LocDetlDto dto = new LocDetlDto();
+ dto.setLocDetl(locDetl);
+ dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
+ detlDtos.add(dto);
+ stockOut(staNo, detlDtos, 101, 9527L);
+ // 鎷f枡
+ } else {
+ int priorCount = jdbcTemplate.queryForObject("select isnull(count(*),0) from man_prior where 1=1 and matnr = '" + wrkDetl.getMatnr() + "'", Integer.class);
+ if (priorCount > 0) {
+ BasDevp staNo = basDevpService.checkSiteStatus(103);
+ List<LocDetlDto> detlDtos = new ArrayList<>();
+ LocDetlDto dto = new LocDetlDto();
+ dto.setLocDetl(locDetl);
+ dto.setCount(locDetl.getAnfme());
+ detlDtos.add(dto);
+ stockOut(staNo, detlDtos, 101, 9527L);
+ } else {
+ BasDevp staNo = basDevpService.checkSiteStatus(pickSite?113:109);
+ List<LocDetlDto> detlDtos = new ArrayList<>();
+ LocDetlDto dto = new LocDetlDto();
+ dto.setLocDetl(locDetl);
+ dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
+ detlDtos.add(dto);
+ stockOut(staNo, detlDtos, 103, 9527L);
+ }
+
+ }
+
+ // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+ issued = issued - locDetl.getAnfme();
+ }
+ }
+ }
+ pickSite = !pickSite;
+ }
+
}
--
Gitblit v1.9.1