From 66178ff39fda912314b51c082b0ac4e4f76300bd Mon Sep 17 00:00:00 2001 From: lishuai <1793460677@qq.com> Date: Tue, 5 Dec 2023 16:18:43 +0800 Subject: [PATCH 1/4] =?UTF-8?q?add:=20=E5=8F=8C=E5=B7=A5=E4=BD=8D=E5=A0=86?= =?UTF-8?q?=E5=9E=9B=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DoubleStationStackerDeviceDriver.java | 843 ++++++++++-------- .../double_station_stacker/ItemProtocol.java | 2 +- .../enums/CommandEnum.java | 37 + .../enums/SortEnum.java | 18 + .../device/driver/double_station_stacker.vue | 52 +- 5 files changed, 569 insertions(+), 383 deletions(-) create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/enums/CommandEnum.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/enums/SortEnum.java diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/DoubleStationStackerDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/DoubleStationStackerDeviceDriver.java index c99a87b..f938659 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/DoubleStationStackerDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/DoubleStationStackerDeviceDriver.java @@ -1,11 +1,15 @@ package org.nl.acs.device_driver.basedriver.double_station_stacker; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; + import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -17,6 +21,8 @@ import org.nl.acs.device.service.impl.DeviceExtraServiceImpl; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.basedriver.belt_conveyor.BeltConveyorDeviceDriver; +import org.nl.acs.device_driver.basedriver.double_station_stacker.enums.CommandEnum; +import org.nl.acs.device_driver.basedriver.double_station_stacker.enums.SortEnum; import org.nl.acs.device_driver.basedriver.siemens_conveyor.SiemensConveyorDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; @@ -31,9 +37,7 @@ import org.nl.acs.route.service.RouteLineService; import org.nl.acs.route.service.dto.RouteLineDto; import org.nl.acs.route.service.impl.RouteLineServiceImpl; import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; import org.nl.config.SpringContextHolder; -import org.springframework.beans.factory.annotation.Autowired; import java.util.*; import java.util.stream.Collectors; @@ -41,22 +45,23 @@ import java.util.stream.Collectors; /** * 双工位堆垛机驱动 */ +@EqualsAndHashCode(callSuper = true) @Slf4j @Data @RequiredArgsConstructor public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired - TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired + + TaskService takeover = SpringContextHolder.getBean("taskServiceImpl"); + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired + DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - @Autowired + RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineServiceImpl.class); - @Autowired + DeviceExtraService deviceExtraService = SpringContextHolder.getBean(DeviceExtraServiceImpl.class); public static final Integer MAX_Y = 6; @@ -64,98 +69,98 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im //心跳 Integer heartbeat = 0; - Integer last_heartbeat = 0; + Integer lastHeartbeat = 0; //堆垛机号 - Integer item_deviceCode = 0; - Integer last_item_deviceCode = 0; + Integer itemDeviceCode = 0; + Integer lastItemDeviceCode = 0; //工作模式 Integer mode = 0; - Integer last_mode = 0; + Integer lastMode = 0; //行走开关信号 Float move = 0F; - Float last_move = 0F; + Float lastMove = 0F; //行走动作信号 Float action = 0F; - Float last_action = 0F; + Float lastAction = 0F; //前叉作业状态 - Integer front_command = 0; - Integer last_front_command = 0; + Integer frontCommand = 0; + Integer lastFrontCommand = 0; //前叉任务号 - Integer front_task = 0; - Integer last_front_task = 0; + Integer frontTask = 0; + Integer lastFrontTask = 0; //行走激光数值 Integer distancex = 0; - Integer last_distancex = 0; + Integer lastDistancex = 0; //特殊开关量1 Float special1 = 0F; - Float last_special1 = 0F; + Float lastSpecial1 = 0F; //特殊开关量2 Float special2 = 0F; - Float last_special2 = 0F; + Float lastSpecial2 = 0F; //水箱和消防缓存位有无货 - Float storage_cache = 0F; - Float last_storage_cache = 0F; + Float storageCache = 0F; + Float lastStorageCache = 0F; //后叉作业状态 - Integer back_command = 0; - Integer last_back_command = 0; + Integer backCommand = 0; + Integer lastBackCommand = 0; //后叉任务号 - Integer back_task = 0; - Integer last_back_task = 0; + Integer backTask = 0; + Integer lastBackTask = 0; //前叉Z轴报警(货叉) - Integer front_ZError = 0; - Integer last_front_ZError = 0; + Integer frontZerror = 0; + Integer lastFrontZerror = 0; //后叉Z轴报警(货叉) - Integer back_ZError = 0; - Integer last_back_ZError = 0; + Integer backZerror = 0; + Integer lastBackZerror = 0; //前叉行走排号 - Integer front_z = 0; - Integer last_front_z = 0; + Integer frontZ = 0; + Integer lastFrontZ = 0; //前行走列号 - Integer front_x = 0; - Integer last_front_x = 0; + Integer frontX = 0; + Integer lastFrontX = 0; //前行走层号 - Integer front_y = 0; - Integer last_front_y = 0; + Integer frontY = 0; + Integer lastFrontY = 0; //后叉行走排号 - Integer back_z = 0; - Integer last_back_z = 0; + Integer backZ = 0; + Integer lastBackZ = 0; //后行走列号 - Integer back_x = 0; - Integer last_back_x = 0; + Integer backX = 0; + Integer lastBackX = 0; //后行走层号 - Integer back_y = 0; - Integer last_back_y = 0; + Integer backY = 0; + Integer lastBackY = 0; //前货叉探货信号 - Float front_forkCargo = 0F; - Float last_front_forkCargo = 0F; + Float frontForkCargo = 0F; + Float lastFrontForkCargo = 0F; //后货叉探货信号 - Float back_forkCargo = 0F; - Float last_back_forkCargo = 0F; + Float backForkCargo = 0F; + Float lastBackForkCargo = 0F; //前货叉位置信号 - Float front_forkLocation = 0F; - Float last_front_forkLocation = 0F; + Float frontForkLocation = 0F; + Float lastFrontForkLocation = 0F; //后货叉位置信号 - Float back_forkLocation = 0F; - Float last_back_forkLocation = 0F; + Float backForkLocation = 0F; + Float lastBackForkLocation = 0F; //前货叉动作信号 - Float front_forkAction = 0F; - Float last_front_forkAction = 0F; + Float frontForkAction = 0F; + Float lastFrontForkAction = 0F; //后货叉动作信号 - Float back_forkAction = 0F; - Float last_back_forkAction = 0F; + Float backForkAction = 0F; + Float lastBackForkAction = 0F; String message = null; @@ -164,12 +169,12 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im String notCreateInstMessage = null; - private int instruction_require_time_out = 3000; - private int instruction_update_time_out = 3000; - private Date instruction_require_time = new Date(); - private Date instruction_update_time = new Date(); - List getDeviceCodeList = null; - List putDeviceCodeList = null; + private int instructionRequireTimeOut = 3000; + private int instructionUpdateTimeOut = 3000; + private Date instructionRequireTime = new Date(); + private Date instructionUpdateTime = new Date(); + List getdevice_codeList = null; + List putdevice_codeList = null; //请求成功标记 Boolean requireSucess = false; @@ -181,7 +186,7 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im } @Override - public void execute() throws Exception { + public void execute() { try { //设置参数 setData(); @@ -196,180 +201,190 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im var17.printStackTrace(); logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17.getMessage() + ",this.itemProtocol is null:" + ObjectUtil.isEmpty(this.itemProtocol)); } - - if (mode != 3) { message = "未联机"; - } else if (front_ZError != 0 || back_ZError != 0) { + } else if (frontZerror != 0 || backZerror != 0) { message = "有报警"; } else { - HashMap map = new HashMap(); - if ( front_command == 0 || back_command ==0 ){ + HashMap map = new HashMap<>(); + if (CommandEnum.STANDY.getStatus().equals(frontCommand) || backCommand.equals(CommandEnum.STANDY.getStatus())){ applyTask(); requireSucess = true; } + if (CommandEnum.PICKUP.getStatus().equals(frontCommand) || backCommand.equals(CommandEnum.PICKUP.getStatus())){ + message = "取货中"; + } + if (CommandEnum.PICKUP_COMPLETE.getStatus().equals(frontCommand) || backCommand.equals(CommandEnum.PICKUP_COMPLETE.getStatus())){ + message = "取货完成"; + LinkedList inst = new LinkedList<>(); + getIns(inst); + if (CollectionUtil.isNotEmpty(inst)&&ObjectUtil.isNotEmpty(inst.get(0))) { + String startdevice_code = inst.get(0).getStart_device_code(); + Device startDevice = deviceAppService.findDeviceByCode(startdevice_code); + writeStorageOrConveyor(inst,startdevice_code,startDevice,map); + } + if (CollectionUtil.isNotEmpty(inst)&&ObjectUtil.isEmpty(inst.get(0))) { + String startdevice_code = inst.get(1).getStart_device_code(); + Device startDevice = deviceAppService.findDeviceByCode(startdevice_code); + writeStorageOrConveyor(inst,startdevice_code,startDevice,map); + } + map.put("to_command", CommandEnum.PICKUP_COMPLETE.getStatus()); + requireSucess = true; + } + if (CommandEnum.RELEASE.getStatus().equals(frontCommand) || backCommand.equals(CommandEnum.RELEASE.getStatus())){ + message = "放货中"; + } + if (CommandEnum.UNLOAD.getStatus().equals(frontCommand) || backCommand.equals(CommandEnum.UNLOAD.getStatus())){ + message = "请求卸货(申请卸货)"; + LinkedList inst = new LinkedList<>(); + getIns(inst); + if (CollectionUtil.isNotEmpty(inst)&&ObjectUtil.isNotEmpty(inst.get(0))) { + String nextdevice_code = inst.get(0).getNext_device_code(); + Device nextDevice = deviceAppService.findDeviceByCode(nextdevice_code); + //指令为执行 + if (unloadCheck(nextDevice)) return; + map.put("to_command", 3); + requireSucess = true; + } + if (CollectionUtil.isNotEmpty(inst)&&ObjectUtil.isEmpty(inst.get(0))) { + String nextdevice_code = inst.get(1).getNext_device_code(); + Device nextDevice = deviceAppService.findDeviceByCode(nextdevice_code); + if (unloadCheck(nextDevice)) return; + map.put("to_command", 3); + requireSucess = true; + } + } + if (CommandEnum.UNLOAD_COMPLETE.getStatus().equals(frontCommand) || backCommand.equals(CommandEnum.UNLOAD_COMPLETE.getStatus())){ + message = "放货完成"; + map.put("to_command", 5); + LinkedList inst = new LinkedList<>(); + getIns(inst); + try { + if (CollectionUtil.isNotEmpty(inst)){ + for (Instruction instruction : inst) { + finishInstruction(instruction); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + requireSucess = true; + } - switch (front_command) { - case 0: - applyTask(); - requireSucess = true; - break; - case 1: - message = "取货中"; - break; - case 2: - message = "取货完成"; - Instruction instruction = null; - String next_device_code = instruction.getNext_device_code(); - Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); - if (StrUtil.equals(nextDevice.getDevice_type(), DeviceType.conveyor.name())) { - List list = deviceExtraService.list(Wrappers.lambdaQuery(DeviceExtra.class).eq(DeviceExtra::getDevice_code, next_device_code)); - for (DeviceExtra deviceExtra : list) { - if ("x".equals(deviceExtra.getExtra_code()) && StrUtil.isNotEmpty(deviceExtra.getExtra_value())) { - map.put("to_x", deviceExtra.getExtra_value()); - } - if ("z".equals(deviceExtra.getExtra_code()) && StrUtil.isNotEmpty(deviceExtra.getExtra_value())) { - map.put("to_z", deviceExtra.getExtra_value()); - } - if ("y".equals(deviceExtra.getExtra_code()) && StrUtil.isNotEmpty(deviceExtra.getExtra_value())) { - map.put("to_y", deviceExtra.getExtra_value()); - } - } - } - if (StrUtil.equals(nextDevice.getDevice_type(), DeviceType.storage.name())) { - map.put("to_y", instruction.getFrom_z()); - if (instruction.getFrom_x().length() > 1) { - String substring = instruction.getFrom_x().substring(1); - map.put("to_z", substring); - } else { - map.put("to_z", instruction.getFrom_x()); - } - map.put("to_x", instruction.getFrom_y()); - } - map.put("to_command", 2); - requireSucess = true; - break; - case 3: - message = "放货中"; - break; - case 4: - message = "请求卸货(申请卸货)"; - Instruction instruction1 = null; - String next_device_code1 = instruction1.getNext_device_code(); - Device nextDevice1 = deviceAppService.findDeviceByCode(next_device_code1); - if (ObjectUtil.isNotNull(instruction1)) { - //指令为执行 - SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; - if (nextDevice1.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { - siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) nextDevice1.getDeviceDriver(); - if (siemensConveyorDeviceDriver.getMode() != 2 || siemensConveyorDeviceDriver.getMove() == 1) { - notCreateInstMessage = "未下发电气信号原因->输送线-货架对接位:" + siemensConveyorDeviceDriver.getDevice_code() + - "有货或未联机,无法下发指令!指令号:" ; - return; - } - } - map.put("to_command", 3); - } - requireSucess = true; - break; - case 5: - message = "放货完成"; - map.put("to_command", 5); - Instruction inst = null; - try { - finish_instruction(inst); - } catch (Exception e) { - e.printStackTrace(); - } - requireSucess = true; - break; - case 6: - message = "取货准备(会库位台)"; - map.put("to_command", 6); - requireSucess = true; - break; - case 7: - message = "召回"; - map.put("to_command", 7); - requireSucess = true; - break; - case 8: - message = "急停"; - map.put("to_command", 8); - requireSucess = true; - break; - default: - message = "不明"; - requireSucess = true; - break; + if (CommandEnum.PICKUP_PREPARATION.getStatus().equals(frontCommand) || backCommand.equals(CommandEnum.PICKUP_PREPARATION.getStatus())){ + message = "取货准备(会库位台)"; + map.put("to_command", 6); + requireSucess = true; + } + if (CommandEnum.RECALL.getStatus().equals(frontCommand) || backCommand.equals(CommandEnum.RECALL.getStatus())){ + message = "召回"; + map.put("to_command", 7); + requireSucess = true; + } + if (CommandEnum.STOP.getStatus().equals(frontCommand) || backCommand.equals(CommandEnum.STOP.getStatus())){ + message = "急停"; + map.put("to_command", 8); + requireSucess = true; } if (ObjectUtil.isNotNull(map)) { this.writing(map); } - } - last_heartbeat = heartbeat; - last_item_deviceCode = item_deviceCode; - last_mode = mode; - last_front_command = front_command; - last_back_command = back_command; - last_front_task = front_task; - last_back_task = back_task; - last_move = move; - last_front_ZError = front_ZError; - last_back_ZError = back_ZError; - last_front_z = front_z; - last_back_z = back_z; - last_front_x = front_x; - last_back_x = back_x; - last_front_y = front_y; - last_back_y = back_y; - last_action = action; - last_distancex = distancex; - last_front_forkCargo = front_forkCargo; - last_back_forkCargo = back_forkCargo; - last_front_forkLocation = front_forkLocation; - last_back_forkLocation = back_forkLocation; - last_front_forkAction = front_forkAction; - last_back_forkAction = back_forkAction; - last_special1 = special1; - last_special2 = special2; - last_storage_cache = storage_cache; + lastHeartbeat = heartbeat; + lastItemDeviceCode = itemDeviceCode; + lastMode = mode; + lastFrontCommand = frontCommand; + lastBackCommand = backCommand; + lastFrontTask = frontTask; + lastBackTask = backTask; + lastMove = move; + lastFrontZerror = frontZerror; + lastBackZerror = backZerror; + lastFrontZ = frontZ; + lastBackZ = backZ; + lastFrontX = frontX; + lastBackX = backX; + lastFrontY = frontY; + lastBackY = backY; + lastAction = action; + lastDistancex = distancex; + lastFrontForkCargo = frontForkCargo; + lastBackForkCargo = backForkCargo; + lastFrontForkLocation = frontForkLocation; + lastBackForkLocation = backForkLocation; + lastFrontForkAction = frontForkAction; + lastBackForkAction = backForkAction; + lastSpecial1 = special1; + lastSpecial2 = special2; + lastStorageCache = storageCache; + + } + + private boolean unloadCheck(Device nextDevice) { + SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; + if (nextDevice.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { + siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) nextDevice.getDeviceDriver(); + if (siemensConveyorDeviceDriver.getMode() != 2 || siemensConveyorDeviceDriver.getMove() == 1) { + notCreateInstMessage = "未下发电气信号原因->输送线-货架对接位:" + siemensConveyorDeviceDriver.getDeviceCode() + + "有货或未联机,无法下发指令!指令号:"; + return true; + } + } + return false; + } + + private void getIns(LinkedList inst) { + if (ObjectUtil.isNotEmpty(this.frontTask)) { + Instruction instructionFront = instructionService.findByCodeFromCache(String.valueOf(frontTask)); + if (ObjectUtil.isNotEmpty(instructionFront)){ + inst.add(instructionFront); + } + } + if (ObjectUtil.isNotEmpty(this.backTask)) { + Instruction instructionBack = instructionService.findByCodeFromCache(String.valueOf(backTask)); + if (CollectionUtil.isNotEmpty(inst) && ObjectUtil.isNotEmpty(instructionBack)){ + inst.add(instructionBack); + }if (CollectionUtil.isEmpty(inst) && ObjectUtil.isNotEmpty(instructionBack)){ + inst.add(null); + inst.add(instructionBack); + } + } } private void updateAllstatues() { - if (mode == 3 && front_task > 0) { + if (mode == 3 && frontTask > 0) { Date date = new Date(); - if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + if (date.getTime() - this.instructionUpdateTime.getTime() < (long) this.instructionUpdateTimeOut) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instructionUpdateTimeOut); } else { - this.instruction_update_time = date; - updateInstructionStatus(front_task); + this.instructionUpdateTime = date; + updateInstructionStatus(frontTask); } } - if (mode == 3 && back_task > 0) { + if (mode == 3 && backTask > 0) { Date date = new Date(); - if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + if (date.getTime() - this.instructionUpdateTime.getTime() < (long) this.instructionUpdateTimeOut) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instructionUpdateTimeOut); } else { - this.instruction_update_time = date; + this.instructionUpdateTime = date; //更改指令状态 - updateInstructionStatus(back_task); + updateInstructionStatus(backTask); } } - if (mode == 3 && back_task > 0 && front_task > 0) { + if (mode == 3 && backTask > 0 && frontTask > 0) { Date date = new Date(); - if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + if (date.getTime() - this.instructionUpdateTime.getTime() < (long) this.instructionUpdateTimeOut) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instructionUpdateTimeOut); } else { - this.instruction_update_time = date; + this.instructionUpdateTime = date; //更改指令状态 - updateInstructionStatus(front_task); + updateInstructionStatus(frontTask); + updateInstructionStatus(backTask); } } } @@ -390,18 +405,17 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im /** * 申请任务 * - * @param */ public synchronized boolean applyTask() { Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + if (date.getTime() - this.instructionRequireTime.getTime() < (long) this.instructionRequireTimeOut) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instructionRequireTimeOut); return false; } else { - this.instruction_require_time = date; + this.instructionRequireTime = date; //输入:指令类型多种\ 指令状态多种\ Instruction instruction1 = new Instruction(); - instruction1.setInstruction_status("0"); + instruction1.setInstruction_status(InstructionStatusEnum.READY.getIndex()); List instructions = instructionService.findByDeviceCodes(instruction1, false); List instructionList = new ArrayList<>(); //根据路由过滤指令 @@ -409,18 +423,18 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im if (CollUtil.isEmpty(instructionList) || instructionList.size() < 1) { return false; } - instructionList = this.sortInst(instructionList); + this.sortInst(instructionList); Instruction inst = instructionList.get(0); - List instructionsAll = new ArrayList<>(); - instructions.add(inst); + LinkedList instructionsAll = new LinkedList<>(); + //找出有相邻的列的指令,如果没有按照单叉走,有按照双叉走 if (findInstruction(instructionList, inst, instructionsAll)) return false; - if (instructionsAll.size()==0){ - //写信号 - if (wirteData(inst)) return false; - } + + //写信号 + if (wirteData(instructionsAll)) return false; + } @@ -459,75 +473,149 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im return false; } - private boolean wirteData(Instruction inst) { - if (StrUtil.equals(inst.getInstruction_status(), "0")) { - String start_device_code = inst.getStart_device_code(); - Device startDevice = deviceAppService.findDeviceByCode(start_device_code); + private boolean wirteData(LinkedList inst) { + if (StrUtil.equals(inst.get(0).getInstruction_status(), InstructionStatusEnum.READY.getIndex())) { + String startdevice_code = inst.get(0).getStart_device_code(); + Device startDevice = deviceAppService.findDeviceByCode(startdevice_code); BeltConveyorDeviceDriver beltConveyorDeviceDriver; if (startDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { beltConveyorDeviceDriver = (BeltConveyorDeviceDriver) startDevice.getDeviceDriver(); if (beltConveyorDeviceDriver.getMode() != 2 || beltConveyorDeviceDriver.getMove() == 0) { notCreateInstMessage = "未下发电气信号原因->输送线-货架对接位:" + beltConveyorDeviceDriver.getDevice_code() + - "无货或未联机,无法下发指令!指令号:" + inst.getInstruction_code(); + "无货或未联机,无法下发指令!指令号:" + inst.get(0).getInstruction_code(); return true; } } - HashMap map = new HashMap(); - map.put("to_device_code", this.getDevice().getAddress()); - map.put("to_command", 1); -// map.put("to_type", inst.getMaterial()); - map.put("to_task", inst.getInstruction_code()); + //前叉信号写入 + HashMap map = new HashMap<>(); + if (inst.size()==1&& ObjectUtil.isNotEmpty(inst.get(0))) { + map.put("to_device_code", this.getDevice().getAddress()); + map.put("to_command", CommandEnum.PICKUP.getStatus()); + map.put("to_front_task", inst.get(0).getInstruction_code()); - if (StrUtil.equals(startDevice.getDevice_type(), DeviceType.conveyor.name())) { - List list = deviceExtraService.list(Wrappers.lambdaQuery(DeviceExtra.class).eq(DeviceExtra::getDevice_code, start_device_code)); - for (DeviceExtra deviceExtra : list) { - if ("x".equals(deviceExtra.getExtra_code()) && StrUtil.isNotEmpty(deviceExtra.getExtra_value())) { - map.put("to_x", deviceExtra.getExtra_value()); - } - if ("z".equals(deviceExtra.getExtra_code()) && StrUtil.isNotEmpty(deviceExtra.getExtra_value())) { - map.put("to_z", deviceExtra.getExtra_value()); - } - if ("y".equals(deviceExtra.getExtra_code()) && StrUtil.isNotEmpty(deviceExtra.getExtra_value())) { - map.put("to_y", deviceExtra.getExtra_value()); - } - } } - if (StrUtil.equals(startDevice.getDevice_type(), DeviceType.storage.name())) { - map.put("to_y", inst.getFrom_z()); - if (inst.getFrom_x().length() > 1) { - String substring = inst.getFrom_x().substring(1); - map.put("to_z", substring); - } else { - map.put("to_z", inst.getFrom_x()); - } - map.put("to_x", inst.getFrom_y()); + if (inst.size()>1 && ObjectUtil.isNotEmpty(inst.get(1))) { + map.put("to_device_code", this.getDevice().getAddress()); + map.put("to_command", CommandEnum.PICKUP.getStatus()); + map.put("to_back_task", inst.get(1).getInstruction_code()); + }else{ + map.put("to_device_code", this.getDevice().getAddress()); + map.put("to_command", CommandEnum.PICKUP.getStatus()); + map.put("to_front_task", inst.get(0).getInstruction_code()); + map.put("to_back_task", inst.get(1).getInstruction_code()); } + writeStorageOrConveyor(inst, startdevice_code, startDevice, map); this.writing(map); } return false; } - private boolean findInstruction(List instructionList, Instruction inst, List instructionsAll) { + private void writeStorageOrConveyor(LinkedList inst, String startDeviceCode, Device startDevice, Map map) { + if (StrUtil.equals(startDevice.getDevice_type(), DeviceType.conveyor.name())) { + List list = deviceExtraService.list(Wrappers.lambdaQuery(DeviceExtra.class).eq(DeviceExtra::getDevice_code, startDeviceCode)); + for (DeviceExtra deviceExtra : list) { + if ("x".equals(deviceExtra.getExtra_code()) && StrUtil.isNotEmpty(deviceExtra.getExtra_value())) { + map.put("to_x", deviceExtra.getExtra_value()); + } + if ("z".equals(deviceExtra.getExtra_code()) && StrUtil.isNotEmpty(deviceExtra.getExtra_value())) { + map.put("to_z", deviceExtra.getExtra_value()); + } + if ("y".equals(deviceExtra.getExtra_code()) && StrUtil.isNotEmpty(deviceExtra.getExtra_value())) { + map.put("to_y", deviceExtra.getExtra_value()); + } + } + } + if (StrUtil.equals(startDevice.getDevice_type(), DeviceType.storage.name())) { + if (ObjectUtil.isNotEmpty(inst.get(0))) { + map.put("to_y", inst.get(0).getFrom_z()); + if (inst.get(0).getFrom_x().length() > 1) { + String substring = inst.get(0).getFrom_x().substring(1); + map.put("to_z", substring); + } else { + map.put("to_z", inst.get(0).getFrom_x()); + } + map.put("to_x", inst.get(0).getFrom_y()); + }else { + //只存在后叉的情况 + map.put("to_y", Integer.parseInt(inst.get(0).getFrom_z())+1); + if (inst.get(0).getFrom_x().length() > 1) { + String substring = inst.get(0).getFrom_x().substring(1); + map.put("to_z", Integer.parseInt(substring)+1); + } else { + map.put("to_z", Integer.parseInt(inst.get(0).getFrom_x())+1); + } + map.put("to_x", Integer.parseInt(inst.get(0).getFrom_y())+1); + } + } + } + + private boolean findInstruction(List instructionList, Instruction inst, LinkedList instructionsAll) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(DeviceExtra::getExtra_name,"no_front_y","no_front_x","no_back_y","no_back_x","sort"); + List deviceExtras = deviceExtraMapper.selectList(wrapper); + //默认第一条指令为前叉判断是否符合 if (StringUtils.isEmpty(inst.getNext_point_code())&&!StringUtils.contains(inst.getNext_point_code(),"-")){ + return true; + }else { - String[] split = inst.getNext_point_code().split("-"); - if (Integer.valueOf(split[1]).equals(MIN_Y)){ + String[] splitFront = inst.getNext_point_code().split("-"); + List frontY = deviceExtras.stream().filter(item -> "no_front_y".equals(item.getExtra_name())).collect(Collectors.toList()); + List frontX = deviceExtras.stream().filter(item -> "no_front_x".equals(item.getExtra_name())).collect(Collectors.toList()); + List backY = deviceExtras.stream().filter(item -> "no_back_y".equals(item.getExtra_name())).collect(Collectors.toList()); + List backX = deviceExtras.stream().filter(item -> "no_back_x".equals(item.getExtra_name())).collect(Collectors.toList()); + List sort = deviceExtras.stream().filter(item -> "sort".equals(item.getExtra_name())).collect(Collectors.toList()); + //存在配置的禁止前排列 + if (checkY(splitFront, frontY)) return true; + if (checkX(splitFront, frontX)) { return true; } - if (Integer.valueOf(split[1]).equals(MAX_Y)){ - String nextPointCodeDown = split[0] + "-" + (Integer.parseInt(split[1]) - 1) + "-" + split[2]; - List instructionNextPointList = instructionList.stream().filter(item -> item.getNext_point_code().equals(nextPointCodeDown)).collect(Collectors.toList()); + + if (Integer.valueOf(splitFront[1]).equals(MIN_Y)){ + return true; + } + //根据排序进行加减 + String nextPointCodeDown = splitFront[0] + "-" + (Integer.parseInt(splitFront[1]) - 1) + "-" + splitFront[2]; + String nextPointCodeUp = splitFront[0] + "-" + (Integer.parseInt(splitFront[1]) + 1) + "-" + splitFront[2]; + if (CollectionUtil.isNotEmpty(sort)&&SortEnum.BACK.getCode().equals(sort.get(0).getExtra_value())){ + nextPointCodeDown = splitFront[0] + "-" + (Integer.parseInt(splitFront[1]) + 1) + "-" + splitFront[2]; + nextPointCodeUp = splitFront[0] + "-" + (Integer.parseInt(splitFront[1]) - 1) + "-" + splitFront[2]; + } + + if (Integer.valueOf(splitFront[1]).equals(MAX_Y)){ + String finalNextPointCodeDown = nextPointCodeDown; + List instructionNextPointList = instructionList.stream().filter(item -> item.getNext_point_code().equals(finalNextPointCodeDown)).collect(Collectors.toList()); if (instructionNextPointList.size()>0){ + String[] splitBack = instructionNextPointList.get(0).getNext_point_code().split("-"); + if (checkY(splitBack, backY)) return true; + if (checkX(splitBack, backX)) return true; instructionsAll.add(instructionNextPointList.get(0)); } }else { - String nextPointCodeUp = split[0] + "-" + (Integer.parseInt(split[1]) - 1) + "-" + split[2]; - String nextPointCodeDown = split[0] + "-" + (Integer.parseInt(split[1]) - 1) + "-" + split[2]; - List instructionNextPointList = instructionList.stream().filter(item -> item.getNext_point_code().equals(nextPointCodeDown)||item.getNext_point_code().equals(nextPointCodeUp)).collect(Collectors.toList()); - if (instructionNextPointList.size()>0){ - instructionsAll.add(instructionNextPointList.get(0)); + String finalNextPointCodeDown1 = nextPointCodeDown; + List instructionNextPointList1 = instructionList.stream().filter(item -> item.getNext_point_code().equals(finalNextPointCodeDown1)).collect(Collectors.toList()); + String finalNextPointCodeUp = nextPointCodeUp; + List instructionNextPointList2 = instructionList.stream().filter(item -> item.getNext_point_code().equals(finalNextPointCodeUp)).collect(Collectors.toList()); + + if (instructionNextPointList1.size()>0){ + String[] splitBack = instructionNextPointList1.get(0).getNext_point_code().split("-"); + if (checkY(splitBack, backY)) return true; + if (checkX(splitBack, backX)) return true; + instructionsAll.add(instructionNextPointList1.get(0)); + return false; + } + if (instructionNextPointList2.size()>0){ + //前叉的上一列有指令,此时前叉变成后叉,重新校验 + String[] splitBack = instructionNextPointList2.get(0).getNext_point_code().split("-"); + if (checkY(splitBack, frontY)) return true; + if (checkX(splitBack, frontX)) return true; + instructionsAll.addFirst(null); + if (checkY(splitFront, backY)) return true; + if (checkX(splitFront, backX)) return true; + instructionsAll.removeFirst(); + instructionsAll.addFirst(instructionNextPointList2.get(0)); + return false; } } @@ -535,14 +623,32 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im return false; } + private boolean checkX(String[] split, List x) { + if (x.size()!=0&& StringUtils.isNotEmpty(x.get(0).getExtra_value())){ + String[] splitValue = x.get(0).getExtra_value().split(","); + Set set = new HashSet<>(Arrays.asList(splitValue)); + return set.contains(split[0]); + } + return false; + } + + private boolean checkY(String[] split, List y) { + if (y.size()!=0&& StringUtils.isNotEmpty(y.get(0).getExtra_value())){ + String[] splitValue = y.get(0).getExtra_value().split(","); + Set set = new HashSet<>(Arrays.asList(splitValue)); + return set.contains(split[1]); + } + return false; + } + + /** * 将指令根据优先级和创建时间排序 * * @param instructions - * @return */ - private List sortInst(List instructions) { - Collections.sort(instructions, (t1, t2) -> { + private void sortInst(List instructions) { + instructions.sort((t1, t2) -> { //优先级从大到小 int i = t2.getPriority().compareTo(t1.getPriority()); //如果优先级相等 @@ -552,14 +658,13 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im } return i; }); - return instructions; } @Override - public JSONObject getDeviceStatusName() throws Exception { + public JSONObject getDeviceStatusName() { return null; } @@ -572,10 +677,9 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im * 完成指令 * * @param inst - * @return * @throws Exception */ - public synchronized boolean finish_instruction(Instruction inst) throws Exception { + public synchronized boolean finishInstruction(Instruction inst) throws Exception { instructionService.finish(inst); return true; } @@ -598,23 +702,6 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im } } - public List sortTask(List taskDtos) { - Collections.sort(taskDtos, new Comparator() { - @Override - public int compare(TaskDto t1, TaskDto t2) { - //优先级从大到小 - int i = t2.getPriority().compareTo(t1.getPriority()); - //如果优先级相等 - if (i == 0) { - //时间从早到晚 - i = t1.getCreate_time().compareTo(t2.getCreate_time()); - } - return i; - } - }); - return taskDtos; - } - //将扩展表中的字符串数据转换成集合 @Override @@ -626,8 +713,8 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im String devicesString = extraValue.substring(1, extraValue.length() - 1); List devicesList = new ArrayList<>(); String[] devices = devicesString.split(","); - for (int i = 0; i < devices.length; i++) { - String s = devices[i].replace("\"", "").replace("\"", ""); + for (String value : devices) { + String s = value.replace("\"", "").replace("\"", ""); devicesList.add(s); } return devicesList; @@ -636,143 +723,143 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im private void setData() { device_code = this.getDeviceCode(); heartbeat = this.itemProtocol.getItem_heartbeat(); - item_deviceCode = this.itemProtocol.getItem_deviceCode(); + itemDeviceCode= this.itemProtocol.getItem_device_Code(); mode = this.itemProtocol.getItem_mode(); move = this.itemProtocol.getItem_move(); - front_command = this.itemProtocol.getItem_front_command(); - back_command = this.itemProtocol.getItem_back_command(); - front_task = this.itemProtocol.getItem_front_task(); - front_ZError = this.itemProtocol.getItem_front_ZError(); - back_ZError = this.itemProtocol.getItem_back_ZError(); - front_z = this.itemProtocol.getItem_front_z(); - front_x = this.itemProtocol.getItem_front_x(); - front_y = this.itemProtocol.getItem_front_y(); - back_z = this.itemProtocol.getItem_back_z(); - back_x = this.itemProtocol.getItem_back_x(); - back_y = this.itemProtocol.getItem_back_y(); - front_forkCargo = this.itemProtocol.getItem_front_forkCargo(); - back_forkCargo = this.itemProtocol.getItem_back_forkCargo(); - front_forkLocation = this.itemProtocol.getItem_front_forkLocation(); - back_forkLocation = this.itemProtocol.getItem_back_forkLocation(); - back_forkAction = this.itemProtocol.getItem_back_forkAction(); - front_forkAction = this.itemProtocol.getItem_front_forkAction(); + frontCommand = this.itemProtocol.getItem_front_command(); + backCommand = this.itemProtocol.getItem_back_command(); + frontTask = this.itemProtocol.getItem_front_task(); + frontZerror = this.itemProtocol.getItem_front_ZError(); + backZerror = this.itemProtocol.getItem_back_ZError(); + frontZ = this.itemProtocol.getItem_front_z(); + frontX = this.itemProtocol.getItem_front_x(); + frontY = this.itemProtocol.getItem_front_y(); + backZ = this.itemProtocol.getItem_back_z(); + backX = this.itemProtocol.getItem_back_x(); + backY = this.itemProtocol.getItem_back_y(); + frontForkCargo = this.itemProtocol.getItem_front_forkCargo(); + backForkCargo = this.itemProtocol.getItem_back_forkCargo(); + frontForkLocation = this.itemProtocol.getItem_front_forkLocation(); + backForkLocation = this.itemProtocol.getItem_back_forkLocation(); + backForkAction = this.itemProtocol.getItem_back_forkAction(); + frontForkAction = this.itemProtocol.getItem_front_forkAction(); special1 = this.itemProtocol.getItem_special1(); special2 = this.itemProtocol.getItem_special2(); - storage_cache = this.itemProtocol.getItem_storage_cache(); + storageCache = this.itemProtocol.getItem_storage_cache(); } private void setLog() { - if (!item_deviceCode.equals(last_item_deviceCode)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(item_deviceCode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号item_deviceCode:" + last_item_deviceCode + "->" + item_deviceCode); + if (!itemDeviceCode.equals(lastItemDeviceCode)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(itemDeviceCode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号item_device_code:" + lastItemDeviceCode + "->" + itemDeviceCode); } - if (!mode.equals(last_mode)) { + if (!mode.equals(lastMode)) { requireSucess = false; logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + lastMode + "->" + mode); } - if (!front_command.equals(last_front_command)) { + if (!frontCommand.equals(lastFrontCommand)) { requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(front_command)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号front_command:" + last_front_command + "->" + front_command); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(frontCommand)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号front_command:" + lastFrontCommand + "->" + frontCommand); } - if (!back_command.equals(last_back_command)) { + if (!backCommand.equals(lastBackCommand)) { requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(back_command)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号back_command:" + last_back_command + "->" + back_command); + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(backCommand)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号back_command:" + lastBackCommand + "->" + backCommand); } - if (!front_task.equals(last_front_task)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(front_task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号front_task:" + last_front_task + "->" + front_task); + if (!frontTask.equals(lastFrontTask)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(frontTask)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号front_task:" + lastFrontTask + "->" + frontTask); } - if (!back_task.equals(last_back_task)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(back_task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号back_task:" + last_back_task + "->" + back_task); + if (!backTask.equals(lastBackTask)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(backTask)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号back_task:" + lastBackTask + "->" + backTask); } - if (!front_ZError.equals(last_front_ZError)) { - if (0 != front_ZError) { + if (!frontZerror.equals(lastFrontZerror)) { + if (0 != frontZerror) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(frontZerror)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号front_ZError:" + lastFrontZerror + "->" + frontZerror); } - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(front_ZError)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号front_ZError:" + last_front_ZError + "->" + front_ZError); } - if (!back_ZError.equals(last_back_ZError)) { - if (0 != back_ZError) { + if (!backZerror.equals(lastBackZerror)) { + if (0 != backZerror) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(backZerror)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号back_ZError:" + lastBackZerror + "->" + backZerror); } - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(back_ZError)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号back_ZError:" + last_back_ZError + "->" + back_ZError); } - if (!back_z.equals(last_back_z)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(back_z)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号back_z:" + last_back_z + "->" + back_z); + if (!backZ.equals(lastBackZ)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(backZ)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号back_z:" + lastBackZ + "->" + backZ); } - if (!back_x.equals(last_back_x)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(back_x)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号back_x:" + last_back_x + "->" + back_x); + if (!backX.equals(lastBackX)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(backX)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号back_x:" + lastBackX + "->" + backX); } - if (!back_y.equals(last_back_y)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(back_y)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号back_y:" + last_back_y + "->" + back_y); + if (!backY.equals(lastBackY)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(backY)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号back_y:" + lastBackY + "->" + backY); } - if (!front_z.equals(last_front_z)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(front_z)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号front_z:" + last_front_z + "->" + front_z); + if (!frontZ.equals(lastFrontZ)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(frontZ)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号front_z:" + lastFrontZ + "->" + frontZ); } - if (!front_x.equals(last_front_x)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(front_x)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号front_x:" + last_front_x + "->" + front_x); + if (!frontX.equals(lastFrontX)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(frontX)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号front_x:" + lastFrontX + "->" + frontX); } - if (!front_y.equals(last_front_y)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(front_y)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号front_y:" + last_front_y + "->" + front_y); + if (!frontY.equals(lastFrontY)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(frontY)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号front_y:" + lastFrontY + "->" + frontY); } - if (!move.equals(last_move)) { + if (!move.equals(lastMove)) { logServer.deviceItemValue(this.device_code, "mode", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + lastMove + "->" + move); } - if (!action.equals(last_action)) { + if (!action.equals(lastAction)) { logServer.deviceItemValue(this.device_code, "mode", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); + logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + lastAction + "->" + action); } - if (!distancex.equals(last_distancex)) { + if (!distancex.equals(lastDistancex)) { logServer.deviceItemValue(this.device_code, "mode", String.valueOf(distancex)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号distancex:" + last_distancex + "->" + distancex); + logServer.deviceExecuteLog(this.device_code, "", "", "信号distancex:" + lastDistancex + "->" + distancex); } - if (!front_forkCargo.equals(last_front_forkCargo)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(front_forkCargo)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号front_forkCargo:" + last_front_forkCargo + "->" + front_forkCargo); + if (!frontForkCargo.equals(lastFrontForkCargo)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(frontForkCargo)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号front_forkCargo:" + lastFrontForkCargo + "->" + frontForkCargo); } - if (!front_forkLocation.equals(last_front_forkLocation)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(front_forkLocation)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号front_forkLocation:" + last_front_forkLocation + "->" + front_forkLocation); + if (!frontForkLocation.equals(lastFrontForkLocation)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(frontForkLocation)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号front_forkLocation:" + lastFrontForkLocation + "->" + frontForkLocation); } - if (!front_forkAction.equals(last_front_forkAction)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(front_forkAction)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号front_forkAction:" + last_front_forkAction + "->" + front_forkAction); + if (!frontForkAction.equals(lastFrontForkAction)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(frontForkAction)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号front_forkAction:" + lastFrontForkAction + "->" + frontForkAction); } - if (!back_forkCargo.equals(last_back_forkCargo)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(back_forkCargo)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号back_forkCargo:" + last_back_forkCargo + "->" + back_forkCargo); + if (!backForkCargo.equals(lastBackForkCargo)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(backForkCargo)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号back_forkCargo:" + lastBackForkCargo + "->" + backForkCargo); } - if (!back_forkLocation.equals(last_back_forkLocation)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(back_forkLocation)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号back_forkLocation:" + last_back_forkLocation + "->" + back_forkLocation); + if (!backForkLocation.equals(lastBackForkLocation)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(backForkLocation)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号back_forkLocation:" + lastBackForkLocation + "->" + backForkLocation); } - if (!back_forkAction.equals(last_back_forkAction)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(back_forkAction)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号back_forkAction:" + last_back_forkAction + "->" + back_forkAction); + if (!backForkAction.equals(lastBackForkAction)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(backForkAction)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号back_forkAction:" + lastBackForkAction + "->" + backForkAction); } - if (!special1.equals(last_special1)) { + if (!special1.equals(lastSpecial1)) { logServer.deviceItemValue(this.device_code, "mode", String.valueOf(special1)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号special1:" + last_special1 + "->" + special1); + logServer.deviceExecuteLog(this.device_code, "", "", "信号special1:" + lastSpecial1 + "->" + special1); } - if (!special2.equals(last_special2)) { + if (!special2.equals(lastSpecial2)) { logServer.deviceItemValue(this.device_code, "mode", String.valueOf(special2)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号special2:" + last_special2 + "->" + special2); + logServer.deviceExecuteLog(this.device_code, "", "", "信号special2:" + lastSpecial2 + "->" + special2); } - if (!storage_cache.equals(last_storage_cache)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(storage_cache)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号storage_cache:" + last_storage_cache + "->" + storage_cache); + if (!storageCache.equals(lastStorageCache)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(storageCache)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号storage_cache:" + lastStorageCache + "->" + storageCache); } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/ItemProtocol.java index 6b1fe15..03e1457 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/ItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/ItemProtocol.java @@ -208,7 +208,7 @@ public class ItemProtocol { public Integer getItem_heartbeat(){ return this.getOpcIntegerValue(item_heartbeat); } - public Integer getItem_deviceCode(){ + public Integer getItem_device_Code(){ return this.getOpcIntegerValue(item_deviceCode); } public Integer getItem_mode(){ diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/enums/CommandEnum.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/enums/CommandEnum.java new file mode 100644 index 0000000..898eba6 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/enums/CommandEnum.java @@ -0,0 +1,37 @@ +/** + * @author ls + * @date 2023/12/4 13:42 + */ +package org.nl.acs.device_driver.basedriver.double_station_stacker.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.nl.acs.task.enums.TaskStatusEnum; + +@Getter +@AllArgsConstructor +public enum CommandEnum { + STANDY(0,"待机"), + PICKUP(1,"取货中"), + PICKUP_COMPLETE(2,"取货完成"), + RELEASE(3,"放货中"), + UNLOAD(4,"请求卸货"), + UNLOAD_COMPLETE(5,"卸货完成"), + PICKUP_PREPARATION(6,"取货准备"), + RECALL(7,"召回"), + STOP(8,"急停"); + + private Integer status; + private String desc; + + public static String getDesc(Integer status) { + for (CommandEnum c : CommandEnum.values()) { + if (c.getStatus().equals(status)) { + return c.getDesc(); + } + } + return null; + } + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/enums/SortEnum.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/enums/SortEnum.java new file mode 100644 index 0000000..3aa98d7 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/enums/SortEnum.java @@ -0,0 +1,18 @@ +/** + * @author ls + * @date 2023/12/4 17:43 + */ +package org.nl.acs.device_driver.basedriver.double_station_stacker.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum SortEnum { + PRONT("1","正序"), + BACK("2","倒序"); + + private String code; + private String desc; +} diff --git a/acs/nladmin-ui/src/views/acs/device/driver/double_station_stacker.vue b/acs/nladmin-ui/src/views/acs/device/driver/double_station_stacker.vue index 818efd6..0bafa74 100644 --- a/acs/nladmin-ui/src/views/acs/device/driver/double_station_stacker.vue +++ b/acs/nladmin-ui/src/views/acs/device/driver/double_station_stacker.vue @@ -78,8 +78,8 @@ label-width="78px" > - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -280,6 +318,7 @@ export default { options: [], data1: [], data2: [], + sortX: [{ code: '1', name: '正序' }, { code: '2', name: '倒序' }], form: { inspect_in_stocck: true, ignore_pickup_check: true, @@ -291,7 +330,12 @@ export default { is_release: true, link_device_code: [], get_device_code: [], - put_device_code: [] + put_device_code: [], + no_front_y: '', + no_front_x: '', + no_back_y: '', + no_back_x: '', + sort: '' }, rules: {} } From 1dcff07d436c6558a5e57c178380ea4a04ee6803 Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 5 Dec 2023 17:39:05 +0800 Subject: [PATCH 2/4] =?UTF-8?q?rev=EF=BC=9A=20=E4=BB=A3=E7=A0=81=E8=A7=84?= =?UTF-8?q?=E8=8C=83=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/nl/AppRun.java | 3 +- .../domain/constant/DictConstantPool.java | 3 +- .../org/nl/common/domain/query/BaseQuery.java | 8 +- .../org/nl/common/domain/query/LConsumer.java | 9 +- .../org/nl/common/domain/query/PageQuery.java | 6 +- .../org/nl/common/domain/query/QParam.java | 3 +- .../java/org/nl/common/domain/vo/DeptVo.java | 5 +- .../java/org/nl/common/enums/LogTypeEnum.java | 10 + .../java/org/nl/common/enums/NoticeEnum.java | 5 + .../java/org/nl/common/enums/QueryTEnum.java | 3 +- .../nl/common/enums/wms/PointStatusEnum.java | 4 + .../handler/GlobalExceptionHandler.java | 1 - .../nl/common/logging/aspect/LogAspect.java | 1 - .../security/satoken/SaTokenConfigure.java | 21 +- .../java/org/nl/common/utils/CodeUtil.java | 8 + .../java/org/nl/common/utils/ColUtil.java | 8 + .../java/org/nl/common/utils/CopyUtil.java | 3 +- .../java/org/nl/common/utils/DesUtil.java | 13 +- .../java/org/nl/common/utils/FileUtil.java | 1 - .../org/nl/common/utils/SecurityUtils.java | 1 - .../java/org/nl/common/utils/YamlUtil.java | 11 - .../org/nl/common/utils/dto/CurrentUser.java | 13 +- .../org/nl/config/ElPermissionConfig.java | 4 - .../src/main/java/org/nl/config/IdUtil.java | 8 + .../src/main/java/org/nl/config/MapOf.java | 3 +- .../org/nl/config/SpringContextHolder.java | 4 +- .../java/org/nl/config/StringConverter.java | 8 + .../config/jackson/JacksonObjectMapper.java | 21 +- .../config/language/InitLocaleResolver.java | 3 +- .../org/nl/config/language/LangProcess.java | 3 +- .../nl/config/lucene/DynamicLogAppender.java | 11 +- .../org/nl/config/lucene/DynamicLogger.java | 24 +- .../java/org/nl/config/lucene/Indexer.java | 13 +- .../nl/config/lucene/LuceneIndexWriter.java | 14 +- .../java/org/nl/config/lucene/Searcher.java | 55 +-- .../org/nl/config/lucene/StaticConfig.java | 11 +- .../java/org/nl/config/lucene/UrlConfig.java | 8 + .../org/nl/config/mybatis/CodeGenerator.java | 41 +-- .../nl/config/mybatis/MybatisPlusConfig.java | 8 + .../org/nl/config/redis/RedisConvert.java | 7 + .../nl/config/saconfig/LoginUserHandler.java | 3 +- .../org/nl/config/saconfig/SaInitConfig.java | 3 +- .../src/main/java/org/nl/start/Init.java | 5 + .../controller/dept/DeptController.java | 3 - .../controller/dict/SysDictController.java | 8 - .../controller/logging/SysLogController.java | 6 - .../controller/logicflow/StageController.java | 5 - .../logicflow/StageImageController.java | 5 - .../controller/lucence/LuceneController.java | 9 +- .../notice/SysNoticeController.java | 4 - .../controller/param/SysParamController.java | 4 - .../SysDataPermissionController.java | 4 - .../secutiry/AuthorizationController.java | 4 +- .../MobileAuthorizationController.java | 15 +- .../tools/ToolLocalStorageController.java | 2 - .../controller/user/OnlineController.java | 3 - .../controller/user/UserController.java | 9 - .../coderule/ISysCodeRuleDetailService.java | 10 + .../coderule/impl/SysCodeRuleServiceImpl.java | 2 +- .../coderule/utils/CodeRuleTypeEnum.java | 3 + .../system/service/dept/ISysDeptService.java | 14 + .../dept/dao/mapper/SysDeptMapper.java | 17 +- .../nl/system/service/dept/dto/DeptQuery.java | 3 +- .../generator/ICodeGeneratorService.java | 10 +- .../generator/dao/CodeColumnConfig.java | 7 +- .../dao/mapper/CodeColumnConfigMapper.java | 13 +- .../lucene/LuceneExecuteLogService.java | 12 +- .../system/service/lucene/LuceneService.java | 11 +- .../service/lucene/dto/LuceneLogDto.java | 106 +++--- .../impl/LuceneExecuteLogServiceImpl.java | 6 +- .../lucene/impl/LuceneServiceImpl.java | 17 +- .../system/service/menu/ISysMenuService.java | 28 +- .../menu/dao/mapper/SysMenuMapper.java | 21 ++ .../nl/system/service/menu/dto/MenuDto.java | 18 +- .../service/menu/impl/SysMenuServiceImpl.java | 3 +- .../service/notice/ISysNoticeService.java | 9 +- .../notice/impl/SysNoticeServiceImpl.java | 1 - .../permission/ISysDataPermissionService.java | 17 +- .../dao/mapper/SysDataPermissionMapper.java | 30 ++ .../service/permission/dto/DataScopeEnum.java | 3 + .../impl/SysDataPermissionServiceImpl.java | 6 +- .../service/quartz/ISysQuartzJobService.java | 7 +- .../service/quartz/config/JobRunner.java | 12 +- .../quartz/task/AutoClearInteractionData.java | 1 - .../quartz/task/AutoClearLuceneData.java | 3 +- .../service/redis/dao/RedisKeyDefine.java | 12 +- .../service/redis/dao/RedisKeyRegistry.java | 8 +- .../service/redis/impl/RedisServiceImpl.java | 14 +- .../system/service/role/ISysRoleService.java | 11 + .../role/dao/mapper/SysRoleMapper.java | 19 ++ .../secutiry/impl/OnlineUserService.java | 29 +- .../tools/IToolLocalStorageService.java | 6 + .../system/service/user/ISysUserService.java | 43 +++ .../user/dao/mapper/SysUserMapper.java | 35 ++ .../service/user/dto/SysUserDetail.java | 4 +- .../nl/system/service/user/dto/UserQuery.java | 3 +- .../user/impl/ISysUserServiceImpl.java | 2 +- .../main/java/org/nl/wms/LanguageTest.java | 23 -- .../MdBaseClassstandardController.java | 6 - .../service/IMdBaseClassstandardService.java | 2 +- .../impl/MdBaseClassstandardServiceImpl.java | 19 +- .../controller/MdBaseMaterialController.java | 5 - .../service/IMdBaseMaterialService.java | 5 + .../impl/MdBaseMaterialServiceImpl.java | 9 +- .../controller/MdBaseVehicleController.java | 4 - .../impl/MdBaseVehicleServiceImpl.java | 3 +- .../controller/MdBaseWorkshopController.java | 5 - .../wms/ext/acs/service/AcsToWmsService.java | 20 +- .../ext/acs/service/dto/to/BaseRequest.java | 5 + .../ext/acs/service/dto/to/BaseResponse.java | 8 + .../service/dto/to/wms/ApplyTaskRequest.java | 5 + .../dto/to/wms/FeedBackTaskStatusRequest.java | 5 + .../acs/service/impl/AcsToWmsServiceImpl.java | 78 +---- .../service/dao/mapper/MesRequestMapper.java | 9 - .../service/dao/mapper/MesRequestMapper.xml | 4 - .../nl/wms/ext/mes/service/dto/CusterVo.java | 14 - .../ext/mes/service/dto/MesGdyInfoDto.java | 35 -- .../mes/service/dto/MesGdyInfoWaitDto.java | 47 --- .../mes/service/dto/MesGdyMaterialInDto.java | 33 -- .../mes/service/dto/MesGdyMaterialOutDto.java | 33 -- .../mes/service/dto/MesMudConsumptionDto.java | 38 --- .../wms/ext/mes/service/dto/MesOrderInfo.java | 27 -- .../mes/service/dto/MesProductDataDto.java | 46 --- .../service/dto/MesQSPressMonitorData.java | 58 ---- .../service/dto/MesSemiProductionInfo.java | 32 -- .../dto/MesSemiProductionInfoInDto.java | 39 --- .../dto/MesSemiProductionInfoOutDto.java | 34 -- .../wms/ext/mes/service/dto/MesShelfInfo.java | 77 ----- .../wms/ext/mes/service/dto/MesUnusedDto.java | 55 --- .../ext/mes/service/dto/MesWorkOrderDto.java | 62 ---- .../SysInteractRecordController.java | 4 - .../service/ISysInteractRecordService.java | 17 +- .../dao/mapper/SysInteractRecordMapper.java | 9 + .../impl/SysInteractRecordServiceImpl.java | 12 +- .../PdmBdMudConsumptionController.java | 66 ---- .../service/IPdmBdMudConsumptionService.java | 43 --- .../service/dao/PdmBdMudConsumption.java | 56 --- .../dao/mapper/PdmBdMudConsumptionMapper.java | 12 - .../dao/mapper/PdmBdMudConsumptionMapper.xml | 5 - .../service/dto/PdmBdMudConsumptionDto.java | 41 --- .../service/dto/PdmBdMudConsumptionQuery.java | 12 - .../impl/PdmBdMudConsumptionServiceImpl.java | 70 ---- .../PdmBdRequestMaterialRecordController.java | 66 ---- .../IPdmBdRequestMaterialRecordService.java | 49 --- .../dao/PdmBdRequestMaterialRecord.java | 44 --- .../PdmBdRequestMaterialRecordMapper.java | 12 - .../PdmBdRequestMaterialRecordMapper.xml | 5 - .../dto/PdmBdRequestMaterialRecordDto.java | 36 -- .../dto/PdmBdRequestMaterialRecordQuery.java | 12 - ...PdmBdRequestMaterialRecordServiceImpl.java | 74 ---- .../PdmBdMaterialResidueController.java | 66 ---- .../service/IPdmBdMaterialResidueService.java | 49 --- .../service/dao/PdmBdMaterialResidue.java | 46 --- .../mapper/PdmBdMaterialResidueMapper.java | 12 - .../dao/mapper/PdmBdMaterialResidueMapper.xml | 5 - .../service/dto/PdmBdMaterialResidueDto.java | 34 -- .../dto/PdmBdMaterialResidueQuery.java | 12 - .../impl/PdmBdMaterialResidueServiceImpl.java | 74 ---- .../IPdmBiSubpackagerelationService.java | 1 + .../mapper/PdmBiSubpackagerelationMapper.java | 6 + .../service/dto/SubPackageQuery.java | 3 +- ...BdProductionProcessTrackingController.java | 68 ---- ...PdmBdProductionProcessTrackingService.java | 44 --- .../dao/PdmBdProductionProcessTracking.java | 56 --- .../PdmBdProductionProcessTrackingMapper.java | 16 - .../PdmBdProductionProcessTrackingMapper.xml | 35 -- .../PdmBdProductionProcessTrackingDto.java | 28 -- .../PdmBdProductionProcessTrackingQuery.java | 16 - ...dProductionProcessTrackingServiceImpl.java | 68 ---- .../PdmBdVehicleBindingController.java | 66 ---- .../service/IPdmBdVehicleBindingService.java | 43 --- .../service/dao/PdmBdVehicleBinding.java | 58 ---- .../dao/mapper/PdmBdVehicleBindingMapper.java | 12 - .../dao/mapper/PdmBdVehicleBindingMapper.xml | 5 - .../service/dto/PdmBdVehicleBindingDto.java | 46 --- .../service/dto/PdmBdVehicleBindingQuery.java | 12 - .../impl/PdmBdVehicleBindingServiceImpl.java | 68 ---- .../report/controller/ReportController.java | 76 ----- .../nl/wms/report/service/ReportService.java | 31 -- .../service/dao/mapper/ReportMapper.java | 21 -- .../service/dao/mapper/ReportMapper.xml | 64 ---- .../report/service/dao/vo/IOKilnReportVo.java | 19 -- .../service/dao/vo/MaterialTimeoutVo.java | 18 - .../service/impl/ReportServiceImpl.java | 54 --- ...SchBaseVehiclematerialgroupController.java | 4 - .../SchBaseVehiclematerialgroupMapper.java | 16 + ...BaseAcsandlmsinteractivelogController.java | 4 - .../controller/SchBasePointController.java | 5 - .../sch/point/service/dao/SchBasePoint.java | 4 +- .../service/impl/SchBasePointServiceImpl.java | 2 +- .../controller/SchBaseRegionController.java | 7 - .../region/service/ISchBaseRegionService.java | 15 +- .../controller/SchBaseTaskController.java | 6 - .../SchBaseTaskconfigController.java | 4 - .../sch/task/service/ISchBaseTaskService.java | 16 +- .../service/impl/SchBaseTaskServiceImpl.java | 5 +- .../nl/wms/sch/task_manage/AbstractTask.java | 13 +- .../nl/wms/sch/task_manage/AcsTaskDto.java | 8 + .../wms/sch/task_manage/AutoCreateTask.java | 8 + .../task_manage/enums/GroupStatusEnum.java | 6 + .../sch/task_manage/enums/NoticeTypeEnum.java | 3 + .../task_manage/enums/PointStatusEnum.java | 3 + .../enums/TaskFinishedTypeEnum.java | 3 + .../enums/WorkOrderStatusEnum.java | 7 + .../nl/wms/sch/task_manage/task/AcsUtil.java | 5 + .../sch/task_manage/task/TaskListType.java | 1 - .../sch/task_manage/task/TaskServiceImpl.java | 34 -- .../task_manage/task/core/TaskApplyDto.java | 1 - .../task_manage/task/core/TaskApplyType.java | 16 +- .../sch/task_manage/task/core/TaskDto.java | 11 - .../task/core/TaskOperateType.java | 10 + .../sch/task_manage/task/core/TaskStatus.java | 29 +- .../task/tasks/auto/RYKQLTask.java | 164 --------- .../task_manage/task/tasks/dtk/CTQKTask.java | 211 ------------ .../task_manage/task/tasks/dtk/DTSKTask.java | 206 ----------- .../task/tasks/dtk/mapper/DTKMapper.java | 21 -- .../task/tasks/dtk/mapper/DTKMapper.xml | 35 -- .../task_manage/task/tasks/fj/FJMKTask.java | 300 ---------------- .../task_manage/task/tasks/fj/FJQKTask.java | 223 ------------ .../task_manage/task/tasks/fj/FJQLTask.java | 251 -------------- .../task_manage/task/tasks/fj/FJQZRKTask.java | 234 ------------- .../task_manage/task/tasks/fj/FJRKTask.java | 256 -------------- .../task_manage/task/tasks/fj/FJSKTask.java | 238 ------------- .../task_manage/task/tasks/fj/FJSLTask.java | 267 --------------- .../task/tasks/fj/mapper/FJMapper.java | 33 -- .../task/tasks/fj/mapper/FJMapper.xml | 79 ----- .../task_manage/task/tasks/hn/HNMLTask.java | 321 ------------------ .../task_manage/task/tasks/hn/HNQKTask.java | 166 --------- .../task/tasks/hn/mapper/HNMapper.java | 19 -- .../task/tasks/hn/mapper/HNMapper.xml | 53 --- .../task_manage/task/tasks/yao/CYZCTask.java | 284 ---------------- .../task_manage/task/tasks/yao/GZYQLTask.java | 234 ------------- .../task_manage/task/tasks/yz/YZQKTask.java | 221 ------------ .../task_manage/task/tasks/yz/YZQLTask.java | 171 ---------- .../task_manage/task/tasks/yz/YZSKTask.java | 242 ------------- .../task_manage/task/tasks/yz/YZSLTask.java | 255 -------------- .../sch/task_manage/task/tasks/yz/backup.txt | 32 -- .../task/tasks/yz/mapper/YZMapper.java | 25 -- .../task/tasks/yz/mapper/YZMapper.xml | 44 --- .../wms/storage_manage/ios/enums/IOSEnum.java | 3 +- .../iostorInv/IStIvtIostorinvOutService.java | 3 +- .../iostorInv/IStIvtIostorinvService.java | 3 +- .../iostorInv/IStIvtIostorinvdtlService.java | 2 +- .../service/iostorInv/dto/IostorInvQuery.java | 3 +- .../impl/StIvtIostorinvOutServiceImpl.java | 66 ++-- .../impl/StIvtIostorinvServiceImpl.java | 50 ++- .../impl/StIvtIostorinvdisServiceImpl.java | 2 +- .../impl/StIvtIostorinvdtlServiceImpl.java | 17 +- .../storage_manage/ios/util/dto/RuleDto.java | 10 +- .../ios/util/impl/IosInRuleServiceImpl.java | 2 +- .../ios/util/impl/IosOutRuleServiceImpl.java | 2 +- .../java/org/nl/wms/util/CommonUtils.java | 102 ------ .../java/org/nl/wms/util/DatabaseBackup.java | 3 +- .../main/java/org/nl/wms/util/MainConfig.java | 14 - .../java/org/nl/wms/util/MyEventListener.java | 22 -- .../main/java/org/nl/wms/util/MyListener.java | 17 - .../org/nl/wms/util/OracleJDBCExample.java | 55 --- .../main/java/org/nl/wms/util/PointUtils.java | 3 +- .../main/java/org/nl/wms/util/TaskUtils.java | 24 +- .../java/org/nl/wms/util/TreePrinter.java | 45 --- .../java/org/nl/wms/util/XmlFormatter.java | 100 ------ .../nl/wms/util/test/mapper/TestMapper.java | 42 --- .../nl/wms/util/test/mapper/TestMapper.xml | 90 ----- .../src/test/java/org/nl/ApplicationTest.java | 66 +--- .../src/test/java/org/nl/task/MapperTest.java | 232 ------------- 265 files changed, 1135 insertions(+), 8450 deletions(-) delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/YamlUtil.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/LanguageTest.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/CusterVo.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoWaitDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyMaterialInDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyMaterialOutDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesOrderInfo.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesProductDataDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesQSPressMonitorData.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfo.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfoInDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfoOutDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesShelfInfo.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesUnusedDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesWorkOrderDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/controller/PdmBdMudConsumptionController.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/IPdmBdMudConsumptionService.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/PdmBdMudConsumption.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/mapper/PdmBdMudConsumptionMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/mapper/PdmBdMudConsumptionMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dto/PdmBdMudConsumptionDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dto/PdmBdMudConsumptionQuery.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/impl/PdmBdMudConsumptionServiceImpl.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/controller/PdmBdRequestMaterialRecordController.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/PdmBdRequestMaterialRecord.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordQuery.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/controller/PdmBdMaterialResidueController.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/IPdmBdMaterialResidueService.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/PdmBdMaterialResidue.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/mapper/PdmBdMaterialResidueMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/mapper/PdmBdMaterialResidueMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dto/PdmBdMaterialResidueDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dto/PdmBdMaterialResidueQuery.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/impl/PdmBdMaterialResidueServiceImpl.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/controller/PdmBdProductionProcessTrackingController.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/IPdmBdProductionProcessTrackingService.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/PdmBdProductionProcessTracking.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingQuery.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/impl/PdmBdProductionProcessTrackingServiceImpl.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/controller/PdmBdVehicleBindingController.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/IPdmBdVehicleBindingService.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/PdmBdVehicleBinding.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingQuery.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/impl/PdmBdVehicleBindingServiceImpl.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/ReportService.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/vo/IOKilnReportVo.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/vo/MaterialTimeoutVo.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/impl/ReportServiceImpl.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/TaskListType.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/TaskServiceImpl.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskApplyDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskDto.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/RYKQLTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQZRKTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNQKTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/backup.txt delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MainConfig.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MyEventListener.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MyListener.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/OracleJDBCExample.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TreePrinter.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/XmlFormatter.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/test/mapper/TestMapper.java delete mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/test/mapper/TestMapper.xml delete mode 100644 lms/nladmin-system/nlsso-server/src/test/java/org/nl/task/MapperTest.java diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java index 7537460..5873cbe 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java @@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController; /** * 开启审计功能 -> @EnableJpaAuditing * https://www.cnblogs.com/niceyoo/p/10908647.html + * https://blog.csdn.net/qq_36850813/article/details/101194250 * * @author ldjun * @date 2021/2/22 9:20:19 @@ -31,7 +32,7 @@ import org.springframework.web.bind.annotation.RestController; @SpringBootApplication(exclude = { org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class }) -@ServletComponentScan //https://blog.csdn.net/qq_36850813/article/details/101194250 +@ServletComponentScan @EnableTransactionManagement @EnableMethodCache(basePackages = "org.nl") @EnableCreateCacheAnnotation diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/constant/DictConstantPool.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/constant/DictConstantPool.java index 860d846..a3cb0ca 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/constant/DictConstantPool.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/constant/DictConstantPool.java @@ -1,6 +1,7 @@ package org.nl.common.domain.constant; -/* +/** + * s * @author ZZQ * @Date 2022/12/26 9:29 上午 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/BaseQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/BaseQuery.java index 71ccd84..1bfaced 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/BaseQuery.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/BaseQuery.java @@ -13,10 +13,10 @@ import java.lang.reflect.Type; import java.util.Date; import java.util.Map; -/* +/** + * 泛型必须为数据tb对应do:由mybatis管理 * @author ZZQ * @Date 2022/12/14 6:33 下午 - * 泛型必须为数据tb对应do:由mybatis管理 */ @Data public class BaseQuery { @@ -53,8 +53,10 @@ public class BaseQuery { JSONObject json = (JSONObject)JSONObject.toJSON(this); Type[] types = ((ParameterizedTypeImpl) this.getClass().getGenericSuperclass()).getActualTypeArguments(); Map columnMap = LambdaUtils.getColumnMap((Class) types[0]); + + String dopStr = "doP"; json.forEach((key, vel) -> { - if (vel != null && !key.equals("doP")){ + if (vel != null && !key.equals(dopStr)){ QParam qParam = doP.get(key); if (qParam != null){ QueryTEnum.build(qParam.type,wrapper,qParam.k,vel); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/LConsumer.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/LConsumer.java index 94e775c..5540d74 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/LConsumer.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/LConsumer.java @@ -2,13 +2,20 @@ package org.nl.common.domain.query; import java.util.Objects; -/* +/** + * s * @author ZZQ * @Date 2022/12/14 8:40 下午 */ @FunctionalInterface public interface LConsumer { + /** + * 切面 + * @param x 、 + * @param y 、 + * @param z 、 + */ void accept(X x,Y y,Z z); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java index e268c0b..300991c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java @@ -11,9 +11,13 @@ import java.io.Serializable; import java.lang.reflect.Field; import java.util.Locale; - /** + *

* 分页参数 + *

+ * + * @author generator + * @since 2023-11-16 */ @Data public class PageQuery implements Serializable { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/QParam.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/QParam.java index dee5c8d..1a44194 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/QParam.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/QParam.java @@ -6,7 +6,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import org.nl.common.enums.QueryTEnum; -/* +/** + * s * @author ZZQ * @Date 2022/12/15 1:41 下午 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/vo/DeptVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/vo/DeptVo.java index 0c88942..0cd2ef5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/vo/DeptVo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/vo/DeptVo.java @@ -65,7 +65,10 @@ public class DeptVo extends BaseDTO implements Serializable { @ApiModelProperty(value = "子节点数目", hidden = true) private Integer sub_count = 0; - //前端显示 + + /** + * 前端显示 + */ private Boolean has_children =Boolean.FALSE; private List children; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/LogTypeEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/LogTypeEnum.java index 112429a..0abdb05 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/LogTypeEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/LogTypeEnum.java @@ -1,7 +1,17 @@ package org.nl.common.enums; +/** + *

+ * 日志类型枚举 + *

+ * + * @author generator + * @since 2023-11-16 + */ public enum LogTypeEnum { + // 设备日志 DEVICE_LOG("设备日志"), + // v INTERFACE_LOG("接口日志"); private String desc; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/NoticeEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/NoticeEnum.java index 4e6be7b..bbceb4f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/NoticeEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/NoticeEnum.java @@ -11,10 +11,15 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum NoticeEnum { + // 未读 HAVE_READ_OFF("1","未读"), + // 已读 HAVE_READ_ON("2", "已读"), + // 未处理 DEAL_STATUS_NO("1", "未处理"), + // 已处理 DEAL_STATUS_YES("2", "已处理"), + // 无需处理 DEAL_STATUS_NO_NEED("3", "无需处理"); private final String value; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/QueryTEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/QueryTEnum.java index 5a56212..b790cdb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/QueryTEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/QueryTEnum.java @@ -7,7 +7,8 @@ import org.nl.common.domain.query.LConsumer; import java.util.Collection; -/* +/** + * s * @author ZZQ * @Date 2022/12/14 8:26 下午 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/wms/PointStatusEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/wms/PointStatusEnum.java index 2cdc02f..de9b5e2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/wms/PointStatusEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/wms/PointStatusEnum.java @@ -11,9 +11,13 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum PointStatusEnum { + // 空位 EMPTY_PLACE("1", "空位"), + // 有料 FULL_MATERIAL("2", "有料"), + // 空载具 EMPTY_VEHICLE("3", "空载具"); + private final String value; private final String description; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java index 9760c7b..73bf4aa 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java @@ -63,7 +63,6 @@ public class GlobalExceptionHandler { */ @ExceptionHandler(value = NotLoginException.class) public ResponseEntity notLoginException(Exception e) { -// log.error(ThrowableUtil.getStackTrace(e)); return buildResponseEntity(ApiError.error(401,"token 失效")); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java index 9b25100..5253ed6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java @@ -86,7 +86,6 @@ public class LogAspect { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); HttpServletResponse response = attributes.getResponse(); -// HttpServletRequest request = RequestHolder.getHttpServletRequest(); MethodSignature signature = (MethodSignature) joinPoint.getSignature(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/security/satoken/SaTokenConfigure.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/security/satoken/SaTokenConfigure.java index ab83e17..423c90b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/security/satoken/SaTokenConfigure.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/security/satoken/SaTokenConfigure.java @@ -21,23 +21,34 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class SaTokenConfigure implements WebMvcConfigurer { - // 白名单 + /** + * 白名单 + */ @Autowired private SecurityProperties securityProperties; - // Sa-Token 整合 jwt (Simple 简单模式) + /** + * Sa-Token 整合 jwt (Simple 简单模式) + * @return StpLogic/ + */ @Bean public StpLogic getStpLogicJwt() { return new StpLogicJwtForSimple(); } - // 注册 Sa-Token 拦截器,打开注解式鉴权功能 + /** + * 注册 Sa-Token 拦截器,打开注解式鉴权功能 + * @param registry + */ @Override public void addInterceptors(InterceptorRegistry registry) { - // 注册 Sa-Token 拦截器,打开注解式鉴权功能 + /* + * 注册 Sa-Token 拦截器,打开注解式鉴权功能 + * .excludePathPatterns(securityProperties.getExcludes()): 白名单 + */ registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin())) .addPathPatterns("/**") - .excludePathPatterns(securityProperties.getExcludes()); // 白名单 + .excludePathPatterns(securityProperties.getExcludes()); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java index 76cbada..b6a492f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java @@ -11,6 +11,14 @@ import org.redisson.api.RedissonClient; import java.util.*; import java.util.concurrent.TimeUnit; +/** + *

+ * 编码工具类 + *

+ * + * @author lyd + * @since 2023-05-03 + */ public class CodeUtil { @SneakyThrows diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/ColUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/ColUtil.java index ad0aa1d..50b19c0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/ColUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/ColUtil.java @@ -6,6 +6,14 @@ import org.apache.commons.configuration.PropertiesConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +/** + *

+ * 工具类 + *

+ * + * @author lyd + * @since 2023-05-03 + */ public class ColUtil { private static final Logger log = LoggerFactory.getLogger(ColUtil.class); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CopyUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CopyUtil.java index 69f3153..de4f379 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CopyUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CopyUtil.java @@ -7,7 +7,8 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; -/* +/** + * 复制工具类 * @author ZZQ * @Date 2022/12/1 3:35 下午 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/DesUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/DesUtil.java index 35f7c49..d31d301 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/DesUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/DesUtil.java @@ -18,12 +18,21 @@ import java.io.IOException; import java.security.SecureRandom; /** + *

* Des加密解密算法工具类 + *

+ * + * @author lyd + * @since 2023-05-03 */ public class DesUtil { - //加密算法是des + /** + * 加密算法是des + */ private static final String ALGORITHM = "DES"; - //转换格式 + /** + * 转换格式 + */ private static final String TRANSFORMATION = "DES/CBC/PKCS5Padding"; /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java index c4a6a70..a03479e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java @@ -97,7 +97,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { File file = null; try { // 用uuid作为文件名,防止生成的临时文件重复 - //file = File.createTempFile(IdUtil.simpleUUID(), prefix); file = new File(SYS_TEM_DIR + IdUtil.simpleUUID() + prefix); // MultipartFile to File multipartFile.transferTo(file); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/SecurityUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/SecurityUtils.java index b434369..d5389e0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/SecurityUtils.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/SecurityUtils.java @@ -67,7 +67,6 @@ public class SecurityUtils { * @return 系统用户Id */ public static Long getDeptId() { -// return getCurrentUser().getUser().getDept().getId(); return 1L; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/YamlUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/YamlUtil.java deleted file mode 100644 index b8e6c21..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/YamlUtil.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.nl.common.utils; - -import java.util.Properties; - -public class YamlUtil { - public static Properties properties; - - public static String getValue(String key) { - return (String) properties.get(key); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/dto/CurrentUser.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/dto/CurrentUser.java index 440752f..ddaa4a4 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/dto/CurrentUser.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/dto/CurrentUser.java @@ -19,12 +19,19 @@ public class CurrentUser implements Serializable { @JsonSerialize(using = ToStringSerializer.class) private String id; - //账号 + /** + * 账号 + */ private String username; - //姓名 + + /** + * 姓名 + */ private String presonName; - //用户详细信息 + /** + * 用户详细信息 + */ private SysUser user; private List permissions = new ArrayList<>(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/ElPermissionConfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/ElPermissionConfig.java index 4abc37f..f715304 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/ElPermissionConfig.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/ElPermissionConfig.java @@ -24,10 +24,6 @@ import org.springframework.stereotype.Service; public class ElPermissionConfig { public Boolean check(String ...permissions){ - // 获取当前用户的所有权限 -// List elPermissions = SecurityUtils.getCurrentUser().getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList()); - // 判断当前用户的所有权限是否包含接口上定义的权限 -// return elPermissions.contains("admin") || Arrays.stream(permissions).anyMatch(elPermissions::contains); return true; } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/IdUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/IdUtil.java index 5980d3a..fcd489e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/IdUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/IdUtil.java @@ -1,5 +1,13 @@ package org.nl.config; +/** + *

+ * ID生成工具类 + *

+ * + * @author generator + * @since 2023-11-16 + */ public class IdUtil { public static Long getLongId() { return cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/MapOf.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/MapOf.java index 7ecd4bf..2b5d8e2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/MapOf.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/MapOf.java @@ -8,7 +8,8 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Iterator; -/* +/** + * s * @author ZZQ * @Date 2022/11/29 2:55 下午 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/SpringContextHolder.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/SpringContextHolder.java index 3a2ae32..3ca72c1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/SpringContextHolder.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/SpringContextHolder.java @@ -31,7 +31,9 @@ import java.util.List; public class SpringContextHolder implements ApplicationContextAware, DisposableBean { private static ApplicationContext applicationContext = null; - //数据库连接的bean名字 + /** + * 数据库连接的bean名字 + */ public static String dataSourceBeanName="dataSource"; private static final List CALL_BACKS = new ArrayList<>(); private static boolean addCallback = true; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/StringConverter.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/StringConverter.java index e7506c7..671df4f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/StringConverter.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/StringConverter.java @@ -5,6 +5,14 @@ import cn.hutool.core.util.StrUtil; import org.springframework.core.convert.converter.Converter; import org.springframework.stereotype.Component; +/** + *

+ * String工具类 + *

+ * + * @author generator + * @since 2023-11-16 + */ @Component public class StringConverter implements Converter { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/jackson/JacksonObjectMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/jackson/JacksonObjectMapper.java index c97d5dc..acb815d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/jackson/JacksonObjectMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/jackson/JacksonObjectMapper.java @@ -20,25 +20,14 @@ import java.time.format.DateTimeFormatter; import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; /** - * jackson 配置 - * - * @author Lion Li - * @author JohanChan - * @ProjectName Demo - * @Description 与前端交互时对实体类中Long类型的ID字段序列号 - * @time 2021/6/23 11:30 - */ -/** - * @author JohanChan - * @ProjectName Demo - * @Description 与前端交互时对实体类中Long类型的ID字段序列号 - * @time 2021/6/23 11:30 - */ - -/** + *

* 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象] * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON] + *

+ * + * @author generator + * @since 2023-11-16 */ public class JacksonObjectMapper extends ObjectMapper { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/language/InitLocaleResolver.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/language/InitLocaleResolver.java index 4d68152..d06a4a1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/language/InitLocaleResolver.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/language/InitLocaleResolver.java @@ -11,7 +11,8 @@ import javax.servlet.http.HttpServletResponse; import java.util.Locale; import java.util.Map; -/* +/** + * s * @author ZZQ * @Date 2023/11/13 09:36 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/language/LangProcess.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/language/LangProcess.java index 8fe24cc..a11ae59 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/language/LangProcess.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/language/LangProcess.java @@ -5,7 +5,8 @@ import org.nl.config.SpringContextHolder; import org.springframework.context.MessageSource; import org.springframework.context.i18n.LocaleContextHolder; -/* +/** + * s * @author ZZQ * @Date 2023/11/13 09:45 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/DynamicLogAppender.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/DynamicLogAppender.java index 000ca5e..857eb8a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/DynamicLogAppender.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/DynamicLogAppender.java @@ -11,6 +11,14 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.nio.charset.Charset; +/** + *

+ * 日志 + *

+ * + * @author generator + * @since 2023-11-16 + */ public class DynamicLogAppender { /** * 通过传入的动态名字,动态设置appender @@ -36,7 +44,8 @@ public class DynamicLogAppender { //设置日志记录器的滚动策略 TimeBasedRollingPolicy policy = new TimeBasedRollingPolicy(); policy.setFileNamePattern(oldLogPath+dynamicName+".%d{yyyy-MM-dd}.log"); - policy.setParent(appender); //设置父节点是appender + //设置父节点是appender + policy.setParent(appender); policy.setContext(context); policy.start(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/DynamicLogger.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/DynamicLogger.java index 566a899..922d3b4 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/DynamicLogger.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/DynamicLogger.java @@ -8,12 +8,25 @@ import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.Map; +/** + *

+ * 日志储存 + *

+ * + * @author generator + * @since 2023-11-16 + */ public class DynamicLogger { - String logPath;//日志存储路径 + /** + * 日志存储路径 + */ + String logPath; public DynamicLogger(String logPath) { this.logPath = logPath; } - //对外暴露日志对象:每次拿的对象从内存里拿,没有再构建 + /** + * 对外暴露日志对象:每次拿的对象从内存里拿,没有再构建 + */ private static Map container = new HashMap<>(); public Logger getLogger(String dynamicName) { Logger logger = container.get(dynamicName); @@ -24,7 +37,12 @@ public class DynamicLogger { container.put(dynamicName,logger); return logger; } - //构建Logger对象,给Logger指定appender + + /** + * 构建Logger对象,给Logger指定appender + * @param dynamicName / + * @return Logger + */ private Logger build(String dynamicName) { RollingFileAppender runTaskAppender =new DynamicLogAppender().getAppender(this.logPath,dynamicName); LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Indexer.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Indexer.java index fa22002..64895ee 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Indexer.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Indexer.java @@ -21,7 +21,12 @@ import java.nio.file.Paths; import java.util.Set; /** + *

* lucene索引器 + *

+ * + * @author generator + * @since 2023-11-16 */ public class Indexer { /** @@ -67,7 +72,6 @@ public class Indexer { } } //返回索引的文件数 -// return writer.numDocs(); return writer.numRamDocs(); } @@ -84,7 +88,6 @@ public class Indexer { //添加索引文档 //Document doc = json2Doc(jsonDoc); // Document doc = new Document(); -// doc.add(new TextField("content", jsonDoc, Field.Store.YES)); Field fieldContent = new TextField("fieldContent", FileUtils.readFileToString(null, "UTF-8"), Field.Store.YES); //将doc添加到索引中 @@ -132,7 +135,6 @@ public class Indexer { long startTime = System.currentTimeMillis(); //步骤三:读取磁盘中文件,对应每一个文件创建一个文档对象 Document document = new Document(); -// document.add(new TextField("fieldContent", device_id, Field.Store.YES)); document.add(new TextField("fieldContent", msg, Field.Store.YES)); indexWriter.addDocument(document); //记录索引结束时间 @@ -144,7 +146,9 @@ public class Indexer { System.out.println("建立索引成功-----关闭资源"); } - //系统的日志文件路径 + /** + * 系统的日志文件路径 + */ @Value("${logging.file.path}") private String logUrl; @@ -168,7 +172,6 @@ public class Indexer { String strLine = null; while (null != (strLine = bufferedReader.readLine())) { Document document = new Document(); -// document.add(new Field()); document.add(new TextField("fieldContent", strLine, Field.Store.YES)); indexWriter.addDocument(document); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneIndexWriter.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneIndexWriter.java index fb739ce..0e9fdb6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneIndexWriter.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneIndexWriter.java @@ -14,6 +14,14 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; +/** + *

+ * 、 + *

+ * + * @author generator + * @since 2023-11-16 + */ public class LuceneIndexWriter { private static IndexWriter indexWriter; @@ -52,9 +60,11 @@ public class LuceneIndexWriter { } public static String getDate(String timeString) throws ParseException { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");//时间格式 + //时间格式 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX"); Date date = sdf.parse(timeString); - timeString = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss.SSS");//格式化后的时间 + //格式化后的时间 + timeString = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss.SSS"); return timeString; } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java index 086f4e1..ea0bb97 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java @@ -26,7 +26,12 @@ import java.time.temporal.ChronoUnit; import java.util.*; /** + *

* lucene查询器 + *

+ * + * @author generator + * @since 2023-11-16 */ @Slf4j public class Searcher { @@ -40,13 +45,17 @@ public class Searcher { //标准分词器,会自动去掉空格啊,is a the等单词 Analyzer analyzer = new IKAnalyzer(true); - //记录索引开始时间 -// long startTime = System.currentTimeMillis(); - // 实际上Lucene本身不支持分页。因此我们需要自己进行逻辑分页。我们要准备分页参数: - int pageSize = Integer.parseInt(whereJson.get("size").toString());// 每页条数 - int pageNum = Integer.parseInt(whereJson.get("page").toString()) - 1;// 当前页码 - int start = pageNum * pageSize;// 当前页的起始条数 - int end = start + pageSize;// 当前页的结束条数(不能包含) + /* + * 记录索引开始时间 + */ + // 每页条数 + int pageSize = Integer.parseInt(whereJson.get("size").toString()); + // 当前页码 + int pageNum = Integer.parseInt(whereJson.get("page").toString()) - 1; + // 当前页的起始条数 + int start = pageNum * pageSize; + // 当前页的结束条数(不能包含) + int end = start + pageSize; // 创建排序对象,需要排序字段SortField,参数:字段的名称、字段的类型、是否反转如果是false,升序。true降序 Sort sort = new Sort(new SortField(LogMessageConstant.SORT_NAME, SortField.Type.LONG,true)); @@ -91,9 +100,6 @@ public class Searcher { } docs = searcher.search(booleanQueryBuilder.build(), end,sort); //记录索引时间 -// long endTime = System.currentTimeMillis(); -// log.info("匹配{}共耗时{}毫秒",booleanQueryBuilder.build(),(endTime-startTime)); -// log.info("查询到{}条日志文件", docs.totalHits.value); List list = new ArrayList<>(); ScoreDoc[] scoreDocs = docs.scoreDocs; if (end > docs.totalHits.value) end = (int) docs.totalHits.value; @@ -112,7 +118,6 @@ public class Searcher { LogMessageConstant.COLOR_MAGENTA + doc.get(LogMessageConstant.FIELD_CLASS_NAME) + LogMessageConstant.COLOR_RESET + " - " + LogMessageConstant.COLOR_BLACK + highlightKeyword(doc.get(LogMessageConstant.FIELD_MESSAGE), whereJson.getString("message")); -// System.out.println(logInfo); list.add(logInfo); } reader.close(); @@ -141,34 +146,6 @@ public class Searcher { } public static void main(String[] args) throws IOException, ParseException { -// String indexDir = "D:\\lucene\\index"; -// //查询这个字符串 -// JSONObject whereJson = new JSONObject(); -// whereJson.put("size", "500"); -// whereJson.put("page", "1"); -// whereJson.put("message", "请求方法参数"); -//// whereJson.put(LogMessageConstant.FIELD_TRACEID, "13244183367577216"); -// -// try { -// search(indexDir, whereJson); -// } catch (Exception e) { -// e.printStackTrace(); -// } - // 删除 -// Directory directory = FSDirectory.open(Paths.get("D:\\lucene\\index")); -// IndexWriterConfig config = new IndexWriterConfig(); -// IndexWriter writer = new IndexWriter(directory, config); -// -// String timestampAsString = "2023-10-25 14:36:12"; -// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -// Date date = dateFormat.parse(timestampAsString); -// long unixTimestamp = date.getTime(); // 获取Unix时间戳 -// -// Query query = LongPoint.newRangeQuery("time", 0L, unixTimestamp); -// writer.deleteDocuments(query); -// -// writer.commit(); -// writer.close(); // 获取当前时间 LocalDateTime now = LocalDateTime.now(); // 减去七天 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/StaticConfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/StaticConfig.java index c7958bb..0146ff4 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/StaticConfig.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/StaticConfig.java @@ -5,11 +5,18 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * @deprecated 设置静态参数初始化 + *

+ * 设置静态参数初始化 + *

+ * + * @author generator + * @since 2023-11-16 */ @Configuration public class StaticConfig { - //日志索引目录 + /** + * 日志索引目录 + */ @Value("${lucene.index.path}") private String luceneDir; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/UrlConfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/UrlConfig.java index dd7ce01..2ebb250 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/UrlConfig.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/UrlConfig.java @@ -1,5 +1,13 @@ package org.nl.config.lucene; +/** + *

+ * url + *

+ * + * @author generator + * @since 2023-11-16 + */ public class UrlConfig { public static String luceneUrl; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/CodeGenerator.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/CodeGenerator.java index b1a7a1e..ff70987 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/CodeGenerator.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/CodeGenerator.java @@ -3,16 +3,24 @@ package org.nl.config.mybatis; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; -import com.baomidou.mybatisplus.generator.config.*; -import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +import com.baomidou.mybatisplus.generator.config.GlobalConfig; +import com.baomidou.mybatisplus.generator.config.PackageConfig; +import com.baomidou.mybatisplus.generator.config.StrategyConfig; +import com.baomidou.mybatisplus.generator.config.rules.DateType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; -import org.nl.config.language.LangProcess; -import org.springframework.util.StringUtils; +import org.apache.commons.lang3.StringUtils; -import java.util.ArrayList; -import java.util.List; import java.util.Scanner; +/** + *

+ * 自动生成代码 + *

+ * + * @author generator + * @since 2023-11-16 + */ public class CodeGenerator { /** @@ -27,11 +35,11 @@ public class CodeGenerator { System.out.println(help.toString()); if (scanner.hasNext()) { String ipt = scanner.next(); - if (!StringUtils.isEmpty(ipt)) { + if (!StringUtils.isBlank(ipt)) { return ipt; } } - throw new MybatisPlusException(LangProcess.msg("error_ParamError")); + throw new MybatisPlusException("请输入正确的" + tip + "!"); } @@ -49,28 +57,27 @@ public class CodeGenerator { gc.setOutputDir(projectPath + "/src/main/java/"); gc.setAuthor("generator"); gc.setOpen(false); -// gc.setSwagger2(true); gc.setEntityName("%s"); gc.setServiceName("I%sService"); gc.setServiceImplName("%sServiceImpl"); + gc.setDateType(DateType.ONLY_DATE); mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); - dsc.setUrl("jdbc:mysql://127.0.0.1:3306/stand_lms?setUnicode=true&characterEncoding=utf8"); + dsc.setUrl("jdbc:mysql://localhost:3306/lanzhou_two?serverTimezone=GMT&setUnicode=true&characterEncoding=utf8"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); - dsc.setPassword("12356"); + dsc.setPassword("root"); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig(); -// pc.setModuleName(""); pc.setParent("org.nl."+menusName); pc.setController("controller." + moduleName); pc.setMapper("service."+moduleName+".dao.mapper"); pc.setService("service." + moduleName); pc.setServiceImpl("service." + moduleName + ".impl"); pc.setEntity("service." + moduleName + ".dao"); - pc.setXml("service." + moduleName + ".dao.mapper"); + pc.setXml("service." + moduleName + ".dao.mapper.xml"); mpg.setPackageInfo(pc); // // 自定义配置 InjectionConfig cfg = new InjectionConfig() { @@ -82,19 +89,13 @@ public class CodeGenerator { // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel); - strategy.setColumnNaming(NamingStrategy.underline_to_camel); -// strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!"); + strategy.setColumnNaming(NamingStrategy.no_change); strategy.setEntityLombokModel(true); strategy.setRestControllerStyle(true); - // 公共父类 -// strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!"); // 写于父类中的公共字段 -// strategy.setSuperEntityColumns("id"); strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); strategy.setControllerMappingHyphenStyle(false); -// strategy.setTablePrefix("sys_"); mpg.setStrategy(strategy); -// mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java index 6b57662..c854f10 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java @@ -8,6 +8,14 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; +/** + *

+ * MybatisPlus配置 + *

+ * + * @author generator + * @since 2023-11-16 + */ @EnableTransactionManagement @Configuration public class MybatisPlusConfig { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/redis/RedisConvert.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/redis/RedisConvert.java index caea9b9..808005e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/redis/RedisConvert.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/redis/RedisConvert.java @@ -18,6 +18,13 @@ public interface RedisConvert { RedisConvert INSTANCE = Mappers.getMapper(RedisConvert.class); + /** + * 创建 + * @param info + * @param dbSize + * @param commandStats + * @return RedisMonitorRespVO + */ default RedisMonitorRespVO build(Properties info, Long dbSize, Properties commandStats) { RedisMonitorRespVO respVO = RedisMonitorRespVO.builder().info(info).dbSize(dbSize) .commandStats(new ArrayList<>(commandStats.size())).build(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/LoginUserHandler.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/LoginUserHandler.java index 2d259a7..ac8193d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/LoginUserHandler.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/LoginUserHandler.java @@ -6,7 +6,8 @@ import org.springframework.stereotype.Component; import java.util.function.BiFunction; -/* +/** + * s * @author ZZQ * @Date 2022/11/24 3:47 下午 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/SaInitConfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/SaInitConfig.java index 8c8a046..fedff5f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/SaInitConfig.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/SaInitConfig.java @@ -8,7 +8,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.ModelAndView; -/* +/** + * s * @author ZZQ * @Date 2022/11/28 10:58 上午 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/start/Init.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/start/Init.java index c98e6cc..e6cf273 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/start/Init.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/start/Init.java @@ -7,7 +7,12 @@ import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; /** + *

* 随项目启动模块 + *

+ * + * @author generator + * @since 2023-11-16 */ @Slf4j @Component diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java index 5126d87..bf93202 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java @@ -85,7 +85,6 @@ public class DeptController { @Log("新增部门") @ApiOperation("新增部门") @PostMapping -// @SaCheckPermission("dept:add") public ResponseEntity create(@Validated @RequestBody SysDept resources){ deptService.createDept(resources); return new ResponseEntity<>(HttpStatus.CREATED); @@ -94,7 +93,6 @@ public class DeptController { @Log("修改部门") @ApiOperation("修改部门") @PutMapping -// @SaCheckPermission("dept:edit") public ResponseEntity update(@Validated @RequestBody SysDept dept){ if (dept.getPid() != null && dept.getDept_id().equals(dept.getPid())) { throw new BadRequestException(LangProcess.msg("login_childError")); @@ -106,7 +104,6 @@ public class DeptController { @Log("删除部门") @ApiOperation("删除部门") @DeleteMapping -// @SaCheckPermission("dept:del") public ResponseEntity delete(@RequestBody Set deptIds){ if (CollectionUtils.isEmpty(deptIds)){ return ResponseEntity.noContent().build(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dict/SysDictController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dict/SysDictController.java index 66b7adb..819f9a9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dict/SysDictController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dict/SysDictController.java @@ -37,14 +37,12 @@ public class SysDictController { @Log("查询字典") @GetMapping @ApiOperation("查询字典") -// @SaCheckPermission("dict:list") public ResponseEntity query(@RequestParam Map whereJson, PageQuery pageable){ return new ResponseEntity<>(TableDataInfo.build(dictService.queryAll(whereJson,pageable)), HttpStatus.OK); } @ApiOperation("查询所有字典信息") @GetMapping(value = "/all") -// @SaCheckPermission("dict:list") public ResponseEntity queryAll(){ return new ResponseEntity<>(dictService.queryAll(),HttpStatus.OK); } @@ -52,7 +50,6 @@ public class SysDictController { @Log("新增字典") @PostMapping @ApiOperation("新增字典") -// @SaCheckPermission("dict:add") public ResponseEntity create(@RequestBody Dict dict){ dictService.create(dict); return new ResponseEntity<>(HttpStatus.CREATED); @@ -61,7 +58,6 @@ public class SysDictController { @PutMapping @Log("修改字典") @ApiOperation("修改字典") - //@SaCheckPermission("@el.check('dict:edit')") public ResponseEntity updateDict(@Validated @RequestBody Dict dto){ dictService.updateDict(dto); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -70,7 +66,6 @@ public class SysDictController { @Log("删除字典") @ApiOperation("删除字典") @DeleteMapping -// @SaCheckPermission("dict:del") public ResponseEntity delete(@RequestBody Set ids){ dictService.deleteBatchByIds(ids); return new ResponseEntity<>(HttpStatus.OK); @@ -97,7 +92,6 @@ public class SysDictController { @Log("新增字典详情") @ApiOperation("新增字典详情") @PostMapping("/dictDetail") -// @SaCheckPermission("dict:add") public ResponseEntity createDetail(@RequestBody Dict resources){ dictService.createDetail(resources); return new ResponseEntity<>(HttpStatus.CREATED); @@ -106,7 +100,6 @@ public class SysDictController { @Log("修改字典详情") @ApiOperation("修改字典详情") @PutMapping("/dictDetail") -// @SaCheckPermission("dict:edit") public ResponseEntity updateDetail(@RequestBody Dict resources){ dictService.updateDetail(resources); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -115,7 +108,6 @@ public class SysDictController { @Log("删除字典详情") @ApiOperation("删除字典详情") @DeleteMapping(value = "/dictDetail/{id}") -// @SaCheckPermission("dict:del") public ResponseEntity deleteDetail(@PathVariable String id){ dictService.deleteDetail(id); return new ResponseEntity<>(HttpStatus.OK); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logging/SysLogController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logging/SysLogController.java index 5323312..5c51d5a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logging/SysLogController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logging/SysLogController.java @@ -31,14 +31,12 @@ public class SysLogController { private ISysLogService logService; @GetMapping @ApiOperation("日志查询") - //@SaCheckPermission("@el.check()") public ResponseEntity query(@RequestParam Map criteria, PageQuery pageable){ criteria.put("log_type","INFO"); return new ResponseEntity<>(TableDataInfo.build(logService.queryAll(criteria,pageable)), HttpStatus.OK); } @GetMapping(value = "/user") - // @ApiOperation("用户日志查询") public ResponseEntity queryUserLog(@RequestParam Map criteria, PageQuery pageable){ criteria.put("log_type","INFO"); criteria.put("username", SecurityUtils.getCurrentUsername()); @@ -47,7 +45,6 @@ public class SysLogController { @GetMapping(value = "/error") @ApiOperation("错误日志查询") - // @SaCheckPermission("@el.check()") public ResponseEntity queryErrorLog(@RequestParam Map criteria, PageQuery pageable){ criteria.put("log_type","ERROR"); return new ResponseEntity<>(TableDataInfo.build(logService.queryAll(criteria,pageable)), HttpStatus.OK); @@ -55,7 +52,6 @@ public class SysLogController { @GetMapping(value = "/error/{id}") @ApiOperation("日志异常详情查询") - // @SaCheckPermission("@el.check()") public ResponseEntity queryErrorLogs(@PathVariable String id){ return new ResponseEntity<>(logService.findByErrDetail(id), HttpStatus.OK); } @@ -63,7 +59,6 @@ public class SysLogController { @DeleteMapping(value = "/del/error") @Log("删除所有ERROR日志") @ApiOperation("删除所有ERROR日志") - // @SaCheckPermission("@el.check()") public ResponseEntity delAllErrorLog(){ logService.delAllByError(); return new ResponseEntity<>(HttpStatus.OK); @@ -72,7 +67,6 @@ public class SysLogController { @DeleteMapping(value = "/del/info") @Log("删除所有INFO日志") @ApiOperation("删除所有INFO日志") - // @SaCheckPermission("@el.check()") public ResponseEntity delAllInfoLog(){ logService.delAllByInfo(); return new ResponseEntity<>(HttpStatus.OK); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logicflow/StageController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logicflow/StageController.java index 65e23de..c46a0ea 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logicflow/StageController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logicflow/StageController.java @@ -38,7 +38,6 @@ public class StageController { @GetMapping @Log("查询舞台") @ApiOperation("查询舞台") - //@SaCheckPermission("stage:list") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { return new ResponseEntity<>(TableDataInfo.build(stageService.queryAll(whereJson, page)), HttpStatus.OK); } @@ -46,7 +45,6 @@ public class StageController { @PostMapping @Log("新增舞台") @ApiOperation("新增舞台") - //@SaCheckPermission("stage:add") public ResponseEntity create(@Validated @RequestBody Stage dto) { stageService.create(dto); return new ResponseEntity<>(HttpStatus.CREATED); @@ -55,7 +53,6 @@ public class StageController { @PutMapping @Log("修改舞台") @ApiOperation("修改舞台") - //@SaCheckPermission("stage:edit") public ResponseEntity update(@Validated @RequestBody Stage dto) { stageService.update(dto); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -63,7 +60,6 @@ public class StageController { @Log("删除舞台") @ApiOperation("删除舞台") - //@SaCheckPermission("stage:del") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { stageService.deleteAll(ids); @@ -73,7 +69,6 @@ public class StageController { @GetMapping("/selectList") @Log("下拉选舞台") @ApiOperation("下拉选舞台") - //@SaCheckPermission("routePlan:list") public ResponseEntity selectList() { return new ResponseEntity<>(stageService.selectList(), HttpStatus.OK); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logicflow/StageImageController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logicflow/StageImageController.java index c8e5f2d..dbebc40 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logicflow/StageImageController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/logicflow/StageImageController.java @@ -37,7 +37,6 @@ public class StageImageController { @GetMapping @Log("查询舞台") @ApiOperation("查询舞台") - //@SaCheckPermission("stageImage:list") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { return new ResponseEntity<>(TableDataInfo.build(stageImageService.queryAll(whereJson, page)), HttpStatus.OK); } @@ -45,7 +44,6 @@ public class StageImageController { @PostMapping @Log("新增舞台图片") @ApiOperation("新增舞台图片") - //@SaCheckPermission("stageImage:add") public ResponseEntity create(@Validated @RequestBody StageImage entity) { stageImageService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -54,7 +52,6 @@ public class StageImageController { @PutMapping @Log("修改舞台") @ApiOperation("修改舞台") - //@SaCheckPermission("stageImage:edit") public ResponseEntity update(@Validated @RequestBody StageImage entity) { stageImageService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -62,7 +59,6 @@ public class StageImageController { @Log("删除舞台") @ApiOperation("删除舞台") - //@SaCheckPermission("stageImage:del") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { stageImageService.deleteAll(ids); @@ -72,7 +68,6 @@ public class StageImageController { @GetMapping("/selectList") @Log("下拉选设备图标") @ApiOperation("下拉选设备图标") - //@SaCheckPermission("routePlan:list") public ResponseEntity selectList() { return new ResponseEntity<>(stageImageService.selectList(), HttpStatus.OK); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/lucence/LuceneController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/lucence/LuceneController.java index f6f4782..2806cc2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/lucence/LuceneController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/lucence/LuceneController.java @@ -14,6 +14,14 @@ import org.springframework.web.bind.annotation.*; import java.util.Map; +/** + *

+ * 日志检索 + *

+ * + * @author generator + * @since 2023-11-16 + */ @RestController @RequiredArgsConstructor @Api(tags = "日志检索") @@ -26,7 +34,6 @@ public class LuceneController { @PostMapping("/getAll") @Log("日志检索") @ApiOperation("日志检索") - //@PreAuthorize("@el.check('task:list')") public ResponseEntity get(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(luceneService.getAll(whereJson), HttpStatus.OK); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/notice/SysNoticeController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/notice/SysNoticeController.java index 5d63042..109f2e5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/notice/SysNoticeController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/notice/SysNoticeController.java @@ -33,7 +33,6 @@ public class SysNoticeController { @GetMapping @Log("查询消息通知") @ApiOperation("查询消息通知") - //@SaCheckPermission("@el.check('sysNotice:list')") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(noticeService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -41,7 +40,6 @@ public class SysNoticeController { @PostMapping @Log("新增消息通知") @ApiOperation("新增消息通知") - //@SaCheckPermission("@el.check('sysNotice:add')") public ResponseEntity create(@Validated @RequestBody SysNotice entity){ noticeService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -50,7 +48,6 @@ public class SysNoticeController { @PutMapping @Log("修改消息通知") @ApiOperation("修改消息通知") - //@SaCheckPermission("@el.check('sysNotice:edit')") public ResponseEntity update(@Validated @RequestBody SysNotice entity){ noticeService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -58,7 +55,6 @@ public class SysNoticeController { @Log("删除消息通知") @ApiOperation("删除消息通知") - //@SaCheckPermission("@el.check('sysNotice:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { noticeService.deleteAll(ids); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/param/SysParamController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/param/SysParamController.java index b78ffb0..b4405bb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/param/SysParamController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/param/SysParamController.java @@ -38,7 +38,6 @@ class SysParamController { @GetMapping @Log("查询系统参数") @ApiOperation("查询系统参数") - //@SaCheckPermission("param:list") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(paramService.queryPage(whereJson, page)), HttpStatus.OK); } @@ -46,7 +45,6 @@ class SysParamController { @PostMapping @Log("新增系统参数") @ApiOperation("新增系统参数") - //@SaCheckPermission("param:add") public ResponseEntity create(@Validated @RequestBody Param param){ paramService.create(param); return new ResponseEntity<>(HttpStatus.CREATED); @@ -55,7 +53,6 @@ class SysParamController { @PutMapping @Log("修改系统参数") @ApiOperation("修改系统参数") - //@SaCheckPermission("param:edit") public ResponseEntity update(@Validated @RequestBody Param param){ paramService.update(param); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -63,7 +60,6 @@ class SysParamController { @Log("删除系统参数") @ApiOperation("删除系统参数") - //@SaCheckPermission("param:del") @DeleteMapping public ResponseEntity delete(@RequestBody String[] ids) { List Ids = Arrays.asList(ids); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/permission/SysDataPermissionController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/permission/SysDataPermissionController.java index 4a94366..c092f8a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/permission/SysDataPermissionController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/permission/SysDataPermissionController.java @@ -39,7 +39,6 @@ public class SysDataPermissionController { @GetMapping @Log("查询数据权限") @ApiOperation("查询数据权限") - //@SaCheckPermission("@el.check('dataPermission:list')") public ResponseEntity query(SysDataPermissionQuery dataPermissionQuery, PageQuery page) { return new ResponseEntity<>(TableDataInfo.build(dataPermissionService.queryAll(dataPermissionQuery, page)), HttpStatus.OK); } @@ -47,7 +46,6 @@ public class SysDataPermissionController { @PostMapping @Log("新增数据权限") @ApiOperation("新增数据权限") - //@SaCheckPermission("@el.check('dataPermission:add')") public ResponseEntity create(@Validated @RequestBody SysDataPermission permission) { dataPermissionService.create(permission); return new ResponseEntity<>(HttpStatus.CREATED); @@ -56,7 +54,6 @@ public class SysDataPermissionController { @PutMapping @Log("修改数据权限") @ApiOperation("修改数据权限") - //@SaCheckPermission("@el.check('dataPermission:edit')") public ResponseEntity update(@Validated @RequestBody SysDataPermission permission) { dataPermissionService.update(permission); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -64,7 +61,6 @@ public class SysDataPermissionController { @Log("删除数据权限") @ApiOperation("删除数据权限") - //@SaCheckPermission("@el.check('dataPermission:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { dataPermissionService.deleteAll(ids); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/AuthorizationController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/AuthorizationController.java index 183a9f2..71289a5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/AuthorizationController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/AuthorizationController.java @@ -85,7 +85,9 @@ public class AuthorizationController { String uuid = IdUtil.simpleUUID(); //当验证码类型为 arithmetic时且长度 >= 2 时,captcha.text()的结果有几率为浮点型 String captchaValue = captcha.text(); - if (captcha.getCharType() - 1 == LoginCodeEnum.arithmetic.ordinal() && captchaValue.contains(".")) { + + String d = "."; + if (captcha.getCharType() - 1 == LoginCodeEnum.arithmetic.ordinal() && captchaValue.contains(d)) { captchaValue = captchaValue.split("\\.")[0]; } // 保存 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/MobileAuthorizationController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/MobileAuthorizationController.java index ba80c56..c88e7b8 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/MobileAuthorizationController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/MobileAuthorizationController.java @@ -49,13 +49,15 @@ public class MobileAuthorizationController { @PostMapping(value = "/login") @SaIgnore public ResponseEntity login(@Validated @RequestBody AuthUserDto authUser, HttpServletRequest request) throws Exception { + String salt = "salt"; // 密码解密 - 前端的加密规则: encrypt(根据实际更改) String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword()); // 校验数据库 // 根据用户名查询,在比对密码 + // 拿到多个已经抛出异常 SysUser userInfo = userService.getOne(new LambdaQueryWrapper() - .eq(SysUser::getUsername, authUser.getUsername())); // 拿到多个已经抛出异常 - if (ObjectUtil.isEmpty(userInfo) || !userInfo.getPassword().equals(SaSecureUtil.md5BySalt(password, "salt"))) { // 这里需要密码加密 + .eq(SysUser::getUsername, authUser.getUsername())); + if (ObjectUtil.isEmpty(userInfo) || !userInfo.getPassword().equals(SaSecureUtil.md5BySalt(password, salt))) { throw new BadRequestException(LangProcess.msg("login_pwd")); } // 获取权限列表 - 登录查找权限 @@ -74,14 +76,17 @@ public class MobileAuthorizationController { user.setPermissions(permissionList); // SaLoginModel 配置登录相关参数 + /* + * PE: 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 + * loginInfo: Token挂载的扩展参数 (此方法只有在集成jwt插件时才会生效) + */ StpUtil.login(userInfo.getUser_id(), new SaLoginModel() - .setDevice("PE") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 - .setExtra("loginInfo", user) // Token挂载的扩展参数 (此方法只有在集成jwt插件时才会生效) + .setDevice("PE") + .setExtra("loginInfo", user) ); // 返回 token 与 用户信息 JSONObject jsonObject = new JSONObject(); -// jsonObject.put("roles", permissionList); jsonObject.put("user", userInfo); JSONObject authInfo = new JSONObject(2) {{ put("token", "Bearer " + StpUtil.getTokenValue()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/tools/ToolLocalStorageController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/tools/ToolLocalStorageController.java index 44862f6..019b69e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/tools/ToolLocalStorageController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/tools/ToolLocalStorageController.java @@ -40,7 +40,6 @@ public class ToolLocalStorageController { @ApiOperation("查询文件") @GetMapping -// @SaCheckPermission("storage:list") public ResponseEntity query(ToolLocalStorageQuery criteria, PageQuery pageable) { return new ResponseEntity<>(TableDataInfo.build(localStorageService.queryAll(criteria, pageable)), HttpStatus.OK); } @@ -48,7 +47,6 @@ public class ToolLocalStorageController { @ApiOperation("上传文件") @PostMapping @SaIgnore -// @SaCheckPermission("storage:add") public ResponseEntity create(@RequestParam String name, @RequestParam("file") MultipartFile file) { return new ResponseEntity<>(localStorageService.create(name, file), HttpStatus.CREATED); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/OnlineController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/OnlineController.java index f48db8f..4893924 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/OnlineController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/OnlineController.java @@ -45,21 +45,18 @@ public class OnlineController { @ApiOperation("查询在线用户") @GetMapping - // @SaCheckPermission("@el.check()") public ResponseEntity query(String filter, Pageable pageable){ return new ResponseEntity<>(onlineUserService.getAll(filter, pageable),HttpStatus.OK); } @ApiOperation("导出数据") @GetMapping(value = "/download") - // @SaCheckPermission("@el.check()") public void download(HttpServletResponse response, String filter) throws IOException { onlineUserService.download(onlineUserService.getAll(filter), response); } @ApiOperation("踢出用户") @DeleteMapping - // @SaCheckPermission("@el.check()") public ResponseEntity delete(@RequestBody List keys) throws Exception { for (OnlineUserDto key : keys) { // 解密Key diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/UserController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/UserController.java index f5c4a6f..50a5989 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/UserController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/UserController.java @@ -67,7 +67,6 @@ public class UserController { @Log("新增用户") @ApiOperation("新增用户") @PostMapping -// @SaCheckPermission("user:add") public ResponseEntity create(@RequestBody Map user){ userService.create(user); return new ResponseEntity<>(HttpStatus.CREATED); @@ -76,7 +75,6 @@ public class UserController { @Log("修改用户") @ApiOperation("修改用户") @PutMapping -// @SaCheckPermission("user:edit") public ResponseEntity update( @RequestBody Map resources) throws Exception { userService.update(resources); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -84,7 +82,6 @@ public class UserController { @Log("修改用户:个人中心") @ApiOperation("修改用户:个人中心") -// @PutMapping(value = "center") public ResponseEntity center(@RequestBody SysUser resources){ if(!resources.getUser_id().equals(StpUtil.getLoginIdAsLong())){ throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); @@ -96,7 +93,6 @@ public class UserController { @Log("删除用户") @ApiOperation("删除用户") @DeleteMapping -// @SaCheckPermission("user:del") public ResponseEntity delete(@RequestBody Set ids) { userService.removeByIds(ids); return new ResponseEntity<>(HttpStatus.OK); @@ -139,9 +135,4 @@ public class UserController { return new ResponseEntity<>(HttpStatus.OK); } - /** - * 如果当前用户的角色级别低于创建用户的角色级别,则抛出权限不足的错误 - * @param resources / - */ - } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/ISysCodeRuleDetailService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/ISysCodeRuleDetailService.java index f595798..53e2061 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/ISysCodeRuleDetailService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/ISysCodeRuleDetailService.java @@ -19,8 +19,18 @@ import java.util.Map; */ public interface ISysCodeRuleDetailService extends IService { + /** + * 分页查询 + * @param form 查询条件 + * @param pageable 工具列 + * @return IPage + */ IPage queryAll(CodeRuleDetailQuery form, PageQuery pageable); + /** + * 创建 + * @param codeRuleDetail 实体类 + */ void create(SysCodeRuleDetail codeRuleDetail); /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java index 938e712..3bad5e4 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java @@ -58,7 +58,7 @@ public class SysCodeRuleServiceImpl extends ServiceImpl().eq(SysCodeRule::getCode, code)).getId(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/utils/CodeRuleTypeEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/utils/CodeRuleTypeEnum.java index 939d2ea..c36c6d0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/utils/CodeRuleTypeEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/coderule/utils/CodeRuleTypeEnum.java @@ -11,8 +11,11 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum CodeRuleTypeEnum { + // 固定 FIXED("01", "固定"), + // 日期" DATE("02", "日期"), + // 顺序 ORDER("03", "顺序"); private final String type; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java index 8d159d8..2670a43 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java @@ -49,6 +49,11 @@ public interface ISysDeptService extends IService { * @param deptIds */ void saveUserDeptRelation(String UserId, Collection deptIds); + + /** + * 删除 + * @param user 标识 + */ void delUserDeptRelation(String user); /** @@ -63,8 +68,17 @@ public interface ISysDeptService extends IService { */ void delateDept(Set deptIds); + /** + * 创建 + * @param dept 实体类 + */ void createDept(SysDept dept); + /** + * 获取部门 + * @param userId 标识 + * @return List 部门集合 + */ List getUserDeptByUserId(String userId); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java index 33ce82b..d6c01e1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java @@ -24,14 +24,24 @@ public interface SysDeptMapper extends BaseMapper { * @param deptId */ void saveDeptRelation(@Param("user") String UserId,@Param("depts") Collection deptId); + + /** + * 删除 + * @param UserId 标识 + */ void delDeptRelation(@Param("user") String UserId); + /** + * 获取部门 + * @param deptIds + * @return List + */ List getDeptRelation(@Param("deptIds") Collection deptIds); /** * 跟新sub_count字段 * @param deptId - * @return + * @return int 数字 */ int updateSubCount(String deptId); @@ -42,5 +52,10 @@ public interface SysDeptMapper extends BaseMapper { */ String findAllChild(String pid); + /** + * 根据id获取 + * @param userId 标识 + * @return List 实体类集合 + */ List getUserDeptByUserId(String userId); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dto/DeptQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dto/DeptQuery.java index 51854f0..dadd46e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dto/DeptQuery.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dto/DeptQuery.java @@ -8,7 +8,8 @@ import org.nl.system.service.dept.dao.SysDept; import java.util.List; -/* +/** + * 查询条件 * @author ZZQ * @Date 2022/12/15 4:20 下午 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/ICodeGeneratorService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/ICodeGeneratorService.java index ee1fd9f..2b10b25 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/ICodeGeneratorService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/ICodeGeneratorService.java @@ -26,7 +26,9 @@ public interface ICodeGeneratorService extends IService { /** * 获得所有的表格信息 - * @return + * @param name + * @param pageQuery + * @return IPage */ IPage getTables(String name, PageQuery pageQuery); @@ -52,6 +54,12 @@ public interface ICodeGeneratorService extends IService { @Async void sync(IPage columnInfos, List columnInfoList); + /** + * 视图 + * @param byTableName + * @param columns + * @return ResponseEntity + */ ResponseEntity preview(CodeGenConfig byTableName, IPage columns); /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/dao/CodeColumnConfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/dao/CodeColumnConfig.java index fa9f5c5..b220616 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/dao/CodeColumnConfig.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/dao/CodeColumnConfig.java @@ -73,7 +73,12 @@ public class CodeColumnConfig implements Serializable { @ApiModelProperty(value = "日期注解") private String date_annotation; - // 创建默认的实体 + /** + * 创建默认的实体 + * @param tableName / + * @param config / + * @return CodeColumnConfig + */ public static CodeColumnConfig createDefault(String tableName, ColumnInfo config) { CodeColumnConfig columnConfig = new CodeColumnConfig(); columnConfig.setColumn_id(IdUtil.getSnowflake(1,1).nextIdStr()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/dao/mapper/CodeColumnConfigMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/dao/mapper/CodeColumnConfigMapper.java index c1306b6..ace02fd 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/dao/mapper/CodeColumnConfigMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/generator/dao/mapper/CodeColumnConfigMapper.java @@ -19,17 +19,24 @@ public interface CodeColumnConfigMapper extends BaseMapper { /** * 分页查找 - * @param name - * @return + * @param name / + * @param pageSize / + * @param offset / + * @return List */ List getTables(String name, int pageSize, int offset); /** * 分页查询的总数 * @param name - * @return + * @return long */ long getTablesTotal(String name); + /** + * 获取字段名称 + * @param tableName + * @return List + */ List getTablesByTableName(String tableName); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneExecuteLogService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneExecuteLogService.java index cd2f571..e5c6837 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneExecuteLogService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneExecuteLogService.java @@ -4,6 +4,14 @@ import org.nl.system.service.lucene.dto.LuceneLogDto; import java.io.IOException; +/** + *

+ * 日志检索服务 + *

+ * + * @author generator + * @since 2023-11-16 + */ public interface LuceneExecuteLogService { /** * 设备光电变化实时光电信号 @@ -23,8 +31,8 @@ public interface LuceneExecuteLogService { /** * 接口日志,会保留历史记录 - * - * @param luceneLogDto 日志结果对象 + * @param luceneLogDto 日志结果对象 + * @throws IOException */ void interfaceExecuteLog(LuceneLogDto luceneLogDto) throws IOException; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneService.java index 4bb3565..ee4e0e8 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneService.java @@ -1,12 +1,17 @@ package org.nl.system.service.lucene; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.springframework.data.domain.Pageable; import java.util.Map; - +/** + *

+ * 、 + *

+ * + * @author generator + * @since 2023-11-16 + */ public interface LuceneService { /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/dto/LuceneLogDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/dto/LuceneLogDto.java index 7cda043..c2534f1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/dto/LuceneLogDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/dto/LuceneLogDto.java @@ -5,71 +5,101 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +/** + *

+ * 日志DTO + *

+ * + * @author generator + * @since 2023-11-16 + */ @Data @Builder @NoArgsConstructor @AllArgsConstructor public class LuceneLogDto { - /* 日志标识 */ + /** + * 日志标识 + */ private String log_uuid; - /*日志类型*/ + /** + * 日志类型 + */ private String logType; - /*设备编号*/ + /** + * 设备编号 + */ private String device_code; - /*内容详情*/ + /** + * 内容详情 + */ private String content; - - /* 任务编码 */ + /** + * 任务编码 + */ private String task_code; - - /* 指令编码 */ + /** + * 指令编码 + */ private String instruct_code; - - /* 任务标识 */ + /** + * 任务标识 + */ private String task_id; - - /* 载具号 */ + /** + * 载具号 + */ private String vehicle_code; - - /* 备注 */ + /** + * 备注 + */ private String remark; - - /* 日志类型 */ + /** + * 日志类型 + */ private String log_type; - - /* 方法 */ + /** + * 方法 + */ private String method; - - /* 请求参数 */ + /** + * 请求参数 + */ private String requestparam; - - /* 响应参数 */ + /** + * 响应参数 + */ private String responseparam; - - /* 请求地址 */ + /** + * 请求地址 + */ private String requesturl; - - /* 状态码 */ + /** + * 状态码 + */ private String status_code; - - /* 是否删除 1:是;0:否 */ + /** + * 是否删除 1:是;0:否 + */ private String is_delete; - - /* 创建者 */ + /** + * 创建者 + */ private String create_by; - - /* 创建时间 YYYY-MM-DD hh:mm:ss */ + /** + * 创建时间 YYYY-MM-DD hh:mm:ss + */ private String create_time; - - /* 修改者 */ + /** + * 修改者 + */ private String update_by; - - /* 修改时间 */ + /** + * 修改时间 + */ private String update_time; - - public LuceneLogDto (final String opc_server_code,final String opc_plc_code, final String device_code,final String to_home,final int last_home, final int home) { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneExecuteLogServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneExecuteLogServiceImpl.java index 0f5deac..2c04946 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneExecuteLogServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneExecuteLogServiceImpl.java @@ -32,7 +32,9 @@ import java.io.IOException; @Slf4j public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService { - //日志目录 + /** + * 日志目录 + */ @Value("${logging.file.path}") private String logPath; @@ -64,7 +66,6 @@ public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService { //向document对象中添加域。 if (ObjectUtil.isNotEmpty(luceneLogDto.getDevice_code())) { document.add(new StringField("device_code", luceneLogDto.getDevice_code(), Field.Store.YES)); -// document.add(new TextField("device_code", luceneLogDto.getDevice_code(), Field.Store.YES)); } if (ObjectUtil.isNotEmpty(luceneLogDto.getContent())) { document.add(new StringField("fieldContent", luceneLogDto.getContent(), Field.Store.YES)); @@ -90,7 +91,6 @@ public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService { //实现日志文件按业务独立生成日志文件到指定路径 DynamicLogger loggerBuilder =new DynamicLogger(logPath+"\\"+luceneLogDto.getLogType()+"\\"); Logger logger = loggerBuilder.getLogger(luceneLogDto.getDevice_code()); -// logger.info("设备{}建立索引共耗时{}毫秒",luceneLogDto.getDevice_code(),endTime-startTime); logger.info("{}",luceneLogDto.toString()); } catch (Exception e) { log.error(e.getMessage(), e); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneServiceImpl.java index 1cbace2..eb76d20 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneServiceImpl.java @@ -1,7 +1,5 @@ package org.nl.system.service.lucene.impl; -import cn.hutool.core.util.CharsetUtil; -import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; @@ -10,18 +8,25 @@ import org.nl.config.language.LangProcess; import org.nl.config.lucene.Searcher; import org.nl.system.service.lucene.LuceneService; import org.springframework.beans.factory.annotation.Value; -import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.Map; - - +/** + *

+ * 、 + *

+ * + * @author generator + * @since 2023-11-16 + */ @Service @RequiredArgsConstructor @Slf4j public class LuceneServiceImpl implements LuceneService { - //日志索引目录 + /** + * 日志索引目录 + */ @Value("${lucene.index.path}") private String luceneUrl; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java index b672ea4..122f786 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java @@ -98,7 +98,11 @@ public interface ISysMenuService extends IService { */ void update(SysMenu menu); - + /** + * 根据id查询 + * @param userId 标识 + * @return List 菜单集合 + */ List findByUser(String userId); /** @@ -108,13 +112,24 @@ public interface ISysMenuService extends IService { * @return / */ List buildMenus(List menuDtos); + + /** + * 获取菜单父级 + * @param menuDtos 、 + * @param pid 父级id + * @return List 菜单集合 + */ List buildMenus(List menuDtos,String pid); + /** + * 获取菜单 + * @param systemType / + * @return List 菜单集合 + */ List buildMenus(String systemType); /** * 构建菜单树 - * * @param menuDtos 原始数据 * @return / */ @@ -122,18 +137,25 @@ public interface ISysMenuService extends IService { /** * 懒加载菜单数据 - * * @param pid / * @return / */ List getMenus(String pid); /** + * s * @param sysMenu * @return */ MenuDto doToDto(SysMenu sysMenu); + /** + * 根据roleId获取 + * @param roleId / + * @param systemType / + * @param category / + * @return List 集合 + */ List getMenusByRole(String roleId, String systemType, String category); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java index 7964cb9..3d7cafc 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java @@ -18,9 +18,19 @@ import java.util.Map; * @since 2022-12-15 */ public interface SysMenuMapper extends BaseMapper { + + /** + * 查询菜单 + * @return List + */ @Select("select * from sys_menu where (pid is null or pid = '' or pid = 0 )") List findByPidIsNull(); + /** + * 根据父级id查询 + * @param pid 父级id + * @return List + */ @Select("select * from sys_menu where pid = #{pid}") List findByPid(@Param("pid") String pid); @@ -56,7 +66,18 @@ public interface SysMenuMapper extends BaseMapper { @Delete(value = "delete from sys_roles_menus where menu_id = #{menuId}") void untiedMenu(String menuId); + /** + * 获取菜单路由 + * @param systemType / + * @param category / + * @return List + */ List getMenusByRole(@Param("systemType") String systemType, @Param("category")String category); + /** + * 获取父级id + * @param pid + * @return / + */ String findAllChild(String pid); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java index 4a6c785..34e5d17 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java @@ -22,6 +22,14 @@ import java.io.Serializable; import java.util.List; import java.util.Objects; +/** + *

+ * 菜单Dto + *

+ * + * @author generator + * @since 2023-11-16 + */ @Data public class MenuDto extends BaseDTO implements Serializable { @@ -95,13 +103,17 @@ public class MenuDto extends BaseDTO implements Serializable { } public String getLocalTitle(String local){ - if ("in".equals(local)){ + String in = "in"; + String en = "en"; + String zh = "zh"; + + if (in.equals(local)){ return in_title; } - if ("en".equals(local)){ + if (en.equals(local)){ return en_title; } - if ("zh".equals(local)){ + if (zh.equals(local)){ return zh_title; } return title; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java index e4b2bf6..b6a5223 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java @@ -193,7 +193,8 @@ public class SysMenuServiceImpl extends ServiceImpl impl public void update(SysMenu resources) { String menuId = resources.getMenu_id(); SysMenu menu = baseMapper.selectById(menuId); - String allChild = baseMapper.findAllChild(menuId); // 获取当前菜单的所有子菜单 + // 获取当前菜单的所有子菜单 + String allChild = baseMapper.findAllChild(menuId); List allChildIds = ObjectUtil.isNotEmpty(allChild)?Arrays.asList(allChild.split(",")):null; if (ObjectUtil.isNotEmpty(allChildIds) && allChildIds.contains(resources.getPid())){ throw new BadRequestException(LangProcess.msg("login_childError")); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/ISysNoticeService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/ISysNoticeService.java index 0028e78..50ce767 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/ISysNoticeService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/ISysNoticeService.java @@ -46,30 +46,31 @@ public interface ISysNoticeService extends IService { /** * 获取未读的接收消息条数 + * @return Integer 数字 */ Integer countByReceiveNotRead(); /** * 获取不同类型的前三条信息 - * @return + * @return LinkedList> */ LinkedList> pageByReceive(); /** * 标记已读 - * @param id + * @param id 、 */ void read(String id); /** * 处理信息 - * @param id + * @param id 、 */ void deal(String id); /** * 批量已读 - * @param jsonObject + * @param jsonObject 、 */ void changeRead(JSONObject jsonObject); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java index a2050c8..0f58aa0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java @@ -161,7 +161,6 @@ public class SysNoticeServiceImpl extends ServiceImpl sysNotices = sysNoticeMapper.selectList(new LambdaQueryWrapper() .eq(SysNotice::getNotice_title, title) diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/ISysDataPermissionService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/ISysDataPermissionService.java index 58bf417..cbe544a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/ISysDataPermissionService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/ISysDataPermissionService.java @@ -33,34 +33,39 @@ public interface ISysDataPermissionService extends IService { /** * 新增数据权限 - * @param dto + * @param permission 实体类 */ void create(SysDataPermission permission); /** * 修改 - * @param permission + * @param permission 实体类 */ void update(SysDataPermission permission); /** * 批量删除 - * @param ids + * @param ids 唯一id */ void deleteAll(Set ids); /** - * - * @return + * 获取类型 + * @return List */ List getDataScopeType(); /** * 获取数据权限下拉框 - * @return + * @return List */ List getDataPermissionOption(); + /** + * 获取所有数据 + * @param id 标识 + * @return List 实体类集合 + */ List getDataShow(String id); /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/dao/mapper/SysDataPermissionMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/dao/mapper/SysDataPermissionMapper.java index 0312e64..aa721d1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/dao/mapper/SysDataPermissionMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/dao/mapper/SysDataPermissionMapper.java @@ -17,15 +17,45 @@ import java.util.List; */ public interface SysDataPermissionMapper extends BaseMapper { + /** + * 查询 + * @param userId 、 + * @param permissionScopeType 、 + * @return List + */ List findDataScopeUserIdBySelfUserIdAndScopeType(String userId, String permissionScopeType); + /** + * 查询 + * @param userId 、 + * @param permissionScopeType 、 + * @return List + */ List findDataScopeDeptIdBySelfUserIdAndScopeType(String userId, String permissionScopeType); + /** + * 删除 + * @param userId 标识 + */ void deleteScopeBySelfUserId(String userId); + /** + * 插入 + * @param dataScope 、 + */ void insertDataScope(@Param("dataScope") SysDataScope dataScope); + /** + * 插入 + * @param dataScope 、 + */ void insertDataScopes(@Param("dataScope") SysDataScope dataScope); + /** + * 获取明细 + * @param selfUserId 、 + * @param permissionScopeType 、 + * @return List + */ List getDataDetail(String selfUserId, String permissionScopeType); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/dto/DataScopeEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/dto/DataScopeEnum.java index 9cd2300..12c1521 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/dto/DataScopeEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/dto/DataScopeEnum.java @@ -12,8 +12,11 @@ import lombok.Getter; @AllArgsConstructor public enum DataScopeEnum { + // 用户数据权限 USER("user", "用户数据权限"), + // 部门数据权限 DEPT("dept", "部门数据权限"), + // 自身数据权限 SELF("self", "自身数据权限"); private final String code; private final String name; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/impl/SysDataPermissionServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/impl/SysDataPermissionServiceImpl.java index 336bddc..fa6cf1d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/impl/SysDataPermissionServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/permission/impl/SysDataPermissionServiceImpl.java @@ -142,7 +142,8 @@ public class SysDataPermissionServiceImpl extends ServiceImpl { */ void deleteJob(Set ids); + /** + * 执行任务 + * @param tasks 标识 + * @throws InterruptedException + */ void executionSubJob(String[] tasks) throws InterruptedException; /** * 查找已启动的任务 - * @return + * @return List */ List findByIsPauseIsFalse(); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/JobRunner.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/JobRunner.java index a712005..8c3328d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/JobRunner.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/JobRunner.java @@ -13,6 +13,14 @@ import org.springframework.stereotype.Component; import java.util.List; +/** + *

+ * 项目启动时重新激活启用的定时任务 + *

+ * + * @author generator + * @since 2023-11-16 + */ @Component @RequiredArgsConstructor @Order(100) @@ -28,9 +36,5 @@ public class JobRunner implements ApplicationRunner { */ @Override public void run(ApplicationArguments applicationArguments) { - log.info("--------------------注入定时任务---------------------"); -// List quartzJobs = quartzJobService.findByIsPauseIsFalse(); -// quartzJobs.forEach(quartzManage::addJob); - log.info("--------------------定时任务注入完成---------------------"); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearInteractionData.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearInteractionData.java index 6d8b526..c4c49a5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearInteractionData.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearInteractionData.java @@ -22,7 +22,6 @@ public class AutoClearInteractionData { public void run(){ Param max_rows_to_keep = paramService.findByCode("max_rows_to_keep"); Param max_rows_to_delete = paramService.findByCode("max_rows_to_delete"); -// recordService.deleteByDay(interactionDay.getValue()); recordService.deleteByRows(max_rows_to_keep, max_rows_to_delete); log.info("run 执行成功"); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearLuceneData.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearLuceneData.java index 65ce2b2..c4c0c43 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearLuceneData.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearLuceneData.java @@ -37,7 +37,8 @@ public class AutoClearLuceneData { // 获取时间戳 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); Date date = dateFormat.parse(String.valueOf(sevenDaysAgo)); - long unixTimestamp = date.getTime(); // 获取Unix时间戳 + // 获取Unix时间戳 + long unixTimestamp = date.getTime(); Query query = LongPoint.newRangeQuery("time", 0L, unixTimestamp); writer.deleteDocuments(query); writer.commit(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/dao/RedisKeyDefine.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/dao/RedisKeyDefine.java index 55f7fbb..5312027 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/dao/RedisKeyDefine.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/dao/RedisKeyDefine.java @@ -18,7 +18,7 @@ public class RedisKeyDefine { @Getter @AllArgsConstructor public enum KeyTypeEnum { - + // STRING("String"), LIST("List"), HASH("Hash"), @@ -38,10 +38,12 @@ public class RedisKeyDefine { @Getter @AllArgsConstructor public enum TimeoutTypeEnum { - - FOREVER(1), // 永不超时 - DYNAMIC(2), // 动态超时 - FIXED(3); // 固定超时 + // 永不超时 + FOREVER(1), + // 动态超时 + DYNAMIC(2), + // 固定超时 + FIXED(3); /** * 类型 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/dao/RedisKeyRegistry.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/dao/RedisKeyRegistry.java index 3b45c1d..38618a6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/dao/RedisKeyRegistry.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/dao/RedisKeyRegistry.java @@ -12,17 +12,17 @@ public class RedisKeyRegistry { /** * Redis RedisKeyDefine 数组 */ - private static final List defines = new ArrayList<>(); + private static final List DE_FINES = new ArrayList<>(); public static void add(RedisKeyDefine define) { - defines.add(define); + DE_FINES.add(define); } public static List list() { - return defines; + return DE_FINES; } public static int size() { - return defines.size(); + return DE_FINES.size(); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/impl/RedisServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/impl/RedisServiceImpl.java index 3f681ef..da31d72 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/impl/RedisServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/redis/impl/RedisServiceImpl.java @@ -35,7 +35,8 @@ public class RedisServiceImpl implements RedisService { Long dbSize = stringRedisTemplate.execute(RedisServerCommands::dbSize); Properties commandStats = stringRedisTemplate.execute(( RedisCallback) connection -> connection.info("commandstats")); - assert commandStats != null; // 断言,避免警告 + // 断言,避免警告 + assert commandStats != null; // 拼接结果返回 // 转成实体 JSONObject json = new JSONObject(); @@ -45,9 +46,7 @@ public class RedisServiceImpl implements RedisService { @Override public JSONObject getKeyDefineList() { -// List keyDefines = RedisKeyRegistry.list(); JSONObject json = new JSONObject(); -// json.put("info", RedisConvert.INSTANCE.convertList(keyDefines)); return json; } @@ -60,9 +59,12 @@ public class RedisServiceImpl implements RedisService { while ( it.hasNext() ) { String key = it.next(); JSONObject redis = new JSONObject(); - DataType dataType = stringRedisTemplate.type(key); // 数据类型 - String s = stringRedisTemplate.opsForValue().get(key); // 获取值 - Long expire = stringRedisTemplate.getExpire(key); // 获取剩余时间 + // 数据类型 + DataType dataType = stringRedisTemplate.type(key); + // 获取值 + String s = stringRedisTemplate.opsForValue().get(key); + // 获取剩余时间 + Long expire = stringRedisTemplate.getExpire(key); redis.put("dataType", dataType); redis.put("key", key); redis.put("value", s); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/ISysRoleService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/ISysRoleService.java index 4570764..9ad24b9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/ISysRoleService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/ISysRoleService.java @@ -20,6 +20,12 @@ import java.util.Set; */ public interface ISysRoleService extends IService { + /** + * 分页查询 + * @param param 查询条件 + * @param page 分页工具 + * @return IPage 实体类集合 + */ IPage query(Map param, PageQuery page); /** @@ -60,5 +66,10 @@ public interface ISysRoleService extends IService { * @param deptIds */ void saveUserRoleRelation(String UserId, List deptIds); + + /** + * 删除 + * @param UserId 标识 + */ void delUserRoleRelation(String UserId); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.java index 0832339..dd106db 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/dao/mapper/SysRoleMapper.java @@ -17,11 +17,30 @@ import java.util.List; */ public interface SysRoleMapper extends BaseMapper { + /** + * 保存路由 + * @param UserId / + * @param roles / + */ void saveRoleRelation(@Param("user") String UserId, @Param("roles") Collection roles); + + /** + * 删除路由 + * @param UserId / + */ void delRoleRelation(@Param("user") String UserId); + /** + * 删除菜单 + * @param ids / + */ void deleteRoleMenuBatchRoleIds(Collection ids); + /** + * 查询菜单 + * @param roleId / + * @return List + */ List selectMenuIdsByRoles(String roleId); /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java index 4ace7f6..e86d31c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java @@ -140,8 +140,8 @@ public class OnlineUserService { if (ObjectUtil.isNotEmpty(one)) { redisUtils.del("oline-" + one.getUsername()); } - // 下线 - StpUtil.logoutByTokenValue(key.getKey()); // 通过token强退 + // 通过token强退 + StpUtil.logoutByTokenValue(key.getKey()); } /** @@ -150,8 +150,8 @@ public class OnlineUserService { */ public void kickOut(String key) { redisUtils.del(key); - // 下线 - StpUtil.logoutByTokenValue(key); // 通过token强退 + // 通过token强退 + StpUtil.logoutByTokenValue(key); } /** @@ -246,10 +246,15 @@ public class OnlineUserService { if (StrUtil.isEmpty(authUser.getCode()) || !authUser.getCode().equalsIgnoreCase(code)) { throw new BadRequestException(LangProcess.msg("login_CodeError")); } - // 校验数据库 - // 根据用户名查询,在比对密码 + + /* + * 校验数据库 + * username:根据用户名查询,在比对密码 + * SaSecureUtil.md5BySalt(password, "salt"): 这里需要密码加密 + */ + String salt = "salt"; SysUser userInfo = sysUserService.getOne(new QueryWrapper().eq("username",authUser.getUsername())); - if (userInfo == null||!userInfo.getPassword().equals(SaSecureUtil.md5BySalt(password, "salt"))) { // 这里需要密码加密 + if (userInfo == null||!userInfo.getPassword().equals(SaSecureUtil.md5BySalt(password, salt))) { throw new BadRequestException(LangProcess.msg("login_pwd")); } @@ -269,10 +274,14 @@ public class OnlineUserService { user.setUser(userInfo); user.setPermissions(permissionList); - // SaLoginModel 配置登录相关参数 + /* + * SaLoginModel 配置登录相关参数 + * PC: 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 + * loginInfo: Token挂载的扩展参数 (此方法只有在集成jwt插件时才会生效) + */ StpUtil.login(userInfo.getUser_id(), new SaLoginModel() - .setDevice("PC") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 - .setExtra("loginInfo", user) // Token挂载的扩展参数 (此方法只有在集成jwt插件时才会生效) + .setDevice("PC") + .setExtra("loginInfo", user) ); // 返回 token 与 用户信息 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/tools/IToolLocalStorageService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/tools/IToolLocalStorageService.java index 200b222..2c428a3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/tools/IToolLocalStorageService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/tools/IToolLocalStorageService.java @@ -20,6 +20,12 @@ import java.util.Set; */ public interface IToolLocalStorageService extends IService { + /** + * 分页查询 + * @param criteria 查询条件 + * @param pageable 分页工具 + * @return IPage + */ IPage queryAll(ToolLocalStorageQuery criteria, PageQuery pageable); /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/ISysUserService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/ISysUserService.java index 26ebead..3c76802 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/ISysUserService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/ISysUserService.java @@ -21,20 +21,63 @@ import java.util.Map; */ public interface ISysUserService extends IService { + /** + * 是否启用 + * @param avatar 、 + * @return Map + */ Map updateAvatar(MultipartFile avatar); + /** + * 分页查询 + * @param query 查询条件 + * @param pageQuery 分页工具 + * @return List 实体类集合 + */ List getUserDetail(UserQuery query, PageQuery pageQuery); + /** + * 创建 + * @param userDetail 实体类 + */ void create(Map userDetail); + /** + * 修改 + * @param userDetail 实体类 + */ void update(Map userDetail); + /** + * 根据permissionId查询 + * @param permissionId 查询条件 + * @return List 实体类集合 + */ List getUserDataPermissionByPermissionId(String permissionId); + + /** + * 根据userId 查找 + * @param userId 条件 + * @return List 实体类集合 + */ List getUserDataPermissionByUserId(String userId); + /** + * 根据id删除 + * @param userId 条件 + */ void deleteDataPermissionById(String userId); + /** + * 创建 + * @param userDataPermissionDto 实体类 + */ void insertDataPermission(UserDataPermissionDto userDataPermissionDto); + /** + * 根据deptId获取 + * @param deptId 部门id + * @return List + */ List getUserIdByDeptId(String deptId); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dao/mapper/SysUserMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dao/mapper/SysUserMapper.java index 032de9e..2effc52 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dao/mapper/SysUserMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dao/mapper/SysUserMapper.java @@ -22,17 +22,52 @@ import java.util.Map; */ public interface SysUserMapper extends BaseMapper { + /** + * 分页查询 + * @param query 查询条件 + * @param page 分页工具 + * @return List 实体类集合 + */ List getUserDetail(@Param("query") UserQuery query, @Param("page")PageQuery page); + /** + * 分页查询 + * @param query 查询条件 + * @param page 分页工具 + * @return List> + */ List> getDetailForMap(@Param("query") UserQuery query, @Param("page")PageQuery page); + /** + * 根据permissionId查询 + * @param permissionId 、 + * @return List 实体类集合 + */ List getUserDataPermissionByPermissionId(String permissionId); + /** + * 根据userId查询 + * @param userId / + * @return List 实体类集合 + */ List getUserDataPermissionByUserId(String userId); + /** + * 根据id删除 + * @param userId / + */ void deleteDataPermissionById(String userId); + /** + * 插入 + * @param dataPermission 实体类 + */ void insertDataPermission(@Param("dataPermission") UserDataPermissionDto dataPermission); + /** + * 根据部门id查询 + * @param deptId 部门id + * @return List + */ List getUserIdByDeptId(String deptId); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dto/SysUserDetail.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dto/SysUserDetail.java index fe219e3..5ec1c0b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dto/SysUserDetail.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dto/SysUserDetail.java @@ -1,6 +1,5 @@ package org.nl.system.service.user.dto; -import cn.hutool.core.util.IdUtil; import lombok.Data; import org.nl.system.service.dept.dao.SysDept; import org.nl.system.service.role.dao.SysRole; @@ -8,7 +7,8 @@ import org.nl.system.service.user.dao.SysUser; import java.util.List; -/* +/** + * s * @author ZZQ * @Date 2022/12/16 10:02 上午 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dto/UserQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dto/UserQuery.java index b344dfd..1d5dbc0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dto/UserQuery.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dto/UserQuery.java @@ -6,7 +6,8 @@ import org.nl.common.domain.query.QParam; import org.nl.common.enums.QueryTEnum; import org.nl.system.service.user.dao.SysUser; -/* +/** + * 条件 * @author ZZQ * @Date 2022/12/15 9:53 上午 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/impl/ISysUserServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/impl/ISysUserServiceImpl.java index 35bf732..9f025f6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/impl/ISysUserServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/impl/ISysUserServiceImpl.java @@ -97,7 +97,7 @@ public class ISysUserServiceImpl extends ServiceImpl imp } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void update(Map userDetail) { if(CollectionUtils.isEmpty(userDetail) || ObjectUtil.isEmpty(userDetail.get("user_id"))){ return; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/LanguageTest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/LanguageTest.java deleted file mode 100644 index 64ea24e..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/LanguageTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.nl.wms; - -/* - * @author ZZQ - * @Date 2023/11/13 10:10 - */ - -import cn.dev33.satoken.annotation.SaIgnore; -import org.nl.config.language.LangProcess; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequestMapping("/api/langest") -public class LanguageTest { - - @GetMapping("/code") - @SaIgnore - public String language(String code){ - return LangProcess.msg(code,""); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/controller/MdBaseClassstandardController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/controller/MdBaseClassstandardController.java index 9b8acf9..aa98321 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/controller/MdBaseClassstandardController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/controller/MdBaseClassstandardController.java @@ -34,7 +34,6 @@ public class MdBaseClassstandardController { @GetMapping @Log("查询基础分类") @ApiOperation("查询基础分类") - //@SaCheckPermission("@el.check('mdBaseClassstandard:list')") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(mdBaseClassstandardService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -42,7 +41,6 @@ public class MdBaseClassstandardController { @PostMapping @Log("新增基础分类") @ApiOperation("新增基础分类") - //@SaCheckPermission("@el.check('mdBaseClassstandard:add')") public ResponseEntity create(@Validated @RequestBody MdBaseClassstandard entity){ mdBaseClassstandardService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -51,7 +49,6 @@ public class MdBaseClassstandardController { @PutMapping @Log("修改基础分类") @ApiOperation("修改基础分类") - //@SaCheckPermission("@el.check('mdBaseClassstandard:edit')") public ResponseEntity update(@Validated @RequestBody MdBaseClassstandard entity){ mdBaseClassstandardService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -59,7 +56,6 @@ public class MdBaseClassstandardController { @Log("删除基础分类") @ApiOperation("删除基础分类") - //@SaCheckPermission("@el.check('mdBaseClassstandard:del')") @DeleteMapping public ResponseEntity delete(@RequestBody List ids) { mdBaseClassstandardService.deleteAll(ids); @@ -76,14 +72,12 @@ public class MdBaseClassstandardController { @GetMapping("/loadClass") @Log("查询基础类型") @ApiOperation("查询基础类型") - //@PreAuthorize("@el.check('materialtype:list')") public ResponseEntity query(@RequestParam Map whereJson) { return new ResponseEntity<>(mdBaseClassstandardService.loadClass(whereJson), HttpStatus.OK); } @ApiOperation("查询类别:根据ID获取同级与上级数据") @PostMapping("/superior") - //@PreAuthorize("@el.check('user:list','dept:list')") public ResponseEntity getSuperior(@RequestBody String id) { MdBaseClassstandard classstandard = mdBaseClassstandardService.getById(id); ArrayList list = mdBaseClassstandardService.getSuperior(classstandard, new ArrayList<>()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/IMdBaseClassstandardService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/IMdBaseClassstandardService.java index 7081151..5779f4c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/IMdBaseClassstandardService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/IMdBaseClassstandardService.java @@ -56,7 +56,7 @@ public interface IMdBaseClassstandardService extends IService loadClass(Map whereJson); /** - * + * 获取父级树 * @param classstandard * @param objects * @return diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/impl/MdBaseClassstandardServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/impl/MdBaseClassstandardServiceImpl.java index 6480312..49f05d7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/impl/MdBaseClassstandardServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/impl/MdBaseClassstandardServiceImpl.java @@ -16,6 +16,7 @@ import org.nl.wms.database.classification.service.IMdBaseClassstandardService; import org.nl.wms.database.classification.service.dao.MdBaseClassstandard; import org.nl.wms.database.classification.service.dao.mapper.MdBaseClassstandardMapper; import org.nl.wms.database.classification.service.dto.MdBaseClassstandardTrees; +import org.nl.wms.storage_manage.ios.enums.IOSEnum; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,14 +52,14 @@ public class MdBaseClassstandardServiceImpl extends ServiceImpl pages = new Page<>(page.getPage() + 1, page.getSize()); mdBaseClassstandardMapper.selectPage(pages, lam); pages.getRecords().forEach(classstandard -> { - classstandard.setIs_leaf(!(classstandard.getSub_count() > 0)); + classstandard.setIs_leaf((classstandard.getSub_count() <= 0)); classstandard.setHasChildren(classstandard.getSub_count() > 0); }); return pages; } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void create(MdBaseClassstandard entity) { // 判断是否存在 MdBaseClassstandard mdBaseClassstandard = mdBaseClassstandardMapper @@ -85,7 +86,7 @@ public class MdBaseClassstandardServiceImpl extends ServiceImpl() @@ -174,7 +176,7 @@ public class MdBaseClassstandardServiceImpl extends ServiceImpl classstandardList = mdBaseClassstandardMapper.selectList(lam); classstandardList.forEach(classstandard -> { classstandard.setHasChildren(classstandard.getSub_count() > 0); - classstandard.setLeaf(!(classstandard.getSub_count() > 0)); + classstandard.setLeaf((classstandard.getSub_count() <= 0)); classstandard.setId(classstandard.getClass_id()); classstandard.setLabel(classstandard.getClass_name()); }); @@ -190,7 +192,7 @@ public class MdBaseClassstandardServiceImpl extends ServiceImpl getSuperior(MdBaseClassstandard classstandard, ArrayList res) { - if (ObjectUtil.isEmpty(classstandard.getParent_class_id()) || classstandard.getParent_class_id().equals("0")) { + if (ObjectUtil.isEmpty(classstandard.getParent_class_id()) || classstandard.getParent_class_id().equals(IOSEnum.IS_NOTANDYES.code("否"))) { // 父类id为空或者是0就是顶级类别 List classstandardList = mdBaseClassstandardMapper .selectList(new LambdaQueryWrapper() @@ -215,10 +217,11 @@ public class MdBaseClassstandardServiceImpl extends ServiceImpl { classstandard.setId(classstandard.getClass_id()); classstandard.setLabel(classstandard.getClass_name()); - classstandard.setLeaf(!(classstandard.getSub_count() > 0)); + classstandard.setLeaf((classstandard.getSub_count() <= 0)); classstandard.setHasChildren(classstandard.getSub_count() > 0); }); - List trees = new ArrayList<>(); // 待返回数据 + // 待返回数据 + List trees = new ArrayList<>(); for (MdBaseClassstandard mdBaseClassstandard : list) { // 筛选父类的值 if (ObjectUtil.isEmpty(mdBaseClassstandard.getParent_class_id()) diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/controller/MdBaseMaterialController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/controller/MdBaseMaterialController.java index 39695a0..a0c7e42 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/controller/MdBaseMaterialController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/controller/MdBaseMaterialController.java @@ -36,7 +36,6 @@ public class MdBaseMaterialController { @GetMapping @Log("查询物料基础信息") @ApiOperation("查询物料基础信息") - //@SaCheckPermission("@el.check('mdBaseMaterial:list')") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(mdBaseMaterialService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -44,7 +43,6 @@ public class MdBaseMaterialController { @PostMapping @Log("新增物料基础信息") @ApiOperation("新增物料基础信息") - //@SaCheckPermission("@el.check('mdBaseMaterial:add')") public ResponseEntity create(@Validated @RequestBody MdBaseMaterial entity){ mdBaseMaterialService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -53,7 +51,6 @@ public class MdBaseMaterialController { @PutMapping @Log("修改物料基础信息") @ApiOperation("修改物料基础信息") - //@SaCheckPermission("@el.check('mdBaseMaterial:edit')") public ResponseEntity update(@Validated @RequestBody MdBaseMaterial entity){ mdBaseMaterialService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -61,7 +58,6 @@ public class MdBaseMaterialController { @Log("删除物料基础信息") @ApiOperation("删除物料基础信息") - //@SaCheckPermission("@el.check('mdBaseMaterial:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { mdBaseMaterialService.deleteAll(ids); @@ -72,7 +68,6 @@ public class MdBaseMaterialController { @Log("物料同步") @ApiOperation("物料同步") @Limit(period = 1, count = 1) - //@SaCheckPermission("materialtype:list") public ResponseEntity synchronize(@RequestBody Map whereJson) { return new ResponseEntity<>(HttpStatus.OK); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/IMdBaseMaterialService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/IMdBaseMaterialService.java index 35eac06..f142f66 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/IMdBaseMaterialService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/IMdBaseMaterialService.java @@ -43,6 +43,11 @@ public interface IMdBaseMaterialService extends IService { */ void deleteAll(Set ids); + /** + * 根据code查找 + * @param materialCode + * @return MdBaseMaterial + */ MdBaseMaterial findByCode(String materialCode); /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java index 71fb2e2..40b14f7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java @@ -3,7 +3,6 @@ package org.nl.wms.database.material.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -18,15 +17,12 @@ import org.nl.wms.database.material.service.IMdBaseMaterialService; import org.nl.wms.database.material.service.dao.MdBaseMaterial; import org.nl.wms.database.material.service.dao.mapper.MdBaseMaterialMapper; import org.nl.wms.database.material.service.dto.MdBaseMaterialQuery; -import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.Consumer; /** @@ -40,8 +36,6 @@ public class MdBaseMaterialServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page){ @@ -85,8 +79,9 @@ public class MdBaseMaterialServiceImpl extends ServiceImpl query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(mdBaseVehicleService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -40,7 +39,6 @@ public class MdBaseVehicleController { @PostMapping @Log("新增载具维护") @ApiOperation("新增载具维护") - //@SaCheckPermission("@el.check('mdBaseVehicle:add')") public ResponseEntity create(@Validated @RequestBody MdBaseVehicle entity){ mdBaseVehicleService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -49,7 +47,6 @@ public class MdBaseVehicleController { @PutMapping @Log("修改载具维护") @ApiOperation("修改载具维护") - //@SaCheckPermission("@el.check('mdBaseVehicle:edit')") public ResponseEntity update(@Validated @RequestBody MdBaseVehicle entity){ mdBaseVehicleService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -57,7 +54,6 @@ public class MdBaseVehicleController { @Log("删除载具维护") @ApiOperation("删除载具维护") - //@SaCheckPermission("@el.check('mdBaseVehicle:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { mdBaseVehicleService.deleteAll(ids); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/impl/MdBaseVehicleServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/impl/MdBaseVehicleServiceImpl.java index 221287c..2839a55 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/impl/MdBaseVehicleServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/impl/MdBaseVehicleServiceImpl.java @@ -64,8 +64,9 @@ public class MdBaseVehicleServiceImpl extends ServiceImpl query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(mdBaseWorkshopService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -40,7 +39,6 @@ public class MdBaseWorkshopController { @PostMapping @Log("新增车间基础信息") @ApiOperation("新增车间基础信息") - //@SaCheckPermission("@el.check('mdBaseWorkshop:add')") public ResponseEntity create(@Validated @RequestBody MdBaseWorkshop entity){ mdBaseWorkshopService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -49,7 +47,6 @@ public class MdBaseWorkshopController { @PutMapping @Log("修改车间基础信息") @ApiOperation("修改车间基础信息") - //@SaCheckPermission("@el.check('mdBaseWorkshop:edit')") public ResponseEntity update(@Validated @RequestBody MdBaseWorkshop entity){ mdBaseWorkshopService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -57,7 +54,6 @@ public class MdBaseWorkshopController { @Log("删除车间基础信息") @ApiOperation("删除车间基础信息") - //@SaCheckPermission("@el.check('mdBaseWorkshop:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { mdBaseWorkshopService.deleteAll(ids); @@ -67,7 +63,6 @@ public class MdBaseWorkshopController { @GetMapping("/getWorkShopList") @Log("获取车间下拉框") @ApiOperation("获取车间下拉框") - //@SaCheckPermission("@el.check('mdBaseWorkshop:list')") public ResponseEntity getWorkShopList(){ return new ResponseEntity<>(mdBaseWorkshopService.getWorkShopList(),HttpStatus.OK); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index a15ead9..298a9da 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -10,10 +10,24 @@ import org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest; * @Date: 2023/6/26 */ public interface AcsToWmsService { - /** ACS请求接口 */ + /** + * ACS请求接口 + * @param param + * @return BaseResponse + */ BaseResponse acsApply(JSONObject param); - /** 任务反馈 */ + + /** + * 任务反馈 + * @param param + * @return BaseResponse + */ BaseResponse feedbackTaskStatus(JSONObject param); - /** 实时修改点位状态 */ + + /** + * 实时修改点位状态 + * @param param + * @return BaseResponse + */ BaseResponse realTimeSetPoint(JSONObject param); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseRequest.java index ee50697..5988882 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseRequest.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseRequest.java @@ -8,7 +8,12 @@ import java.util.HashMap; import java.util.Map; /** + *

* ACS请求基础实体 + *

+ * + * @author generator + * @since 2023-11-16 */ @Data public class BaseRequest { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseResponse.java index ff85990..9c0826c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseResponse.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseResponse.java @@ -11,6 +11,14 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Map; +/** + *

+ * 返回参数 + *

+ * + * @author generator + * @since 2023-11-16 + */ @Data @Builder @NoArgsConstructor diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/ApplyTaskRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/ApplyTaskRequest.java index 8098ee7..dba6e00 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/ApplyTaskRequest.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/ApplyTaskRequest.java @@ -4,7 +4,12 @@ import lombok.Data; import org.nl.wms.ext.acs.service.dto.to.BaseRequest; /** + *

* ACS 任务申请请求实体 + *

+ * + * @author generator + * @since 2023-11-16 */ @Data public class ApplyTaskRequest extends BaseRequest { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/FeedBackTaskStatusRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/FeedBackTaskStatusRequest.java index bf737e5..3d77437 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/FeedBackTaskStatusRequest.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/FeedBackTaskStatusRequest.java @@ -4,7 +4,12 @@ import lombok.Data; import org.nl.wms.ext.acs.service.dto.to.BaseRequest; /** + *

* ACS任务反馈请求实体 + *

+ * + * @author generator + * @since 2023-11-16 */ @Data public class FeedBackTaskStatusRequest extends BaseRequest { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index da34641..bb48fd3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -1,7 +1,5 @@ package org.nl.wms.ext.acs.service.impl; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpStatus; @@ -11,21 +9,10 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.language.LangProcess; import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.database.material.service.IMdBaseMaterialService; import org.nl.wms.ext.acs.service.AcsToWmsService; import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.acs.service.dto.to.wms.FeedBackTaskStatusRequest; -import org.nl.wms.ext.mes.service.WmsToMesService; import org.nl.wms.ext.record.service.ISysInteractRecordService; -import org.nl.wms.pdm.consumption.service.IPdmBdMudConsumptionService; -import org.nl.wms.pdm.record.service.IPdmBdRequestMaterialRecordService; -import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; -import org.nl.wms.pdm.residue.service.IPdmBdMaterialResidueService; -import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; -import org.nl.wms.pdm.vehiclebiding.service.IPdmBdVehicleBindingService; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task_manage.AbstractTask; @@ -33,8 +20,6 @@ import org.nl.wms.sch.task_manage.GeneralDefinition; import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.task.TaskFactory; import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper; -import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -54,41 +39,23 @@ import java.util.concurrent.ConcurrentHashMap; @Service public class AcsToWmsServiceImpl implements AcsToWmsService { - // 反射类方法的缓存 + /** + * 将解析的整数与结果相乘 + */ private Map methodCache = new ConcurrentHashMap<>(); @Autowired private ISchBaseTaskService taskService; @Autowired - private ISchBasePointService pointService; - @Autowired - private IPdmBdRequestMaterialRecordService requestMaterialRecordService; - @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired private TaskFactory taskFactory; @Autowired private ISysNoticeService noticeService; @Autowired private ISysInteractRecordService interactRecordService; - @Autowired - private IMdBaseMaterialService materialService; - @Autowired - private IPdmBdProductionProcessTrackingService processTrackingService; - @Autowired - private RedissonClient redissonClient; - @Autowired - private IPdmBdMaterialResidueService materialResidueService; - @Autowired - private IPdmBdVehicleBindingService vehicleBindingService; - @Autowired - private IPdmBdMudConsumptionService mudConsumptionService; - @Autowired - private WmsToMesService wmsToMesService; - @Autowired - private FJMapper fjMapper; - // 初始化反射方法 + /** + * 初始化反射方法 + */ @PostConstruct public void initCacheMethod() { for (Method method : this.getClass().getMethods()) { @@ -104,7 +71,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String requestMethodName = param.getString("request_medthod_name"); BaseResponse result = BaseResponse.build(requestNo); try { - String requestMethodCode = param.getString("request_medthod_code"); // 获取请求方法名 + // 获取请求方法名 + String requestMethodCode = param.getString("request_medthod_code"); Method method = methodCache.get(StrUtil.toCamelCase(requestMethodCode)); if (method == null) { throw new BadRequestException(LangProcess.msg("error_isNull",requestMethodCode)); @@ -127,16 +95,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } - // todo: 特殊处理 - protected int specialHandling(String regionCode, JSONObject param) { - int torus = 0; // 无业务:0,分拣剩余0托:1 - if (regionCode.equals("FJ")) { // 判断是否够码满 - // 分拣需要在这设置特殊值 - // 校验是否够码满一托 - } - return torus; - } - /** * 提前要料 * @@ -145,24 +103,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { */ @Deprecated @Transactional(rollbackFor = Exception.class) - public BaseResponse pressRequestMaterial2(JSONObject param) { // (公共接口进来)只是给我一个下料位(中间位置) - String requestNo = param.getString("requestNo"); - // 压机、原材料物料(混碾)、压机工单、叫料时间 - String deviceCode = param.getString("device_code");// 几号压机下料位 - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - return BaseResponse.responseError(requestNo, "设备号[" + deviceCode + "]不正确!"); - } - String parentPointCode = basePoint.getParent_point_code(); - // 获取原材料物料 - PdmBdRequestMaterialRecord requestMaterialRecord = new PdmBdRequestMaterialRecord(); - requestMaterialRecord.setRecord_id(IdUtil.getSnowflake(1, 1).nextIdStr()); -// requestMaterialRecord.setMaterial_id(workOrder.getRaw_material_id()); - requestMaterialRecord.setDevice_code(parentPointCode); - requestMaterialRecord.setCreate_time(DateUtil.now()); - requestMaterialRecord.setIs_finish(false); - requestMaterialRecordService.save(requestMaterialRecord); - return BaseResponse.responseOk(requestNo); + public BaseResponse pressRequestMaterial2(JSONObject param) { + return null; } /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java deleted file mode 100644 index 7b10202..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.nl.wms.ext.mes.service.dao.mapper; - -/** - * @Author: lyd - * @Description: mes - * @Date: 2023/9/6 - */ -public interface MesRequestMapper { -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml deleted file mode 100644 index a0dab1f..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/CusterVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/CusterVo.java deleted file mode 100644 index 75ccbb9..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/CusterVo.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 客户信息 - * @Date: 2023/10/23 - */ -@Data -public class CusterVo { - private String CUSTER_NO; - private String CUSTER_NAME; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoDto.java deleted file mode 100644 index f62f4e7..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoDto.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 窑内信息 - * @Date: 2023/9/19 - */ -@Data -public class MesGdyInfoDto { - private String MSGID; - private String SEND_TM; - private String TRAY_NO; - private String FPRODUCT_MATERIAL_ID; - private String FPRODUCT_MATERIAL_NAME; - private String FMATSPEC; - private String FMATMODEL; - private String BATCHNO; - private String PRESSUNIT; - private String PRO_NUM; - private String PRO_UNIT; - private String PRO_SUBNUM; - private String PRO_SUBUNIT; - private String FCONVERTRATE; - private String STOCK; - private String DEVICE; - private String DEVICEUNITPOST; - private String IN_DATE; - private String PREOUT_DATE; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoWaitDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoWaitDto.java deleted file mode 100644 index a0f67a0..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoWaitDto.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 带入窑实体 - * @Date: 2023/9/22 - * 二维码 - * 发送时间 - * 托盘编号 - * 物料编码 - * 物料名称 - * 规格 - * 型号 - * 批次号 - * 压机号 - * 重量 - * 重量单位 - * 数量 - * 数量单位 - * 单位转换率 - * 写入时间 - * 读取标志,0未读取,1已读取 - * 读取时间 - */ -@Data -public class MesGdyInfoWaitDto { - private String MSGID; - private String SEND_TM; - private String TRAY_NO; - private String FPRODUCT_MATERIAL_ID; - private String FPRODUCT_MATERIAL_NAME; - private String FMATSPEC; - private String FMATMODEL; - private String BATCHNO; - private String PRESSUNIT; - private String PRO_NUM; - private String PRO_UNIT; - private String PRO_SUBNUM; - private String PRO_SUBUNIT; - private String FCONVERTRATE; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyMaterialInDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyMaterialInDto.java deleted file mode 100644 index ca7e27e..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyMaterialInDto.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 入窑记录数据 - * @Date: 2023/9/14 - */ -@Data -public class MesGdyMaterialInDto { - private String MSGID; - private String TRAY_NO; - private String FPRODUCT_MATERIAL_ID; - private String FPRODUCT_MATERIAL_NAME; - private String FMATSPEC; - private String FMATMODE; - private String BATCHNO; - private String PRESSUNIT; - private String PRO_NUM; - private String PRO_UNIT; - private String PRO_SUBNUM; - private String PRO_SUBUNIT; - private String FCONVERTRATE; - private String STOCK; - private String DEVICE; - private String DEVICEUNITPOST; - private String IN_DATE; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyMaterialOutDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyMaterialOutDto.java deleted file mode 100644 index c4db25c..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyMaterialOutDto.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 出窑记录 - * @Date: 2023/9/14 - */ -@Data -public class MesGdyMaterialOutDto { - private String MSGID; - private String TRAY_NO; - private String FPRODUCT_MATERIAL_ID; - private String FPRODUCT_MATERIAL_NAME; - private String FMATSPEC; - private String FMATMODEL; - private String BATCHNO; - private String PRESSUNIT; - private String PRO_NUM; - private String PRO_UNIT; - private String PRO_SUBNUM; - private String PRO_SUBUNIT; - private String FCONVERTRATE; - private String STOCK; - private String DEVICE; - private String DEVICEUNITPOST; - private String OUT_DATE; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java deleted file mode 100644 index 0ba0c69..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * @Author: lyd - * @Description: 泥料消耗记录 - * @Date: 2023/9/11 - */ -@Data -public class MesMudConsumptionDto implements Serializable { - // 唯一标识 - private String MSGID; - /** 压机作业计划号 */ - private String PWORKSCHE_ID; - /** */ - private String FWORKSCHE_ID; - private String FPROBATCH; - private String FBAGCODE; - /** 泥料仓库编号 */ - private String LOGT; - /** 出库数量 */ - private BigDecimal OUT_NUMBER; - /** 出库重量 */ - private BigDecimal OUT_FINNUM; - /** 出库理论重量 */ - private BigDecimal OUT_THEONUM; - private String PRESSUNIT; - private String SENDTIM; - private String SENDER; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesOrderInfo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesOrderInfo.java deleted file mode 100644 index c0028cc..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesOrderInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: mes的订单信息DTO - * @Date: 2023/10/23 - */ -@Data -public class MesOrderInfo { - /** - * 订单号 - */ - private String FORDER_NO; - private String FPLANSTART_DATE; - private String FPLANFINISH_DATE; - private String FMATERIAL_ID; - private String FMATERIAL_NAME; - private String FMATSPEC; - private String FMATMODEL; - private String FSALE_NO; - private int FORDER_SUBNUM; - private String BC; - private String BZ; - private int GUADANSUM; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesProductDataDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesProductDataDto.java deleted file mode 100644 index a4f8d31..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesProductDataDto.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * @Author: lyd - * @Description: 压机产出数据 - * @Date: 2023/9/12 - */ -@Data -public class MesProductDataDto implements Serializable { - private String MSGID; - private String FORDER_NO; - private String PWORKSCHE_ID; - private String FSCHEDULE_ID; - private String FPRODUCT_MATERIAL_ID; - private String FPRODUCT_MATERIAL_NAME; - private String FMATSPEC; - private String FMATMODEL; - private String BATCHNO; - private String PRESSUNIT; - private String FTEAM; - private String TRAY_NO; - /** 重量 */ - private BigDecimal PRO_NUM; - /** 重量单位 */ - private String PRO_UNIT; - /** 数量 */ - private BigDecimal PRO_SUBNUM; - private String PRO_SUBUNIT; - private BigDecimal FP_SUBUNIT; - private String FP_REASON; - private String FP_JJFLAG; - private String FP_JJMATERIAL_ID; - private BigDecimal LDLNUM; - private String CHECKERIN; - private String CHECKERIN_TIM; - private String PRODATE; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesQSPressMonitorData.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesQSPressMonitorData.java deleted file mode 100644 index 6023b7f..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesQSPressMonitorData.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 压机检测数据 - * @Date: 2023/10/11 - * 唯一标识 - * 当前抓取工位 - * 当前放置工位 - * 是否合格 - * 激光标刻码 - * 重量 - * 高度1 - * 高度2 - * 高度3 - * 高度4 - * 宽度1 - * 宽度2 - * 长度 - * 体积 - * 平面度 - * 缺陷个数 - * 工单标识 - * 写入时间 - * 读取标志,0未读取,1已读取 - * 读取时间 - */ -@Data -public class MesQSPressMonitorData { - private String BRICK_ID; - private String GET_STATION; - private String PUT_STATION; - private Boolean IS_QUALIFIED; - private String LASER_MARKING_CODE; - private String WEIGHT; - private String HEIGHT1; - private String HEIGHT2; - private String HEIGHT3; - private String HEIGHT4; - private String WIDTH1; - private String WIDTH2; - private String LEN; - private String VOLUME; - private String FLATNESS; - private String UNQUALIFIED_QTY; - private String WORKORDER_CODE; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - private String MATERIAL_ID; - private String MATERIAL_NAME; - private String MATERIAL_SPEC; - private String MATERIAL_MODEL; - private String MACHINE_WET; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfo.java deleted file mode 100644 index 13d4325..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfo.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 滚筒线内 - * @Date: 2023/9/19 - */ -@Data -public class MesSemiProductionInfo { - private String MSGID; - private String SEND_TM; - private String BATCHNO; - private String ORDER_NO; - private String STOCK_NUM; - private String STOCK_UNIT; - private String STOCK_SUBNUM; - private String STOCK_SUBUNIT; - private String MATERIAL_ID; - private String MATERIAL_NAME; - private String PROSPEC; - private String PROMODEL; - private String PRODATE; - private String STOCK; - private String STOCK_NAME; - private String PRESSUNIT; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfoInDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfoInDto.java deleted file mode 100644 index 06bcbd5..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfoInDto.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * @Author: lyd - * @Description: PMS接收半成品入库信息 - 入滚筒线 - * @Date: 2023/9/13 - */ -@Data -public class MesSemiProductionInfoInDto { - private String MSGID; - private String FORDER_NO; - private String PWORKSCHE_ID; - private String FSCHEDULE_ID; - private String FPRODUCT_MATERIAL_ID; - private String FPRODUCT_MATERIAL_NAME; - private String FMATSPEC; - private String FMATMODEL; - private String BATCHNO; - private String PRESSUNIT; - private String FTEAM; - private String TRAY_NO; - private BigDecimal PRO_NUM; - private String PRO_UNIT; - private BigDecimal PRO_SUBNUM; - private String PRO_SUBUNIT; - private String STOCK; - private String STOCK_NAME; - private String CHECKERIN; - private String CHECKERIN_TIM; - private String PRODATE; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfoOutDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfoOutDto.java deleted file mode 100644 index 9086e41..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesSemiProductionInfoOutDto.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * @Author: lyd - * @Description: PMS接收半成品出库信息 - * @Date: 2023/9/13 - */ -@Data -public class MesSemiProductionInfoOutDto { - private String MSGID; - private String SEMIPRODUCT_BATCHNO; - private String PRODUCT_BATCHNO; - private String FPRODUCT_MATERIAL_ID; - private String FPRODUCT_MATERIAL_NAME; - private String FMATSPEC; - private String FMATMODEL; - private BigDecimal PRO_NUM; - private String PRO_UNIT; - private BigDecimal PRO_SUBNUM; - private String PRO_SUBUNIT; - private String STOCK; - private String STOCK_NAME; - private String CHECKEROUT; - private String CHECKEROUT_TIM; - private String OUTTYPE; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesShelfInfo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesShelfInfo.java deleted file mode 100644 index e9ccdcb..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesShelfInfo.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * @Author: lyd - * @Description: 三层货架信息 - * @Date: 2023/10/11 - * 唯一ID - 新生成 - * 发送时间 - 新生成 - * 仓库号 - 不录入 - * 组盘标识 - * 载具类型 - * 载具编码 - * 物料标识 - * 物料名称 - * 规格 - * 型号 - * 来源载具编码/载具的来源点位(压机) - * 货位号 - * 点位名称 - * 是否已烧制 - * 是否满托 - * 批次 - * 入库时间 - * 静置时间(分钟) - * 物料数量 - * 物料重量 - * 搬运工单编码 - * 组盘次数 - * 组盘绑定物料状态 - * 位置跟踪 - * 备注 - * 修改时间 - * 出窑时间 - * 入窑时间 - * 写入时间 - * 读取标识 - * 读取时间 - */ -@Data -public class MesShelfInfo { - private String MSGID; - private String SEND_TM; - private String LOGT; - private String GROUP_ID; - private String VEHICLE_TYPE; - private String VEHICLE_CODE; - private String MATERIAL_ID; - private String MATERIAL_NAME; - private String MATSPEC; - private String MATMODEL; - private String SOURCE_VEHICLE_CODE; - private String POINT_CODE; - private String POINT_NAME; - private Boolean IS_FIRING; - private Boolean IS_FULL; - private String PCSN; - private String INSTORAGE_TIME; - private String STANDING_TIME; - private int MATERIAL_QTY; - private BigDecimal MATERIAL_WEIGHT; - private String WORKORDER_CODE; - private String GROUP_NUMBER; - private String GROUP_BIND_MATERIAL_STATUS; - private String MOVE_WAY; - private String REMARK; - private String UPDATE_TIME; - private String OUT_KILN_TIME; - private String INTO_KILN_TIME; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesUnusedDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesUnusedDto.java deleted file mode 100644 index fdd2830..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesUnusedDto.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 机口判废 - * @Date: 2023/9/20 - * 唯一标识 - * 订单号 - * 压机计划号 - * 日计划号 - * 物料编码 - * 物料名称 - * 规格 - * 型号 - * 批次号 - * 压机号 - * 班组 - * 废品重量 - * 重量单位 - * 废品数量 - * 数量单位 - * 判废人 - * 判废日期 - * 生产日期 - * 写入时间 - * 读取标志,0未读取,1已读取 - * 读取时间 - */ -@Data -public class MesUnusedDto { - private String MSGID; - private String FORDER_NO; - private String PWORKSCHE_ID; - private String FSCHEDULE_ID; - private String FPRODUCT_MATERIAL_ID; - private String FPRODUCT_MATERIAL_NAME; - private String FMATSPEC; - private String FMATMODEL; - private String BATCHNO; - private String PRESSUNIT; - private String FTEAM; - private String FP_NUM; - private String FP_UNIT; - private String FPSUBNUM; - private String FP_SUBUNIT; - private String CHECKERIN; - private String CHECKERIN_TIM; - private String PRODATE; - private String CREATE_TM; - private String OP_FLAG; - private String OP_TM; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesWorkOrderDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesWorkOrderDto.java deleted file mode 100644 index d6cc680..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesWorkOrderDto.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.nl.wms.ext.mes.service.dto; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * @Author: lyd - * @Description: mes工单实体 - * @Date: 2023/9/9 - */ -@Data -public class MesWorkOrderDto { - /** 唯一标识 */ - private String MSGID; - /** 压机计划号 */ - private String PWORKSCHE_ID; - /** 日计划号 */ - private String FSCHEDULE_ID; - /** 生产订单号 */ - private String FORDER_NO; - /** 生产日期 */ - private String FPRODUCT_DATE; - /** 批次号 */ - private String BATCHNO; - /** 压机号 */ - private String PRESSUNIT; - /** 配料批次号 */ - private String FPROBATCH; - /** 物料编码 */ - private String FPRODUCT_MATERIAL_ID; - /** 物料名称 */ - private String FPRODUCT_MATERIAL_NAME; - /** 规格 */ - private String FMATSPEC; - /** 型号 */ - private String FMATMODEL; - /** 辅数量 */ - private BigDecimal FPRODUCT_SUBNUM; - /** 辅单位 */ - private String FPRODUCT_SUBUNIT; - /** 数量 */ - private String FPRODUCT_NUM; - /** 单位 */ - private String FPRODUCT_UNIT; - /** 重量 */ - private String FCONVERTRATE; - /** 班组 */ - private String FTEAM; - /** 开始时间 */ - private String BEGINTIME; - /** 结束时间 */ - private String ENDTIME; - /** 写入时间 */ - private String CREATE_TM; - /** 读取标志 */ - private String OP_FLAG; - /** 结果 */ - private String OP_REPLAY; - /** 读取时间 */ - private String OP_TM; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/controller/SysInteractRecordController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/controller/SysInteractRecordController.java index c1e0931..39bf47c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/controller/SysInteractRecordController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/controller/SysInteractRecordController.java @@ -32,7 +32,6 @@ public class SysInteractRecordController { @GetMapping @Log("查询外部系统接口记录") @ApiOperation("查询外部系统接口记录") - //@SaCheckPermission("@el.check('sysInteractRecord:list')") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(sysInteractRecordService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -40,7 +39,6 @@ public class SysInteractRecordController { @PostMapping @Log("新增外部系统接口记录") @ApiOperation("新增外部系统接口记录") - //@SaCheckPermission("@el.check('sysInteractRecord:add')") public ResponseEntity create(@Validated @RequestBody SysInteractRecord entity){ sysInteractRecordService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -49,7 +47,6 @@ public class SysInteractRecordController { @PutMapping @Log("修改外部系统接口记录") @ApiOperation("修改外部系统接口记录") - //@SaCheckPermission("@el.check('sysInteractRecord:edit')") public ResponseEntity update(@Validated @RequestBody SysInteractRecord entity){ sysInteractRecordService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -57,7 +54,6 @@ public class SysInteractRecordController { @Log("删除外部系统接口记录") @ApiOperation("删除外部系统接口记录") - //@SaCheckPermission("@el.check('sysInteractRecord:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { sysInteractRecordService.deleteAll(ids); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java index a556691..3c89f0d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java @@ -45,18 +45,25 @@ public interface ISysInteractRecordService extends IService { /** * 创建记录 + * @param request 、 + * @param response 、 + * @param direction 、 */ void saveRecord(Object request, BaseResponse response, String direction); /** - * - * @param name - * @param request - * @param response - * @param direction + * 保存记录 + * @param name 、 + * @param request 、 + * @param response 、 + * @param direction 、 */ void saveRecord(String name, K request, V response, String direction); + /** + * 删除 + * @param day 、 + */ void deleteByDay(String day); /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.java index a2655a4..a12a176 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.java @@ -9,7 +9,16 @@ import org.nl.wms.ext.record.service.dao.SysInteractRecord; **/ public interface SysInteractRecordMapper extends BaseMapper { + /** + * 删除 + * @param day / + */ void deleteByDay(String day); + /** + * 删除一行 + * @param maxRowsToKeep / + * @param maxRowsToDelete / + */ void deleteByRows(String maxRowsToKeep, String maxRowsToDelete); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java index 0444a73..df2fc8a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java @@ -103,25 +103,29 @@ public class SysInteractRecordServiceImpl extends ServiceImpl query(@RequestParam Map whereJson, PageQuery page){ - return new ResponseEntity<>(TableDataInfo.build(pdmBdMudConsumptionService.queryAll(whereJson,page)),HttpStatus.OK); - } - - @PostMapping - @Log("新增泥料消耗记录") - @ApiOperation("新增泥料消耗记录") - //@SaCheckPermission("@el.check('pdmBdMudConsumption:add')") - public ResponseEntity create(@Validated @RequestBody PdmBdMudConsumption entity){ - pdmBdMudConsumptionService.create(entity); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改泥料消耗记录") - @ApiOperation("修改泥料消耗记录") - //@SaCheckPermission("@el.check('pdmBdMudConsumption:edit')") - public ResponseEntity update(@Validated @RequestBody PdmBdMudConsumption entity){ - pdmBdMudConsumptionService.update(entity); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除泥料消耗记录") - @ApiOperation("删除泥料消耗记录") - //@SaCheckPermission("@el.check('pdmBdMudConsumption:del')") - @DeleteMapping - public ResponseEntity delete(@RequestBody Set ids) { - pdmBdMudConsumptionService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/IPdmBdMudConsumptionService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/IPdmBdMudConsumptionService.java deleted file mode 100644 index 6fa916b..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/IPdmBdMudConsumptionService.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.nl.wms.pdm.consumption.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.common.domain.query.PageQuery; -import com.baomidou.mybatisplus.extension.service.IService; -import org.nl.wms.pdm.consumption.service.dao.PdmBdMudConsumption; - -import java.util.Map; -import java.util.Set; - -/** -* @description 服务接口 -* @author lyd -* @date 2023-08-11 -**/ -public interface IPdmBdMudConsumptionService extends IService { - - /** - * 查询数据分页 - * @param whereJson 条件 - * @param pageable 分页参数 - * @return IPage - */ - IPage queryAll(Map whereJson, PageQuery pageable); - - /** - * 创建 - * @param entity / - */ - String create(PdmBdMudConsumption entity); - - /** - * 编辑 - * @param entity / - */ - void update(PdmBdMudConsumption entity); - - /** - * 多选删除 - * @param ids / - */ - void deleteAll(Set ids); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/PdmBdMudConsumption.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/PdmBdMudConsumption.java deleted file mode 100644 index 4c10c3b..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/PdmBdMudConsumption.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.nl.wms.pdm.consumption.service.dao; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.math.BigDecimal; -import java.io.Serializable; - -/** -* @description / -* @author lyd -* @date 2023-08-11 -**/ -@Data -@EqualsAndHashCode(callSuper = false) -@TableName("pdm_bd_mud_consumption") -public class PdmBdMudConsumption implements Serializable { - - private static final long serialVersionUID = 1L; - - @TableId(value = "record_id", type = IdType.NONE) - @ApiModelProperty(value = "记录标识") - private String record_id; - - @ApiModelProperty(value = "泥料编码") - private String raw_material_code; - - @ApiModelProperty(value = "设备编码") - private String device_code; - - @ApiModelProperty(value = "泥料重量") - private BigDecimal weight; - - @ApiModelProperty(value = "工单号") - private String workorder_code; - - @ApiModelProperty(value = "物料id") - private String material_id; - - @ApiModelProperty(value = "记录时间") - private String record_time; - - @ApiModelProperty(value = "组盘标识") - private String group_id; - - @ApiModelProperty(value = "下料位编码") - private String current_point; - - @ApiModelProperty(value = "是否读取") - private Boolean is_read; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/mapper/PdmBdMudConsumptionMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/mapper/PdmBdMudConsumptionMapper.java deleted file mode 100644 index 4e6c41e..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/mapper/PdmBdMudConsumptionMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.wms.pdm.consumption.service.dao.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.nl.wms.pdm.consumption.service.dao.PdmBdMudConsumption; - -/** -* @author lyd -* @date 2023-08-11 -**/ -public interface PdmBdMudConsumptionMapper extends BaseMapper { - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/mapper/PdmBdMudConsumptionMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/mapper/PdmBdMudConsumptionMapper.xml deleted file mode 100644 index 7ef7304..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dao/mapper/PdmBdMudConsumptionMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dto/PdmBdMudConsumptionDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dto/PdmBdMudConsumptionDto.java deleted file mode 100644 index 57cc820..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dto/PdmBdMudConsumptionDto.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.nl.wms.pdm.consumption.service.dto; - -import java.math.BigDecimal; -import lombok.Data; -import java.io.Serializable; - -/** -* @description / -* @author lyd -* @date 2023-08-11 -**/ -@Data -public class PdmBdMudConsumptionDto implements Serializable { - - /** 记录标识 */ - private String record_id; - - /** 泥料编码 */ - private String raw_material_code; - - /** 设备编码 */ - private String device_code; - - /** 泥料重量 */ - private BigDecimal weight; - - /** 工单号 */ - private String workorder_code; - - /** 物料id */ - private String material_id; - - /** 记录时间 */ - private String record_time; - - /** 组盘标识 */ - private String group_id; - - /** 下料位编码 */ - private String current_point; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dto/PdmBdMudConsumptionQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dto/PdmBdMudConsumptionQuery.java deleted file mode 100644 index 4ae6a5a..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/dto/PdmBdMudConsumptionQuery.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.wms.pdm.consumption.service.dto; - -import org.nl.common.domain.query.BaseQuery; -import org.nl.wms.pdm.consumption.service.dao.PdmBdMudConsumption; - -/** -* @author lyd -* @date 2023-08-11 -**/ -public class PdmBdMudConsumptionQuery extends BaseQuery { - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/impl/PdmBdMudConsumptionServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/impl/PdmBdMudConsumptionServiceImpl.java deleted file mode 100644 index ccb61b2..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/consumption/service/impl/PdmBdMudConsumptionServiceImpl.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.nl.wms.pdm.consumption.service.impl; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.exception.BadRequestException; -import org.nl.common.utils.SecurityUtils; -import org.nl.config.language.LangProcess; -import org.nl.wms.pdm.consumption.service.IPdmBdMudConsumptionService; -import org.nl.wms.pdm.consumption.service.dao.mapper.PdmBdMudConsumptionMapper; -import org.nl.wms.pdm.consumption.service.dao.PdmBdMudConsumption; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Map; -import java.util.Set; - -/** -* @description 服务实现 -* @author lyd -* @date 2023-08-11 -**/ -@Slf4j -@Service -public class PdmBdMudConsumptionServiceImpl extends ServiceImpl implements IPdmBdMudConsumptionService { - - @Autowired - private PdmBdMudConsumptionMapper pdmBdMudConsumptionMapper; - - @Override - public IPage queryAll(Map whereJson, PageQuery page){ - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - IPage pages = new Page<>(page.getPage() + 1, page.getSize()); - pdmBdMudConsumptionMapper.selectPage(pages, lam); - return pages; - } - - @Override - public String create(PdmBdMudConsumption entity) { - String now = DateUtil.now(); - - entity.setRecord_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - entity.setRecord_time(now); - pdmBdMudConsumptionMapper.insert(entity); - return entity.getRecord_id(); - } - - @Override - public void update(PdmBdMudConsumption entity) { - PdmBdMudConsumption dto = pdmBdMudConsumptionMapper.selectById(entity.getRecord_id()); - if (dto == null) throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); - String now = DateUtil.now(); - entity.setRecord_time(now); - - pdmBdMudConsumptionMapper.updateById(entity); - } - - @Override - public void deleteAll(Set ids) { - // 真删除 - pdmBdMudConsumptionMapper.deleteBatchIds(ids); - } - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/controller/PdmBdRequestMaterialRecordController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/controller/PdmBdRequestMaterialRecordController.java deleted file mode 100644 index ca2c04f..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/controller/PdmBdRequestMaterialRecordController.java +++ /dev/null @@ -1,66 +0,0 @@ -package org.nl.wms.pdm.record.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.base.TableDataInfo; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.logging.annotation.Log; -import org.nl.wms.pdm.record.service.IPdmBdRequestMaterialRecordService; -import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; -import java.util.Set; -/** -* @author lyd -* @date 2023-07-05 -**/ -@Slf4j -@RestController -@Api(tags = "压机提前要料管理") -@RequestMapping("/api/pdmBdRequestMaterialRecord") -public class PdmBdRequestMaterialRecordController { - - @Autowired - private IPdmBdRequestMaterialRecordService pdmBdRequestMaterialRecordService; - - @GetMapping - @Log("查询压机提前要料") - @ApiOperation("查询压机提前要料") - //@SaCheckPermission("@el.check('pdmBdRequestMaterialRecord:list')") - public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ - return new ResponseEntity<>(TableDataInfo.build(pdmBdRequestMaterialRecordService.queryAll(whereJson,page)),HttpStatus.OK); - } - - @PostMapping - @Log("新增压机提前要料") - @ApiOperation("新增压机提前要料") - //@SaCheckPermission("@el.check('pdmBdRequestMaterialRecord:add')") - public ResponseEntity create(@Validated @RequestBody PdmBdRequestMaterialRecord entity){ - pdmBdRequestMaterialRecordService.create(entity); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改压机提前要料") - @ApiOperation("修改压机提前要料") - //@SaCheckPermission("@el.check('pdmBdRequestMaterialRecord:edit')") - public ResponseEntity update(@Validated @RequestBody PdmBdRequestMaterialRecord entity){ - pdmBdRequestMaterialRecordService.update(entity); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除压机提前要料") - @ApiOperation("删除压机提前要料") - //@SaCheckPermission("@el.check('pdmBdRequestMaterialRecord:del')") - @DeleteMapping - public ResponseEntity delete(@RequestBody Set ids) { - pdmBdRequestMaterialRecordService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java deleted file mode 100644 index c326b40..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.nl.wms.pdm.record.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.common.domain.query.PageQuery; -import com.baomidou.mybatisplus.extension.service.IService; -import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; - -import java.util.Map; -import java.util.Set; - -/** -* @description 服务接口 -* @author lyd -* @date 2023-07-05 -**/ -public interface IPdmBdRequestMaterialRecordService extends IService { - - /** - * 查询数据分页 - * @param whereJson 条件 - * @param pageable 分页参数 - * @return IPage - */ - IPage queryAll(Map whereJson, PageQuery pageable); - - /** - * 创建 - * @param entity / - */ - void create(PdmBdRequestMaterialRecord entity); - - /** - * 编辑 - * @param entity / - */ - void update(PdmBdRequestMaterialRecord entity); - - /** - * 多选删除 - * @param ids / - */ - void deleteAll(Set ids); - - /** - * 叫料完成 - * @param recordId - */ - void callMaterialFinish(String recordId); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/PdmBdRequestMaterialRecord.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/PdmBdRequestMaterialRecord.java deleted file mode 100644 index 71cec91..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/PdmBdRequestMaterialRecord.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.nl.wms.pdm.record.service.dao; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; - -/** -* @description / -* @author lyd -* @date 2023-07-05 -**/ -@Data -@EqualsAndHashCode(callSuper = false) -@TableName("pdm_bd_request_material_record") -public class PdmBdRequestMaterialRecord implements Serializable { - - private static final long serialVersionUID = 1L; - - @TableId(value = "record_id", type = IdType.NONE) - @ApiModelProperty(value = "要料记录标识") - private String record_id; - - @ApiModelProperty(value = "压机编号") - private String device_code; - - @ApiModelProperty(value = "物料") - private String material_id; - - @ApiModelProperty(value = "工单") - private String workorder_id; - - @ApiModelProperty(value = "叫料时间") - private String create_time; - @ApiModelProperty(value = "是否上料成功") - private Boolean is_finish; - @ApiModelProperty(value = "上料时间") - private String update_time; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.java deleted file mode 100644 index c60826d..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.wms.pdm.record.service.dao.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; - -/** -* @author lyd -* @date 2023-07-05 -**/ -public interface PdmBdRequestMaterialRecordMapper extends BaseMapper { - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.xml deleted file mode 100644 index 95bc6cf..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordDto.java deleted file mode 100644 index 726d221..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordDto.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.nl.wms.pdm.record.service.dto; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import java.io.Serializable; - -/** -* @description / -* @author lyd -* @date 2023-07-05 -**/ -@Data -public class PdmBdRequestMaterialRecordDto implements Serializable { - - /** 要料记录标识 */ - private String record_id; - - /** 压机编号 */ - private String device_code; - - /** 物料 */ - private String material_id; - - /** 工单 */ - private String workorder_id; - - /** 叫料时间 */ - private String create_time; - - /** 是否上料成功 */ - private Boolean is_finish; - - /** 上料时间 */ - private String update_time; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordQuery.java deleted file mode 100644 index a18c96d..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordQuery.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.wms.pdm.record.service.dto; - -import org.nl.common.domain.query.BaseQuery; -import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; - -/** -* @author lyd -* @date 2023-07-05 -**/ -public class PdmBdRequestMaterialRecordQuery extends BaseQuery { - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java deleted file mode 100644 index ea5421f..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.nl.wms.pdm.record.service.impl; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.exception.BadRequestException; -import org.nl.common.utils.SecurityUtils; -import org.nl.config.language.LangProcess; -import org.nl.wms.pdm.record.service.IPdmBdRequestMaterialRecordService; -import org.nl.wms.pdm.record.service.dao.mapper.PdmBdRequestMaterialRecordMapper; -import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Map; -import java.util.Set; - -/** -* @description 服务实现 -* @author lyd -* @date 2023-07-05 -**/ -@Slf4j -@Service -public class PdmBdRequestMaterialRecordServiceImpl extends ServiceImpl implements IPdmBdRequestMaterialRecordService { - - @Autowired - private PdmBdRequestMaterialRecordMapper pdmBdRequestMaterialRecordMapper; - - @Override - public IPage queryAll(Map whereJson, PageQuery page){ - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - IPage pages = new Page<>(page.getPage() + 1, page.getSize()); - pdmBdRequestMaterialRecordMapper.selectPage(pages, lam); - return pages; - } - - @Override - public void create(PdmBdRequestMaterialRecord entity) { - String now = DateUtil.now(); - - entity.setRecord_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - entity.setCreate_time(now); - pdmBdRequestMaterialRecordMapper.insert(entity); - } - - @Override - public void update(PdmBdRequestMaterialRecord entity) { - PdmBdRequestMaterialRecord dto = pdmBdRequestMaterialRecordMapper.selectById(entity.getRecord_id()); - if (dto == null) throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); - pdmBdRequestMaterialRecordMapper.updateById(entity); - } - - @Override - public void deleteAll(Set ids) { - // 真删除 - pdmBdRequestMaterialRecordMapper.deleteBatchIds(ids); - } - - @Override - public void callMaterialFinish(String recordId) { - PdmBdRequestMaterialRecord requestMaterialRecord = pdmBdRequestMaterialRecordMapper.selectById(recordId); - requestMaterialRecord.setIs_finish(true); - requestMaterialRecord.setUpdate_time(DateUtil.now()); - pdmBdRequestMaterialRecordMapper.updateById(requestMaterialRecord); - } - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/controller/PdmBdMaterialResidueController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/controller/PdmBdMaterialResidueController.java deleted file mode 100644 index 3df312a..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/controller/PdmBdMaterialResidueController.java +++ /dev/null @@ -1,66 +0,0 @@ -package org.nl.wms.pdm.residue.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.base.TableDataInfo; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.logging.annotation.Log; -import org.nl.wms.pdm.residue.service.IPdmBdMaterialResidueService; -import org.nl.wms.pdm.residue.service.dao.PdmBdMaterialResidue; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; -import java.util.Set; -/** -* @author lyd -* @date 2023-07-28 -**/ -@Slf4j -@RestController -@Api(tags = "压机泥料剩余记录管理") -@RequestMapping("/api/pdmBdMaterialResidue") -public class PdmBdMaterialResidueController { - - @Autowired - private IPdmBdMaterialResidueService pdmBdMaterialResidueService; - - @GetMapping - @Log("查询压机泥料剩余记录") - @ApiOperation("查询压机泥料剩余记录") - //@SaCheckPermission("@el.check('pdmBdMaterialResidue:list')") - public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ - return new ResponseEntity<>(TableDataInfo.build(pdmBdMaterialResidueService.queryAll(whereJson,page)),HttpStatus.OK); - } - - @PostMapping - @Log("新增压机泥料剩余记录") - @ApiOperation("新增压机泥料剩余记录") - //@SaCheckPermission("@el.check('pdmBdMaterialResidue:add')") - public ResponseEntity create(@Validated @RequestBody PdmBdMaterialResidue entity){ - pdmBdMaterialResidueService.create(entity); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改压机泥料剩余记录") - @ApiOperation("修改压机泥料剩余记录") - //@SaCheckPermission("@el.check('pdmBdMaterialResidue:edit')") - public ResponseEntity update(@Validated @RequestBody PdmBdMaterialResidue entity){ - pdmBdMaterialResidueService.update(entity); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除压机泥料剩余记录") - @ApiOperation("删除压机泥料剩余记录") - //@SaCheckPermission("@el.check('pdmBdMaterialResidue:del')") - @DeleteMapping - public ResponseEntity delete(@RequestBody Set ids) { - pdmBdMaterialResidueService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/IPdmBdMaterialResidueService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/IPdmBdMaterialResidueService.java deleted file mode 100644 index dfec403..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/IPdmBdMaterialResidueService.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.nl.wms.pdm.residue.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.common.domain.query.PageQuery; -import com.baomidou.mybatisplus.extension.service.IService; -import org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest; -import org.nl.wms.pdm.residue.service.dao.PdmBdMaterialResidue; - -import java.util.Map; -import java.util.Set; - -/** -* @description 服务接口 -* @author lyd -* @date 2023-07-28 -**/ -public interface IPdmBdMaterialResidueService extends IService { - - /** - * 查询数据分页 - * @param whereJson 条件 - * @param pageable 分页参数 - * @return IPage - */ - IPage queryAll(Map whereJson, PageQuery pageable); - - /** - * 创建 - * @param entity / - */ - void create(PdmBdMaterialResidue entity); - - /** - * 编辑 - * @param entity / - */ - void update(PdmBdMaterialResidue entity); - - /** - * 多选删除 - * @param ids / - */ - void deleteAll(Set ids); - - /** - * 添加数据 - */ - void addByApplyTaskRequest(ApplyTaskRequest applyTaskRequest); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/PdmBdMaterialResidue.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/PdmBdMaterialResidue.java deleted file mode 100644 index 980ddbc..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/PdmBdMaterialResidue.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.nl.wms.pdm.residue.service.dao; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; - -/** -* @description / -* @author lyd -* @date 2023-07-28 -**/ -@Data -@EqualsAndHashCode(callSuper = false) -@TableName("pdm_bd_material_residue") -public class PdmBdMaterialResidue implements Serializable { - - private static final long serialVersionUID = 1L; - - @TableId(value = "record_id", type = IdType.NONE) - @ApiModelProperty(value = "记录标识") - private String record_id; - - @ApiModelProperty(value = "泥料编码") - private String raw_material_code; - - @ApiModelProperty(value = "设备编码") - private String device_code; - - @ApiModelProperty(value = "泥料编码") - private String weight; - - @ApiModelProperty(value = "工单号") - private String workorder_code; - - @ApiModelProperty(value = "物料id") - private String material_id; - - @ApiModelProperty(value = "记录时间") - private String record_time; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/mapper/PdmBdMaterialResidueMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/mapper/PdmBdMaterialResidueMapper.java deleted file mode 100644 index da60465..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/mapper/PdmBdMaterialResidueMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.wms.pdm.residue.service.dao.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.nl.wms.pdm.residue.service.dao.PdmBdMaterialResidue; - -/** -* @author lyd -* @date 2023-07-28 -**/ -public interface PdmBdMaterialResidueMapper extends BaseMapper { - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/mapper/PdmBdMaterialResidueMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/mapper/PdmBdMaterialResidueMapper.xml deleted file mode 100644 index 2110a28..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dao/mapper/PdmBdMaterialResidueMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dto/PdmBdMaterialResidueDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dto/PdmBdMaterialResidueDto.java deleted file mode 100644 index dd40ff7..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dto/PdmBdMaterialResidueDto.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.nl.wms.pdm.residue.service.dto; - -import lombok.Data; -import java.io.Serializable; - -/** -* @description / -* @author lyd -* @date 2023-07-28 -**/ -@Data -public class PdmBdMaterialResidueDto implements Serializable { - - /** 记录标识 */ - private String record_id; - - /** 泥料编码 */ - private String raw_material_code; - - /** 设备编码 */ - private String device_code; - - /** 泥料编码 */ - private String weight; - - /** 工单号 */ - private String workorder_code; - - /** 物料id */ - private String material_id; - - /** 记录时间 */ - private String record_time; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dto/PdmBdMaterialResidueQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dto/PdmBdMaterialResidueQuery.java deleted file mode 100644 index 90fff91..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/dto/PdmBdMaterialResidueQuery.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.wms.pdm.residue.service.dto; - -import org.nl.common.domain.query.BaseQuery; -import org.nl.wms.pdm.residue.service.dao.PdmBdMaterialResidue; - -/** -* @author lyd -* @date 2023-07-28 -**/ -public class PdmBdMaterialResidueQuery extends BaseQuery { - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/impl/PdmBdMaterialResidueServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/impl/PdmBdMaterialResidueServiceImpl.java deleted file mode 100644 index 30cde5e..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/residue/service/impl/PdmBdMaterialResidueServiceImpl.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.nl.wms.pdm.residue.service.impl; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.exception.BadRequestException; -import org.nl.common.utils.SecurityUtils; -import org.nl.config.language.LangProcess; -import org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest; -import org.nl.wms.pdm.residue.service.IPdmBdMaterialResidueService; -import org.nl.wms.pdm.residue.service.dao.mapper.PdmBdMaterialResidueMapper; -import org.nl.wms.pdm.residue.service.dao.PdmBdMaterialResidue; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Map; -import java.util.Set; - -/** -* @description 服务实现 -* @author lyd -* @date 2023-07-28 -**/ -@Slf4j -@Service -public class PdmBdMaterialResidueServiceImpl extends ServiceImpl implements IPdmBdMaterialResidueService { - - @Autowired - private PdmBdMaterialResidueMapper pdmBdMaterialResidueMapper; - - @Override - public IPage queryAll(Map whereJson, PageQuery page){ - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - IPage pages = new Page<>(page.getPage() + 1, page.getSize()); - pdmBdMaterialResidueMapper.selectPage(pages, lam); - return pages; - } - - @Override - public void create(PdmBdMaterialResidue entity) { - entity.setRecord_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - entity.setRecord_time(DateUtil.now()); - pdmBdMaterialResidueMapper.insert(entity); - } - - @Override - public void update(PdmBdMaterialResidue entity) { - PdmBdMaterialResidue dto = pdmBdMaterialResidueMapper.selectById(entity.getRecord_id()); - if (dto == null) throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); - String now = DateUtil.now(); - entity.setRecord_time(now); - - pdmBdMaterialResidueMapper.updateById(entity); - } - - @Override - public void deleteAll(Set ids) { - // 真删除 - pdmBdMaterialResidueMapper.deleteBatchIds(ids); - } - - @Override - public void addByApplyTaskRequest(ApplyTaskRequest applyTaskRequest) { - - } - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/IPdmBiSubpackagerelationService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/IPdmBiSubpackagerelationService.java index 8cdde2c..703da4b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/IPdmBiSubpackagerelationService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/IPdmBiSubpackagerelationService.java @@ -16,6 +16,7 @@ import org.nl.wms.pdm.subpackage.service.dto.SubPackageQuery; public interface IPdmBiSubpackagerelationService extends IService { /** + * 分页查询 * @param query / * @param page / * @return / diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/dao/mapper/PdmBiSubpackagerelationMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/dao/mapper/PdmBiSubpackagerelationMapper.java index 099d0aa..51880c8 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/dao/mapper/PdmBiSubpackagerelationMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/dao/mapper/PdmBiSubpackagerelationMapper.java @@ -20,6 +20,12 @@ import java.util.Map; */ public interface PdmBiSubpackagerelationMapper extends BaseMapper { + /** + * 分页查询 + * @param query 查询条件 + * @param pageQuery 分页工具 + * @return List + */ List getPageQuery(@Param("query") SubPackageQuery query, @Param("pageQuery") PageQuery pageQuery); /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/dto/SubPackageQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/dto/SubPackageQuery.java index 5c2fa0a..7ebdea6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/dto/SubPackageQuery.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/subpackage/service/dto/SubPackageQuery.java @@ -8,7 +8,8 @@ import org.nl.wms.pdm.subpackage.service.dao.PdmBiSubpackagerelation; import java.util.List; -/* +/** + * 查询条件 * @author LXY * @Date 2023/11/10 14:49 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/controller/PdmBdProductionProcessTrackingController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/controller/PdmBdProductionProcessTrackingController.java deleted file mode 100644 index 60393eb..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/controller/PdmBdProductionProcessTrackingController.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.nl.wms.pdm.track.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.base.TableDataInfo; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.logging.annotation.Log; -import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; -import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; -import org.nl.wms.pdm.track.service.dto.PdmBdProductionProcessTrackingQuery; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; -import java.util.Set; -/** -* @author lyd -* @date 2023-07-21 -**/ -@Slf4j -@RestController -@Api(tags = "生产过程跟踪表管理") -@RequestMapping("/api/pdmBdProductionProcessTracking") -public class PdmBdProductionProcessTrackingController { - - @Autowired - private IPdmBdProductionProcessTrackingService pdmBdProductionProcessTrackingService; - - @GetMapping - @Log("查询生产过程跟踪表") - @ApiOperation("查询生产过程跟踪表") - //@SaCheckPermission("@el.check('pdmBdProductionProcessTracking:list')") - public ResponseEntity query(PdmBdProductionProcessTrackingQuery query, PageQuery page){ - return new ResponseEntity<>(TableDataInfo.build(pdmBdProductionProcessTrackingService - .queryAll(query,page)),HttpStatus.OK); - } - - @PostMapping - @Log("新增生产过程跟踪表") - @ApiOperation("新增生产过程跟踪表") - //@SaCheckPermission("@el.check('pdmBdProductionProcessTracking:add')") - public ResponseEntity create(@Validated @RequestBody PdmBdProductionProcessTracking entity){ - pdmBdProductionProcessTrackingService.create(entity); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改生产过程跟踪表") - @ApiOperation("修改生产过程跟踪表") - //@SaCheckPermission("@el.check('pdmBdProductionProcessTracking:edit')") - public ResponseEntity update(@Validated @RequestBody PdmBdProductionProcessTracking entity){ - pdmBdProductionProcessTrackingService.update(entity); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除生产过程跟踪表") - @ApiOperation("删除生产过程跟踪表") - //@SaCheckPermission("@el.check('pdmBdProductionProcessTracking:del')") - @DeleteMapping - public ResponseEntity delete(@RequestBody Set ids) { - pdmBdProductionProcessTrackingService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/IPdmBdProductionProcessTrackingService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/IPdmBdProductionProcessTrackingService.java deleted file mode 100644 index 7e23c06..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/IPdmBdProductionProcessTrackingService.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.nl.wms.pdm.track.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.common.domain.query.PageQuery; -import com.baomidou.mybatisplus.extension.service.IService; -import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; -import org.nl.wms.pdm.track.service.dto.PdmBdProductionProcessTrackingQuery; - -import java.util.Map; -import java.util.Set; - -/** -* @description 服务接口 -* @author lyd -* @date 2023-07-21 -**/ -public interface IPdmBdProductionProcessTrackingService extends IService { - - /** - * 查询数据分页 - * @param whereJson 条件 - * @param pageable 分页参数 - * @return IPage - */ - IPage queryAll(PdmBdProductionProcessTrackingQuery whereJson, PageQuery pageable); - - /** - * 创建 - * @param entity / - */ - void create(PdmBdProductionProcessTracking entity); - - /** - * 编辑 - * @param entity / - */ - void update(PdmBdProductionProcessTracking entity); - - /** - * 多选删除 - * @param ids / - */ - void deleteAll(Set ids); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/PdmBdProductionProcessTracking.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/PdmBdProductionProcessTracking.java deleted file mode 100644 index efa1b22..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/PdmBdProductionProcessTracking.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.nl.wms.pdm.track.service.dao; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; - -/** -* @description / -* @author lyd -* @date 2023-07-21 -**/ -@Data -@EqualsAndHashCode(callSuper = false) -@TableName("pdm_bd_production_process_tracking") -public class PdmBdProductionProcessTracking implements Serializable { - - private static final long serialVersionUID = 1L; - - @TableId(value = "process_id", type = IdType.NONE) - @ApiModelProperty(value = "跟踪标识") - private String process_id; - - @ApiModelProperty(value = "记录时间") - private String record_time; - - @ApiModelProperty(value = "动作") - private String process_action; - - @ApiModelProperty(value = "地点") - private String process_location; - - @ApiModelProperty(value = "链路id") - private String buss_move_id; - @TableField(exist = false) - private String vehicle_code; - @TableField(exist = false) - private String point_name; - @TableField(exist = false) - private String device_code; - @TableField(exist = false) - private String material_code; - @TableField(exist = false) - private String material_name; - @TableField(exist = false) - private String pcsn; - @TableField(exist = false) - private String half_material_code; - @TableField(exist = false) - private String raw_material_code; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.java deleted file mode 100644 index ece735f..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.nl.wms.pdm.track.service.dao.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; -import org.nl.wms.pdm.track.service.dto.PdmBdProductionProcessTrackingQuery; - -/** -* @author lyd -* @date 2023-07-21 -**/ -public interface PdmBdProductionProcessTrackingMapper extends BaseMapper { - - IPage selectPageLeftJoin(IPage pages, - PdmBdProductionProcessTrackingQuery query); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.xml deleted file mode 100644 index 676f341..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingDto.java deleted file mode 100644 index 9d246c5..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingDto.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.nl.wms.pdm.track.service.dto; - -import lombok.Data; -import java.io.Serializable; - -/** -* @description / -* @author lyd -* @date 2023-07-21 -**/ -@Data -public class PdmBdProductionProcessTrackingDto implements Serializable { - - /** 跟踪标识 */ - private String process_id; - - /** 记录时间 */ - private String record_time; - - /** 动作 */ - private String process_action; - - /** 地点 */ - private String process_location; - - /** 链路id */ - private String buss_move_id; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingQuery.java deleted file mode 100644 index 25e68fa..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingQuery.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.nl.wms.pdm.track.service.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** -* @author lyd -* @date 2023-07-21 -**/ -@Data -public class PdmBdProductionProcessTrackingQuery implements Serializable { - private String buss_move_id; - private String begin_time; - private String end_time; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/impl/PdmBdProductionProcessTrackingServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/impl/PdmBdProductionProcessTrackingServiceImpl.java deleted file mode 100644 index 1f109fd..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/impl/PdmBdProductionProcessTrackingServiceImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.nl.wms.pdm.track.service.impl; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.exception.BadRequestException; -import org.nl.common.utils.SecurityUtils; -import org.nl.config.language.LangProcess; -import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; -import org.nl.wms.pdm.track.service.dao.mapper.PdmBdProductionProcessTrackingMapper; -import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; -import org.nl.wms.pdm.track.service.dto.PdmBdProductionProcessTrackingQuery; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Map; -import java.util.Set; - -/** -* @description 服务实现 -* @author lyd -* @date 2023-07-21 -**/ -@Slf4j -@Service -public class PdmBdProductionProcessTrackingServiceImpl extends ServiceImpl implements IPdmBdProductionProcessTrackingService { - - @Autowired - private PdmBdProductionProcessTrackingMapper pdmBdProductionProcessTrackingMapper; - - @Override - public IPage queryAll(PdmBdProductionProcessTrackingQuery query, PageQuery page){ - IPage pages = new Page<>(page.getPage() + 1, page.getSize()); - pages = pdmBdProductionProcessTrackingMapper.selectPageLeftJoin(pages, query); - return pages; - } - - @Override - public void create(PdmBdProductionProcessTracking entity) { - entity.setProcess_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - pdmBdProductionProcessTrackingMapper.insert(entity); - } - - @Override - public void update(PdmBdProductionProcessTracking entity) { - PdmBdProductionProcessTracking dto = pdmBdProductionProcessTrackingMapper.selectById(entity.getProcess_id()); - if (dto == null) throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); - - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - String now = DateUtil.now(); - - pdmBdProductionProcessTrackingMapper.updateById(entity); - } - - @Override - public void deleteAll(Set ids) { - // 真删除 - pdmBdProductionProcessTrackingMapper.deleteBatchIds(ids); - } - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/controller/PdmBdVehicleBindingController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/controller/PdmBdVehicleBindingController.java deleted file mode 100644 index faefb0e..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/controller/PdmBdVehicleBindingController.java +++ /dev/null @@ -1,66 +0,0 @@ -package org.nl.wms.pdm.vehiclebiding.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.base.TableDataInfo; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.logging.annotation.Log; -import org.nl.wms.pdm.vehiclebiding.service.IPdmBdVehicleBindingService; -import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; -import java.util.Set; -/** -* @author lyd -* @date 2023-07-31 -**/ -@Slf4j -@RestController -@Api(tags = "分拣载具关联记录管理") -@RequestMapping("/api/pdmBdVehicleBinding") -public class PdmBdVehicleBindingController { - - @Autowired - private IPdmBdVehicleBindingService pdmBdVehicleBindingService; - - @GetMapping - @Log("查询分拣载具关联记录") - @ApiOperation("查询分拣载具关联记录") - //@SaCheckPermission("@el.check('pdmBdVehicleBinding:list')") - public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ - return new ResponseEntity<>(TableDataInfo.build(pdmBdVehicleBindingService.queryAll(whereJson,page)),HttpStatus.OK); - } - - @PostMapping - @Log("新增分拣载具关联记录") - @ApiOperation("新增分拣载具关联记录") - //@SaCheckPermission("@el.check('pdmBdVehicleBinding:add')") - public ResponseEntity create(@Validated @RequestBody PdmBdVehicleBinding entity){ - pdmBdVehicleBindingService.create(entity); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改分拣载具关联记录") - @ApiOperation("修改分拣载具关联记录") - //@SaCheckPermission("@el.check('pdmBdVehicleBinding:edit')") - public ResponseEntity update(@Validated @RequestBody PdmBdVehicleBinding entity){ - pdmBdVehicleBindingService.update(entity); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除分拣载具关联记录") - @ApiOperation("删除分拣载具关联记录") - //@SaCheckPermission("@el.check('pdmBdVehicleBinding:del')") - @DeleteMapping - public ResponseEntity delete(@RequestBody Set ids) { - pdmBdVehicleBindingService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/IPdmBdVehicleBindingService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/IPdmBdVehicleBindingService.java deleted file mode 100644 index 5b93bf1..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/IPdmBdVehicleBindingService.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.nl.wms.pdm.vehiclebiding.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.common.domain.query.PageQuery; -import com.baomidou.mybatisplus.extension.service.IService; -import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding; - -import java.util.Map; -import java.util.Set; - -/** -* @description 服务接口 -* @author lyd -* @date 2023-07-31 -**/ -public interface IPdmBdVehicleBindingService extends IService { - - /** - * 查询数据分页 - * @param whereJson 条件 - * @param pageable 分页参数 - * @return IPage - */ - IPage queryAll(Map whereJson, PageQuery pageable); - - /** - * 创建 - * @param entity / - */ - void create(PdmBdVehicleBinding entity); - - /** - * 编辑 - * @param entity / - */ - void update(PdmBdVehicleBinding entity); - - /** - * 多选删除 - * @param ids / - */ - void deleteAll(Set ids); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/PdmBdVehicleBinding.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/PdmBdVehicleBinding.java deleted file mode 100644 index d95462d..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/PdmBdVehicleBinding.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.nl.wms.pdm.vehiclebiding.service.dao; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; - -/** -* @description / -* @author lyd -* @date 2023-07-31 -**/ -@Data -@EqualsAndHashCode(callSuper = false) -@TableName("pdm_bd_vehicle_binding") -public class PdmBdVehicleBinding implements Serializable { - - private static final long serialVersionUID = 1L; - - @TableId(value = "associate_id", type = IdType.NONE) - @ApiModelProperty(value = "对应标识") - private String associate_id; - - @ApiModelProperty(value = "源载具编码") - private String origin_vehicle_code; - - @ApiModelProperty(value = "源载具类型") - private String origin_vehicle_type; - - @ApiModelProperty(value = "目标载具编码") - private String target_vehicle_code; - - @ApiModelProperty(value = "目标载具类型") - private String target_vehicle_type; - - @ApiModelProperty(value = "源当前物料数量") - private String origin_qty; - - @ApiModelProperty(value = "目标当前物料数量") - private String target_qty; - - @ApiModelProperty(value = "取货点") - private String get_station; - - @ApiModelProperty(value = "放货点") - private String put_station; - - @ApiModelProperty(value = "工单号") - private String order_code; - - @ApiModelProperty(value = "记录时间") - private String record_time; - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.java deleted file mode 100644 index b3d37a9..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.wms.pdm.vehiclebiding.service.dao.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding; - -/** -* @author lyd -* @date 2023-07-31 -**/ -public interface PdmBdVehicleBindingMapper extends BaseMapper { - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.xml deleted file mode 100644 index bc73a08..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingDto.java deleted file mode 100644 index a0808ab..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingDto.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.nl.wms.pdm.vehiclebiding.service.dto; - -import lombok.Data; -import java.io.Serializable; - -/** -* @description / -* @author lyd -* @date 2023-07-31 -**/ -@Data -public class PdmBdVehicleBindingDto implements Serializable { - - /** 对应标识 */ - private String associate_id; - - /** 源载具编码 */ - private String origin_vehicle_code; - - /** 源载具类型 */ - private String origin_vehicle_type; - - /** 目标载具编码 */ - private String target_vehicle_code; - - /** 目标载具类型 */ - private String target_vehicle_type; - - /** 源当前物料数量 */ - private String origin_qty; - - /** 目标当前物料数量 */ - private String target_qty; - - /** 取货点 */ - private String get_station; - - /** 放货点 */ - private String put_station; - - /** 工单号 */ - private String order_code; - - /** 记录时间 */ - private String record_time; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingQuery.java deleted file mode 100644 index e2b5584..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingQuery.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.wms.pdm.vehiclebiding.service.dto; - -import org.nl.common.domain.query.BaseQuery; -import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding; - -/** -* @author lyd -* @date 2023-07-31 -**/ -public class PdmBdVehicleBindingQuery extends BaseQuery { - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/impl/PdmBdVehicleBindingServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/impl/PdmBdVehicleBindingServiceImpl.java deleted file mode 100644 index 5942ca8..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/impl/PdmBdVehicleBindingServiceImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.nl.wms.pdm.vehiclebiding.service.impl; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.exception.BadRequestException; -import org.nl.common.utils.SecurityUtils; -import org.nl.config.language.LangProcess; -import org.nl.wms.pdm.vehiclebiding.service.IPdmBdVehicleBindingService; -import org.nl.wms.pdm.vehiclebiding.service.dao.mapper.PdmBdVehicleBindingMapper; -import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Map; -import java.util.Set; - -/** -* @description 服务实现 -* @author lyd -* @date 2023-07-31 -**/ -@Slf4j -@Service -public class PdmBdVehicleBindingServiceImpl extends ServiceImpl implements IPdmBdVehicleBindingService { - - @Autowired - private PdmBdVehicleBindingMapper pdmBdVehicleBindingMapper; - - @Override - public IPage queryAll(Map whereJson, PageQuery page){ - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - IPage pages = new Page<>(page.getPage() + 1, page.getSize()); - pdmBdVehicleBindingMapper.selectPage(pages, lam); - return pages; - } - - @Override - public void create(PdmBdVehicleBinding entity) { - String now = DateUtil.now(); - entity.setAssociate_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - entity.setRecord_time(now); - pdmBdVehicleBindingMapper.insert(entity); - } - - @Override - public void update(PdmBdVehicleBinding entity) { - PdmBdVehicleBinding dto = pdmBdVehicleBindingMapper.selectById(entity.getAssociate_id()); - if (dto == null) throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); - String now = DateUtil.now(); - entity.setRecord_time(now); - - pdmBdVehicleBindingMapper.updateById(entity); - } - - @Override - public void deleteAll(Set ids) { - // 真删除 - pdmBdVehicleBindingMapper.deleteBatchIds(ids); - } - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java deleted file mode 100644 index f956540..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.nl.wms.report.controller; - -import com.alibaba.fastjson.JSONObject; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.base.TableDataInfo; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.logging.annotation.Log; -import org.nl.wms.report.service.ReportService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * @Author: lyd - * @Description: 报表管理 - * @Date: 2023/7/21 - */ -@Slf4j -@RestController -@Api(tags = "报表管理") -@RequestMapping("/api/report") -public class ReportController { - - @Autowired - private ReportService reportService; - - @GetMapping("/mudTransfer") - @Log("泥料转运记录表") - @ApiOperation("泥料转运记录表") - public ResponseEntity mudTransfer(JSONObject json, PageQuery page){ -// return new ResponseEntity<>(TableDataInfo.build(reportService.mudTransfer(json,page)), HttpStatus.OK); - return null; - } - - @GetMapping("/inventoryAlert") - @Log("库存物料提示记录表") - @ApiOperation("库存物料提示记录表") - public ResponseEntity inventoryAlert(JSONObject json, PageQuery page){ -// return new ResponseEntity<>(TableDataInfo.build(reportService.inventoryAlert(json,page)), HttpStatus.OK); - return null; - } - - @GetMapping("/intoKilnReport") - @Log("入窑记录报表") - @ApiOperation("入窑记录报表") - public ResponseEntity intoKilnReport(Map json, PageQuery page){ - return new ResponseEntity<>(TableDataInfo.build(reportService.intoKilnReport(json,page)), HttpStatus.OK); - } - @GetMapping("/outKilnReport") - @Log("出窑窑记录报表") - @ApiOperation("出窑窑记录报表") - public ResponseEntity outKilnReport(Map json, PageQuery page){ - return new ResponseEntity<>(TableDataInfo.build(reportService.outKilnReport(json,page)), HttpStatus.OK); - } - @GetMapping("/inKilnReport") - @Log("窑内物料实时报表") - @ApiOperation("窑内物料实时报表") - public ResponseEntity inKilnReport(Map json, PageQuery page){ - return new ResponseEntity<>(TableDataInfo.build(reportService.inKilnReport(json,page)), HttpStatus.OK); - } - - @GetMapping("/inventoryMaterialTimeoutWarning") - @Log("库存物料超时提示") - @ApiOperation("库存物料超时提示") - public ResponseEntity inventoryMaterialTimeoutWarning(Map json, PageQuery page){ - return new ResponseEntity<>(TableDataInfo.build(reportService.inventoryMaterialTimeoutWarning(json,page)), HttpStatus.OK); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/ReportService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/ReportService.java deleted file mode 100644 index 24d2201..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/ReportService.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.nl.wms.report.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.common.domain.query.PageQuery; -import org.nl.wms.report.service.dao.vo.IOKilnReportVo; -import org.nl.wms.report.service.dao.vo.MaterialTimeoutVo; - -import java.util.Map; - -/** - * @Author: lyd - * @Description: - * @Date: 2023/7/21 - */ -public interface ReportService { - IPage intoKilnReport(Map json, PageQuery page); - - IPage outKilnReport(Map json, PageQuery page); - - IPage inKilnReport(Map json, PageQuery page); - - /** - * 物料警告 - * @param json - * @param page - * @return - */ - IPage inventoryMaterialTimeoutWarning(Map json, PageQuery page); - -// IPage<> mudTransfer(JSONObject json, PageQuery page); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.java deleted file mode 100644 index ed0fae3..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.nl.wms.report.service.dao.mapper; - -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.wms.report.service.dao.vo.IOKilnReportVo; -import org.nl.wms.report.service.dao.vo.MaterialTimeoutVo; - -/** - * @Author: lyd - * @Description: 报表mapper - * @Date: 2023/7/21 - */ -public interface ReportMapper { - IPage intoKilnReportByPage(IPage pages, JSONObject query); - - IPage outKilnReportByPage(IPage pages, JSONObject object); - - IPage inKilnReport(IPage pages, JSONObject object); - - IPage inventoryMaterialTimeoutWarning(IPage pages, JSONObject object); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.xml deleted file mode 100644 index dd80b74..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/vo/IOKilnReportVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/vo/IOKilnReportVo.java deleted file mode 100644 index 5674fc1..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/vo/IOKilnReportVo.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.nl.wms.report.service.dao.vo; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 出入窑记录报表 - * @Date: 2023/8/1 - */ -@Data -public class IOKilnReportVo { - private String into_kiln_time; - private String out_kiln_time; - private String vehicle_code; - private String pcsn; - private String material_qty; - private String material_code; - private String material_name; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/vo/MaterialTimeoutVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/vo/MaterialTimeoutVo.java deleted file mode 100644 index dc513f3..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/vo/MaterialTimeoutVo.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.nl.wms.report.service.dao.vo; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 入库物料过久没动提示VO - * @Date: 2023/8/9 - */ -@Data -public class MaterialTimeoutVo { - private String point_code; - private String point_name; - private String region_name; - private String material_code; - private String material_name; - private String instorage_time; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/impl/ReportServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/impl/ReportServiceImpl.java deleted file mode 100644 index 3ebbfda..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/impl/ReportServiceImpl.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.nl.wms.report.service.impl; - -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.domain.query.PageQuery; -import org.nl.wms.report.service.ReportService; -import org.nl.wms.report.service.dao.mapper.ReportMapper; -import org.nl.wms.report.service.dao.vo.IOKilnReportVo; -import org.nl.wms.report.service.dao.vo.MaterialTimeoutVo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Map; - -/** - * @Author: lyd - * @Description: 报表实现类 - * @Date: 2023/7/21 - */ -@Slf4j -@Service -public class ReportServiceImpl implements ReportService { - @Autowired - private ReportMapper reportMapper; - @Override - public IPage intoKilnReport(Map query, PageQuery page) { - IPage pages = new Page<>(page.getPage() + 1, page.getSize()); - pages = reportMapper.intoKilnReportByPage(pages, new JSONObject(query)); - return pages; - } - - @Override - public IPage outKilnReport(Map query, PageQuery page) { - IPage pages = new Page<>(page.getPage() + 1, page.getSize()); - pages = reportMapper.outKilnReportByPage(pages, new JSONObject(query)); - return pages; - } - - @Override - public IPage inKilnReport(Map query, PageQuery page) { - IPage pages = new Page<>(page.getPage() + 1, page.getSize()); - pages = reportMapper.inKilnReport(pages, new JSONObject(query)); - return pages; - } - - @Override - public IPage inventoryMaterialTimeoutWarning(Map query, PageQuery page) { - IPage pages = new Page<>(page.getPage() + 1, page.getSize()); - pages = reportMapper.inventoryMaterialTimeoutWarning(pages, new JSONObject(query)); - return pages; - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/SchBaseVehiclematerialgroupController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/SchBaseVehiclematerialgroupController.java index 9b03915..0d83fb5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/SchBaseVehiclematerialgroupController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/SchBaseVehiclematerialgroupController.java @@ -34,7 +34,6 @@ public class SchBaseVehiclematerialgroupController { @GetMapping @Log("查询组盘信息管理") @ApiOperation("查询组盘信息管理") - //@SaCheckPermission("@el.check('schBaseVehiclematerialgroup:list')") public ResponseEntity query(SchBaseVehiclematerialgroupQuery whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(schBaseVehiclematerialgroupService .queryAll(whereJson,page)),HttpStatus.OK); @@ -43,7 +42,6 @@ public class SchBaseVehiclematerialgroupController { @PostMapping @Log("新增组盘信息管理") @ApiOperation("新增组盘信息管理") - //@SaCheckPermission("@el.check('schBaseVehiclematerialgroup:add')") public ResponseEntity create(@Validated @RequestBody SchBaseVehiclematerialgroup entity){ schBaseVehiclematerialgroupService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -52,7 +50,6 @@ public class SchBaseVehiclematerialgroupController { @PutMapping @Log("修改组盘信息管理") @ApiOperation("修改组盘信息管理") - //@SaCheckPermission("@el.check('schBaseVehiclematerialgroup:edit')") public ResponseEntity update(@Validated @RequestBody SchBaseVehiclematerialgroup entity){ schBaseVehiclematerialgroupService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -60,7 +57,6 @@ public class SchBaseVehiclematerialgroupController { @Log("删除组盘信息管理") @ApiOperation("删除组盘信息管理") - //@SaCheckPermission("@el.check('schBaseVehiclematerialgroup:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { schBaseVehiclematerialgroupService.deleteAll(ids); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.java index f1d1122..9579533 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.java @@ -12,9 +12,25 @@ import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery; **/ public interface SchBaseVehiclematerialgroupMapper extends BaseMapper { + /** + * 分页查询 + * @param pages 、 + * @param query 查询条件 + * @return IPage + */ IPage selectPageLeftJoin(IPage pages, SchBaseVehiclematerialgroupQuery query); + /** + * 获取组盘信息 + * @param entity 、 + * @return SchBaseVehiclematerialgroup 实体类 + */ SchBaseVehiclematerialgroup getGroup(JSONObject entity); + /** + * 获取物料嘻嘻 + * @param materialId 物料id + * @return int 数字 + */ int getInventoryQtyByMaterialId(String materialId); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/interactivelog/controller/SchBaseAcsandlmsinteractivelogController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/interactivelog/controller/SchBaseAcsandlmsinteractivelogController.java index 1e3fa7b..2bd2919 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/interactivelog/controller/SchBaseAcsandlmsinteractivelogController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/interactivelog/controller/SchBaseAcsandlmsinteractivelogController.java @@ -32,7 +32,6 @@ public class SchBaseAcsandlmsinteractivelogController { @GetMapping @Log("查询ACS和LMS交互日志表") @ApiOperation("查询ACS和LMS交互日志表") - //@SaCheckPermission("@el.check('schBaseAcsandlmsinteractivelog:list')") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(schBaseAcsandlmsinteractivelogService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -40,7 +39,6 @@ public class SchBaseAcsandlmsinteractivelogController { @PostMapping @Log("新增ACS和LMS交互日志表") @ApiOperation("新增ACS和LMS交互日志表") - //@SaCheckPermission("@el.check('schBaseAcsandlmsinteractivelog:add')") public ResponseEntity create(@Validated @RequestBody SchBaseAcsandlmsinteractivelog entity){ schBaseAcsandlmsinteractivelogService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -49,7 +47,6 @@ public class SchBaseAcsandlmsinteractivelogController { @PutMapping @Log("修改ACS和LMS交互日志表") @ApiOperation("修改ACS和LMS交互日志表") - //@SaCheckPermission("@el.check('schBaseAcsandlmsinteractivelog:edit')") public ResponseEntity update(@Validated @RequestBody SchBaseAcsandlmsinteractivelog entity){ schBaseAcsandlmsinteractivelogService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -57,7 +54,6 @@ public class SchBaseAcsandlmsinteractivelogController { @Log("删除ACS和LMS交互日志表") @ApiOperation("删除ACS和LMS交互日志表") - //@SaCheckPermission("@el.check('schBaseAcsandlmsinteractivelog:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { schBaseAcsandlmsinteractivelogService.deleteAll(ids); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/controller/SchBasePointController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/controller/SchBasePointController.java index 7816527..8df449b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/controller/SchBasePointController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/controller/SchBasePointController.java @@ -35,7 +35,6 @@ public class SchBasePointController { @GetMapping @Log("查询点位管理") @ApiOperation("查询点位管理") - //@SaCheckPermission("@el.check('schBasePoint:list')") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(schBasePointService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -43,7 +42,6 @@ public class SchBasePointController { @PostMapping @Log("新增点位管理") @ApiOperation("新增点位管理") - //@SaCheckPermission("@el.check('schBasePoint:add')") public ResponseEntity create(@Validated @RequestBody SchBasePoint entity){ schBasePointService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -52,7 +50,6 @@ public class SchBasePointController { @PutMapping @Log("修改点位管理") @ApiOperation("修改点位管理") - //@SaCheckPermission("@el.check('schBasePoint:edit')") public ResponseEntity update(@Validated @RequestBody SchBasePoint entity){ schBasePointService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -60,7 +57,6 @@ public class SchBasePointController { @Log("删除点位管理") @ApiOperation("删除点位管理") - //@SaCheckPermission("@el.check('schBasePoint:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { schBasePointService.deleteAll(ids); @@ -78,7 +74,6 @@ public class SchBasePointController { @PostMapping("/getPointList") @Log("获取区域下拉框") @ApiOperation("获取区域下拉框") - //@SaCheckPermission("@el.check('schBaseRegion:list')") public ResponseEntity getPointList(@RequestBody(required = false) SchBasePoint region){ return new ResponseEntity<>(schBasePointService.getPointList(region),HttpStatus.OK); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java index 16356a3..6f92559 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java @@ -137,7 +137,9 @@ public class SchBasePoint implements Serializable { @TableField(exist = false) private String point_status_name; - // 组盘标识 + /** + * 组盘标识 + */ @TableField(exist = false) private String group_id; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java index 182b4cb..973f7f7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java @@ -206,7 +206,7 @@ public class SchBasePointServiceImpl extends ServiceImpl list, String lock_ype) { list.forEach(row -> { row.setPoint_status(lock_ype); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/SchBaseRegionController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/SchBaseRegionController.java index c9f7d90..9ca3089 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/SchBaseRegionController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/SchBaseRegionController.java @@ -32,7 +32,6 @@ public class SchBaseRegionController { @GetMapping @Log("查询区域管理") @ApiOperation("查询区域管理") - //@SaCheckPermission("@el.check('schBaseRegion:list')") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(regionService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -40,7 +39,6 @@ public class SchBaseRegionController { @PostMapping @Log("新增区域管理") @ApiOperation("新增区域管理") - //@SaCheckPermission("@el.check('schBaseRegion:add')") public ResponseEntity create(@Validated @RequestBody SchBaseRegion entity){ regionService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -49,7 +47,6 @@ public class SchBaseRegionController { @PutMapping @Log("修改区域管理") @ApiOperation("修改区域管理") - //@SaCheckPermission("@el.check('schBaseRegion:edit')") public ResponseEntity update(@Validated @RequestBody SchBaseRegion entity){ regionService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -57,7 +54,6 @@ public class SchBaseRegionController { @Log("删除区域管理") @ApiOperation("删除区域管理") - //@SaCheckPermission("@el.check('schBaseRegion:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { regionService.deleteAll(ids); @@ -67,7 +63,6 @@ public class SchBaseRegionController { @PostMapping("/getRegionList") @Log("获取区域下拉框") @ApiOperation("获取区域下拉框") - //@SaCheckPermission("@el.check('schBaseRegion:list')") public ResponseEntity getRegionList(@RequestBody(required = false) SchBaseRegion region){ return new ResponseEntity<>(regionService.getRegionList(region),HttpStatus.OK); } @@ -75,7 +70,6 @@ public class SchBaseRegionController { @PostMapping("/getPointStatusSelectById") @Log("获取点位状态下拉框") @ApiOperation("获取点位状态下拉框") - //@SaCheckPermission("region:add") public ResponseEntity getPointStatusSelectById(@RequestBody String region_id) { return new ResponseEntity<>(regionService.getPointStatusSelectById(region_id), HttpStatus.OK); } @@ -83,7 +77,6 @@ public class SchBaseRegionController { @PostMapping("/getPointTypeSelectById") @Log("获取点位类型下拉框") @ApiOperation("获取点位类型下拉框") - //@SaCheckPermission("region:add") public ResponseEntity getPointTypeSelectById(@RequestBody String region_id) { return new ResponseEntity<>(regionService.getPointTypeSelectById(region_id), HttpStatus.OK); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/ISchBaseRegionService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/ISchBaseRegionService.java index 325c516..0a091cf 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/ISchBaseRegionService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/ISchBaseRegionService.java @@ -44,12 +44,23 @@ public interface ISchBaseRegionService extends IService { void deleteAll(Set ids); /** - * 区域下拉框 - * @return + * 获取区域下拉框 + * @param region + * @return List */ List getRegionList(SchBaseRegion region); + /** + * 获取点位状态 + * @param regionId + * @return JSONArray + */ JSONArray getPointStatusSelectById(String regionId); + /** + * 获取点位类型 + * @param regionId + * @return JSONArray + */ JSONArray getPointTypeSelectById(String regionId); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskController.java index 542094f..f678ae7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskController.java @@ -36,7 +36,6 @@ public class SchBaseTaskController { @GetMapping @Log("查询任务管理") @ApiOperation("查询任务管理") - //@SaCheckPermission("@el.check('schBaseTask:list')") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(schBaseTaskService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -44,7 +43,6 @@ public class SchBaseTaskController { @PostMapping @Log("新增任务管理") @ApiOperation("新增任务管理") - //@SaCheckPermission("@el.check('schBaseTask:add')") public ResponseEntity create(@Validated @RequestBody SchBaseTask entity){ schBaseTaskService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -53,7 +51,6 @@ public class SchBaseTaskController { @PutMapping @Log("修改任务管理") @ApiOperation("修改任务管理") - //@SaCheckPermission("@el.check('schBaseTask:edit')") public ResponseEntity update(@Validated @RequestBody SchBaseTask entity){ schBaseTaskService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -61,7 +58,6 @@ public class SchBaseTaskController { @Log("删除任务管理") @ApiOperation("删除任务管理") - //@SaCheckPermission("@el.check('schBaseTask:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { schBaseTaskService.deleteAll(ids); @@ -72,7 +68,6 @@ public class SchBaseTaskController { @Log("任务状态下拉框") @ApiOperation("任务状态下拉框") @SaIgnore - //@SaCheckPermission("@el.check('schBaseTask:list')") public ResponseEntity getTaskStatusList(){ return new ResponseEntity<>(TableDataInfo.build(schBaseTaskService.getTaskStatusList()),HttpStatus.OK); } @@ -80,7 +75,6 @@ public class SchBaseTaskController { @PutMapping("/operation") @Log("任务操作") @ApiOperation("任务操作") - //@SaCheckPermission("task:edit") public ResponseEntity update(@RequestBody Map map) { schBaseTaskService.operation(map); return new ResponseEntity<>(HttpStatus.NO_CONTENT); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskconfigController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskconfigController.java index 86f6b7c..2a3a319 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskconfigController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskconfigController.java @@ -32,7 +32,6 @@ public class SchBaseTaskconfigController { @GetMapping @Log("查询任务配置") @ApiOperation("查询任务配置") - //@SaCheckPermission("@el.check('schBaseTaskconfig:list')") public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ return new ResponseEntity<>(TableDataInfo.build(schBaseTaskconfigService.queryAll(whereJson,page)),HttpStatus.OK); } @@ -40,7 +39,6 @@ public class SchBaseTaskconfigController { @PostMapping @Log("新增任务配置") @ApiOperation("新增任务配置") - //@SaCheckPermission("@el.check('schBaseTaskconfig:add')") public ResponseEntity create(@Validated @RequestBody SchBaseTaskconfig entity){ schBaseTaskconfigService.create(entity); return new ResponseEntity<>(HttpStatus.CREATED); @@ -49,7 +47,6 @@ public class SchBaseTaskconfigController { @PutMapping @Log("修改任务配置") @ApiOperation("修改任务配置") - //@SaCheckPermission("@el.check('schBaseTaskconfig:edit')") public ResponseEntity update(@Validated @RequestBody SchBaseTaskconfig entity){ schBaseTaskconfigService.update(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -57,7 +54,6 @@ public class SchBaseTaskconfigController { @Log("删除任务配置") @ApiOperation("删除任务配置") - //@SaCheckPermission("@el.check('schBaseTaskconfig:del')") @DeleteMapping public ResponseEntity delete(@RequestBody Set ids) { schBaseTaskconfigService.deleteAll(ids); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java index 74daf38..61ded4d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java @@ -71,14 +71,19 @@ public interface ISchBaseTaskService extends IService { /** * 根据任务配置查询同台设备未完成的任务列表 - * * @param config_code 任务配置 * @param device_code 设备 - * @return + * @param direction + * @return List */ List findUnFinishTasksByTaskConfig(String config_code, String device_code, String direction); - + /** + * 根据状态查找 + * @param config_code + * @param status + * @return List + */ List findTasksByTaskStatus(String config_code, TaskStatus status); /** @@ -101,5 +106,10 @@ public interface ISchBaseTaskService extends IService { */ void operation(Map param); + /** + * 根据code查找 + * @param taskCode 任务编码 + * @return SchBaseTask + */ SchBaseTask getByCode(String taskCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java index 4b3cf40..6621a18 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java @@ -125,7 +125,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl lam = new LambdaQueryWrapper<>(); lam.eq(SchBaseTask::getConfig_code, config_code) .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) - .ne(SchBaseTask::getTask_code, task_code) // 不是当前任务 + .ne(SchBaseTask::getTask_code, task_code) .eq(SchBaseTask::getIs_delete, false); List schBaseTasks = schBaseTaskMapper.selectList(lam); return schBaseTasks; @@ -224,9 +224,8 @@ public class SchBaseTaskServiceImpl extends ServiceImpl + * 任务dto + *

+ * + * @author generator + * @since 2023-11-16 + */ @Data public class AcsTaskDto { /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java index 5ab35cc..34103d5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java @@ -15,6 +15,14 @@ import java.util.Map; import java.util.Set; +/** + *

+ * 自动创建任务 + *

+ * + * @author generator + * @since 2023-11-16 + */ @Slf4j @Component @Order(value = 1) diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/GroupStatusEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/GroupStatusEnum.java index 1e0c579..9643b50 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/GroupStatusEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/GroupStatusEnum.java @@ -11,11 +11,17 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum GroupStatusEnum { + // 系统外 OUT_SYSTEM("1", "系统外"), + // 存储中 IN_STORAGE("2", "存储中"), + // 处理中 IN_PROCESS("3", "处理中"), + // 搬运中 IN_CARRY("4", "搬运中"), + // 可放料 DISCHARGE_MATERIAL("5", "可放料"), + // 可取料 CABLE_RETRIEVABLE_MATERIAL("6", "可取料"); private final String type; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/NoticeTypeEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/NoticeTypeEnum.java index 66756b0..1ea9009 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/NoticeTypeEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/NoticeTypeEnum.java @@ -12,8 +12,11 @@ import lombok.Getter; @AllArgsConstructor public enum NoticeTypeEnum { + // 异常 EXCEPTION("1", "异常"), + // 警告 WARN("2", "警告"), + // 通知 NOTIFICATION("3", "通知"); private final String code; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PointStatusEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PointStatusEnum.java index e92e1ef..e07927d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PointStatusEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PointStatusEnum.java @@ -12,8 +12,11 @@ import lombok.Getter; @AllArgsConstructor public enum PointStatusEnum { + // 空位/无货 EMPTY_POINT("1", "空位/无货"), + // 有料 FULL_POINT("3", "有料"), + // 空载具/有货 EMPTY_VEHICLE("2", "空载具/有货"); private final String code; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java index d39dc1d..d732e39 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java @@ -12,8 +12,11 @@ import lombok.Getter; @AllArgsConstructor public enum TaskFinishedTypeEnum { + // ACS自动完成 AUTO_ACS("1", "ACS自动完成"), + // PC手动完成 MANUAL_PC("2", "PC手动完成"), + // PDA手持 MANUAL_PDA("3", "PDA手持"); private final String code; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/WorkOrderStatusEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/WorkOrderStatusEnum.java index 035a895..0ffa420 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/WorkOrderStatusEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/WorkOrderStatusEnum.java @@ -11,11 +11,18 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum WorkOrderStatusEnum { + + // 未生产 UNPRODUCED("1", "未生产"), + // 已下发 ISSUED("2", "已下发"), + // 生产中 PRODUCING("3", "生产中"), + // 暂停 STOP("4", "暂停"), + // 完成 COMPLETE("5", "完成"); + private final String code; private final String name; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java index 8d79b4c..a3427f7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java @@ -16,7 +16,12 @@ import org.nl.wms.sch.task_manage.GeneralDefinition; import java.util.List; /** + *

* ACS连接工具类: 不允许直接操作结果,将其封装到ResultForAcs,由实现类操作 + *

+ * + * @author generator + * @since 2023-11-16 */ @Slf4j public class AcsUtil { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/TaskListType.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/TaskListType.java deleted file mode 100644 index 88856c7..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/TaskListType.java +++ /dev/null @@ -1 +0,0 @@ -package org.nl.wms.sch.task_manage.task; \ No newline at end of file diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/TaskServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/TaskServiceImpl.java deleted file mode 100644 index 6cb1295..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/TaskServiceImpl.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.nl.wms.sch.task_manage.task; - -import cn.hutool.core.lang.Assert; -import com.alibaba.fastjson.JSONObject; -import org.nl.common.exception.BadRequestException; - -/** - * @author ldjun - * @version 1.0 - * @date 2023年05月08日 13:59 - * @desc desc - */ -public class TaskServiceImpl { - String create(JSONObject param) throws BadRequestException { - - - return null; - } - - public void beforeToCreate(JSONObject param) throws BadRequestException { - String point_code = param.getString("point_code"); - Assert.notEmpty(point_code, "点位编码为空!"); - //1、查找点位 - //2、校验点位是否启用 - //3、校验点位是否自动 - //4、任务类型 - - - } - - public void createAfter(JSONObject param) throws BadRequestException { - - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskApplyDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskApplyDto.java deleted file mode 100644 index ee9e476..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskApplyDto.java +++ /dev/null @@ -1 +0,0 @@ -package org.nl.wms.sch.task_manage.task.core; \ No newline at end of file diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskApplyType.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskApplyType.java index 82a4a9e..0a009e1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskApplyType.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskApplyType.java @@ -8,9 +8,13 @@ package org.nl.wms.sch.task_manage.task.core; */ public enum TaskApplyType { + // 送料 SEND_MATERIAL(1, "送料", "送料"), + // 送空载具 SEND_EMPTY(2, "送空载具", "送空载具"), + // 叫料 CALL_MATERIAL(3, "叫料", "叫料"), + // 叫空载具 CALL_EMPTY(4, "叫空载具", "叫空载具"); TaskApplyType(int code, String name, String desc) { @@ -19,10 +23,16 @@ public enum TaskApplyType { this.desc = desc; } - // 操作设备类型编码 + /** + * 操作设备类型编码 + */ private int code; - // 操作设备类型名字 + /** + * 操作设备类型名字 + */ private String name; - //操作设备类型类型 + /** + * 操作设备类型类型 + */ private String desc; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskDto.java deleted file mode 100644 index d9683df..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskDto.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.nl.wms.sch.task_manage.task.core; - -/** - * @author ldjun - * @version 1.0 - * @date 2023年05月08日 13:41 - * @desc desc - */ -public class TaskDto { - private String task_code; -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskOperateType.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskOperateType.java index ba2f756..044207e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskOperateType.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskOperateType.java @@ -1,13 +1,23 @@ package org.nl.wms.sch.task_manage.task.core; /** + *

* 任务操作终端类型 + *

+ * + * @author generator + * @since 2023-11-16 */ public enum TaskOperateType { + // ACS ACS("1", "ACS", "ACS"), + // 创建完成 PC("2", "PC", "创建完成"), + // 手持 MOBILE("3", "手持", "手持"), + // 定时任务 QUARTZ("4", "定时任务", "定时任务"), + // 其它" OTHER("5", "其它", "其它"); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskStatus.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskStatus.java index 02ef58d..eb3ad52 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskStatus.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/core/TaskStatus.java @@ -1,14 +1,29 @@ package org.nl.wms.sch.task_manage.task.core; +/** + *

+ * 任务状态枚举 + *

+ * + * @author generator + * @since 2023-11-16 + */ public enum TaskStatus { - APPLY("1", "申请", "申请"), - CREATED("2", "创建完成", "创建完成"), - ISSUED("3", "下发", "下发"), - EXECUTING("4", "执行中", "执行中"), - FINISHED("5", "完成", "完成"), - CANCELED("6", "已取消", "已取消"), - UNFINISHED("7", "未完成", "未完成"); + // 申请 + APPLY("1", "申请", "申请"), + // 创建完成 + CREATED("2", "创建完成", "创建完成"), + // 下发 + ISSUED("3", "下发", "下发"), + // 执行中 + EXECUTING("4", "执行中", "执行中"), + // 完成 + FINISHED("5", "完成", "完成"), + // 已取消 + CANCELED("6", "已取消", "已取消"), + // 未完成 + UNFINISHED("7", "未完成", "未完成"); TaskStatus(String code, String name, String desc) { this.code = code; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/RYKQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/RYKQLTask.java deleted file mode 100644 index 9a3e419..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/RYKQLTask.java +++ /dev/null @@ -1,164 +0,0 @@ -//package org.nl.wms.sch.task_manage.task.tasks.auto; -// -//import cn.hutool.core.util.ObjectUtil; -//import com.alibaba.fastjson.JSONObject; -//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -//import org.nl.common.exception.BadRequestException; -//import org.nl.system.service.param.ISysParamService; -//import org.nl.system.service.param.dao.Param; -//import org.nl.wms.pdm.service.IPdmBdWorkorderService; -//import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -//import org.nl.wms.sch.point.service.ISchBasePointService; -//import org.nl.wms.sch.point.service.dao.SchBasePoint; -//import org.nl.wms.sch.task.service.ISchBaseTaskService; -//import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -//import org.nl.wms.sch.task.service.dao.SchBaseTask; -//import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -//import org.nl.wms.sch.task_manage.AbstractTask; -//import org.nl.wms.sch.task_manage.GeneralDefinition; -//import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -//import org.nl.wms.sch.task_manage.task.TaskType; -//import org.nl.wms.sch.task_manage.task.core.TaskStatus; -//import org.nl.wms.util.PointUtils; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Component; -//import org.springframework.transaction.annotation.Transactional; -// -//import java.util.Arrays; -//import java.util.List; -//import java.util.stream.Collectors; -// -///** -// * @Author: lyd -// * @Description: 入窑口叫料 -// * @Date: 2023/6/19 -// */ -//@Component -//@TaskType("RYKQLTask") -//public class RYKQLTask extends AbstractTask { -// private static String TASK_CONFIG_CODE = "RYKQLTask"; -// @Autowired -// private ISchBasePointService pointService; -// @Autowired -// private ISchBaseTaskService taskService; -// @Autowired -// private ISchBaseTaskconfigService taskConfigService; -// @Autowired -// private ISysParamService paramService; -// @Override -// protected void create() throws BadRequestException { -// -// } -// -// @Override -// @Transactional(rollbackFor = Exception.class) -// protected void autoCreate() { -// // 自动创建任务 -// Param autoKilnCall = paramService.findByCode(GeneralDefinition.AUTO_KILN_CALL); -// if (autoKilnCall.getValue().equals(GeneralDefinition.NO)) { -// return; -// } -// // 判断当前点位有没有任务执行 -// List unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(TASK_CONFIG_CODE); -// if (unFinishTasksByTaskConfig.size() > 0) { -// // 有任务在执行就不创建 -// return; -// } -// // 获取任务配置 -// SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() -// .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); -// // 创建任务 -// SchBaseTask task = new SchBaseTask(); // 任务实体 -// // 2、创建申请任务 -// task.setConfig_code(TASK_CONFIG_CODE); -// task.setCreate_mode(GeneralDefinition.AUTO_CREATION); -// task.setTask_status(TaskStatus.APPLY.getCode()); -// task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码 -// // 设置起/终点 -// this.setTaskPoint(taskConfig, task, "RYK"); -// // 找起点 -// List startRegionStr = Arrays -// .stream(taskConfig.getStart_region_str().split(",")) -// .collect(Collectors.toList()); -// SchBasePoint point = findStartPoint(startRegionStr); -// if (ObjectUtil.isEmpty(point)) { -// task.setRemark("未找到所需点位!"); -// taskService.create(task); -// // 消息通知 -// return; -// } -// // 设置终点并修改创建成功状态 -// task.setPoint_code1(point.getPoint_code()); -// task.setRemark(""); -// task.setTask_status(TaskStatus.CREATED.getCode()); -// taskService.create(task); -// point.setIng_task_code(task.getTask_code()); -// pointService.update(point); -// //下发 -//// this.renotifyAcs(task); -// } -// -// private SchBasePoint findStartPoint(List startRegionStr) { -// // 无需工单 -// // 默认认为缓存线有东西 -// LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); -// lam.in(SchBasePoint::getRegion_code, startRegionStr) -// .eq(SchBasePoint::getPoint_type, GeneralDefinition.EXIT) // 点位类型是缓存输送线出口 -// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 -// .or() -// .eq(SchBasePoint::getIng_task_code, "")) -// .eq(SchBasePoint::getIs_used, true); -// List schBasePoints = pointService.list(lam); -// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; -// } -// -// @Override -// protected void updateStatus(String task_code, TaskStatus status) { -// // 校验任务 -// SchBaseTask taskObj = taskService.getByCode(task_code); -// if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { -// throw new BadRequestException(LangProcess.msg("task_statusWrong")); -// } -// if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { -// throw new BadRequestException(LangProcess.msg("task_statusWrong")); -// } -// // 获取参数 -// String startPoint = taskObj.getPoint_code1(); // 获取起点 -// SchBasePoint startPointObj = pointService.getById(startPoint); -// // 根据传来的类型去对任务进行操作 -// if (status.equals(TaskStatus.EXECUTING)) { // 执行中 -// taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); -// taskObj.setRemark("执行中"); -// } -// if (status.equals(TaskStatus.FINISHED)) { // 完成 -// // 起点解锁 -// if (ObjectUtil.isNotEmpty(startPointObj)) { -// startPointObj.setIng_task_code(""); -// pointService.update(startPointObj); -// } -// // 任务完成 -// taskObj.setTask_status(TaskStatus.FINISHED.getCode()); -// taskObj.setRemark(GeneralDefinition.TASK_FINISH); -// } -// if (status.equals(TaskStatus.CANCELED)) { // 取消 -// // 起点解锁 -// if (ObjectUtil.isNotEmpty(startPointObj)) { -// startPointObj.setIng_task_code(""); -// pointService.update(startPointObj); -// } -// taskObj.setRemark(GeneralDefinition.TASK_CANCEL); -// taskObj.setTask_status(TaskStatus.CANCELED.getCode()); -// } -// taskService.update(taskObj); -// } -// -// @Override -// public void forceFinish(String task_code) { -// this.updateStatus(task_code, TaskStatus.FINISHED); -// } -// -// @Override -// public void cancel(String task_code) { -// this.updateStatus(task_code, TaskStatus.CANCELED); -// } -//} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java deleted file mode 100644 index 6f82ee7..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java +++ /dev/null @@ -1,211 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.dtk; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.dtk.mapper.DTKMapper; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 拆盘机呼叫空托 - * @Date: 2023/6/21 - */ -@Component -@TaskType("DTKQKTask") -public class CTQKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "DTKQKTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISysNoticeService noticeService; - @Autowired - private DTKMapper dtkMapper; - @Override - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - SchBasePoint point = findStartPoint(startRegionStr); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("暂无托盘!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getPoint_code2(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setRemark(""); - task.setVehicle_qty(point.getVehicle_qty()); - task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.updateById(task); - // 点位信息更新 - point.setIng_task_code(task.getTask_code()); - pointService.update(point); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - SchBasePoint point = findStartPoint(startRegionStr); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("拆盘机暂无托盘!", TASK_CONFIG_CODE + task.getPoint_code2(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException(LangProcess.msg("point_checkNull")); - } - // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setRemark(""); - task.setVehicle_qty(point.getVehicle_qty()); - task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.save(task); - // 点位更新 - point.setIng_task_code(task.getTask_code()); - pointService.update(point); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - - /** - * 从区域中获取一推钢托盘 - * @param startRegionStr - * @return - */ - private SchBasePoint findStartPoint(List startRegionStr) { - // 钢托盘缓存区域的空盘是1 状态不同 - List points = dtkMapper.findPointForCTQK(startRegionStr); - return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); - SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPoint(startPointObj); - endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - endPointObj.setVehicle_type(GeneralDefinition.STEEL_TRAY); - endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); - endPointObj.setUpdate_time(DateUtil.now()); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); - // 起点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - pointService.updateById(startPointObj); - } - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java deleted file mode 100644 index c39844e..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java +++ /dev/null @@ -1,206 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.dtk; - -import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.dtk.mapper.DTKMapper; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 叠托送空盘任务:-> 货架 - * @Date: 2023/6/21 - */ -@Component -@TaskType("DTKSKTask") -public class DTSKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "DTKSKTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISysNoticeService noticeService; - @Autowired - private DTKMapper dtkMapper; - - @Override - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - // 找终点 - SchBasePoint point = findNextPoint(nextRegionStr); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setVehicle_type(GeneralDefinition.STEEL_TRAY); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - // 找终点 - SchBasePoint point = findNextPoint(nextRegionStr); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("货架暂无货位存放空托盘!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException(LangProcess.msg("point_checkNull")); - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setVehicle_type(GeneralDefinition.STEEL_TRAY); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - } - - private SchBasePoint findNextPoint(List nextRegionStr) { - List points = dtkMapper.findPointForDTSK(nextRegionStr); - return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - String vehicleType = ObjectUtil.isNotEmpty(taskObj.getVehicle_type()) ? taskObj.getVehicle_type() : ""; - SchBasePoint endPointObj = pointService.getById(endPoint); - SchBasePoint startPointObj = pointService.getById(startPoint); - // 设置载具类型、点位状态、释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - endPointObj.setVehicle_type(vehicleType); - endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); // 设置载具数量 - endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - // 起点清空 - PointUtils.clearPoint(startPointObj); - } - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - // 释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.java deleted file mode 100644 index 470304c..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.dtk.mapper; - -import org.nl.wms.sch.point.service.dao.SchBasePoint; - -import java.util.List; - -/** - * @Author: lyd - * @Description: 叠托库mapper - * @Date: 2023/6/21 - */ -public interface DTKMapper { - List findPointForDTSK(List regionCode); - - /** - * 拆盘机找空盘 - * @param regionCode - * @return - */ - List findPointForCTQK(List regionCode); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml deleted file mode 100644 index 6c68cdf..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java deleted file mode 100644 index 3a8bdfc..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java +++ /dev/null @@ -1,300 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.fj; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.ext.acs.service.WmsToAcsService; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 分拣满空任务 - 4点 - * @Date: 2023/6/21 - */ -@Component -@TaskType("FJMLTask") -public class FJMKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "FJMLTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISysNoticeService noticeService; - @Autowired - private FJMapper fjMapper; - @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired - private WmsToAcsService wmsToAcsService; - - @Override - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - String requestParam = task.getRequest_param();// 任务的其他数据 - JSONObject jsonObject = JSONObject.parseObject(requestParam); - String workOrderCode = jsonObject.getString("workorder_code"); // 工单 - String startPoint = task.getPoint_code1(); - // 获取起点 回写载具编码 - SchBasePoint startPointObj = pointService.getById(startPoint); - task.setVehicle_code(startPointObj.getVehicle_code()); // 起点的木托盘编码 - // 找终点 - /** 包装位 */ - SchBasePoint packagePoint = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(packagePoint)) { - task.setRemark("包装线不可用!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - task.setPoint_code2(packagePoint.getPoint_code()); // 包装线 - // 大于等于2就可以码 - if (jsonObject.getInteger("special_param") == 0) { - /** 覆膜机木托盘位 */ - SchBasePoint LaminatePoint = findStartPoint(startRegionStr, jsonObject); - if (ObjectUtil.isEmpty(LaminatePoint)) { - noticeService.createNotice("覆膜区不可用!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - // 消息通知 - throw new BadRequestException("覆膜区不可用!"); - } - // 把这个设备位放到任务中 - JSONObject response = new JSONObject(); - String responseParam = task.getResponse_param(); - if (ObjectUtil.isNotEmpty(responseParam)) { - response = JSON.parseObject(responseParam); - } - response.put("fmj_device", LaminatePoint.getPoint_code()); - // 设置终点并修改创建成功状态 - task.setPoint_code3(LaminatePoint.getParent_point_code()); - task.setPoint_code4(startPoint); - task.setResponse_param(response.toJSONString()); - // 覆膜机对接位上锁 - SchBasePoint basePoint = pointService.getById(LaminatePoint.getParent_point_code()); - basePoint.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(basePoint); - pointService.updateById(basePoint); - } - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.save(task); - // 包装线上锁 - packagePoint.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(packagePoint); - pointService.updateById(packagePoint); - } - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - JSONObject jsonObject = JSONObject.parseObject(task.getRequest_param()); - String startPoint = task.getPoint_code1(); - // 找终点 - /** 包装位 */ - SchBasePoint packagePoint = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(packagePoint)) { - // 消息通知 - noticeService.createNotice("包装线不可用!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException("包装线不可用!"); - } - // 设置组盘 - 需要的话由子类自行实现 - task.setGroup_id(setGroupPlate(jsonObject)); - task.setPoint_code2(packagePoint.getPoint_code()); - // 大于等于2就可以码 - if (jsonObject.getInteger("special_param") == 0) { - /** 覆膜机木托盘位 */ - SchBasePoint LaminatePoint = findStartPoint(startRegionStr, jsonObject); - if (ObjectUtil.isEmpty(LaminatePoint)) { - noticeService.createNotice("覆膜区不可用!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - // 消息通知 - throw new BadRequestException("覆膜区不可用!"); - } - // 把这个设备位放到任务中 - JSONObject response = new JSONObject(); - String responseParam = task.getResponse_param(); - if (ObjectUtil.isNotEmpty(responseParam)) { - response = JSON.parseObject(responseParam); - } - response.put("fmj_device", LaminatePoint.getPoint_code()); - // 设置终点并修改创建成功状态 - task.setPoint_code3(LaminatePoint.getParent_point_code()); - task.setPoint_code4(startPoint); - task.setResponse_param(response.toJSONString()); - // 覆膜机对接位上锁 - SchBasePoint basePoint = pointService.getById(LaminatePoint.getParent_point_code()); - basePoint.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(basePoint); - pointService.updateById(basePoint); - } - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.save(task); - // 包装线上锁 - packagePoint.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(packagePoint); - pointService.updateById(packagePoint); - - } - - @Override - public String setGroupPlate(JSONObject param) { - return null; - } - - /** - * 从覆膜区找个空木托盘 - * - * @param startRegionStr - * @param extData - * @return - */ - private SchBasePoint findStartPoint(List startRegionStr, JSONObject extData) { - return null; - } - - /** - * 从包装线找个位置放货 - * - * @param nextRegionStr - * @param requestParam - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject requestParam) { - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, nextRegionStr) - .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) - .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 - .or() - .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getPoint_type, GeneralDefinition.DOCKING_POINT) - .orderByAsc(SchBasePoint::getIn_order_seq) - .orderByAsc(SchBasePoint::getPoint_code); - List schBasePoints = pointService.list(lam); - return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; - } - - @Override - @Transactional - protected void updateStatus(String task_code, TaskStatus status) { - // 任务完成需要组盘,包装线解锁,覆膜对接位清空,分拣拆垛对接位设置空盘 - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String bzxPoint = taskObj.getPoint_code2(); // 获取终点1 - String fmPoint = taskObj.getPoint_code3(); // 获取起点2 - SchBasePoint bzxPointObj = pointService.getById(bzxPoint); - SchBasePoint fmPointObj = pointService.getById(fmPoint); - if (ObjectUtil.isNotEmpty(bzxPointObj)) { - // 释放点位 - bzxPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(bzxPointObj, taskFinishedType); - pointService.updateById(bzxPointObj); - } - if (ObjectUtil.isNotEmpty(fmPointObj)) { - fmPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(fmPointObj, taskFinishedType); - pointService.updateById(fmPointObj); - } - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java deleted file mode 100644 index e10c837..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java +++ /dev/null @@ -1,223 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.fj; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.ext.acs.service.WmsToAcsService; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 分拣呼叫空木托盘任务 - 2点 - * @Date: 2023/6/21 - */ -@Component -@TaskType("FJQKTask") -public class FJQKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "FJQKTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISysNoticeService noticeService; - @Autowired - private WmsToAcsService wmsToAcsService; - @Autowired - private FJMapper fjMapper; - @Override - @Transactional - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - String requestParam = task.getRequest_param(); - JSONObject extGroupData = JSONObject.parseObject(requestParam); - SchBasePoint point = findStartPoint(startRegionStr, extGroupData); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("覆膜机不可用!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getPoint_code2(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 将覆膜机设备放到任务中 - String responseParam = task.getResponse_param(); - JSONObject param = new JSONObject(); - if (ObjectUtil.isNotEmpty(responseParam)) { - param = JSON.parseObject(responseParam); - } - // 把这个设备位放到任务中 - param.put("fmj_device", point.getPoint_code()); - // 设置起点并修改创建成功状态 - task.setPoint_code1(point.getParent_point_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - // todo: 未确认是否放在1还是2,目前规定四点任务空盘的载具编码是2 - task.setRemark(""); - task.setGroup_id(point.getGroup_id()); - task.setResponse_param(param.toJSONString()); - taskService.updateById(task); - - // 父点位锁住 - SchBasePoint basePoint = pointService.getById(point.getParent_point_code()); - basePoint.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(basePoint); - pointService.updateById(basePoint); - - //下发 - //this.renotifyAcs(task); - } - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - String requestParam = task.getRequest_param(); - JSONObject extGroupData = JSONObject.parseObject(requestParam); - SchBasePoint point = findStartPoint(startRegionStr, extGroupData); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("覆膜机不可用!", TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException("覆膜机不可用!"); - } - // 将覆膜机设备放到任务中 - String responseParam = task.getResponse_param(); - JSONObject param = new JSONObject(); - if (ObjectUtil.isNotEmpty(responseParam)) { - param = JSON.parseObject(responseParam); - } - // 把这个设备位放到任务中 - param.put("fmj_device", point.getPoint_code()); - // 设置起点并修改创建成功状态 - task.setPoint_code1(point.getParent_point_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setResponse_param(param.toJSONString()); - // todo: 未确认是否放在1还是2,目前规定四点任务空盘的载具编码是2 - task.setRemark(""); - task.setGroup_id(point.getGroup_id()); - taskService.save(task); - - // 父点位锁住 - SchBasePoint basePoint = pointService.getById(point.getParent_point_code()); - basePoint.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(basePoint); - pointService.updateById(basePoint); - } - - /** - * 找到的是覆膜机设备位置,父位才是对接位 - * @param startRegionStr - * @param extGroupData - * @return - */ - private SchBasePoint findStartPoint(List startRegionStr, JSONObject extGroupData) { - return null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - } - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 载具编码:前面需要根据任务判断,没有载具不能生成任务 - String startPoint = taskObj.getPoint_code1(); // 获取终点 - SchBasePoint startPointObj = pointService.getById(startPoint); - // 终点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - pointService.updateById(startPointObj); - } - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java deleted file mode 100644 index dbe8d0e..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java +++ /dev/null @@ -1,251 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.fj; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; -import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 分拣缺料任务 - * @Date: 2023/6/20 - */ -@Component -@TaskType("FJQLTask") -public class FJQLTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "FJQLTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired - private ISysNoticeService noticeService; - @Autowired - private FJMapper fjMapper; - - @Autowired - private IPdmBdProductionProcessTrackingService processTrackingService; - @Override - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); - // 钢托盘 - task.setVehicle_type(GeneralDefinition.STEEL_TRAY); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - String requestParam = task.getRequest_param(); - JSONObject extGroupData = JSONObject.parseObject(requestParam); - extGroupData.put("vehicle_type", task.getVehicle_type()); - SchBasePoint point = findStartPoint(startRegionStr, extGroupData); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("钢托盘缓存货架没有所需物料!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置起点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setVehicle_code(point.getVehicle_code()); - task.setGroup_id(point.getGroup_id()); - task.setRemark(""); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 - //this.renotifyAcs(task); - } - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); - // 钢托盘 - task.setVehicle_type(GeneralDefinition.STEEL_TRAY); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - String requestParam = task.getRequest_param(); - JSONObject extGroupData = JSONObject.parseObject(requestParam); - extGroupData.put("vehicle_type", task.getVehicle_type()); - SchBasePoint point = findStartPoint(startRegionStr, extGroupData); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("钢托盘缓存货架没有所需物料!", TASK_CONFIG_CODE + task.getPoint_code2(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException(LangProcess.msg("point_checkNull")); - } - // 设置起点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setVehicle_code(point.getVehicle_code()); - task.setGroup_id(point.getGroup_id()); - task.setRemark(""); - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - - /** - * 找起点:到钢托盘缓存找一个物料与分拣工单的物料相同的物料 - * 还需要判断是否烧制,选择已经烧制的物料 - * @param startRegionStr - * @param requestParam - * @return - */ - private SchBasePoint findStartPoint(List startRegionStr, JSONObject requestParam) { - return null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取起点 - SchBasePoint startPointObj = pointService.getById(startPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); - // 除了解锁需要将组盘表中的物料绑定载具设置为已解绑 - // 起点设置空位 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPoint(startPointObj); - SchBaseVehiclematerialgroup vehicleMaterialGroupObj = - vehiclematerialgroupService.getById(taskObj.getGroup_id()); - // 等到变成空盘才能解除 -// vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); - vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code()); // 当前位置 - vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name()); - vehicleMaterialGroupObj.setTask_code(taskObj.getTask_code()); - vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code()); - TaskUtils.setGroupUpdateByType(vehicleMaterialGroupObj, taskFinishedType); - vehiclematerialgroupService.updateById(vehicleMaterialGroupObj); - // 插入生产过程跟踪表 - PdmBdProductionProcessTracking processTracking = new PdmBdProductionProcessTracking(); - processTracking.setBuss_move_id(vehicleMaterialGroupObj.getBuss_move_id()); - processTracking.setProcess_action("钢托盘缓存位到分拣"); - processTracking.setProcess_location(endPoint); - processTracking.setRecord_time(DateUtil.now()); - processTrackingService.create(processTracking); - // 终点设置对应的参数 - endPointObj.setVehicle_code(vehicleMaterialGroupObj.getVehicle_code()); - endPointObj.setVehicle_type(vehicleMaterialGroupObj.getVehicle_type()); - endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - String startPoint = taskObj.getPoint_code1(); // 获取终点 - SchBasePoint startPointObj = pointService.getById(startPoint); - // 终点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - pointService.updateById(startPointObj); - } - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQZRKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQZRKTask.java deleted file mode 100644 index 94f2975..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQZRKTask.java +++ /dev/null @@ -1,234 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.fj; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.*; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: rgv - 分拣强制入库任务 - 2点 - * @Date: 2023/6/21 - */ -@Component -@TaskType("FJQZRKTask") -public class FJQZRKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "FJQZRKTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISysNoticeService noticeService; - - @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Override - protected void create() throws BadRequestException { - // 最后一坨不需要呼叫空盘 - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - SchBasePoint point = findNextPoint(nextRegionStr); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 - //this.renotifyAcs(task); - } - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - SchBasePoint point = findNextPoint(nextRegionStr); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("找不到可用的包装位!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException(LangProcess.msg("point_checkNull")); - } - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - // 设置组盘 - 需要的话由子类自行实现 - task.setGroup_id(setGroupPlate(jsonObject)); - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - - /** - * 到对应的区域中获取放置点 - * @param nextRegionStr - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr) { - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, nextRegionStr) - .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 - .or() - .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getPoint_type, GeneralDefinition.DOCKING_POINT) - .eq(SchBasePoint::getIs_used, true); - List schBasePoints = pointService.list(lam); - return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; - } - - @Override - public String setGroupPlate(JSONObject param) { - return null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - String startPoint = taskObj.getPoint_code1(); // 获取终点 - SchBasePoint startPointObj = pointService.getById(startPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); - // 设置载具类型、点位状态、释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - - // 组盘设置已经解绑 - SchBaseVehiclematerialgroup vehicleMaterialGroupObj = - vehiclematerialgroupService.getById(taskObj.getGroup_id()); - vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); - vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code()); // 当前位置 - vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name()); - vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code()); - TaskUtils.setGroupUpdateByType(vehicleMaterialGroupObj, taskFinishedType); - vehiclematerialgroupService.updateById(vehicleMaterialGroupObj); - } - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPoint(startPointObj); - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - // 释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java deleted file mode 100644 index 35e2223..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java +++ /dev/null @@ -1,256 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.fj; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: rgv - 分拣强制入库任务 - 2点 改:不需要强制入库,改为人工分拣入库的方法 - * @Date: 2023/6/21 - */ -@Component -@TaskType("RGFJRKTask") -public class FJRKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "RGFJRKTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISysNoticeService noticeService; - @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired - private FJMapper fjMapper; - @Override - protected void create() throws BadRequestException { - // 最后一坨不需要呼叫空盘 - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - SchBasePoint point = findNextPoint(nextRegionStr); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 - //this.renotifyAcs(task); - } - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - String requestParam = task.getRequest_param();// 任务的其他数据 - JSONObject jsonObject = JSONObject.parseObject(requestParam); - TaskUtils.setUpdateByAcs(task); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - SchBasePoint packagePoint = findNextPoint(nextRegionStr); - if (ObjectUtil.isEmpty(packagePoint)) { - // 消息通知 - noticeService.createNotice("找不到可用的包装位!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException("找不到可用的包装位!"); - } - task.setPoint_code2(packagePoint.getPoint_code()); - // 设置组盘 - 需要的话由子类自行实现 - task.setGroup_id(setGroupPlate(jsonObject)); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.save(task); - // 包装线上锁 - packagePoint.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(packagePoint); - pointService.updateById(packagePoint); - } - - /** - * 到对应的区域中获取放置点 - * @param nextRegionStr - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr) { - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, nextRegionStr) - .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) - .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 - .or() - .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getPoint_type, GeneralDefinition.DOCKING_POINT) - .eq(SchBasePoint::getIs_used, true); - List schBasePoints = pointService.list(lam); - return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; - } - - @Override - public String setGroupPlate(JSONObject param) { - return null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - String requestParam = taskObj.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - String workorderCode = jsonObject.getString("workorder_code"); - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - String fjcPoint = taskObj.getPoint_code4(); // 获取起点 - String fmPoint = taskObj.getPoint_code3(); // 获取覆膜机 - SchBasePoint fjcPointObj = pointService.getById(fjcPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); - SchBasePoint fmPointObj = pointService.getById(fmPoint); - // 设置载具类型、点位状态、释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - // 组盘设置已经解绑 - SchBaseVehiclematerialgroup vehicleMaterialGroupObj = - vehiclematerialgroupService.getById(taskObj.getGroup_id()); - vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); - vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code()); // 当前位置 - vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name()); - vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code()); - TaskUtils.setGroupUpdateByType(vehicleMaterialGroupObj, taskFinishedType); - vehiclematerialgroupService.updateById(vehicleMaterialGroupObj); - } - if (ObjectUtil.isNotEmpty(fmPointObj)) { - // 覆膜位: 解锁 . 清空 - PointUtils.setUpdateByType(fmPointObj, taskFinishedType); - PointUtils.clearPoint(fmPointObj); - // 工单的真实数+1 - } - // 分拣机械手: 清空 - if (ObjectUtil.isNotEmpty(fjcPointObj)) { - // 机械手对接位: 赋值 - fjcPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - fjcPointObj.setVehicle_qty(1); - fjcPointObj.setVehicle_type(taskObj.getVehicle_type()); - fjcPointObj.setVehicle_code(taskObj.getVehicle_code2()); // 拿过来的载具编码 - PointUtils.setUpdateByType(fjcPointObj, taskFinishedType); - pointService.updateById(fjcPointObj); - } - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - // 释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java deleted file mode 100644 index c3113fc..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java +++ /dev/null @@ -1,238 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.fj; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.ext.mes.service.WmsToMesService; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 分拣送空托 -> 叠托位 - * @Date: 2023/6/20 - */ -@Component -@TaskType("FJSKTask") -public class FJSKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "FJSKTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private FJMapper fjMapper; - @Autowired - private WmsToMesService wmsToMesService; - - @Autowired - private ISysNoticeService noticeService; - @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - - @Override - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - SchBasePoint point = findNextPoint(nextRegionStr); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("叠盘架位置不可用!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setVehicle_type(GeneralDefinition.STEEL_TRAY); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 - //this.renotifyAcs(task); - } - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - SchBasePoint point = findNextPoint(nextRegionStr); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("叠盘架位置不可用!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException("叠盘架位置不可用!"); - } - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - // 设置组盘 - 需要的话由子类自行实现 - task.setGroup_id(setGroupPlate(jsonObject)); - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setVehicle_type(GeneralDefinition.STEEL_TRAY); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - - /** - * 找叠托位,无锁的位置即可 - * @param nextRegionStr - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr) { - List points = fjMapper.findPointForFJSK(nextRegionStr); - return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public String setGroupPlate(JSONObject param) { - // 查找组盘表信息,不做修改 - String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code")); - String vehicleType = param.getString("vehicle_type"); - if (vehicleType == null || vehicleType.equals(GeneralDefinition.NO)) { - vehicleType = GeneralDefinition.STEEL_TRAY; - } - SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getGroupInfo(vehicleCode, - vehicleType, GroupBindMaterialStatusEnum.BOUND.getValue()); - return ObjectUtil.isNotEmpty(one) ? one.getGroup_id() : ""; - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - String vehicleType = ObjectUtil.isNotEmpty(taskObj.getVehicle_type()) ? taskObj.getVehicle_type() : ""; - SchBasePoint endPointObj = pointService.getById(endPoint); - // 设置载具类型、点位状态、释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - endPointObj.setVehicle_type(vehicleType); - endPointObj.setVehicle_qty(endPointObj.getVehicle_qty() + 1); // 设置载具数量 - endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - // 组盘状态改变 - SchBaseVehiclematerialgroup vehicleMaterialGroupObj = - vehiclematerialgroupService.getById(taskObj.getGroup_id()); - vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); - TaskUtils.setGroupUpdateByType(vehicleMaterialGroupObj, taskFinishedType); - vehiclematerialgroupService.updateById(vehicleMaterialGroupObj); - } - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - // 释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.update(endPointObj); - } - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java deleted file mode 100644 index 20c350b..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java +++ /dev/null @@ -1,267 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.fj; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 分拣回收剩料 - * @Date: 2023/7/20 - */ -@Component -@TaskType("FJSLHSTask") -public class FJSLTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "FJSLHSTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - - @Autowired - private ISysNoticeService noticeService; - @Override - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - // 找终点 - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("分拣机械手[" + task.getPoint_code1() + "]未找到所需点位!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - TaskUtils.setUpdateByAcs(task); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 - //this.renotifyAcs(task); - } - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - // 找终点 - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("分拣机械手[" + task.getPoint_code1() + "]未找到所需点位!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException(LangProcess.msg("point_checkNull")); - } - // 设置组盘 - 需要的话由子类自行实现 - task.setGroup_id(setGroupPlate(jsonObject)); - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - TaskUtils.setUpdateByAcs(task); - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject jsonObject) { - LambdaQueryWrapper lam = new QueryWrapper().lambda(); - lam.in(SchBasePoint::getRegion_code, nextRegionStr) - .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) - .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 - .or() - .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getIs_used, true) - .orderByAsc(SchBasePoint::getIn_order_seq) - .orderByAsc(SchBasePoint::getPoint_code); - List schBasePoints = pointService.list(lam); - return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; - } - - @Override - public String setGroupPlate(JSONObject param) { - // 组盘,返回组盘标识,设置待绑定,搬运结束就设置已绑定 - // 查找 - String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code")); - if (vehicleCode == null) { - throw new BadRequestException(LangProcess.msg("vehicle_check")); - } - String vehicleType = param.getString("vehicle_type"); - JSONObject stackParameters = param.getJSONObject("palletize"); // 参数 - if (vehicleType == null || vehicleType.equals(GeneralDefinition.NO)) { - vehicleType = GeneralDefinition.STEEL_TRAY; - } - // 修改参数 - SchBaseVehiclematerialgroup groupObject = vehiclematerialgroupService.getGroupInfo(vehicleCode, vehicleType, - GroupBindMaterialStatusEnum.BOUND.getValue()); - if (ObjectUtil.isEmpty(groupObject)) { - throw new BadRequestException(LangProcess.msg("vehicle_check_1",vehicleCode)); - } - groupObject.setIs_full(false); - groupObject.setMaterial_qty(param.getInteger("qty")); - groupObject.setExt_data(JSONObject.toJSONString(stackParameters)); - TaskUtils.setGroupUpdateByAcs(groupObject); - vehiclematerialgroupService.updateById(groupObject); - return groupObject.getGroup_id(); - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - String vehicleCode = taskObj.getVehicle_code(); - String vehicleType = taskObj.getVehicle_type(); - String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint startPointObj = pointService.getById(startPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); - if (ObjectUtil.isNotEmpty(endPointObj)) { - // 终点解锁 - endPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - // 记录库存并解锁 - endPointObj.setIng_task_code(""); - endPointObj.setVehicle_code(vehicleCode); - endPointObj.setVehicle_qty(1); - endPointObj.setVehicle_type(vehicleType); - endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - // 组盘表数据改成已绑定 - SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(taskObj.getGroup_id()); - TaskUtils.setGroupUpdateByType(vehiclematerialgroup, taskFinishedType); - vehiclematerialgroup.setPoint_code(endPointObj.getPoint_code()); // 当前位置 - vehiclematerialgroup.setPoint_name(endPointObj.getPoint_name()); - vehiclematerialgroup.setMove_way(vehiclematerialgroup.getMove_way() + " -> " + endPointObj.getPoint_code()); - vehiclematerialgroupService.updateById(vehiclematerialgroup); - } - // 起点清空 - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPoint(startPointObj); - - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - // 终点解锁 - if (ObjectUtil.isNotEmpty(endPointObj)) { - endPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.java deleted file mode 100644 index 473f339..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.fj.mapper; - -import com.alibaba.fastjson.JSONObject; -import org.apache.ibatis.annotations.Param; -import org.nl.wms.sch.point.service.dao.SchBasePoint; - -import java.util.List; - -/** - * @Author: lyd - * @Description: 分拣 - * @Date: 2023/6/20 - */ -public interface FJMapper { - List findPointForFJQL(List regionCode, String materialId); - List findPointForFJSK(List regionCode); - - SchBasePoint findPointForFJQK(List regionCode, @Param("fluentPut") JSONObject fluentPut); - - /** - * 获取库存剩余数量 - * @return - */ - int getInventoryQuantity(String material_id); - - /** - * 获取满托需要多少块 - * eg: 2*7*6 - * @param materialId - * @return - */ - String getNeedFullNumber(String materialId); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml deleted file mode 100644 index 3b0369f..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java deleted file mode 100644 index f7542ed..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java +++ /dev/null @@ -1,321 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.hn; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.database.material.service.IMdBaseMaterialService; -import org.nl.wms.database.material.service.dao.MdBaseMaterial; -import org.nl.wms.pdm.record.service.IPdmBdRequestMaterialRecordService; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.*; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.hn.mapper.HNMapper; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author ldjun - * @version 1.0 - * @date 2023年05月16日 16:44 - * @desc 混碾满料任务: 混碾机 -> 困料输送线 - */ -@Component -@TaskType("HLMLTask") -public class HNMLTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "HLMLTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired - private IPdmBdRequestMaterialRecordService requestMaterialRecordService; - @Autowired - private ISysNoticeService noticeService; - @Autowired - private IMdBaseMaterialService materialService; - @Autowired - private HNMapper hnMapper; - - - @Override - @Transactional(rollbackFor = Exception.class) - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } else if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } else if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - /** - * 具体业务 - */ - @Override - @Transactional(rollbackFor = Exception.class) - protected void create() { // 找点+下发-定时任务 - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - String requestParam = task.getRequest_param();// 任务的其他数据 - JSONObject jsonObject = JSONObject.parseObject(requestParam); - // 找终点 - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未存在生产该料的压机!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), NoticeTypeEnum.WARN.getCode()); - continue; - } - // 叫料完成 -// requestMaterialRecordService.callMaterialFinish(point.getRecord_id()); - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - task.setVehicle_type(GeneralDefinition.MATERIAL_CUP); - // 告知acs去左边右边 - int number = getNumber(point); - task.setResponse_param(new JSONObject().fluentPut("direction", number).toJSONString()); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 -// this.renotifyAcs(task); - } - - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - String requestParam = task.getRequest_param();// 任务的其他数据 - JSONObject jsonObject = JSONObject.parseObject(requestParam); - // 找终点 - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("未存在生产该料的压机!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException("未存在生产该料的压机!"); - } - // 叫料完成 -// requestMaterialRecordService.callMaterialFinish(point.getRecord_id()); - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - task.setVehicle_type(GeneralDefinition.MATERIAL_CUP); - // 告知acs去左边右边 - int number = getNumber(point); - task.setResponse_param(new JSONObject().fluentPut("direction", number).toJSONString()); - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - - private static int getNumber(SchBasePoint point) { - String deviceCode = point.getDevice_code(); // 获取设备编码 - int number = Integer.parseInt(deviceCode.replaceAll("[^0-9]", "")); - // 1左边2右边 - number = (number % 2) == 0 ? 2 : (number % 2); - return number; - } - - /** - * 根据压机工单的原料编码以及点位的更新时间 - * - * @param nextRegionStr - * @param requestParam - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject requestParam) { - // *: 混碾无工单 - String materialCode = requestParam.getString("material_code"); // 混碾编码 - Assert.notNull(materialCode, "物料编码不能为空!"); - materialCode = materialCode.substring(0, 12); - // 根据工单物料标识寻找点位 - List points = hnMapper.findPointForHNMLAndWorkOrder(nextRegionStr, materialCode); - return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; - } - - @Override - public void forceFinish(String task_code) { // 人工完成任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { // 人工取消任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - // todo: 通知acs取消任务 - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - String responseParam = taskObj.getResponse_param(); - JSONObject responseObj = JSONObject.parseObject(responseParam); - // 要把数据存到组盘表。压制工单放进去, - SchBaseVehiclematerialgroup groupEntity = vehiclematerialgroupService.getOne( - new LambdaQueryWrapper() - .eq(SchBaseVehiclematerialgroup::getGroup_id, taskObj.getGroup_id())); - if (ObjectUtil.isEmpty(groupEntity)) { - // 找不到组盘信息 - throw new BadRequestException("找不到组盘信息"); - } - // 终点去除正在执行的任务, 设置载具编码、载具类型、载具数量 - // 更新组盘数据 - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); - groupEntity.setTask_code(taskObj.getTask_code()); // 当前任务的编码 - TaskUtils.setGroupUpdateByType(groupEntity, taskFinishedType); - vehiclematerialgroupService.updateById(groupEntity); - // 起点清空 - 由ACS请求修改 - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 终点 - SchBasePoint one = ObjectUtil.isNotEmpty(endPoint) - ? pointService.getOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, endPoint)) - : null; - if (one != null) { - one.setIng_task_code(""); - PointUtils.setUpdateByType(one, taskFinishedType); - pointService.updateById(one); - } - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - // 组盘 - @Override - public String setGroupPlate(JSONObject param) { - // 吨袋号(泥料号+2位年+月日时分+设备号+碾次) - // LMS组盘时生成混料批次:压制工单+混砂机号+碾次 - String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code")); - String vehicleType = param.getString("vehicle_type"); - // 泥料物料对应不出物料标识 - String packNo = param.getString("material_code"); // 泥料编码: 吨袋号,泥料前 - String materialCode = packNo.substring(0, 12); - String mixTimes = packNo.substring(18, packNo.length()); // 碾次 - // 载具类型默认料盅 - if (vehicleType == null || vehicleType.equals(GeneralDefinition.NO)) { - vehicleType = GeneralDefinition.MATERIAL_CUP; - } - String deviceCode = param.getString("device_code"); - BigDecimal weight = param.getBigDecimal("weight"); - SchBasePoint basePoint = pointService.getOne(new LambdaQueryWrapper() - .eq(SchBasePoint::getPoint_code, deviceCode) - .eq(SchBasePoint::getIs_used, true)); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位[" + deviceCode + "]已被禁用"); - } - if (vehicleCode == null || vehicleCode.equals(GeneralDefinition.NO)) { - throw new BadRequestException("载具编码不能为空"); - } - // 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入 - // 找到不直接返回,用那条数据进行修改 - // 解绑同载具的信息 - vehiclematerialgroupService.unBindingSameVehicleMaterial(vehicleCode, vehicleType); - SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); - groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - // 要把数据存到组盘表 - groupEntity.setMaterial_id(GeneralDefinition.UNKNOWN); // 物料标识等任务完成后赋值 - groupEntity.setRedundance_material_code(materialCode); - groupEntity.setCreate_id(GeneralDefinition.ACS_ID); - groupEntity.setCreate_name(GeneralDefinition.ACS_NAME); - groupEntity.setCreate_time(DateUtil.now()); - groupEntity.setVehicle_code(vehicleCode); - groupEntity.setVehicle_type(vehicleType); - groupEntity.setSource_vehicle_code(basePoint.getPoint_code()); - groupEntity.setPoint_code(basePoint.getPoint_code()); // 当前位置 - groupEntity.setPoint_name(basePoint.getPoint_name()); - groupEntity.setMove_way(basePoint.getPoint_code()); // 头次 - groupEntity.setMix_times(mixTimes); // 碾次 - groupEntity.setInstorage_time(DateUtil.now()); - groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(weight)// 重量 - ? weight - : BigDecimal.valueOf(0)); - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 - groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 - groupEntity.setIs_delete(false); - groupEntity.setExt_data(packNo);// todo: 对于混碾的组盘 暂时存吨袋号 - vehiclematerialgroupService.saveOrUpdate(groupEntity); - return groupEntity.getGroup_id(); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNQKTask.java deleted file mode 100644 index 05313cc..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNQKTask.java +++ /dev/null @@ -1,166 +0,0 @@ -//package org.nl.wms.sch.task_manage.task.tasks.hn; -// -//import cn.hutool.core.date.DateUtil; -//import cn.hutool.core.util.ObjectUtil; -//import com.alibaba.fastjson.JSONObject; -//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -//import org.nl.common.exception.BadRequestException; -//import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; -//import org.nl.wms.sch.point.service.ISchBasePointService; -//import org.nl.wms.sch.point.service.dao.SchBasePoint; -//import org.nl.wms.sch.task.service.ISchBaseTaskService; -//import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -//import org.nl.wms.sch.task.service.dao.SchBaseTask; -//import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -//import org.nl.wms.sch.task_manage.AbstractTask; -//import org.nl.wms.sch.task_manage.GeneralDefinition; -//import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -//import org.nl.wms.sch.task_manage.task.TaskType; -//import org.nl.wms.sch.task_manage.task.core.TaskStatus; -//import org.nl.wms.util.PointUtils; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Component; -//import org.springframework.transaction.annotation.Transactional; -// -//import java.util.Arrays; -//import java.util.List; -//import java.util.stream.Collectors; -// -///** -// * @Author: lyd -// * @Description: 混料缺空:呼叫空载具 -// * @Date: 2023/5/19 -// */ -//@Deprecated -//@Component -//@TaskType("--") -//public class HNQKTask extends AbstractTask { -// private static String TASK_CONFIG_CODE = "--"; -// private static String EMPTY_ZHONG = "1"; -// -// @Autowired -// private ISchBasePointService pointService; -// @Autowired -// private ISchBaseTaskService taskService; -// @Autowired -// private ISchBaseTaskconfigService taskConfigService; -// @Autowired -// private IPdmBdWorkorderService workorderService; -// -// /** -// * 具体业务 -// */ -// @Override -// @Transactional(rollbackFor = Exception.class) -// protected void create() { -// // 获取任务 -// List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); -// // 配置信息 -// SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() -// .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); -// for (SchBaseTask task : tasks) { -// List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList()); -// // 找起点 -// String extGroupData = task.getExt_group_data(); -// JSONObject jsonObject = JSONObject.parseObject(extGroupData); -// SchBasePoint point = findStartPoint(startRegionStr, jsonObject); -// if (ObjectUtil.isEmpty(point)) { -// task.setRemark("未找到所需点位!"); -// taskService.update(task); -// // 消息通知 -// continue; -// } -// // 设置终点并修改创建成功状态 -// task.setPoint_code1(point.getPoint_code()); -// task.setRemark(""); -// task.setTask_status(TaskStatus.CREATED.getCode()); -// taskService.update(task); -// -// point.setIng_task_code(task.getTask_code()); -// pointService.update(point); -// -// //下发 -//// this.renotifyAcs(task); -// } -// } -// -// /** -// * 找起点, 通过料盅睏料线区域的空盅位置找到空盅 -// * -// * @param startRegionStr -// * @param extGroupData -// * @return -// */ -// private SchBasePoint findStartPoint(List startRegionStr, JSONObject extGroupData) { -// LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); -// lam.in(SchBasePoint::getRegion_code, startRegionStr) -// .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode()) -// .eq(SchBasePoint::getPoint_type, EMPTY_ZHONG) -// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 -// .or() -// .eq(SchBasePoint::getIng_task_code, "")) -// .orderByAsc(SchBasePoint::getIn_order_seq) -// .orderByAsc(SchBasePoint::getPoint_code); -// List schBasePoints = pointService.list(lam); -// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; -// } -// -// @Override -// @Transactional(rollbackFor = Exception.class) -// protected void updateStatus(String task_code, TaskStatus status) { -// // 校验任务 -// SchBaseTask taskObj = taskService.getByCode(task_code); -// if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { -// throw new BadRequestException(LangProcess.msg("task_statusWrong")); -// } -// if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { -// throw new BadRequestException(LangProcess.msg("task_statusWrong")); -// } -// // 获取参数 -// String startPoint = taskObj.getPoint_code1(); // 获取起点 -// String endPoint = taskObj.getPoint_code2(); // 获取起点 -// SchBasePoint startPointObj = pointService.getById(startPoint); -// SchBasePoint endPointObj = pointService.getById(endPoint); -// // 根据传来的类型去对任务进行操作 -// if (status.equals(TaskStatus.EXECUTING)) { // 执行中 -// taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); -// taskObj.setRemark("执行中"); -// } -// if (status.equals(TaskStatus.FINISHED)) { // 完成 -// // 起点清空 -// if (ObjectUtil.isNotEmpty(startPointObj)) { -// PointUtils.clearPoint(startPointObj); -// taskObj.setVehicle_code(startPointObj.getVehicle_code()); -// endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); -// endPointObj.setVehicle_type("1"); -// endPointObj.setVehicle_code(startPointObj.getVehicle_code()); -// endPointObj.setVehicle_qty(1); -// endPointObj.setUpdate_time(DateUtil.now()); -// pointService.updateById(endPointObj); -// } -// // 任务完成 -// taskObj.setTask_status(TaskStatus.FINISHED.getCode()); -// taskObj.setRemark(GeneralDefinition.TASK_FINISH); -// } -// if (status.equals(TaskStatus.CANCELED)) { // 取消 -// // 起点解锁 -// if (ObjectUtil.isNotEmpty(startPointObj)) { -// startPointObj.setIng_task_code(""); -// pointService.update(startPointObj); -// } -// taskObj.setTask_status(TaskStatus.CANCELED.getCode()); -// } -// taskService.update(taskObj); -// } -// -// @Override -// public void forceFinish(String task_code) { -// this.updateStatus(task_code, TaskStatus.FINISHED); -// } -// -// @Override -// public void cancel(String task_code) { -// this.updateStatus(task_code, TaskStatus.CANCELED); -// } -//} -// diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.java deleted file mode 100644 index e64c205..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.hn.mapper; - -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.nl.wms.sch.point.service.dao.SchBasePoint; - -import java.util.List; - -/** - * @Author: lyd - * @Description: 混碾的mapper - * @Date: 2023/6/19 - */ -public interface HNMapper extends BaseMapper { - // 通过叫料单 - List findPointForHNML(List regionCode, String materialId); - // 通过工单与点位更新 - List findPointForHNMLAndWorkOrder(List regionCode, String materialCode); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml deleted file mode 100644 index 0869e49..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java deleted file mode 100644 index 184452a..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java +++ /dev/null @@ -1,284 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.yao; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.ext.mes.service.WmsToMesService; -import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; -import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 出窑暂存 - * @Date: 2023/6/20 - */ -@Slf4j -@Component -@TaskType("GZYMLTask") -public class CYZCTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "GZYMLTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - - @Autowired - private ISysNoticeService noticeService; - @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired - private IPdmBdProductionProcessTrackingService processTrackingService; - @Autowired - private WmsToMesService wmsToMesService; - - @Override - @Transactional(rollbackFor = Exception.class) - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - String extGroupData = task.getExt_group_data(); - JSONObject jsonObject = JSONObject.parseObject(extGroupData); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到钢托盘缓存区域空位!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setVehicle_type(GeneralDefinition.STEEL_TRAY); - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - TaskUtils.setUpdateByAcs(task); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 - //this.renotifyAcs(task); - } - - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - String extGroupData = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(extGroupData); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("未找到钢托盘缓存区域空位!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException(LangProcess.msg("point_checkNull")); - } - // 设置组盘 - 需要的话由子类自行实现 - task.setGroup_id(setGroupPlate(jsonObject)); - // 设置终点并修改创建成功状态 - task.setVehicle_type(GeneralDefinition.STEEL_TRAY); - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - TaskUtils.setUpdateByAcs(task); - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - - @Override - public String setGroupPlate(JSONObject param) { - // 查找组盘表信息,不做修改 - String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code")); - String vehicleType = param.getString("vehicle_type"); - if (vehicleCode == null) { - vehicleType = GeneralDefinition.STEEL_TRAY; - } - SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getGroupInfo(vehicleCode, - vehicleType, GroupBindMaterialStatusEnum.BOUND.getValue()); - return ObjectUtil.isNotEmpty(one) ? one.getGroup_id() : ""; - } - - /** - * 找终点:到钢托盘缓存区中获取一个空位 - * - * @param nextRegionStr - * @param extData - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject extData) { - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, nextRegionStr) - .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) - .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 - .or() - .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getIs_used, true) - .ne(SchBasePoint::getLayer_num, "3") - .orderByAsc(SchBasePoint::getIn_order_seq); - List schBasePoints = pointService.list(lam); - return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; - } - - @Override - @Transactional(rollbackFor = Exception.class) - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 载具编码:前面需要根据任务判断,没有载具不能生成任务 - String vehicle_code = taskObj.getVehicle_code(); - String vehicleType = taskObj.getVehicle_type(); - if (vehicleType == null || vehicleType.equals(GeneralDefinition.NO)) { - vehicleType = GeneralDefinition.STEEL_TRAY; - } - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - // 终点解锁 - if (ObjectUtil.isNotEmpty(endPointObj)) { - // 修改组盘信息 - 设置已烧制 - SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper() - .eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicle_code) - .eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType) - .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, - GroupBindMaterialStatusEnum.BOUND.getValue()) - .eq(SchBaseVehiclematerialgroup::getIs_firing, false)); - if (ObjectUtil.isEmpty(one)) { - throw new BadRequestException(vehicle_code + " => " + vehicleType + "的组盘信息未找到"); - } - one.setTask_code(taskObj.getTask_code()); - one.setPoint_code(endPointObj.getPoint_code()); // 当前位置 - one.setPoint_name(endPointObj.getPoint_name()); - one.setMove_way(one.getMove_way() + " -> " + endPointObj.getPoint_code()); - one.setIs_firing(true); - one.setOut_kiln_time(DateUtil.now()); - TaskUtils.setGroupUpdateByType(one, taskFinishedType); - vehiclematerialgroupService.updateById(one); - // 插入生产过程跟踪表 - PdmBdProductionProcessTracking processTracking = new PdmBdProductionProcessTracking(); - processTracking.setBuss_move_id(one.getBuss_move_id()); - processTracking.setProcess_action("出窑到钢托盘缓存位"); - processTracking.setProcess_location(endPoint); - processTracking.setRecord_time(DateUtil.now()); - processTrackingService.create(processTracking); - // 记录库存并解锁 - endPointObj.setIng_task_code(""); - endPointObj.setVehicle_code(vehicle_code); - endPointObj.setVehicle_qty(1); - endPointObj.setVehicle_type(vehicleType); - endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - // 终点解锁 - if (ObjectUtil.isNotEmpty(endPointObj)) { - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - } - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java deleted file mode 100644 index fed0938..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java +++ /dev/null @@ -1,234 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.yao; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.ext.mes.service.WmsToMesService; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 入窑口任务 - * @Date: 2023/7/20 - */ -@Slf4j -@Component -@TaskType("GZYQLTask") -public class GZYQLTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "GZYQLTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private WmsToMesService wmsToMesService; - @Autowired - private ISysNoticeService noticeService; - @Autowired - private YZMapper yzMapper; - @Override - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - SchBasePoint point = findStartPoint(startRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("入窑口[" + task.getPoint_code1() + "]未找到所需点位!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - TaskUtils.setUpdateByAcs(task); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 - //this.renotifyAcs(task); - } - } - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - SchBasePoint point = findStartPoint(startRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("入窑口[" + task.getPoint_code2() + "]未找到所需点位!", TASK_CONFIG_CODE + task.getPoint_code2(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException(LangProcess.msg("point_checkNull")); - } - // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - TaskUtils.setUpdateByAcs(task); - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - } - - /** - * 找到有货最多的那层搬运到入窑口 - * @param startRegionStr - * @param jsonObject - * @return - */ - private SchBasePoint findStartPoint(List startRegionStr, JSONObject jsonObject) { - // 无需工单 - // 如果一个有货一个没货,但是载具数量又是5的时候,就要不需要检测不能为5 - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, startRegionStr) - .eq(SchBasePoint::getPoint_type, GeneralDefinition.EXIT) // 点位类型是缓存输送线出口 - .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 - .or() - .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode()) - .eq(SchBasePoint::getIs_used, true); - List list = pointService.list(lam); - boolean doDetection = true; // 如果只有一条符合的数据就不需要检验不符合5个托 - if (list.size() == 1) { - doDetection = false; - } - // 默认认为缓存线有东西 - lam.ne(doDetection, SchBasePoint::getVehicle_qty, 5).orderByDesc(SchBasePoint::getVehicle_qty); // 每次都将载具数量+1,每次拿最大的 - List schBasePoints = pointService.list(lam); - return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String startPoint = taskObj.getPoint_code1(); // 获取起点 - SchBasePoint startPointObj = pointService.getById(startPoint); - // 起点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPointAndRetainNum(startPointObj); - pointService.updateById(startPointObj); - } - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String startPoint = taskObj.getPoint_code1(); // 获取起点 - SchBasePoint startPointObj = pointService.getById(startPoint); - // 起点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - pointService.updateById(startPointObj); - } - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java deleted file mode 100644 index 0baf4c2..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java +++ /dev/null @@ -1,221 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.yz; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 压制呼叫空盘 - * @Date: 2023/6/16 - */ -@Slf4j -@Component -@TaskType("YZQKTask") -public class YZQKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "YZQKTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISysNoticeService noticeService; - - @Override - @Transactional - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - SchBasePoint point = findStartPoint(startRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("未找到所需点位!", TASK_CONFIG_CODE + task.getPoint_code2(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException("未找到所需点位!"); - } - // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setRemark(""); - task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - - @Override - @Transactional(rollbackFor = Exception.class) - protected void create() { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - SchBasePoint point = findStartPoint(startRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice("未找到所需点位!", TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setRemark(""); - task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 - //this.renotifyAcs(task); - } - } - - /** - * 业务过程:到指定的区域获取空托盘 - * @param startRegionStr - * @param requestParam - * @return - */ - private SchBasePoint findStartPoint(List startRegionStr, JSONObject requestParam) { - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, startRegionStr) // 默认一直都有载具 - .eq(SchBasePoint::getPoint_type, GeneralDefinition.EXIT) // 点位类型是拆盘机出口 - .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 - .or() - .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getIs_used, true); - List schBasePoints = pointService.list(lam); - return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取起点 - SchBasePoint startPointObj = pointService.getById(startPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - PointUtils.clearPoint(startPointObj); - endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - endPointObj.setVehicle_type(GeneralDefinition.STEEL_TRAY); - endPointObj.setVehicle_qty(1); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String startPoint = taskObj.getPoint_code1(); // 获取起点 - SchBasePoint startPointObj = pointService.getById(startPoint); - // 起点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(startPointObj, taskFinishedType); - pointService.updateById(startPointObj); - } - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java deleted file mode 100644 index 1873916..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java +++ /dev/null @@ -1,171 +0,0 @@ -//package org.nl.wms.sch.task_manage.task.tasks.yz; -// -//import cn.hutool.core.lang.Assert; -//import cn.hutool.core.util.ObjectUtil; -//import com.alibaba.fastjson.JSONObject; -//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -//import lombok.extern.slf4j.Slf4j; -//import org.nl.common.exception.BadRequestException; -//import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; -//import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; -//import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -//import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; -//import org.nl.wms.sch.point.service.ISchBasePointService; -//import org.nl.wms.sch.point.service.dao.SchBasePoint; -//import org.nl.wms.sch.task.service.ISchBaseTaskService; -//import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -//import org.nl.wms.sch.task.service.dao.SchBaseTask; -//import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -//import org.nl.wms.sch.task_manage.AbstractTask; -//import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; -//import org.nl.wms.sch.task_manage.task.TaskType; -//import org.nl.wms.sch.task_manage.task.core.TaskStatus; -//import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper; -//import org.nl.wms.util.PointUtils; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Component; -// -//import java.util.Arrays; -//import java.util.List; -//import java.util.stream.Collectors; -// -///** -// * @Author: lyd -// * @Description: 压制缺料任务 -// * @Date: 2023/5/25 -// */ -//@Slf4j -//@Deprecated -//@Component -//@TaskType("-") -//public class YZQLTask extends AbstractTask { -// private static String TASK_CONFIG_CODE = "-"; -// -// @Autowired -// private ISchBasePointService pointService; -// @Autowired -// private ISchBaseTaskService taskService; -// @Autowired -// private ISchBaseTaskconfigService taskConfigService; -// @Autowired -// private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; -// @Autowired -// private IPdmBdWorkorderService workorderService; -// @Autowired -// private YZMapper yzMapper; -// -// @Override -// protected void create() throws BadRequestException { -// // 获取任务 -// List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); -// // 配置信息 -// SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() -// .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); -// for (SchBaseTask task : tasks) { -// List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList()); -// // 找起点 -// String extGroupData = task.getExt_group_data(); -// JSONObject jsonObject = JSONObject.parseObject(extGroupData); -// jsonObject.put("vehicle_type", task.getVehicle_type()); -// SchBasePoint point = findStartPoint(startRegionStr, jsonObject); -// if (ObjectUtil.isEmpty(point)) { -// task.setRemark("未找到所需点位!"); -// taskService.update(task); -// // 消息通知 -// continue; -// } -// // 设置起点并修改创建成功状态 -// task.setPoint_code1(point.getPoint_code()); -// task.setTask_status(TaskStatus.CREATED.getCode()); -// task.setVehicle_code(point.getVehicle_code()); -// taskService.update(task); -// -// point.setIng_task_code(task.getTask_code()); -// pointService.update(point); -// -// //下发 -//// this.renotifyAcs(task); -// } -// } -// -// /** -// * 找起点业务:混碾机工单的物料标识相同的位置 -// * -// * @param startRegionStr : 区域列表 -// * @param extGroupData : 外部参数,包含条件所需的信息 -// * @return -// * @description : JSONObject获取不到就是null -// */ -// private SchBasePoint findStartPoint(List startRegionStr, JSONObject extGroupData) { -// // 获取当前工单 -// String workorderCode = extGroupData.getString("workorder_code"); -// PdmBdWorkorder workOrder = ObjectUtil.isNotEmpty(workorderCode) -// ? workorderService.getOne(new LambdaQueryWrapper() -// .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) -// : null; -// Assert.notNull(workOrder, "工单不能为空!"); -// // 查找混碾机工单的物料相同的位置 -// List points = yzMapper.findPointForYZQL(startRegionStr, workOrder.getMaterial_id()); -// return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; -// } -// -// -// @Override -// protected void updateStatus(String task_code, TaskStatus status) { -// // 校验任务 -// SchBaseTask taskObj = taskService.getByCode(task_code); -// if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { -// throw new BadRequestException(LangProcess.msg("task_statusWrong")); -// } -// if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { -// throw new BadRequestException(LangProcess.msg("task_statusWrong")); -// } -// // 获取参数 -// String startPoint = taskObj.getPoint_code1(); // 起点 -// JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) -// ? JSONObject.parseObject(taskObj.getExt_group_data()) -// : null; -// SchBasePoint startPointObj = pointService.getById(startPoint); -// // 根据传来的类型去对任务进行操作 -// if (status.equals(TaskStatus.EXECUTING)) { // 执行中 -// taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); -// taskObj.setRemark("执行中"); -// } -// if (status.equals(TaskStatus.FINISHED)) { // 完成 -// // 任务上有载具编码 -> 获取当前载具编码的组盘信息 -// SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper() -// .eq(SchBaseVehiclematerialgroup::getVehicle_code, taskObj.getVehicle_code()) -// .eq(SchBaseVehiclematerialgroup::getVehicle_type, taskObj.getVehicle_type()) -// .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue())); -// // 将载具设置为已解绑 -// one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); -// vehiclematerialgroupService.update(one); -// // 释放点位,将点位设置为空位,清空数据 -// if (ObjectUtil.isNotEmpty(startPointObj)) { -// PointUtils.clearPoint(startPointObj); -// // todo: 终点暂时无设置 -// } -// // 任务修改成完成 -// taskObj.setTask_status(TaskStatus.FINISHED.getCode()); -// } -// if (status.equals(TaskStatus.CANCELED)) { // 取消 -// taskObj.setTask_status(TaskStatus.CANCELED.getCode()); -// // 释放点位,起点正在执行的任务清空 -// if (ObjectUtil.isNotEmpty(startPointObj)) { -// startPointObj.setIng_task_code(""); -// pointService.update(startPointObj); -// } -// } -// taskService.update(taskObj); -// } -// -// @Override -// public void forceFinish(String task_code) { -// this.updateStatus(task_code, TaskStatus.FINISHED); -// } -// -// @Override -// public void cancel(String task_code) { -// this.updateStatus(task_code, TaskStatus.CANCELED); -// } -//} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java deleted file mode 100644 index cb77caa..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java +++ /dev/null @@ -1,242 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.yz; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 压制送空盅任务 - * @Date: 2023/5/25 - */ -@Slf4j -@Component -@TaskType("LZKLXSKTask") -public class YZSKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "LZKLXSKTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISysNoticeService noticeService; - - @Override - @Transactional(rollbackFor = Exception.class) - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - // 找终点 - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - String vehicleType = jsonObject.getString("vehicle_type"); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("送空盅任务未找到混料机空位!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException(LangProcess.msg("point_checkNull")); - } - log.warn("送空盅找到点位的信息:{}", point); - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - if (task.getVehicle_type() == null) { - task.setVehicle_type(vehicleType != null ? vehicleType : GeneralDefinition.MATERIAL_CUP); - } - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - - @Override - @Transactional(rollbackFor = Exception.class) - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - // 找终点 - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - String vehicleType = jsonObject.getString("vehicle_type"); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("送空盅任务未找到混料机空位!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - if (task.getVehicle_type() == null) { - task.setVehicle_type(vehicleType != null ? vehicleType : GeneralDefinition.MATERIAL_CUP); - } - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 - //this.renotifyAcs(task); - } - } - - /** - * 在混料区域找一个空位放着 - * - * @param nextRegionStr - * @param requestParam - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject requestParam) { - String vehicleType = ObjectUtil.isNotEmpty(requestParam.getString("vehicle_type")) - ? requestParam.getString("vehicle_type") - : GeneralDefinition.MATERIAL_CUP; - // 载具已经设置可为空,当不需要校验工单时候也不会出现空指针 - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, nextRegionStr) - .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) - .like(SchBasePoint::getCan_vehicle_type, vehicleType) - .eq(SchBasePoint::getPoint_type, GeneralDefinition.DOCKING_POINT) // 对接位 - .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 - .or() - .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getIs_used, true) - .orderByAsc(SchBasePoint::getIn_order_seq) - .orderByAsc(SchBasePoint::getPoint_code); - List schBasePoints = pointService.list(lam); - return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; - } - - @Override - @Transactional(rollbackFor = Exception.class) - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - String vehicleType = ObjectUtil.isNotEmpty(taskObj.getVehicle_type()) - ? taskObj.getVehicle_type() - : GeneralDefinition.MATERIAL_CUP; - SchBasePoint endPointObj = pointService.getById(endPoint); - // 设置载具类型、点位状态、释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - endPointObj.setVehicle_type(vehicleType); - endPointObj.setVehicle_qty(1); - endPointObj.setVehicle_code(taskObj.getVehicle_code()); - endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); // 区分完成者 - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - // 释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java deleted file mode 100644 index 5863a96..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java +++ /dev/null @@ -1,255 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.yz; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.ext.mes.service.WmsToMesService; -import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; -import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper; -import org.nl.wms.util.PointUtils; -import org.nl.wms.util.TaskUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 压制送料 - * @Date: 2023/6/19 - */ -@Slf4j -@Component -@TaskType("YZMLTask") -public class YZSLTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "YZMLTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired - private YZMapper yzMapper; - @Autowired - private ISysNoticeService noticeService; - @Autowired - private IPdmBdProductionProcessTrackingService processTrackingService; - @Autowired - private WmsToMesService wmsToMesService; - @Override - @Transactional(rollbackFor = Exception.class) - protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - // 找终点 - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("压机[" + task.getPoint_code1() + "]未找到所需点位!"); - taskService.updateById(task); - // 消息通知 - noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), - NoticeTypeEnum.WARN.getCode()); - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - TaskUtils.setUpdateByAcs(task); - taskService.updateById(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - - //下发 - //this.renotifyAcs(task); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); // 修改修改者 - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) - .collect(Collectors.toList()); - // 找终点 - String requestParam = task.getRequest_param(); - JSONObject jsonObject = JSONObject.parseObject(requestParam); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - // 消息通知 - noticeService.createNotice("压机[" + task.getPoint_code1() + "]未找到所需点位!", TASK_CONFIG_CODE + task.getPoint_code1(), - NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException(LangProcess.msg("point_checkNull")); - } - // 设置组盘 - 需要的话由子类自行实现 - task.setGroup_id(setGroupPlate(jsonObject)); - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - TaskUtils.setUpdateByAcs(task); - taskService.save(task); - - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); - } - - /** - * 判断是否加急:是->入窑口,否->双层缓存线 - * - * @param nextRegionStr - * @param requestParam - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject requestParam) { - return null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException(LangProcess.msg("task_statusWrong")); - } - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - TaskUtils.setUpdateByAcs(taskObj); - taskService.updateById(taskObj); - // todo:暂时现在执行中的时候将满托上给mes - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - // todo: 完成后上报给MES - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); - } - } - - @Override - public String setGroupPlate(JSONObject param) { - return null; - } - - - @Override - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - @Override - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException(LangProcess.msg("task_isNull",task_code)); - } - this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); - } - - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - if (ObjectUtil.isNotEmpty(endPointObj)) { - // 终点解锁 - endPointObj.setIng_task_code(""); - // 终点清空 - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - PointUtils.clearPointAndRetainNum(endPointObj); - pointService.updateById(endPointObj); - // 组盘表数据改成已绑定 - SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(taskObj.getGroup_id()); - TaskUtils.setGroupUpdateByType(vehiclematerialgroup, taskFinishedType); - vehiclematerialgroup.setTask_code(taskObj.getTask_code()); // 当前任务 - vehiclematerialgroup.setBuss_move_id(taskObj.getTask_code()); // 设置链路id,使用任务编码 - vehiclematerialgroup.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); - vehiclematerialgroup.setPoint_code(endPointObj.getPoint_code()); // 当前位置 - vehiclematerialgroup.setPoint_name(endPointObj.getPoint_name()); - vehiclematerialgroup.setMove_way(vehiclematerialgroup.getMove_way() + " -> " + endPointObj.getPoint_code()); - vehiclematerialgroupService.updateById(vehiclematerialgroup); - // 插入生产过程跟踪表 - PdmBdProductionProcessTracking processTracking = new PdmBdProductionProcessTracking(); - processTracking.setBuss_move_id(vehiclematerialgroup.getBuss_move_id()); - processTracking.setProcess_action("压制送料入双层缓存线"); - processTracking.setProcess_location(endPoint); - processTracking.setRecord_time(DateUtil.now()); - processTrackingService.create(processTracking); - // 工单统计实际数量 - Integer materialQty = vehiclematerialgroup.getMaterial_qty(); - } - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark(GeneralDefinition.TASK_FINISH); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } - - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint endPointObj = pointService.getById(endPoint); - // 终点解锁 - if (ObjectUtil.isNotEmpty(endPointObj)) { - endPointObj.setIng_task_code(""); - PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.updateById(endPointObj); - } - taskObj.setRemark(GeneralDefinition.TASK_CANCEL); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); - taskService.updateById(taskObj); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/backup.txt b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/backup.txt deleted file mode 100644 index a6de0aa..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/backup.txt +++ /dev/null @@ -1,32 +0,0 @@ -private SchBasePoint findStartPoint(List startRegionStr, JSONObject extGroupData) { - // 获取当前工单 - String workorderCode = extGroupData.getString("workorder_code"); - PdmBdWorkorder workOrder = ObjectUtil.isNotEmpty(workorderCode) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) - : null; - Assert.notNull(workOrder, "工单不能为空!"); - String vehicleType = workOrder.getVehicle_type(); - String materialId = workOrder.getMaterial_id(); - int standingTime = workOrder.getStanding_time(); // 静置时间 - Assert.notNull(materialId, "物料不能为空!"); - Assert.notNull(vehicleType, "载具类型不能为空!"); - Assert.notNull(standingTime, "静置时间不能为空!"); - // 找到所需要物料的载具编号 - List list = vehiclematerialgroupService.list( - new LambdaQueryWrapper() - .eq(SchBaseVehiclematerialgroup::getMaterial_id, materialId) - .eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType) - .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue()) - .apply("DATE_ADD(instorage_time, INTERVAL " + standingTime + " MINUTE) <= NOW()") - .orderByAsc(SchBaseVehiclematerialgroup::getPoint_code)); - // 获取第一个 - SchBaseVehiclematerialgroup vehiclematerialgroup = ObjectUtil.isNotEmpty(list) ? list.get(0) : null; - if (ObjectUtil.isEmpty(vehiclematerialgroup)) return null; - SchBasePoint one = pointService.getOne(new LambdaQueryWrapper() - .in(SchBasePoint::getRegion_code, startRegionStr) - .eq(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode()) - .eq(SchBasePoint::getVehicle_code, vehiclematerialgroup.getVehicle_code()) - .eq(SchBasePoint::getVehicle_type, vehicleType)); - return one; - } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java deleted file mode 100644 index 34110ba..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.nl.wms.sch.task_manage.task.tasks.yz.mapper; - -import com.alibaba.fastjson.JSONObject; -import org.nl.wms.sch.point.service.dao.SchBasePoint; - -import java.util.List; - -/** - * @Author: lyd - * @Description: - * @Date: 2023/6/19 - */ -public interface YZMapper { - List findPointForYZQL(List regionCode, String materialId); - @Deprecated - List findPointForYZSL(JSONObject param); - - /** - * 统计输送线数量 - * @param regionCode - * @param pointType - * @return - */ - int countConveyorLine(String regionCode, String pointType, String pointStatus); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml deleted file mode 100644 index 864c64f..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/enums/IOSEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/enums/IOSEnum.java index de7891d..15e9b6a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/enums/IOSEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/enums/IOSEnum.java @@ -8,7 +8,8 @@ import org.nl.config.MapOf; import java.util.Map; -/* +/** + * 出入库枚举 * @author lxy * @Date 2023/11/14 20:11 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvOutService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvOutService.java index 5f4ccef..a2eff57 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvOutService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvOutService.java @@ -19,7 +19,8 @@ public interface IStIvtIostorinvOutService extends IService { /** * 分页查询 - * @param query,page / + * @param query 查询条件 + * @param page 分页查询 * @return Object */ Object pageQuery(IostorInvQuery query, PageQuery page); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvService.java index b2dcb62..75bcc27 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvService.java @@ -19,7 +19,8 @@ public interface IStIvtIostorinvService extends IService { /** * 分页查询 - * @param query,page / + * @param query 查询条件 + * @param page 分页查询 * @return Object */ Object pageQuery(IostorInvQuery query, PageQuery page); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdtlService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdtlService.java index 148fad5..28f52d8 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdtlService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdtlService.java @@ -29,7 +29,7 @@ public interface IStIvtIostorinvdtlService extends IService { /** * 获取单据明细 - * @param {iostorinv_id} 、 + * @param param {iostorinv_id} 、 * @return JSONArray 、 */ JSONArray getIosDtl(JSONObject param); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/dto/IostorInvQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/dto/IostorInvQuery.java index 5adb63f..3cf4cc5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/dto/IostorInvQuery.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/dto/IostorInvQuery.java @@ -6,7 +6,8 @@ import org.nl.common.domain.query.QParam; import org.nl.common.enums.QueryTEnum; import org.nl.wms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv; -/* +/** + * 条件 * @author LXY * @Date 2023/11/10 14:49 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java index 65696aa..6ce873d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java @@ -55,23 +55,41 @@ import java.util.stream.Collectors; @Service public class StIvtIostorinvOutServiceImpl extends ServiceImpl implements IStIvtIostorinvOutService { + /** + * 子卷包装mapper + */ @Autowired - private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper; // 子卷包装mapper + private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper; + /** + * 出入库明细服务 + */ @Autowired - private IStIvtIostorinvdtlService iStIvtIostorinvdtlService; // 出入库明细服务 + private IStIvtIostorinvdtlService iStIvtIostorinvdtlService; + /** + * 出入库分配明细服务 + */ @Autowired - private IStIvtIostorinvdisService iStIvtIostorinvdisService; // 出入库分配明细服务 + private IStIvtIostorinvdisService iStIvtIostorinvdisService; + /** + * 出库分配规则 + */ @Autowired - private IosOutRuleService iosOutRuleService; // 出库分配规则 + private IosOutRuleService iosOutRuleService; + /** + * 点位服务 + */ @Autowired - private ISchBasePointService iSchBasePointService; // 点位服务 + private ISchBasePointService iSchBasePointService; + /** + * 任务服务 + */ @Autowired - private ISchBaseTaskService iSchBaseTaskService; // 任务服务 + private ISchBaseTaskService iSchBaseTaskService; @Override public Object pageQuery(IostorInvQuery query, PageQuery pageQuery) { @@ -100,7 +118,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl dtlDaoList = new ArrayList<>(); @@ -229,9 +247,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl ivtList = iosOutRuleService.getCancelIvt(whereJson); // 库存集合 + // 库存集合 + List ivtList = iosOutRuleService.getCancelIvt(whereJson); - List disList = new ArrayList<>(); // 需插入分配明细集合 + // 需插入分配明细集合 + List disList = new ArrayList<>(); for (int i = 0; i < dtlDaoList.size(); i++) { StIvtIostorinvdtl dtlDao = dtlDaoList.get(i); @@ -256,9 +276,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl ivtDaoList = ivtList.stream() @@ -343,7 +367,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl dtlDaoList = new ArrayList<>(); @@ -413,7 +437,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl implements IStIvtIostorinvService { + /** + * 子卷包装关系服务 + */ @Autowired - private IPdmBiSubpackagerelationService iPdmBiSubpackagerelationService; // 子卷包装关系服务 + private IPdmBiSubpackagerelationService iPdmBiSubpackagerelationService; + /** + * 出入库明细服务 + */ @Autowired - private IStIvtIostorinvdtlService iStIvtIostorinvdtlService; // 出入库明细服务 + private IStIvtIostorinvdtlService iStIvtIostorinvdtlService; + /** + * 出入库分配明细服务 + */ @Autowired - private IStIvtIostorinvdisService iStIvtIostorinvdisService; // 出入库分配明细服务 + private IStIvtIostorinvdisService iStIvtIostorinvdisService; + /** + * 入库分配规则服务 + */ @Autowired - private IosInRuleService iosInRuleService; // 入库分配规则服务 + private IosInRuleService iosInRuleService; + /** + * 点位服务 + */ @Autowired - private ISchBasePointService iSchBasePointService; // 点位服务 + private ISchBasePointService iSchBasePointService; + /** + * 任务服务 + */ @Autowired - private ISchBaseTaskService iSchBaseTaskService; // 任务服务 + private ISchBaseTaskService iSchBaseTaskService; @Override public Object pageQuery(IostorInvQuery query, PageQuery pageQuery) { @@ -101,7 +119,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl implements IStIvtIostorinvdisService { @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void insetDis(List collect) { ArrayList disDaoList = new ArrayList<>(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdtlServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdtlServiceImpl.java index 16cf850..32c0566 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdtlServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdtlServiceImpl.java @@ -37,17 +37,26 @@ import java.util.stream.Collectors; @Service public class StIvtIostorinvdtlServiceImpl extends ServiceImpl implements IStIvtIostorinvdtlService { + /** + * 物料服务 + */ @Autowired - private IMdBaseMaterialService iMdBaseMaterialService; // 物料服务 + private IMdBaseMaterialService iMdBaseMaterialService; + /** + * 出入库主表服务 + */ @Autowired - private IStIvtIostorinvService iStIvtIostorinvService; // 出入库主表服务 + private IStIvtIostorinvService iStIvtIostorinvService; + /** + * 出入库分配服务 + */ @Autowired - private IStIvtIostorinvdisService iStIvtIostorinvdisService; // 出入库分配服务 + private IStIvtIostorinvdisService iStIvtIostorinvdisService; @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public ArrayList insertDtl(String iostorinv_id, List tableDataList) { // 查询所有对应物料集合 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/dto/RuleDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/dto/RuleDto.java index de82639..be5335d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/dto/RuleDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/dto/RuleDto.java @@ -1,8 +1,16 @@ package org.nl.wms.storage_manage.ios.util.dto; +/** + *

+ * 分配规则 + *

+ * + * @author generator + * @since 2023-11-16 + */ public class RuleDto { - /* + /** * 入库分配: * 按照仓库、区域、找到一个点位 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/impl/IosInRuleServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/impl/IosInRuleServiceImpl.java index b3a3fa8..50af958 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/impl/IosInRuleServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/impl/IosInRuleServiceImpl.java @@ -18,7 +18,7 @@ import org.springframework.transaction.annotation.Transactional; public class IosInRuleServiceImpl implements IosInRuleService { @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public SchBasePoint getOnePoint(JSONObject param) { String type = param.getString("type"); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/impl/IosOutRuleServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/impl/IosOutRuleServiceImpl.java index 9118952..24373f9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/impl/IosOutRuleServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/storage_manage/ios/util/impl/IosOutRuleServiceImpl.java @@ -22,7 +22,7 @@ import java.util.List; public class IosOutRuleServiceImpl implements IosOutRuleService { @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public List getCancelIvt(JSONObject param) { List list = new ArrayList<>(); return list; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java deleted file mode 100644 index 04f6d53..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java +++ /dev/null @@ -1,102 +0,0 @@ -package org.nl.wms.util; - -import com.alibaba.fastjson.JSONObject; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.Duration; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.format.DateTimeFormatter; -import java.util.Date; - -/** - * @Author: lyd - * @Description: 通用工具 - * @Date: 2023/7/17 - */ -public class CommonUtils { - /** - * - * @param inStorageTime 入库时间 - * @param standingTime 静置时间 / 分钟 - * @return - */ - public static boolean isStandingFinish(String inStorageTime, Integer standingTime) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime inStorageDateTime = LocalDateTime.parse(inStorageTime, formatter); - Duration standingDuration = Duration.ofMinutes(standingTime); - LocalDateTime currentTime = LocalDateTime.now(); - LocalDateTime expiryTime = inStorageDateTime.plus(standingDuration); - return currentTime.isAfter(expiryTime); - } - - /** - * 还有几分钟静置完成 - * @param inputDateString - * @param staticDurationMinutes - * @return - */ - public static String remainStandingFinishTime(String inputDateString, Integer staticDurationMinutes) { - // 创建SimpleDateFormat以解析日期时间字符串 - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - try { - // 将输入日期时间字符串解析为Date对象 - Date inputDate = dateFormat.parse(inputDateString); - // 获取当前时间 - Date currentDate = new Date(); - // 计算距离静置完成还有多少毫秒 - long timeDifferenceMillis = inputDate.getTime() + (staticDurationMinutes * 60 * 1000) - currentDate.getTime(); - // 将毫秒转换为分钟 - double timeDifferenceMinutes = (double) timeDifferenceMillis / (60 * 1000); -// System.out.println("距离静置完成还有 " + timeDifferenceMinutes + " 分钟"); - // 计算预计完成时间 - Date estimatedCompletionTime = new Date(currentDate.getTime() + timeDifferenceMillis); - // 格式化预计完成时间为字符串 - String estimatedCompletionTimeString = dateFormat.format(estimatedCompletionTime); - return "距离静置完成还有 " + String.format("%.2f", timeDifferenceMinutes) + " 分钟" + ", 预计完成时间为:" + estimatedCompletionTimeString; - } catch (ParseException e) { - e.printStackTrace(); - } - return null; - } - - /** - * 获取当前时间是白晚班 - * @return - */ - public static String getDayShift() { - // 获取当前时间 - LocalTime currentTime = LocalTime.now(); - // 设置白班和晚班的时间范围 - LocalTime dayShiftStart = LocalTime.of(8, 0); // 白班开始时间:8:00 AM - LocalTime dayShiftEnd = LocalTime.of(15, 59); // 白班结束时间:5:00 PM - LocalTime nightShiftStart = LocalTime.of(16, 0); // 小夜班开始时间:5:00 PM - LocalTime nightShiftEnd = LocalTime.of(23, 59); // 小夜班结束时间:11:59 PM - - // 检查当前时间属于哪个班次 - if (currentTime.isAfter(dayShiftStart) && currentTime.isBefore(dayShiftEnd)) { - return "白班"; - } else if (currentTime.isAfter(nightShiftStart) && currentTime.isBefore(nightShiftEnd)) { - return "小夜班"; - } else { - return "大夜班"; - } - } - - public static T toJavaObject(String objectString, Class clazz) { - JSONObject jsonObject = JSONObject.parseObject(objectString); - return jsonObject.toJavaObject(clazz); - } - - public static String CurrentData() { - // 获取当前日期 - LocalDate currentDate = LocalDate.now(); - // 定义日期格式 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); - // 格式化日期为"20231030" - String formattedDate = currentDate.format(formatter); - return formattedDate; - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/DatabaseBackup.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/DatabaseBackup.java index ff1b7db..6f6204b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/DatabaseBackup.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/DatabaseBackup.java @@ -21,7 +21,8 @@ public class DatabaseBackup { try { Connection connection = DriverManager.getConnection(jdbcUrl, username, password); // 在这里执行备份操作 - String backupPath = "D:\\backup.sql"; // 备份文件保存的路径 + // 备份文件保存的路径 + String backupPath = "D:\\backup.sql"; // 构建备份命令 List command = Arrays.asList( "mysqldump", diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MainConfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MainConfig.java deleted file mode 100644 index 016aba2..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MainConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.nl.wms.util; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; - -/** - * @Author: lyd - * @Description: - * @Date: 2023/9/27 - */ -@Configuration -@ComponentScan(basePackages = "org.nl.wms.util") -public class MainConfig { -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MyEventListener.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MyEventListener.java deleted file mode 100644 index 1f120aa..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MyEventListener.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.nl.wms.util; - -import org.springframework.context.ApplicationEvent; -import org.springframework.stereotype.Component; - -/** - * @Author: lyd - * @Description: 监听事件,用来debug查看bean工厂等信息 - * @Date: 2023/5/23 - */ -public class MyEventListener extends ApplicationEvent { - - public MyEventListener(Object source) { - super(source); - } - -// @EventListener -// public void handleContextRefresh(ContextRefreshedEvent event) { -// ApplicationContext applicationContext = event.getApplicationContext(); -// } - -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MyListener.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MyListener.java deleted file mode 100644 index 54a6219..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/MyListener.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.nl.wms.util; - -import org.springframework.context.ApplicationListener; -import org.springframework.stereotype.Component; - -/** - * @Author: lyd - * @Description: - * @Date: 2023/9/27 - */ -@Component -public class MyListener implements ApplicationListener { - @Override - public void onApplicationEvent(MyEventListener myEventListener) { - System.out.println("事件:"+myEventListener.toString()); - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/OracleJDBCExample.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/OracleJDBCExample.java deleted file mode 100644 index 1c58081..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/OracleJDBCExample.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.nl.wms.util; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.Statement; - -public class OracleJDBCExample { - - public static void main(String[] args) { - String jdbcUrl = "jdbc:oracle:thin:@172.27.37.66:1521:RTMES"; // 根据您的数据库配置修改连接字符串 - String username = "LMSTELCOM"; // 您的数据库用户名 - String password = "LMSTELCOM_6463"; // 您的数据库密码 - - Connection connection = null; - Statement statement = null; - ResultSet resultSet = null; - - try { - // 1. 加载 Oracle JDBC 驱动程序 - Class.forName("oracle.jdbc.OracleDriver"); - - // 2. 创建数据库连接 - connection = DriverManager.getConnection(jdbcUrl, username, password); - - // 3. 创建 SQL 语句执行器 - statement = connection.createStatement(); - - // 4. 执行 SQL 查询 - String sqlQuery = "SELECT * FROM RTMG.VIEW_MATERIAL_LMS"; // 根据您的查询修改表名 - resultSet = statement.executeQuery(sqlQuery); - - // 5. 处理查询结果 - while (resultSet.next()) { - // 从结果集中获取数据 - String id = resultSet.getString("MATNR"); // 根据表的列名修改 - - // 打印查询结果 - System.out.println("ID: " + id); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - // 6. 关闭资源 - try { - if (resultSet != null) resultSet.close(); - if (statement != null) statement.close(); - if (connection != null) connection.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } -} - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java index 24dd769..497bc7b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java @@ -74,7 +74,8 @@ public class PointUtils { point.setVehicle_code(""); point.setIng_task_code(""); point.setVehicle_qty(point.getVehicle_qty() == 5 ? point.getVehicle_qty() : point.getVehicle_qty() + 1); - if (basePoint.getVehicle_qty() == 5) { // 等到新的点执行第一托的时候,才判断另一个点满足5个托盘的时候就清空 + // 等到新的点执行第一托的时候,才判断另一个点满足5个托盘的时候就清空 + if (basePoint.getVehicle_qty() == 5) { basePoint.setVehicle_qty(0); basePoint.setUpdate_time(DateUtil.now()); pointService.updateById(basePoint); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java index 66e4a15..41df837 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java @@ -67,7 +67,11 @@ public class TaskUtils { groupEntity.setUpdate_time(DateUtil.now()); } - // 根据类型去判断谁修改的 + /** + * 根据类型去判断谁修改的 + * @param groupEntity + * @param taskFinishedType + */ public static void setGroupUpdateByType(SchBaseVehiclematerialgroup groupEntity, TaskFinishedTypeEnum taskFinishedType) { if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) { setGroupUpdateByAcs(groupEntity); @@ -88,7 +92,11 @@ public class TaskUtils { taskObj.setUpdate_time(DateUtil.now()); } - // 根据类型去判断谁修改的 + /** + * 根据类型去判断谁修改的 + * @param taskObj + * @param taskFinishedType + */ public static void setUpdateByType(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) { setUpdateByAcs(taskObj); @@ -176,11 +184,15 @@ public class TaskUtils { * @return */ public static int convertMultiply(String needFullNumberStr) { - String[] parts = needFullNumberStr.split("\\*"); // 使用 "*" 来分割字符串 - int result = 1; // 初始化结果为1 + // 使用 "*" 来分割字符串 + String[] parts = needFullNumberStr.split("\\*"); + // 初始化结果为1 + int result = 1; for (String part : parts) { - int number = Integer.parseInt(part); // 将字符串部分解析为整数 - result *= number; // 将解析的整数与结果相乘 + // 将字符串部分解析为整数 + int number = Integer.parseInt(part); + // 将解析的整数与结果相乘 + result *= number; } return result; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TreePrinter.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TreePrinter.java deleted file mode 100644 index 331ba15..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TreePrinter.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.nl.wms.util; - -import java.io.File; - -/** - * @Author: lyd - * @Description: - * @Date: 2023/10/8 - */ -public class TreePrinter { - public static void main(String[] args) { - // 指定文件夹的路径 - String folderPath = "D:\\Code\\Work\\rl_mg\\acs\\nladmin-system\\src\\main\\java\\org\\nl\\acs\\device_driver"; - - // 调用递归方法获取文件树并打印 - File folder = new File(folderPath); - if (folder.exists() && folder.isDirectory()) { - System.out.println(folder.getAbsolutePath()); - printFileTree(folder, "", true); - } else { - System.out.println("指定路径不是一个有效的文件夹。"); - } - } - - public static void printFileTree(File folder, String prefix, boolean isLast) { - File[] files = folder.listFiles(); - if (files != null) { - int count = 0; - for (File file : files) { - count++; - boolean isSubfolder = file.isDirectory(); - boolean isLastItem = count == files.length; - - System.out.print(prefix); - System.out.print(isLastItem ? "└── " : "├── "); - System.out.println(file.getName()); - - if (isSubfolder) { - String newPrefix = prefix + (isLastItem ? " " : "│ "); - printFileTree(file, newPrefix, isLastItem); - } - } - } - } -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/XmlFormatter.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/XmlFormatter.java deleted file mode 100644 index 8f35f59..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/XmlFormatter.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.nl.wms.util; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.w3c.dom.Document; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -/** - * @Author: lyd - * @Description: 将xml字符串存入xml文件中 - * @Date: 2023/8/7 - */ -public class XmlFormatter { - public static void main(String[] args) { - String xmlString = "\n" + - "\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "\n"; - - // 格式化XML字符串 - String formattedXmlString = formatXmlString(xmlString); - - // 将格式化后的XML字符串存储到文件中 - String fileName = "xx.xml"; - saveXmlToFile(fileName, formattedXmlString); - } - - public static String formatXmlString(String xmlString) { - try { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(new InputSource(new java.io.StringReader(xmlString))); - - // 格式化XML - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); - transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); - DOMSource source = new DOMSource(document); - - java.io.StringWriter sw = new java.io.StringWriter(); - StreamResult result = new StreamResult(sw); - transformer.transform(source, result); - - return sw.toString(); - } catch (ParserConfigurationException | IOException | SAXException | TransformerException e) { - e.printStackTrace(); - } - return xmlString; - } - - public static void saveXmlToFile(String fileName, String xmlString) { - try { - File file = new File(fileName); - FileWriter writer = new FileWriter(file); - writer.write(xmlString); - writer.flush(); - writer.close(); - System.out.println("XML file saved successfully."); - } catch (IOException e) { - e.printStackTrace(); - } - } -} - diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/test/mapper/TestMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/test/mapper/TestMapper.java deleted file mode 100644 index a49a721..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/test/mapper/TestMapper.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.nl.wms.util.test.mapper; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -import java.util.HashMap; -import java.util.List; - -/** - * @Author: lyd - * @Description: mapper接口 - * @Date: 2023/5/23 - */ -public interface TestMapper extends BaseMapper { - - List> getAll(); - - JSONObject getAll2(); - - List getAll3(); - - JSONArray getAll4(); - - JSONArray getAll5(); - - HashMap getAll6(); - - JSONObject getAll7(); - - JSONArray getAll8(); - - JSONArray getAll9(); - - JSONObject getAll10(HashMap map); - - JSONArray getAll11(JSONObject map); - - JSONArray getAll12(List list); - - void updateByObject(JSONObject object); -} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/test/mapper/TestMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/test/mapper/TestMapper.xml deleted file mode 100644 index caac9be..0000000 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/test/mapper/TestMapper.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - UPDATE sch_base_point - SET point_name = #{point_name} - WHERE point_code = #{point_code} - - - - - - - - - - - - - - - - - - diff --git a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java index b7df35b..5866333 100644 --- a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java +++ b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java @@ -1,24 +1,8 @@ package org.nl; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.junit.jupiter.api.Test; -import org.nl.config.MapOf; -import org.nl.system.service.user.ISysUserService; -import org.nl.wms.database.material.service.dao.MdBaseMaterial; -import org.nl.wms.ext.mes.service.WmsToMesService; -import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import java.util.List; - /** * @Author: lyd * @Description: 单元测试 @@ -26,57 +10,9 @@ import java.util.List; */ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class ApplicationTest { - @Autowired - private ISysUserService userService; - @Autowired - private ISchBasePointService pointService; - @Autowired - private YZMapper yzMapper; - @Autowired - private WmsToMesService wms; - @Autowired - private MesRequestMapper mesRequestMapper; + @Test void contextLoads() { - System.out.println(userService.list()); } - @Test - void yzMapperTest() { -// List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( -// MapOf.of("regionCode", "HCSSX", "pointType", "1"))); - int countUp = yzMapper.countConveyorLine("HCSSX", GeneralDefinition.UPPER_CONVEYOR_LINE, - PointStatusEnum.EMPTY_POINT.getCode()); - System.out.println(countUp); - } - @Test - void yzMapper2Test() { -// String apply = "ORDER BY point_code"; - int countUp = yzMapper.countConveyorLine("HCSSX", GeneralDefinition.UPPER_CONVEYOR_LINE, - PointStatusEnum.EMPTY_POINT.getCode()); - int countLower = yzMapper.countConveyorLine("HCSSX", GeneralDefinition.LOWER_CONVEYOR_LINE, - PointStatusEnum.EMPTY_POINT.getCode()); -// if (countUp < countLower) { -// apply = "ORDER BY point_code DESC"; -// } - LambdaQueryWrapper lam = new QueryWrapper().lambda(); - lam.eq(SchBasePoint::getRegion_code, "HCSSX") - .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) - .eq(SchBasePoint::getPoint_type, GeneralDefinition.ENTRANCE) // 对接位 - .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 - .or() - .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getIs_used, true) - .orderBy(true, countUp > countLower, SchBasePoint::getPoint_code); - List schBasePoints = pointService.list(lam); - System.out.println(schBasePoints.get(0)); - } - - @Test - public void formats() { - String original = "1115"; - String formatted = String.format("%04d", Integer.parseInt(original)); - System.out.println("Formatted: " + formatted); - } - } diff --git a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/task/MapperTest.java b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/task/MapperTest.java deleted file mode 100644 index dd9f684..0000000 --- a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/task/MapperTest.java +++ /dev/null @@ -1,232 +0,0 @@ -package org.nl.task; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.junit.jupiter.api.Test; -import org.nl.common.exception.BadRequestException; -import org.nl.config.MapOf; -import org.nl.config.language.LangProcess; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.util.test.mapper.TestMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; - -/** - * @Author: lyd - * @Description: 单元测试 - * @Date: 2023/5/19 - */ -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -public class MapperTest { - @Autowired - private TestMapper testMapper; - - @Autowired - private ISchBasePointService pointService; - - /** - * 无参查询 - * 返回类型: List> 等同于JSONArray - * 定义resultMap - */ - @Test - void testMapper() { - List> all = testMapper.getAll(); - System.out.println(all); - } - - /** - * 无参查询 - * 返回类型: JSONObject - * 定义resultMap - */ - @Test - void testMapper2() { - JSONObject all2 = testMapper.getAll2(); - System.out.println(all2); - } - - /** - * 无参查询 - * 返回类型: List 等同JSONArray - * 定义resultMap - */ - @Test - void testMapper3() { - List all3 = testMapper.getAll3(); - System.out.println(all3); - } - - /** - * 无参查询 - * 返回类型: JSONArray - * 每条记录类型: JSONObject - * 定义resultMap - */ - @Test - void testMapper4() { - JSONArray all4 = testMapper.getAll4(); - System.out.println(all4); - } - - /** - * 无参查询 - * 返回类型: JSONArray - * 每条记录类型: HashMap - * 定义resultMap - */ - @Test - void testMapper5() { - JSONArray all5 = testMapper.getAll5(); - System.out.println(all5); - } - - /** - * 无参查询 - * 返回类型: HashMap - */ - @Test - void testMapper6() { - HashMap all6 = testMapper.getAll6(); - System.out.println("结果集:" + all6); - } - - /** - * 无参查询 - * 返回类型: JSONObject - */ - @Test - void testMapper7() { - JSONObject all7 = testMapper.getAll7(); - System.out.println("结果集:" + all7); - } - - /** - * 无参查询 - * 返回类型: JSONArray - * 每条记录类型: JSONObject - */ - @Test - void testMapper8() { - JSONArray all8 = testMapper.getAll8(); - System.out.println("结果集:" + all8); - } - - /** - * 无参查询 - * 返回类型: JSONArray - * 每条记录类型: HashMap - */ - @Test - void testMapper9() { - JSONArray all9 = testMapper.getAll9(); - System.out.println("结果集:" + all9); - } - - /** - * 含参查询 - * 返回类型: JSONObject - * 传参类型: HashMap - */ - @Test - void testMapper10() { - JSONObject all10 = testMapper.getAll10(MapOf.of("pointCode", "HNJ01")); - System.out.println("结果集:" + all10); - } - - /** - * 含参查询 - * 返回类型: JSONObject - * 传参类型: JSONObject - */ - @Test - void testMapper11() { - // - JSONObject json=new JSONObject(); -// json.put("pointCode","HNJ01"); - JSONArray all11 = testMapper.getAll11(json); - System.out.println("结果集:" + all11); - } - - /** - * mybatis - for的写法 - 使用于IN查询 - */ - @Test - void testMapper12() { - List list = Arrays.asList("HNJ01", "KLHJ02"); -// List list = new ArrayList<>(); - JSONArray all12 = testMapper.getAll12(list); - System.out.println("结果集:" + all12); - } - - @Test - void testMapper13() { - SchBasePoint bcphj01 = pointService.getOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, "BCPHJ01")); - String s = JSON.toJSONString(bcphj01); - JSONObject jsonObject = JSONObject.parseObject(s); - jsonObject.put("point_name", "测试"); - testMapper.updateByObject(jsonObject); - } - - - @Test - void test111() { - try { - for (int i = 0; i < 5; i++) { - // 参数处理 - if (i == 1) { - throw new BadRequestException(LangProcess.msg("error_SystemError")); - } - try { - // 创建 - if (i == 2) { - throw new BadRequestException(LangProcess.msg("error_SystemError")); - } - }catch (Exception e) { - // 记录 - System.out.println("捕获 - 2"); - } - - // 成功 - System.out.println(i); - } - } catch (Exception e) { - System.out.println("捕获 - 1"); - } - } - @Test - void test112() { - try { - // 转换 - for (int i = 0; i < 5; i++) { - try { - // 参数处理 - if (i == 1) { - throw new BadRequestException(LangProcess.msg("error_SystemError")); - } - // 创建任务 - if (i == 2) { - throw new BadRequestException(LangProcess.msg("error_SystemError")); - } - - // 成功 - System.out.println(i); - } catch (Exception e) { - // add - System.out.println("ssssssss"); - } - } - } catch (Exception e) { - // x 400 - } - // 200 errArray() - - } -} From 1156f212cf8a14174d98cd2b5c1495e4bb99e21c Mon Sep 17 00:00:00 2001 From: lishuai <1793460677@qq.com> Date: Tue, 5 Dec 2023 17:45:26 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E5=8F=8C=E5=B7=A5=E4=BD=8D=E5=A0=86?= =?UTF-8?q?=E5=9E=9B=E6=9C=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DoubleStationStackerDeviceDriver.java | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/DoubleStationStackerDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/DoubleStationStackerDeviceDriver.java index 80e3756..8673652 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/DoubleStationStackerDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/double_station_stacker/DoubleStationStackerDeviceDriver.java @@ -91,8 +91,8 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im Integer lastFrontTask = 0; //行走激光数值 - Integer distancex = 0; - Integer lastDistancex = 0; + Integer distanceX = 0; + Integer lastDistanceX = 0; //特殊开关量1 Float special1 = 0F; @@ -173,8 +173,8 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im private int instructionUpdateTimeOut = 3000; private Date instructionRequireTime = new Date(); private Date instructionUpdateTime = new Date(); - List getdevice_codeList = null; - List putdevice_codeList = null; + List getDeviceCodeList = null; + List putDeviceCodeList = null; //请求成功标记 Boolean requireSucess = false; @@ -219,14 +219,14 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im LinkedList inst = new LinkedList<>(); getIns(inst); if (CollectionUtil.isNotEmpty(inst)&&ObjectUtil.isNotEmpty(inst.get(0))) { - String startdevice_code = inst.get(0).getStart_device_code(); - Device startDevice = deviceAppService.findDeviceByCode(startdevice_code); - writeStorageOrConveyor(inst,startdevice_code,startDevice,map); + String startDeviceCode = inst.get(0).getStart_device_code(); + Device startDevice = deviceAppService.findDeviceByCode(startDeviceCode); + writeStorageOrConveyor(inst,startDeviceCode,startDevice,map); } if (CollectionUtil.isNotEmpty(inst)&&ObjectUtil.isEmpty(inst.get(0))) { - String startdevice_code = inst.get(1).getStart_device_code(); - Device startDevice = deviceAppService.findDeviceByCode(startdevice_code); - writeStorageOrConveyor(inst,startdevice_code,startDevice,map); + String startDeviceCode = inst.get(1).getStart_device_code(); + Device startDevice = deviceAppService.findDeviceByCode(startDeviceCode); + writeStorageOrConveyor(inst,startDeviceCode,startDevice,map); } map.put("to_command", CommandEnum.PICKUP_COMPLETE.getStatus()); requireSucess = true; @@ -239,16 +239,16 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im LinkedList inst = new LinkedList<>(); getIns(inst); if (CollectionUtil.isNotEmpty(inst)&&ObjectUtil.isNotEmpty(inst.get(0))) { - String nextdevice_code = inst.get(0).getNext_device_code(); - Device nextDevice = deviceAppService.findDeviceByCode(nextdevice_code); + String nextDeviceCode = inst.get(0).getNext_device_code(); + Device nextDevice = deviceAppService.findDeviceByCode(nextDeviceCode); //指令为执行 if (unloadCheck(nextDevice)) return; map.put("to_command", 3); requireSucess = true; } if (CollectionUtil.isNotEmpty(inst)&&ObjectUtil.isEmpty(inst.get(0))) { - String nextdevice_code = inst.get(1).getNext_device_code(); - Device nextDevice = deviceAppService.findDeviceByCode(nextdevice_code); + String nextDeviceCode = inst.get(1).getNext_device_code(); + Device nextDevice = deviceAppService.findDeviceByCode(nextDeviceCode); if (unloadCheck(nextDevice)) return; map.put("to_command", 3); requireSucess = true; @@ -308,7 +308,7 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im lastFrontY = frontY; lastBackY = backY; lastAction = action; - lastDistancex = distancex; + lastDistanceX = distanceX; lastFrontForkCargo = frontForkCargo; lastBackForkCargo = backForkCargo; lastFrontForkLocation = frontForkLocation; @@ -446,17 +446,17 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im return true; } for (Instruction instruction : instructions) { - List routeLineDtos = routeLineService.selectDeviceCodeList(instruction.getStart_device_code()); - if (CollUtil.isEmpty(routeLineDtos) || routeLineDtos.size() < 1) { + List routeLines = routeLineService.selectDeviceCodeList(instruction.getStart_device_code()); + if (CollUtil.isEmpty(routeLines) || routeLines.size() < 1) { message = "没有输送线到堆垛机的路由"; logServer.deviceExecuteLog(this.device_code, "", "", "没有" + instruction.getStart_device_code() + "->" + this.device_code + "的路由"); continue; } - for (RouteLineDto routeLineDto : routeLineDtos) { + for (RouteLineDto routeLineDto : routeLines) { if (this.getDeviceCode().equals(routeLineDto.getNext_device_code())) { List routeLineDtoList = routeLineService.selectDeviceCodeList(this.getDeviceCode()); - if (CollUtil.isEmpty(routeLineDtos) || routeLineDtos.size() < 1) { + if (CollUtil.isEmpty(routeLines) || routeLines.size() < 1) { message = "没有输送线到堆垛机的路由"; logServer.deviceExecuteLog(this.device_code, "", "", "没有" + instruction.getStart_device_code() + "->" + this.device_code + "的路由"); @@ -475,8 +475,8 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im private boolean wirteData(LinkedList inst) { if (StrUtil.equals(inst.get(0).getInstruction_status(), InstructionStatusEnum.READY.getIndex())) { - String startdevice_code = inst.get(0).getStart_device_code(); - Device startDevice = deviceAppService.findDeviceByCode(startdevice_code); + String startDeviceCode = inst.get(0).getStart_device_code(); + Device startDevice = deviceAppService.findDeviceByCode(startDeviceCode); BeltConveyorDeviceDriver beltConveyorDeviceDriver; if (startDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { beltConveyorDeviceDriver = (BeltConveyorDeviceDriver) startDevice.getDeviceDriver(); @@ -504,7 +504,7 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im map.put("to_front_task", inst.get(0).getInstruction_code()); map.put("to_back_task", inst.get(1).getInstruction_code()); } - writeStorageOrConveyor(inst, startdevice_code, startDevice, map); + writeStorageOrConveyor(inst, startDeviceCode, startDevice, map); this.writing(map); } @@ -818,9 +818,9 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im logServer.deviceItemValue(this.device_code, "mode", String.valueOf(action)); logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + lastAction + "->" + action); } - if (!distancex.equals(lastDistancex)) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(distancex)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号distancex:" + lastDistancex + "->" + distancex); + if (!distanceX.equals(lastDistanceX)) { + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(distanceX)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号distancex:" + lastDistanceX + "->" + distanceX); } if (!frontForkCargo.equals(lastFrontForkCargo)) { From 9398535dcc16f2db310223fbb9e667bfe7a338f1 Mon Sep 17 00:00:00 2001 From: yanps Date: Tue, 5 Dec 2023 18:01:27 +0800 Subject: [PATCH 4/4] =?UTF-8?q?add:=20=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=B7=BB=E5=8A=A0=E5=AF=BC=E5=87=BA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- acs/nladmin-system/nlsso-server/pom.xml | 20 ++ .../BeltConveyorDeviceDriver.java | 15 +- .../StandardStackerDeviceDriver.java | 10 +- .../rest/InstructionController.java | 8 + .../service/InstructionService.java | 17 ++ .../service/impl/InstructionServiceImpl.java | 76 ++++++++ .../org/nl/acs/task/rest/TaskController.java | 18 ++ .../org/nl/acs/task/service/TaskService.java | 32 ++++ .../task/service/impl/TaskServiceImpl.java | 172 ++++++++++++++++++ .../java/org/nl/common/utils/FileUtil.java | 6 +- acs/nladmin-ui/src/assets/images/logo2.png | Bin 0 -> 122451 bytes acs/nladmin-ui/src/i18n/langs/auto/zh.js | 30 +-- acs/nladmin-ui/src/i18n/langs/config/en.js | 3 +- acs/nladmin-ui/src/i18n/langs/config/in.js | 3 +- acs/nladmin-ui/src/i18n/langs/config/zh.js | 3 +- .../src/views/acs/config/assigned/index.vue | 3 +- .../views/acs/config/trafficControl/index.vue | 3 +- .../views/acs/history/instRecord/index.vue | 38 +++- .../views/acs/history/taskRecord/index.vue | 36 +++- .../acs/history/taskTreeRecord/index.vue | 44 ++++- 20 files changed, 501 insertions(+), 36 deletions(-) create mode 100644 acs/nladmin-ui/src/assets/images/logo2.png diff --git a/acs/nladmin-system/nlsso-server/pom.xml b/acs/nladmin-system/nlsso-server/pom.xml index d17bd49..f05cb67 100644 --- a/acs/nladmin-system/nlsso-server/pom.xml +++ b/acs/nladmin-system/nlsso-server/pom.xml @@ -443,6 +443,26 @@ ${commons-csv.version} + + org.apache.poi + poi + 4.1.2 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi-ooxml-schemas + 4.1.2 + + + xerces + xercesImpl + 2.12.0 + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/belt_conveyor/BeltConveyorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/belt_conveyor/BeltConveyorDeviceDriver.java index 2bc5de8..8392163 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/belt_conveyor/BeltConveyorDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/belt_conveyor/BeltConveyorDeviceDriver.java @@ -389,6 +389,19 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements //查找有没有对应的指令 Instruction inst = instructionService.findByDeviceCodeFromCache(this.device_code); if (ObjectUtil.isNotNull(inst) && "1".equals(inst.getInstruction_type())) { + List routeLineDtos = routeLineService.selectDeviceCodeList(this.device_code); + if (routeLineDtos.size() < 1) { + return false; + } + int i = 0; + for (RouteLineDto routeLineDto : routeLineDtos) { + if (routeLineDto.getNext_device_code().equals(inst.getNext_device_code())) { + i++; + } + } + if (i == 0) { + return false; + } Device nextdevice = deviceAppservice.findDeviceByCode(inst.getNext_device_code()); String next_addr = nextdevice.getExtraValue().get("address").toString(); TaskDto taskDto = taskserver.findByCodeFromCache(inst.getTask_code()); @@ -485,7 +498,7 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements instructionService.create(instdto); } catch (Exception e) { e.printStackTrace(); - log.error("指令创建失败!", e.getMessage()); + log.error("指令创建失败!,{}", e.getMessage()); return false; } taskdto.setTask_status("1"); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_stacker/StandardStackerDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_stacker/StandardStackerDeviceDriver.java index 5febdc9..7da3471 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_stacker/StandardStackerDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_stacker/StandardStackerDeviceDriver.java @@ -622,13 +622,13 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme map.put("to_task", inst.getInstruction_code()); if (StrUtil.equals(startDevice.getDevice_type(), DeviceType.conveyor.name())) { - if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("x"))) { - map.put("to_x", startDevice.getExtraValue().get("x")); + if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("z")) ) { + map.put("to_x", startDevice.getExtraValue().get("z")); } - if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("z"))) { - map.put("to_z", startDevice.getExtraValue().get("z")); + if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("x")) ) { + map.put("to_z", startDevice.getExtraValue().get("x")); } - if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("y"))) { + if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("y")) ) { map.put("to_y", startDevice.getExtraValue().get("y")); } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java index f34d06b..e146e08 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java @@ -154,4 +154,12 @@ public class InstructionController { instructionService.init(id); return new ResponseEntity<>(HttpStatus.OK); } + + @GetMapping("/downloadInstLogging") + @Log("导出指令记录") + @ApiOperation("导出指令记录") + //@PreAuthorize("@el.check('task:list')") + public void downloadInstLogging(HttpServletResponse response,@RequestParam Map whereJson) throws IOException { + instructionService.downloadInstLogging(instructionService.getInstList(whereJson), response); + } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java index d4afc6a..a364d27 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java @@ -1,5 +1,6 @@ package org.nl.acs.instruction.service; +import com.alibaba.fastjson.JSONObject; import org.nl.acs.instruction.domain.InstructionMybatis; import org.nl.acs.instruction.service.dto.InstructionDto; import org.nl.acs.instruction.service.dto.InstructionQueryParam; @@ -327,5 +328,21 @@ public interface InstructionService extends CommonService { * @param instruction1 * @return */ + List findByDeviceCodes(Instruction instruction1, Boolean flay); + + + /** + * 根据条件查询指令 + * @param whereJson + * @return + */ + List getInstList(Map whereJson); + + /** + * 导出指令记录 + * @param instList + * @param response + */ + void downloadInstLogging(List instList, HttpServletResponse response) throws IOException; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 9c094f1..837ed20 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -1607,4 +1607,80 @@ public class InstructionServiceImpl extends CommonServiceImpl instructions = ConvertUtil.convertList(instructionMybatis, Instruction.class);*/ return instructionList; } + + @Override + public List getInstList(Map whereJson) { + String task_code = (String) whereJson.get("code"); + String vehicle_code = (String) whereJson.get("vehicle_code"); + String material_type = (String) whereJson.get("material_type"); + String status = (String) whereJson.get("status"); + String point_code = (String) whereJson.get("point_code"); + String create_time = (String) whereJson.get("createTime"); + String end_time = (String) whereJson.get("end_time"); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (!StrUtil.isEmpty(task_code)) { + wrapper.and(instructionMybatis -> instructionMybatis.like(InstructionMybatis::getInstruction_code, task_code).or().like(InstructionMybatis::getTask_code, task_code)); + } + if (!StrUtil.isEmpty(vehicle_code)) { + wrapper.like(InstructionMybatis::getVehicle_code, vehicle_code); + } + if (!StrUtil.isEmpty(material_type)) { + wrapper.eq(InstructionMybatis::getMaterial, material_type); + } + if (!StrUtil.isEmpty(status)) { + wrapper.eq(InstructionMybatis::getInstruction_status, status); + } + if (!StrUtil.isEmpty(point_code)) { + wrapper.and(task -> task.like(InstructionMybatis::getStart_point_code, point_code).or().like(InstructionMybatis::getNext_point_code, point_code)); + } + if (!StrUtil.isEmpty(create_time) && !StrUtil.isEmpty(end_time)) { + wrapper.between(InstructionMybatis::getCreate_time, create_time, end_time); + } + List instructionMybatis = instructionMapper.selectList(wrapper); + List array = new ArrayList<>(); + if(instructionMybatis.size() > 0){ + for (InstructionMybatis inst : instructionMybatis) { + JSONObject ins = new JSONObject(); + ins.put("instruction_code", inst.getInstruction_code()); + ins.put("task_code", inst.getTask_code()); + ins.put("vehicle_code", inst.getVehicle_code()); + ins.put("task_status", inst.getInstruction_status()); + ins.put("start_point_code", inst.getStart_point_code()); + ins.put("next_point_code", inst.getNext_point_code()); + ins.put("matarial", inst.getMaterial()); + ins.put("quantity", inst.getQuantity()); + ins.put("remark", inst.getRemark()); + ins.put("create_by", inst.getCreate_by()); + ins.put("create_time", inst.getCreate_time()); + ins.put("update_by", inst.getUpdate_by()); + ins.put("update_time", inst.getUpdate_time()); + array.add(ins); + } + } + return array; + } + + @Override + public void downloadInstLogging(List instList, HttpServletResponse response) throws IOException { + List> list = new ArrayList<>(); + for (JSONObject jsonObject : instList) { + Map map = new LinkedHashMap<>(); + map.put("指令编码", jsonObject.getString("instruction_code")); + map.put("任务号", jsonObject.getString("task_code")); + map.put("载具号", jsonObject.getString("vehicle_code")); + map.put("指令状态", jsonObject.getString("task_status")); + map.put("起点", jsonObject.getString("start_point_code")); + map.put("终点", jsonObject.getString("next_point_code")); + map.put("物料", jsonObject.getString("matarial")); + map.put("数量", jsonObject.getString("quantity")); + map.put("备注", jsonObject.getString("remark")); + map.put("创建者", jsonObject.getString("create_by")); + map.put("创建时间", jsonObject.getString("create_time")); + map.put("修改者", jsonObject.getString("update_by")); + map.put("修改时间", jsonObject.getString("update_time")); + list.add(map); + } + FileUtil.downloadExcel(list, response); + } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java index b2ba9a2..eeab7c0 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java @@ -156,4 +156,22 @@ public class TaskController { public ResponseEntity findAllTaskFromCache() { return new ResponseEntity<>(taskService.findAllTaskFromCache(), HttpStatus.OK); } + + @GetMapping("/downloadTaskTreeLogging") + @Log("导出任务树形记录") + @ApiOperation("导出任务树形记录") + //@PreAuthorize("@el.check('task:list')") + public void downloadTaskTreeLogging(HttpServletResponse response,@RequestParam Map whereJson) throws IOException { + taskService.downloadTaskTreeLogging(taskService.getTaskAndInst(whereJson), response); + } + + + @GetMapping("/downloadTaskLogging") + @Log("导出任务树形记录") + @ApiOperation("导出任务树形记录") + //@PreAuthorize("@el.check('task:list')") + public void downloadTaskLogging(HttpServletResponse response,@RequestParam Map whereJson) throws IOException { + taskService.downloadTaskLogging(taskService.getTaskList(whereJson), response); + } + } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java index ca55e08..f22624e 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java @@ -372,4 +372,36 @@ public interface TaskService extends CommonService { * @return */ Integer querySameDeviceReadyTask(String start_device, String next_device, String status); + + + + /** + * 条件查询任务和指令 + * @param whereJson + * @param page + * @return + */ + List getTaskAndInst(Map whereJson); + + /** + * 导出任务树形记录 + * @param taskAndInst + * @param response + */ + void downloadTaskTreeLogging(List list, HttpServletResponse response) throws IOException; + + /** + * 导出任务记录 + * @param all + * @param response + */ + void downloadTaskLogging(List all, HttpServletResponse response) throws IOException; + + /** + * 查询任务 + * @param whereJson + * @return + */ + List getTaskList(Map whereJson); + } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 4d70c41..2b61186 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -1,6 +1,7 @@ package org.nl.acs.task.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; @@ -11,6 +12,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.acs.AcsConfig; @@ -1677,6 +1679,176 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return num; } + @Override + public List getTaskAndInst(Map whereJson) { + String task_code = (String) whereJson.get("task_code"); + String vehicle_code = (String) whereJson.get("vehicle_code"); + String material_type = (String) whereJson.get("material_type"); + String status = (String) whereJson.get("status"); + String point_code = (String) whereJson.get("point_code"); + String create_time = (String) whereJson.get("createTime"); + String end_time = (String) whereJson.get("end_time"); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (!StrUtil.isEmpty(task_code)) { + wrapper.eq(Task::getTask_code, task_code); + } + if (!StrUtil.isEmpty(vehicle_code)) { + wrapper.like(Task::getVehicle_code, vehicle_code); + } + if (!StrUtil.isEmpty(material_type)) { + wrapper.eq(Task::getMaterial, material_type); + } + if (!StrUtil.isEmpty(status)) { + wrapper.eq(Task::getTask_status, status); + } + if (!StrUtil.isEmpty(point_code)) { + wrapper.and(task -> task.like(Task::getStart_point_code, point_code).or().like(Task::getNext_point_code, point_code)); + } + if (!StrUtil.isEmpty(create_time) && !StrUtil.isEmpty(end_time)) { + wrapper.between(Task::getCreate_time, create_time, end_time); + } + List taskList = taskMapper.selectList(wrapper); + List array = new ArrayList<>(); + if (CollUtil.isNotEmpty(taskList) && taskList.size() > 0) { + for (Task task : taskList) { + JSONObject ins = new JSONObject(); + //ins.put("task_id", task.getTask_id()); + ins.put("task_code", task.getTask_code()); + ins.put("vehicle_code", task.getVehicle_code()); + ins.put("task_status", task.getTask_status()); + ins.put("priority", task.getPriority()); + ins.put("start_point_code", task.getStart_point_code()); + ins.put("next_point_code", task.getNext_point_code()); + ins.put("start_point_code2", task.getStart_point_code2()); + ins.put("next_point_code2", task.getNext_point_code2()); + ins.put("matarial", task.getMaterial()); + ins.put("quantity", task.getQuantity()); + ins.put("remark", task.getRemark()); + ins.put("create_by", task.getCreate_by()); + ins.put("create_time", task.getCreate_time()); + array.add(ins); + List list = instructionService.list(Wrappers.lambdaQuery(InstructionMybatis.class)); + if (CollUtil.isNotEmpty(list) && list.size() > 0) { + for (InstructionMybatis inst : list) { + if(task.getTask_id().equals(inst.getTask_id())){ + JSONObject ins1 = new JSONObject(); + //ins1.put("task_id", inst.getInstruction_id()); + ins1.put("task_code", inst.getInstruction_code()); + ins1.put("vehicle_code", inst.getVehicle_code()); + ins1.put("task_status", inst.getInstruction_status()); + ins1.put("start_point_code", inst.getStart_point_code()); + ins1.put("next_point_code", inst.getNext_point_code()); + ins1.put("matarial", inst.getMaterial()); + ins1.put("remark", inst.getRemark()); + ins1.put("create_by", inst.getCreate_by()); + ins1.put("create_time", inst.getCreate_time()); + array.add(ins1); + } + } + } + } + } + return array; + } + + @Override + public void downloadTaskTreeLogging(List taskAndInst, HttpServletResponse response) throws IOException { + List> list = new ArrayList<>(); + for (JSONObject jsonObject : taskAndInst) { + Map map = new LinkedHashMap<>(); + map.put("任务号(指令编码)", jsonObject.getString("task_code")); + map.put("载具号", jsonObject.getString("vehicle_code")); + map.put("状态", jsonObject.getString("task_status")); + map.put("任务优先级", jsonObject.getString("priority")); + map.put("起点", jsonObject.getString("start_point_code")); + map.put("终点", jsonObject.getString("next_point_code")); + map.put("起点2", jsonObject.getString("start_point_code2")); + map.put("终点2", jsonObject.getString("next_point_code2")); + map.put("物料", jsonObject.getString("matarial")); + map.put("数量", jsonObject.getString("quantity")); + map.put("备注", jsonObject.getString("remark")); + map.put("创建者", jsonObject.getString("create_by")); + map.put("创建时间", jsonObject.getString("create_time")); + list.add(map); + } + FileUtil.downloadExcel(list, response); + } + + + @Override + public void downloadTaskLogging(List taskAndInst, HttpServletResponse response) throws IOException { + List> list = new ArrayList<>(); + for (JSONObject jsonObject : taskAndInst) { + Map map = new LinkedHashMap<>(); + map.put("任务号", jsonObject.getString("task_code")); + map.put("载具号", jsonObject.getString("vehicle_code")); + map.put("任务状态", jsonObject.getString("task_status")); + map.put("任务优先级", jsonObject.getString("priority")); + map.put("起点", jsonObject.getString("start_point_code")); + map.put("终点", jsonObject.getString("next_point_code")); + map.put("物料", jsonObject.getString("matarial")); + map.put("数量", jsonObject.getString("quantity")); + map.put("备注", jsonObject.getString("remark")); + map.put("创建者", jsonObject.getString("create_by")); + map.put("创建时间", jsonObject.getString("create_time")); + list.add(map); + } + FileUtil.downloadExcel(list, response); + } + + @Override + public List getTaskList(Map whereJson) { + String task_code = (String) whereJson.get("task_code"); + String vehicle_code = (String) whereJson.get("vehicle_code"); + String material_type = (String) whereJson.get("material_type"); + String status = (String) whereJson.get("status"); + String point_code = (String) whereJson.get("point_code"); + String create_time = (String) whereJson.get("createTime"); + String end_time = (String) whereJson.get("end_time"); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (!StrUtil.isEmpty(task_code)) { + wrapper.eq(Task::getTask_code, task_code); + } + if (!StrUtil.isEmpty(vehicle_code)) { + wrapper.like(Task::getVehicle_code, vehicle_code); + } + if (!StrUtil.isEmpty(material_type)) { + wrapper.eq(Task::getMaterial, material_type); + } + if (!StrUtil.isEmpty(status)) { + wrapper.eq(Task::getTask_status, status); + } + if (!StrUtil.isEmpty(point_code)) { + wrapper.and(task -> task.like(Task::getStart_point_code, point_code).or().like(Task::getNext_point_code, point_code)); + } + if (!StrUtil.isEmpty(create_time) && !StrUtil.isEmpty(end_time)) { + wrapper.between(Task::getCreate_time, create_time, end_time); + } + List taskList = taskMapper.selectList(wrapper); + List array = new ArrayList<>(); + if (CollUtil.isNotEmpty(taskList) && taskList.size() > 0) { + for (Task task : taskList) { + JSONObject ins = new JSONObject(); + //ins.put("task_id", task.getTask_id()); + ins.put("task_code", task.getTask_code()); + ins.put("vehicle_code", task.getVehicle_code()); + ins.put("task_status", task.getTask_status()); + ins.put("priority", task.getPriority()); + ins.put("start_point_code", task.getStart_point_code()); + ins.put("next_point_code", task.getNext_point_code()); + ins.put("matarial", task.getMaterial()); + ins.put("quantity", task.getQuantity()); + ins.put("remark", task.getRemark()); + ins.put("create_by", task.getCreate_by()); + ins.put("create_time", task.getCreate_time()); + array.add(ins); + } + } + return array; + } + @Override public Integer querySameTaskByType(String taskType) { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java index e2dac4e..ec10aa5 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java @@ -60,7 +60,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { * linux: /temp * */ - public static final String SYS_TEM_DIR = System.getProperty("java.io.tmpdir") + File.separator; + public static final String SYS_TEM_DIR = System.getProperty("java.io.tmpdir"); /** * 定义GB的计算常量 */ @@ -210,7 +210,9 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { File file = new File(tempPath); BigExcelWriter writer = ExcelUtil.getBigWriter(file); // 一次性写出内容,使用默认样式,强制输出标题 - writer.write(list, true); + for (Object item : list) { + writer.writeRow(item, true); + } SXSSFSheet sheet = (SXSSFSheet)writer.getSheet(); //上面需要强转SXSSFSheet 不然没有trackAllColumnsForAutoSizing方法 sheet.trackAllColumnsForAutoSizing(); diff --git a/acs/nladmin-ui/src/assets/images/logo2.png b/acs/nladmin-ui/src/assets/images/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ca19b2db567b8af0542615bf0b5bbf25a418b1 GIT binary patch literal 122451 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 q{3zAnV2Ougf)}{@_o` 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

y4A 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≪av)Jc3G&%W>c;wJntn_1o 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 KgF5}&@&5$d|B?0p literal 0 HcmV?d00001 diff --git a/acs/nladmin-ui/src/i18n/langs/auto/zh.js b/acs/nladmin-ui/src/i18n/langs/auto/zh.js index 59b204d..917b398 100644 --- a/acs/nladmin-ui/src/i18n/langs/auto/zh.js +++ b/acs/nladmin-ui/src/i18n/langs/auto/zh.js @@ -1,17 +1,17 @@ export default { - 'Auto': { - 'table': { - 'name': '名称', - 'code': '编号', - 'status': '状态', - 'thread_name': '线程名', - 'thread_state': '线程状态', - 'usedStatus': '使用状态', - 'stopMessage': '停止信息', - 'operate': '操作', - }, - 'msg': { - 'stop_msg': '确定停止该线程吗?' - } + 'Auto': { + 'table': { + 'name': '名称', + 'code': '编号', + 'status': '状态', + 'thread_name': '线程名', + 'thread_state': '线程状态', + 'usedStatus': '使用状态', + 'stopMessage': '停止信息', + 'operate': '操作' + }, + 'msg': { + 'stop_msg': '确定停止该线程吗?' } -} \ No newline at end of file + } +} diff --git a/acs/nladmin-ui/src/i18n/langs/config/en.js b/acs/nladmin-ui/src/i18n/langs/config/en.js index c86471d..35fab3c 100644 --- a/acs/nladmin-ui/src/i18n/langs/config/en.js +++ b/acs/nladmin-ui/src/i18n/langs/config/en.js @@ -15,7 +15,8 @@ export default { 'inst_nextdevice_code': 'Command destination device', 'destination_configuration': 'Destination configuration', 'operation': 'Operation', - 'device_is_not_null': 'Device code cannot be empty' + 'device_is_not_null': 'Device code cannot be empty', + 'mapping_relationship': 'Mapping relationship' }, 'rules': { } diff --git a/acs/nladmin-ui/src/i18n/langs/config/in.js b/acs/nladmin-ui/src/i18n/langs/config/in.js index 87327c2..2b081c6 100644 --- a/acs/nladmin-ui/src/i18n/langs/config/in.js +++ b/acs/nladmin-ui/src/i18n/langs/config/in.js @@ -15,7 +15,8 @@ export default { 'inst_nextdevice_code': 'Perangkat tujuan perintah', 'destination_configuration': 'Konfigurasi tujuan', 'operation': 'Operasi', - 'device_is_not_null': 'Kode perangkat tidak boleh kosong' + 'device_is_not_null': 'Kode perangkat tidak boleh kosong', + 'mapping_relationship': 'Hubungan pemetaan' }, 'rules': { } diff --git a/acs/nladmin-ui/src/i18n/langs/config/zh.js b/acs/nladmin-ui/src/i18n/langs/config/zh.js index d978343..867ab98 100644 --- a/acs/nladmin-ui/src/i18n/langs/config/zh.js +++ b/acs/nladmin-ui/src/i18n/langs/config/zh.js @@ -15,7 +15,8 @@ export default { 'inst_nextdevice_code': '指令终点设备', 'destination_configuration': '终点配置', 'operation': '操作', - 'device_is_not_null': '设备编码不能为空' + 'device_is_not_null': '设备编码不能为空', + 'mapping_relationship': '映射关系' }, 'rules': { } diff --git a/acs/nladmin-ui/src/views/acs/config/assigned/index.vue b/acs/nladmin-ui/src/views/acs/config/assigned/index.vue index d0314f6..894c43a 100644 --- a/acs/nladmin-ui/src/views/acs/config/assigned/index.vue +++ b/acs/nladmin-ui/src/views/acs/config/assigned/index.vue @@ -134,6 +134,7 @@ import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import deviceCrud from '@/api/acs/device/device' +import i18n from '@/i18n' const defaultForm = { assigned_id: null, @@ -149,7 +150,7 @@ export default { mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { return CRUD({ - title: '映射关系', url: 'api/deviceAssigned', idField: 'assigned_id', sort: 'assignned_id', optShow: { + title: i18n.t('config.table.mapping_relationship'), url: 'api/deviceAssigned', idField: 'assigned_id', sort: 'assignned_id', optShow: { add: true, edit: true, del: true diff --git a/acs/nladmin-ui/src/views/acs/config/trafficControl/index.vue b/acs/nladmin-ui/src/views/acs/config/trafficControl/index.vue index d0314f6..894c43a 100644 --- a/acs/nladmin-ui/src/views/acs/config/trafficControl/index.vue +++ b/acs/nladmin-ui/src/views/acs/config/trafficControl/index.vue @@ -134,6 +134,7 @@ import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import deviceCrud from '@/api/acs/device/device' +import i18n from '@/i18n' const defaultForm = { assigned_id: null, @@ -149,7 +150,7 @@ export default { mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { return CRUD({ - title: '映射关系', url: 'api/deviceAssigned', idField: 'assigned_id', sort: 'assignned_id', optShow: { + title: i18n.t('config.table.mapping_relationship'), url: 'api/deviceAssigned', idField: 'assigned_id', sort: 'assignned_id', optShow: { add: true, edit: true, del: true diff --git a/acs/nladmin-ui/src/views/acs/history/instRecord/index.vue b/acs/nladmin-ui/src/views/acs/history/instRecord/index.vue index 93f2b91..7c9b1dc 100644 --- a/acs/nladmin-ui/src/views/acs/history/instRecord/index.vue +++ b/acs/nladmin-ui/src/views/acs/history/instRecord/index.vue @@ -58,12 +58,24 @@ - + + + {{ $t('common.Export') }} + + @@ -129,6 +141,8 @@ import crudInstruction from '@/api/acs/instruction/instruction' import CRUD, { crud, form, header, presenter } from '@crud/crud' import crudOperation from '@crud/CRUD.operation' import { getDicts } from '@/views/system/dict/dict' +import { download } from '@/api/data' +import { downloadFile } from '@/utils' const defaultForm = { instruction_id: null, @@ -241,7 +255,25 @@ export default { console.log(err.response.data.message) }) }, - + doExportInstLogging() { + this.downLoadTaskLogging = true + const params = { + code: this.query.task_code, + vehicle_code: this.query.vehicle_code, + material_type: this.query.material_type, + status: this.query.status, + point_code: this.crud.pointCode, + createTime: this.crud.createTime, + end_time: this.crud.endTime // 假设 this.crud.endTime 是你的结束时间 + } + const url = '/api/instruction/downloadInstLogging' + download(url, params).then(result => { + downloadFile(result, this.crud.title + '数据', 'csv') + this.downLoadTaskTreeLogging = false + }).catch(() => { + this.downLoadTaskTreeLogging = false + }) + }, beforeHandleCommand(index, row, command) { return { 'index': index, diff --git a/acs/nladmin-ui/src/views/acs/history/taskRecord/index.vue b/acs/nladmin-ui/src/views/acs/history/taskRecord/index.vue index 56c7a91..b666eb1 100644 --- a/acs/nladmin-ui/src/views/acs/history/taskRecord/index.vue +++ b/acs/nladmin-ui/src/views/acs/history/taskRecord/index.vue @@ -69,7 +69,19 @@ - + + + {{ $t('common.Export') }} + + { + downloadFile(result, this.crud.title + '数据', 'csv') + this.downLoadTaskTreeLogging = false + }).catch(() => { + this.downLoadTaskTreeLogging = false + }) + }, beforeHandleCommand(index, row, command) { return { 'index': index, diff --git a/acs/nladmin-ui/src/views/acs/history/taskTreeRecord/index.vue b/acs/nladmin-ui/src/views/acs/history/taskTreeRecord/index.vue index 5b9bb70..d88ea01 100644 --- a/acs/nladmin-ui/src/views/acs/history/taskTreeRecord/index.vue +++ b/acs/nladmin-ui/src/views/acs/history/taskTreeRecord/index.vue @@ -69,7 +69,19 @@ - + + + {{ $t('common.Export') }} + + { + downloadFile(result, this.crud.title + '数据', 'csv') + this.downLoadTaskTreeLogging = false + }).catch(() => { + this.downLoadTaskTreeLogging = false + }) } } }