|
|
@@ -4,20 +4,26 @@ import com.sckw.core.exception.BusinessException;
|
|
|
import com.sckw.payment.api.dubbo.PaymentDubboService;
|
|
|
import com.sckw.payment.api.model.constant.OrderEnum;
|
|
|
import com.sckw.payment.api.model.dto.LedgerCount;
|
|
|
+import com.sckw.payment.api.model.dto.SettlementMoney;
|
|
|
+import com.sckw.payment.model.constant.LogisticsUnitType;
|
|
|
+import com.sckw.payment.model.constant.TradeUnitType;
|
|
|
import com.sckw.payment.model.dto.LedgerSize;
|
|
|
+import com.sckw.payment.model.dto.MoneyType;
|
|
|
import com.sckw.payment.service.KwpLedgerLogisticsService;
|
|
|
import com.sckw.payment.service.KwpLedgerTradeService;
|
|
|
import com.sckw.payment.service.KwpSettlementLogisticsService;
|
|
|
import com.sckw.payment.service.KwpSettlementTradeService;
|
|
|
+import com.sckw.payment.utils.DateTimeUtil;
|
|
|
+import com.sckw.payment.utils.DecimalUtils;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.DecimalFormat;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @author xucaiqin
|
|
|
@@ -33,6 +39,23 @@ public class PaymentDubboServiceImpl implements PaymentDubboService {
|
|
|
private final KwpSettlementLogisticsService settlementLogisticsService;
|
|
|
private final KwpSettlementTradeService settlementTradeService;
|
|
|
|
|
|
+
|
|
|
+ private SettlementMoney change(List<MoneyType> moneyType) {
|
|
|
+ DecimalFormat df = new DecimalFormat("0.00");
|
|
|
+ BigDecimal curMoney = new BigDecimal("0.0"), preMoney = new BigDecimal("0.0");
|
|
|
+ for (MoneyType type : moneyType) {
|
|
|
+ if (type.type() == 1) {
|
|
|
+ curMoney = type.money();
|
|
|
+ } else {
|
|
|
+ preMoney = type.money();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int flag = curMoney.compareTo(preMoney) > 0 ? 1 : 2;
|
|
|
+
|
|
|
+ String percent = DecimalUtils.percent(curMoney.subtract(preMoney), preMoney);
|
|
|
+ return new SettlementMoney(df.format(curMoney), df.format(preMoney), percent, flag);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Map<OrderEnum, List<String>> checkLedger(Long entId, Long entTarget) {
|
|
|
if (Objects.isNull(entId) || Objects.isNull(entTarget)) {
|
|
|
@@ -65,5 +88,104 @@ public class PaymentDubboServiceImpl implements PaymentDubboService {
|
|
|
LedgerSize ledgerSize = ledgerTradeService.count(entId);
|
|
|
return new LedgerCount(ledgerSize.send(), ledgerSize.receive(), count.send(), count.receive());
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SettlementMoney countSell(Long entId, Integer countType) {
|
|
|
+ log.info("销售统计:{} {}", entId, countType);
|
|
|
+ if (Objects.isNull(countType)) {
|
|
|
+ return new SettlementMoney("0.00", "0.00", "0.00%", 1);
|
|
|
+ }
|
|
|
+ List<LocalDateTime> cur = new ArrayList<>();
|
|
|
+ List<LocalDateTime> pre = new ArrayList<>();
|
|
|
+ //按周统计
|
|
|
+ if (countType == 1) {
|
|
|
+ cur.add(DateTimeUtil.getComputeDaysStart(-6));
|
|
|
+ cur.add(DateTimeUtil.getComputeDaysEnd(0));
|
|
|
+ pre.add(DateTimeUtil.getComputeDaysStart(-13));
|
|
|
+ pre.add(DateTimeUtil.getComputeDaysEnd(-7));
|
|
|
+ } else {
|
|
|
+ cur.add(DateTimeUtil.getComputeMonthStart(-1, 1));
|
|
|
+ cur.add(DateTimeUtil.getComputeMonthEnd(0, 0));
|
|
|
+ pre.add(DateTimeUtil.getComputeMonthStart(-2, 1));
|
|
|
+ pre.add(DateTimeUtil.getComputeMonthEnd(-1, 0));
|
|
|
+ }
|
|
|
+ List<MoneyType> moneyType = settlementTradeService.moneySum(entId, cur, pre, TradeUnitType.SELL);
|
|
|
+ return change(moneyType);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SettlementMoney countPurchase(Long entId, Integer countType) {
|
|
|
+ log.info("采购统计:{} {}", entId, countType);
|
|
|
+ if (Objects.isNull(countType)) {
|
|
|
+ return new SettlementMoney("0.00", "0.00", "0.00%", 1);
|
|
|
+ }
|
|
|
+ List<LocalDateTime> cur = new ArrayList<>();
|
|
|
+ List<LocalDateTime> pre = new ArrayList<>();
|
|
|
+ //按周统计
|
|
|
+ if (countType == 1) {
|
|
|
+ cur.add(DateTimeUtil.getComputeDaysStart(-6));
|
|
|
+ cur.add(DateTimeUtil.getComputeDaysEnd(0));
|
|
|
+ pre.add(DateTimeUtil.getComputeDaysStart(-13));
|
|
|
+ pre.add(DateTimeUtil.getComputeDaysEnd(-7));
|
|
|
+ } else {
|
|
|
+ cur.add(DateTimeUtil.getComputeMonthStart(-1, 1));
|
|
|
+ cur.add(DateTimeUtil.getComputeMonthEnd(0, 0));
|
|
|
+ pre.add(DateTimeUtil.getComputeMonthStart(-2, 1));
|
|
|
+ pre.add(DateTimeUtil.getComputeMonthEnd(-1, 0));
|
|
|
+ }
|
|
|
+ List<MoneyType> moneyType = settlementTradeService.moneySum(entId, cur, pre, TradeUnitType.PURCHASE);
|
|
|
+ return change(moneyType);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SettlementMoney countCarrier(Long entId, Integer countType) {
|
|
|
+ log.info("承运统计:{} {}", entId, countType);
|
|
|
+ if (Objects.isNull(countType)) {
|
|
|
+ return new SettlementMoney("0.00", "0.00", "0.00%", 1);
|
|
|
+ }
|
|
|
+ List<LocalDateTime> cur = new ArrayList<>();
|
|
|
+ List<LocalDateTime> pre = new ArrayList<>();
|
|
|
+ //按周统计
|
|
|
+ if (countType == 1) {
|
|
|
+ cur.add(DateTimeUtil.getComputeDaysStart(-6));
|
|
|
+ cur.add(DateTimeUtil.getComputeDaysEnd(0));
|
|
|
+ pre.add(DateTimeUtil.getComputeDaysStart(-13));
|
|
|
+ pre.add(DateTimeUtil.getComputeDaysEnd(-7));
|
|
|
+ } else {
|
|
|
+ cur.add(DateTimeUtil.getComputeMonthStart(-1, 1));
|
|
|
+ cur.add(DateTimeUtil.getComputeMonthEnd(0, 0));
|
|
|
+ pre.add(DateTimeUtil.getComputeMonthStart(-2, 1));
|
|
|
+ pre.add(DateTimeUtil.getComputeMonthEnd(-1, 0));
|
|
|
+ }
|
|
|
+ List<MoneyType> moneyType = settlementLogisticsService.moneySum(entId, cur, pre, LogisticsUnitType.CARRIER);
|
|
|
+ return change(moneyType);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SettlementMoney countShipper(Long entId, Integer countType) {
|
|
|
+ log.info("托运统计:{} {}", entId, countType);
|
|
|
+ if (Objects.isNull(countType)) {
|
|
|
+ return new SettlementMoney("0.00", "0.00", "0.00%", 1);
|
|
|
+ }
|
|
|
+ List<LocalDateTime> cur = new ArrayList<>();
|
|
|
+ List<LocalDateTime> pre = new ArrayList<>();
|
|
|
+ //按周统计
|
|
|
+ if (countType == 1) {
|
|
|
+ cur.add(DateTimeUtil.getComputeDaysStart(-6));
|
|
|
+ cur.add(DateTimeUtil.getComputeDaysEnd(0));
|
|
|
+ pre.add(DateTimeUtil.getComputeDaysStart(-13));
|
|
|
+ pre.add(DateTimeUtil.getComputeDaysEnd(-7));
|
|
|
+ } else {
|
|
|
+ cur.add(DateTimeUtil.getComputeMonthStart(-1, 1));
|
|
|
+ cur.add(DateTimeUtil.getComputeMonthEnd(0, 0));
|
|
|
+ pre.add(DateTimeUtil.getComputeMonthStart(-2, 1));
|
|
|
+ pre.add(DateTimeUtil.getComputeMonthEnd(-1, 0));
|
|
|
+ }
|
|
|
+ List<MoneyType> moneyType = settlementLogisticsService.moneySum(entId, cur, pre, LogisticsUnitType.SHIPPER);
|
|
|
+ return change(moneyType);
|
|
|
+ }
|
|
|
}
|
|
|
|