Procházet zdrojové kódy

设备管理费改版

李进 před 1 rokem
rodič
revize
5033fca416

+ 52 - 0
device-api-service/src/main/java/com/xy/entity/DeviceChargingConfig.java

@@ -0,0 +1,52 @@
+package com.xy.entity;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 设备计费配置表
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-07-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="DeviceChargingConfig对象", description="设备计费配置表")
+public class DeviceChargingConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "商户编码")
+    private String mercCode;
+
+    @ApiModelProperty(value = "设备类型")
+    private Integer deviceType;
+
+    @ApiModelProperty(value = "赠送天数/预充金额")
+    private Integer values;
+
+    @ApiModelProperty(value = "类型")
+    private Integer type;
+
+    @ApiModelProperty(value = "备注")
+    private String note;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    private LocalDateTime updateTime;
+
+
+}

+ 16 - 0
device-api-service/src/main/java/com/xy/mapper/DeviceChargingConfigMapper.java

@@ -0,0 +1,16 @@
+package com.xy.mapper;
+
+import com.xy.entity.DeviceChargingConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 设备计费配置表 Mapper 接口
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-07-28
+ */
+public interface DeviceChargingConfigMapper extends BaseMapper<DeviceChargingConfig> {
+
+}

+ 15 - 0
device-api-service/src/main/java/com/xy/mapper/mapper/DeviceChargingConfigMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xy.mapper.DeviceChargingConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.xy.entity.DeviceChargingConfig">
+        <result column="id" property="id" />
+        <result column="merc_code" property="mercCode" />
+        <result column="day" property="day" />
+        <result column="note" property="note" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 1 - 1
device-api-service/src/main/java/com/xy/service/DeviceAlgorithmChargingServiceImpl.java

@@ -334,7 +334,7 @@ public class DeviceAlgorithmChargingServiceImpl extends ServiceImpl<DeviceAlgori
      *
      * @return
      */
-    private void getMercCodes(String mercCode, List<String> mercCodes) {
+    public void getMercCodes(String mercCode, List<String> mercCodes) {
         mercCodes.add(mercCode);
         int length = mercCode.length();
         if (length == 5) {

+ 78 - 0
device-api-service/src/main/java/com/xy/service/DeviceChargingConfigServiceImpl.java

@@ -0,0 +1,78 @@
+package com.xy.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yitter.idgen.YitIdHelper;
+import com.xy.dto.DeviceChargingConfigDto;
+import com.xy.dto.be.MercDto;
+import com.xy.entity.DeviceChargingConfig;
+import com.xy.mapper.DeviceChargingConfigMapper;
+import com.xy.service.be.MercService;
+import com.xy.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 设备计费配置表 服务实现类
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-07-28
+ */
+@Service
+@AllArgsConstructor
+@Api(tags = "设备计费配置表")
+public class DeviceChargingConfigServiceImpl extends ServiceImpl<DeviceChargingConfigMapper, DeviceChargingConfig> implements DeviceChargingConfigService {
+
+    private MercService mercService;
+
+    @PostMapping("saveOrUpdate")
+    @ApiModelProperty("添加或修改")
+    public R saveOrUpdate(@RequestBody @Validated DeviceChargingConfigDto.SaveOrUpdate saveOrUpdate) {
+        LocalDateTime now = LocalDateTime.now();
+        MercDto.Vo merc = mercService.obj(new MercDto.Vo().setId(saveOrUpdate.getMercId())).getData();
+        List<DeviceChargingConfigDto.SaveOrUpdate.Values> values = saveOrUpdate.getValues();
+        for (DeviceChargingConfigDto.SaveOrUpdate.Values value : values) {
+            LambdaQueryWrapper<DeviceChargingConfig> lambdaQueryWrapper = new LambdaQueryWrapper<DeviceChargingConfig>()
+                    .eq(DeviceChargingConfig::getMercCode, merc.getMercCode())
+                    .eq(DeviceChargingConfig::getDeviceType, saveOrUpdate.getDeviceType())
+                    .eq(DeviceChargingConfig::getType, value.getType());
+            DeviceChargingConfig deviceChargingConfig = getOne(lambdaQueryWrapper);
+            if (deviceChargingConfig == null) {
+                if (value.getValues() == -1) {
+                    continue;
+                }
+                deviceChargingConfig = new DeviceChargingConfig()
+                        .setId(YitIdHelper.nextId())
+                        .setMercCode(merc.getMercCode())
+                        .setDeviceType(saveOrUpdate.getDeviceType())
+                        .setValues(value.getValues())
+                        .setNote(saveOrUpdate.getNote())
+                        .setType(value.getType())
+                        .setCreateTime(now)
+                        .setUpdateTime(now);
+                save(deviceChargingConfig);
+            } else {
+                if (value.getValues() == -1) {
+                    removeById(deviceChargingConfig.getId());
+                    continue;
+                }
+                deviceChargingConfig.setValues(value.getValues())
+                        .setNote(saveOrUpdate.getNote())
+                        .setUpdateTime(now);
+                updateById(deviceChargingConfig);
+            }
+        }
+        return R.ok();
+    }
+}

+ 42 - 4
device-api-service/src/main/java/com/xy/service/DeviceChargingServiceImpl.java

@@ -54,6 +54,10 @@ public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper,
 
     private DeviceTypeAlgorithmBeforConfigServiceImpl deviceTypeAlgorithmBeforConfigService;
 
+    private DeviceChargingConfigServiceImpl deviceChargingConfigService;
+
+    private DeviceAlgorithmChargingServiceImpl deviceAlgorithmChargingService;
+
     @PostMapping("init")
     @ApiOperation("初始化")
     public R init() {
@@ -71,6 +75,13 @@ public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper,
         return R.ok();
     }
 
+    @PostMapping("del")
+    @ApiOperation("删除")
+    public R del(@RequestBody @Validated DeviceChargingDto.Del del) {
+        removeBatchByIds(del.getDeviceId());
+        return R.ok();
+    }
+
     @PostMapping("payCheck")
     @ApiOperation("购买反显")
     public R<DeviceChargingDto.PayCheckVo> payCheck(@RequestBody @Validated DeviceChargingDto.PayCheck payCheck) {
@@ -81,7 +92,18 @@ public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper,
         //封装设备信息
         DeviceChargingDto.PayCheckVo payCheckVo = new DeviceChargingDto.PayCheckVo();
         String deviceTypeName = SysDictUtils.get(EnumDeviceType.Code.CODE.getCode(), String.valueOf(deviceInfo.getDeviceType())).getMsg();
-        Integer standard = SysDictUtils.getValue(EnumDeviceCharging.Code.CODE.getCode(), String.valueOf(deviceInfo.getDeviceType()), Integer.class);
+        //查询设备计费配置表
+        List<String> mercCodes = new ArrayList<>();
+        deviceAlgorithmChargingService.getMercCodes(deviceInfo.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, deviceInfo.getDeviceType())
+                .orderByDesc(DeviceChargingConfig::getMercCode)
+        );
+        //有则使用,无则使用默认字典
+        int standard = Emptys.check(deviceChargingConfigs) ? deviceChargingConfigs.get(0).getValues()
+                : SysDictUtils.getValue(EnumDeviceCharging.Code.CODE.getCode(), String.valueOf(deviceInfo.getDeviceType()), Integer.class);
         DeviceChargingDto.PayCheckVo.DeviceInfo deviceInfoObj = Beans.copy(Beans.copy(DeviceChargingDto.PayCheckVo.DeviceInfo.class, deviceInfo), deviceInfo.getDeviceStatus())
                 .setDeviceTypeName(deviceTypeName)
                 .setStandard(BigDecimal.valueOf(standard).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_DOWN).doubleValue() + "元/年")
@@ -119,14 +141,30 @@ public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper,
     public R check(@RequestBody @Validated DeviceChargingDto.Check check) {
         LocalDateTime now = LocalDateTime.now();
         DeviceCharging deviceCharging = getById(check.getDeviceId());
+        //不存在则新增
         if (deviceCharging == null) {
-            save(new DeviceCharging()
+            //查询设备计费配置表
+            DeviceInfoDto.Vo deviceInfo = deviceInfoService.obj(new DeviceInfoDto.Obj().setDeviceId(check.getDeviceId())).getData();
+            List<String> mercCodes = new ArrayList<>();
+            deviceAlgorithmChargingService.getMercCodes(deviceInfo.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_1.getCode(), Integer.class))
+                    .eq(DeviceChargingConfig::getDeviceType, deviceInfo.getDeviceType())
+                    .orderByDesc(DeviceChargingConfig::getMercCode)
+            );
+            //有则使用,无则使用默认字典
+            int chargingX = Emptys.check(deviceChargingConfigs) ? deviceChargingConfigs.get(0).getValues()
+                    : SysDictUtils.getValue(EnumDeviceCharging.Code.CODE.getCode(), EnumDeviceCharging.N_X.getCode(), Integer.class);
+            //新增
+            deviceCharging = new DeviceCharging()
                     .setDeviceId(check.getDeviceId())
                     .setTimeout(now)
                     .setCreateTime(now)
-            );
-            return R.fail(R.Enum.CHARGING.getCode(), R.Enum.CHARGING.getMsg());
+                    .setChargingX(chargingX);
+            save(deviceCharging);
         }
+        //验证管理费天数和过期时间
         int contrast = DataTime.stringContrast(DataTime.toString(deviceCharging.getTimeout()), DataTime.toString(now));
         if (deviceCharging.getChargingX() == 0 && contrast <= 0) {
             return R.fail(R.Enum.CHARGING.getCode(), R.Enum.CHARGING.getMsg());

+ 86 - 0
device-api/src/main/java/com/xy/dto/DeviceChargingConfigDto.java

@@ -0,0 +1,86 @@
+package com.xy.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 设备计费配置表
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-07-28
+ */
+public class DeviceChargingConfigDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class SaveOrUpdate extends Vo {
+
+        @NotNull(message = "mercId不能为空")
+        @ApiModelProperty(value = "商户id", required = true)
+        private Long mercId;
+
+        @NotNull(message = "deviceType不能为空")
+        @ApiModelProperty(value = "设备类型", required = true)
+        private Integer deviceType;
+
+        @NotEmpty(message = "values不能为空")
+        @ApiModelProperty(value = "参数值", required = true)
+        private List<Values> values;
+
+        @Data
+        @Accessors(chain = true)
+        public static class Values {
+
+            @NotNull(message = "type不能为空")
+            @ApiModelProperty(value = "类型", required = true)
+            private Integer type;
+
+            @NotNull(message = "values不能为空")
+            @ApiModelProperty(value = "赠送天数/预充金额", required = true)
+            private Integer values;
+        }
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Vo {
+
+        @ApiModelProperty(value = "id")
+        private Long id;
+
+        @ApiModelProperty(value = "商户编码")
+        private String mercCode;
+
+        @ApiModelProperty(value = "设备类型")
+        private Integer deviceType;
+
+        @ApiModelProperty(value = "赠送天数/预充金额")
+        private Integer values;
+
+        @ApiModelProperty(value = "备注")
+        private String note;
+
+        @ApiModelProperty(value = "类型")
+        private Integer type;
+
+        @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;
+
+
+    }
+
+}

+ 9 - 0
device-api/src/main/java/com/xy/dto/DeviceChargingDto.java

@@ -22,6 +22,15 @@ import java.util.List;
  */
 public class DeviceChargingDto {
 
+    @Data
+    @Accessors(chain = true)
+    public static class Del {
+
+        @NotEmpty(message = "设备id不能为空")
+        @ApiModelProperty(value = "设备id")
+        private List<Long> deviceId;
+    }
+
     @Data
     @Accessors(chain = true)
     public static class Check {

+ 16 - 0
device-api/src/main/java/com/xy/service/DeviceChargingConfigService.java

@@ -0,0 +1,16 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+
+/**
+ * <p>
+ * 设备计费配置表 服务类
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-07-28
+ */
+@RestMappingController("/device-charging-config")
+public interface DeviceChargingConfigService {
+
+}