Browse Source

购买反显+代理商额外收取

tanbin 1 year ago
parent
commit
fe4717d059

+ 24 - 7
device-api-service/src/main/java/com/xy/service/DeviceChargingServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.collections.list.JArrayList;
 import com.xy.collections.list.JList;
@@ -67,6 +68,8 @@ public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper,
 
     private AlipayDeviceService alipayDeviceService;
 
+    private MercFeeConfigAlgorithmTypeServiceImpl mercFeeConfigAlgorithmTypeService;
+
     @PostMapping("del")
     @ApiOperation("删除")
     public R del(@RequestBody @Validated DeviceChargingDto.Del del) {
@@ -95,22 +98,22 @@ public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper,
         JMap<Long, DeviceStatus> deviceStatusesJMaps = new JArrayList<>(deviceStatuses).toMap(DeviceStatus::getDeviceId).cover();
         List<String> mercCodes = new ArrayList<>();
         deviceAlgorithmChargingService.getMercCodes(list.get(0).getMercCode(), mercCodes);
-        //查询设备计费配置表
+        //查询设备计费配置表  设备管理费
         List<DeviceChargingConfig> deviceChargingConfigs = deviceChargingConfigService.list(new LambdaQueryWrapper<DeviceChargingConfig>()
                 .in(DeviceChargingConfig::getMercCode, mercCodes)
                 .eq(DeviceChargingConfig::getType, SysDictUtils.getValue(EnumDeviceChargingConfigType.Code.CODE.getCode(), EnumDeviceChargingConfigType.N_2.getCode(), Integer.class))
                 .eq(DeviceChargingConfig::getDeviceType, list.get(0).getDeviceType())
                 .orderByDesc(DeviceChargingConfig::getMercCode)
         );
-        //有则使用,无则使用默认字典
-        int standard = Emptys.check(deviceChargingConfigs) ? deviceChargingConfigs.get(0).getConfigValue()
+        //有则使用,无则使用默认字典 设备管理费+代理商费用getExtraMoney
+        int standard = Emptys.check(deviceChargingConfigs) ? (deviceChargingConfigs.get(0).getConfigValue() + deviceChargingConfigs.get(0).getExtraMoney())
                 : SysDictUtils.getValue(EnumDeviceCharging.Code.CODE.getCode(), String.valueOf(list.get(0).getDeviceType()), Integer.class);
         String deviceTypeName = SysDictUtils.get(EnumDeviceType.Code.CODE.getCode(), String.valueOf(list.get(0).getDeviceType())).getMsg();
-        //查询算法预充配置
+        //查询算法预充配置  设备激活
         JList<DeviceInfo> values = cover.getValues();
         List<DeviceTypeAlgorithmBeforConfig> deviceTypeAlgorithmBeforConfigs = deviceTypeAlgorithmBeforConfigService.list(new LambdaQueryWrapper<DeviceTypeAlgorithmBeforConfig>()
                 .eq(DeviceTypeAlgorithmBeforConfig::getDeviceType, list.get(0).getDeviceType())
-                .eq(DeviceTypeAlgorithmBeforConfig::getMercId, list.get(0).getMercId())
+                .in(DeviceTypeAlgorithmBeforConfig::getMercCode, mercCodes)
                 .in(DeviceTypeAlgorithmBeforConfig::getAlgorithmId, values.getProperty(DeviceInfo::getAlgorithmId))
         );
         JMap<Long, DeviceTypeAlgorithmBeforConfig> deviceTypeAlgorithmBeforConfigsJMaps = Emptys.check(deviceTypeAlgorithmBeforConfigs) ? new JArrayList<>(deviceTypeAlgorithmBeforConfigs).toMap(DeviceTypeAlgorithmBeforConfig::getAlgorithmId).cover()
@@ -129,6 +132,14 @@ public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper,
                 algorithmPayConfigMap.put(algorithmId, algorithmPayConfig.getValue());
             }
         }
+        //算法计费自定义
+        List<MercFeeConfigAlgorithmType> mercFeeConfigAlgorithmTypes = mercFeeConfigAlgorithmTypeService.list(Wrappers.<MercFeeConfigAlgorithmType>lambdaQuery()
+                .in(MercFeeConfigAlgorithmType::getMercCode, mercCodes)
+                .in(MercFeeConfigAlgorithmType::getAlgorithmId, algorithmIds)
+        );
+        JMap<Long, MercFeeConfigAlgorithmType> mercFeeConfigAlgorithmTypesJMaps = Emptys.check(mercFeeConfigAlgorithmTypes) ? new JArrayList<>(mercFeeConfigAlgorithmTypes).toMap(MercFeeConfigAlgorithmType::getAlgorithmId).cover()
+                : new JHashMap<>();
+
         for (DeviceInfo deviceInfo : list) {
             //封装设备信息
             DeviceChargingDto.PayCheckVo payCheckVo = new DeviceChargingDto.PayCheckVo();
@@ -143,12 +154,18 @@ public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper,
             String algorithmPayConfig = algorithmPayConfigMap.get(deviceInfo.getAlgorithmId());
             DeviceAlgorithmChargingDto.AlgorithmMoonConfig algorithmMoonConfig = JSONUtil.parseObj(algorithmPayConfig).toBean(DeviceAlgorithmChargingDto.AlgorithmMoonConfig.class);
             DeviceAlgorithmChargingDto.AlgorithmMoonConfig.Inf inf = algorithmMoonConfig.getInf();
+            //算法计费自定义
+            MercFeeConfigAlgorithmType mercFeeConfigAlgorithmType = mercFeeConfigAlgorithmTypesJMaps.get(deviceInfo.getAlgorithmId());
+            //单笔算法费用 代理商额外收取
+            int extraSingleMoney = mercFeeConfigAlgorithmType == null ? 0 : mercFeeConfigAlgorithmType.getExtraSingleMoney();
             DeviceChargingDto.PayCheckVo.DeviceAlgorithmCharging infDeviceAlgorithmCharging = Beans.copy(DeviceChargingDto.PayCheckVo.DeviceAlgorithmCharging.class, deviceInfo)
                     .setDeviceTypeName(deviceTypeName)
                     .setAlgorithmId(deviceInfo.getAlgorithmId())
                     .setAlgorithmName(algorithmName)
-                    .setStandard(BigDecimal.valueOf(algorithmMoonConfig.getPrice()).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_DOWN).doubleValue() + "元/每笔(" + inf.getSize() + "笔)")
-                    .setMoney(deviceTypeAlgorithmBeforConfig == null ? inf.getMoney() : deviceTypeAlgorithmBeforConfig.getMoney());
+                    //算法计费标准
+                    .setStandard(BigDecimal.valueOf(algorithmMoonConfig.getPrice() + extraSingleMoney).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_DOWN).doubleValue() + "元/每笔(" + inf.getSize() + "笔)")
+                    //设备激活 代理商费用 deviceTypeAlgorithmBeforConfig.getExtraMoney()
+                    .setMoney(deviceTypeAlgorithmBeforConfig == null ? inf.getMoney() : deviceTypeAlgorithmBeforConfig.getMoney() + deviceTypeAlgorithmBeforConfig.getExtraMoney());
             //封装算法包月信息
             DeviceAlgorithmChargingDto.AlgorithmMoonConfig.Moon moon = algorithmMoonConfig.getMoon();
             DeviceChargingDto.PayCheckVo.DeviceAlgorithmCharging moonDeviceAlgorithmCharging = Beans.copy(DeviceChargingDto.PayCheckVo.DeviceAlgorithmCharging.class, deviceInfo)