From 16f8d56d61ce93930f9f29e8fbd465de5af90370 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期二, 29 四月 2025 09:12:25 +0800 Subject: [PATCH] #wms端生成任务优化 --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 366 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 345 insertions(+), 21 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java index 263c812..d55b581 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java @@ -1,22 +1,36 @@ package com.vincent.rsf.server.api.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto; import com.vincent.rsf.server.api.entity.dto.LocTypeDto; import com.vincent.rsf.server.api.controller.params.TaskInParam; +import com.vincent.rsf.server.api.entity.enums.OrderType; +import com.vincent.rsf.server.api.entity.enums.TaskStsType; import com.vincent.rsf.server.api.entity.enums.TaskType; import com.vincent.rsf.server.api.service.WcsService; import com.vincent.rsf.server.api.utils.LocUtils; import com.vincent.rsf.server.api.utils.SlaveProperties; import com.vincent.rsf.server.manager.entity.*; +import com.vincent.rsf.server.manager.enums.PakinIOStatus; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.manager.service.impl.LocServiceImpl; +import com.vincent.rsf.server.manager.utils.LocManageUtil; +import com.vincent.rsf.server.system.constant.SerialRuleCode; +import com.vincent.rsf.server.system.enums.LocStsType; +import com.vincent.rsf.server.system.utils.SerialRuleUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; 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.List; +import java.util.Objects; +import java.util.stream.Collectors; @Service public class WcsServiceImpl implements WcsService { @@ -34,12 +48,256 @@ private SlaveProperties slaveProperties; @Autowired private WarehouseAreasService warehouseAreasService; + @Autowired + private TaskService taskService; + @Autowired + private TaskItemService taskItemService; + @Autowired + private WaitPakinItemService waitPakinItemService; @Override - public InTaskMsgDto createInTask(TaskInParam param) { + @Transactional(rollbackFor = Exception.class) + public InTaskMsgDto createInTask(TaskInParam param, Long loginUserId) { + // 鑾峰彇搴撲綅鍙� InTaskMsgDto locNo = getLocNo(param); + + // 楠岃瘉璁惧绔欑偣 + DeviceSite deviceSite = validateDeviceSite(param); + + // 楠岃瘉缁勬嫋鐘舵�� + WaitPakin waitPakin = validateWaitPakin(param.getBarcode()); + + // 鐢熸垚浠诲姟缂栫爜 + String ruleCode = generateTaskCode(); + + // 鍒涘缓骞朵繚瀛樹换鍔� + Task task = createTask(ruleCode, locNo.getLocNo(), waitPakin.getBarcode(), + deviceSite.getDeviceSite(), param.getSourceStaNo().toString(), loginUserId); + + // 鏇存柊搴撲綅鐘舵�� + updateLocStatus(task.getTargLoc(), waitPakin.getBarcode()); + + // 鑾峰彇骞堕獙璇佺粍鎷栨槑缁� + List<WaitPakinItem> waitPakinItems = getWaitPakinItems(waitPakin.getId()); + + // 鍒涘缓骞朵繚瀛樹换鍔℃槑缁� + saveTaskItems(task.getId(), waitPakinItems, loginUserId); + + // 鏇存柊缁勬墭鐘舵�� + updateWaitPakinStatus(param.getBarcode(), loginUserId); + + // 璁剧疆宸ヤ綔鍗曞彿骞惰繑鍥� + locNo.setWorkNo(ruleCode); return locNo; } + + /** + * 楠岃瘉璁惧绔欑偣 + */ + private DeviceSite validateDeviceSite(TaskInParam param) { + DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>() + .eq(DeviceSite::getSite, param.getSourceStaNo()) + .eq(DeviceSite::getType, param.getIoType())); + + if (Objects.isNull(deviceSite)) { + throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�"); + } + return deviceSite; + } + + /** + * 楠岃瘉缁勬嫋鐘舵�� + */ + private WaitPakin validateWaitPakin(String barcode) { + WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() + .eq(WaitPakin::getBarcode, barcode) + .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val))); + + if (Cools.isEmpty(waitPakin)) { + throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�"); + } + return waitPakin; + } + + /** + * 鐢熸垚浠诲姟缂栫爜 + */ + private String generateTaskCode() { + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null); + if (StringUtils.isBlank(ruleCode)) { + throw new CoolException("缂栫爜閿欒锛氳纭缂栫爜銆孲YS_TASK_CODE銆嶆槸鍚﹀凡鐢熸垚!!"); + } + return ruleCode; + } + + /** + * 鍒涘缓骞朵繚瀛樹换鍔� + */ + private Task createTask(String ruleCode, String targetLoc, String barcode, + String targetSite, String sourceSiteNo, Long loginUserId) { + Task task = new Task(); + task.setTaskCode(ruleCode) + .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue()) + .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue()) + .setTargLoc(targetLoc) + .setBarcode(barcode) + .setTargSite(targetSite) + .setCreateBy(loginUserId) + .setUpdateBy(loginUserId) + .setOrgSite(sourceSiteNo); + + if (!taskService.save(task)) { + throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒"); + } + return task; + } + + /** + * 鏇存柊搴撲綅鐘舵�� + */ + private void updateLocStatus(String locCode, String barcode) { + boolean updated = locService.update(new LambdaUpdateWrapper<Loc>() + .eq(Loc::getCode, locCode) + .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type) + .set(Loc::getBarcode, barcode)); + + if (!updated) { + throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒"); + } + } + + /** + * 鑾峰彇骞堕獙璇佺粍鎷栨槑缁� + */ + private List<WaitPakinItem> getWaitPakinItems(Long pakinId) { + List<WaitPakinItem> waitPakinItems = waitPakinItemService.list( + new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, pakinId)); + + if (waitPakinItems.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪"); + } + return waitPakinItems; + } + + /** + * 鍒涘缓骞朵繚瀛樹换鍔℃槑缁� + */ + private void saveTaskItems(Long taskId, List<WaitPakinItem> waitPakinItems, Long loginUserId) { + List<TaskItem> taskItems = waitPakinItems.stream().map(item -> { + TaskItem taskItem = new TaskItem(); + BeanUtils.copyProperties(item, taskItem); + + return taskItem.setTaskId(taskId) + .setOrderType(OrderType.ORDER_RECEIPT.type) + .setSource(item.getId()) + .setTrackCode(item.getTrackCode()) + .setCreateBy(loginUserId) + .setUpdateBy(loginUserId) + .setOrderId(item.getAsnId()) + .setOrderItemId(item.getAsnItemId()); + }).collect(Collectors.toList()); + + if (!taskItemService.saveBatch(taskItems)) { + throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + } + + /** + * 鏇存柊缁勬墭鐘舵�� + */ + private void updateWaitPakinStatus(String barcode, Long loginUserId) { + boolean updated = waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>() + .eq(WaitPakin::getBarcode, barcode) + .set(WaitPakin::getUpdateBy, loginUserId) + .set(WaitPakin::getCreateBy, loginUserId) + .set(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val)); + + if (!updated) { + throw new CoolException("缁勬墭鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + } + } + +// @Override +// public InTaskMsgDto createInTask(TaskInParam param, Long loginUserId) { +// InTaskMsgDto locNo = getLocNo(param); +// DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>() +// .eq(DeviceSite::getSite, param.getSourceStaNo()) +// .eq(DeviceSite::getType,param.getIoType()) +// ); +// if (Objects.isNull(deviceSite)) { +// throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�"); +// } +// +// WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() +// .eq(WaitPakin::getBarcode, param.getBarcode()) +// .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val))); +// if (Cools.isEmpty(waitPakin)) { +// throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�"); +// } +// +// List<TaskItem> taskItems = new ArrayList<>(); +// String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null); +// if (StringUtils.isBlank(ruleCode)) { +// throw new CoolException("缂栫爜閿欒锛氳纭缂栫爜銆孲YS_TASK_CODE銆嶆槸鍚﹀凡鐢熸垚!!"); +// } +// Task task = new Task(); +// task.setTaskCode(ruleCode) +// .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue()) +// .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue()) +// .setTargLoc(locNo.getLocNo()) +// .setBarcode(waitPakin.getBarcode()) +// .setTargSite(deviceSite.getDeviceSite()) +// .setCreateBy(loginUserId) +// .setUpdateBy(loginUserId) +// .setOrgSite(param.getSourceStaNo().toString()); +// +// +// +// +// if (!taskService.save(task)) { +// throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒"); +// } +// if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()) +// .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, waitPakin.getBarcode()))) { +// throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒"); +// } +// /**鑾峰彇缁勬嫋鏄庣粏**/ +// List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId())); +// if (waitPakinItems.isEmpty()) { +// throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪"); +// } +// waitPakinItems.forEach(item -> { +// TaskItem taskItem = new TaskItem(); +// BeanUtils.copyProperties(item, taskItem); +//// AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, item.getAsnId())); +//// if (Objects.isNull(order)) { +//// throw new CoolException("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�"); +//// } +// taskItem.setTaskId(task.getId()) +// .setOrderType(OrderType.ORDER_RECEIPT.type) +// .setSource(item.getId()) +// .setTrackCode(item.getTrackCode()) +// .setCreateBy(loginUserId) +// .setUpdateBy(loginUserId) +// .setOrderId(item.getAsnId()) +// .setOrderItemId(item.getAsnItemId()); +// taskItems.add(taskItem); +// }); +// if (!taskItemService.saveBatch(taskItems)) { +// throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒"); +// } +// +// +// if (!waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>() +// .eq(WaitPakin::getBarcode, param.getBarcode()) +// .set(WaitPakin::getUpdateBy, loginUserId) +// .set(WaitPakin::getCreateBy, loginUserId) +// .set(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val))) { +// throw new CoolException("缁勬墭鐘舵�佷慨鏀瑰け璐ワ紒锛�"); +// } +// locNo.setWorkNo(ruleCode); +// return locNo; +// } public InTaskMsgDto getLocNo(TaskInParam param) { String matnr = null; String batch = null; @@ -57,7 +315,11 @@ if (Cools.isEmpty(deviceSites)) { throw new CoolException("鏈壘鍒扮珯鐐硅矾寰勪俊鎭�"); } - WarehouseAreas warehouseArea = warehouseAreasService.getById(param.getArea()); + DeviceBind deviceBind = deviceBindService.getById(LocUtils.getAreaType(param.getSourceStaNo())); + if (Cools.isEmpty(deviceBind)) { + throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�===>搴撲綅瑙勫垯鏈煡"); + } + WarehouseAreas warehouseArea = warehouseAreasService.getById(deviceBind.getTypeId()); if (Cools.isEmpty(warehouseArea)) { throw new CoolException("鏈壘鍒版墍灞炲簱鍖轰俊鎭�"); } @@ -65,17 +327,18 @@ InTaskMsgDto dto = null; switch (warehouseArea.getType()) { case "CRN": //鍫嗗灈鏈� - dto = getLocNoCrn(param.getArea(), param.getSourceStaNo(), matnr,batch, locTypeDto, 0, param.getIoType()); + dto = getLocNoCrn(deviceBind,warehouseArea.getId(), param.getSourceStaNo(), matnr,batch, locTypeDto, 0, param.getIoType()); break; case "SXC": //鍥涘悜搴� break; - case "CTU": //鍥涘悜搴� + case "CTU": //ctu + dto = getLocNoCtu(deviceBind,warehouseArea.getId(), param.getSourceStaNo(), matnr,batch, locTypeDto, 0, param.getIoType()); break; } return dto; } - private InTaskMsgDto getLocNoCrn(Integer area,Integer sourceStaNo, String matnr, String batch,LocTypeDto locTypeDto, int times,Integer ioType){ + private InTaskMsgDto getLocNoCrn(DeviceBind deviceBind,Long area,Integer sourceStaNo, String matnr, String batch,LocTypeDto locTypeDto, int times,Integer ioType){ if (Cools.isEmpty(matnr)) { //鐗╂枡鍙� matnr = ""; } @@ -90,10 +353,7 @@ Loc loc = null; // 鐩爣搴撲綅 InTaskMsgDto inTaskMsgDto = new InTaskMsgDto(); - DeviceBind deviceBind = deviceBindService.getById(LocUtils.getAreaType(sourceStaNo)); - if (Cools.isEmpty(deviceBind)) { - throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�===>搴撲綅瑙勫垯鏈煡"); - } + int sRow = deviceBind.getStartRow(); int eRow = deviceBind.getEndRow(); int deviceQty = deviceBind.getDeviceQty(); @@ -115,7 +375,7 @@ throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満"); } //鍏ュ簱闈犺繎鎽嗘斁 - if (ioType== 1 && deviceBind.getBeSimilar().equals("1") && Cools.isEmpty(matnr)) { + if (ioType== 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr)) { if (nearRow != curRow) { List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getMatnrCode, matnr)); for (LocItem locItem : locItems) { @@ -126,7 +386,7 @@ String shallowLocNo = LocUtils.getShallowLoc(slaveProperties, loc1.getCode()); // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣� Loc shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode,shallowLocNo)); - if (shallowLoc != null && shallowLoc.getUseStatus().equals("O")) { + if (shallowLoc != null && shallowLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { if (LocUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) { loc = shallowLoc; deviceNo = shallowLoc.getDeviceNo(); @@ -185,7 +445,7 @@ List<Loc> locMasts = null; locMasts = locService.list(new LambdaQueryWrapper<Loc>() .eq(Loc::getRow, nearRow) - .eq(Loc::getUseStatus, "O") + .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) .eq(Loc::getType, locTypeDto.getLocType1()) .eq(Loc::getAreaId,area) .orderByAsc(Loc::getLev) @@ -200,7 +460,7 @@ //鐩镐技鐗╂枡鎵撳紑锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾病璐у氨鏀炬繁搴撲綅锛屾湁璐у氨涓嶆搷浣� Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>() .eq(Loc::getRow, shallowLoc) - .eq(Loc::getUseStatus, "O") + .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) .eq(Loc::getAreaId,area) ); if (!Cools.isEmpty(locMast2)) { @@ -211,7 +471,7 @@ //鐩镐技鐗╂枡鍏抽棴锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾湁璐у氨鏀炬祬搴撲綅锛屾棤璐у氨涓嶆搷浣� Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>() .eq(Loc::getCode, shallowLoc) - .in(Loc::getUseStatus, "D","F") + .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type,LocStsType.LOC_STS_TYPE_F.type) .eq(Loc::getAreaId,area) ); if (!Cools.isEmpty(locMast2)) { @@ -220,7 +480,7 @@ }else{ locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>() .eq(Loc::getCode, shallowLoc) - .eq(Loc::getUseStatus, "O") + .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) .eq(Loc::getAreaId,area) ); if (!Cools.isEmpty(locMast2)) { @@ -239,7 +499,7 @@ String shallowLoc = LocUtils.getDeepLoc(slaveProperties, locMast1.getCode()); Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>() .eq(Loc::getCode, shallowLoc) - .eq(Loc::getUseStatus, "O") + .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) .eq(Loc::getAreaId,area) ); if (!Cools.isEmpty(locMast2)) { @@ -248,7 +508,7 @@ } else { locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>() .eq(Loc::getCode, shallowLoc) - .in(Loc::getUseStatus, "D","F") + .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type,LocStsType.LOC_STS_TYPE_D.type) .eq(Loc::getAreaId,area) ); if (!Cools.isEmpty(locMast2)) { @@ -267,7 +527,7 @@ } //鏌ヨ褰撳墠搴撲綅绫诲瀷绌哄簱浣� 灏忎簬5涓垯locmast = null List<Loc> locTypeLocMasts = locService.list(new LambdaQueryWrapper<Loc>() - .eq(Loc::getUseStatus, "O") + .eq(Loc::getUseStatus,LocStsType.LOC_STS_TYPE_O.type) .eq(Loc::getDeviceNo, deviceNo) .eq(Loc::getType, locTypeDto.getLocType1()) .eq(Loc::getAreaId,area) @@ -276,18 +536,18 @@ loc = null; } // 閫掑綊鏌ヨ - if (Cools.isEmpty(loc) || !loc.getUseStatus().equals("O")) { + if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊 if (times < rowCount * 2) { times = times + 1; - return getLocNoCrn(area,sourceStaNo,matnr,batch,locTypeDto,times, ioType); + return getLocNoCrn(deviceBind,area,sourceStaNo,matnr,batch,locTypeDto,times, ioType); } // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣� if (locTypeDto.getLocType1() < 3) { int i = locTypeDto.getLocType1() + 1; locTypeDto.setLocType1(i); - return getLocNoCrn(area,sourceStaNo,matnr,batch,locTypeDto,0, ioType); + return getLocNoCrn(deviceBind,area,sourceStaNo,matnr,batch,locTypeDto,0, ioType); } throw new CoolException("娌℃湁绌哄簱浣�"); } @@ -300,4 +560,68 @@ inTaskMsgDto.setLocNo(locNo); return inTaskMsgDto; } + + private InTaskMsgDto getLocNoCtu(DeviceBind deviceBind,Long area,Integer sourceStaNo, String matnr, String batch,LocTypeDto locTypeDto, int times,Integer ioType){ + if (Cools.isEmpty(matnr)) { //鐗╂枡鍙� + matnr = ""; + } + if (Cools.isEmpty(batch)) { //鎵规 + batch = ""; + } + int deviceNo = 0; + Loc loc = new Loc(); + InTaskMsgDto inTaskMsgDto = new InTaskMsgDto(); + List<Loc> loc1 = locService.list(new LambdaQueryWrapper<Loc>() + .eq(Loc::getAreaId, area) + .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) + .eq(Loc::getType, locTypeDto.getLocType1()) + .orderByAsc(Loc::getLev) + .orderByAsc(Loc::getCol) + .orderByAsc(Loc::getRow) + ); + for (Loc loc2 :loc1){ + if (!LocUtils.locMoveCheckLocTypeComplete(loc2, locTypeDto)) { + continue; + } + loc = loc2; + break; + } + //鏌ユ壘璺緞 + DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>() + .eq(DeviceSite::getType, ioType) + .eq(DeviceSite::getSite, sourceStaNo) + .eq(DeviceSite::getDeviceCode, loc.getDeviceNo()) + ); + if (Cools.isEmpty(deviceSite)){ + deviceNo = 0; + loc = null; + }else { + inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite())); + } + // 閫掑綊鏌ヨ + if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { + // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊 + if (times < 5) { + times = times + 1; + return getLocNoCtu(deviceBind,area,sourceStaNo,matnr,batch,locTypeDto,times, ioType); + + } + // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣� + if (locTypeDto.getLocType1() < 3) { + int i = locTypeDto.getLocType1() + 1; + locTypeDto.setLocType1(i); + return getLocNoCtu(deviceBind,area,sourceStaNo,matnr,batch,locTypeDto,0, ioType); + } + throw new CoolException("娌℃湁绌哄簱浣�"); + } + + String locNo = loc.getCode(); + + // 杩斿洖dto + inTaskMsgDto.setDeviceNo(deviceNo); + inTaskMsgDto.setSourceStaNo(sourceStaNo); +// inTaskMsgDto.setStaNo(); + inTaskMsgDto.setLocNo(locNo); + return inTaskMsgDto; + } } -- Gitblit v1.9.1