Răsfoiți Sursa

财务管理-支出管理-流量卡费明细

tanbin 1 an în urmă
părinte
comite
9d0b6ce44e

+ 24 - 0
device-api-service-merc-mini/src/main/java/com/xy/controller/DeviceSimChargeController.java

@@ -54,6 +54,30 @@ public class DeviceSimChargeController {
         return deviceSimService.page(page);
     }
 
+    @PostMapping("mySpendPage")
+    @ApiOperation("财务管理-支出管理-流量卡费明细")
+    public R<PageBean<DeviceSimChargeDto.MySpendPageVO>> mySpendPage(@RequestBody @Validated DeviceSimChargeDto.PageByTopMerc page) {
+        page.setCurMercId(MercAuthUtils.getMercId());
+        return deviceSimChargeService.mySpendPage(page);
+    }
+
+    @PostMapping("mySpendPageCount")
+    @ApiOperation("财务管理-支出管理-流量卡费统计")
+    public R<Integer> mySpendPageCount(@RequestBody @Validated DeviceSimChargeDto.PageByTopMerc page) {
+        page.getPage().setSize(-1);
+        page.setCurMercId(MercAuthUtils.getMercId());
+        PageBean<DeviceSimChargeDto.MySpendPageVO> pageVoPageBean = R.feignCheckData(deviceSimChargeService.mySpendPage(page));
+        List<DeviceSimChargeDto.MySpendPageVO> records = pageVoPageBean.getRecords();
+        int totaMoney = 0;
+        if (CollUtil.isNotEmpty(records)) {
+            for (DeviceSimChargeDto.MySpendPageVO r : records) {
+                totaMoney += r.getMoney();
+            }
+        }
+        return R.ok(totaMoney);
+    }
+
+
     @PostMapping("pageByTopMerc")
     @ApiOperation("加盟商-服务费管理-流量卡费明细")
     public R<PageBean<DeviceSimChargeDto.PageByTopMercVO>> pageByTopMerc(@RequestBody @Validated DeviceSimChargeDto.PageByTopMerc page) {

+ 68 - 0
device-api-service/src/main/java/com/xy/service/DeviceSimChargeServiceImpl.java

@@ -181,6 +181,74 @@ public class DeviceSimChargeServiceImpl extends ServiceImpl<DeviceSimChargeMappe
 
     }
 
+    /**
+     * 财务管理-支出管理-流量卡费明细
+     *
+     * @param page
+     * @return
+     */
+
+    public R<PageBean<DeviceSimChargeDto.MySpendPageVO>> mySpendPage(DeviceSimChargeDto.PageByTopMerc page) {
+        Long curMercId = page.getCurMercId();
+        List<Long> mercIds = new ArrayList<>();
+        //指定商户ID
+        mercIds.add(curMercId);
+        PageBean pageBean = page.getPage();
+        LambdaQueryWrapper<DeviceSimCharge> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceSimCharge.class)
+                .ge(DeviceSimCharge::getCreateTime, page.getBeginCreateTime())
+                .le(DeviceSimCharge::getCreateTime, page.getEndCreateTime())
+                .in(DeviceSimCharge::getMercId, mercIds)
+                .build()
+                .orderByDesc(!Emptys.check(pageBean.getOrders()), DeviceSimCharge::getCreateTime);
+        IPage<DeviceSimCharge> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
+        PageBean<DeviceSimChargeDto.MySpendPageVO> voPageBean = toPageBean(DeviceSimChargeDto.MySpendPageVO.class, iPage);
+        List<DeviceSimChargeDto.MySpendPageVO> records = voPageBean.getRecords();
+
+        if (Emptys.check(records)) {
+            copy(records)
+                    .target(() -> orderMercManageService.list(new OrderMercManageDto.SelectList().setId(new JArrayList<>(records).getProperty(DeviceSimChargeDto.MySpendPageVO::getOrderId))).getData()
+                            , DeviceSimChargeDto.MySpendPageVO::getOrderId, DeviceSimChargeDto.MySpendPageVO::getFiles, OrderMercManageDto.Vo::getId, OrderMercManageDto.Vo::getFiles
+                    ).target(() -> mercService.list(new MercDto.SelectList().setMercIds(new JArrayList<>(records).getProperty(DeviceSimChargeDto.MySpendPageVO::getMercId).comparing())).getData()
+                            , DeviceSimChargeDto.MySpendPageVO::getMercId, DeviceSimChargeDto.MySpendPageVO::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
+                    .builder();
+            List<String> simIds = records.stream().map(DeviceSimChargeDto.MySpendPageVO::getSimId).collect(Collectors.toList());
+            List<DeviceSim> deviceSims = deviceSimService.listByIds(simIds);
+            Map<String, DeviceSim> deviceSimMap = MapUtil.newHashMap();
+            if (CollUtil.isNotEmpty(deviceSims)) {
+                deviceSimMap = deviceSims.stream().collect(Collectors.toMap(DeviceSim::getId, ds -> ds));
+            }
+            Map<String, SysDictRedis> simConfig = SysDictUtils.get(EnumSimConfig.Code.CODE.getCode());
+
+            Integer value = Integer.valueOf(simConfig.get(EnumSimConfig.N_200.getCode()).getValue());
+
+            for (DeviceSimChargeDto.MySpendPageVO record : records) {
+                Long mercId = record.getMercId();
+                String simId = record.getSimId();
+                DeviceSim sim = deviceSimMap.get(simId);
+                //封装过期状态说明
+                if (Emptys.check(sim)) {
+                    LocalDateTime timeout = sim.getTimeout();
+                    if (timeout == null) {
+                        record.setTimeoutStatus("未初始化");
+                    } else {
+                        String timeoutStatus;
+                        long s = DataTime.diff(LocalDateTime.now(), timeout, "s");
+                        if (s <= 0) {
+                            timeoutStatus = "欠费(" + (~(s / 86400 - 1)) + "天)";
+                        } else {
+                            timeoutStatus = s <= value * 86400 ? "即将到期(" + s / 86400 + "天)" : "正常(" + s / 86400 + "天)";
+                        }
+                        record.setTimeoutStatus(timeoutStatus);
+                    }
+                    record.setTimeout(timeout);
+                }
+
+            }
+        }
+        return R.ok(voPageBean);
+
+    }
+
 
     @ApiOperation("月统计分页")
     @PostMapping("moonCountPage")

+ 60 - 0
device-api/src/main/java/com/xy/dto/DeviceSimChargeDto.java

@@ -99,6 +99,66 @@ public class DeviceSimChargeDto {
 
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class MySpendPageVO {
+
+        @ApiModelProperty(value = "过期时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime timeout;
+
+        @ApiModelProperty(value = "过期状态说明")
+        private String timeoutStatus;
+
+
+        @ApiModelProperty(value = "id")
+        private Long id;
+
+        @ApiModelProperty(value = "订单id")
+        private String orderId;
+
+        @ApiModelProperty(value = "流量卡id")
+        private String simId;
+
+        @ApiModelProperty(value = "商户id")
+        private Long mercId;
+
+        @ApiModelProperty(value = "金额")
+        private Integer money;
+
+        @ApiModelProperty(value = "代理商金额")
+        private Integer agentMoney;
+
+        @ApiModelProperty(value = "数量")
+        private Integer size;
+
+        @ApiModelProperty(value = "支付方式")
+        private Integer payType;
+
+        @ApiModelProperty(value = "状态")
+        private Integer status;
+
+        @ApiModelProperty(value = "备注")
+        private String note;
+
+        @ApiModelProperty(value = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
+
+        @ApiModelProperty(value = "更新时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime updateTime;
+
+        @ApiModelProperty(value = "附件")
+        private String files;
+
+        @ApiModelProperty(value = "商户名称")
+        private String mercName;
+
+
+    }
+
+
     @Data
     @Accessors(chain = true)
     public static class PageByTopMercVO {