Browse Source

工作台订单统计接口

yzc 2 years ago
parent
commit
279a285d94

+ 2 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java

@@ -619,7 +619,7 @@ public class DateUtils extends DateUtil {
         if (Objects.equals(dateType, 1)) {
             startTime = LocalDateTime.of(time.toLocalDate().minusDays(6), LocalTime.MIN);
         } else {
-            startTime = LocalDateTime.of(time.toLocalDate().minusMonths(1), LocalTime.MIN);
+            startTime = LocalDateTime.of(time.toLocalDate().minusMonths(1).plusDays(1), LocalTime.MIN);
         }
         return formatDate(startTime);
     }
@@ -636,7 +636,7 @@ public class DateUtils extends DateUtil {
         if (Objects.equals(dateType, 1)) {
             endTime = LocalDateTime.of(LocalDate.now().minusDays(7), LocalTime.MAX);
         } else {
-            endTime = LocalDateTime.of(LocalDate.now().minusMonths(1).minusDays(1), LocalTime.MAX);
+            endTime = LocalDateTime.of(LocalDate.now().minusMonths(1), LocalTime.MAX);
         }
         return formatDate(endTime);
     }

+ 5 - 6
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwTradeOrder.java

@@ -9,7 +9,6 @@ import lombok.experimental.Accessors;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
-import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.Date;
 
@@ -46,7 +45,7 @@ public class SckwTradeOrder {
     /**
      * 订单成交数量
      */
-    private BigDecimal amount;
+    private Double amount;
 
     /**
      * 订单单位(吨、方、箱、件)
@@ -56,12 +55,12 @@ public class SckwTradeOrder {
     /**
      * 订单金额
      */
-    private BigDecimal price;
+    private Double price;
 
     /**
      * 订单成交单价
      */
-    private BigDecimal unitPrice;
+    private Double unitPrice;
 
     /**
      * 订单交易方式(预付款、货到付款)
@@ -93,12 +92,12 @@ public class SckwTradeOrder {
     /**
      * 订单已委托量
      */
-    private BigDecimal entrustAmount;
+    private Double entrustAmount;
 
     /**
      * 订单实际交付量
      */
-    private BigDecimal actualAmount;
+    private Double actualAmount;
 
     /**
      * 是否关联对账单:0未关联,1已关联

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -135,7 +135,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             kwoTradeOrderService.updateById(order);
             //更新mongodb
             SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount)
+            updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount.doubleValue())
                     .setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
             saveMongoDb(updateParam);
         } finally {
@@ -194,7 +194,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             kwoTradeOrderService.updateById(order);
             //更新mongodb
             SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(order.getId()).setActualAmount(totalActualAmount).setStatus(order.getStatus())
+            updateParam.setTOrderId(order.getId()).setActualAmount(totalActualAmount.doubleValue()).setStatus(order.getStatus())
                     .setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
             saveMongoDb(updateParam);
         } finally {

+ 16 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderGoodsService.java

@@ -9,6 +9,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -74,4 +75,19 @@ public class KwoTradeOrderGoodsService {
                 .set(KwoTradeOrderGoods::getDelFlag, Global.YES);
         kwoTradeOrderGoodsMapper.update(null, wrapper);
     }
+
+    /**
+     * @desc: 更新商品价格
+     * @author: yzc
+     * @date: 2023-09-12 15:52
+     * @Param orderId:
+     * @Param unitPrice:
+     * @return: void
+     */
+    public void updateUnitPrice(Long orderId, BigDecimal unitPrice) {
+        LambdaUpdateWrapper<KwoTradeOrderGoods> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(KwoTradeOrderGoods::getTOrderId, orderId).eq(KwoTradeOrderGoods::getDelFlag, Global.NO)
+                .set(KwoTradeOrderGoods::getUnitPrice, unitPrice);
+        kwoTradeOrderGoodsMapper.update(null, wrapper);
+    }
 }

+ 27 - 9
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -129,8 +129,16 @@ public class KwoTradeOrderService {
         Long id = tradeOrder.getId();
         String tOrderNo = tradeOrder.getTOrderNo();
         SckwTradeOrder order = new SckwTradeOrder();
-        order.setFirmName(LoginUserHolder.getEntName()).setTOrderId(id).setCreateByName(LoginUserHolder.getUserName())
-                .setUpdateByName(LoginUserHolder.getUserName()).setAssociateStatement(0);
+        order.setFirmName(LoginUserHolder.getEntName())
+                .setCreateByName(LoginUserHolder.getUserName())
+                .setUpdateByName(LoginUserHolder.getUserName())
+                .setTOrderId(id)
+                .setAssociateStatement(0)
+                .setPrice(tradeOrder.getPrice().doubleValue())
+                .setAmount(tradeOrder.getAmount().doubleValue())
+                .setEntrustAmount(tradeOrder.getEntrustAmount().doubleValue())
+                .setActualAmount(tradeOrder.getActualAmount().doubleValue());
+
         BeanUtils.copyProperties(tradeOrder, order);
         //商品信息
         kwoTradeOrderGoodsService.delByOrderId(id);
@@ -144,12 +152,12 @@ public class KwoTradeOrderService {
             }
             goods.setTOrderId(id).setTOrderNo(tOrderNo).setGoodsType(goodsDetail.getGoodsType());
             kwoTradeOrderGoodsService.insert(goods);
-            order.setGoodsId(goodsDetail.getId()).setUnit(goodsDetail.getUnit()).setUnitPrice(goods.getUnitPrice())
+            order.setGoodsId(goodsDetail.getId()).setUnit(goodsDetail.getUnit()).setUnitPrice(goods.getUnitPrice().doubleValue())
                     .setGoodsName(goodsDetail.getName()).setGoodsType(goodsDetail.getGoodsType()).setGoodsCode(goodsDetail.getCode())
                     .setGoodsTaxRate(goodsDetail.getTaxRate()).setGoodsSpec(goodsDetail.getSpec()).setGoodsThumb(goodsDetail.getThumb());
         }
         if (Objects.isNull(order.getUnitPrice())) {
-            order.setUnitPrice(new BigDecimal("0.00"));
+            order.setUnitPrice(BigDecimal.ZERO.doubleValue());
         }
         //单位信息
         kwoTradeOrderUnitService.delByOrderId(id);
@@ -876,6 +884,8 @@ public class KwoTradeOrderService {
             throw new BusinessException("Invalid contract status");
         }
         kwoTradeOrderMapper.updateById(order);
+        //更新商品价格
+        kwoTradeOrderGoodsService.updateUnitPrice(param.getId(),param.getUnitPrice());
         //保存合同信息
         KwoTradeOrderContract tradeOrderContract = BeanUtils.copyProperties(contractInfo, KwoTradeOrderContract.class);
         tradeOrderContract.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo());
@@ -893,10 +903,18 @@ public class KwoTradeOrderService {
         }
         //更新mongodb
         SckwTradeOrder updateParam = BeanUtils.copyProperties(param, SckwTradeOrder.class);
-        updateParam.setTOrderId(param.getId()).setStatus(order.getStatus()).setContractId(contractInfo.getContractId())
-                .setContractNo(contractInfo.getContractNo()).setContractName(contractInfo.getContractName())
-                .setContractSigningWay(contractInfo.getContractSigningWay()).setUpdateBy(LoginUserHolder.getUserId())
-                .setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
+        updateParam.setTOrderId(param.getId())
+                .setStatus(order.getStatus())
+                .setPrice(order.getPrice().doubleValue())
+                .setAmount(order.getAmount().doubleValue())
+                .setUnitPrice(param.getUnitPrice().doubleValue())
+                .setContractId(contractInfo.getContractId())
+                .setContractNo(contractInfo.getContractNo())
+                .setContractName(contractInfo.getContractName())
+                .setContractSigningWay(contractInfo.getContractSigningWay())
+                .setUpdateBy(LoginUserHolder.getUserId())
+                .setUpdateByName(LoginUserHolder.getUserName())
+                .setUpdateTime(new Date());
         saveMongoDb(3, updateParam);
 
     }
@@ -1049,7 +1067,7 @@ public class KwoTradeOrderService {
             remoteContractService.updatePerformed(contract.getContractId(), actualAmount);
             //mongodb更新订单状态
             SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount()).setStatus(order.getStatus())
+            updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount().doubleValue()).setStatus(order.getStatus())
                     .setUpdateBy(LoginUserHolder.getUserId()).setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
             saveMongoDb(3, updateParam);
         } finally {

+ 6 - 6
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/dto/WorkbenchOrderStsDTO.java

@@ -21,9 +21,9 @@ import java.math.BigDecimal;
 public class WorkbenchOrderStsDTO implements Serializable {
 
     public WorkbenchOrderStsDTO() {
-        this.orderAmount = BigDecimal.ZERO;
-        this.orderPrice = BigDecimal.ZERO;
-        this.orderActualAmount = BigDecimal.ZERO;
+        this.orderAmount = BigDecimal.ZERO.doubleValue();
+        this.orderPrice = BigDecimal.ZERO.doubleValue();
+        this.orderActualAmount = BigDecimal.ZERO.doubleValue();
     }
 
     @Serial
@@ -32,16 +32,16 @@ public class WorkbenchOrderStsDTO implements Serializable {
     /**
      * 订单总量
      */
-    private BigDecimal orderAmount;
+    private Double orderAmount;
 
     /**
      * 订单总金额
      */
-    private BigDecimal orderPrice;
+    private Double orderPrice;
 
     /**
      * 订单总实际成交量
      */
-    private BigDecimal orderActualAmount;
+    private Double orderActualAmount;
 
 }

+ 5 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/TOrderDataStsResVO.java

@@ -31,6 +31,11 @@ public class TOrderDataStsResVO implements Serializable {
 
     @Serial
     private static final long serialVersionUID = -6132733716009809627L;
+
+    /**
+     * 1当前周、月;2上周、月
+     */
+    private Integer type;
     /**
      * 商品数量
      */

+ 4 - 5
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -25,7 +25,6 @@ import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Pattern;
@@ -118,13 +117,13 @@ public class KwOrderService {
      * @date: 2023-08-25 10:32
      * @Param amount:
      * @Param entrustAmount:
-     * @return: java.math.BigDecimal
+     * @return: java.math.Double
      */
-    private BigDecimal getWaitEntrustAmount(BigDecimal amount, BigDecimal entrustAmount) {
+    private Double getWaitEntrustAmount(Double amount, Double entrustAmount) {
         if (Objects.isNull(amount) || Objects.isNull(entrustAmount)) {
             return amount;
         }
-        return amount.subtract(entrustAmount);
+        return amount - entrustAmount;
     }
 
     /**
@@ -352,7 +351,7 @@ public class KwOrderService {
         List<TradeOrderListExport> list = new ArrayList<>();
         AtomicInteger i = new AtomicInteger(1);
         orders.forEach(e -> {
-            BigDecimal waitEntrustAmount = getWaitEntrustAmount(e.getAmount(), e.getEntrustAmount());
+            Double waitEntrustAmount = getWaitEntrustAmount(e.getAmount(), e.getEntrustAmount());
             String loadCityName = Objects.isNull(e.getLoadCityName()) ? "" : e.getLoadCityName();
             String loadDetailAddress = Objects.isNull(e.getLoadDetailAddress()) ? "" : e.getLoadDetailAddress();
             String unloadCityName = Objects.isNull(e.getUnloadCityName()) ? "" : e.getUnloadCityName();

+ 14 - 11
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderStatisticsService.java

@@ -70,12 +70,13 @@ public class KwOrderStatisticsService {
         Long currentGoodsNum = goodsStatisticsService.getOnShelfGoodsNum(goodsNumStsParam);
         //订单统计
         WorkbenchOrderStsDTO currentOrderSts = getOrderStsInfo(orderType, unit, currentStart, null);
-        BigDecimal currentAmount = currentOrderSts.getOrderAmount();
-        BigDecimal currentPrice = currentDataSts.getOrderPrice();
-        currentDataSts.setGoodsNum(currentGoodsNum)
+        BigDecimal currentAmount = BigDecimal.valueOf(currentOrderSts.getOrderAmount());
+        BigDecimal currentPrice = BigDecimal.valueOf(currentOrderSts.getOrderPrice());
+        currentDataSts.setType(NumberConstant.ONE)
+                .setGoodsNum(currentGoodsNum)
                 .setOrderAmount(currentAmount)
                 .setOrderPrice(currentPrice)
-                .setNotArrivedAmount(currentAmount.subtract(currentOrderSts.getOrderActualAmount()));
+                .setNotArrivedAmount(currentAmount.subtract(BigDecimal.valueOf(currentOrderSts.getOrderActualAmount())));
         //todo 待付款金额
         list.add(currentDataSts);
 
@@ -86,12 +87,13 @@ public class KwOrderStatisticsService {
         Long lastGoodsNum = goodsStatisticsService.getOnShelfGoodsNum(goodsNumStsParam);
         //订单统计
         WorkbenchOrderStsDTO lastOrderSts = getOrderStsInfo(orderType, unit, lastStart, lastEnd);
-        BigDecimal lastAmount = lastOrderSts.getOrderAmount();
-        BigDecimal lastPrice = lastOrderSts.getOrderPrice();
-        lastDataSts.setGoodsNum(lastGoodsNum)
+        BigDecimal lastAmount = BigDecimal.valueOf(lastOrderSts.getOrderAmount());
+        BigDecimal lastPrice = BigDecimal.valueOf(lastOrderSts.getOrderPrice());
+        lastDataSts.setType(NumberConstant.TWO)
+                .setGoodsNum(lastGoodsNum)
                 .setOrderAmount(lastAmount)
                 .setOrderPrice(lastPrice)
-                .setNotArrivedAmount(lastAmount.subtract(lastOrderSts.getOrderActualAmount()));
+                .setNotArrivedAmount(lastAmount.subtract(BigDecimal.valueOf(lastOrderSts.getOrderActualAmount())));
         //todo 待付款金额
         list.add(lastDataSts);
         res.setTOrderDataStsList(list);
@@ -142,10 +144,11 @@ public class KwOrderStatisticsService {
         if (StringUtils.isNotBlank(unit)) {
             criteria.and("unit").is(unit);
         }
-        if (Objects.nonNull(start)) {
+        if (Objects.nonNull(start) && Objects.nonNull(end)) {
+            criteria.and("createTime").gte(start).lte(end);
+        } else if (Objects.nonNull(start)) {
             criteria.and("createTime").gte(start);
-        }
-        if (Objects.nonNull(end)) {
+        } else if (Objects.nonNull(end)) {
             criteria.and("createTime").lte(end);
         }
         Aggregation aggregation = Aggregation.newAggregation(

+ 6 - 7
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java

@@ -7,7 +7,6 @@ import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
 
-import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.Date;
 
@@ -134,28 +133,28 @@ public class OrderListRes {
     /**
      * 订单成交单价
      */
-    private BigDecimal unitPrice;
+    private Double unitPrice;
     /**
      * 订单金额
      */
-    private BigDecimal price;
+    private Double price;
 
     /**
      * 订单总量
      */
-    private BigDecimal amount;
+    private Double amount;
     /**
      * 已委托量
      */
-    private BigDecimal entrustAmount;
+    private Double entrustAmount;
     /**
      * 待委托量
      */
-    private BigDecimal waitEntrustAmount;
+    private Double waitEntrustAmount;
     /**
      * 实际交付量
      */
-    private BigDecimal actualAmount;
+    private Double actualAmount;
     /**
      * 归属项目
      */