Преглед изворни кода

Merge remote-tracking branch 'origin/master' into prod

tanbin пре 1 година
родитељ
комит
4da968f0df

+ 232 - 0
device-api-service/src/main/java/com/xy/job/MercFeeCountDayJob.java

@@ -66,6 +66,238 @@ public class MercFeeCountDayJob {
 
     private final MercService mercService;
 
+    @PostMapping("queryByDay")
+    @ApiOperation("指定日期查询")
+    public R queryByDay(@RequestBody @Validated MercFeeCountDayDto.ExcuteDayDTO dto) {
+        Integer type = dto.getType();
+        String date = dto.getDate();
+        DateTime yesterday = DateUtil.yesterday();
+        String queryDay = DateUtil.format(yesterday, DatePattern.PURE_DATE_PATTERN);
+        if (StrUtil.isNotEmpty(date)) {
+            queryDay = date;
+        }
+        String monthValue = StrUtil.sub(queryDay, 0, 6);
+        Integer dateValue = Integer.valueOf(queryDay);
+        LocalDate dayDate = LocalDate.parse(queryDay, DateTimeFormatter.BASIC_ISO_DATE);
+        LocalDateTime dayTime = dayDate.atStartOfDay();
+        LocalDateTime beginTime = LocalDateTimeUtil.beginOfDay(dayTime);
+        LocalDateTime endTime = LocalDateTimeUtil.endOfDay(dayTime);
+
+        List<String> columnsMerc = Arrays.asList(LambdaUtils.getUnderlineCaseName(MercDto.Vo::getId));
+
+        List<MercDto.Vo> approvedMercList = getApprovedMercList(columnsMerc);
+        if (CollUtil.isEmpty(approvedMercList)) {
+            return R.ok();
+        }
+
+
+        for (MercDto.Vo merc : approvedMercList) {
+            Long parentMercId = merc.getId();
+            List<Long> mercIds = R.feignCheckData(mercService.getChildMercIds(new MercDto.QuerySubDTO().setParentMercID(parentMercId)));
+            if (CollUtil.isEmpty(mercIds)) {
+                // 子商户都没有,就不用查分佣收益了
+                continue;
+            }
+            //~~~~~~~~~~~~~1设备管理费
+            if (type == 1) {
+                PageBean<DeviceChargingHistoryDto.PageVo> pageVoPageBean = getDeviceManagerFeeMerc(parentMercId, beginTime, endTime);
+                List<DeviceChargingHistoryDto.PageVo> records = pageVoPageBean == null ? null : pageVoPageBean.getRecords();
+                if (CollUtil.isNotEmpty(records)) {
+                    // 根据设备分组获取,每台设备缴费金额
+                    Map<Long, Integer> devicePayMoneyMap = records.stream()
+                            .collect(Collectors.groupingBy(DeviceChargingHistoryDto.PageVo::getMercId,
+                                    Collectors.summingInt(DeviceChargingHistoryDto.PageVo::getChargingMoney)));
+                    // 根据设备分组获取,每台设备佣金金额
+                    Map<Long, Integer> deviceAgentMoneyMap = records.stream()
+                            .collect(Collectors.groupingBy(DeviceChargingHistoryDto.PageVo::getMercId,
+                                    Collectors.summingInt(DeviceChargingHistoryDto.PageVo::getAgentMoney)));
+                    Set<Long> subMercIdSet = devicePayMoneyMap.keySet();
+                    List<MercFeeCountDay> saveMercFeeCountList = new ArrayList<>();
+                    for (Long mercId : subMercIdSet) {
+                        Integer payMoney = devicePayMoneyMap.get(mercId);
+                        Integer brokerage = deviceAgentMoneyMap.get(mercId);
+                        MercFeeCountDay deviceDayFee = new MercFeeCountDay();
+                        deviceDayFee.setFeeType(EnumMercFeeType.T1.getIntCode());
+                        deviceDayFee.setParentMercId(parentMercId);
+                        deviceDayFee.setDateValue(dateValue);
+                        deviceDayFee.setPayMoney(payMoney);
+                        deviceDayFee.setMonthValue(Integer.valueOf(monthValue));
+                        deviceDayFee.setBrokerage(brokerage);
+                        deviceDayFee.setMercId(mercId);
+                        deviceDayFee.setParentMercId(parentMercId);
+                        saveMercFeeCountList.add(deviceDayFee);
+                    }
+                    return R.ok(saveMercFeeCountList);
+                } else {
+                    // 没有费用的也要记录,为了前端收益概览的展示
+                    List<MercFeeCountDay> saveMercFeeCountList = new ArrayList<>();
+                    for (Long mercId : mercIds) {
+
+                        MercFeeCountDay deviceDayFee = new MercFeeCountDay();
+                        deviceDayFee.setFeeType(EnumMercFeeType.T1.getIntCode());
+                        deviceDayFee.setParentMercId(parentMercId);
+                        deviceDayFee.setDateValue(dateValue);
+                        deviceDayFee.setPayMoney(0);
+                        deviceDayFee.setMonthValue(Integer.valueOf(monthValue));
+                        deviceDayFee.setBrokerage(0);
+                        deviceDayFee.setMercId(mercId);
+                        deviceDayFee.setParentMercId(parentMercId);
+                        saveMercFeeCountList.add(deviceDayFee);
+                    }
+                    return R.ok(saveMercFeeCountList);
+                }
+            } else if (type == 2) {
+                //~~~~~~~~~~~~~2设备激活费
+                PageBean<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO> deviceActiveFeeByMerc = getDeviceActiveFeeByMerc(parentMercId, beginTime, endTime);
+                List<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO> deviceActiveFeeList = deviceActiveFeeByMerc == null ? null : deviceActiveFeeByMerc.getRecords();
+                if (CollUtil.isNotEmpty(deviceActiveFeeList)) {
+                    // 根据设备分组获取,每台设备缴费金额
+                    Map<Long, Integer> devicePayMoneyMap = deviceActiveFeeList.stream()
+                            .collect(Collectors.groupingBy(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercId,
+                                    Collectors.summingInt(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getChargingMoney)));
+                    // 根据设备分组获取,每台设备佣金金额
+                    Map<Long, Integer> deviceAgentMoneyMap = deviceActiveFeeList.stream()
+                            .collect(Collectors.groupingBy(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercId,
+                                    Collectors.summingInt(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getAgentMoney)));
+                    Set<Long> subMercIdSet = devicePayMoneyMap.keySet();
+                    List<MercFeeCountDay> saveMercFeeCountList = new ArrayList<>();
+                    for (Long mercId : subMercIdSet) {
+                        Integer payMoney = devicePayMoneyMap.get(mercId);
+                        Integer brokerage = deviceAgentMoneyMap.get(mercId);
+                        MercFeeCountDay deviceDayFee = new MercFeeCountDay();
+                        deviceDayFee.setFeeType(EnumMercFeeType.T2.getIntCode());
+                        deviceDayFee.setParentMercId(parentMercId);
+                        deviceDayFee.setDateValue(dateValue);
+                        deviceDayFee.setPayMoney(payMoney);
+                        deviceDayFee.setMonthValue(Integer.valueOf(monthValue));
+                        deviceDayFee.setBrokerage(brokerage);
+                        deviceDayFee.setMercId(mercId);
+                        deviceDayFee.setParentMercId(parentMercId);
+                        saveMercFeeCountList.add(deviceDayFee);
+                    }
+                    return R.ok(saveMercFeeCountList);
+                } else {
+                    // 没有费用的也要记录,为了前端收益概览的展示
+                    List<MercFeeCountDay> saveMercFeeCountList = new ArrayList<>();
+                    for (Long mercId : mercIds) {
+
+                        MercFeeCountDay deviceDayFee = new MercFeeCountDay();
+                        deviceDayFee.setFeeType(EnumMercFeeType.T2.getIntCode());
+                        deviceDayFee.setParentMercId(parentMercId);
+                        deviceDayFee.setDateValue(dateValue);
+                        deviceDayFee.setPayMoney(0);
+                        deviceDayFee.setMonthValue(Integer.valueOf(monthValue));
+                        deviceDayFee.setBrokerage(0);
+                        deviceDayFee.setMercId(mercId);
+                        deviceDayFee.setParentMercId(parentMercId);
+                        saveMercFeeCountList.add(deviceDayFee);
+                    }
+                    return R.ok(saveMercFeeCountList);
+                }
+
+            } else if (type == 3) {
+                //~~~~~~~~~~~~~3算法服务费
+                PageBean<MercDeviceAlgorithmChargingDto.PageByTopMercVO> deviceAgFeeByMerc = getDeviceAgFeeByMerc(parentMercId, beginTime, endTime);
+                List<MercDeviceAlgorithmChargingDto.PageByTopMercVO> deviceAgFeeList = deviceAgFeeByMerc == null ? null : deviceAgFeeByMerc.getRecords();
+                if (CollUtil.isNotEmpty(deviceAgFeeList)) {
+                    // 根据设备分组获取,每台设备缴费金额
+                    Map<Long, Integer> devicePayMoneyMap = deviceAgFeeList.stream()
+                            .collect(Collectors.groupingBy(MercDeviceAlgorithmChargingDto.PageByTopMercVO::getMercId,
+                                    Collectors.summingInt(MercDeviceAlgorithmChargingDto.PageByTopMercVO::getFeeBalance)));
+                    // 根据设备分组获取,每台设备佣金金额
+                    Map<Long, Integer> deviceAgentMoneyMap = deviceAgFeeList.stream()
+                            .collect(Collectors.groupingBy(MercDeviceAlgorithmChargingDto.PageByTopMercVO::getMercId,
+                                    Collectors.summingInt(MercDeviceAlgorithmChargingDto.PageByTopMercVO::getFee)));
+                    Set<Long> subMercIdSet = devicePayMoneyMap.keySet();
+                    List<MercFeeCountDay> saveMercFeeCountList = new ArrayList<>();
+                    for (Long mercId : subMercIdSet) {
+                        Integer payMoney = devicePayMoneyMap.get(mercId);
+                        Integer brokerage = deviceAgentMoneyMap.get(mercId);
+                        MercFeeCountDay deviceDayFee = new MercFeeCountDay();
+                        deviceDayFee.setFeeType(EnumMercFeeType.T3.getIntCode());
+                        deviceDayFee.setParentMercId(parentMercId);
+                        deviceDayFee.setDateValue(dateValue);
+                        deviceDayFee.setMonthValue(Integer.valueOf(monthValue));
+                        deviceDayFee.setPayMoney(payMoney);
+                        deviceDayFee.setBrokerage(brokerage);
+                        deviceDayFee.setMercId(mercId);
+                        deviceDayFee.setParentMercId(parentMercId);
+                        saveMercFeeCountList.add(deviceDayFee);
+                    }
+                    return R.ok(saveMercFeeCountList);
+                } else {
+                    // 没有费用的也要记录,为了前端收益概览的展示
+                    List<MercFeeCountDay> saveMercFeeCountList = new ArrayList<>();
+                    for (Long mercId : mercIds) {
+
+                        MercFeeCountDay deviceDayFee = new MercFeeCountDay();
+                        deviceDayFee.setFeeType(EnumMercFeeType.T3.getIntCode());
+                        deviceDayFee.setParentMercId(parentMercId);
+                        deviceDayFee.setDateValue(dateValue);
+                        deviceDayFee.setPayMoney(0);
+                        deviceDayFee.setMonthValue(Integer.valueOf(monthValue));
+                        deviceDayFee.setBrokerage(0);
+                        deviceDayFee.setMercId(mercId);
+                        deviceDayFee.setParentMercId(parentMercId);
+                        saveMercFeeCountList.add(deviceDayFee);
+                    }
+                    return R.ok(saveMercFeeCountList);
+                }
+
+            } else if (type == 4) {
+                //~~~~~~~~~~~~~4流量卡费
+                PageBean<DeviceSimChargeDto.PageByTopMercVO> simFeeByMerc = getSimFeeByMerc(parentMercId, beginTime, endTime);
+                List<DeviceSimChargeDto.PageByTopMercVO> simFeeList = simFeeByMerc == null ? null : simFeeByMerc.getRecords();
+                if (CollUtil.isNotEmpty(simFeeList)) {
+                    // 根据设备分组获取,每台设备缴费金额
+                    Map<Long, Integer> devicePayMoneyMap = simFeeList.stream()
+                            .collect(Collectors.groupingBy(DeviceSimChargeDto.PageByTopMercVO::getMercId,
+                                    Collectors.summingInt(DeviceSimChargeDto.PageByTopMercVO::getMoney)));
+                    // 根据设备分组获取,每台设备佣金金额
+                    Map<Long, Integer> deviceAgentMoneyMap = simFeeList.stream()
+                            .collect(Collectors.groupingBy(DeviceSimChargeDto.PageByTopMercVO::getMercId,
+                                    Collectors.summingInt(DeviceSimChargeDto.PageByTopMercVO::getAgentMoney)));
+                    Set<Long> subMercIdSet = devicePayMoneyMap.keySet();
+                    List<MercFeeCountDay> saveMercFeeCountList = new ArrayList<>();
+                    for (Long mercId : subMercIdSet) {
+                        Integer payMoney = devicePayMoneyMap.get(mercId);
+                        Integer brokerage = deviceAgentMoneyMap.get(mercId);
+                        MercFeeCountDay deviceDayFee = new MercFeeCountDay();
+                        deviceDayFee.setFeeType(EnumMercFeeType.T4.getIntCode());
+                        deviceDayFee.setParentMercId(parentMercId);
+                        deviceDayFee.setDateValue(dateValue);
+                        deviceDayFee.setMonthValue(Integer.valueOf(monthValue));
+                        deviceDayFee.setPayMoney(payMoney);
+                        deviceDayFee.setBrokerage(brokerage);
+                        deviceDayFee.setMercId(mercId);
+                        deviceDayFee.setParentMercId(parentMercId);
+                        saveMercFeeCountList.add(deviceDayFee);
+                    }
+                    return R.ok(saveMercFeeCountList);
+                } else {
+                    // 没有费用的也要记录,为了前端收益概览的展示
+                    List<MercFeeCountDay> saveMercFeeCountList = new ArrayList<>();
+                    for (Long mercId : mercIds) {
+
+                        MercFeeCountDay deviceDayFee = new MercFeeCountDay();
+                        deviceDayFee.setFeeType(EnumMercFeeType.T4.getIntCode());
+                        deviceDayFee.setParentMercId(parentMercId);
+                        deviceDayFee.setDateValue(dateValue);
+                        deviceDayFee.setPayMoney(0);
+                        deviceDayFee.setMonthValue(Integer.valueOf(monthValue));
+                        deviceDayFee.setBrokerage(0);
+                        deviceDayFee.setMercId(mercId);
+                        deviceDayFee.setParentMercId(parentMercId);
+                        saveMercFeeCountList.add(deviceDayFee);
+                    }
+                    return R.ok(saveMercFeeCountList);
+                }
+
+            }
+        }
+        return R.ok();
+    }
+
 
     @PostMapping("excuteJob")
     @ApiOperation("指定日期执行")

+ 1 - 0
device-api/src/main/java/com/xy/dto/MercFeeCountDayDto.java

@@ -25,6 +25,7 @@ public class MercFeeCountDayDto {
         @NotBlank(message = "日期不可为空yyyyMMdd")
         @ApiModelProperty(value = "分页对象", required = true)
         private String date;
+        private Integer type;
     }
 
     @Data