From 523d8cf68615134c7780f74933e70a14edb60f01 Mon Sep 17 00:00:00 2001 From: skyouc <958836976@qq.com> Date: 星期五, 05 九月 2025 17:00:39 +0800 Subject: [PATCH] wcs联调功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java | 170 +++++++------------------------------------------------- 1 files changed, 23 insertions(+), 147 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java index 01fdedd..6e6344e 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java @@ -13,7 +13,9 @@ import com.vincent.rsf.server.manager.enums.*; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.manager.service.impl.BasStationServiceImpl; +import com.vincent.rsf.server.system.constant.GlobalConfigCode; import com.vincent.rsf.server.system.constant.SerialRuleCode; +import com.vincent.rsf.server.system.entity.Config; import com.vincent.rsf.server.system.service.ConfigService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import lombok.extern.slf4j.Slf4j; @@ -25,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; import static com.vincent.rsf.server.system.utils.SystemAuthUtils.getLoginUserId; @@ -101,54 +104,34 @@ * @version 1.0 */ @Scheduled(cron = "0/35 * * * * ?") + @Transactional(rollbackFor = Exception.class) public void autoCheckComplete() { - Boolean autoRunArea = configService.getVal("AUTO_RUN_CHECK_ORDERS", Boolean.class); - if (!autoRunArea) { - return; - } //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟 List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() - .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_CHECK_IN.type))); + .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, + TaskType.TASK_TYPE_PICK_IN.type, + TaskType.TASK_TYPE_PICK_AGAIN_OUT.type, + TaskType.TASK_TYPE_CHECK_IN.type))); - if (tasks.size() >= 5) { - return; - } if (!tasks.isEmpty()) { tasks.forEach(task -> { if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) { if (task.getTaskStatus().equals(TaskStsType.COMPLETE_IN.id)) { - if (!stationService.update(new LambdaUpdateWrapper<BasStation>() - .eq(BasStation::getStationName, task.getOrgSite()) - .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type))) { - throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�"); - } + } } else { - //鍒涘缓鍑哄簱浠诲姟鐘舵�� -// if (task.getTaskStatus().equals(TaskStsType.WCS_EXECUTE_OUT.id)) { -// task.setTaskStatus(TaskStsType.COMPLETE_OUT.id); -// if (!taskService.updateById(task)) { -// throw new CoolException("鐩樼偣鍑哄簱浠诲姟瀹屾垚澶辫触锛侊紒"); -// } -// //鍑哄簱宸插畬鎴愶紝绛夊緟鐩樼偣涓� -// } else - if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) { if (!stationService.update(new LambdaUpdateWrapper<BasStation>() - .eq(BasStation::getStationName, task.getOrgSite()) - .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_F.type))) { - throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + .eq(BasStation::getStationName, task.getTargSite()) + .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type))) { + log.error("绔欑偣鐘舵�佷慨鏀瑰畬鎴愬け璐�,褰撳墠浠诲姟鐘舵�侊細", task.getTaskStatus()); +// throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�"); } try { - taskService.pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_CHECK); + taskService.pickOrCheckTask(task.getId(), task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) ? Constants.TASK_TYPE_OUT_CHECK : ""); - if (!stationService.update(new LambdaUpdateWrapper<BasStation>() - .eq(BasStation::getStationName, task.getOrgSite()) - .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type))) { - throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�"); - } } catch (Exception e) { - throw new CoolException(e.getMessage()); + log.error("error====>", e); } } } @@ -160,13 +143,13 @@ /** * @author Ryan * @date 2025/9/1 - * @description: 鑷姩瀹屾垚鐩樼偣鍔熻兘 + * @description: 鑷姩鐢熸垚浠诲姟 * @version 1.0 */ @Scheduled(cron = "0/25 * * * * ?") public void genRun() { - Boolean flagAuto = configService.getVal("AUTO_RUN_CHECK_ORDERS", Boolean.class); - if (!flagAuto) { + Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_RUN_CHECK_ORDERS)); + if (!Boolean.parseBoolean(config.getVal())) { return; } //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟 @@ -218,12 +201,15 @@ locItems.forEach(locItem -> { locItem.setOutQty(locItem.getAnfme()); }); - List<BasStation> stations = stationService.list(new LambdaQueryWrapper<BasStation>().eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)); + List<BasStation> stations = stationService.list(new LambdaQueryWrapper<BasStation>() + .eq(BasStation::getStatus, 1) + .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)); + List<String> stationNames = stations.stream().map(BasStation::getStationName).collect(Collectors.toList()); if (Cools.isEmpty(stations)) { throw new CoolException("鏃犲彲鐢ㄧ珯鐐癸紒锛�"); } DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>() - .in(DeviceSite::getSite, stations) + .in(DeviceSite::getSite, stationNames) .eq(DeviceSite::getType, TaskType.TASK_TYPE_CHECK_OUT.type), false); if (Cools.isEmpty(deviceSite)) { throw new CoolException("鏃犲彲鐢ㄨ矾寰勶紒锛�"); @@ -240,19 +226,12 @@ continue; } try { - //鐢熸垚鐩樼偣鍑哄簱浠诲姟锛岀珯鐐归绾� - if (!stationService.update(new LambdaUpdateWrapper<BasStation>() - .eq(BasStation::getStationName, deviceSite.getSite()) - .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_S.type))) { - throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�"); - } locItemService.generateTask(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val, locToTaskParams, getLoginUserId()); } catch (Exception e) { throw new CoolException(e.getMessage()); } } } - // 鍏ュ簱 搴旇鏍规嵁宸ヤ綔妗e洖鍘� // this.runStaToLoc(locGroupList, staGroupList, staTaskMemo); @@ -267,14 +246,6 @@ private List<Loc> getAreaLocs(List<Integer> locGroupList, List<String> staGroupList, String memo) { Integer startRow = Collections.min(locGroupList); Integer endRow = Collections.max(locGroupList); - - // STA IDLE -// LambdaQueryWrapper<BasStation> idleWrapper = new LambdaQueryWrapper<BasStation>().eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type).in(BasStation::getStationName, staGroupList); -// List<BasStation> idleList = stationService.list(idleWrapper); -// if (Cools.isEmpty(idleList)) { -// return new ArrayList<>(); -// } -// Collections.shuffle(idleList); // LOC STOCK LambdaQueryWrapper<Loc> stockWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type); @@ -291,57 +262,8 @@ Collections.shuffle(stockList); return stockList; - //鐢熸垚鍏ュ簱宸ヤ綔妗� -// generateTask(idleList.get(0).getStationName(), stockList.get(0).getCode(), idleList.get(0).getBarcode()); - } - - - // 鍑哄簱 - private void runLocToSta(List<Integer> locGroupList, List<String> staGroupList, String memo) { - Integer startRow = Collections.min(locGroupList); - Integer endRow = Collections.max(locGroupList); - - - // STA IDLE - LambdaQueryWrapper<BasStation> idleWrapper = new LambdaQueryWrapper<BasStation>().eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type).in(BasStation::getStationName, staGroupList); - List<BasStation> idleList = stationService.list(idleWrapper); - if (Cools.isEmpty(idleList)) { - return; - } - Collections.shuffle(idleList); - - // LOC STOCK - LambdaQueryWrapper<Loc> stockWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type); - if (null != startRow) { - stockWrapper.ge(Loc::getRow, startRow); - } - if (null != endRow) { - stockWrapper.le(Loc::getRow, endRow); - } - List<Loc> stockList = locService.list(stockWrapper); - if (Cools.isEmpty(stockList)) { - return; - } - Collections.shuffle(stockList); - - - Loc loc = stockList.get(0); - List<LocItem> list = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId())); - LocToTaskParams param = new LocToTaskParams(); - param.setType(Constants.TASK_TYPE_OUT_STOCK); - param.setTarLoc(loc.getCode()); - param.setItems(list); - param.setSiteNo(idleList.get(0).getStationName()); - param.setMemo(memo); - //鐢熸垚鍑哄簱宸ヤ綔妗� - try { - locItemService.generateTask(TaskResouceType.TASK_RESOUCE_STOCK_TYPE.val, param, getLoginUserId()); - } catch (Exception e) { - log.info("鐢熸垚鍑哄簱浠诲姟澶辫触", e); - } } - // 绉诲簱 private void runLocToLoc(List<Integer> locGroupList, String staTaskMemo) { @@ -395,52 +317,6 @@ } } - - private void generateTask(String sourceStaNo, String locNo, String barcode) { - 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) - .setTaskType(TaskType.TASK_TYPE_IN.type) - .setResource(TaskResouceType.TASK_RESOUCE_PAKIN_TYPE.val) - .setTargLoc(locNo) - .setBarcode(barcode) - .setOrgSite(sourceStaNo) - .setCreateBy(6666L) - .setUpdateBy(6666L); - - if (!taskService.save(task)) { - throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒"); - } - LambdaQueryWrapper<Matnr> wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Matnr::getStatus, 1); - wrapper.orderByAsc(Matnr::getUpdateTime); - List<Matnr> list = matnrService.page(new Page<>(1, 100), wrapper).getRecords(); - Collections.shuffle(list); - List<TaskItem> taskItems = new ArrayList<>(); - int i = 0; - for (Matnr item : list) { - if (i > 5) { - break; - } - TaskItem taskItem = new TaskItem(); - BeanUtils.copyProperties(item, taskItem); - taskItem.setTaskId(task.getId()) - .setOrderType(OrderType.ORDER_IN.type) - .setCreateBy(6666L) - .setUpdateBy(6666L) - .setExtendFields(item.getExtendFields()); - taskItems.add(taskItem); - item.setUpdateTime(new Date()); - matnrService.updateById(item); - i++; - } - taskItemService.saveBatch(taskItems); - } - public static List<String> getStaPrefixes(List<String> staGroupList) { Set<String> rowSet = new HashSet<>(); -- Gitblit v1.9.1