Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into dev

lengfaqiang 2 лет назад
Родитель
Сommit
335a2f3f82

+ 4 - 4
sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/dubbo/PaymentDubboService.java

@@ -41,7 +41,7 @@ public interface PaymentDubboService {
     /**
      * 销售统计,以当前日向前推一月、一周
      *
-     * @param countType 1-周 2-月
+     * @param countType 1-日 2-周 3-月
      * @return
      */
     SettlementMoney countSell(Long entId, Integer countType);
@@ -49,7 +49,7 @@ public interface PaymentDubboService {
     /**
      * 采购统计,以当前日向前推一月、一周
      *
-     * @param countType 1-周 2-月
+     * @param countType 1-日 2-周 3-月
      * @return
      */
     SettlementMoney countPurchase(Long entId, Integer countType);
@@ -57,7 +57,7 @@ public interface PaymentDubboService {
     /**
      * 承运统计,以当前日向前推一月、一周
      *
-     * @param countType 1-周 2-月
+     * @param countType 1-日 2-周 3-月
      * @return
      */
     SettlementMoney countCarrier(Long entId, Integer countType);
@@ -65,7 +65,7 @@ public interface PaymentDubboService {
     /**
      * 托运统计,以当前日向前推一月、一周
      *
-     * @param countType 1-周 2-月
+     * @param countType 1-日 2-周 3-月
      * @return
      */
     SettlementMoney countShipper(Long entId, Integer countType);

+ 2 - 2
sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/model/dto/SettlementMoney.java

@@ -16,11 +16,11 @@ public class SettlementMoney implements Serializable {
     @Serial
     private static final long serialVersionUID = 339614434734438926L;
     /**
-     * 销售对账单数量
+     * 当月/周 金额
      */
     private String current;
     /**
-     * 采购对账单数量
+     * 上月/周 金额
      */
     private String before;
     /**

+ 14 - 3
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java

@@ -31,6 +31,7 @@ import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.api.dubbo.TransportDubboService;
 import com.sckw.transport.api.model.dto.RWaybillOrderDto;
 import com.sckw.transport.api.model.vo.RWaybillOrderVo;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -47,6 +48,7 @@ import java.util.stream.Collectors;
  * @desc 车辆
  * @date 2023/7/6 0006
  */
+@Slf4j
 @Service
 @SuppressWarnings("all")
 @Transactional(rollbackFor = Exception.class)
@@ -638,6 +640,7 @@ public class KwfTruckService {
      * @date 2023/9/5
      **/
     public List<KwfTruckMonitorVo> findTruck(Map params){
+        long begTime = System.currentTimeMillis();
         /**车辆查询**/
         Map queryParams = new HashMap<>(Global.NUMERICAL_SIXTEEN){{ put("truckNo", params.get("truckNo"));}};
         List<KwfTruckMonitorVo> truckList = findTruckMonitor(queryParams);
@@ -652,12 +655,15 @@ public class KwfTruckService {
             entIds.add(truck.getEntId());
             truckNos.add(truck.getTruckNo());
         }
-
+        long begTime1 = System.currentTimeMillis();
+        log.info("获取数据="+(begTime1 - begTime));
         //企业数据集
         entIds = entIds.stream().distinct().collect(Collectors.toList());
         Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
         //车辆定位数据集
         Map<String, KwfTruckGpsVo> truckGpsMap = findTruckLocateHandle(truckNos);
+        long begTime2 = System.currentTimeMillis();
+        log.info("获取GPS="+(begTime2 - begTime1));
 
         /**数据组装**/
         for (KwfTruckMonitorVo truck:truckList) {
@@ -666,7 +672,8 @@ public class KwfTruckService {
             truck.setFirmName(ent != null ? ent.getFirmName() : null);
             truck.setRunStatus(truckGps != null ? truckGps.getRunStatus() : null);
         }
-
+        long begTime3 = System.currentTimeMillis();
+        log.info("数据组装="+(begTime3 - begTime2));
         return truckList;
     }
 
@@ -964,7 +971,11 @@ public class KwfTruckService {
             Map<String, Object> params = new HashMap<>(Global.NUMERICAL_SIXTEEN) {{
                 put("vehicleNoList", truckNos);
             }};
+
+            long begTime = System.currentTimeMillis();
             String httpResult = HttpClientUtil.post(queryLocate, JSON.toJSONString(params));
+            System.out.println(httpResult);
+            long entTime = System.currentTimeMillis();
             if (StringUtils.isNotBlank(httpResult)) {
                 JSONObject result = JSONObject.parseObject(httpResult);
                 if (result.getInteger("code") != null && result.getInteger("code") != 200) {
@@ -973,7 +984,7 @@ public class KwfTruckService {
 
                 }
                 JSONArray trucks = result.getJSONArray("data");
-                System.out.println((trucks != null ? trucks.size() : 0) + "==="+ truckNos.size() + "===" + truckNos);
+                log.info("车牌号数量="+ truckNos.size() + " GPS数量=" + (trucks != null ? trucks.size() : 0) + " 响应时间="+(entTime - begTime));
                 for (int i=0; trucks != null && i < trucks.size(); i++) {
                     JSONObject truck = trucks.getJSONObject(i);
                     JSONObject locateInfo = truck.getJSONObject("locateInfo");

+ 5 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpSettlementLogistics.java

@@ -75,7 +75,11 @@ public class KwpSettlementLogistics {
      */
     @TableField(value = "remark")
     private String remark;
-
+    /**
+     * 冗余字段,写统计接口时增加
+     */
+    @TableField(value = "trading")
+    private String trading;
     /**
      * 对账托运方财务联系人
      */

+ 5 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpSettlementTrade.java

@@ -92,7 +92,11 @@ public class KwpSettlementTrade {
      */
     @TableField(value = "success_phone")
     private String successPhone;
-
+    /**
+     * 冗余字段,写统计接口时增加
+     */
+    @TableField(value = "trading")
+    private String trading;
     /**
      * 备注
      */

+ 1 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -579,6 +579,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         //实际结算金额就是结算单实际需付金额
         kwpSettlementLogistics.setTotalPrice(kwpLedgerLogistics.getSettlePrice());
         kwpSettlementLogistics.setActualPrice(kwpLedgerLogistics.getActualPrice());
+        kwpSettlementLogistics.setTrading(kwpLedgerLogistics.getTrading());
         kwpSettlementLogistics.setRemark(Global.EMPTY_STRING);
         kwpSettlementLogistics.setAuditUser(kwpLedgerLogistics.getAuditUser());
         kwpSettlementLogistics.setAuditPhone(kwpLedgerLogistics.getAuditPhone());

+ 1 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java

@@ -587,6 +587,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         kwpSettlementTrade.setTotalPrice(kwpLedgerTrade.getSettlePrice());
         kwpSettlementTrade.setActualPrice(kwpLedgerTrade.getActualPrice());
         kwpSettlementTrade.setRemark(Global.EMPTY_STRING);
+        kwpSettlementTrade.setTrading(kwpLedgerTrade.getTrading());
         kwpSettlementTrade.setAuditUser(kwpLedgerTrade.getAuditUser());
         kwpSettlementTrade.setAuditPhone(kwpLedgerTrade.getAuditPhone());
         kwpSettlementTrade.setSuccessUser(ledgerReq.getSuccessUser());

+ 8 - 8
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/dubbo/PaymentDubboServiceImpl.java

@@ -99,12 +99,12 @@ public class PaymentDubboServiceImpl implements PaymentDubboService {
         List<LocalDateTime> cur = new ArrayList<>();
         List<LocalDateTime> pre = new ArrayList<>();
         //按周统计
-        if (countType == 1) {
+        if (countType == 2) {
             cur.add(DateTimeUtil.getComputeDaysStart(-6));
             cur.add(DateTimeUtil.getComputeDaysEnd(0));
             pre.add(DateTimeUtil.getComputeDaysStart(-13));
             pre.add(DateTimeUtil.getComputeDaysEnd(-7));
-        } else {
+        } else if (countType == 3) {
             cur.add(DateTimeUtil.getComputeMonthStart(-1, 1));
             cur.add(DateTimeUtil.getComputeMonthEnd(0, 0));
             pre.add(DateTimeUtil.getComputeMonthStart(-2, 1));
@@ -123,12 +123,12 @@ public class PaymentDubboServiceImpl implements PaymentDubboService {
         List<LocalDateTime> cur = new ArrayList<>();
         List<LocalDateTime> pre = new ArrayList<>();
         //按周统计
-        if (countType == 1) {
+        if (countType == 2) {
             cur.add(DateTimeUtil.getComputeDaysStart(-6));
             cur.add(DateTimeUtil.getComputeDaysEnd(0));
             pre.add(DateTimeUtil.getComputeDaysStart(-13));
             pre.add(DateTimeUtil.getComputeDaysEnd(-7));
-        } else {
+        } else if (countType == 3) {
             cur.add(DateTimeUtil.getComputeMonthStart(-1, 1));
             cur.add(DateTimeUtil.getComputeMonthEnd(0, 0));
             pre.add(DateTimeUtil.getComputeMonthStart(-2, 1));
@@ -148,12 +148,12 @@ public class PaymentDubboServiceImpl implements PaymentDubboService {
         List<LocalDateTime> cur = new ArrayList<>();
         List<LocalDateTime> pre = new ArrayList<>();
         //按周统计
-        if (countType == 1) {
+        if (countType == 2) {
             cur.add(DateTimeUtil.getComputeDaysStart(-6));
             cur.add(DateTimeUtil.getComputeDaysEnd(0));
             pre.add(DateTimeUtil.getComputeDaysStart(-13));
             pre.add(DateTimeUtil.getComputeDaysEnd(-7));
-        } else {
+        } else if (countType == 3) {
             cur.add(DateTimeUtil.getComputeMonthStart(-1, 1));
             cur.add(DateTimeUtil.getComputeMonthEnd(0, 0));
             pre.add(DateTimeUtil.getComputeMonthStart(-2, 1));
@@ -173,12 +173,12 @@ public class PaymentDubboServiceImpl implements PaymentDubboService {
         List<LocalDateTime> cur = new ArrayList<>();
         List<LocalDateTime> pre = new ArrayList<>();
         //按周统计
-        if (countType == 1) {
+        if (countType == 2) {
             cur.add(DateTimeUtil.getComputeDaysStart(-6));
             cur.add(DateTimeUtil.getComputeDaysEnd(0));
             pre.add(DateTimeUtil.getComputeDaysStart(-13));
             pre.add(DateTimeUtil.getComputeDaysEnd(-7));
-        } else {
+        } else if (countType == 3) {
             cur.add(DateTimeUtil.getComputeMonthStart(-1, 1));
             cur.add(DateTimeUtil.getComputeMonthEnd(0, 0));
             pre.add(DateTimeUtil.getComputeMonthStart(-2, 1));

+ 3 - 1
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementLogisticsMapper.xml

@@ -13,6 +13,7 @@
         <result column="actual_price" jdbcType="DECIMAL" property="actualPrice"/>
         <result column="receipt_time" jdbcType="TIMESTAMP" property="receiptTime"/>
         <result column="remark" jdbcType="VARCHAR" property="remark"/>
+        <result column="trading" jdbcType="VARCHAR" property="trading"/>
         <result column="audit_user" jdbcType="VARCHAR" property="auditUser"/>
         <result column="audit_phone" jdbcType="VARCHAR" property="auditPhone"/>
         <result column="success_user" jdbcType="VARCHAR" property="successUser"/>
@@ -35,6 +36,7 @@
         actual_price,
         receipt_time,
         remark,
+        trading,
         audit_user,
         audit_phone,
         success_user,
@@ -115,7 +117,7 @@
         <if test="settlementReq.trading != null and settlementReq.trading != ''">
             and l.trading = #{settlementReq.trading,jdbcType=VARCHAR}
         </if>
-        <if test="settlementReq.startCreateTime != null and settlementReq.endCreateTime != null">
+        <if test="settlementReq.startCreateTime != null and settlementReq.startCreateTime != ''  and settlementReq.endCreateTime != null  and settlementReq.endCreateTime != ''">
             and s.create_time between #{settlementReq.startCreateTime,jdbcType=TIMESTAMP} and #{settlementReq.endCreateTime,jdbcType=TIMESTAMP}
         </if>
         <if test="settlementReq.startReceiptTime != null and settlementReq.endReceiptTime != null">

+ 2 - 0
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementTradeMapper.xml

@@ -16,6 +16,7 @@
         <result column="audit_phone" jdbcType="VARCHAR" property="auditPhone"/>
         <result column="success_user" jdbcType="VARCHAR" property="successUser"/>
         <result column="success_phone" jdbcType="VARCHAR" property="successPhone"/>
+        <result column="trading" jdbcType="VARCHAR" property="trading"/>
         <result column="remark" jdbcType="VARCHAR" property="remark"/>
         <result column="status" jdbcType="INTEGER" property="status"/>
         <result column="create_by" jdbcType="BIGINT" property="createBy"/>
@@ -37,6 +38,7 @@
         audit_user,
         audit_phone,
         success_user,
+        trading,
         success_phone,
         remark,
         `status`,

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwOrderStatisticsController.java

@@ -31,7 +31,7 @@ public class KwOrderStatisticsController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/workbenchData", produces = MediaType.APPLICATION_JSON_VALUE)
-    public HttpResult select(@RequestBody @Validated WbTOrderDataStsParam params) {
+    public HttpResult workbenchData(@RequestBody @Validated WbTOrderDataStsParam params) {
         return HttpResult.ok(kwOrderStatisticsService.workbenchData(params));
     }
 

+ 2 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/WbTOrderDataStsParam.java

@@ -33,9 +33,9 @@ public class WbTOrderDataStsParam implements Serializable {
      */
     private String unit;
     /**
-     * 统计日期类型(1周、2月)
+     * 统计日期类型(2周、3月)
      */
-    @Range(min = 1, max = 2, message = "非法日期类型")
+    @Range(min = 2, max = 3, message = "非法日期类型")
     @NotNull(message = "日期类型不能为空")
     private Integer dateType;
 

+ 26 - 27
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderStatisticsService.java

@@ -6,6 +6,8 @@ import com.sckw.core.utils.DateUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.mongo.model.SckwTradeOrder;
+import com.sckw.payment.api.dubbo.PaymentDubboService;
+import com.sckw.payment.api.model.dto.SettlementMoney;
 import com.sckw.product.api.dubbo.GoodsStatisticsService;
 import com.sckw.product.api.model.GoodsNumStsParam;
 import com.sckw.report.model.dto.WorkbenchOrderStsDTO;
@@ -43,6 +45,8 @@ public class KwOrderStatisticsService {
 
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private GoodsStatisticsService goodsStatisticsService;
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private PaymentDubboService paymentDubboService;
 
 
     /**
@@ -68,6 +72,9 @@ public class KwOrderStatisticsService {
         GoodsNumStsParam goodsNumStsParam = new GoodsNumStsParam();
         goodsNumStsParam.setTopEntId(entId).setUnit(unit);
         Long currentGoodsNum = goodsStatisticsService.getOnShelfGoodsNum(goodsNumStsParam);
+        //待付款金额
+        SettlementMoney settlement = Objects.equals(orderType, 1) ?
+                paymentDubboService.countPurchase(entId, dateType) : paymentDubboService.countSell(entId, dateType);
         //订单统计
         WorkbenchOrderStsDTO currentOrderSts = getOrderStsInfo(orderType, unit, currentStart, null);
         BigDecimal currentAmount = BigDecimal.valueOf(currentOrderSts.getOrderAmount());
@@ -76,8 +83,8 @@ public class KwOrderStatisticsService {
                 .setGoodsNum(currentGoodsNum)
                 .setOrderAmount(currentAmount)
                 .setOrderPrice(currentPrice)
+                .setWaitCollectedPrice(new BigDecimal(settlement.getCurrent()))
                 .setNotArrivedAmount(currentAmount.subtract(BigDecimal.valueOf(currentOrderSts.getOrderActualAmount())));
-        //todo 待付款金额
         list.add(currentDataSts);
 
         //上周/上月数据
@@ -93,45 +100,27 @@ public class KwOrderStatisticsService {
                 .setGoodsNum(lastGoodsNum)
                 .setOrderAmount(lastAmount)
                 .setOrderPrice(lastPrice)
+                .setWaitCollectedPrice(new BigDecimal(settlement.getBefore()))
                 .setNotArrivedAmount(lastAmount.subtract(BigDecimal.valueOf(lastOrderSts.getOrderActualAmount())));
-        //todo 待付款金额
         list.add(lastDataSts);
         res.setTOrderDataStsList(list);
-        //环比数据
         //商品数量环比
-        BigDecimal goodsNumRingRate = Objects.isNull(lastGoodsNum) || lastGoodsNum == 0L ? NumberConstant.ONE_HUNDRED :
-                new BigDecimal((currentGoodsNum - lastGoodsNum)).multiply(NumberConstant.ONE_HUNDRED)
-                        .divide(new BigDecimal(lastGoodsNum), 2, RoundingMode.HALF_UP);
+        BigDecimal goodsNumRingRate = getRingRate(new BigDecimal(currentGoodsNum), new BigDecimal(lastGoodsNum));
         boolean goodsNumFlag = goodsNumRingRate.compareTo(BigDecimal.ZERO) >= 0;
         goodsNumRingRate = goodsNumRingRate.abs();
         //订单总量环比
-        BigDecimal orderAmountRingRate = lastAmount.compareTo(BigDecimal.ZERO) == 0 ? NumberConstant.ONE_HUNDRED :
-                (currentAmount.subtract(lastAmount)).multiply(NumberConstant.ONE_HUNDRED)
-                        .divide(lastAmount, 2, RoundingMode.HALF_UP);
+        BigDecimal orderAmountRingRate = getRingRate(currentAmount, lastAmount);
         boolean orderAmountFlag = orderAmountRingRate.compareTo(BigDecimal.ZERO) >= 0;
         orderAmountRingRate = orderAmountRingRate.abs();
         //订单总金额环比
-        BigDecimal orderPriceRingRate = lastPrice.compareTo(BigDecimal.ZERO) == 0 ? NumberConstant.ONE_HUNDRED :
-                (currentPrice.subtract(lastPrice)).multiply(NumberConstant.ONE_HUNDRED)
-                        .divide(lastPrice, 2, RoundingMode.HALF_UP);
+        BigDecimal orderPriceRingRate = getRingRate(currentPrice, lastPrice);
         boolean orderPriceFlag = orderPriceRingRate.compareTo(BigDecimal.ZERO) >= 0;
         orderPriceRingRate = orderPriceRingRate.abs();
         //未到货量环比
-        BigDecimal currentNotArrived = currentDataSts.getNotArrivedAmount();
-        BigDecimal lastNotArrived = lastDataSts.getNotArrivedAmount();
-        BigDecimal notArrivedAmountRingRate = lastNotArrived.compareTo(BigDecimal.ZERO) == 0 ? NumberConstant.ONE_HUNDRED :
-                (currentNotArrived.subtract(lastNotArrived)).multiply(NumberConstant.ONE_HUNDRED)
-                        .divide(lastNotArrived, 2, RoundingMode.HALF_UP);
+        BigDecimal notArrivedAmountRingRate = getRingRate(currentDataSts.getNotArrivedAmount(), lastDataSts.getNotArrivedAmount());
         boolean notArrivedAmountFlag = notArrivedAmountRingRate.compareTo(BigDecimal.ZERO) >= 0;
         notArrivedAmountRingRate = notArrivedAmountRingRate.abs();
-        //待付款金额环比
-        BigDecimal currentWaitPrice = currentDataSts.getWaitCollectedPrice();
-        BigDecimal lastWaitPrice = lastDataSts.getWaitCollectedPrice();
-        BigDecimal waitCollectedPriceRingRate = lastWaitPrice.compareTo(BigDecimal.ZERO) == 0 ? NumberConstant.ONE_HUNDRED :
-                (currentWaitPrice.subtract(lastWaitPrice)).multiply(NumberConstant.ONE_HUNDRED)
-                        .divide(lastWaitPrice, 2, RoundingMode.HALF_UP);
-        boolean waitCollectedPriceFlag = waitCollectedPriceRingRate.compareTo(BigDecimal.ZERO) >= 0;
-        waitCollectedPriceRingRate = waitCollectedPriceRingRate.abs();
+
         res.setGoodsNumRingRate(goodsNumRingRate)
                 .setGoodsNumFlag(goodsNumFlag)
                 .setOrderAmountRingRate(orderAmountRingRate)
@@ -140,8 +129,18 @@ public class KwOrderStatisticsService {
                 .setOrderPriceFlag(orderPriceFlag)
                 .setNotArrivedAmountRingRate(notArrivedAmountRingRate)
                 .setNotArrivedAmountFlag(notArrivedAmountFlag)
-                .setWaitCollectedPriceRingRate(waitCollectedPriceRingRate)
-                .setWaitCollectedPriceFlag(waitCollectedPriceFlag);
+                .setWaitCollectedPriceRingRate(new BigDecimal(settlement.getPercent().replace("%", "")))
+                .setWaitCollectedPriceFlag(Objects.equals(settlement.getFlag(), 1));
+        return res;
+    }
+
+    private BigDecimal getRingRate(BigDecimal current, BigDecimal last) {
+        BigDecimal res;
+        if (last.compareTo(BigDecimal.ZERO) == 0) {
+            res = (current.subtract(last)).compareTo(BigDecimal.ZERO) != 0 ? NumberConstant.ONE_HUNDRED : BigDecimal.ZERO;
+        } else {
+            res = (current.subtract(last)).multiply(NumberConstant.ONE_HUNDRED).divide(last, 2, RoundingMode.HALF_UP);
+        }
         return res;
     }