Commit 84e75508 authored by lanbaoming's avatar lanbaoming

2024-06-17提交

parent e1b13f77
......@@ -140,7 +140,7 @@ public class RegionController {
@GetMapping("/getListTree")
@ApiOperation("获得区域设置列表")
// @PreAuthorize("@ss.hasPermission('ecw:region:query')")
//@PreAuthorize("@ss.hasPermission('ecw:region:query')")
public CommonResult<List<RegionRespVO>> listTree(RegionListReqVO reqVO) {
List<RegionDO> list = regionService.getSimpleDepts(reqVO);
list.sort(Comparator.comparing(RegionDO::getSort));
......@@ -173,8 +173,10 @@ public class RegionController {
@GetMapping("/getTradeCityList")
@ApiOperation("获得始发、目的城市列表")
// @PreAuthorize("@ss.hasPermission('ecw:region:query')")
public CommonResult<List<RegionRespVO>> getTradeCityList(TradeRegionListReqVO reqVO) {
//@PreAuthorize("@ss.hasPermission('ecw:region:query')")
public CommonResult<List<RegionRespVO>> getTradeCityList(
TradeRegionListReqVO reqVO) {
if (Objects.nonNull(reqVO.getChannelId())){
// 如果有渠道信息,则查询可出目的地国家下的目的地城市
QueryChannelInfoEvent channelInfoEvent = new QueryChannelInfoEvent();
......
......@@ -2401,6 +2401,13 @@ public class OrderBusinessServiceImpl extends AbstractService<OrderMapper, Order
int noQuoteOrAutomaticNoQuote,
OrderItemDO orderItemDO,
Integer type) {
if (orderDO == null) {
return noQuoteOrAutomaticNoQuote;
}
if (orderItemDO == null) {
return noQuoteOrAutomaticNoQuote;
}
//查询有无未报价异常 lanbm 2024-06-06 添加注释
List<OrderExceptionDO> orderNoQuoteExceptionDOList =
orderExceptionService.getPendingOrderExceptionByOrderIdAndOrderItemIdAndProdIdAndExceptionKey(
......@@ -2409,39 +2416,44 @@ public class OrderBusinessServiceImpl extends AbstractService<OrderMapper, Order
orderItemDO.getProdId(),
OrderExceptionEnum.ORDER_NO_QUOTE_EXCEPTION.getKey());
/*
String s = "type=" + type.toString() +
"getTransportId=" + orderDO.getTransportId().toString() +
"getNeedOrderInquiry=" + orderItemDO.getNeedOrderInquiry();
if (orderItemDO.getNeedOrderInquiry() != null) {
String s = "type=" + type.toString() +
"getTransportId=" + orderDO.getTransportId().toString() +
"getNeedOrderInquiry=" + orderItemDO.getNeedOrderInquiry();
//lanbm 2024-06-06 添加的逻辑点 海运和空运只要是单询价都按同一套逻辑来处理
if (orderItemDO.getNeedOrderInquiry() == 1) {
//处理未报价异常,且是空运,且是单询价
if (CollectionUtil.isNotEmpty(orderNoQuoteExceptionDOList)) {
orderExceptionService.autoProcessException(orderDO.getOrderId(),
orderItemDO.getOrderItemId(),
OrderExceptionEnum.ORDER_NO_QUOTE_EXCEPTION,
"单询价,自动处理未报价异常",
OrderExceptionResult.ORDER_NO_QUOTE_EXCEPTION_RESULT.PROCESSED);
noQuoteOrAutomaticNoQuote = 2;
return noQuoteOrAutomaticNoQuote;
}
zTest z = new zTest();
z.setTestname(s);
z.setCreatedate(new Date());
zTestMapper.insert(z);
//lanbm 2024-06-06 添加的逻辑点
if (orderDO.getTransportId() == 3
&& orderItemDO.getNeedOrderInquiry() == 1) {
//处理未报价异常,且是空运,且是单询价
if (CollectionUtil.isNotEmpty(orderNoQuoteExceptionDOList)) {
orderExceptionService.autoProcessException(orderDO.getOrderId(),
orderItemDO.getOrderItemId(),
OrderExceptionEnum.ORDER_NO_QUOTE_EXCEPTION,
"单询价,自动处理未报价异常",
OrderExceptionResult.ORDER_NO_QUOTE_EXCEPTION_RESULT.PROCESSED);
noQuoteOrAutomaticNoQuote = 2;
return noQuoteOrAutomaticNoQuote;
} else {
zTest z = new zTest();
z.setTestname(s);
z.setCreatedate(new Date());
zTestMapper.insert(z);
}
zTest z = new zTest();
z.setTestname(s);
z.setCreatedate(new Date());
zTestMapper.insert(z);
noQuoteOrAutomaticNoQuote = 2;
return noQuoteOrAutomaticNoQuote;
} else {
zTest z = new zTest();
z.setTestname(s);
z.setTestname("单询价为空");
z.setCreatedate(new Date());
zTestMapper.insert(z);
}
//lanbm 2024-06-06 添加的逻辑点
*/
if (orderItemDO.getItemStatus() == -1 && !orderItemDO.getIsProd()) {
if (CollectionUtil.isEmpty(orderNoQuoteExceptionDOList)) {
......@@ -2463,11 +2475,6 @@ public class OrderBusinessServiceImpl extends AbstractService<OrderMapper, Order
}
noQuoteOrAutomaticNoQuote = 1;
} else {
zTest z = new zTest();
z.setTestname("测试点1");
z.setCreatedate(new Date());
zTestMapper.insert(z);
if (CollectionUtil.isNotEmpty(orderNoQuoteExceptionDOList)) {
// TODO 当其他业务补充了品名价格后,如果还有待处理的未报价异常,需要同步处理掉
orderExceptionService.autoProcessException(orderDO.getOrderId(),
......@@ -2481,31 +2488,28 @@ public class OrderBusinessServiceImpl extends AbstractService<OrderMapper, Order
return noQuoteOrAutomaticNoQuote;
}
private void saveLog(OrderDO orderDO,
OrderItemDO orderItemDO,
WarehouseInInfoVO warehouseInInfoVO,
Integer type)
{
Integer type) {
zTest z = new zTest();
z.setCreatedate(new Date());
if(orderDO==null)
{
if (orderDO == null) {
//订单信息为空
z.setTestname("orderDO为空");
zTestMapper.insert(z);
return;
}
if(orderItemDO==null)
{
if (orderItemDO == null) {
//订单明细为空
z.setTestname("orderItemDO为空");
zTestMapper.insert(z);
return;
}
if(warehouseInInfoVO==null)
{
if (warehouseInInfoVO == null) {
//入仓信息为空
z.setTestname("warehouseInInfoVO为空");
zTestMapper.insert(z);
......@@ -2524,11 +2528,9 @@ public class OrderBusinessServiceImpl extends AbstractService<OrderMapper, Order
if (Objects.nonNull(warehouseInInfoVO)) {
s += "warehouseInInfo为空";
}
else
{
} else {
s += "CartonsNum="
+warehouseInInfoVO.getCartonsNum().toString();
+ warehouseInInfoVO.getCartonsNum().toString();
}
if (Objects.nonNull(orderItemDO.getIsHandlerOrderInquiryException())) {
......@@ -2553,7 +2555,7 @@ public class OrderBusinessServiceImpl extends AbstractService<OrderMapper, Order
orderItemDO.getOrderItemId(),
OrderExceptionEnum.LINE_LOOP_EXCEPTION.getKey());
//saveLog(orderDO, orderItemDO, warehouseInInfoVO, type);
saveLog(orderDO, orderItemDO, warehouseInInfoVO, type);
// 避免在前面自动处理未报价异常和清关费未报价异常时的回调,优先创建了单询异常,造成并发的重复创建
if (CollectionUtil.isEmpty(orderInquiryExceptionDOList)) {
......@@ -2604,6 +2606,14 @@ public class OrderBusinessServiceImpl extends AbstractService<OrderMapper, Order
int noQuoteOrAutomaticNoQuote,
OrderItemDO orderItemDO,
Integer type) {
//lanbm 2024-06-17 添加的是否为空判断逻辑
if (orderDO == null) {
return noQuoteOrAutomaticNoQuote;
}
if (orderItemDO == null) {
return noQuoteOrAutomaticNoQuote;
}
// 查询是否有重量超限异常,如果有则不生成清关费异常
// TODO 查询是否有重量超限异常和渠道包装重量超限异常,如果有则不生成清关费异常
List<OrderExceptionDO> goodsOverweightExceptionDOList =
......@@ -2611,43 +2621,49 @@ public class OrderBusinessServiceImpl extends AbstractService<OrderMapper, Order
null,
orderItemDO.getProdId(),
CollectionUtil.newArrayList(OrderExceptionEnum.GOODS_OVERWEIGHT_EXCEPTION.getKey(), OrderExceptionEnum.LINE_WEIGHT_EXCEPTION.getKey()));
/*
String s = "type=" + type.toString() + " TransportId=" +
orderDO.getTransportId().toString() +
" NeedOrderInquiry=" + orderItemDO.getNeedOrderInquiry().toString();
//lanbm 2024-06-06 添加的逻辑点
if (orderDO.getTransportId() == 3
&& orderItemDO.getNeedOrderInquiry() == 1) {
if (orderItemDO.getNeedOrderInquiry() != null) {
String s = "type=" + type.toString() + " TransportId=" +
orderDO.getTransportId().toString() +
" NeedOrderInquiry=" + orderItemDO.getNeedOrderInquiry().toString();
//根据订单号查询是否有清关费异常
List<OrderExceptionDO> orderClearanceFeeNoQuoteExceptionDOList =
orderExceptionService.getPendingOrderExceptionByOrderIdAndOrderItemIdAndExceptionKey(
orderDO.getOrderId(),
orderItemDO.getOrderItemId(),
OrderExceptionEnum.CUSTOMS_FEE_NOT_QUOTE_EXCEPTION.getKey());
//lanbm 2024-06-06 添加的逻辑点 海运和空运设置了单询价都用同一套逻辑
if (orderItemDO.getNeedOrderInquiry() == 1) {
if (CollectionUtil.isNotEmpty(orderClearanceFeeNoQuoteExceptionDOList)) {
// 当其他业务补充了品名空运清关费价格后,如果还有待处理的清关费未报价异常,需要同步处理掉
orderExceptionService.autoProcessException(orderDO.getOrderId(),
orderItemDO.getOrderItemId(),
OrderExceptionEnum.CUSTOMS_FEE_NOT_QUOTE_EXCEPTION,
"单询价,自动处理清关价异常",
OrderExceptionResult.CUSTOMS_FEE_NOT_QUOTE_EXCEPTION_RESULT.PROCESSED);
//根据订单号查询是否有清关费异常
List<OrderExceptionDO> orderClearanceFeeNoQuoteExceptionDOList =
orderExceptionService.getPendingOrderExceptionByOrderIdAndOrderItemIdAndExceptionKey(
orderDO.getOrderId(),
orderItemDO.getOrderItemId(),
OrderExceptionEnum.CUSTOMS_FEE_NOT_QUOTE_EXCEPTION.getKey());
if (CollectionUtil.isNotEmpty(orderClearanceFeeNoQuoteExceptionDOList)) {
// 当其他业务补充了品名空运清关费价格后,如果还有待处理的清关费未报价异常,需要同步处理掉
orderExceptionService.autoProcessException(orderDO.getOrderId(),
orderItemDO.getOrderItemId(),
OrderExceptionEnum.CUSTOMS_FEE_NOT_QUOTE_EXCEPTION,
"单询价,自动处理清关价异常",
OrderExceptionResult.CUSTOMS_FEE_NOT_QUOTE_EXCEPTION_RESULT.PROCESSED);
noQuoteOrAutomaticNoQuote = 2;
return noQuoteOrAutomaticNoQuote;
}
zTest z = new zTest();
z.setTestname(s);
z.setCreatedate(new Date());
zTestMapper.insert(z);
noQuoteOrAutomaticNoQuote = 2;
return noQuoteOrAutomaticNoQuote;
} else {
zTest z = new zTest();
z.setTestname(s);
z.setCreatedate(new Date());
}
zTest z = new zTest();
z.setTestname(s);
z.setCreatedate(new Date());
zTestMapper.insert(z);
noQuoteOrAutomaticNoQuote = 2;
return noQuoteOrAutomaticNoQuote;
} else {
zTest z = new zTest();
z.setTestname(s);
z.setTestname("单询价为空");
z.setCreatedate(new Date());
}*/
}
//end lanbm 2024-06-06 添加的逻辑点
// 渠道重量超限异常 channel_packaging_overweight_exception
......
......@@ -342,7 +342,8 @@ public class OrderWarehouseInServiceImpl extends AbstractService<OrderWarehouseI
// 判断是否有未处理的审核单
throwProcessingApproval(orderDO);
this.validateProdAttrAccess(createReqVO.getProdId(), orderDO.getOrderNo());
this.validateProdAttrAccess(createReqVO.getProdId(),
orderDO.getOrderNo());
validateWarehouseInItem(orderDO,
......@@ -381,7 +382,10 @@ public class OrderWarehouseInServiceImpl extends AbstractService<OrderWarehouseI
orderService.orderInWarehouse(orderWarehouseInVO);
// 更新订单状态 - 入库中
orderService.updateStatus(orderId, orderDO.getOrderNo(), OrderStatusEnum.WAREHOUSING.getValue(), null, OrderWarehouseInStatusEnum.warehousing.getValue(), null, null, null, false);
orderService.updateStatus(orderId, orderDO.getOrderNo(),
OrderStatusEnum.WAREHOUSING.getValue(),
null,
OrderWarehouseInStatusEnum.warehousing.getValue(), null, null, null, false);
// 纪录操作日志
if (createReqVO.getIsAddOrderOperateLog()) {
......
......@@ -73,10 +73,12 @@
AND FIND_IN_SET(#{params.attrId}, ep.attr_id)
</if>
<!--运输方式-->
<if test="params.transportType != null and params.transportType != ''">
and ewl.transport_type = #{params.transportType}
</if>
<!--出货渠道-->
<if test="params.shippingChannelId != null">
and epp.shipping_channel_id = #{params.shippingChannelId}
</if>
......@@ -93,6 +95,7 @@
and epp.need_pay = #{params.needPay}
</if>
<!--价格类型 0是运费加清关费,1是全包价-->
<if test="params.priceType != null">
and epp.price_type = #{params.priceType}
</if>
......@@ -414,4 +417,4 @@
</select>
</mapper>
\ No newline at end of file
</mapper>
......@@ -97,7 +97,8 @@ public class ProductPriceController {
@PutMapping("/updateAir")
@ApiOperation("更新空运路线产品")
@Idempotent(timeout = 5)
public CommonResult<Boolean> updateProductPriceAir(@Valid @RequestBody ProductPriceAirUpdateReqVO productPriceAirUpdateReqVO) {
public CommonResult<Boolean> updateProductPriceAir(
@Valid @RequestBody ProductPriceAirUpdateReqVO productPriceAirUpdateReqVO) {
productPriceService.updateProductPriceAir(productPriceAirUpdateReqVO);
return success(true);
}
......@@ -218,9 +219,14 @@ public class ProductPriceController {
@GetMapping("/page")
@ApiOperation("获得路线产品分页")
@PreAuthorize("@ss.hasPermission('ecw:product-price:query')")
public CommonResult<PageResult<ProductPriceRespVO>> getProductPricePage(@Valid ProductPricePageReqVO pageVO) {
PageResult<ProductPriceDO> pageResult = productPriceService.getProductPricePage(pageVO);
PageResult<ProductPriceRespVO> respPageResult = ProductPriceConvert.INSTANCE.convertPage(pageResult);
public CommonResult<PageResult<ProductPriceRespVO>> getProductPricePage(
@Valid ProductPricePageReqVO pageVO) {
PageResult<ProductPriceDO> pageResult =
productPriceService.getProductPricePage(pageVO);
PageResult<ProductPriceRespVO> respPageResult =
ProductPriceConvert.INSTANCE.convertPage(pageResult);
productPriceService.matchLineAndProduct(respPageResult.getList());
return success(respPageResult);
}
......
......@@ -2550,7 +2550,7 @@ public class BoxServiceImpl extends AbstractService<BoxMapper, BoxDO> implements
long orderExitNum = boxOrderExitService.count(
new LambdaQueryWrapper<BoxOrderExitDO>()
.eq(BoxOrderExitDO::getShipmentId, shipmentId)
.eq(BoxOrderExitDO::getShipmentId, shipmentId)
);
boxBackVO.setOrderExitNum(orderExitNum);
}
......@@ -3453,33 +3453,36 @@ public class BoxServiceImpl extends AbstractService<BoxMapper, BoxDO> implements
.map(BoxAbnormalDO::getShipmentId)
.collect(Collectors.toList());
List<BoxDO> boxList = getBoxList(shipmentIdList);
Map<Long, BoxDO> boxMap = boxList.stream()
.collect(Collectors.toMap(BoxDO::getId, v -> v));
for (BoxAbnormalDO abnormalDO : abnormalList) {
String notifyUsers = abnormalDO.getNotifyUsers();
if (notifyUsers == null) continue;
Long shipmentId = abnormalDO.getShipmentId();
Integer opStep = abnormalDO.getOpStep();
BoxDO boxDO = boxMap.get(shipmentId);
String transportType = boxDO.getTransportType();
if (CollectionUtil.isNotEmpty(transportTypeList)) {
if (!transportTypeList.contains(transportType)) continue;
}
if (CollectionUtil.isNotEmpty(boxList)) {
Map<Long, BoxDO> boxMap = boxList.stream()
.collect(Collectors.toMap(BoxDO::getId, v -> v));
for (BoxAbnormalDO abnormalDO : abnormalList) {
String notifyUsers = abnormalDO.getNotifyUsers();
if (notifyUsers == null) continue;
Long shipmentId = abnormalDO.getShipmentId();
Integer opStep = abnormalDO.getOpStep();
BoxDO boxDO = boxMap.get(shipmentId);
String transportType = boxDO.getTransportType();
if (CollectionUtil.isNotEmpty(transportTypeList)) {
if (!transportTypeList.contains(transportType)) continue;
}
String[] userArray = notifyUsers.split(",");
NoticeTypeEnum typeEnum = null;
if (opStep.equals(AbnormalStepEnum.CUSTOMS.getStep())) {
typeEnum = NoticeTypeEnum.ABNORMAL_CUSTOMS;
} else if (opStep.equals(AbnormalStepEnum.SHIPPING.getStep())) {
typeEnum = NoticeTypeEnum.ABNORMAL_SHIPPING;
} else if (opStep.equals(AbnormalStepEnum.ARRIVAL.getStep())) {
typeEnum = NoticeTypeEnum.ABNORMAL_ARRIVAL;
}
Date noticeTime = abnormalDO.getAbnEndTime();
for (String userId : userArray) {
if (!userId.equals(loginUserId.toString())) continue;
noticeList.add(addNotice(typeEnum, boxDO, noticeTime));
String[] userArray = notifyUsers.split(",");
NoticeTypeEnum typeEnum = null;
if (opStep.equals(AbnormalStepEnum.CUSTOMS.getStep())) {
typeEnum = NoticeTypeEnum.ABNORMAL_CUSTOMS;
} else if (opStep.equals(AbnormalStepEnum.SHIPPING.getStep())) {
typeEnum = NoticeTypeEnum.ABNORMAL_SHIPPING;
} else if (opStep.equals(AbnormalStepEnum.ARRIVAL.getStep())) {
typeEnum = NoticeTypeEnum.ABNORMAL_ARRIVAL;
}
Date noticeTime = abnormalDO.getAbnEndTime();
for (String userId : userArray) {
if (!userId.equals(loginUserId.toString())) continue;
noticeList.add(addNotice(typeEnum, boxDO, noticeTime));
}
}
}
}
......
......@@ -136,16 +136,20 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
@Transactional(rollbackFor = Exception.class)
public String createBoxMergePkg(BoxMergePkgCreateReqVO createReqVO) {
BoxDO boxDO = boxService.getById(createReqVO.getShipmentId());
//校验业务逻辑
checkBoxApproval(createReqVO.getShipmentId());
RegionDO region = regionService.getRegion(warehouseService.getWarehouse(boxDO.getDestWarehouseId()).getShi());
RegionDO region = regionService.getRegion(
warehouseService.getWarehouse(boxDO.getDestWarehouseId()).getShi());
String year = DateUtil.format(new Date(), "yy");
DecimalFormat df = new DecimalFormat("0000");
Integer num = createReqVO.getNum();
if (region == null || StringUtils.isBlank(region.getLabelCode())) {
throw exception(COUNTRY_LABEL_CODE_NOT_EXISTS);
}
String code = region.getLabelCode().substring(0,1);
BoxMergePkgNumRecordDO boxMergePkgNumRecordDO = boxMergePkgNumRecordMapper.selectOne(BoxMergePkgNumRecordDO::getDestCountryId, boxDO.getDestCountryId());
String code = region.getLabelCode().substring(0, 1);
BoxMergePkgNumRecordDO boxMergePkgNumRecordDO =
boxMergePkgNumRecordMapper.selectOne(BoxMergePkgNumRecordDO::getDestCountryId, boxDO.getDestCountryId());
if (boxMergePkgNumRecordDO == null) {
boxMergePkgNumRecordDO = new BoxMergePkgNumRecordDO();
boxMergePkgNumRecordDO.setDestCountryId(boxDO.getDestCountryId());
......@@ -155,22 +159,41 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
boxMergePkgNumRecordMapper.insert(boxMergePkgNumRecordDO);
}
// 插入
for (int i = 0;i < num;i++) {
for (int i = 0; i < num; i++) {
if (boxMergePkgNumRecordDO.getNum().intValue() <= 9999) {
createReqVO.setPkgNum(code+year+df.format(boxMergePkgNumRecordDO.getNum()));
createReqVO.setPkgNum(code + year +
df.format(boxMergePkgNumRecordDO.getNum()));
} else {
createReqVO.setPkgNum(code + year +
String.valueOf(boxMergePkgNumRecordDO.getNum()));
}
//lanbm 2024-06-15 添加箱码是否重复的校验功能
BoxMergePkgDO boxMergePkg =
BoxMergePkgConvert.INSTANCE.convert(createReqVO);
if (isHavingBoxCod(boxMergePkg.getPkgNum()) == 0) {
boxMergePkgMapper.insert(boxMergePkg);
} else {
createReqVO.setPkgNum(code+year+String.valueOf(boxMergePkgNumRecordDO.getNum()));
String sBox = boxMergePkg.getPkgNum();
boxMergePkg.setPkgNum(sBox + "F");
boxMergePkgMapper.insert(boxMergePkg);
}
BoxMergePkgDO boxMergePkg = BoxMergePkgConvert.INSTANCE.convert(createReqVO);
boxMergePkgMapper.insert(boxMergePkg);
boxMergePkgNumRecordDO.setNum(boxMergePkgNumRecordDO.getNum() + 1);
}
boxMergePkgNumRecordDO.setUpdateTime(new Date());
boxMergePkgNumRecordMapper.updateById(boxMergePkgNumRecordDO);
// 返回
return "success";
}
//lanbm 2024-06-15 add
private long isHavingBoxCod(String sBoxCode) {
LambdaQueryWrapperX q1 = new LambdaQueryWrapperX<BoxMergePkgDO>().
eq(BoxMergePkgDO::getPkgNum, sBoxCode);
Long lH = boxMergePkgMapper.selectCount(q1);
return lH;
}
@Override
public void updateBoxMergePkg(BoxMergePkgUpdateReqVO updateReqVO) {
// 校验存在
......@@ -189,7 +212,7 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
// 删除
boxMergePkgMapper.deleteById(id);
boxOrderCheckInfoService.remove(new LambdaQueryWrapperX<BoxOrderCheckInfoDO>()
.eq(BoxOrderCheckInfoDO::getPkgId,id)
.eq(BoxOrderCheckInfoDO::getPkgId, id)
);
}
......@@ -213,7 +236,7 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
public PageResult<BoxMergePkgPageDto> getBoxMergePkgPage(BoxMergePkgQueryVO query, PageVO page) {
page.setField("t.id");
IPage<BoxMergePkgPageDto> mpPage = MyBatisUtils.buildPage(page);
boxMergePkgMapper.getBoxMergePkgPage(mpPage,query);
boxMergePkgMapper.getBoxMergePkgPage(mpPage, query);
return PageResult.of(mpPage);
}
......@@ -278,81 +301,85 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
@Override
public PageResult<BoxMergePkgWebVO> getUnPkgPage(PageVO page,Long shipmentId) {
public PageResult<BoxMergePkgWebVO> getUnPkgPage(PageVO page, Long shipmentId) {
PageResult<BoxMergePkgWebVO> pageResult = new PageResult<>();
//全部要装的箱子
List<BoxOrderCheckInfoDO> tagList = new ArrayList<>();
List<BoxOrderCheckInfoDO> tagList = new ArrayList<>();
//全部要装箱的订单
List<BoxOrderInstallVO> orderInstallVOList = boxMergePkgMapper.getBoxOrderInstallVo(shipmentId);
List<Long> allOrderIds = new ArrayList<>() ;
if(CollectionUtil.isNotEmpty(orderInstallVOList)){
orderInstallVOList.forEach(o->{
OrderDO order = new OrderDO() ;
BeanUtils.copyProperties(o,order);
List<BoxOrderCheckInfoDO> tags = boxOrderCheckInfoService.getOrderTagNumList(order);
tagList.addAll(tags) ;
allOrderIds.add(o.getOrderId()) ;
List<BoxOrderInstallVO> orderInstallVOList =
boxMergePkgMapper.getBoxOrderInstallVo(shipmentId);
List<Long> allOrderIds = new ArrayList<>();
if (CollectionUtil.isNotEmpty(orderInstallVOList)) {
orderInstallVOList.forEach(o -> {
OrderDO order = new OrderDO();
BeanUtils.copyProperties(o, order);
List<BoxOrderCheckInfoDO> tags =
boxOrderCheckInfoService.getOrderTagNumList(order);
tagList.addAll(tags);
allOrderIds.add(o.getOrderId());
});
}
//一个箱子的只要判断在 ecw_box_pkg_order 表有数据就可以,多个实装箱子的,要在合包标签表ecw_box_order_check_info 判断还有哪个箱子没装
//已加入装箱列表的有哪些
List<BoxMergePkgWebVO> allBoxPgkOrder = boxMergePkgMapper.getAllBoxPgkOrder(shipmentId,allOrderIds) ;
List<BoxMergePkgWebVO> allBoxPgkOrder =
boxMergePkgMapper.getAllBoxPgkOrder(shipmentId, allOrderIds);
//已加入合包标签表的有哪些
List<BoxOrderCheckInfoDO> allBoxOrderCheck= boxMergePkgMapper.getAlllBoxOrderCheck(shipmentId,allOrderIds) ;
List<BoxOrderCheckInfoDO> allBoxOrderCheck =
boxMergePkgMapper.getAlllBoxOrderCheck(shipmentId, allOrderIds);
//剔除数据,留下 带”-“ 还未装的
//加入已装箱列表但未加入合包标签表的
List<BoxMergePkgWebVO> noInBoxOrderCheck = new ArrayList<>() ;
List<BoxMergePkgWebVO> noInBoxOrderCheck = new ArrayList<>();
List<Long> unInstallOrderList = new ArrayList<>() ;
List<Long> unInstallOrderList = new ArrayList<>();
//已加入装箱列表不为空,提取不在已装箱列表的数据
if(CollectionUtil.isNotEmpty(allBoxPgkOrder) && CollectionUtil.isNotEmpty(allBoxOrderCheck)){
List<BoxMergePkgWebVO> pkgWebVOS = allBoxPgkOrder.stream().filter(item -> !allBoxOrderCheck.stream().anyMatch(ins -> item.getOrderId().equals(ins.getOrderId()) || item.getOrderId()==ins.getOrderId())) .collect(Collectors.toList());
noInBoxOrderCheck.addAll(pkgWebVOS) ;
List<BoxOrderCheckInfoDO> collect = tagList.stream().filter(item -> !allBoxOrderCheck.stream().anyMatch(ins -> item.getOrderNumCode().equals(ins.getOrderNumCode()))) .collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(collect)){
List<BoxOrderCheckInfoDO> checkInfoDOS = collect.stream().filter(item -> !pkgWebVOS.stream().anyMatch(ins -> item.getOrderId().equals(ins.getOrderId()) || item.getOrderId()==ins.getOrderId())) .collect(Collectors.toList());
//已加入装箱列表不为空,提取不在已装箱列表的数据
if (CollectionUtil.isNotEmpty(allBoxPgkOrder) && CollectionUtil.isNotEmpty(allBoxOrderCheck)) {
List<BoxMergePkgWebVO> pkgWebVOS = allBoxPgkOrder.stream().filter(item -> !allBoxOrderCheck.stream().anyMatch(ins -> item.getOrderId().equals(ins.getOrderId()) || item.getOrderId() == ins.getOrderId())).collect(Collectors.toList());
noInBoxOrderCheck.addAll(pkgWebVOS);
List<BoxOrderCheckInfoDO> collect = tagList.stream().filter(item -> !allBoxOrderCheck.stream().anyMatch(ins -> item.getOrderNumCode().equals(ins.getOrderNumCode()))).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(collect)) {
List<BoxOrderCheckInfoDO> checkInfoDOS = collect.stream().filter(item -> !pkgWebVOS.stream().anyMatch(ins -> item.getOrderId().equals(ins.getOrderId()) || item.getOrderId() == ins.getOrderId())).collect(Collectors.toList());
List<Long> orderIdList = checkInfoDOS.stream().map(s->s.getOrderId()).collect(Collectors.toList());
unInstallOrderList.addAll(orderIdList);
List<Long> orderIdList = checkInfoDOS.stream().map(s -> s.getOrderId()).collect(Collectors.toList());
unInstallOrderList.addAll(orderIdList);
}
}
}else if(CollectionUtil.isNotEmpty(allBoxPgkOrder) && CollectionUtil.isEmpty(allBoxOrderCheck)) {
if(orderInstallVOList.size()==allBoxPgkOrder.size()){
} else if (CollectionUtil.isNotEmpty(allBoxPgkOrder) && CollectionUtil.isEmpty(allBoxOrderCheck)) {
if (orderInstallVOList.size() == allBoxPgkOrder.size()) {
// List<Long> orderIdList = allBoxPgkOrder.stream().map(s->s.getOrderId()).collect(Collectors.toList());
// unInstallOrderList.addAll(orderIdList);
}else{
List<BoxOrderInstallVO> info = orderInstallVOList.stream().filter(item -> !allBoxPgkOrder.stream().anyMatch(ins -> item.getOrderId().equals(ins.getOrderId()) || item.getOrderId()==ins.getOrderId())) .collect(Collectors.toList());
List<Long> orderIdList = info.stream().map(s->s.getOrderId()).collect(Collectors.toList());
unInstallOrderList.addAll(orderIdList);
}
}else if(CollectionUtil.isEmpty(allBoxPgkOrder) && CollectionUtil.isEmpty(allBoxOrderCheck)) {
List<BoxOrderInstallVO> info = orderInstallVOList.stream().filter(item -> !allBoxPgkOrder.stream().anyMatch(ins -> item.getOrderId().equals(ins.getOrderId()) || item.getOrderId()==ins.getOrderId())) .collect(Collectors.toList());
List<Long> orderIdList = info.stream().map(s->s.getOrderId()).collect(Collectors.toList());
} else {
List<BoxOrderInstallVO> info = orderInstallVOList.stream().filter(item -> !allBoxPgkOrder.stream().anyMatch(ins -> item.getOrderId().equals(ins.getOrderId()) || item.getOrderId() == ins.getOrderId())).collect(Collectors.toList());
List<Long> orderIdList = info.stream().map(s -> s.getOrderId()).collect(Collectors.toList());
unInstallOrderList.addAll(orderIdList);
}else if(CollectionUtil.isEmpty(allBoxPgkOrder) && CollectionUtil.isNotEmpty(allBoxOrderCheck)){
throw exception(ORDER_NOT_IN_BOX);
}
IPage page1 = new PageDTO(page.getPage(),page.getRows());
if(CollectionUtil.isNotEmpty(unInstallOrderList)){//剩余未装箱订单
IPage<BoxMergePkgWebVO> boxMergePkgWebVOS = boxMergePkgMapper.getUnPkgPage(page1,shipmentId,unInstallOrderList);
} else if (CollectionUtil.isEmpty(allBoxPgkOrder) && CollectionUtil.isEmpty(allBoxOrderCheck)) {
List<BoxOrderInstallVO> info = orderInstallVOList.stream().filter(item -> !allBoxPgkOrder.stream().anyMatch(ins -> item.getOrderId().equals(ins.getOrderId()) || item.getOrderId() == ins.getOrderId())).collect(Collectors.toList());
List<Long> orderIdList = info.stream().map(s -> s.getOrderId()).collect(Collectors.toList());
unInstallOrderList.addAll(orderIdList);
} else if (CollectionUtil.isEmpty(allBoxPgkOrder) && CollectionUtil.isNotEmpty(allBoxOrderCheck)) {
throw exception(ORDER_NOT_IN_BOX);
}
IPage page1 = new PageDTO(page.getPage(), page.getRows());
if (CollectionUtil.isNotEmpty(unInstallOrderList)) {//剩余未装箱订单
IPage<BoxMergePkgWebVO> boxMergePkgWebVOS = boxMergePkgMapper.getUnPkgPage(page1, shipmentId, unInstallOrderList);
getUnOrderInfoPageResult(pageResult, boxMergePkgWebVOS,shipmentId);
}else{//没有剩余未装箱数据
List<Long> orderIdList = orderInstallVOList.stream().map(s->s.getOrderId()).collect(Collectors.toList());
List<Long> installOrderList = new ArrayList<>();
installOrderList.addAll(orderIdList) ;
IPage<BoxMergePkgWebVO> boxMergePkgWebVOS = boxMergePkgMapper.getUnPkgPage2(page1,shipmentId,installOrderList);
getUnOrderInfoPageResult(pageResult, boxMergePkgWebVOS, shipmentId);
} else {//没有剩余未装箱数据
List<Long> orderIdList = orderInstallVOList.stream().map(s -> s.getOrderId()).collect(Collectors.toList());
List<Long> installOrderList = new ArrayList<>();
installOrderList.addAll(orderIdList);
IPage<BoxMergePkgWebVO> boxMergePkgWebVOS = boxMergePkgMapper.getUnPkgPage2(page1, shipmentId, installOrderList);
getUnOrderInfoPageResult(pageResult, boxMergePkgWebVOS,shipmentId);
getUnOrderInfoPageResult(pageResult, boxMergePkgWebVOS, shipmentId);
}
return pageResult;
......@@ -361,10 +388,10 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
@Override
public PageResult<BoxMergePkgWebVO> getPkgPageByPkgId(BoxMergePkgUpdateReqVO boxMergePkgUpdateReqVO, PageVO page) {
PageResult<BoxMergePkgWebVO> pageResult = new PageResult<>();
IPage page1 = new PageDTO(page.getPage(),page.getRows());
IPage page1 = new PageDTO(page.getPage(), page.getRows());
Long pkgId = boxMergePkgUpdateReqVO.getId();
BoxMergePkgDO boxMergePkgDO = boxMergePkgMapper.selectOne(BoxMergePkgDO::getId, pkgId);
IPage<BoxMergePkgWebVO> boxMergePkgWebVOS = boxMergePkgMapper.getPkgPageByPkgId(page1,boxMergePkgDO);
IPage<BoxMergePkgWebVO> boxMergePkgWebVOS = boxMergePkgMapper.getPkgPageByPkgId(page1, boxMergePkgDO);
boxMergePkgWebVOS.getRecords().stream().forEach(item -> item.setPkgNum(boxMergePkgDO.getPkgNum()));
getOrderInfoPageResult(pageResult, boxMergePkgWebVOS);
return pageResult;
......@@ -382,7 +409,7 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
@Override
public void finishMergePkg(Long shipmentId) {
BoxDO boxDO = boxService.getBox(shipmentId);
if(boxDO == null) {
if (boxDO == null) {
throw exception(BOX_NOT_EXISTS);
}
checkBoxApproval(shipmentId);
......@@ -393,7 +420,7 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
}
int mergePkgStatus = boxDO.getMergePkgStatus();
MergePkgStatusEnum merge = MergePkgStatusEnum.MERGED;
if(mergePkgStatus != merge.getStatus()) {
if (mergePkgStatus != merge.getStatus()) {
boxDO.setMergePkgStatus(merge.getStatus());
//修改订单状态
......@@ -412,7 +439,7 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
@Override
public BoxMergePkgTagVO getMergeTagById(Long id) {
BoxMergePkgTagVO boxMergePkgTagVO = new BoxMergePkgTagVO();
String partPath = "airTag/"+ DateUtils.formatDate(new Date());
String partPath = "airTag/" + DateUtils.formatDate(new Date());
BoxMergePkgDO boxMergePkgDO = boxMergePkgMapper.selectById(id);
BoxDO box = boxService.getBox(boxMergePkgDO.getShipmentId());
WarehouseDO startWarehouse = warehouseService.getWarehouse(box.getStartWarehouseId());
......@@ -430,7 +457,7 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
QRCode.generateQRCodeImage(boxMergePkgDO.getPkgNum(), 350, 350, outputStream);
String url = fileApi.createFile(partPath+"/"+ UUID.fastUUID().toString(),outputStream.toByteArray());
String url = fileApi.createFile(partPath + "/" + UUID.fastUUID().toString(), outputStream.toByteArray());
boxMergePkgTagVO.setQrCodeUrl(url);
//需求修改,不需要条码
// String barcodeUrl = fileApi.createFile(BarcodeUtil.generateBarCode39("https://groupage.cn/", null, null, null, false, null));
......@@ -498,17 +525,17 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
.map(DeptWarehouseDO::getWarehouseId)
.collect(Collectors.toSet());
IPage<BoxMergePkgPDAListVO> result = boxMergePkgMapper.getBoxMergePkgList4PDAPage(mpPage,warehouseIds,selfNo);
result.getRecords().stream().forEach(item ->{
IPage<BoxMergePkgPDAListVO> result = boxMergePkgMapper.getBoxMergePkgList4PDAPage(mpPage, warehouseIds, selfNo);
result.getRecords().stream().forEach(item -> {
BoxGoodsStatistics boxStatistics = boxPreloadGoodsService.getBoxStatistics(item.getId());
BeanUtils.copyProperties(boxStatistics,item);
BeanUtils.copyProperties(boxStatistics, item);
});
return PageResult.of(result);
}
@Override
public void closeMergePkg(BoxMergePkgUpdateReqVO updateReqVO) {
boxService.checkOrderTagNum(updateReqVO.getId(),1);
boxService.checkOrderTagNum(updateReqVO.getId(), 1);
this.updateBoxMergePkg(updateReqVO);
}
......@@ -529,24 +556,24 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
pageResult.setTotal(boxMergePkgWebVOIPage.getTotal());
}
private void getUnOrderInfoPageResult(PageResult<BoxMergePkgWebVO> pageResult, IPage<BoxMergePkgWebVO> boxMergePkgWebVOIPage,Long shipmentId) {
private void getUnOrderInfoPageResult(PageResult<BoxMergePkgWebVO> pageResult, IPage<BoxMergePkgWebVO> boxMergePkgWebVOIPage, Long shipmentId) {
if (CollectionUtil.isNotEmpty(boxMergePkgWebVOIPage.getRecords())) {
List<Long> orderIdList = boxMergePkgWebVOIPage.getRecords().stream().map(o->o.getOrderId()).collect(Collectors.toList());
List<Long> orderIdList = boxMergePkgWebVOIPage.getRecords().stream().map(o -> o.getOrderId()).collect(Collectors.toList());
List<OrderItemDO> AllOrderItemDOS = orderItemService.selectList(new LambdaQueryWrapperX<OrderItemDO>()
.in(OrderItemDO::getOrderId,orderIdList)
.isNotNull(OrderItemDO::getWarehouseInInfo)
);
.in(OrderItemDO::getOrderId, orderIdList)
.isNotNull(OrderItemDO::getWarehouseInInfo)
);
boxMergePkgWebVOIPage.getRecords().stream().forEach(item -> {
// List<OrderItemDO> orderItemDOS = orderItemService.selectList(new LambdaQueryWrapperX<OrderItemDO>()
// .eq(OrderItemDO::getOrderId, item.getOrderId())
// .isNotNull(OrderItemDO::getWarehouseInInfo)
// );
List<OrderItemDO> orderItemDOS = AllOrderItemDOS.stream().filter(all -> all.getOrderId()==item.getOrderId() || all.getOrderId().equals(item.getOrderId())) .collect(Collectors.toList());
List<OrderItemDO> orderItemDOS = AllOrderItemDOS.stream().filter(all -> all.getOrderId() == item.getOrderId() || all.getOrderId().equals(item.getOrderId())).collect(Collectors.toList());
List<BoxOrderCheckInfoDO> installBox = boxMergePkgMapper.getInstallBoxByShipmentId(shipmentId,item.getOrderId()) ;
List<BoxOrderCheckInfoDO> installBox = boxMergePkgMapper.getInstallBoxByShipmentId(shipmentId, item.getOrderId());
item.setInstallNum(CollectionUtil.isNotEmpty(installBox) ? installBox.size() : 0);
item.setInstallNum(CollectionUtil.isNotEmpty(installBox) ? installBox.size() : 0);
item.setOrderItemDOS(orderItemDOS);
});
pageResult.setList(boxMergePkgWebVOIPage.getRecords());
......@@ -556,7 +583,8 @@ public class BoxMergePkgServiceImpl extends AbstractService<BoxMergePkgMapper, B
pageResult.setRows(boxMergePkgWebVOIPage.getSize());
pageResult.setTotal(boxMergePkgWebVOIPage.getTotal());
}
private void checkBoxApproval(Long shipmentId){
private void checkBoxApproval(Long shipmentId) {
BoxDO box = boxService.getBox(shipmentId);
if (box.getAirShipmentStatus() != AirShipmentStatusEnum.UNSHIPMENT.getStatus()) {
throw exception(MERGE_PKG_IS_FINISH);
......
......@@ -675,7 +675,8 @@ public class BoxOrderCheckInfoServiceImpl extends AbstractService<BoxOrderCheckI
return tagList;
}
private List<BoxOrderCheckInfoDO> getOrderTagNumCaseList(OrderDO orderDO, List<OrderLabelDO> orderLabelList) {
private List<BoxOrderCheckInfoDO> getOrderTagNumCaseList(
OrderDO orderDO, List<OrderLabelDO> orderLabelList) {
//从OrderLabel里面查找订单的箱号
String orderNo = orderDO.getOrderNo();
List<BoxOrderCheckInfoDO> tagList = new ArrayList<>();
......
......@@ -855,7 +855,8 @@ public class BoxPreloadGoodsServiceImpl extends AbstractService<BoxPreloadGoodsM
}
@Override
public BoxGoodsStatistics calculationStatisticsByOrderList(Collection<OrderDO> orderDOList) {
public BoxGoodsStatistics calculationStatisticsByOrderList(
Collection<OrderDO> orderDOList) {
BoxGoodsStatistics boxGoodsStatistics = new BoxGoodsStatistics();
if (CollectionUtil.isEmpty(orderDOList)) {
return boxGoodsStatistics;
......@@ -865,17 +866,19 @@ public class BoxPreloadGoodsServiceImpl extends AbstractService<BoxPreloadGoodsM
BigDecimal volumeSum = boxGoodsStatistics.getVolume();
BigDecimal weightSum = boxGoodsStatistics.getWeight();
if (orderDO.getSumNum() != null) {
numSum += orderDO.getSumNum();
boxGoodsStatistics.setNum(numSum);
}
if (orderDO.getSumVolume() != null) {
volumeSum = volumeSum.add(orderDO.getSumVolume()).setScale(2, BigDecimal.ROUND_DOWN);
boxGoodsStatistics.setVolume(volumeSum);
}
if (orderDO.getSumWeight() != null) {
weightSum = weightSum.add(orderDO.getSumWeight()).setScale(2, BigDecimal.ROUND_DOWN);
boxGoodsStatistics.setWeight(weightSum);
if(orderDO!=null) {
if (orderDO.getSumNum() != null) {
numSum += orderDO.getSumNum();
boxGoodsStatistics.setNum(numSum);
}
if (orderDO.getSumVolume() != null) {
volumeSum = volumeSum.add(orderDO.getSumVolume()).setScale(2, BigDecimal.ROUND_DOWN);
boxGoodsStatistics.setVolume(volumeSum);
}
if (orderDO.getSumWeight() != null) {
weightSum = weightSum.add(orderDO.getSumWeight()).setScale(2, BigDecimal.ROUND_DOWN);
boxGoodsStatistics.setWeight(weightSum);
}
}
}
return boxGoodsStatistics;
......@@ -3160,6 +3163,7 @@ public class BoxPreloadGoodsServiceImpl extends AbstractService<BoxPreloadGoodsM
List<Long> preloadOrderIds = boxPreloadGoodsDOS.stream().map(BoxPreloadGoodsDO::getOrderId).distinct().collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(boxMergePkgDOS)) {
for (BoxMergePkgDO boxMergePkgDO : boxMergePkgDOS) {
List<BoxPkgOrderDO> boxPkgOrderDOS = boxPkgOrderService.selectList(BoxPkgOrderDO::getPkgId, boxMergePkgDO.getId());
if (CollectionUtil.isNotEmpty(boxPkgOrderDOS)) {
List<Long> orderIds = boxPkgOrderDOS.stream().map(BoxPkgOrderDO::getOrderId).collect(Collectors.toList());
......
......@@ -49,7 +49,8 @@ public class BoxMergePkgController {
@PostMapping("/create")
@ApiOperation("创建合包箱")
//@PreAuthorize("@ss.hasPermission('ecw:box-merge-pkg:create')")
public CommonResult<String> createBoxMergePkg(@Valid @RequestBody BoxMergePkgCreateReqVO createReqVO) {
public CommonResult<String> createBoxMergePkg(
@Valid @RequestBody BoxMergePkgCreateReqVO createReqVO) {
return success(boxMergePkgService.createBoxMergePkg(createReqVO));
}
......@@ -101,7 +102,8 @@ public class BoxMergePkgController {
@ApiOperation("获得合包箱分页")
//@PreAuthorize("@ss.hasPermission('ecw:box-merge-pkg:query')")
public CommonResult<PageResult<BoxMergePkgPageDto>> getBoxMergePkgPage(@Valid BoxMergePkgQueryVO query, PageVO page) {
PageResult<BoxMergePkgPageDto> pageResult = boxMergePkgService.getBoxMergePkgPage(query, page);
PageResult<BoxMergePkgPageDto> pageResult =
boxMergePkgService.getBoxMergePkgPage(query, page);
return success(pageResult);
}
......@@ -109,7 +111,8 @@ public class BoxMergePkgController {
@ApiOperation("获得未装箱列表分页")
// //@PreAuthorize("@ss.hasPermission('ecw:box-merge-pkg:query')")
public CommonResult<PageResult<BoxMergePkgWebVO>> getUnPkgPage(PageVO page,@RequestParam("shipmentId") Long shipmentId) {
PageResult<BoxMergePkgWebVO> pageResult = boxMergePkgService.getUnPkgPage(page,shipmentId);
PageResult<BoxMergePkgWebVO> pageResult =
boxMergePkgService.getUnPkgPage(page,shipmentId);
return success(pageResult);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment