Bladeren bron

商管端-顶级商户设备激活明细查询

tanbin 1 jaar geleden
bovenliggende
commit
1d981a808f

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

@@ -0,0 +1,32 @@
+package com.xy.controller;
+
+import com.xy.annotate.RestMappingController;
+import com.xy.dto.DeviceAlgorithmChargingDto;
+import com.xy.dto.DeviceAlgorithmChargingHistoryDto;
+import com.xy.dto.DeviceSimChargeDto;
+import com.xy.service.DeviceAlgorithmChargingHistoryServiceImpl;
+import com.xy.service.DeviceAlgorithmChargingServiceImpl;
+import com.xy.utils.MercAuthUtils;
+import com.xy.utils.PageBean;
+import com.xy.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@AllArgsConstructor
+@Api(tags = "小程序-设备算法计费表")
+@RestMappingController("merc-mini/deviceAlgorithmChargingHis")
+public class DeviceAlgorithmChargingHisController {
+
+    private DeviceAlgorithmChargingHistoryServiceImpl deviceAlgorithmChargingHistoryService;
+
+    @PostMapping("pageByTopMerc")
+    @ApiOperation("商管端-顶级商户设备激活明细查询")
+    public R<PageBean<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO>> pageByTopMerc(@RequestBody @Validated DeviceAlgorithmChargingHistoryDto.PageByTopMerc page) {
+        page.setCurMercId(MercAuthUtils.getMercId());
+        return deviceAlgorithmChargingHistoryService.pageByTopMerc(page);
+    }
+}

+ 88 - 3
device-api-service/src/main/java/com/xy/service/DeviceAlgorithmChargingHistoryServiceImpl.java

@@ -1,13 +1,17 @@
 package com.xy.service;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.map.MapUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.collections.list.JArrayList;
-import com.xy.dto.DeviceAlgorithmChargingHistoryDto;
-import com.xy.dto.OrderMercManageDto;
+import com.xy.dto.*;
+import com.xy.dto.be.MercDto;
 import com.xy.entity.DeviceAlgorithmChargingHistory;
+import com.xy.entity.DeviceSimCharge;
 import com.xy.mapper.DeviceAlgorithmChargingHistoryMapper;
+import com.xy.service.be.MercService;
 import com.xy.utils.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -15,9 +19,13 @@ import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 import static com.xy.utils.Beans.copy;
+import static com.xy.utils.PlusBeans.toIPage;
 import static com.xy.utils.PlusBeans.toPageBean;
 
 /**
@@ -34,6 +42,9 @@ import static com.xy.utils.PlusBeans.toPageBean;
 public class DeviceAlgorithmChargingHistoryServiceImpl extends ServiceImpl<DeviceAlgorithmChargingHistoryMapper, DeviceAlgorithmChargingHistory> implements DeviceAlgorithmChargingHistoryService {
 
     private OrderMercManageService orderMercManageService;
+    private MercService mercService;
+    private DeviceTypeAlgorithmBeforConfigServiceImpl deviceTypeAlgorithmBeforConfigService;
+    private DeviceInfoService deviceInfoService;
 
     @Override
     @ApiOperation("分页查询")
@@ -50,4 +61,78 @@ public class DeviceAlgorithmChargingHistoryServiceImpl extends ServiceImpl<Devic
         }
         return R.ok(pageBean);
     }
-}
+
+    public R<PageBean<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO>> pageByTopMerc(DeviceAlgorithmChargingHistoryDto.PageByTopMerc page) {
+        Long curMercId = page.getCurMercId();
+        Long chooseMercId = page.getChooseMercId();
+        List<Long> mercIds = new ArrayList<>();
+        if (chooseMercId == null) {
+            mercIds = R.feignCheckData(mercService.getAllSubMercIds(new MercDto.QuerySubDTO().setParentMercID(curMercId)));
+        } else {
+            //指定商户ID
+            mercIds.add(chooseMercId);
+        }
+        PageBean pageBean = page.getPage();
+        LambdaQueryWrapper<DeviceAlgorithmChargingHistory> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceAlgorithmChargingHistory.class)
+                .ge(DeviceAlgorithmChargingHistory::getCreateTime, page.getBeginCreateTime())
+                .le(DeviceAlgorithmChargingHistory::getCreateTime, page.getEndCreateTime())
+                .in(DeviceAlgorithmChargingHistory::getMercId, mercIds)
+                .build()
+                .orderByDesc(!Emptys.check(pageBean.getOrders()), DeviceAlgorithmChargingHistory::getCreateTime);
+        IPage<DeviceAlgorithmChargingHistory> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
+        PageBean<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO> voPageBean = toPageBean(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO.class, iPage);
+        List<DeviceAlgorithmChargingHistoryDto.PageByTopMercVO> records = voPageBean.getRecords();
+        if (Emptys.check(records)) {
+            DeviceTypeAlgorithmBeforConfigDto.DeviceActiveFeeVO deviceActiveFeeVO = R.feignCheckData(deviceTypeAlgorithmBeforConfigService.deviceActiveFeeList(new DeviceTypeAlgorithmBeforConfigDto.DeviceActiveFeeDTO().setMercId(curMercId)
+            ));
+            List<DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO> deviceActiveMercFees = deviceActiveFeeVO.getDeviceActiveMercFees();
+            Map<String, DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO> dafMap = MapUtil.newHashMap();
+            if (CollUtil.isNotEmpty(deviceActiveMercFees)) {
+                for (DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO daf : deviceActiveMercFees) {
+                    Long algorithmId = daf.getAlgorithmId();
+                    Integer deviceType = daf.getDeviceType();
+                    String key = algorithmId + String.valueOf(deviceType);
+                    DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO deviceActiveMercFeeVO = dafMap.get(key);
+                    if (deviceActiveMercFeeVO == null) {
+                        dafMap.put(key, daf);
+                    }
+                }
+            }
+            List<Long> deviceIds = records.stream().map(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getDeviceId).distinct().collect(Collectors.toList());
+
+            List<DeviceInfoDto.Vo> deviceList = R.feignCheckData(deviceInfoService.listCommon(new DeviceInfoDto.ListCommon().setDeviceIds(deviceIds)));
+            Map<Long, DeviceInfoDto.Vo> devcieMap = deviceList.stream().collect(Collectors.toMap(DeviceInfoDto.Vo::getDeviceId, d -> d));
+            copy(records)
+                    .target(() -> orderMercManageService.list(new OrderMercManageDto.SelectList().setId(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getOrderId))).getData()
+                            , DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getOrderId, DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getFiles, OrderMercManageDto.Vo::getId, OrderMercManageDto.Vo::getFiles
+                    ).target(() -> mercService.list(new MercDto.SelectList().setMercIds(new JArrayList<>(records).getProperty(DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercId).comparing())).getData()
+                            , DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercId, DeviceAlgorithmChargingHistoryDto.PageByTopMercVO::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
+                    .builder();
+            for (DeviceAlgorithmChargingHistoryDto.PageByTopMercVO record : records) {
+                //初始0 代理商费用
+                int extraMoney = 0;
+                record.setAgentMoney(extraMoney);
+                Long algorithmId = record.getAlgorithmId();
+                Long deviceId = record.getDeviceId();
+                DeviceInfoDto.Vo device = devcieMap.get(deviceId);
+                if (device != null) {
+                    String key = algorithmId + String.valueOf(device.getDeviceType());
+                    DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO deviceActiveMercFeeVO = dafMap.get(key);
+                    if (deviceActiveMercFeeVO != null) {
+                        extraMoney = deviceActiveMercFeeVO.getExtraMoney();
+                    }
+                }
+
+                Integer money = record.getChargingMoney();
+                //反显代理商金额
+                if (money != null && extraMoney > money) {
+                    //扩展金额比实缴金额还大?
+                    extraMoney = 0;
+                }
+                record.setAgentMoney(extraMoney);
+            }
+        }
+        return R.ok(voPageBean);
+
+    }
+}

+ 115 - 0
device-api/src/main/java/com/xy/dto/DeviceAlgorithmChargingHistoryDto.java

@@ -28,6 +28,121 @@ public class DeviceAlgorithmChargingHistoryDto {
 
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class PageByTopMercVO {
+
+
+        @ApiModelProperty(value = "代理商金额")
+        private Integer agentMoney;
+
+        @ApiModelProperty(value = "id")
+        private Long id;
+
+        @ApiModelProperty(value = "商户id")
+        private Long mercId;
+        @ApiModelProperty(value = "商户名称")
+        private String mercName;
+        @ApiModelProperty(value = "订单id")
+        private String orderId;
+
+        @ApiModelProperty(value = "设备id")
+        private Long deviceId;
+
+        @ApiModelProperty(value = "算法id")
+        private Long algorithmId;
+
+        @ApiModelProperty(value = "名称")
+        private String name;
+
+        @ApiModelProperty(value = "充值金额")
+        private Integer chargingMoney;
+
+        @ApiModelProperty(value = "充值数量")
+        private Integer chargingSize;
+
+        @ApiModelProperty(value = "充值方式")
+        private Integer chargingType;
+
+        @ApiModelProperty(value = "状态")
+        private Integer status;
+
+        @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 note;
+
+        @ApiModelProperty(value = "附件")
+        private String files;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class PageByTopMerc {
+
+        @ApiModelProperty("分页对象")
+        private PageBean page;
+
+        @ApiModelProperty(value = "创建时间-起")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime beginCreateTime;
+
+        @ApiModelProperty(value = "创建时间-始")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime endCreateTime;
+
+
+        @ApiModelProperty(value = "商户id")
+        private Long curMercId;
+
+        @ApiModelProperty(value = "指定商户id")
+        private Long chooseMercId;
+
+        @ApiModelProperty(value = "id")
+        private Long id;
+
+
+        @ApiModelProperty(value = "订单id")
+        private String orderId;
+
+        @ApiModelProperty(value = "设备id")
+        private Long deviceId;
+
+        @ApiModelProperty(value = "算法id")
+        private Long algorithmId;
+
+        @ApiModelProperty(value = "名称")
+        private String name;
+
+        @ApiModelProperty(value = "充值金额")
+        private Integer chargingMoney;
+
+        @ApiModelProperty(value = "充值数量")
+        private Integer chargingSize;
+
+        @ApiModelProperty(value = "充值方式")
+        private Integer chargingType;
+
+        @ApiModelProperty(value = "状态")
+        private Integer status;
+
+
+        @ApiModelProperty(value = "备注")
+        private String note;
+
+        @ApiModelProperty(value = "附件")
+        private String files;
+
+
+    }
+
     @Data
     @Accessors(chain = true)
     public static class Vo {