From c0adb88e32f408e5588f689d702837513cd5422d Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期四, 19 九月 2024 16:45:33 +0800
Subject: [PATCH] 1.商品限购不控制数量
---
src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java | 74 +++++++++++++++++++++++++++++++++----
1 files changed, 66 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java b/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java
index 2a11914..f7466d1 100644
--- a/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java
@@ -34,6 +34,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -179,6 +180,8 @@
}
public Page<DeliveryOrderStatisticsDTO> selectSupplierDoStatistics(Page page){
+
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate theDay = parseLocalDate("2024-08-03");
long current = page.getCurrent();
@@ -187,7 +190,7 @@
current = current == 0 ? 1 : current;
long endDays = (current - 1) * size;
- long beginDays = endDays + size;
+ long beginDays = endDays + size-1;
LocalDate beginDate = now.plusDays(-beginDays);
LocalDate endDate = now.plusDays(-endDays);
@@ -207,6 +210,7 @@
, fivePm.plusDays(-1), fivePm);
DeliveryOrderStatisticsDTO dto = new DeliveryOrderStatisticsDTO();
+ dto.setId(endDate.format(formatter));
dto.setDate(endDate);
dto.setNum(0);
dto.setPrice(new BigDecimal(0));
@@ -219,11 +223,31 @@
}
page.setRecords(ls);
+
+
+ // 获取当前日期
+ LocalDate today = LocalDate.now();
+ // 计算当前日期与给定日期的天数差
+ long daysBetween = ChronoUnit.DAYS.between(theDay, today);
+ page.setTotal(daysBetween);
+
return page;
}
public List<DeliveryOrderItemListDTO> getDeliveryOrderItems(String id) {
return deliveryOrderItemMapper.selectDoItemList(id);
+ }
+
+ public List<DeliveryOrderItemDTO> getSupplierDeliveryOrderItems(PostQueryDTO dto){
+ List<String> idList = dto.getIds();
+ List<DeliveryOrderItemDTO> ls = new ArrayList<>();
+ if(idList != null && idList.size() > 0){
+ for(String id : idList){
+ ls.add(getSupplierDeliveryOrderItem(id));
+ }
+ }
+
+ return ls;
}
public DeliveryOrderItemDTO getSupplierDeliveryOrderItem(String id) {
@@ -250,7 +274,21 @@
dto.setParams(parseArray(oi.getFlowerParams(), ParamItemDTO.class));
+ dto.setNum(oi.getNum());
+
return dto;
+ }
+
+ public List<DeliveryOrderItemDTO> getDeliveryOrderItems(PostQueryDTO dto){
+ List<String> idList = dto.getIds();
+ List<DeliveryOrderItemDTO> ls = new ArrayList<>();
+ if(idList != null && idList.size() > 0){
+ for(String id : idList){
+ ls.add(getDeliveryOrderItem(id));
+ }
+ }
+
+ return ls;
}
public DeliveryOrderItemDTO getDeliveryOrderItem(String id) {
@@ -272,6 +310,8 @@
dto.setFlowerCategory(oi.getFlowerCategory());
dto.setParams(parseArray(oi.getFlowerParams(), ParamItemDTO.class));
+
+ dto.setNum(oi.getNum());
return dto;
}
@@ -370,6 +410,10 @@
);
if (count == 0) {
Order o = orderMapper.selectById(orderId);
+ if(!Constants.ORDER_STATUS_BACKEND.COLLECTION.name().equals(o.getStatusBackend())){
+ log.warn("非待集货状态,不可设置待发货");
+ return;
+ }
o.setStatusBackend(Constants.ORDER_STATUS_BACKEND.SEND.name());
o.update(SecurityUtils.getUserId());
orderMapper.updateById(o);
@@ -451,17 +495,19 @@
return dto;
}
- public List<StationStatisticDTO> statisticStationList(String name, LocalDateTime startDate, LocalDateTime endDate) {
+ public List<StationStatisticDTO> statisticStationList(String name, LocalDateTime startDate
+ , LocalDateTime endDate, String status) {
String userId = SecurityUtils.getUserId();
LambdaQueryWrapper<Station> lambdaQueryWrapper = new LambdaQueryWrapper<>();
- lambdaQueryWrapper.like(Station::getUserIds, userId);
+ lambdaQueryWrapper.like(Station::getUserIds, "%" + userId + "%");
lambdaQueryWrapper.eq(Station::getType, "0");
- boolean hasZc = stationMapper.selectCount(lambdaQueryWrapper)>0;//当前用户是否有总仓权限,总仓能查看到所有集货站的数据
+ boolean hasZc = stationMapper.selectCount(lambdaQueryWrapper) > 0;//当前用户是否有总仓权限,总仓能查看到所有集货站的数据
+ List<String> statusList = splitParam(status);
if(hasZc){
- List<StationStatisticDTO> stationStatisticDTOS = deliveryOrderMapper.statisticStationList(startDate, endDate,name,null);
+ List<StationStatisticDTO> stationStatisticDTOS = deliveryOrderMapper.statisticStationList(startDate, endDate,name,null, statusList);
return stationStatisticDTOS;
}else{
- List<StationStatisticDTO> stationStatisticDTOS = deliveryOrderMapper.statisticStationList(startDate, endDate,name,userId);
+ List<StationStatisticDTO> stationStatisticDTOS = deliveryOrderMapper.statisticStationList(startDate, endDate, name, userId, statusList);
return stationStatisticDTOS;
}
}
@@ -565,7 +611,7 @@
return dto;
}
- public OrderItemCheckNumDTO getOtherCheck(String itemId, String type){
+ public OrderItemCheckNumDTO getOtherCheck(String itemId, String type, boolean isSupplier){
OrderItemCheck c = orderItemCheckMapper.selectOne(new QueryWrapper<OrderItemCheck>()
.eq("type", type)
.eq("order_item_id", itemId)
@@ -577,6 +623,12 @@
BeanUtils.copyProperties(c, dto);
User user = userMapper.selectById(c.getCreateBy());
dto.setCreateName(user.getNickName());
+
+ if(Constants.CHECK_TYPE.lack.name().equals(c.getType()) && isSupplier){
+ OrderItem oi = orderItemMapper.selectById(itemId);
+ BigDecimal lackFeeSupplier = oi.getSupplierPrice().multiply(new BigDecimal(c.getNum()));
+ dto.setDeductAmount(lackFeeSupplier);
+ }
}
return dto;
@@ -621,13 +673,19 @@
deduct = oi.getSupplierPrice().multiply(new BigDecimal(dto.getNum()));
} else if(Constants.CHECK_TYPE.lack.name().equals(dto.getType())){
deduct = realPrice.multiply(new BigDecimal(dto.getNum()));
+ //质检退款,按照这个单价扣,如果3扎都缺货,按照总的金额退
+ //缺货数量等于商品总数时按真实总价退款
+ if(dto.getNum().intValue() == oi.getNum() && oi.getRealTotal() != null){
+ deduct = oi.getRealTotal();
+ }
} else if (Constants.CHECK_TYPE.reduce.name().equals(dto.getType())) {
if(deductAmount == null){
throw new ValidationException("降级金额不能为空");
}
deduct = deductAmount.multiply(new BigDecimal(dto.getNum()));
BigDecimal dt = realPrice.multiply(new BigDecimal(dto.getNum()));
- if(deduct.doubleValue() > dt.doubleValue()){
+ if(deduct.doubleValue() > dt.doubleValue()
+ || (oi.getRealTotal() != null && deduct.doubleValue() > oi.getRealTotal().doubleValue())){
throw new ValidationException("降级金额不能大于商品处理数量金额");
}
}
--
Gitblit v1.9.3