From 51d80adb1a4c31aef17eecd976fd9d51306ce8a9 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 17 六月 2020 09:58:52 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/WorkService.java | 13 +++ src/main/java/com/zy/common/model/OutLocDto.java | 39 +++++++++ src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 133 ++++++++++++++++++++++++++++++-- 3 files changed, 174 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java index 26d286d..f2cc653 100644 --- a/src/main/java/com/zy/asrs/service/WorkService.java +++ b/src/main/java/com/zy/asrs/service/WorkService.java @@ -1,8 +1,12 @@ package com.zy.asrs.service; +import com.zy.asrs.entity.BasDevp; +import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.param.EmptyPlateOutParam; import com.zy.asrs.entity.param.FullStoreParam; import com.zy.asrs.entity.param.StockOutParam; + +import java.util.List; public interface WorkService { @@ -16,7 +20,14 @@ * 鍏ㄦ澘鍑哄簱 * @return 搴撲綅鍙� */ - String startupFullTakeStore(StockOutParam param, Long userId); + void startupFullTakeStore(StockOutParam param, Long userId); + + /** + * 鍑哄簱浣滀笟 + * @param staNo 鐩爣绔欑偣 + * @param locDetls 寰呭嚭搴撶墿鏂� + */ + void stockOut(BasDevp staNo, List<LocDetl> locDetls, Long userId); /** * 绌烘澘鍏ュ簱 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 a31f3f8..d5ecc9e 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -10,21 +10,23 @@ import com.zy.asrs.entity.param.FullStoreParam; import com.zy.asrs.entity.param.StockOutParam; import com.zy.asrs.service.*; +import com.zy.common.model.OutLocDto; import com.zy.common.model.StartupDto; import com.zy.common.service.CommonService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; /** * Created by vincent on 2020/6/11 */ @Service public class WorkServiceImpl implements WorkService { + + // 宸ヤ綔鍙风敓鎴愯鍒欓粯璁ょ被鍨� + private static final int DEFAULT_WORK_NO_TYPE = 0; @Autowired private WrkMastService wrkMastService; @@ -51,7 +53,7 @@ // 婧愮珯鐐圭姸鎬佹娴� BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo()); // 鐢熸垚宸ヤ綔鍙� - int workNo = commonService.getWorkNo(0); + int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); // 妫�绱㈠簱浣� StartupDto dto = commonService.getLocNo(1, 1, param.getDevpNo()); // 鐢熸垚宸ヤ綔妗� @@ -109,10 +111,121 @@ } @Override - public String startupFullTakeStore(StockOutParam param, Long userId) { - // todo + @Transactional + public void startupFullTakeStore(StockOutParam param, Long userId) { + // 鐩爣绔欑偣鐘舵�佹娴� + BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); + // 鑾峰彇搴撲綅鏄庣粏 + List<LocDetl> locDetls = new ArrayList<>(); + for (StockOutParam.LocDetl locDetl : param.getLocDetls()) { + if (!Cools.isEmpty(locDetl.getLocNo(), locDetl.getMatnr())) { + LocDetl sqlParam = new LocDetl(); + sqlParam.setLocNo(locDetl.getLocNo()); + sqlParam.setMatnr(locDetl.getMatnr()); + LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam)); + if (null != one) locDetls.add(one); + } + } + if (!locDetls.isEmpty()) { + // 鍚姩鍑哄簱寮�濮� + stockOut(staNo, locDetls, userId); + } else { + throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); + } + } - return null; + @Override + @Transactional + public void stockOut(BasDevp staNo, List<LocDetl> locDetls, Long userId) { + // 鐢熸垚宸ヤ綔鍙� + int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); + // 鍚堝苟鍚岀被椤� + Set<String> locNos = new HashSet<>(); + locDetls.forEach(locDetl -> locNos.add(locDetl.getLocNo())); + List<OutLocDto> dtos = new ArrayList<>(); + for (String locNo : locNos) { + List<LocDetl> list = new ArrayList<>(); + Iterator<LocDetl> iterator = locDetls.iterator(); + while (iterator.hasNext()) { + LocDetl locDetl = iterator.next(); + if (locNo.equals(locDetl.getLocNo())) { + list.add(locDetl); + iterator.remove(); + } + } + dtos.add(new OutLocDto(locNo, list)); + } + // 鐢熸垚宸ヤ綔妗� + for (OutLocDto dto : dtos) { + // 鑾峰彇搴撲綅 + LocMast locMast = locMastService.selectById(dto.getLocNo()); + // 鑾峰彇璺緞 + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", 101) + .eq("stn_no", staNo.getDevNo()) + .eq("crn_no", locMast.getCrnNo()); + StaDesc staDesc = staDescService.selectOne(wrapper); + if (Cools.isEmpty(staDesc)) { + throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�"); + } + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(101); // 鍏ュ嚭搴撶姸鎬侊細101.鍑哄簱 + wrkMast.setIoPri(13D); // 浼樺厛绾э細13 + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 + wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� + wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(new Date()); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(new Date()); + if (!wrkMastService.insert(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo()); + } + // 鐢熸垚宸ヤ綔妗f槑缁� + for (LocDetl locDetl : dto.getLocDetls()) { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.setWrkNo(workNo); + wrkDetl.setIoTime(new Date()); + wrkDetl.setMatnr(locDetl.getMatnr()); + wrkDetl.setAnfme(locDetl.getAnfme()); + wrkDetl.setZmatid(locDetl.getZmatid()); + wrkDetl.setTbpos(locDetl.getTbpos()); + wrkDetl.setTbnum(locDetl.getTbnum()); + wrkDetl.setLgnum(locDetl.getLgnum()); + wrkDetl.setAltme(locDetl.getAltme()); + wrkDetl.setBname(locDetl.getBname()); + wrkDetl.setMaktx(locDetl.getMaktx()); + wrkDetl.setAppeTime(new Date()); + wrkDetl.setAppeUser(userId); + wrkDetl.setModiTime(new Date()); + wrkDetl.setModiUser(userId); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + } + // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害 + locMast = locMastService.selectById(dto.getLocNo()); + if (locMast.getLocType().equals("F")) { + locMast.setLocType("R"); + locMast.setModiUser(userId); + locMast.setModiTime(new Date()); + if (!locMastService.updateById(locMast)) { + throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo()); + } + } else { + throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��"); + } + } } @Override @@ -121,7 +234,7 @@ // 婧愮珯鐐圭姸鎬佹娴� BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo); // 鐢熸垚宸ヤ綔鍙� - int workNo = commonService.getWorkNo(0); + int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); // 妫�绱㈠簱浣� StartupDto dto = commonService.getLocNo(1, 10, devpNo); // 鐢熸垚宸ヤ綔妗� @@ -180,7 +293,7 @@ } for (String locNo : param.getLocNos()) { // 鑾峰彇宸ヤ綔鍙� - int workNo = commonService.getWorkNo(0); + int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); // 鑾峰彇搴撲綅 LocMast locMast = locMastService.selectById(locNo); if (Cools.isEmpty(locMast)) { @@ -248,7 +361,7 @@ throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); } // 鑾峰彇宸ヤ綔鍙� - int workNo = commonService.getWorkNo(0); + int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); // 淇濆瓨宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); diff --git a/src/main/java/com/zy/common/model/OutLocDto.java b/src/main/java/com/zy/common/model/OutLocDto.java new file mode 100644 index 0000000..4f30726 --- /dev/null +++ b/src/main/java/com/zy/common/model/OutLocDto.java @@ -0,0 +1,39 @@ +package com.zy.common.model; + +import com.zy.asrs.entity.LocDetl; + +import java.util.List; + +/** + * Created by vincent on 2020/6/17 + */ +public class OutLocDto { + + private String locNo; + + private List<LocDetl> locDetls; + + public OutLocDto() { + } + + public OutLocDto(String locNo, List<LocDetl> locDetls) { + this.locNo = locNo; + this.locDetls = locDetls; + } + + public String getLocNo() { + return locNo; + } + + public void setLocNo(String locNo) { + this.locNo = locNo; + } + + public List<LocDetl> getLocDetls() { + return locDetls; + } + + public void setLocDetls(List<LocDetl> locDetls) { + this.locDetls = locDetls; + } +} -- Gitblit v1.9.1