order_package表适配新结构

This commit is contained in:
gaoqr
2026-04-03 15:07:20 +08:00
parent 52ecbe1d15
commit 73ee746c8e
9 changed files with 148 additions and 613 deletions
@@ -122,8 +122,6 @@ public class PackController {
}
@PutMapping("/unpacking")
@Operation(summary = "拆包-更改包裹为未封包")
@PreAuthorize("@ss.hasPermission('manage:pack:unpacking')")
@@ -135,54 +133,6 @@ public class PackController {
}
@PostMapping("/insertOtherPack")
@Operation(summary = "新增外部配件-即新增一个包裹")
@PreAuthorize("@ss.hasPermission('manage:pack:external-parts')")
public CommonResult<OrderPackRespVO> addNewOtherPack(@Valid @RequestBody OtherPackReqVO reqVO) {
return success(packService.addNewOtherPack(reqVO));
}
@PutMapping("/insertOther")
@Operation(summary = "新增外部配件")
@PreAuthorize("@ss.hasPermission('manage:pack:external-parts')")
public CommonResult<OrderPartsRespVO> addNewOtherParts (@Valid @RequestBody OtherPackReqVO reqVO) {
return success(packService.addNewOtherParts(reqVO));
}
@DeleteMapping("/deleteOtherParts")
@Operation(summary = "删除包裹中的外部配件")
@PreAuthorize("@ss.hasPermission('manage:pack:delete')")
public CommonResult<Boolean> deleteOtherParts (@Valid @RequestBody DeleteOtherPartsReqVO reqVO) {
packService.deleteOtherParts(reqVO);
return success(true);
}
@GetMapping("/getPrePackInfo")
@Operation(summary = "查询预打包优化信息")
@PreAuthorize("@ss.hasPermission('manage:pack:pre-pack')")
public CommonResult<String> getPrePackInfo ( @RequestParam("orderId") Long orderId) {
return success(packService.getPrePackInfo(orderId));
}
@PostMapping("/scan/correlation")
@Operation(summary = "查询扫描类型相关的板件+配件id")
public CommonResult<List<Long>> getComponentCorrelation(@Valid @RequestBody PackScanComponentCorrelationReqVO reqVO) {
@@ -3,7 +3,6 @@ package com.cf.imes.module.executor.dal.dataobject.pack;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import lombok.AllArgsConstructor;
@@ -13,14 +12,14 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
@TableName("order_package_new")
@TableName("order_package")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderPackagDONew extends BaseDO {
public class OrderPackagDO extends BaseDO {
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
@@ -1,51 +0,0 @@
package com.cf.imes.module.executor.dal.dataobject.pack;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
@TableName("order_package")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderPackageDO extends BaseDO {
// 包裹ID
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 订单号
private Long orderId;
// 包裹编号
private String packageNo;
// 包裹类型,-1未定义,0板材,1配件,2其他配件
private Integer type;
// 包裹名
private String name;
// 包裹状态,0未封包,1已封包,2已入库,3已出库
private Integer status;
// 备注
private String remark;
}
@@ -1,116 +1,68 @@
package com.cf.imes.module.executor.dal.mysql.pack;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.cf.imes.framework.common.enums.OrderPackageStatusEnum;
import com.cf.imes.framework.common.enums.OrderPackageTypeEnum;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.controller.admin.manage.pack.vo.PackRespVO;
import com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.OrderPackageVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.LabelOrderPackData;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackageDO;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackagDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author Gqr
* @since 2026/3/25 13:55
*/
@Mapper
public interface OrderPackageMapper extends BaseMapperX<OrderPackageDO> {
void updatePackList(@Param("orderId") Long orderId, @Param("packIds") List<Long> packIds, @Param("organId") Long organId);
IPage<OrderPackageVO> selectByOrderNo(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<OrderPackageDO> wrapper);
default OrderPackageDO selectByPackNo(String packNo, Long organId) {
return selectOne(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId, organId)
.eqIfPresent(OrderPackageDO::getPackageNo, packNo));
}
public interface OrderPackageMapper extends BaseMapperX<OrderPackagDO> {
/**
* 查询订单包裹数
*
* @param orderIds
* @param organId
* @return
*/
List<PackRespVO> selectPackPage(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
default OrderPackageDO selectByPackId(Long packId, Long orderId, Long organId) {
return selectOne(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId, organId)
.eq(OrderPackageDO::getDeleted,false)
.eqIfPresent(OrderPackageDO::getOrderId,orderId)
.eqIfPresent(OrderPackageDO::getId, packId));
}
void updateParts(@Param("packageId") Long packageId,@Param("orderId") Long orderId,@Param("organId") Long organId);
default List<OrderPackageDO> selectPackStatus(Long orderId, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId,organId)
.eq(OrderPackageDO::getDeleted,false)
.eqIfPresent(OrderPackageDO::getOrderId, orderId));
}
default List<OrderPackageDO> selectPackList(Long orderId, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId,organId)
.eq(OrderPackageDO::getDeleted,false)
.eqIfPresent(OrderPackageDO::getOrderId, orderId)
.eqIfPresent(OrderPackageDO::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus()));
}
/**
* 查询当前订单已经打包的板材数量
*
* @param orderIds
* @param organId
* @return
*/
List<PackRespVO> selectPackPieceCount(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
// 删除当前订单下所有的包裹
default void updateDelete(Long orderId,Long organId) {
LambdaUpdateWrapper<OrderPackageDO> wrapper = new LambdaUpdateWrapper<OrderPackageDO>()
.set(OrderPackageDO::getDeleted, true)
.eq(OrderPackageDO::getOrganId,organId)
.eq(OrderPackageDO::getOrderId, orderId)
.eq(OrderPackageDO::getType, OrderPackageTypeEnum.PLATE.getType());
update(wrapper);
/**
* 查询订单包裹列表
* @param orderId
* @param organId
* @return
*/
default List<OrderPackagDO> selectPackList(Long orderId, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderPackagDO>()
.eq(OrderPackagDO::getOrganId, organId)
.eq(OrderPackagDO::getDeleted, false)
.eqIfPresent(OrderPackagDO::getOrderId, orderId)
.eqIfPresent(OrderPackagDO::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus()));
}
List<OrderPackageVO> selectPackListByOrderId(@Param("orderId") Long orderId,@Param("organId") Long organId);
default List<OrderPackageDO> selectPackStatusList(Long orderId, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId,organId)
.eq(OrderPackageDO::getDeleted,false)
.eqIfPresent(OrderPackageDO::getOrderId, orderId)
.eq(OrderPackageDO::getStatus,OrderPackageStatusEnum.PACKAGED.getStatus()));
}
List<LabelOrderPackData> selectLabelOrderPackData(@Param("packIds") List<Long> packIds,@Param("organId") Long organId);
List<LabelOrderPackData> selectPartPack(@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId,@Param("type") Integer type ,@Param("status") Integer status);
default List<OrderPackageDO> selectPackListByIds(List<Long> packIds, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId,organId)
.eq(OrderPackageDO::getDeleted,false)
.inIfPresent(OrderPackageDO::getId, packIds)
.eqIfPresent(OrderPackageDO::getStatus,OrderPackageStatusEnum.PACKAGED.getStatus())
.select(OrderPackageDO::getId,OrderPackageDO::getOrderId,OrderPackageDO::getPackageNo));
/**
* 查询订单包裹列表
*
* @param orderId
* @param organId
* @return
*/
default List<OrderPackagDO> selectPackStatus(Long orderId, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderPackagDO>()
.eq(OrderPackagDO::getOrganId, organId)
.eq(OrderPackagDO::getDeleted, false)
.eqIfPresent(OrderPackagDO::getOrderId, orderId));
}
/**
@@ -1,15 +0,0 @@
package com.cf.imes.module.executor.dal.mysql.pack;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackagDONew;
import org.apache.ibatis.annotations.Mapper;
/**
*
*
* @author Gqr
* @since 2026/3/25 13:55
*/
@Mapper
public interface OrderPackageNewMapper extends BaseMapperX<OrderPackagDONew> {
}
@@ -60,25 +60,6 @@ public interface PackService {
void deleteOrderPack(PackReqVO reqVO);
// 新增外部配件包裹
OrderPackRespVO addNewOtherPack(OtherPackReqVO reqVO);
// 新增外部配件
OrderPartsRespVO addNewOtherParts(OtherPackReqVO reqVO);
// 删除包裹中的外部配件
void deleteOtherParts(DeleteOtherPartsReqVO reqVO);
// 查询预打包优化信息
String getPrePackInfo(Long orderId);
/**
* 获取部件关联板件和配件id
*
@@ -13,8 +13,6 @@ import com.cf.imes.framework.common.exception.ErrorCode;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.id.core.util.SnowflakeIdWorker3rd;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.api.plan.OrderPlanApi;
@@ -24,15 +22,12 @@ import com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.Package
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackagDONew;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackageDO;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPrepackagedDO;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackagDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.pack.OrderPackageMapper;
import com.cf.imes.module.executor.dal.mysql.pack.OrderPackageNewMapper;
import com.cf.imes.module.executor.dal.mysql.pack.OrderPrepackagedMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.enums.OrderPackageMethodEnum;
@@ -48,11 +43,8 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import jakarta.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -73,7 +65,6 @@ import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PARTS_PACK_IT
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PARTS_PACK_NUM_NOT_ENOUGH;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PART_PACK_DATA_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_NOT_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_PLATE_ERROR;
@@ -84,9 +75,6 @@ public class PackServiceImpl implements PackService {
@Resource
private OrderPackageMapper orderPackageMapper;
@Resource
private OrderPackageNewMapper orderPackageNewMapper;
@Resource
private OrderItemMapper orderItemMapper;
@@ -200,7 +188,7 @@ public class PackServiceImpl implements PackService {
@Override
public PageResult<OrderPackageVO> getPageOrderPack(PackageDetailsReqVO reqVO) {
PageDTO<OrderPackagDONew> page = new PageDTO<>(reqVO.getPageNo(), reqVO.getPageSize());
PageDTO<OrderPackagDO> page = new PageDTO<>(reqVO.getPageNo(), reqVO.getPageSize());
List<Long> packId = null;
@@ -220,21 +208,21 @@ public class PackServiceImpl implements PackService {
}
IPage<OrderPackagDONew> orderPackagDONews = orderPackageNewMapper.selectPage(page, new LambdaQueryWrapperX<OrderPackagDONew>()
.eq(OrderPackagDONew::getOrderId, orderId)
.likeIfPresent(OrderPackagDONew::getPackageNo, packageNo)
.eqIfPresent(OrderPackagDONew::getPackageNo, packId)
.eqIfPresent(OrderPackagDONew::getStatus, reqVO.getPackStatus())
.orderByDesc(OrderPackagDONew::getCreateTime)
IPage<OrderPackagDO> orderPackagDOs = orderPackageMapper.selectPage(page, new LambdaQueryWrapperX<OrderPackagDO>()
.eq(OrderPackagDO::getOrderId, orderId)
.likeIfPresent(OrderPackagDO::getPackageNo, packageNo)
.eqIfPresent(OrderPackagDO::getPackageNo, packId)
.eqIfPresent(OrderPackagDO::getStatus, reqVO.getPackStatus())
.orderByDesc(OrderPackagDO::getCreateTime)
);
List<OrderPackagDONew> records = orderPackagDONews.getRecords();
List<OrderPackagDO> records = orderPackagDOs.getRecords();
if (CollUtil.isEmpty(records)) {
return new PageResult<>();
}
return new PageResult<>(BeanUtil.copyToList(records, OrderPackageVO.class), orderPackagDONews.getTotal());
return new PageResult<>(BeanUtil.copyToList(records, OrderPackageVO.class), orderPackagDOs.getTotal());
}
@@ -246,19 +234,19 @@ public class PackServiceImpl implements PackService {
@Transactional(rollbackFor = Exception.class)
public OrderPackRespVO unpacking(Long packageID) {
List<OrderPackagDONew> orderPackagDONews = orderPackageNewMapper.selectList(new LambdaQueryWrapper<OrderPackagDONew>()
.eq(OrderPackagDONew::getPackageNo, packageID)
List<OrderPackagDO> orderPackagDOs = orderPackageMapper.selectList(new LambdaQueryWrapper<OrderPackagDO>()
.eq(OrderPackagDO::getPackageNo, packageID)
);
AssertUtils.notEmpty(orderPackagDONews, ORDER_PACK_DATA_NULL_ERROR);
AssertUtils.notEmpty(orderPackagDOs, ORDER_PACK_DATA_NULL_ERROR);
// 整理出orderIds
List<Long> orderIds = orderPackagDONews.stream().map(OrderPackagDONew::getOrderId).distinct().toList();
List<Long> orderIds = orderPackagDOs.stream().map(OrderPackagDO::getOrderId).distinct().toList();
// 更新包裹状态
orderPackageNewMapper.update(new LambdaUpdateWrapper<OrderPackagDONew>()
.eq(OrderPackagDONew::getPackageNo, packageID)
.in(OrderPackagDONew::getOrderId, orderIds)
.set(OrderPackagDONew::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus())
orderPackageMapper.update(new LambdaUpdateWrapper<OrderPackagDO>()
.eq(OrderPackagDO::getPackageNo, packageID)
.in(OrderPackagDO::getOrderId, orderIds)
.set(OrderPackagDO::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus())
);
for (Long orderId : orderIds) {
@@ -270,7 +258,7 @@ public class PackServiceImpl implements PackService {
}
ordersMapper.updateById(orderDO);
}
return typeConversion(orderPackagDONews.get(0), orderIds);
return typeConversion(orderPackagDOs.get(0), orderIds);
}
@@ -286,21 +274,21 @@ public class PackServiceImpl implements PackService {
List<PackagePartsSaveReqVO> delPartsList = packageVO.getDelPartsList();
Integer packMethod = packageVO.getPackMethod();
OrderPackagDONew existPackageDO = validateOrdersExists(orderIds, packNo);
OrderPackagDO existPackageDO = validateOrdersExists(orderIds, packNo);
// 判断包裹ID是否为空,为空,走新增,不为空,走更新
if (ObjectUtil.isEmpty(existPackageDO)) {
String packageNo = generatePackageNo();
List<OrderPackagDONew> orderPackageDOS = new ArrayList<>();
List<OrderPackagDO> orderPackageDOS = new ArrayList<>();
for (Long orderId : orderIds) {
OrderPackagDONew orderPackageDO = new OrderPackagDONew();
OrderPackagDO orderPackageDO = new OrderPackagDO();
orderPackageDO.setOrderId(orderId);
orderPackageDO.setPackageNo(packageNo);
orderPackageDO.setStatus((OrderPackageStatusEnum.PACKAGED.getStatus()));
orderPackageDO.setRemark(packageVO.getRemark());
orderPackageDOS.add(orderPackageDO);
}
orderPackageNewMapper.insertBatch(orderPackageDOS);
orderPackageMapper.insertBatch(orderPackageDOS);
// 板件明细新增包裹 ID
List<List<Long>> split = CollUtil.split(addPlateIdList, 1000);
if (CollUtil.isNotEmpty(split)) {
@@ -354,11 +342,11 @@ public class PackServiceImpl implements PackService {
processParts(addPartsList, packMethod, orderIds, existPackageNo, true);
// 更新封包状态
orderPackageNewMapper.update(new LambdaUpdateWrapper<OrderPackagDONew>()
.eq(OrderPackagDONew::getPackageNo, existPackageNo)
.in(OrderPackagDONew::getOrderId, orderIds)
.eq(OrderPackagDONew::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus())
.set(OrderPackagDONew::getStatus, OrderPackageStatusEnum.PACKAGED.getStatus()));
orderPackageMapper.update(new LambdaUpdateWrapper<OrderPackagDO>()
.eq(OrderPackagDO::getPackageNo, existPackageNo)
.in(OrderPackagDO::getOrderId, orderIds)
.eq(OrderPackagDO::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus())
.set(OrderPackagDO::getStatus, OrderPackageStatusEnum.PACKAGED.getStatus()));
// 更新订单打包状态
@@ -649,7 +637,7 @@ public class PackServiceImpl implements PackService {
// 判断当前订单的板材和配件是否已全部打包且当前订单的包裹已全部封包
public Boolean validateOrderPack(Long orderId) {
List<OrderPackageDO> orderPackageDOS = orderPackageMapper.selectPackList(orderId, getUserOrganId());
List<OrderPackagDO> orderPackageDOS = orderPackageMapper.selectPackList(orderId, getUserOrganId());
if (!orderPackageDOS.isEmpty()) {
return false;
@@ -692,7 +680,7 @@ public class PackServiceImpl implements PackService {
@Override
public List<OrderPackRespVO> selectPack(Long orderId) {
List<OrderPackageDO> orderPackageDOS = orderPackageMapper.selectPackStatus(orderId, getUserOrganId());
List<OrderPackagDO> orderPackageDOS = orderPackageMapper.selectPackStatus(orderId, getUserOrganId());
return orderPackageDOS.stream().map(this::typeConversion).toList();
@@ -706,9 +694,9 @@ public class PackServiceImpl implements PackService {
Long packageNo = reqVO.getPackageNo();
List<Long> orderIds = reqVO.getOrderIds();
List<OrderPackagDONew> orderPackagDOS = orderPackageNewMapper.selectList(new LambdaQueryWrapper<OrderPackagDONew>()
.eq(OrderPackagDONew::getPackageNo, packageNo)
.in(OrderPackagDONew::getOrderId, orderIds)
List<OrderPackagDO> orderPackagDOS = orderPackageMapper.selectList(new LambdaQueryWrapper<OrderPackagDO>()
.eq(OrderPackagDO::getPackageNo, packageNo)
.in(OrderPackagDO::getOrderId, orderIds)
);
if (CollUtil.isEmpty(orderPackagDOS)) {
return;
@@ -720,7 +708,7 @@ public class PackServiceImpl implements PackService {
}
// 整理出该包裹对应的订单id列表
List<Long> packOrderIds = orderPackagDOS.stream()
.map(OrderPackagDONew::getOrderId)
.map(OrderPackagDO::getOrderId)
.distinct()
.toList();
@@ -832,9 +820,9 @@ public class PackServiceImpl implements PackService {
// 移除包裹关联数据
orderPackageNewMapper.delete(new LambdaQueryWrapper<OrderPackagDONew>()
.eq(OrderPackagDONew::getPackageNo, packageNo)
.in(OrderPackagDONew::getOrderId, packOrderIds)
orderPackageMapper.delete(new LambdaQueryWrapper<OrderPackagDO>()
.eq(OrderPackagDO::getPackageNo, packageNo)
.in(OrderPackagDO::getOrderId, packOrderIds)
);
// 更新订单的已打包状态
@@ -845,134 +833,6 @@ public class PackServiceImpl implements PackService {
);
}
// 新增外部配件包裹表
@Override
@Transactional(rollbackFor = Exception.class)
public OrderPackRespVO addNewOtherPack(OtherPackReqVO reqVO) {
// 配件表新增数据
OrderPartsDO orderParts = BeanUtils.toBean(reqVO, OrderPartsDO.class);
// 因为是外部配件,所以配件类型的名称固定为 “ 外部配件”
orderParts.setType("外部配件");
orderParts.setUnit(reqVO.getUnit());
orderPartsMapper.insert(orderParts);
// 在包裹表中添加包裹编号和订单号,修改包裹类型未其他配件类型
OrderPackageDO orderPackageDO = new OrderPackageDO();
orderPackageDO.setPackageNo(generatePackageNo());
orderPackageDO.setOrderId(reqVO.getOrderId());
orderPackageDO.setType(OrderPackageTypeEnum.OTHER_ACCESSORIES.getType());
// 新增包裹
orderPackageMapper.insert(orderPackageDO);
// 在订单明细表中添加数据(订单号,配件ID,包裹ID,部件数量)
OrderItemDO orderItemDO = new OrderItemDO();
orderItemDO.setOrderId(reqVO.getOrderId());
orderItemDO.setType(OrderItemTypeEnum.QUOTATIONACCESSORIES.getType());
orderItemDO.setPartsId(orderParts.getId());
orderItemDO.setPackageId(orderPackageDO.getId());
orderItemDO.setNum(reqVO.getNum());
// 在订单明细表中新增数据
orderItemMapper.insert(orderItemDO);
// 查看新增的包裹信息
return typeConversion(orderPackageDO);
}
// 新增外部配件
@Override
@Transactional(rollbackFor = Exception.class)
public OrderPartsRespVO addNewOtherParts(OtherPackReqVO reqVO) {
OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackNo(reqVO.getPackNo(), getUserOrganId());
if (orderPackageDO.getType() != OrderPackageTypeEnum.OTHER_ACCESSORIES.getType().longValue()) {
throw new ServiceException(THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT);
}
// 配件表新增数据
OrderPartsDO orderParts = BeanUtils.toBean(reqVO, OrderPartsDO.class);
// 因为是外部配件,所以配件类型的名称固定为 “ 外部配件”
orderParts.setType("外部配件");
orderParts.setUnit(reqVO.getUnit());
orderPartsMapper.insert(orderParts);
// 在订单明细表中添加数据(订单号,配件ID,包裹ID,部件数量)
OrderItemDO orderItemDO = new OrderItemDO();
orderItemDO.setOrderId(reqVO.getOrderId());
orderItemDO.setPartsId(orderParts.getId());
orderItemDO.setPackageId(orderPackageDO.getId());
orderItemDO.setNum(reqVO.getNum());
// 在订单明细表中新增数据
orderItemMapper.insert(orderItemDO);
return BeanUtils.toBean(orderParts, OrderPartsRespVO.class);
}
// 删除包裹中的外部配件
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteOtherParts(DeleteOtherPartsReqVO reqVO) {
if (reqVO.getIsOtherParts()) {
// 更新配件表中配件为逻辑删除
orderPartsMapper.updateParts(reqVO.getPartsId(), reqVO.getOrderId(), getUserOrganId());
orderItemMapper.deleteOtherParts(reqVO.getPartsId(), reqVO.getOrderId(), getUserOrganId());
}
orderItemMapper.updateParts(reqVO.getPartsId(), reqVO.getPackageId(), reqVO.getOrderId(), getUserOrganId());
}
// 查询预打包优化信息
@Override
public String getPrePackInfo(Long orderId) {
OrderPrepackagedDO orderPrepackagedDO = orderPrepackagedMapper.selectOrder(orderId, getUserOrganId());
if (orderPrepackagedDO == null) {
return null;
}
return JsonUtils.unzipString(orderPrepackagedDO.getResult());
}
// 日期格式转换
public static String convertTime(String input) {
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = inputFormat.parse(input);
date.setTime(date.getTime() + 8 * 60 * 60 * 1000); // 将时间转换为东夏令时
return outputFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
// 生成包裹编号
private String generatePackageNo() {
@@ -989,14 +849,14 @@ public class PackServiceImpl implements PackService {
* @param orderIds
* @param packNo
*/
private OrderPackagDONew validateOrdersExists(List<Long> orderIds, String packNo) {
private OrderPackagDO validateOrdersExists(List<Long> orderIds, String packNo) {
List<OrderDO> orderDO = ordersMapper.selectByIds(orderIds);
AssertUtils.notEmpty(orderDO, ORDER_PACK_ERROR);
if (CharSequenceUtil.isNotEmpty(packNo)) {
List<OrderPackagDONew> orderPackageDOS = orderPackageNewMapper.selectList(new LambdaQueryWrapper<OrderPackagDONew>()
.eq(OrderPackagDONew::getPackageNo, packNo));
List<OrderPackagDO> orderPackageDOS = orderPackageMapper.selectList(new LambdaQueryWrapper<OrderPackagDO>()
.eq(OrderPackagDO::getPackageNo, packNo));
AssertUtils.notEmpty(orderPackageDOS, ORDER_PACK_DATA_ERROR);
return orderPackageDOS.get(0);
}
@@ -1005,7 +865,7 @@ public class PackServiceImpl implements PackService {
}
// 类型转换
private OrderPackRespVO typeConversion(OrderPackageDO orderPackageDO) {
private OrderPackRespVO typeConversion(OrderPackagDO orderPackageDO) {
return OrderPackRespVO.builder()
.orderId(orderPackageDO.getOrderId())
.organId(orderPackageDO.getOrganId())
@@ -1017,7 +877,7 @@ public class PackServiceImpl implements PackService {
}
private OrderPackRespVO typeConversion(OrderPackagDONew orderPackageDO, List<Long> orderIds) {
private OrderPackRespVO typeConversion(OrderPackagDO orderPackageDO, List<Long> orderIds) {
return OrderPackRespVO.builder()
.orderIds(orderIds)
.organId(orderPackageDO.getOrganId())
@@ -1204,13 +1064,13 @@ public class PackServiceImpl implements PackService {
@Override
public List<PackageDetailsRespVO> getOrdersPackageDetails(String packageNo) {
List<OrderPackagDONew> orderPackagDONews = orderPackageNewMapper.selectList(new LambdaQueryWrapper<OrderPackagDONew>()
.eq(OrderPackagDONew::getPackageNo, packageNo));
List<OrderPackagDO> orderPackagDONews = orderPackageMapper.selectList(new LambdaQueryWrapper<OrderPackagDO>()
.eq(OrderPackagDO::getPackageNo, packageNo));
if (CollUtil.isEmpty(orderPackagDONews)) {
return new ArrayList<>();
}
Set<Long> orderIds = orderPackagDONews.stream().map(OrderPackagDONew::getOrderId).collect(Collectors.toSet());
Set<Long> orderIds = orderPackagDONews.stream().map(OrderPackagDO::getOrderId).collect(Collectors.toSet());
List<PackageDetailsRespVO> packPartsList = orderPartsMapper.selectPackedParts(orderIds, packageNo);
List<PackageDetailsRespVO> packPlateList = orderPlateMapper.selectPackedPlateList(orderIds, packageNo);
packPlateList.addAll(packPartsList);
@@ -1219,9 +1079,9 @@ public class PackServiceImpl implements PackService {
@Override
public List<PackageDetailsRespVO> getOrderPackageDetails(Long orderId, String packageNo) {
List<OrderPackagDONew> orderPackagDONews = orderPackageNewMapper.selectList(new LambdaQueryWrapper<OrderPackagDONew>()
.eq(OrderPackagDONew::getPackageNo, packageNo)
.eq(OrderPackagDONew::getOrderId, orderId)
List<OrderPackagDO> orderPackagDONews = orderPackageMapper.selectList(new LambdaQueryWrapper<OrderPackagDO>()
.eq(OrderPackagDO::getPackageNo, packageNo)
.eq(OrderPackagDO::getOrderId, orderId)
);
if (CollUtil.isEmpty(orderPackagDONews)) {
@@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.cf.imes.framework.common.enums.DeletedCodeEnum;
import com.cf.imes.framework.common.enums.OrderPackageStatusEnum;
import com.cf.imes.framework.common.enums.OrderPackageTypeEnum;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.pojo.PageParam;
@@ -45,7 +44,6 @@ import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.PartsDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackageDO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
@@ -1320,7 +1318,8 @@ public class OrderServiceImpl implements OrderService {
List<Long> packIds = orderItemDOS.stream().map(OrderItemDO::getPackageId).distinct().toList();
orderPackageMapper.updatePackList(orderId, packIds, getUserOrganId());
// todo 删除打包内容
// orderPackageMapper.updatePackList(orderId, packIds, getUserOrganId());
orderItemMapper.deletePackList(orderId, packIds, getUserOrganId());
@@ -1632,53 +1631,53 @@ public class OrderServiceImpl implements OrderService {
List<LabelOrderPlateData> labelOrderPlateData,
OrderAllData orderAllData){
// 板材包裹信息
List<LabelOrderPackData> labelOrderPackData = orderPackageMapper.selectLabelOrderPackData(packIds, organId);
labelOrderPackData.forEach(f -> f.setPackNum(f.getPackageInfos().size()));
// 查询是否有 配件 类型包裹
List<LabelOrderPackData> partPackList = orderPackageMapper.selectPartPack(orderIds, getUserOrganId(), OrderPackageTypeEnum.PARTS.getType(),OrderPackageStatusEnum.PACKAGED.getStatus());
if(CollUtil.isNotEmpty(partPackList)){
partPackList.forEach(f->f.setPackNum(f.getPackageInfos().size()));
// 板材包裹为空时,且配件包裹不为空,需要加入配件包裹的信息
if(CollUtil.isEmpty(labelOrderPackData)){
partPackList.forEach(f->labelOrderPackData.add(LabelOrderPackData.builder().orderNo(f.getOrderNo()).build()));
}
// 添加缺少的配件包裹信息
labelOrderPackData.forEach(f-> {
Integer packNum = partPackList.stream()
.filter(p -> f.getOrderNo().equals(p.getOrderNo()))
.mapToInt(p -> p.getPackNum() != null ? p.getPackNum() : 0)
.sum();
f.setPackNum( Optional.ofNullable(f.getPackNum()).orElse(0) + packNum);
f.setPackageInfos(Optional.ofNullable(f.getPackageInfos()).orElse(new ArrayList<>()));
f.getPackageInfos().addAll(partPackList.stream()
.filter(p->p.getOrderNo().equals(f.getOrderNo()))
.map(LabelOrderPackData::getPackageInfos)
.findAny().orElse(new ArrayList<>()));
});
}
List<OrderPackageDO> packageDOS = orderPackageMapper.selectPackListByIds(packIds,getUserOrganId());
labelOrderPlateData.forEach(f->
f.setPackageSerialNo(
packageDOS.stream()
.filter(o->o.getId().equals(f.getPackageNo()))
.findFirst()
.orElse(new OrderPackageDO()).getPackageNo()));
orderAllData.setPackDataList(labelOrderPackData);
// // 板材包裹信息
// List<LabelOrderPackData> labelOrderPackData = orderPackageMapper.selectLabelOrderPackData(packIds, organId);
//
// labelOrderPackData.forEach(f -> f.setPackNum(f.getPackageInfos().size()));
//
// // 查询是否有 配件 类型包裹
// List<LabelOrderPackData> partPackList = orderPackageMapper.selectPartPack(orderIds, getUserOrganId(), OrderPackageTypeEnum.PARTS.getType(),OrderPackageStatusEnum.PACKAGED.getStatus());
//
// if(CollUtil.isNotEmpty(partPackList)){
//
// partPackList.forEach(f->f.setPackNum(f.getPackageInfos().size()));
//
// // 板材包裹为空时,且配件包裹不为空,需要加入配件包裹的信息
// if(CollUtil.isEmpty(labelOrderPackData)){
// partPackList.forEach(f->labelOrderPackData.add(LabelOrderPackData.builder().orderNo(f.getOrderNo()).build()));
// }
//
//
// // 添加缺少的配件包裹信息
// labelOrderPackData.forEach(f-> {
// Integer packNum = partPackList.stream()
// .filter(p -> f.getOrderNo().equals(p.getOrderNo()))
// .mapToInt(p -> p.getPackNum() != null ? p.getPackNum() : 0)
// .sum();
//
// f.setPackNum( Optional.ofNullable(f.getPackNum()).orElse(0) + packNum);
//
// f.setPackageInfos(Optional.ofNullable(f.getPackageInfos()).orElse(new ArrayList<>()));
//
// f.getPackageInfos().addAll(partPackList.stream()
// .filter(p->p.getOrderNo().equals(f.getOrderNo()))
// .map(LabelOrderPackData::getPackageInfos)
// .findAny().orElse(new ArrayList<>()));
// });
// }
//
//
// List<OrderPackagDO> packageDOS = orderPackageMapper.selectPackListByIds(packIds,getUserOrganId());
//
// labelOrderPlateData.forEach(f->
// f.setPackageSerialNo(
// packageDOS.stream()
// .filter(o->o.getId().equals(f.getPackageNo()))
// .findFirst()
// .orElse(new OrderPackagDO()).getPackageNo()));
//
// orderAllData.setPackDataList(labelOrderPackData);
}
@@ -2,23 +2,6 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cf.imes.module.executor.dal.mysql.pack.OrderPackageMapper">
<update id="updatePackList" parameterType="java.lang.Long">
UPDATE order_package
SET deleted = true
WHERE organ_id = #{organId}
and order_id = #{orderId}
and id in
<foreach item="packIds" collection="packIds" open="(" separator="," close=")">
#{packIds}
</foreach>
</update>
<resultMap id="PackMap" type="com.cf.imes.module.executor.controller.admin.manage.pack.vo.PackRespVO">
<result property="id" column="orderId"/>
@@ -35,7 +18,7 @@
select
order_id as orderId,
id as packId
package_no as packId
from order_package
@@ -64,7 +47,7 @@
oi.plate_id as plateId
from order_package op
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.package_id
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.package_no = oi.package_id
where
@@ -75,7 +58,6 @@
#{id}
</foreach>
and op.type = 0
and op.status in (1,2,3)
and oi.package_id != 0
and oi.plate_id != 0;
@@ -84,76 +66,6 @@
</select>
<update id="updateParts"
parameterType="java.lang.Long">
UPDATE order_package
SET deleted = true
WHERE organ_id = #{organId} and order_id = #{orderId} and id = #{packageId}
</update>
<select id="selectByOrderNo"
resultType="com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.OrderPackageVO">
select distinct
op.id,
op.order_id,
op.package_no,
op.type,
op.status,
op.organ_id,
op.creator,
op.remark as packRemark,
op.updater,
op.update_time,
op.create_time,
o.custom_order_no,
o.dealer,
o.customer,
o.address,
o.remark as orderRemark
from orders o
left join order_package op on o.organ_id = op.organ_id and o.id = op.order_id
${ew.customSqlSegment}
</select>
<select id="selectPackListByOrderId"
resultType="com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.OrderPackageVO">
select distinct
id,
order_id,
package_no,
type,
status,
organ_id,
creator,
remark as packRemark,
updater,
update_time,
create_time
from order_package
where organ_id = #{organId} and deleted = false and order_id = #{orderId}
</select>
<resultMap id="OrderPackDataMap" type="com.cf.imes.module.executor.controller.admin.order.vo.order.LabelOrderPackData">
<result property="orderNo" column="orderNo"/>
@@ -167,61 +79,9 @@
</resultMap>
<select id="selectLabelOrderPackData"
parameterType="java.lang.Long"
resultMap="OrderPackDataMap">
select distinct
package_no as packageNo,
id as packageId,
order_id as orderNo
from order_package
where organ_id = #{organId}
and deleted = false
and id in
<foreach item="packIds" collection="packIds" open="(" separator="," close=")">
#{packIds}
</foreach>
and status = 1
</select>
<select id="selectPartPack"
parameterType="java.lang.Long"
resultMap="OrderPackDataMap">
select distinct
package_no as packageNo,
id as packageId,
order_id as orderNo
from order_package
where organ_id = #{organId}
and deleted = false
and order_id in
<foreach item="orderIds" collection="orderIds" open="(" separator="," close=")">
#{orderIds}
</foreach>
and type = #{type}
and status = #{status}
</select>
<select id="getPackageNoInOrderIds" resultType="com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.OrderPackageVO">
SELECT DISTINCT package_no,status
FROM order_package_new
FROM order_package
WHERE deleted = false
AND order_id IN
<foreach collection="orderIds" item="id" open="(" close=")" separator=",">