From 203e2664c13883f8bb64f638cb1794c0b4480ec2 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期日, 27 四月 2025 08:24:20 +0800 Subject: [PATCH] 完成米多泉州wms开发 --- src/main/java/com/zy/common/service/CommonService.java | 141 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 134 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index e659ad1..9dea891 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -3,28 +3,25 @@ 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.mapper.WrkMastMapper; 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.common.web.param.SearchLocParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; 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.List; /** @@ -57,6 +54,14 @@ private SlaveProperties slaveProperties; @Autowired private WrkDetlService wrkDetlService; + + @Resource + private WrkMastMapper wrkMastMapper; + + /** + * 缃愯绾垮彿鏄犲皠鐩爣绔欑偣 涓嬫爣:鐩爣绔欑偣 + */ + private static final int[] fillingLineMappingSite = {0,1079,1065,1072}; /** * 鐢熸垚宸ヤ綔鍙� @@ -156,6 +161,128 @@ return null; } + @Transactional(propagation = Propagation.REQUIRED) + public StartupDto getLocNoNew(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, int locArea) { + + // 鐩爣搴撲綅 + LocMast locMast; + + // 鍏ョ┖妗跺簱 + if (staDescId == 1 && locArea == 2) { + String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨� + List<WrkMast> wrkMastList = wrkMastMapper.selectLastInEmptyLoc(); // 鍓嶉潰鍏ョ┖妗跺簱鐨勪换鍔�(鏈墽琛屽爢鍨涙満鍏ュ簱) + + if (wrkMastList.size() == 0) { + // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣� + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1")); + } else { + WrkMast wrkMast = wrkMastList.get(0); // 鏈�鍚庝竴涓叆绌烘《搴撲换鍔� + // 鍓嶄竴涓换鍔℃槑缁� + WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no",wrkMast.getWrkNo())); + // 鍓嶄竴涓换鍔℃《绫诲瀷 + String oldModel = wrkDetl.getModel(); + // 鍓嶄竴涓换鍔″熬鎵樻爣璇� + Integer oldCtnType = wrkMast.getCtnType(); + if(model.equals(oldModel)) { // 褰撳墠妗朵笌鍓嶆《鏄竴绉嶇被鍨� + // 褰撳墠妗剁被鍨嬬殑浠诲姟鏈夊嚑涓� + long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(oldModel)).count(); + if (count % 2 == 0) { // 鍋舵暟锛屽彇涓�缁勬柊搴撲綅 + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1")); + } else { // 濂囨暟锛屽彇鍓嶄竴搴撲綅瀵瑰簲鐨勭┖搴撲綅 + String locNo = wrkMast.getLocNo(); + int row = Integer.parseInt(locNo.substring(0, 2)); + if(row == 9 || row == 11) { + String newLocNo = (row + 1) + locNo.substring(2); + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", newLocNo).eq("loc_sts","O")); + if (locMast == null) { + log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸9锛�11鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�----"); + throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸9锛�11鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�"); + } + } else { + log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�9锛�11鎺�----"); + throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�9锛�11鎺�"); + } + } + } else { // 褰撳墠妗朵笌鍓嶆《涓嶆槸涓�绉嶇被鍨� + if(oldCtnType == 1) { // 鍓嶉潰鏄熬妗� + // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣� + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1")); + } else { // 鍓嶉潰涓嶆槸灏炬《 + // 鍒ゆ柇鍓嶉潰鍏ョ┖妗跺簱浠诲姟鏁伴噺(鏈墽琛屽爢鍨涙満鍏ュ簱) + long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(oldModel)).count(); + if (count % 2 == 0) { // 鍋舵暟锛屽彲浠ュ叆搴� + // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣� + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1")); + } else { // 濂囨暟锛屼笉鍙互鍏ュ簱 + log.error("-----涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱----"); + throw new CoolException("涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱"); + } + } + } + } + + } else if ((staDescId == 1 && locArea == 1) || staDescId == 10) { // 婊℃澘鍏ユ垚鍝佸簱鎴栬�呯┖鏉垮叆鎴愬搧搴� + // 鎸夊眰鍒楁帓椤哄簭鑾峰彇涓�涓狢anningLineInLocParam param搴撲綅 + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 1, 4, 5, 6, 7, 8).orderBy("lev1").orderBy("bay1").orderBy("row1")); + + // 娴呭簱浣嶆病鏈変簡鍒欒幏鍙栦竴涓祬搴撲綅 + if (locMast == null) { + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 2, 3).orderBy("lev1").orderBy("bay1").orderBy("row1")); + if (locMast == null) { + log.error("-----搴撲綅涓嶈冻----"); + throw new CoolException("搴撲綅涓嶈冻"); + } else { + int count = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", 'O')); + if (count <= 10) { + log.error("-----搴撲綅涓嶈冻锛岄鐣�10涓簱浣嶇敤鏉ュ簱浣嶈浆绉�----"); + throw new CoolException("搴撲綅涓嶈冻锛岄鐣�10涓簱浣嶇敤鏉ュ簱浣嶈浆绉�"); + } + } + } + } else { + log.error("鍏ュ簱绫诲瀷閿欒锛宻taDescId={}", staDescId); + throw new CoolException("鍏ュ簱绫诲瀷閿欒锛宻taDescId=" + staDescId); + } + // 杩斿洖dto + StartupDto startupDto = new StartupDto(); + StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() + .eq("type_no", staDescId) + .eq("stn_no", sourceStaNo) + .eq("crn_no", locMast.getCrnNo())); + if (Cools.isEmpty(staDesc)) { + log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, locMast.getCrnNo()); + throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); + } else { + BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn()); + if (!staNo.getAutoing().equals("Y")) { + log.error("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�"); + throw new CoolException("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�"); + } + startupDto.setStaNo(staNo.getDevNo()); + } + + // 鐢熸垚宸ヤ綔鍙� + int workNo = getWorkNo(0); + startupDto.setWorkNo(workNo); + startupDto.setCrnNo(locMast.getCrnNo()); + startupDto.setSourceStaNo(sourceStaNo); + startupDto.setLocNo(locMast.getLocNo()); + return startupDto; + } + + @Transactional(propagation = Propagation.REQUIRED) + public StartupDto getLocNo(SearchLocParam param, Integer wantBucketFlag) { + + // 杩斿洖dto + StartupDto startupDto = new StartupDto(); + + startupDto.setWorkNo(getWorkNo(0)); // 宸ヤ綔鍙� + startupDto.setSourceStaNo(param.getSourceStaNo()); // 婧愮珯鐐� + startupDto.setStaNo(fillingLineMappingSite[wantBucketFlag]); // 鐩爣绔欑偣 + startupDto.setCrnNo(wantBucketFlag); // 璁板綍缃愯绾垮彿锛寃cs娓呴櫎瑕佹《淇″彿 + return startupDto; + } + /** * 妫�绱㈠簱浣嶅彿 * -- Gitblit v1.9.1