From 86ade918c555e28707bd1c81c006158415cdebf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=97=AD=E6=98=8E=5C73939?= <739390650@QQ.COM> Date: Fri, 23 Jan 2026 09:00:19 +0800 Subject: [PATCH] =?UTF-8?q?opt:=E8=A5=BF=E9=97=A8=E5=AD=90=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../run/OneNDCSocketConnectionAutoRun.java | 17 +- .../agv/ndcone/AgvNdcOneDeviceDriver.java | 22 ++- .../controller/HandheldController.java | 14 ++ .../ext/handheld/service/HandheldService.java | 14 ++ .../service/impl/HandheldServiceImpl.java | 164 ++++++++++++++++-- .../ISchBaseVehiclematerialgroupService.java | 7 + .../SchBaseVehiclematerialgroupMapper.java | 2 + .../SchBaseVehiclematerialgroupMapper.xml | 13 ++ ...chBaseVehiclematerialgroupServiceImpl.java | 22 ++- .../service/impl/SchBasePointServiceImpl.java | 2 +- .../task/tasks/handheld/RackTask.java | 6 + .../task/tasks/handheld/ToStoreHouseTask.java | 2 + .../tasks/pcoperation/PcOperationSMTTask.java | 27 ++- .../src/views/wms/produceScreen/index.vue | 29 +++- 14 files changed, 307 insertions(+), 34 deletions(-) diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java index f7b2292..4e4f77c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java @@ -1,5 +1,6 @@ package org.nl.acs.auto.run; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; @@ -258,8 +259,12 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (ObjectUtil.isNotEmpty(bjdDevice)) { if (bjdDevice.getDeviceDriver() instanceof GuardLampDeviceDriver) { try { - GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) bjdDevice.getDeviceDriver(); - guardLampDeviceDriver.writing("to_open", "1"); + List guard_lamp_open_flag_list = dictService.getDictByName("guard_lamp_open_flag"); + if(CollectionUtil.isNotEmpty(guard_lamp_open_flag_list) && "1".equals(guard_lamp_open_flag_list.get(0).getValue()) + && guard_lamp_open_flag_list.get(0).getPara1().contains(bjdDevice.getDevice_code())) { + GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) bjdDevice.getDeviceDriver(); + guardLampDeviceDriver.writing("to_open", "1"); + } data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); } catch (Exception e) { log.info("下发告警灯告警信号失败"); @@ -279,8 +284,12 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (ObjectUtil.isNotEmpty(bjdDevice)) { if (bjdDevice.getDeviceDriver() instanceof GuardLampDeviceDriver) { try { - GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) bjdDevice.getDeviceDriver(); - guardLampDeviceDriver.writing("to_open", "0"); + List guard_lamp_open_flag_list = dictService.getDictByName("guard_lamp_open_flag"); + if(CollectionUtil.isNotEmpty(guard_lamp_open_flag_list) && "1".equals(guard_lamp_open_flag_list.get(0).getValue()) + && guard_lamp_open_flag_list.get(0).getPara1().contains(bjdDevice.getDevice_code())) { + GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) bjdDevice.getDeviceDriver(); + guardLampDeviceDriver.writing("to_open", "0"); + } data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); } catch (Exception e) { log.info("下发告警灯取消告警信号失败"); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index 6252b91..e5b8039 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.basedriver.agv.ndcone; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -39,9 +40,12 @@ import org.nl.acs.task.domain.Task; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.impl.TaskServiceImpl; +import org.nl.system.service.dict.ISysDictService; +import org.nl.system.service.dict.dao.Dict; import org.nl.system.service.param.ISysParamService; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import java.util.ArrayList; import java.util.HashMap; @@ -65,6 +69,8 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); + ISysDictService dictService = SpringContextHolder.getBean(ISysDictService.class); + int agvaddr = 0; int agvaddr_copy = 0; int weight = 0; @@ -533,8 +539,12 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic try { Device guardLamp = deviceAppService.findDeviceByCode("BJD" + agvaddr); if (guardLamp != null) { - GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) device.getDeviceDriver(); - guardLampDeviceDriver.writing("to_open", "1"); + List guard_lamp_open_flag_list = dictService.getDictByName("guard_lamp_open_flag"); + if(CollectionUtil.isNotEmpty(guard_lamp_open_flag_list) && "1".equals(guard_lamp_open_flag_list.get(0).getValue()) + && guard_lamp_open_flag_list.get(0).getPara1().contains(guardLamp.getDevice_code())) { + GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) guardLamp.getDeviceDriver(); + guardLampDeviceDriver.writing("to_open", "1"); + } } } catch (Exception e) { log.info("下发告警灯告警信号失败"); @@ -546,8 +556,12 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic try { Device guardLamp = deviceAppService.findDeviceByCode("BJD" + agvaddr); if (guardLamp != null) { - GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) device.getDeviceDriver(); - guardLampDeviceDriver.writing("to_open", "0"); + List guard_lamp_open_flag_list = dictService.getDictByName("guard_lamp_open_flag"); + if(CollectionUtil.isNotEmpty(guard_lamp_open_flag_list) && "1".equals(guard_lamp_open_flag_list.get(0).getValue()) + && guard_lamp_open_flag_list.get(0).getPara1().contains(guardLamp.getDevice_code())) { + GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) guardLamp.getDeviceDriver(); + guardLampDeviceDriver.writing("to_open", "0"); + } } } catch (Exception e) { log.info("下发告警灯取消告警信号失败"); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/controller/HandheldController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/controller/HandheldController.java index 177e9ae..7c74a55 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/controller/HandheldController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/controller/HandheldController.java @@ -193,6 +193,13 @@ public class HandheldController { return new ResponseEntity<>(handheldService.checkTrayInfo(json.getString("vehicle_code")), HttpStatus.OK); } + @PostMapping("/getGroupByVehicleCode") + @Log("根据托盘查询组盘信息") + @ApiOperation("根据托盘查询组盘信息") + public ResponseEntity getGroupByVehicleCode(@RequestBody JSONObject json) { + return new ResponseEntity<>(handheldService.getGroupByVehicleCode(json.getString("vehicle_code")), HttpStatus.OK); + } + @PostMapping("/combineMaterials") @Log("执行合托操作") @ApiOperation("执行合托操作") @@ -200,6 +207,13 @@ public class HandheldController { return new ResponseEntity<>(handheldService.combineMaterials(json), HttpStatus.OK); } + @PostMapping("/materialUpdate") + @Log("物料信息修改") + @ApiOperation("物料信息修改") + public ResponseEntity materialUpdate(@RequestBody JSONObject json) { + return new ResponseEntity<>(handheldService.materialUpdate(json), HttpStatus.OK); + } + @Log("查询托盘状态") @ApiOperation(value = "查询托盘状态", notes = "查询托盘状态,包括是否在货架上、所在位置等信息") @GetMapping("/queryVehicleStatus/{vehicleCode}") diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/HandheldService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/HandheldService.java index 92f4886..fcc9d5b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/HandheldService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/HandheldService.java @@ -150,6 +150,13 @@ public interface HandheldService { */ JSONObject checkTrayInfo(String vehicleCode); + /** + * 查询托盘物料信息用于合托 + * @param vehicleCode 托盘编号 + * @return 查询结果 + */ + JSONObject getGroupByVehicleCode(String vehicleCode); + /** * 执行合托操作 * @param json 包含源托盘号、目标托盘号、选中的物料信息等 @@ -157,6 +164,13 @@ public interface HandheldService { */ JSONObject combineMaterials(JSONObject json); + /** + * 执行合托操作 + * @param json 包含源托盘号、目标托盘号、选中的物料信息等 + * @return 合托结果,包含是否需要入库等信息 + */ + JSONObject materialUpdate(JSONObject json); + /** * 查询托盘状态 * @param vehicleCode 托盘号 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java index fe18ca0..72958ae 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java @@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.Synchronized; import nl.basjes.shaded.org.springframework.util.Assert; +import org.apache.commons.lang3.StringUtils; import org.nl.common.enums.GoodsEnum; import org.nl.common.enums.VehicleTypeEnum; import org.nl.common.enums.region.RegionEnum; @@ -776,7 +777,22 @@ public class HandheldServiceImpl implements HandheldService { .eq(SchBasePoint::getPoint_code,pointCode) .set(SchBasePoint::getPoint_status, "1")); } - + @Override + public JSONObject getGroupByVehicleCode(String vehicleCode) { + // 1. 检查托盘是否存在 + MdBaseVehicle vehicle = iMdBaseVehicleService.selectByVehicleCode(vehicleCode); + if (ObjectUtil.isEmpty(vehicle)) { + throw new BadRequestException("托盘不存在"); + } + List materials = iSchBaseVehiclematerialgroupService.selectGroupByVehicleCode(vehicleCode); + JSONObject result = new JSONObject(); + result.put("vehicle_code", vehicleCode); + result.put("vehicle_type", vehicle.getVehicle_type()); + result.put("vehicle_type_name", vehicle.getVehicle_name()); + result.put("materials", materials); + log.info("查询托盘信息成功:托盘编号[{}]", vehicleCode); + return result; + } @Override public JSONObject checkTrayInfo(String vehicleCode) { cn.hutool.core.lang.Assert.notBlank(vehicleCode, "托盘号不能为空"); @@ -818,9 +834,104 @@ public class HandheldServiceImpl implements HandheldService { throw new BadRequestException("查询托盘信息失败:" + e.getMessage()); } } - @Override @Transactional(rollbackFor = Exception.class) + public JSONObject materialUpdate(JSONObject json) { + String operatorId = SecurityUtils.getCurrentNickName(); + cn.hutool.core.lang.Assert.notEmpty(json, "参数不能为空"); + + String vehicleCode = json.getString("vehicle_code"); // 原始托盘号 + JSONArray materials = json.getJSONArray("materials"); // 选中的物料信息 + + cn.hutool.core.lang.Assert.notEmpty(materials, "没有传入物料信息"); + cn.hutool.core.lang.Assert.notBlank(vehicleCode, "托盘号不能为空"); + try { + // 1. 检查托盘是否存在并获取托盘信息 + MdBaseVehicle sourceVehicle = iMdBaseVehicleService.selectByVehicleCode(vehicleCode); + if (ObjectUtil.isEmpty(sourceVehicle)) { + throw new BadRequestException("托盘不存在"); + } + synchronized (this) { + int delete_select_flag_num = 0; + try { + // 4. 查询源托盘的所有物料信息 + List allSourceMaterials = iSchBaseVehiclematerialgroupService.selectByVehicleCode(vehicleCode); + if (CollectionUtils.isEmpty(allSourceMaterials)) { + throw new BadRequestException("源托盘中不存在物料"); + } + // 遍历源托盘物料,校验order_code和material_id是否为空,为空则直接抛错给前端 + for (int j = 0; j < allSourceMaterials.size(); j++) { + SchBaseVehiclematerialgroup materialGroup = allSourceMaterials.get(j); + String groupOrderCode = materialGroup.getOrder_code(); + String groupMaterialId = materialGroup.getMaterial_id(); + + // 订单编号为空,抛明确错误给前端 + if (StringUtils.isBlank(groupOrderCode)) { + throw new BadRequestException("源托盘[" + vehicleCode + "]中第" + (j + 1) + "条物料的订单编号(order_code)为空"); + } + // 物料编码为空,抛明确错误给前端 + if (StringUtils.isBlank(groupMaterialId)) { + throw new BadRequestException("源托盘[" + vehicleCode + "]中第" + (j + 1) + "条物料的物料编码(material_id)为空"); + } + } + + + // 5. 执行操作(遍历选中的物料) + for (int i = 0; i < materials.size(); i++) { + JSONObject selectedMaterial = materials.getJSONObject(i); + // 校验选中物料的order_code和material_code非空 + Integer material_qty = selectedMaterial.getInteger("material_qty"); + String group_id = selectedMaterial.getString("group_id"); + Boolean delete_select_flag = selectedMaterial.getBoolean("delete_select_flag"); + + // 使用Objects.equals避免空指针(双重保障) + List sourceGroups = allSourceMaterials.stream() + .filter(a -> Objects.equals(a.getGroup_id(), group_id)) + .collect(Collectors.toList()); + + // 更新物料的托盘归属 + for (SchBaseVehiclematerialgroup sourceGroup : sourceGroups) { + if (delete_select_flag || material_qty == 0) { + vehiclematerialgroupMapper.deleteById(group_id); + delete_select_flag_num++; + } else { + sourceGroup.setMaterial_qty(material_qty); + sourceGroup.setUpdate_time(DateUtil.now()); + sourceGroup.setUpdate_name(operatorId); + sourceGroup.setCreate_name(operatorId); + vehiclematerialgroupMapper.updateById(sourceGroup); + } + } + } + + // 6. 更新托盘状态:源托盘若物料全部转移则置为空载具 + if (allSourceMaterials.size() == delete_select_flag_num) { + iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class) + .eq(SchBasePoint::getVehicle_code, vehicleCode) + .set(SchBasePoint::getPoint_status, "1")); + } + // 8. 组装成功返回结果 + JSONObject result = new JSONObject(); + result.put("success", true); + result.put("message", "托盘物料信息修改操作成功"); + + return result; + } catch (Exception e) { + throw e; // 直接抛给上层,最终返回给前端 + } + } + } catch (BadRequestException e) { + throw e; // 业务异常直接返回给前端 + } catch (Exception e) { + // 兜底处理异常信息,避免返回"null"给前端 + String errorMsg = Optional.ofNullable(e.getMessage()).orElse("系统异常,合托操作失败"); + throw new BadRequestException(errorMsg); + } + } + + @Override + @Transactional + // 核心合托方法(完整可运行) public JSONObject combineMaterials(JSONObject json) { String operatorId = SecurityUtils.getCurrentNickName(); cn.hutool.core.lang.Assert.notEmpty(json, "参数不能为空"); @@ -844,12 +955,12 @@ public class HandheldServiceImpl implements HandheldService { if (ObjectUtil.isEmpty(sourceVehicle)) { throw new BadRequestException("原始托盘不存在"); } - MdBaseVehicle targetVehicle = iMdBaseVehicleService.selectByVehicleCode(targetVehicleCode); if (ObjectUtil.isEmpty(targetVehicle)) { throw new BadRequestException("目标托盘不存在"); } + // 加载不参与校验的点位配置 List dictNotPointList = dictService.getDictByName("not_call_point_code"); List notInPointList = new ArrayList<>(); if(!CollectionUtils.isEmpty(dictNotPointList)){ @@ -875,20 +986,44 @@ public class HandheldServiceImpl implements HandheldService { throw new BadRequestException("源托盘中不存在物料,无法合托"); } - // 7. 执行合托操作 + // ========== 核心修复点:校验allSourceMaterials中的空值字段 ========== + // 遍历源托盘物料,校验order_code和material_id是否为空,为空则直接抛错给前端 + for (int j = 0; j < allSourceMaterials.size(); j++) { + SchBaseVehiclematerialgroup materialGroup = allSourceMaterials.get(j); + String groupOrderCode = materialGroup.getOrder_code(); + String groupMaterialId = materialGroup.getMaterial_id(); + + // 订单编号为空,抛明确错误给前端 + if (StringUtils.isBlank(groupOrderCode)) { + throw new BadRequestException("源托盘[" + sourceVehicleCode + "]中第" + (j+1) + "条物料的订单编号(order_code)为空,无法合托"); + } + // 物料编码为空,抛明确错误给前端 + if (StringUtils.isBlank(groupMaterialId)) { + throw new BadRequestException("源托盘[" + sourceVehicleCode + "]中第" + (j+1) + "条物料的物料编码(material_id)为空,无法合托"); + } + } + + // 5. 执行合托操作(遍历选中的物料) for (int i = 0; i < selectedMaterials.size(); i++) { JSONObject selectedMaterial = selectedMaterials.getJSONObject(i); + // 校验选中物料的order_code和material_code非空 String order_code = selectedMaterial.getString("order_code"); String material_code = selectedMaterial.getString("material_code"); + cn.hutool.core.lang.Assert.notBlank(order_code, "第" + (i+1) + "条选中物料的订单编号(order_code)不能为空"); + cn.hutool.core.lang.Assert.notBlank(material_code, "第" + (i+1) + "条选中物料的物料编码(material_code)不能为空"); + // 使用Objects.equals避免空指针(双重保障) List sourceGroups = allSourceMaterials.stream() - .filter(a -> a.getOrder_code().equals(order_code) && a.getMaterial_id().equals(material_code)) + .filter(a -> Objects.equals(a.getOrder_code(), order_code) + && Objects.equals(a.getMaterial_id(), material_code)) .collect(Collectors.toList()); + // 选中的物料在源托盘中不存在,抛错给前端 if(CollectionUtil.isEmpty(sourceGroups)){ - throw new BadRequestException("不存在合托的物料编码和订单"); + throw new BadRequestException("第" + (i+1) + "条物料不存在对应的订单[" + order_code + "]和物料编码[" + material_code + "],无法合托"); } + // 更新物料的托盘归属 for (SchBaseVehiclematerialgroup sourceGroup : sourceGroups) { sourceGroup.setVehicle_code(targetVehicleCode); sourceGroup.setUpdate_time(DateUtil.now()); @@ -898,23 +1033,22 @@ public class HandheldServiceImpl implements HandheldService { } } - + // 6. 更新托盘状态:源托盘若物料全部转移则置为空载具 if(allSourceMaterials.size() == selectedMaterials.size()) { - //源托盘点位变成空载具状态 iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class) .eq(SchBasePoint::getVehicle_code, sourceVehicleCode) .set(SchBasePoint::getPoint_status, "1")); } - //目标托盘变成有货状态 + // 目标托盘置为有货状态 iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class) .eq(SchBasePoint::getVehicle_code, targetVehicleCode) .set(SchBasePoint::getPoint_status, "2")); - // 8. 判断是否需要入库:如果两个托盘都不在货架上,则需要入库 + // 7. 判断是否需要入库 boolean needStoreIn = ObjectUtil.isEmpty(sourcePoint) && ObjectUtil.isEmpty(targetPoint); - // 9. 组装返回结果 + // 8. 组装成功返回结果 JSONObject result = new JSONObject(); result.put("success", true); result.put("message", "合托操作成功"); @@ -927,14 +1061,16 @@ public class HandheldServiceImpl implements HandheldService { return result; } catch (BadRequestException e) { - throw e; + throw e; // 直接抛给上层,最终返回给前端 } } } catch (BadRequestException e) { - throw e; + throw e; // 业务异常直接返回给前端 } catch (Exception e) { log.error("合托操作失败:源托盘[{}] -> 目标托盘[{}]", sourceVehicleCode, targetVehicleCode, e); - throw new BadRequestException("合托操作失败:" + e.getMessage()); + // 兜底处理异常信息,避免返回"null"给前端 + String errorMsg = Optional.ofNullable(e.getMessage()).orElse("系统异常,合托操作失败"); + throw new BadRequestException(errorMsg); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java index 839f1f7..f98b69b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java @@ -84,6 +84,13 @@ public interface ISchBaseVehiclematerialgroupService extends IService selectMaterialByVehicleCode(String vehicle_code); + /** + * 根据载具号查找物料信息 + * @param vehicle_code + * @return + */ + List selectGroupByVehicleCode(String vehicle_code); + /** * 根据载具号查找物料信息 * @param entity 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 aa250dd..3b48457 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 @@ -27,6 +27,8 @@ public interface SchBaseVehiclematerialgroupMapper extends BaseMapper selectMaterialByVehicleCode(String vehicle_code); + List selectGroupByVehicleCode(String vehicle_code); + IPage selectAllByPage(IPage page, @Param("query") SchBaseVehiclematerialgroupQuery query); List selectMaterialPathByIsEmpty(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml index f9b638e..0933c6f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml @@ -65,6 +65,19 @@ GROUP BY sbv.order_code +