From 7e8c672d13a4d5c9ef6d8b62f6fc1ce092a6c123 Mon Sep 17 00:00:00 2001 From: ytfl <ytfl@qq.com> Date: 星期一, 11 八月 2025 08:23:14 +0800 Subject: [PATCH] # --- src/main/java/com/zy/common/service/CommonService.java | 193 ++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 162 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index 5298646..bb25796 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -3,27 +3,23 @@ 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.FindLocNoAttributeVo; -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.service.ConfigService; 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 java.util.List; @@ -57,6 +53,8 @@ private SlaveProperties slaveProperties; @Autowired private WrkDetlService wrkDetlService; + @Autowired + private ConfigService configService; /** * 鐢熸垚宸ヤ綔鍙� @@ -204,6 +202,10 @@ } } + + Config crnSearchListConfig = configService.selectConfigByCode("123CrnSearchList"); + int crnSearchList = Integer.parseInt(crnSearchListConfig.getValue()); + //姝ょ▼搴忕敤浜庝紭鍖栧爢鍨涙満寮傚父鏃剁殑杩愯鏃堕棿 for (int i = times; i < crnNumber * 2; i++) { int[] locNecessaryParameters = Utils.LocNecessaryParameters(rowLastno, curRow, crnNumber); @@ -226,8 +228,75 @@ times++; } } + + //浼樺寲绯荤粺锛屾彁楂樻悳绱�1鍙峰爢鍨涙満娆℃暟 + if (crnNo == 2 || crnNo == 3) { + if (crnSearchList >= 2) { + //灏濊瘯鎵�1鍙峰集杞ㄥ爢鍨涙満搴撲綅 + crnNo = 1; + if (basCrnpService.checkSiteError(crnNo, true)) { + List<Integer> nearRowList = new ArrayList<Integer>() {{ + add(4); + add(6); + add(3); + add(1); + }}; + for (Integer near : nearRowList) { + List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("row1", near) + .eq("loc_sts", "O") + .eq("whs_type", rowLastnoType.getType().longValue()) + .eq("loc_type1", locTypeDto.getLocType1()) + .eq("loc_type2", locTypeDto.getLocType2()) + ); + int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).le("io_type", 100)); + if (locMasts.size() - crnCountO <= 2) { + log.error(crnNo + "鍙峰爢鍨涙満娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times); + } else { + nearRow = near; + break; + } + } + } + } + } + if (nearRow == 0) { - throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満"); + if (locTypeDto.getLocType2() == 2) { + //灏濊瘯鎵�1鍙峰集杞ㄥ爢鍨涙満搴撲綅 + crnNo = 1; + if (basCrnpService.checkSiteError(crnNo, true)) { + List<Integer> nearRowList = new ArrayList<Integer>() {{ + add(4); + add(6); + add(3); + add(1); + }}; + for (Integer near : nearRowList) { + List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("row1", near) + .eq("loc_sts", "O") + .eq("whs_type", rowLastnoType.getType().longValue()) + .eq("loc_type1", locTypeDto.getLocType1()) + .eq("loc_type2", locTypeDto.getLocType2()) + ); + int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).le("io_type", 100)); + if (locMasts.size() - crnCountO <= 2) { + log.error(crnNo + "鍙峰爢鍨涙満娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times); + } else { + nearRow = near; + break; + } + } + } + + if (nearRow == 0) { + throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満"); + } + } +// else { +// throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満"); +// } } boolean signRule1 = false; @@ -255,6 +324,45 @@ .eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())); for (LocMast locMast1 : locMasts) { if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { + continue; + } + + if (crnNo == 1) { + if (locMast1.getRow1() == 1 || locMast1.getRow1() == 6) { + locMast = locMast1;//鍗曟繁搴撲綅鐩存帴浣跨敤 + break; + } + + //鑾峰彇鐩爣搴撲綅鎵�鍦ㄥ贩閬撴渶娴呴潪绌哄簱浣� + List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("whs_type", rowLastnoType.getType().longValue()) + .eq("crn_no", locMast1.getCrnNo()) + .eq("bay1", locMast1.getBay1()) + .notIn("loc_sts", "O") + .orderBy("row1", false) + ); + if (locMastList.isEmpty()) { + locMast = locMast1; + break; + } + + LocMast locMastF = locMastList.get(0); + if (!slaveProperties.getDoubleLocs().contains(locMastF.getRow1())) { + continue; + } + + LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMastF.getLocNo())); + if (!Cools.isEmpty(locDetl) && findLocNoAttributeVo.beSimilar(locDetl)) { + String shallowLoc = Utils.getShallowLoc(slaveProperties, locMastF.getLocNo()); + LocMast shallowLocMast = locMastService.selectOne(new EntityWrapper<LocMast>() + .eq("loc_no", shallowLoc) + .eq("loc_sts", "O") + ); + if (shallowLocMast != null) { + locMast = shallowLocMast; + break; + } + } continue; } @@ -336,40 +444,22 @@ StaDesc staDesc = null; BasDevp staNo = null; + if (Utils.BooleanWhsTypeSta(rowLastno, staDescId)) { - // 鑾峰彇鐩爣绔� - wrapper = new EntityWrapper<StaDesc>() - .eq("type_no", staDescId) - .eq("stn_no", sourceStaNo) - .eq("crn_no", crnNo); - staDesc = staDescService.selectOne(wrapper); - if (Cools.isEmpty(staDesc)) { - log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo); -// throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); - crnNo = 0; - } else { - staNo = basDevpService.selectById(staDesc.getCrnStn()); - if (!staNo.getAutoing().equals("Y")) { - log.error("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�"); -// throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�"); - crnNo = 0; - } - startupDto.setStaNo(staNo.getDevNo()); - } + // 鏇存柊搴撲綅鎺掑彿 if (Cools.isEmpty(locMast)) { rowLastno.setCurrentRow(curRow); rowLastnoService.updateById(rowLastno); } } - // 寮�濮嬫煡鎵惧簱浣� ==============================>> // 1.鎸夎鍒欐煡鎵惧簱浣� if (Cools.isEmpty(locMast) && crnNo != 0) { List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("row1", nearRow) - .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()) + .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()).ne("inv_wh",1) .orderBy("lev1", true).orderBy("bay1", true)); for (LocMast locMast1 : locMasts) { if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { @@ -445,16 +535,55 @@ // locTypeDto.setLocType1((short)i); // return getLocNo(1, staDescId, sourceStaNo, matnr,batch,grade, locTypeDto, 0); // } - log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times); + log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿},{}", JSON.toJSONString(locTypeDto), times,moveCrnNo); throw new CoolException("娌℃湁绌哄簱浣�"); } - String locNo = locMast.getLocNo(); + if (crnNo == 2 || crnNo == 3) { + crnSearchList++; + configService.updateValue("123CrnSearchList", String.valueOf(crnSearchList)); + } + + if (crnNo == 1) { + configService.updateValue("123CrnSearchList", String.valueOf(0)); + } + //閽堝1鍙峰爢鍨涙満鎵撶殑琛ヤ竵锛岄槻姝㈡壘鍒板簱浣嶆椂锛屾壘鍒版渶娴呭簱浣� + String deepLoc2 = Utils.getDeepLoc2(slaveProperties, locMast.getLocNo()); + if (!Cools.isEmpty(deepLoc2)) { + LocMast locMastNew = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no",locMast.getCrnNo()) + .eq("loc_no", deepLoc2).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())); + if (!Cools.isEmpty(locMastNew)) { + locMast = locMastNew; + } + } + + + + // 鑾峰彇鐩爣绔� + wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", staDescId) + .eq("stn_no", sourceStaNo) + .eq("crn_no", locMast.getCrnNo()); + staDesc = staDescService.selectOne(wrapper); + if (Cools.isEmpty(staDesc)) { + log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo); +// throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); + crnNo = 0; + } else { + staNo = basDevpService.selectById(staDesc.getCrnStn()); + if (!staNo.getAutoing().equals("Y")) { + log.error("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�"); +// throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�"); + crnNo = 0; + } + startupDto.setStaNo(staNo.getDevNo()); + } + String locNo = locMast.getLocNo(); // 鐢熸垚宸ヤ綔鍙� int workNo = getWorkNo(0); // 杩斿洖dto startupDto.setWorkNo(workNo); - startupDto.setCrnNo(crnNo); + startupDto.setCrnNo(locMast.getCrnNo()); startupDto.setSourceStaNo(sourceStaNo); startupDto.setLocNo(locNo); return startupDto; @@ -836,6 +965,8 @@ .eq("row1", nearRow) .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()) .orderBy("lev1", true).orderBy("bay1", true));//鏈�娴呭簱浣� + //System.out.println(nearRow); + //System.out.println(curRow); for (LocMast locMast1 : locMasts) { if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { continue; -- Gitblit v1.9.1