1. 间接物料

2. 工单增加字段
3. 一些见面晚上
This commit is contained in:
梁州 2025-12-25 13:59:51 +08:00
parent 2e37264300
commit b097198695
14 changed files with 258 additions and 90 deletions

View File

@ -80,7 +80,8 @@ public class GoodsController {
Page<Goods> page = goodsQuery.toMpPage(); Page<Goods> page = goodsQuery.toMpPage();
Page<Goods> goodsPage = goodsService.page(page, new LambdaQueryWrapper<Goods>() Page<Goods> goodsPage = goodsService.page(page, new LambdaQueryWrapper<Goods>()
.like(StringUtils.isNotEmpty(goodsQuery.getGoodsId()), Goods::getGoodsId, goodsQuery.getGoodsId()) .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<GoodsVo> pageDto = PageDto.of(goodsPage, goods -> BeanUtil.copyProperties(goods, GoodsVo.class)); PageDto<GoodsVo> pageDto = PageDto.of(goodsPage, goods -> BeanUtil.copyProperties(goods, GoodsVo.class));
response.setCode(ResponseCode.OK.getCode()); response.setCode(ResponseCode.OK.getCode());
@ -353,11 +354,13 @@ public class GoodsController {
vehicle.setVehicleType("间接物料"); vehicle.setVehicleType("间接物料");
// 找到这个料箱包含的库存物料列表 // 找到这个料箱包含的库存物料列表
List<Stock> indirectStocksOfVehicle = allIndirectStock.stream().filter(stock -> stock.getVehicleId().equals(vehicle.getVehicleId())).toList(); List<Stock> indirectStocksOfVehicle = allIndirectStock.stream().filter(stock -> stock.getVehicleId().equals(vehicle.getVehicleId())).toList();
List<VehicleDetailInfo> details = new ArrayList<>(); VehicleDetailInfo goodsInfo = new VehicleDetailInfo();
List<String> detailGoodsIds = new ArrayList<>();
for (Stock stock : indirectStocksOfVehicle) { 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); vehicleService.updateBatchById(allIndirectVehicles);

View File

@ -114,7 +114,6 @@ public class KateWorkQueryController {
} catch (Exception e) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace();
logger.error("查询DBS发生异常{}", e.getMessage()); logger.error("查询DBS发生异常{}", e.getMessage());
response.setCode(ResponseCode.ERROR.getCode()); response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("查询DBS发生异常"); response.setMessage("查询DBS发生异常");
@ -232,7 +231,8 @@ public class KateWorkQueryController {
Page<KateOrders> ordersPage = kateOrderService.page(page, new LambdaQueryWrapper<KateOrders>() Page<KateOrders> ordersPage = kateOrderService.page(page, new LambdaQueryWrapper<KateOrders>()
.like(StringUtils.isNotEmpty(kateOrdersQuery.getWorkOrder()), KateOrders::getWorkOrder, kateOrdersQuery.getWorkOrder()) .like(StringUtils.isNotEmpty(kateOrdersQuery.getWorkOrder()), KateOrders::getWorkOrder, kateOrdersQuery.getWorkOrder())
.like(StringUtils.isNotEmpty(kateOrdersQuery.getGoodsId()), KateOrders::getGoodsId, kateOrdersQuery.getGoodsId()) .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<KateOrdersVo> pageDto = PageDto.of(ordersPage, orders -> BeanUtil.copyProperties(orders, KateOrdersVo.class)); PageDto<KateOrdersVo> pageDto = PageDto.of(ordersPage, orders -> BeanUtil.copyProperties(orders, KateOrdersVo.class));
response.setCode(ResponseCode.OK.getCode()); response.setCode(ResponseCode.OK.getCode());

View File

@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wms.annotation.MyLog; import com.wms.annotation.MyLog;
import com.wms.constants.enums.ResponseCode; import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.dto.PageDto; 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.ELocationQuery;
import com.wms.entity.app.request.LocationQuery; import com.wms.entity.app.request.LocationQuery;
import com.wms.entity.app.request.VehicleQuery; import com.wms.entity.app.request.VehicleQuery;
@ -39,6 +41,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static com.wms.constants.WmsConstants.MYSQL_JSON_CI;
import static com.wms.utils.StringUtils.convertJsonString; import static com.wms.utils.StringUtils.convertJsonString;
/** /**
@ -315,6 +318,7 @@ public class LocationController {
.like(StringUtils.isNotEmpty(vehicleQuery.getCurrentLocation()), Vehicle::getCurrentLocation, vehicleQuery.getCurrentLocation()) .like(StringUtils.isNotEmpty(vehicleQuery.getCurrentLocation()), Vehicle::getCurrentLocation, vehicleQuery.getCurrentLocation())
.eq(vehicleQuery.getVehicleStatus() != null, Vehicle::getVehicleStatus, vehicleQuery.getVehicleStatus()) .eq(vehicleQuery.getVehicleStatus() != null, Vehicle::getVehicleStatus, vehicleQuery.getVehicleStatus())
.eq(vehicleQuery.getIsEmpty() != null, Vehicle::getIsEmpty, vehicleQuery.getIsEmpty()) .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); .orderByDesc(Vehicle::getLastInTime);
if (StringUtils.isNotEmpty(vehicleQuery.getVehicleType())) { if (StringUtils.isNotEmpty(vehicleQuery.getVehicleType())) {
if (vehicleQuery.getVehicleType().equals("间接物料")) { if (vehicleQuery.getVehicleType().equals("间接物料")) {
@ -593,4 +597,48 @@ public class LocationController {
// return JSON.toJSONString(rsp); // 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<Vehicle> allVehicles = vehicleService.list();
List<Vehicle> needUpdateVehicles = new ArrayList<>();
for (Vehicle vehicle : allVehicles) {
if (vehicle.getDetails() == null || vehicle.getDetails().isEmpty()) {
continue;
}
List<String> 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);
}
}
} }

View File

@ -438,9 +438,9 @@ public class TaskController {
newVehicle.setVehicleType(inTask.getGoodsRelated().getGoodsType()); newVehicle.setVehicleType(inTask.getGoodsRelated().getGoodsType());
if (Objects.equals(newVehicle.getVehicleType(), "间接物料")) { if (Objects.equals(newVehicle.getVehicleType(), "间接物料")) {
// 如果是间接物料则设置配对物料 // 如果是间接物料则设置配对物料
List<VehicleDetailInfo> vehicleDetailInfos = new ArrayList<>(); VehicleDetailInfo vehicleDetailInfos = new VehicleDetailInfo();
vehicleDetailInfos.add(new VehicleDetailInfo(inTask.getGoodsRelated().getGoodsId())); vehicleDetailInfos.setGoodsIds(new ArrayList<>(List.of(inTask.getGoodsRelated().getGoodsId())));
newVehicle.setDetails(vehicleDetailInfos); newVehicle.setGoodsInfo(vehicleDetailInfos);
} }
} }
newVehicle.setLastInTime(LocalDateTime.now()); newVehicle.setLastInTime(LocalDateTime.now());
@ -463,10 +463,22 @@ public class TaskController {
currentVehicle.setVehicleType(inTask.getGoodsRelated().getGoodsType()); currentVehicle.setVehicleType(inTask.getGoodsRelated().getGoodsType());
if (Objects.equals(currentVehicle.getVehicleType(), "间接物料")) { if (Objects.equals(currentVehicle.getVehicleType(), "间接物料")) {
// 如果是间接物料则设置配对物料 // 如果是间接物料则设置配对物料
List<VehicleDetailInfo> vehicleDetailInfos = currentVehicle.getDetails() == null ? new ArrayList<>() : currentVehicle.getDetails(); VehicleDetailInfo goodsInfo = currentVehicle.getGoodsInfo();
if (!vehicleDetailInfos.stream().map(VehicleDetailInfo::getGoodsId).toList().contains(inTask.getGoodsRelated().getGoodsId())) { if (goodsInfo == null) {
vehicleDetailInfos.add(new VehicleDetailInfo(inTask.getGoodsRelated().getGoodsId())); goodsInfo = new VehicleDetailInfo();
currentVehicle.setDetails(vehicleDetailInfos); 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<String> goodsIds = goodsInfo.getGoodsIds();
goodsIds.add(inTask.getGoodsRelated().getGoodsId());
goodsInfo.setGoodsIds(goodsIds);
currentVehicle.setGoodsInfo(goodsInfo);
}
} }
} }
} }
@ -2030,25 +2042,6 @@ public class TaskController {
response.setMessage("料箱数量必须为大于0的整数"); response.setMessage("料箱数量必须为大于0的整数");
return convertJsonString(response); 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<Goods>().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(); int needNum = callEmptyVehicleRequest.getNeedNum();
@ -2056,14 +2049,31 @@ public class TaskController {
List<String> outVehicleIds = new ArrayList<>();// 料箱列表 List<String> outVehicleIds = new ArrayList<>();// 料箱列表
// 查询出需求数量的空箱 // 查询出需求数量的空箱
LambdaQueryWrapper<Vehicle> emptyVehicleQueryWrapper = new LambdaQueryWrapper<Vehicle>() LambdaQueryWrapper<Vehicle> emptyVehicleQueryWrapper = new LambdaQueryWrapper<Vehicle>()
.eq(Vehicle::getIsEmpty, 1)
.eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode()) .eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode())
.orderByAsc(Vehicle::getLastInTime) .orderByAsc(Vehicle::getLastInTime)
.last("limit " + needNum); .last("limit " + needNum);
if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "间接物料")) { 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 { } else {
emptyVehicleQueryWrapper.ne(Vehicle::getVehicleType, "间接物料"); emptyVehicleQueryWrapper
.ne(Vehicle::getVehicleType, "间接物料")
.eq(Vehicle::getIsEmpty, 1);
} }
List<Vehicle> emptyVehicles = vehicleService.list(emptyVehicleQueryWrapper); List<Vehicle> emptyVehicles = vehicleService.list(emptyVehicleQueryWrapper);
for (Vehicle emptyVehicle : emptyVehicles) { for (Vehicle emptyVehicle : emptyVehicles) {
@ -2090,30 +2100,37 @@ public class TaskController {
outVehicleIds.add(emptyVehicle.getVehicleId()); outVehicleIds.add(emptyVehicle.getVehicleId());
needNum--; needNum--;
} }
// 保存任务 if (!outVehicleIds.isEmpty()) {
taskService.saveBatch(vehicleOutTasks); // 保存任务
// 更新料箱表 taskService.saveBatch(vehicleOutTasks);
vehicleService.update(new LambdaUpdateWrapper<Vehicle>() // 更新料箱表
.set(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode()) vehicleService.update(new LambdaUpdateWrapper<Vehicle>()
.in(Vehicle::getVehicleId, outVehicleIds) .set(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode())
.ne(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode())); .in(Vehicle::getVehicleId, outVehicleIds)
.ne(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode()));
// 更新库存表
stockService.update(new LambdaUpdateWrapper<Stock>()
.set(Stock::getStockStatus, StockStatus.OUT.getCode())
.in(Stock::getVehicleId, outVehicleIds)
.ne(Stock::getStockStatus, StockStatus.OUT.getCode()));
}
if (needNum <= 0) { if (needNum <= 0) {
response.setCode(ResponseCode.OK.getCode()); response.setCode(ResponseCode.OK.getCode());
response.setMessage("呼叫空箱成功,请等待箱子出库。"); response.setMessage("呼叫箱成功,请等待箱子出库。");
} else if (needNum < callEmptyVehicleRequest.getNeedNum()) { } else if (needNum < callEmptyVehicleRequest.getNeedNum()) {
response.setCode(ResponseCode.OK.getCode()); response.setCode(ResponseCode.OK.getCode());
response.setMessage("已呼叫空箱,但库中空箱数量不足。需求" + callEmptyVehicleRequest.getNeedNum() + "个,实际呼叫" + vehicleOutTasks.size() + "个。"); response.setMessage("已呼叫料箱,但库中符合要求料箱数量不足。需求" + callEmptyVehicleRequest.getNeedNum() + "个,实际呼叫" + vehicleOutTasks.size() + "个。");
} else { } else {
response.setCode(ResponseCode.ERROR.getCode()); response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("库中没有箱了。"); response.setMessage("库中没有需求的料箱了。");
} }
return convertJsonString(response); return convertJsonString(response);
} catch (Exception e) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("呼叫箱发生异常,{}", convertJsonString(e)); logger.error("呼叫箱发生异常,{}", convertJsonString(e));
response.setCode(ResponseCode.ERROR.getCode()); response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("呼叫箱发生异常"); response.setMessage("呼叫箱发生异常");
return convertJsonString(response); return convertJsonString(response);
} }
} }

View File

@ -33,7 +33,7 @@ public class VehicleDto {
/** /**
* 额外信息 * 额外信息
*/ */
private VehicleDetailInfo details; private VehicleDetailInfo goodsInfo;
/** /**
* 上次入库时间 * 上次入库时间
*/ */

View File

@ -1,14 +1,22 @@
package com.wms.entity.app.dto.extend; package com.wms.entity.app.dto.extend;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/** /**
* 料箱详细信息 * 料箱详细信息
*/ */
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor
public class VehicleDetailInfo { public class VehicleDetailInfo {
/// 料号 /**
private String goodsId; * 料号列表
*/
@JsonProperty("goodsIds")
private List<String> goodsIds;
} }

View File

@ -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;
}

View File

@ -7,7 +7,6 @@ import com.wms.entity.table.Vehicle;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.List;
import java.util.Objects; import java.util.Objects;
/** /**
@ -44,8 +43,13 @@ public class VehicleQuery extends PageQuery {
/** /**
* 额外信息 * 额外信息
*/ */
@JsonProperty("details") @JsonProperty("goodsInfo")
private String details; private String goodsInfo;
/**
* 查询料号
*/
@JsonProperty("goodsId")
private String goodsId;
/** /**
* 将VehicleQuery转化为VehiclePO * 将VehicleQuery转化为VehiclePO
@ -62,7 +66,7 @@ public class VehicleQuery extends PageQuery {
} else { } else {
vehiclePO.setVehicleType(""); vehiclePO.setVehicleType("");
} }
vehiclePO.setDetails(JSON.parseArray(details, VehicleDetailInfo.class)); vehiclePO.setGoodsInfo(JSON.parseObject(goodsInfo, VehicleDetailInfo.class));
return vehiclePO; return vehiclePO;
} }

View File

@ -113,4 +113,23 @@ public class KateOrdersVo {
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime planStartDate; 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;
} }

View File

@ -1,12 +1,12 @@
package com.wms.entity.app.vo; package com.wms.entity.app.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms.entity.app.dto.extend.VehicleDetailInfo; import com.wms.entity.app.dto.extend.VehicleDetailInfo;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
/** /**
* 载具VO * 载具VO
@ -16,30 +16,37 @@ public class VehicleVO {
/** /**
* 载具编号 * 载具编号
*/ */
@JsonProperty("vehicleId")
private String vehicleId; private String vehicleId;
/** /**
* 当前所在位置 * 当前所在位置
*/ */
@JsonProperty("currentLocation")
private String currentLocation; private String currentLocation;
/** /**
* 载具状态 * 载具状态
*/ */
@JsonProperty("vehicleStatus")
private Integer vehicleStatus; private Integer vehicleStatus;
/** /**
* 是否是空箱 * 是否是空箱
*/ */
@JsonProperty("isEmpty")
private Integer isEmpty; private Integer isEmpty;
/** /**
* 载具类型 * 载具类型
*/ */
@JsonProperty("vehicleType")
private String vehicleType; private String vehicleType;
/** /**
* 额外信息 * 绑定物料信息
*/ */
private List<VehicleDetailInfo> details; @JsonProperty("goodsInfo")
private VehicleDetailInfo goodsInfo;
/** /**
* 上次入库时间 * 上次入库时间
*/ */
@JsonProperty("lastInTime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime lastInTime; private LocalDateTime lastInTime;

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler; import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler;
import com.wms.entity.app.dto.extend.VehicleDetailInfo; import com.wms.entity.app.dto.extend.VehicleDetailInfo;
import com.wms.entity.app.dto.extend.VehicleDetailInfo_2;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -45,7 +46,12 @@ public class Vehicle {
* 额外信息 * 额外信息
*/ */
@TableField(value = "details", typeHandler = Fastjson2TypeHandler.class) @TableField(value = "details", typeHandler = Fastjson2TypeHandler.class)
private List<VehicleDetailInfo> details; private List<VehicleDetailInfo_2> details;
/**
* 间接物料列表
*/
@TableField(value = "goods_info", typeHandler = Fastjson2TypeHandler.class)
private VehicleDetailInfo goodsInfo;
/** /**
* 上次入库时间 * 上次入库时间
*/ */

View File

@ -2,7 +2,6 @@ package com.wms.service.business.serviceImplements;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.wms.constants.enums.*; 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.GoodsInRequest;
import com.wms.entity.app.request.TaskInRequest; import com.wms.entity.app.request.TaskInRequest;
import com.wms.entity.app.request.TaskOutRequest; import com.wms.entity.app.request.TaskOutRequest;
@ -82,8 +81,8 @@ public class ValidateServiceImplements implements IValidateService {
goodsType = 1; goodsType = 1;
} else { } else {
goodsType = 2; goodsType = 2;
if (existVehicle.getDetails() != null) { if (existVehicle.getGoodsInfo() != null && !existVehicle.getGoodsInfo().getGoodsIds().isEmpty()) {
canInGoodsIdList = existVehicle.getDetails().stream().map(VehicleDetailInfo::getGoodsId).toList(); canInGoodsIdList = existVehicle.getGoodsInfo().getGoodsIds();
} }
} }
} }

View File

@ -120,35 +120,52 @@ public class UploadKateOrdersListener implements ReadListener<KateOrdersExcelVo>
newKateOrdersMap.replace(key, currentOrder); newKateOrdersMap.replace(key, currentOrder);
continue; continue;
} }
// 查询数据库是否存在重复数据 if (oldKateOrdersMap.containsKey(key)) {
if (!oldKateOrdersMap.containsKey(key)) { KateOrders oldOrder = oldKateOrdersMap.get(key);
// 之前没存在过 if (oldOrder.getOrderStatus() == 0) {
KateOrders newKateOrders = new KateOrders(); oldOrder.setItem(kateOrdersExcelVo.getItem());
newKateOrders.setOrderId(generateId("ORDER_")); oldOrder.setDescription(kateOrdersExcelVo.getDescription());
newKateOrders.setWorkOrder(kateOrdersExcelVo.getWorkOrder()); oldOrder.setSLoc(kateOrdersExcelVo.getSLoc());
newKateOrders.setGoodsId(kateOrdersExcelVo.getGoodsId()); oldOrder.setType(kateOrdersExcelVo.getType());
newKateOrders.setItem(kateOrdersExcelVo.getItem()); oldOrder.setOriginStatus(kateOrdersExcelVo.getOriginStatus());
newKateOrders.setDescription(kateOrdersExcelVo.getDescription()); oldOrder.setSortString(kateOrdersExcelVo.getSortString());
newKateOrders.setSLoc(kateOrdersExcelVo.getSLoc()); oldOrder.setRequirementQuantity(kateOrdersExcelVo.getRequirementQuantity());
newKateOrders.setType(kateOrdersExcelVo.getType()); oldOrder.setGoodsUnit(kateOrdersExcelVo.getGoodsUnit());
newKateOrders.setOriginStatus(kateOrdersExcelVo.getOriginStatus()); oldOrder.setLackQuantity(kateOrdersExcelVo.getRequirementQuantity());
newKateOrders.setSupplyArea(kateOrdersExcelVo.getSupplyArea()); oldOrder.setPickedQuantity(BigDecimal.ZERO);
newKateOrders.setSortString(kateOrdersExcelVo.getSortString()); oldOrder.setUserName(uploadUser);
newKateOrders.setRequirementQuantity(kateOrdersExcelVo.getRequirementQuantity()); oldOrder.setLastUpdateTime(LocalDateTime.now());
newKateOrders.setGoodsUnit(kateOrdersExcelVo.getGoodsUnit()); oldOrder.setLastUpdateReason("导入工单");
newKateOrders.setOrderStatus(0); //计划开工时间这个替换后面的dbs的计划开始时间
newKateOrders.setLackQuantity(kateOrdersExcelVo.getRequirementQuantity()); oldOrder.setPlanStartDate(kateOrdersExcelVo.getPlanStartDate());
newKateOrders.setPickedQuantity(BigDecimal.ZERO); newKateOrdersMap.put(key, oldOrder);
newKateOrders.setUserName(uploadUser);
newKateOrders.setCreateTime(LocalDateTime.now());
newKateOrders.setLastUpdateTime(LocalDateTime.now());
newKateOrders.setLastUpdateReason("导入工单");
//计划开工时间这个替换后面的dbs的计划开始时间
if(isAddReqmtDate) {
newKateOrders.setPlanStartDate(kateOrdersExcelVo.getPlanStartDate());
} }
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);
} }
} }

View File

@ -1,8 +1,8 @@
package com.wms.utils.excel.vo; package com.wms.utils.excel.vo;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat; import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.fastjson2.JSON;
import com.wms.entity.table.Vehicle; import com.wms.entity.table.Vehicle;
import lombok.Data; import lombok.Data;
@ -36,6 +36,16 @@ public class VehicleExcelVo {
@ExcelProperty("上次入库时间") @ExcelProperty("上次入库时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss") @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private LocalDateTime lastInTime; private LocalDateTime lastInTime;
/**
* 载具类型
*/
@ExcelProperty("载具类型")
private String vehicleType;
/**
* 间接物料列表
*/
@ExcelProperty("料号列表")
private String goodsInfo;
/** /**
* 从数据库实体转换为excel对象 * 从数据库实体转换为excel对象
@ -43,6 +53,14 @@ public class VehicleExcelVo {
* @return excel对象 * @return excel对象
*/ */
public static VehicleExcelVo of(Vehicle vehiclePo) { 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;
} }
} }