From b097198695799a8bd41cb7793a6fe6ef3a55bc32 Mon Sep 17 00:00:00 2001 From: liangzhou <594755172@qq.com> Date: Thu, 25 Dec 2025 13:59:51 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E9=97=B4=E6=8E=A5=E7=89=A9=E6=96=99=202.?= =?UTF-8?q?=20=E5=B7=A5=E5=8D=95=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5=203.?= =?UTF-8?q?=20=E4=B8=80=E4=BA=9B=E8=A7=81=E9=9D=A2=E6=99=9A=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/wms/controller/GoodsController.java | 11 ++- .../controller/KateWorkQueryController.java | 4 +- .../wms/controller/LocationController.java | 48 +++++++++ .../com/wms/controller/TaskController.java | 99 +++++++++++-------- .../com/wms/entity/app/dto/VehicleDto.java | 2 +- .../app/dto/extend/VehicleDetailInfo.java | 12 ++- .../app/dto/extend/VehicleDetailInfo_2.java | 22 +++++ .../wms/entity/app/request/VehicleQuery.java | 12 ++- .../com/wms/entity/app/vo/KateOrdersVo.java | 19 ++++ .../java/com/wms/entity/app/vo/VehicleVO.java | 13 ++- .../java/com/wms/entity/table/Vehicle.java | 8 +- .../ValidateServiceImplements.java | 5 +- .../listener/UploadKateOrdersListener.java | 71 ++++++++----- .../wms/utils/excel/vo/VehicleExcelVo.java | 22 ++++- 14 files changed, 258 insertions(+), 90 deletions(-) create mode 100644 src/main/java/com/wms/entity/app/dto/extend/VehicleDetailInfo_2.java diff --git a/src/main/java/com/wms/controller/GoodsController.java b/src/main/java/com/wms/controller/GoodsController.java index 28b8932..de49a79 100644 --- a/src/main/java/com/wms/controller/GoodsController.java +++ b/src/main/java/com/wms/controller/GoodsController.java @@ -80,7 +80,8 @@ public class GoodsController { Page page = goodsQuery.toMpPage(); Page goodsPage = goodsService.page(page, new LambdaQueryWrapper() .like(StringUtils.isNotEmpty(goodsQuery.getGoodsId()), Goods::getGoodsId, goodsQuery.getGoodsId()) - .like(StringUtils.isNotEmpty(goodsQuery.getGoodsName()), Goods::getGoodsName, goodsQuery.getGoodsName())); + .like(StringUtils.isNotEmpty(goodsQuery.getGoodsName()), Goods::getGoodsName, goodsQuery.getGoodsName()) + .like(StringUtils.isNotEmpty(goodsQuery.getGoodsType()), Goods::getGoodsType, goodsQuery.getGoodsType())); PageDto pageDto = PageDto.of(goodsPage, goods -> BeanUtil.copyProperties(goods, GoodsVo.class)); response.setCode(ResponseCode.OK.getCode()); @@ -353,11 +354,13 @@ public class GoodsController { vehicle.setVehicleType("间接物料"); // 找到这个料箱包含的库存物料列表 List indirectStocksOfVehicle = allIndirectStock.stream().filter(stock -> stock.getVehicleId().equals(vehicle.getVehicleId())).toList(); - List details = new ArrayList<>(); + VehicleDetailInfo goodsInfo = new VehicleDetailInfo(); + List detailGoodsIds = new ArrayList<>(); for (Stock stock : indirectStocksOfVehicle) { - details.add(new VehicleDetailInfo(stock.getGoodsRelated().getGoodsId())); + detailGoodsIds.add(stock.getGoodsRelated().getGoodsId()); } - vehicle.setDetails(details); + goodsInfo.setGoodsIds(detailGoodsIds); + vehicle.setGoodsInfo(goodsInfo); } // 更新料箱 vehicleService.updateBatchById(allIndirectVehicles); diff --git a/src/main/java/com/wms/controller/KateWorkQueryController.java b/src/main/java/com/wms/controller/KateWorkQueryController.java index e5f564e..2d755a2 100644 --- a/src/main/java/com/wms/controller/KateWorkQueryController.java +++ b/src/main/java/com/wms/controller/KateWorkQueryController.java @@ -114,7 +114,6 @@ public class KateWorkQueryController { } catch (Exception e) { // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - e.printStackTrace(); logger.error("查询DBS发生异常:{}", e.getMessage()); response.setCode(ResponseCode.ERROR.getCode()); response.setMessage("查询DBS发生异常"); @@ -232,7 +231,8 @@ public class KateWorkQueryController { Page ordersPage = kateOrderService.page(page, new LambdaQueryWrapper() .like(StringUtils.isNotEmpty(kateOrdersQuery.getWorkOrder()), KateOrders::getWorkOrder, kateOrdersQuery.getWorkOrder()) .like(StringUtils.isNotEmpty(kateOrdersQuery.getGoodsId()), KateOrders::getGoodsId, kateOrdersQuery.getGoodsId()) - .like(StringUtils.isNotEmpty(kateOrdersQuery.getSupplyArea()), KateOrders::getSupplyArea, kateOrdersQuery.getSupplyArea())); + .like(StringUtils.isNotEmpty(kateOrdersQuery.getSupplyArea()), KateOrders::getSupplyArea, kateOrdersQuery.getSupplyArea()) + .eq(kateOrdersQuery.getPlanStartDate() != null, KateOrders::getPlanStartDate, kateOrdersQuery.getPlanStartDate())); PageDto pageDto = PageDto.of(ordersPage, orders -> BeanUtil.copyProperties(orders, KateOrdersVo.class)); response.setCode(ResponseCode.OK.getCode()); diff --git a/src/main/java/com/wms/controller/LocationController.java b/src/main/java/com/wms/controller/LocationController.java index 6790356..ce986ec 100644 --- a/src/main/java/com/wms/controller/LocationController.java +++ b/src/main/java/com/wms/controller/LocationController.java @@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.wms.annotation.MyLog; import com.wms.constants.enums.ResponseCode; import com.wms.entity.app.dto.PageDto; +import com.wms.entity.app.dto.extend.VehicleDetailInfo; +import com.wms.entity.app.dto.extend.VehicleDetailInfo_2; import com.wms.entity.app.request.ELocationQuery; import com.wms.entity.app.request.LocationQuery; import com.wms.entity.app.request.VehicleQuery; @@ -39,6 +41,7 @@ import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; +import static com.wms.constants.WmsConstants.MYSQL_JSON_CI; import static com.wms.utils.StringUtils.convertJsonString; /** @@ -315,6 +318,7 @@ public class LocationController { .like(StringUtils.isNotEmpty(vehicleQuery.getCurrentLocation()), Vehicle::getCurrentLocation, vehicleQuery.getCurrentLocation()) .eq(vehicleQuery.getVehicleStatus() != null, Vehicle::getVehicleStatus, vehicleQuery.getVehicleStatus()) .eq(vehicleQuery.getIsEmpty() != null, Vehicle::getIsEmpty, vehicleQuery.getIsEmpty()) + .apply(StringUtils.isNotEmpty(vehicleQuery.getGoodsId()), "JSON_CONTAINS(goods_info ->> '$.goodsIds', {0})" + MYSQL_JSON_CI, "\"" + vehicleQuery.getGoodsId() + "\"") .orderByDesc(Vehicle::getLastInTime); if (StringUtils.isNotEmpty(vehicleQuery.getVehicleType())) { if (vehicleQuery.getVehicleType().equals("间接物料")) { @@ -593,4 +597,48 @@ public class LocationController { // return JSON.toJSONString(rsp); // } // } + + /** + * 一键更新料箱的物料数据格式 + * + * @param vehicleQuery 料箱 + * @return 结果 + */ + @PostMapping("/updateVehicleGoodsInfoFormat") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + @MyLog(logTitle = "一键更新料箱的物料数据格式", logMethod = "updateVehicleGoodsInfoFormat") + public String updateVehicleGoodsInfoFormat(@RequestBody VehicleQuery vehicleQuery) { + logger.info("接收到一键更新料箱的物料数据格式请求:{},请求ip:{}", convertJsonString(vehicleQuery), HttpUtils.getIpAddr(servletRequest)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + // 查询到所有的料箱 + List allVehicles = vehicleService.list(); + List needUpdateVehicles = new ArrayList<>(); + for (Vehicle vehicle : allVehicles) { + if (vehicle.getDetails() == null || vehicle.getDetails().isEmpty()) { + continue; + } + List goodsIds = vehicle.getDetails().stream().map(VehicleDetailInfo_2::getGoodsId).distinct().toList(); + VehicleDetailInfo goodsInfo = new VehicleDetailInfo(); + goodsInfo.setGoodsIds(goodsIds); + vehicle.setGoodsInfo(goodsInfo); + needUpdateVehicles.add(vehicle); + } + // 更新数据 + vehicleService.updateBatchById(needUpdateVehicles); + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("更新成功"); + return convertJsonString(rsp); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("一键更新料箱的物料数据格式异常:{}", convertJsonString(e)); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("一键更新料箱的物料数据格式发生异常"); + return JSON.toJSONString(rsp); + } + } } \ No newline at end of file diff --git a/src/main/java/com/wms/controller/TaskController.java b/src/main/java/com/wms/controller/TaskController.java index 4263e7f..e2c0f60 100644 --- a/src/main/java/com/wms/controller/TaskController.java +++ b/src/main/java/com/wms/controller/TaskController.java @@ -438,9 +438,9 @@ public class TaskController { newVehicle.setVehicleType(inTask.getGoodsRelated().getGoodsType()); if (Objects.equals(newVehicle.getVehicleType(), "间接物料")) { // 如果是间接物料,则设置配对物料 - List vehicleDetailInfos = new ArrayList<>(); - vehicleDetailInfos.add(new VehicleDetailInfo(inTask.getGoodsRelated().getGoodsId())); - newVehicle.setDetails(vehicleDetailInfos); + VehicleDetailInfo vehicleDetailInfos = new VehicleDetailInfo(); + vehicleDetailInfos.setGoodsIds(new ArrayList<>(List.of(inTask.getGoodsRelated().getGoodsId()))); + newVehicle.setGoodsInfo(vehicleDetailInfos); } } newVehicle.setLastInTime(LocalDateTime.now()); @@ -463,10 +463,22 @@ public class TaskController { currentVehicle.setVehicleType(inTask.getGoodsRelated().getGoodsType()); if (Objects.equals(currentVehicle.getVehicleType(), "间接物料")) { // 如果是间接物料,则设置配对物料 - List vehicleDetailInfos = currentVehicle.getDetails() == null ? new ArrayList<>() : currentVehicle.getDetails(); - if (!vehicleDetailInfos.stream().map(VehicleDetailInfo::getGoodsId).toList().contains(inTask.getGoodsRelated().getGoodsId())) { - vehicleDetailInfos.add(new VehicleDetailInfo(inTask.getGoodsRelated().getGoodsId())); - currentVehicle.setDetails(vehicleDetailInfos); + VehicleDetailInfo goodsInfo = currentVehicle.getGoodsInfo(); + if (goodsInfo == null) { + goodsInfo = new VehicleDetailInfo(); + goodsInfo.setGoodsIds(new ArrayList<>(List.of(inTask.getGoodsRelated().getGoodsId()))); + currentVehicle.setGoodsInfo(goodsInfo); + } else { + if (goodsInfo.getGoodsIds() == null) { + goodsInfo = new VehicleDetailInfo(); + goodsInfo.setGoodsIds(new ArrayList<>(List.of(inTask.getGoodsRelated().getGoodsId()))); + currentVehicle.setGoodsInfo(goodsInfo); + } else if (!goodsInfo.getGoodsIds().contains(inTask.getGoodsRelated().getGoodsId())) { + List goodsIds = goodsInfo.getGoodsIds(); + goodsIds.add(inTask.getGoodsRelated().getGoodsId()); + goodsInfo.setGoodsIds(goodsIds); + currentVehicle.setGoodsInfo(goodsInfo); + } } } } @@ -2030,25 +2042,6 @@ public class TaskController { response.setMessage("料箱数量必须为大于0的整数"); return convertJsonString(response); } - // 验证请求信息 -// if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "间接物料")) { -// // TODO 间接物料需要确认 -// if (StringUtils.isEmpty(callEmptyVehicleRequest.getGoodsId())) { -// logger.error("间接物料必须输入物料号"); -// response.setCode(ResponseCode.ERROR.getCode()); -// response.setMessage("间接物料必须输入物料号"); -// return convertJsonString(response); -// } -// // 查询物料是否是间接物料 -// Goods goods = goodsService.getOne(new LambdaQueryWrapper().eq(Goods::getGoodsId, callEmptyVehicleRequest.getGoodsId()).eq(Goods::getGoodsInVehicleType, "间接物料").last("limit 1")); -// if (goods == null) { -// logger.error("当前物料不是间接物料"); -// response.setCode(ResponseCode.ERROR.getCode()); -// response.setMessage("当前物料不是间接物料"); -// return convertJsonString(response); -// } -// callEmptyVehicleRequest.setVehicleType1(goods.getVehicleType()); -// } // 生成料箱出库任务 int needNum = callEmptyVehicleRequest.getNeedNum(); @@ -2056,14 +2049,31 @@ public class TaskController { List outVehicleIds = new ArrayList<>();// 料箱列表 // 查询出需求数量的空箱 LambdaQueryWrapper emptyVehicleQueryWrapper = new LambdaQueryWrapper() - .eq(Vehicle::getIsEmpty, 1) .eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode()) .orderByAsc(Vehicle::getLastInTime) .last("limit " + needNum); if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "间接物料")) { - emptyVehicleQueryWrapper.eq(Vehicle::getVehicleType, "间接物料"); + if (StringUtils.isEmpty(callEmptyVehicleRequest.getGoodsId())) { + logger.error("间接物料必须输入物料号"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("间接物料必须输入物料号"); + return convertJsonString(response); + } + // 查询物料是否是间接物料 + Goods goods = goodsService.getById(callEmptyVehicleRequest.getGoodsId()); + if (goods == null || !Objects.equals(goods.getGoodsType(), "间接物料")) { + logger.error("当前物料不是间接物料"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("当前物料不是间接物料"); + return convertJsonString(response); + } + emptyVehicleQueryWrapper + .eq(Vehicle::getVehicleType, "间接物料") + .apply("JSON_CONTAINS(goods_info ->> '$.goodsIds', {0})" + MYSQL_JSON_CI, "\"" + callEmptyVehicleRequest.getGoodsId() + "\""); } else { - emptyVehicleQueryWrapper.ne(Vehicle::getVehicleType, "间接物料"); + emptyVehicleQueryWrapper + .ne(Vehicle::getVehicleType, "间接物料") + .eq(Vehicle::getIsEmpty, 1); } List emptyVehicles = vehicleService.list(emptyVehicleQueryWrapper); for (Vehicle emptyVehicle : emptyVehicles) { @@ -2090,30 +2100,37 @@ public class TaskController { outVehicleIds.add(emptyVehicle.getVehicleId()); needNum--; } - // 保存任务 - taskService.saveBatch(vehicleOutTasks); - // 更新料箱表 - vehicleService.update(new LambdaUpdateWrapper() - .set(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode()) - .in(Vehicle::getVehicleId, outVehicleIds) - .ne(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode())); + if (!outVehicleIds.isEmpty()) { + // 保存任务 + taskService.saveBatch(vehicleOutTasks); + // 更新料箱表 + vehicleService.update(new LambdaUpdateWrapper() + .set(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode()) + .in(Vehicle::getVehicleId, outVehicleIds) + .ne(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode())); + // 更新库存表 + stockService.update(new LambdaUpdateWrapper() + .set(Stock::getStockStatus, StockStatus.OUT.getCode()) + .in(Stock::getVehicleId, outVehicleIds) + .ne(Stock::getStockStatus, StockStatus.OUT.getCode())); + } if (needNum <= 0) { response.setCode(ResponseCode.OK.getCode()); - response.setMessage("呼叫空箱成功,请等待箱子出库。"); + response.setMessage("呼叫料箱成功,请等待箱子出库。"); } else if (needNum < callEmptyVehicleRequest.getNeedNum()) { response.setCode(ResponseCode.OK.getCode()); - response.setMessage("已呼叫空箱,但库中空箱数量不足。需求" + callEmptyVehicleRequest.getNeedNum() + "个,实际呼叫" + vehicleOutTasks.size() + "个。"); + response.setMessage("已呼叫料箱,但库中符合要求料箱数量不足。需求" + callEmptyVehicleRequest.getNeedNum() + "个,实际呼叫" + vehicleOutTasks.size() + "个。"); } else { response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("库中没有空箱了。"); + response.setMessage("库中没有需求的料箱了。"); } return convertJsonString(response); } catch (Exception e) { // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - logger.error("呼叫空箱发生异常,{}", convertJsonString(e)); + logger.error("呼叫料箱发生异常,{}", convertJsonString(e)); response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("呼叫空箱发生异常"); + response.setMessage("呼叫料箱发生异常"); return convertJsonString(response); } } diff --git a/src/main/java/com/wms/entity/app/dto/VehicleDto.java b/src/main/java/com/wms/entity/app/dto/VehicleDto.java index bd76708..13623aa 100644 --- a/src/main/java/com/wms/entity/app/dto/VehicleDto.java +++ b/src/main/java/com/wms/entity/app/dto/VehicleDto.java @@ -33,7 +33,7 @@ public class VehicleDto { /** * 额外信息 */ - private VehicleDetailInfo details; + private VehicleDetailInfo goodsInfo; /** * 上次入库时间 */ diff --git a/src/main/java/com/wms/entity/app/dto/extend/VehicleDetailInfo.java b/src/main/java/com/wms/entity/app/dto/extend/VehicleDetailInfo.java index 09ad0d8..e7a1518 100644 --- a/src/main/java/com/wms/entity/app/dto/extend/VehicleDetailInfo.java +++ b/src/main/java/com/wms/entity/app/dto/extend/VehicleDetailInfo.java @@ -1,14 +1,22 @@ package com.wms.entity.app.dto.extend; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; /** * 料箱详细信息 */ @Data @AllArgsConstructor +@NoArgsConstructor public class VehicleDetailInfo { - /// 料号 - private String goodsId; + /** + * 料号列表 + */ + @JsonProperty("goodsIds") + private List goodsIds; } diff --git a/src/main/java/com/wms/entity/app/dto/extend/VehicleDetailInfo_2.java b/src/main/java/com/wms/entity/app/dto/extend/VehicleDetailInfo_2.java new file mode 100644 index 0000000..7616bc4 --- /dev/null +++ b/src/main/java/com/wms/entity/app/dto/extend/VehicleDetailInfo_2.java @@ -0,0 +1,22 @@ +package com.wms.entity.app.dto.extend; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 料箱详细信息 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class VehicleDetailInfo_2 { + /** + * 料号列表 + */ + @JsonProperty("goodsId") + private String goodsId; +} diff --git a/src/main/java/com/wms/entity/app/request/VehicleQuery.java b/src/main/java/com/wms/entity/app/request/VehicleQuery.java index 44f7b22..bebf0c6 100644 --- a/src/main/java/com/wms/entity/app/request/VehicleQuery.java +++ b/src/main/java/com/wms/entity/app/request/VehicleQuery.java @@ -7,7 +7,6 @@ import com.wms.entity.table.Vehicle; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.List; import java.util.Objects; /** @@ -44,8 +43,13 @@ public class VehicleQuery extends PageQuery { /** * 额外信息 */ - @JsonProperty("details") - private String details; + @JsonProperty("goodsInfo") + private String goodsInfo; + /** + * 查询料号 + */ + @JsonProperty("goodsId") + private String goodsId; /** * 将VehicleQuery转化为VehiclePO @@ -62,7 +66,7 @@ public class VehicleQuery extends PageQuery { } else { vehiclePO.setVehicleType(""); } - vehiclePO.setDetails(JSON.parseArray(details, VehicleDetailInfo.class)); + vehiclePO.setGoodsInfo(JSON.parseObject(goodsInfo, VehicleDetailInfo.class)); return vehiclePO; } diff --git a/src/main/java/com/wms/entity/app/vo/KateOrdersVo.java b/src/main/java/com/wms/entity/app/vo/KateOrdersVo.java index 01d25d8..b77ca88 100644 --- a/src/main/java/com/wms/entity/app/vo/KateOrdersVo.java +++ b/src/main/java/com/wms/entity/app/vo/KateOrdersVo.java @@ -113,4 +113,23 @@ public class KateOrdersVo { @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDateTime planStartDate; + /** + * 创建时间 + */ + @JsonProperty("createTime") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + /** + * 最后更新时间 + */ + @JsonProperty("lastUpdateTime") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime lastUpdateTime; + /** + * 最后更新原因 + */ + @JsonProperty("lastUpdateReason") + private String lastUpdateReason; } diff --git a/src/main/java/com/wms/entity/app/vo/VehicleVO.java b/src/main/java/com/wms/entity/app/vo/VehicleVO.java index 76de863..bf676b4 100644 --- a/src/main/java/com/wms/entity/app/vo/VehicleVO.java +++ b/src/main/java/com/wms/entity/app/vo/VehicleVO.java @@ -1,12 +1,12 @@ package com.wms.entity.app.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; import com.wms.entity.app.dto.extend.VehicleDetailInfo; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; -import java.util.List; /** * 载具VO @@ -16,30 +16,37 @@ public class VehicleVO { /** * 载具编号 */ + @JsonProperty("vehicleId") private String vehicleId; /** * 当前所在位置 */ + @JsonProperty("currentLocation") private String currentLocation; /** * 载具状态 */ + @JsonProperty("vehicleStatus") private Integer vehicleStatus; /** * 是否是空箱 */ + @JsonProperty("isEmpty") private Integer isEmpty; /** * 载具类型 */ + @JsonProperty("vehicleType") private String vehicleType; /** - * 额外信息 + * 绑定物料信息 */ - private List details; + @JsonProperty("goodsInfo") + private VehicleDetailInfo goodsInfo; /** * 上次入库时间 */ + @JsonProperty("lastInTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime lastInTime; diff --git a/src/main/java/com/wms/entity/table/Vehicle.java b/src/main/java/com/wms/entity/table/Vehicle.java index 9bab7b9..aaac788 100644 --- a/src/main/java/com/wms/entity/table/Vehicle.java +++ b/src/main/java/com/wms/entity/table/Vehicle.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler; import com.wms.entity.app.dto.extend.VehicleDetailInfo; +import com.wms.entity.app.dto.extend.VehicleDetailInfo_2; import lombok.Data; import java.time.LocalDateTime; @@ -45,7 +46,12 @@ public class Vehicle { * 额外信息 */ @TableField(value = "details", typeHandler = Fastjson2TypeHandler.class) - private List details; + private List details; + /** + * 间接物料列表 + */ + @TableField(value = "goods_info", typeHandler = Fastjson2TypeHandler.class) + private VehicleDetailInfo goodsInfo; /** * 上次入库时间 */ diff --git a/src/main/java/com/wms/service/business/serviceImplements/ValidateServiceImplements.java b/src/main/java/com/wms/service/business/serviceImplements/ValidateServiceImplements.java index 1b4cc41..96044bd 100644 --- a/src/main/java/com/wms/service/business/serviceImplements/ValidateServiceImplements.java +++ b/src/main/java/com/wms/service/business/serviceImplements/ValidateServiceImplements.java @@ -2,7 +2,6 @@ package com.wms.service.business.serviceImplements; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.wms.constants.enums.*; -import com.wms.entity.app.dto.extend.VehicleDetailInfo; import com.wms.entity.app.request.GoodsInRequest; import com.wms.entity.app.request.TaskInRequest; import com.wms.entity.app.request.TaskOutRequest; @@ -82,8 +81,8 @@ public class ValidateServiceImplements implements IValidateService { goodsType = 1; } else { goodsType = 2; - if (existVehicle.getDetails() != null) { - canInGoodsIdList = existVehicle.getDetails().stream().map(VehicleDetailInfo::getGoodsId).toList(); + if (existVehicle.getGoodsInfo() != null && !existVehicle.getGoodsInfo().getGoodsIds().isEmpty()) { + canInGoodsIdList = existVehicle.getGoodsInfo().getGoodsIds(); } } } diff --git a/src/main/java/com/wms/utils/excel/listener/UploadKateOrdersListener.java b/src/main/java/com/wms/utils/excel/listener/UploadKateOrdersListener.java index f2a9653..9ac137c 100644 --- a/src/main/java/com/wms/utils/excel/listener/UploadKateOrdersListener.java +++ b/src/main/java/com/wms/utils/excel/listener/UploadKateOrdersListener.java @@ -120,35 +120,52 @@ public class UploadKateOrdersListener implements ReadListener newKateOrdersMap.replace(key, currentOrder); continue; } - // 查询数据库是否存在重复数据 - if (!oldKateOrdersMap.containsKey(key)) { - // 之前没存在过 - KateOrders newKateOrders = new KateOrders(); - newKateOrders.setOrderId(generateId("ORDER_")); - newKateOrders.setWorkOrder(kateOrdersExcelVo.getWorkOrder()); - newKateOrders.setGoodsId(kateOrdersExcelVo.getGoodsId()); - newKateOrders.setItem(kateOrdersExcelVo.getItem()); - newKateOrders.setDescription(kateOrdersExcelVo.getDescription()); - newKateOrders.setSLoc(kateOrdersExcelVo.getSLoc()); - newKateOrders.setType(kateOrdersExcelVo.getType()); - newKateOrders.setOriginStatus(kateOrdersExcelVo.getOriginStatus()); - newKateOrders.setSupplyArea(kateOrdersExcelVo.getSupplyArea()); - newKateOrders.setSortString(kateOrdersExcelVo.getSortString()); - newKateOrders.setRequirementQuantity(kateOrdersExcelVo.getRequirementQuantity()); - newKateOrders.setGoodsUnit(kateOrdersExcelVo.getGoodsUnit()); - newKateOrders.setOrderStatus(0); - newKateOrders.setLackQuantity(kateOrdersExcelVo.getRequirementQuantity()); - newKateOrders.setPickedQuantity(BigDecimal.ZERO); - newKateOrders.setUserName(uploadUser); - newKateOrders.setCreateTime(LocalDateTime.now()); - newKateOrders.setLastUpdateTime(LocalDateTime.now()); - newKateOrders.setLastUpdateReason("导入工单"); - //计划开工时间,这个替换后面的dbs的计划开始时间 - if(isAddReqmtDate) { - newKateOrders.setPlanStartDate(kateOrdersExcelVo.getPlanStartDate()); + if (oldKateOrdersMap.containsKey(key)) { + KateOrders oldOrder = oldKateOrdersMap.get(key); + if (oldOrder.getOrderStatus() == 0) { + oldOrder.setItem(kateOrdersExcelVo.getItem()); + oldOrder.setDescription(kateOrdersExcelVo.getDescription()); + oldOrder.setSLoc(kateOrdersExcelVo.getSLoc()); + oldOrder.setType(kateOrdersExcelVo.getType()); + oldOrder.setOriginStatus(kateOrdersExcelVo.getOriginStatus()); + oldOrder.setSortString(kateOrdersExcelVo.getSortString()); + oldOrder.setRequirementQuantity(kateOrdersExcelVo.getRequirementQuantity()); + oldOrder.setGoodsUnit(kateOrdersExcelVo.getGoodsUnit()); + oldOrder.setLackQuantity(kateOrdersExcelVo.getRequirementQuantity()); + oldOrder.setPickedQuantity(BigDecimal.ZERO); + oldOrder.setUserName(uploadUser); + oldOrder.setLastUpdateTime(LocalDateTime.now()); + oldOrder.setLastUpdateReason("导入工单"); + //计划开工时间,这个替换后面的dbs的计划开始时间 + oldOrder.setPlanStartDate(kateOrdersExcelVo.getPlanStartDate()); + newKateOrdersMap.put(key, oldOrder); } - newKateOrdersMap.put(key, newKateOrders); + continue; } + // 之前没存在过 + KateOrders newKateOrders = new KateOrders(); + newKateOrders.setOrderId(generateId("ORDER_")); + newKateOrders.setWorkOrder(kateOrdersExcelVo.getWorkOrder()); + newKateOrders.setGoodsId(kateOrdersExcelVo.getGoodsId()); + newKateOrders.setItem(kateOrdersExcelVo.getItem()); + newKateOrders.setDescription(kateOrdersExcelVo.getDescription()); + newKateOrders.setSLoc(kateOrdersExcelVo.getSLoc()); + newKateOrders.setType(kateOrdersExcelVo.getType()); + newKateOrders.setOriginStatus(kateOrdersExcelVo.getOriginStatus()); + newKateOrders.setSupplyArea(kateOrdersExcelVo.getSupplyArea()); + newKateOrders.setSortString(kateOrdersExcelVo.getSortString()); + newKateOrders.setRequirementQuantity(kateOrdersExcelVo.getRequirementQuantity()); + newKateOrders.setGoodsUnit(kateOrdersExcelVo.getGoodsUnit()); + newKateOrders.setOrderStatus(0); + newKateOrders.setLackQuantity(kateOrdersExcelVo.getRequirementQuantity()); + newKateOrders.setPickedQuantity(BigDecimal.ZERO); + newKateOrders.setUserName(uploadUser); + newKateOrders.setCreateTime(LocalDateTime.now()); + newKateOrders.setLastUpdateTime(LocalDateTime.now()); + newKateOrders.setLastUpdateReason("导入工单"); + //计划开工时间,这个替换后面的dbs的计划开始时间 + newKateOrders.setPlanStartDate(kateOrdersExcelVo.getPlanStartDate()); + newKateOrdersMap.put(key, newKateOrders); } } diff --git a/src/main/java/com/wms/utils/excel/vo/VehicleExcelVo.java b/src/main/java/com/wms/utils/excel/vo/VehicleExcelVo.java index 729e688..799f894 100644 --- a/src/main/java/com/wms/utils/excel/vo/VehicleExcelVo.java +++ b/src/main/java/com/wms/utils/excel/vo/VehicleExcelVo.java @@ -1,8 +1,8 @@ package com.wms.utils.excel.vo; -import cn.hutool.core.bean.BeanUtil; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.fastjson2.JSON; import com.wms.entity.table.Vehicle; import lombok.Data; @@ -36,6 +36,16 @@ public class VehicleExcelVo { @ExcelProperty("上次入库时间") @DateTimeFormat("yyyy-MM-dd HH:mm:ss") private LocalDateTime lastInTime; + /** + * 载具类型 + */ + @ExcelProperty("载具类型") + private String vehicleType; + /** + * 间接物料列表 + */ + @ExcelProperty("料号列表") + private String goodsInfo; /** * 从数据库实体转换为excel对象 @@ -43,6 +53,14 @@ public class VehicleExcelVo { * @return excel对象 */ public static VehicleExcelVo of(Vehicle vehiclePo) { - return BeanUtil.copyProperties(vehiclePo, VehicleExcelVo.class); + VehicleExcelVo tempVo = new VehicleExcelVo(); + tempVo.setVehicleId(vehiclePo.getVehicleId()); + tempVo.setCurrentLocation(vehiclePo.getCurrentLocation()); + tempVo.setVehicleStatus(vehiclePo.getVehicleStatus()); + tempVo.setIsEmpty(vehiclePo.getIsEmpty()); + tempVo.setLastInTime(vehiclePo.getLastInTime()); + tempVo.setVehicleType(vehiclePo.getVehicleType()); + tempVo.setGoodsInfo(JSON.toJSONString(vehiclePo.getGoodsInfo())); + return tempVo; } }