|
|
@@ -49,7 +49,10 @@ import org.springblade.salesPart.check.service.IAuditPathsActsService;
|
|
|
import org.springblade.salesPart.check.service.IAuditPathsLevelsService;
|
|
|
import org.springblade.salesPart.check.service.IAuditProecessService;
|
|
|
import org.springblade.salesPart.corps.mapper.CorpsDescMapper;
|
|
|
+import org.springblade.salesPart.coupon.dto.TireUserCouponDto;
|
|
|
+import org.springblade.salesPart.coupon.entity.TireCoupon;
|
|
|
import org.springblade.salesPart.coupon.entity.TireUserCoupon;
|
|
|
+import org.springblade.salesPart.coupon.mapper.TireCouponMapper;
|
|
|
import org.springblade.salesPart.coupon.mapper.TireUserCouponMapper;
|
|
|
import org.springblade.salesPart.dto.FinancingProcurement;
|
|
|
import org.springblade.salesPart.dto.SaleDetail;
|
|
|
@@ -206,6 +209,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
|
|
|
private final TireUserCouponMapper tireUserCouponMapper;
|
|
|
|
|
|
+ private final TireCouponMapper tireCouponMapper;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 获取销售订单详情
|
|
|
@@ -1440,15 +1445,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
return R.fail(500, "生成系统编号失败");
|
|
|
}
|
|
|
-
|
|
|
+ BladeUser returnUser = AuthUtil.getUser();
|
|
|
if (order.getBsType().equals(OrderTypeEnum.TKSALES.getType())) {//销售
|
|
|
if (order.getId() == null) {
|
|
|
order.setOrdNo(billNo);
|
|
|
order.setSrcOrdNo(billNo);
|
|
|
order.setCreateTime(new Date());
|
|
|
- order.setCreateUser(AuthUtil.getUserId());
|
|
|
- order.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
- order.setTenantId(AuthUtil.getTenantId());
|
|
|
+ order.setCreateUser(returnUser.getUserId());
|
|
|
+ order.setCreateDept(Long.valueOf(returnUser.getDeptId()));
|
|
|
+ order.setTenantId(returnUser.getTenantId());
|
|
|
order.setStatus(OrderTypeEnum.XSLR.getType());
|
|
|
order.setBusinessSource(OrderTypeEnum.WEB.getType());
|
|
|
order.setActualPaymentStatus(1);
|
|
|
@@ -1469,7 +1474,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
|
|
|
}
|
|
|
order.setVersion(order.getVersion() + 1);
|
|
|
- order.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ order.setUpdateUser(returnUser.getUserId());
|
|
|
order.setUpdateTime(new Date());
|
|
|
baseMapper.updateById(order);
|
|
|
}
|
|
|
@@ -1509,6 +1514,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ List<TireUserCouponDto> tireUserCouponDtoList = tireUserCouponMapper.getUserCouponNotDateList(order.getCustomerId(), returnUser.getTenantId());
|
|
|
for (PjOrderItems item : order.getOrderItemsList()) {
|
|
|
item.setBillKey(item.getGoodsId() + item.getDot());
|
|
|
}
|
|
|
@@ -1535,6 +1541,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
}
|
|
|
//计算小计
|
|
|
item.setReturnsAmount(item.getReturnsNumber().multiply(item.getPrice()));
|
|
|
+ if (StringUtil.isNotBlank(item.getCouponIds())) {
|
|
|
+ List<Long> useCouponIds = Arrays.stream(item.getCouponIds().split(",")).map(Long::parseLong).collect(Collectors.toList());
|
|
|
+ List<TireUserCouponDto> useCouponList = tireUserCouponDtoList.stream().filter(e -> useCouponIds.contains(e.getId())).collect(Collectors.toList());
|
|
|
+ if (useCouponIds.size() != useCouponList.size()) {
|
|
|
+ throw new NullPointerException("该订单使用的红包,但无法找到红包数据,故不能生成退货单");
|
|
|
+ }
|
|
|
+ BigDecimal userCouponAmount = useCouponList.stream().map(TireUserCouponDto::getCouponValue).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ item.setReturnsAmount(item.getReturnsAmount().subtract(userCouponAmount));
|
|
|
+ }
|
|
|
//获得商品
|
|
|
PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
|
|
|
if (ObjectUtil.isEmpty(goodsDesc)) {
|
|
|
@@ -2419,6 +2434,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
List<PjOrderItems> list = orderItemsService.list(itemsLambdaQueryWrapper);
|
|
|
List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
|
|
|
if (!list.isEmpty()) {
|
|
|
+ List<TireUserCouponDto> tireUserCouponDtoList = tireUserCouponMapper.getUserCouponNotDateList(detail.getCustomerId(), detail.getTenantId());
|
|
|
List<Long> goodsId = list.stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
|
|
|
List<PjStockDesc> pjStockDescList = stockDescService.list(new LambdaQueryWrapper<PjStockDesc>()
|
|
|
.eq(ObjectUtils.isNotNull(detail.getStorageId()), PjStockDesc::getStorageId, detail.getStorageId())
|
|
|
@@ -2429,8 +2445,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
PjOrderItems pjOrderItems = new PjOrderItems();
|
|
|
BeanUtil.copyProperties(item, pjOrderItems);
|
|
|
pjOrderItems.setReturnsNumber(item.getGoodsNum().subtract(item.getReturnsNumber()));
|
|
|
- pjOrderItems.setReturnsAmount(item.getReturnsNumber().multiply(item.getPrice()));
|
|
|
- pjOrderItems.setSendNum(new BigDecimal("0.00"));
|
|
|
+ pjOrderItems.setReturnsAmount(pjOrderItems.getReturnsNumber().multiply(item.getPrice()));
|
|
|
+ pjOrderItems.setSendNum(FinalMap.ZERO_POINT_ZERO);
|
|
|
pjOrderItems.setId(null);
|
|
|
pjOrderItems.setPid(null);
|
|
|
pjOrderItems.setBsType(details.getBsType());
|
|
|
@@ -2451,6 +2467,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
if (stockDesc != null) {
|
|
|
pjOrderItems.setInventory(stockDesc.getBalanceQuantity());
|
|
|
}
|
|
|
+ if (StringUtil.isNotBlank(item.getCouponIds())) {
|
|
|
+ List<Long> useCouponIds = Arrays.stream(item.getCouponIds().split(",")).map(Long::parseLong).collect(Collectors.toList());
|
|
|
+ List<TireUserCouponDto> useCouponList = tireUserCouponDtoList.stream().filter(e -> useCouponIds.contains(e.getId())).collect(Collectors.toList());
|
|
|
+ if (useCouponIds.size() != useCouponList.size()) {
|
|
|
+ throw new NullPointerException("该订单使用的红包,但无法找到红包数据,故不能生成退货单");
|
|
|
+ }
|
|
|
+ BigDecimal userCouponAmount = useCouponList.stream().map(TireUserCouponDto::getCouponValue).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ pjOrderItems.setRedPacketAmount(BigDecimal.ZERO.compareTo(userCouponAmount) < 0 ? userCouponAmount.divide(new BigDecimal(useCouponList.size()), RoundingMode.HALF_UP) : userCouponAmount);
|
|
|
+ pjOrderItems.setReturnsAmount(pjOrderItems.getReturnsAmount().subtract(userCouponAmount));
|
|
|
+ }
|
|
|
pjOrderItemsList.add(pjOrderItems);
|
|
|
}
|
|
|
}
|