소스 검색

财务管理-支出管理-设备管理费

tanbin 1 년 전
부모
커밋
7895f4adf3

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

@@ -24,4 +24,6 @@ public class DeviceChargingController {
     public R<PageBean<DeviceChargingDto.PageVo>> page(@RequestBody DeviceChargingDto.Page page) {
         return deviceChargingService.page(page.setMercId(MercAuthUtils.getMercId()));
     }
+
+
 }

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

@@ -35,6 +35,13 @@ public class DeviceChargingHistoryController {
         return deviceChargingHistoryService.page(page);
     }
 
+    @PostMapping("mySpendPage")
+    @ApiOperation("财务管理-支出管理-设备管理费")
+    public R<PageBean<DeviceChargingHistoryDto.MySpendPageVO>> mySpendPage(@RequestBody DeviceChargingHistoryDto.PageByTopMerc page) {
+        page.setCurMercId(MercAuthUtils.getMercId());
+        return deviceChargingHistoryService.mySpendPage(page);
+    }
+
     @PostMapping("pageByTopMerc")
     @ApiOperation("加盟商-服务费管理-设备管理费")
     public R<PageBean<DeviceChargingHistoryDto.PageVo>> pageByTopMerc(@RequestBody @Validated DeviceChargingHistoryDto.PageByTopMerc page) {

+ 56 - 0
device-api-service/src/main/java/com/xy/service/DeviceChargingHistoryServiceImpl.java

@@ -190,6 +190,62 @@ public class DeviceChargingHistoryServiceImpl extends ServiceImpl<DeviceCharging
         return R.ok(pageBean);
     }
 
+    public R<PageBean<DeviceChargingHistoryDto.MySpendPageVO>> mySpendPage(DeviceChargingHistoryDto.PageByTopMerc page) {
+        Long curMercId = page.getCurMercId();
+        List<Long> mercIds = new ArrayList<>();
+        //指定商户ID
+        mercIds.add(curMercId);
+        LambdaQueryWrapper<DeviceChargingHistory> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceChargingHistory.class)
+                .ge(DeviceChargingHistory::getCreateTime, page.getBeginCreateTime())
+                .le(DeviceChargingHistory::getCreateTime, page.getEndCreateTime())
+                .in(DeviceChargingHistory::getMercId, mercIds)
+                .build()
+                .orderByDesc(DeviceChargingHistory::getCreateTime);
+        IPage<DeviceChargingHistory> iPage = page(PlusBeans.toIPage(page.getPage()), lambdaQueryWrapper);
+        PageBean<DeviceChargingHistoryDto.MySpendPageVO> pageBean = toPageBean(DeviceChargingHistoryDto.MySpendPageVO.class, iPage);
+        List<DeviceChargingHistoryDto.MySpendPageVO> records = pageBean.getRecords();
+        if (Emptys.check(records)) {
+            copy(records)
+                    .target(() -> orderMercManageService.list(new OrderMercManageDto.SelectList().setId(new JArrayList<>(records).getProperty(DeviceChargingHistoryDto.MySpendPageVO::getOrderId))).getData()
+                            , DeviceChargingHistoryDto.MySpendPageVO::getOrderId, DeviceChargingHistoryDto.MySpendPageVO::getFiles, OrderMercManageDto.Vo::getId, OrderMercManageDto.Vo::getFiles
+                    )
+                    .target(() -> mercService.list(new MercDto.SelectList().setMercIds(new JArrayList<>(records).getProperty(DeviceChargingHistoryDto.MySpendPageVO::getMercId).comparing())).getData(),
+                            DeviceChargingHistoryDto.MySpendPageVO::getMercId, DeviceChargingHistoryDto.MySpendPageVO::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
+                    .builder();
+            List<Long> deviceIds = records.stream().map(DeviceChargingHistoryDto.MySpendPageVO::getDeviceId).distinct().collect(Collectors.toList());
+ 
+            List<DeviceCharging> deviceChargings = deviceChargingService.listByIds(deviceIds);
+            Map<Long, DeviceCharging> deviceChargingMap = MapUtil.newHashMap();
+            if (CollUtil.isNotEmpty(deviceChargings)) {
+                deviceChargingMap = deviceChargings.stream().collect(Collectors.toMap(DeviceCharging::getDeviceId, d -> d));
+            }
+            for (DeviceChargingHistoryDto.MySpendPageVO record : records) {
+                Long deviceId = record.getDeviceId();
+                //封装过期状态说明
+                String timeoutStatus;
+                DeviceCharging dc = deviceChargingMap.get(deviceId);
+                if (dc != null) {
+                    Integer value = SysDictUtils.getValue(EnumDeviceCharging.Code.CODE.getCode(), EnumDeviceCharging.N_200.getCode(), Integer.class);
+
+                    LocalDateTime timeout = dc.getTimeout();
+                    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);
+                }
+            }
+            pageBean.setRecords(records);
+
+        }
+        return R.ok(pageBean);
+    }
+
 
     @ApiOperation("月统计分页")
     @PostMapping("moonCountPage")

+ 62 - 0
device-api/src/main/java/com/xy/dto/DeviceChargingHistoryDto.java

@@ -24,6 +24,67 @@ import java.util.List;
  * @since 2023-04-14
  */
 public class DeviceChargingHistoryDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class MySpendPageVO {
+
+        @ApiModelProperty(value = "id")
+        private Long id;
+
+        @ApiModelProperty(value = "商户id")
+        private Long mercId;
+
+        @ApiModelProperty(value = "订单id")
+        private String orderId;
+
+        @ApiModelProperty(value = "设备id")
+        private Long deviceId;
+
+        @ApiModelProperty(value = "续费金额")
+        private Integer chargingMoney;
+
+        @ApiModelProperty(value = "佣金")
+        private Integer agentMoney;
+
+        @ApiModelProperty(value = "续费数量")
+        private Integer chargingSize;
+
+        @ApiModelProperty(value = "续费方式")
+        private Integer chargingType;
+
+        @ApiModelProperty(value = "状态")
+        private Integer status;
+
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        @ApiModelProperty(value = "创建时间")
+        private LocalDateTime createTime;
+
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        @ApiModelProperty(value = "更新时间")
+        private LocalDateTime updateTime;
+
+        @ApiModelProperty(value = "备注")
+        private String note;
+
+        @ApiModelProperty(value = "附件")
+        private String files;
+
+        @ApiModelProperty(value = "商户名称")
+        private String mercName;
+
+
+        @ApiModelProperty(value = "过期时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime timeout;
+
+        @ApiModelProperty(value = "过期状态说明")
+        private String timeoutStatus;
+
+
+    }
+
+
     @Data
     @Accessors(chain = true)
     public static class PageVo {
@@ -83,6 +144,7 @@ public class DeviceChargingHistoryDto {
 
     }
 
+
     @Data
     @Accessors(chain = true)
     public static class PageExcelVo {