From 6c823dd44dbde79f008001a2a11e7bf9bc6bf8cc Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期三, 04 十二月 2024 18:15:44 +0800
Subject: [PATCH] fix:合伙人列表操作日志
---
src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java | 154 +++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 137 insertions(+), 17 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 055edd1..54010dd 100644
--- a/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java
@@ -7,9 +7,11 @@
import com.mzl.flower.config.security.SecurityUtils;
import com.mzl.flower.constant.Constants;
import com.mzl.flower.dto.request.payment.*;
+import com.mzl.flower.dto.request.report.QueryAppSupplierDTO;
import com.mzl.flower.dto.response.flower.ParamItemDTO;
import com.mzl.flower.dto.response.flower.StationStatisticDTO;
import com.mzl.flower.dto.response.payment.*;
+import com.mzl.flower.dto.response.report.AppSupplierStatisticsVO;
import com.mzl.flower.dto.response.supplier.SupplierOrderDTO;
import com.mzl.flower.entity.payment.*;
import com.mzl.flower.entity.supplier.Station;
@@ -21,6 +23,7 @@
import com.mzl.flower.mapper.supplier.StationMapper;
import com.mzl.flower.service.BaseService;
import com.mzl.flower.service.flower.FlowerParamService;
+import com.mzl.flower.service.report.OrderReportService;
import com.mzl.flower.utils.UUIDGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -74,6 +77,9 @@
@Autowired
private OrderItemSettlementService orderItemSettlementService;
+ @Autowired
+ private OrderReportService orderReportService;
+
public void createDeliveryOrder(Order order) {
String orderId = order.getId();
String orderNo = order.getOrderNo();
@@ -120,7 +126,19 @@
public Page<DeliveryOrderListDTO> selectDeliveryOrderList(Page page, DeliveryOrderQueryDTO dto) {
Supplier s = getCurrentSupplier();
- dto.setStatusList(splitParam(dto.getStatus()));
+ if(Constants.DELIVERY_ORDER_STATUS.ARRIVED.name().equals(dto.getStatus())){
+ List<String> statusLs = new ArrayList<>();
+ statusLs.add(Constants.DELIVERY_ORDER_STATUS.ARRIVED.name());
+ statusLs.add(Constants.DELIVERY_ORDER_STATUS.CHECKED.name());
+ dto.setStatusList(statusLs);
+ } else if (Constants.DELIVERY_ORDER_STATUS.PENDING.name().equals(dto.getStatus())) {
+ List<String> statusLs = new ArrayList<>();
+ statusLs.add(Constants.DELIVERY_ORDER_STATUS.NO_LOCATION.name());
+ statusLs.add(Constants.DELIVERY_ORDER_STATUS.PENDING.name());
+ dto.setStatusList(statusLs);
+ } else {
+ dto.setStatusList(splitParam(dto.getStatus()));
+ }
List<DeliveryOrderListDTO> ls = deliveryOrderMapper.selectDoList(page, s.getId(), dto);
if (ls != null && ls.size() > 0) {
List<String> dIds = new ArrayList<>();
@@ -238,13 +256,45 @@
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 List<DeliveryOrderItemDTO> getSupplierDeliveryOrderItemsByItemId(PostQueryDTO dto){
+ List<String> idList = dto.getIds();
+ List<DeliveryOrderItemDTO> ls = new ArrayList<>();
+ if(idList != null && idList.size() > 0){
+ for(String id : idList){
+ DeliveryOrderItem item = deliveryOrderItemMapper.selectOne(new QueryWrapper<DeliveryOrderItem>()
+ .eq("order_item_id", id));
+ ls.add(getSupplierDeliveryOrderItem(item));
+ }
+ }
+
+ return ls;
+ }
+
public DeliveryOrderItemDTO getSupplierDeliveryOrderItem(String id) {
+ DeliveryOrderItem item = deliveryOrderItemMapper.selectById(id);
+
+ return getSupplierDeliveryOrderItem(item);
+ }
+
+ public DeliveryOrderItemDTO getSupplierDeliveryOrderItem(DeliveryOrderItem item) {
DeliveryOrderItemDTO dto = new DeliveryOrderItemDTO();
Supplier s = getCurrentSupplier();
dto.setSupplierName(s.getName());
- DeliveryOrderItem item = deliveryOrderItemMapper.selectById(id);
+
Order d = orderMapper.selectById(item.getOrderId());
dto.setOrderNo(d.getOrderNo());
dto.setWarehouseName(d.getWarehouseName());
@@ -262,7 +312,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) {
@@ -284,6 +348,8 @@
dto.setFlowerCategory(oi.getFlowerCategory());
dto.setParams(parseArray(oi.getFlowerParams(), ParamItemDTO.class));
+
+ dto.setNum(oi.getNum());
return dto;
}
@@ -382,6 +448,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);
@@ -443,11 +513,17 @@
}
dto.setSalesRate(salesRate);
- Integer deliverCount = deliveryOrderItemMapper.getDoItemCount(supplierId, Constants.DELIVERY_ORDER_STATUS.NO_LOCATION.name(), startDate, endDate);
- dto.setDeliverCount(deliverCount == null ? 0 : deliverCount);
+ Integer deliverCount1 = deliveryOrderItemMapper.getDoItemCount(supplierId, Constants.DELIVERY_ORDER_STATUS.NO_LOCATION.name(), startDate, endDate);
+ Integer deliverCount2 = deliveryOrderItemMapper.getDoItemCount(supplierId, Constants.DELIVERY_ORDER_STATUS.PENDING.name(), startDate, endDate);
+ Integer deliverCount = getInteger(deliverCount1) + getInteger(deliverCount2);
+ dto.setDeliverCount(deliverCount);
+
+ Integer deliverCount3 = deliveryOrderItemMapper.getDoItemCount(supplierId, Constants.DELIVERY_ORDER_STATUS.ARRIVED.name(), startDate, endDate);
+ Integer deliverCount4 = deliveryOrderItemMapper.getDoItemCount(supplierId, Constants.DELIVERY_ORDER_STATUS.CHECKED.name(), startDate, endDate);
+ Integer dc = getInteger(deliverCount3) + getInteger(deliverCount4);
+ dto.setDeliverTotal(dc);
Integer deliverTotal = deliveryOrderItemMapper.getDoItemCount(supplierId, null, startDate, endDate);
- dto.setDeliverTotal(deliverTotal == null ? 0 : deliverTotal);
dto.setDealCountToday(deliverTotal);
LocalDateTime e = LocalDate.now().withDayOfMonth(1).atTime(17, 0, 0).plusDays(-1);
@@ -458,22 +534,34 @@
LocalDateTime s1 = endDate.plusDays(-30);
Integer dealCountDay30 = deliveryOrderItemMapper.getDoItemCount(supplierId, null, s1, endDate);
dto.setDealCountDay30(dealCountDay30);
+
+ // 供应商 总成交、本月成交、上月成交、今日成交、缺货(本月)、上月质检缺货、本月质检降级、上月质检降级、本月质检补货、上月质检补货
+ QueryAppSupplierDTO appDto=new QueryAppSupplierDTO();
+ appDto.setSupplierId(supplierId);
+ final AppSupplierStatisticsVO appSupplierStatistics = orderReportService.getAppSupplierStatistics(appDto);
+ BeanUtils.copyProperties(appSupplierStatistics,dto);
}
return dto;
}
- public List<StationStatisticDTO> statisticStationList(String name, LocalDateTime startDate, LocalDateTime endDate) {
+ private Integer getInteger(Integer c){
+ return c == null ? 0 : c;
+ }
+
+ 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;
}
}
@@ -539,7 +627,7 @@
orderItemSettlementService.saveItemSettlementInfo(oi, SecurityUtils.getUserId(), Constants.S_TYPE.CHECK);
}
- private BigDecimal calculateOrderItemDeduct(String id){
+ public BigDecimal calculateOrderItemDeduct(String id){
List<OrderItemCheck> cLs = orderItemCheckMapper.selectList(new QueryWrapper<OrderItemCheck>()
.eq("order_item_id", id)
.eq("audit_status", Constants.CHECK_AUDIT_STATUS.AGREED.name())
@@ -577,7 +665,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)
@@ -589,6 +677,14 @@
BeanUtils.copyProperties(c, dto);
User user = userMapper.selectById(c.getCreateBy());
dto.setCreateName(user.getNickName());
+
+ dto.setPictureList(parseArray(c.getPictures(), String.class));
+
+ 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;
@@ -596,18 +692,32 @@
public void doReduceCheck(OrderItemCheckCommitReduceDTO dto){
dto.setType(Constants.CHECK_TYPE.reduce.name());
- doCheck(dto, dto.getPictureList(), dto.getTargetLevel(), dto.getDeductAmount());
+ doCheck(dto, dto.getTargetLevel(), dto.getDeductAmount());
}
- public void doCheck(OrderItemCheckCommitDTO dto
- , List<String> pictureList, String targetLevel, BigDecimal deductAmount) {
+ public void doCheck(OrderItemCheckCommitDTO dto, String targetLevel, BigDecimal deductAmount) {
if(dto.getNum() == null || dto.getNum() == 0){
throw new ValidationException("处理数量不能为0");
}
+ List<String> pictureList = dto.getPictureList();
+ /*if(pictureList == null || pictureList.size() == 0){
+ throw new ValidationException("质检图片不能为空");
+ }*/
+
OrderItem oi = orderItemMapper.selectById(dto.getOrderItemId());
if(dto.getNum() > oi.getNum()){
throw new ValidationException("处理数量不能大于商品数量");
+ }
+
+ Order o = orderMapper.selectById(oi.getOrderId());
+ if(StringUtils.isNotEmpty(o.getTransferId())){
+ throw new ValidationException("已质检退款,不可提交质检记录");
+ }
+
+ if(!Constants.ORDER_STATUS_BACKEND.COLLECTION.name().equals(o.getStatusBackend())
+ && !Constants.ORDER_STATUS_BACKEND.SEND.name().equals(o.getStatusBackend())){
+ throw new ValidationException("订单状态异常,不可提交质检记录");
}
List<OrderItemCheck> cLs = orderItemCheckMapper.selectList(new QueryWrapper<OrderItemCheck>()
@@ -633,14 +743,24 @@
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()){
- throw new ValidationException("降级金额不能大于商品处理数量金额");
+ if(deduct.compareTo(dt) > 0
+ || (oi.getRealTotal() != null && deduct.compareTo(oi.getRealTotal()) > 0)){
+ throw new ValidationException("降级金额不能大于商品处理数量的支付的金额");
+ }
+ BigDecimal st = oi.getSupplierPrice().multiply(new BigDecimal(dto.getNum()));
+ if(deduct.compareTo(st) > 0){
+ throw new ValidationException("降级金额不能大于商品处理数量的供应商的金额");
}
}
--
Gitblit v1.9.3