From c74239d24a17a7771209aa3ce16625456d191646 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期六, 19 十月 2024 15:14:53 +0800
Subject: [PATCH] 理货出库拆垛完成修改
---
src/main/java/com/zy/common/service/CommonService.java | 125 +++++++++++++++++++++++++++++++++++++++--
1 files changed, 117 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index db8c334..fd6c66a 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -3,28 +3,27 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.Arith;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.result.KeyValueVo;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.model.LocTypeDto;
-import com.zy.common.model.Shelves;
import com.zy.common.model.StartupDto;
import com.zy.common.properties.SlaveProperties;
+import com.zy.system.entity.Config;
+import com.zy.system.mapper.ConfigMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
+import javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 璐ф灦鏍稿績鍔熻兘
@@ -52,6 +51,9 @@
private LocDetlService locDetlService;
@Autowired
private SlaveProperties slaveProperties;
+
+ @Resource
+ private ConfigMapper configMapper;
/**
* 鐢熸垚宸ヤ綔鍙�
@@ -123,10 +125,117 @@
}
/**
+ * 鍙屾繁鎵惧簱浣�
+ */
+ @Transactional
+ public StartupDto getLocNo(Integer staDescId, Integer sourceStaNo,LocTypeDto locTypeDto,int times) {
+ LocMast locMast;
+
+ locMast = getLocNoStepSingle(locTypeDto);
+
+ if (locMast != null) {
+ //鎵惧埌搴撲綅锛岃繑鍥瀌to
+ return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
+ }
+
+ //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
+ throw new CoolException("娌℃湁绌哄簱浣�");
+ }
+
+ // 鎼滅储鍗曞搧(鏁翠釜搴撲綅缁�)
+ private LocMast getLocNoStepSingle(LocTypeDto locTypeDto) {
+
+ LocMast locMast = null;
+
+ // 鑾峰彇妯″紡涓虹數鑴戞ā寮忥紝鏃犱换鍔$殑鍫嗗灈鏈哄垪琛�:闃叉鍒嗛厤鍒板爢鍨涙満涓嶅彲鐢�
+ List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3)
+ .eq("wrk_no",0).eq("in_enable","Y"));
+ if (basCrnps.isEmpty()) {
+ // 閮芥湁浠诲姟鍒欒幏鍙栫數鑴戞ā寮忕殑鍫嗗灈鏈哄垪琛�
+ basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3).eq("in_enable","Y"));
+ }
+ if (basCrnps.isEmpty()) {
+ throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�,鍫嗗灈鏈哄仠姝㈡垨寮傚父鎴栫鐢�");
+ }
+ // 鍙敤鍫嗗灈鏈哄垪琛�
+ List<Integer> crnNoList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList());
+
+ // 鑾峰彇澶囪揣鍖洪厤缃�
+ Config config = configMapper.selectConfigByCode("auto_stock_up");
+ if (config == null) {
+ throw new CoolException("鐞嗚揣鑾峰彇澶囪揣鍖洪厤缃敊璇紒锛侊紒");
+ }
+
+ // 鍓嶅嚑鍒楁槸澶囪揣鍖�
+ int columnNum = Integer.parseInt(config.getValue());
+
+ // 鎼滅储娣卞簱浣�
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("loc_sts","O").in("crn_no",crnNoList).in("row1","1,4,5,8,9,12,13,16,17,20,21,24").orderBy("lev1,bay1,row1")
+ .gt("bay1",columnNum));
+
+ // 娣卞簱浣嶆病鏈夊垯鎼滅储娴呭簱浣�
+ if (locMasts.isEmpty()) {
+ locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("loc_sts","O").in("crn_no",crnNoList).in("row1","2,3,6,7,10,11,14,15,18,19,22,23").orderBy("lev1,bay1,row1")
+ .gt("bay1",columnNum));
+ }
+ if (locMasts.isEmpty()) {
+ throw new CoolException("娌℃湁鍙敤搴撲綅");
+ }
+
+ // 璁板綍鍫嗗灈鏈烘槸鍚︽煡璇㈣繃锛岄伩鍏嶉噸澶嶆煡璇�
+ Map<Integer,Boolean> crnMap = new HashMap<>();
+ for (LocMast mast : locMasts) {
+ if (crnMap.get(mast.getCrnNo()) == null) {
+ //棰勭暀绌哄簱浣�
+ if (locMastService.checkEmptyCount(mast, 10)) {
+ locMast = mast;
+ break;
+ } else {
+ crnMap.put(mast.getCrnNo(),true);
+ }
+ }
+ }
+
+ return locMast;
+ }
+
+ //杩斿洖dto
+ private StartupDto getLocNoStep6(Integer staDescId, Integer sourceStaNo, LocMast locMast) {
+ StartupDto startupDto = new StartupDto();
+ // 鑾峰彇鐩爣绔�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", staDescId)
+ .eq("stn_no", sourceStaNo)
+ .eq("crn_no",locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}", staDescId, sourceStaNo);
+ throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+ }
+
+ // 妫�娴嬬洰鏍囩珯
+ BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+ if (!staNo.getAutoing().equals("Y")) {
+ throw new CoolException("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�");
+ }
+
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = getWorkNo(0);
+ // 杩斿洖dto
+ startupDto.setWorkNo(workNo);
+ startupDto.setSourceStaNo(sourceStaNo);
+ startupDto.setStaNo(staNo.getDevNo());
+ startupDto.setLocNo(locMast.getLocNo());
+ startupDto.setCrnNo(locMast.getCrnNo());
+ return startupDto;
+ }
+ /**
* 妫�绱㈠簱浣嶅彿
*
* @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋�
- * @param staDescId 璺緞ID
+ * @param staDescId 鍏ュ簱绫诲瀷
* @param sourceStaNo 婧愮珯
* @param matnr 鐗╂枡鍙烽泦鍚�
* @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
--
Gitblit v1.9.1