Răsfoiți Sursa

管理员设备激活

李进 1 an în urmă
părinte
comite
4bc6c07448

+ 19 - 0
device-api-cloud/src/main/java/com/xy/feign/DeviceAdminActivateFeign.java

@@ -0,0 +1,19 @@
+package com.xy.feign;
+
+import com.xy.service.DeviceAdminActivateService;
+import com.xy.FeignInterceptor;
+import com.xy.consts.ServiceConsts;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * <p>
+ * 管理员设备激活记录表 feign
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-11-17
+ */
+@FeignClient(value = ServiceConsts.SERVICE_NAME, configuration = FeignInterceptor.class)
+public interface DeviceAdminActivateFeign extends DeviceAdminActivateService {
+
+}

+ 57 - 0
device-api-service/src/main/java/com/xy/entity/DeviceAdminActivate.java

@@ -0,0 +1,57 @@
+package com.xy.entity;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+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-11-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="DeviceAdminActivate对象", description="管理员设备激活记录表")
+public class DeviceAdminActivate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId
+    private Long id;
+
+    @ApiModelProperty(value = "商户id")
+    private Long mercId;
+
+    @ApiModelProperty(value = "设备id")
+    private Long deviceId;
+
+    @ApiModelProperty(value = "设备类型")
+    private Integer deviceType;
+
+    @ApiModelProperty(value = "批次号")
+    private String batchNo;
+
+    @ApiModelProperty(value = "备注")
+    private String note;
+
+    @ApiModelProperty(value = "附件地址")
+    private String filePath;
+
+    @ApiModelProperty(value = "操作人")
+    private Long createUser;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+
+}

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

@@ -0,0 +1,16 @@
+package com.xy.mapper;
+
+import com.xy.entity.DeviceAdminActivate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 管理员设备激活记录表 Mapper 接口
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-11-17
+ */
+public interface DeviceAdminActivateMapper extends BaseMapper<DeviceAdminActivate> {
+
+}

+ 17 - 0
device-api-service/src/main/java/com/xy/mapper/mapper/DeviceAdminActivateMapper.xml

@@ -0,0 +1,17 @@
+<?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.DeviceAdminActivateMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.xy.entity.DeviceAdminActivate">
+        <id column="id" property="id" />
+        <result column="merc_id" property="mercId" />
+        <result column="device_id" property="deviceId" />
+        <result column="device_type" property="deviceType" />
+        <result column="note" property="note" />
+        <result column="file_path" property="filePath" />
+        <result column="create_user" property="createUser" />
+        <result column="create_time" property="createTime" />
+    </resultMap>
+
+</mapper>

+ 149 - 0
device-api-service/src/main/java/com/xy/service/DeviceAdminActivateServiceImpl.java

@@ -0,0 +1,149 @@
+package com.xy.service;
+
+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.github.yitter.idgen.YitIdHelper;
+import com.xy.collections.list.JArrayList;
+import com.xy.collections.list.JList;
+import com.xy.device.EnumDeviceActiveStatus;
+import com.xy.device.EnumDeviceAlgorithmChargingType;
+import com.xy.device.EnumDeviceBusyStatus;
+import com.xy.dto.DeviceAdminActivateDto;
+import com.xy.dto.UserInfoDto;
+import com.xy.dto.be.MercDto;
+import com.xy.entity.DeviceAdminActivate;
+import com.xy.entity.DeviceAlgorithmCharging;
+import com.xy.entity.DeviceCharging;
+import com.xy.entity.DeviceInfo;
+import com.xy.mapper.DeviceAdminActivateMapper;
+import com.xy.service.be.MercService;
+import com.xy.utils.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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.ArrayList;
+import java.util.List;
+
+import static com.xy.utils.PlusBeans.toIPage;
+import static com.xy.utils.PlusBeans.toPageBean;
+
+
+/**
+ * <p>
+ * 管理员设备激活记录表 服务实现类
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-11-17
+ */
+@Service
+@AllArgsConstructor
+@Api(tags = "管理员设备激活记录表")
+public class DeviceAdminActivateServiceImpl extends ServiceImpl<DeviceAdminActivateMapper, DeviceAdminActivate> implements DeviceAdminActivateService {
+
+    private DeviceInfoServiceImpl deviceInfoService;
+
+    private DeviceChargingServiceImpl deviceChargingService;
+
+    private DeviceAlgorithmChargingServiceImpl deviceAlgorithmChargingService;
+
+    private MercService mercService;
+
+    private UserInfoService userInfoService;
+
+    @PostMapping("active")
+    @ApiOperation("激活设备")
+    public R active(@RequestBody @Validated DeviceAdminActivateDto.Active active) {
+        List<Long> deviceIds = active.getDeviceId();
+        List<DeviceInfo> list = deviceInfoService.list(new LambdaQueryWrapper<DeviceInfo>()
+                .in(DeviceInfo::getDeviceId, deviceIds)
+        );
+        JList<DeviceInfo> deviceInfos = new JArrayList<>(list);
+        LocalDateTime now = LocalDateTime.now();
+        Integer activeState = SysDictUtils.getValue(EnumDeviceActiveStatus.Code.CODE.getCode(), EnumDeviceActiveStatus.N_1.getCode(), Integer.class);
+        Integer busyState = SysDictUtils.getValue(EnumDeviceBusyStatus.Code.CODE.getCode(), EnumDeviceBusyStatus.N_1.getCode(), Integer.class);
+        Integer type = SysDictUtils.getValue(EnumDeviceAlgorithmChargingType.Code.CODE.getCode(), EnumDeviceAlgorithmChargingType.N_2.getCode(), Integer.class);
+        LocalDateTime timeout = DataTime.toLocal(DataTime.getStringAround(0, 0, active.getDeviceChargingDay(), 0, 0, 0));
+        Integer beginTime = Integer.valueOf(DataTime.getSring("yyyyMMdd"));
+        List<DeviceAdminActivate> deviceAdminActivates = new ArrayList<>(deviceInfos.size());
+        List<DeviceCharging> deviceChargings = new ArrayList<>(deviceInfos.size());
+        List<DeviceAlgorithmCharging> deviceAlgorithmChargings = new ArrayList<>(deviceInfos.size());
+        deviceInfos.forEach(deviceInfo -> {
+            //激活对象
+            deviceInfo.setActiveState(activeState)
+                    .setBusyState(busyState)
+                    .setActiveTime(now)
+                    .setShowStatus(true);
+            //记录
+            DeviceAdminActivate deviceAdminActivate = new DeviceAdminActivate()
+                    .setId(YitIdHelper.nextId())
+                    .setDeviceId(deviceInfo.getDeviceId())
+                    .setDeviceType(deviceInfo.getDeviceType())
+                    .setMercId(deviceInfo.getMercId())
+                    .setCreateTime(now)
+                    .setBatchNo(active.getBatchNo())
+                    .setNote(active.getNote())
+                    .setFilePath(active.getFilePath())
+                    .setCreateUser(AuthorizeUtils.getLoginId(Long.class));
+            deviceAdminActivates.add(deviceAdminActivate);
+            //设备管理费
+            DeviceCharging deviceCharging = new DeviceCharging()
+                    .setDeviceId(deviceInfo.getDeviceId())
+                    .setChargingSumMoney(0)
+                    .setTimeout(timeout)
+                    .setCreateTime(now);
+            deviceChargings.add(deviceCharging);
+            //卡包
+            DeviceAlgorithmCharging deviceAlgorithmCharging = new DeviceAlgorithmCharging()
+                    .setId(YitIdHelper.nextId())
+                    .setMercId(deviceInfo.getMercId())
+                    .setDeviceId(deviceInfo.getDeviceId())
+                    .setAlgorithmId(active.getAlgorithmId())
+                    .setName("手动激活")
+                    .setMakeSize(0)
+                    .setUnusedSize(active.getDeviceAlgorithmChargingSize())
+                    .setType(type)
+                    .setTimeout(-1)
+                    .setBeginTime(beginTime)
+                    .setCreateTime(now)
+                    .setUpdateTime(now);
+            deviceAlgorithmChargings.add(deviceAlgorithmCharging);
+        });
+        //激活
+        deviceInfoService.updateBatchById(deviceInfos);
+        //添加记录
+        saveBatch(deviceAdminActivates);
+        //设备管理费
+        deviceChargingService.saveOrUpdateBatch(deviceChargings);
+        //卡包
+        deviceAlgorithmChargingService.saveBatch(deviceAlgorithmChargings);
+        return R.ok();
+    }
+
+    @PostMapping("page")
+    @ApiOperation("分页查询")
+    public R<PageBean<DeviceAdminActivateDto.Vo>> page(@RequestBody DeviceAdminActivateDto.Page page) {
+        PageBean pageBean = page.getPage();
+        LambdaQueryWrapper<DeviceAdminActivate> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceAdminActivate.class)
+                .like(DeviceAdminActivate::getNote)
+                .build();
+        IPage<DeviceAdminActivate> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
+        PageBean<DeviceAdminActivateDto.Vo> voPageBean = toPageBean(DeviceAdminActivateDto.Vo.class, iPage);
+        List<DeviceAdminActivateDto.Vo> records = voPageBean.getRecords();
+        //翻译数据
+        JList<DeviceAdminActivateDto.Vo> vos = new JArrayList<>(records);
+        Beans.copy(records)
+                .target(() -> mercService.list(new MercDto.SelectList().setMercIds(vos.getProperty(DeviceAdminActivateDto.Vo::getMercId).comparing())).getData(), DeviceAdminActivateDto.Vo::getMercId, DeviceAdminActivateDto.Vo::getMercName, MercDto.Vo::getId, MercDto.Vo::getName)
+                .target(() -> userInfoService.list(new UserInfoDto.SelectListDto().setUserIds(vos.getProperty(DeviceAdminActivateDto.Vo::getCreateUser))).getData(), DeviceAdminActivateDto.Vo::getCreateUser, DeviceAdminActivateDto.Vo::getCreateUserName, UserInfoDto.Vo::getUserId, UserInfoDto.Vo::getName)
+                .builder();
+        return R.ok(voPageBean);
+    }
+
+}

+ 103 - 0
device-api/src/main/java/com/xy/dto/DeviceAdminActivateDto.java

@@ -0,0 +1,103 @@
+package com.xy.dto;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.List;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import com.xy.utils.PageBean;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * <p>
+ * 管理员设备激活记录表
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-11-17
+ */
+public class DeviceAdminActivateDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class Active {
+
+        @NotEmpty(message = "deviceId不能为空")
+        @ApiModelProperty(value = "设备id", required = true)
+        private List<Long> deviceId;
+
+        @NotEmpty(message = "deviceChargingDay不能为空")
+        @ApiModelProperty(value = "管理费天数")
+        private Integer deviceChargingDay;
+
+        @NotEmpty(message = "algorithmId不能为空")
+        @ApiModelProperty(value = "算法id")
+        private Long algorithmId;
+
+        @NotEmpty(message = "deviceAlgorithmChargingSize不能为空")
+        @ApiModelProperty(value = "卡包条数")
+        private Integer deviceAlgorithmChargingSize;
+
+        @ApiModelProperty(value = "批次号")
+        private String batchNo;
+
+        @ApiModelProperty(value = "备注")
+        private String note;
+
+        @ApiModelProperty(value = "附件地址")
+        private String filePath;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Page extends Vo {
+
+        @ApiModelProperty(value = "分页对象", required = true)
+        private PageBean page;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Vo {
+
+        private Long id;
+
+        @ApiModelProperty(value = "商户id")
+        private Long mercId;
+
+        @ApiModelProperty(value = "设备id")
+        private Long deviceId;
+
+        @ApiModelProperty(value = "设备类型")
+        private Integer deviceType;
+
+        @ApiModelProperty(value = "批次号")
+        private String batchNo;
+
+        @ApiModelProperty(value = "备注")
+        private String note;
+
+        @ApiModelProperty(value = "附件地址")
+        private String filePath;
+
+        @ApiModelProperty(value = "操作人")
+        private Long createUser;
+
+        @ApiModelProperty(value = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
+
+        @ApiModelProperty(value = "商户名称")
+        private String mercName;
+
+        @ApiModelProperty(value = "操作人名称")
+        private Long createUserName;
+    }
+
+}

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

@@ -0,0 +1,16 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+
+/**
+ * <p>
+ * 管理员设备激活记录表 服务类
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-11-17
+ */
+@RestMappingController("/device-admin-activate")
+public interface DeviceAdminActivateService {
+
+}