feat: 增加i2同步数据需要的配置接口

dev
huangfeng 1 year ago
parent 4c5b28218b
commit 8e6c706e02

@ -0,0 +1,75 @@
package com.xydl.cac.controller;
import com.xydl.cac.entity.I2syncConfig;
import com.xydl.cac.entity.ModevType;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.model.Response;
import com.xydl.cac.service.I2syncService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@Api(tags = {"I2同步数据相关接口"})
@RequestMapping("i2sync")
@Slf4j
public class I2syncController extends BasicController {
@Resource
I2syncService service;
@GetMapping("listFieldConfig")
@ApiOperation("查询字段映射")
public Response<List<ModevType>> listFieldConfig() {
List<ModevType> result = service.listFieldConfig();
return Response.success(result);
}
@PostMapping("updateFieldConfig")
@ApiOperation("修改字段映射")
public Response<String> updateFieldConfig(@Validated @RequestBody ModevType item) throws Exception {
if (CollectionUtils.isEmpty(item.getI2syncFields())) {
throw new BusinessException("i2syncFields不能为空!");
}
service.updateFieldConfig(item);
return Response.success("OK");
}
@PostMapping("delFieldConfig")
@ApiOperation("删除字段映射")
public Response<String> delFieldConfig(@Validated @RequestBody ModevType item) throws Exception {
service.delFieldConfig(item.getTablename());
return Response.success("OK");
}
@GetMapping("listConfig")
@ApiOperation("查询导出类型配置")
public Response<List<I2syncConfig>> listConfig() {
List<I2syncConfig> result = service.listConfig();
return Response.success(result);
}
@PostMapping("addConfig")
@ApiOperation("新增导出类型配置")
public Response<String> addConfig(@Validated @RequestBody I2syncConfig item) throws Exception {
service.addConfig(item);
return Response.success("OK");
}
@PostMapping("delConfig")
@ApiOperation("删除导出类型配置")
public Response<String> delConfig(@Validated @RequestBody I2syncConfig item) throws Exception {
if (item.getId() == null) {
throw new BusinessException("id不能为空!");
}
service.delConfig(item.getId());
return Response.success("OK");
}
}

@ -0,0 +1,39 @@
package com.xydl.cac.entity;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import java.util.Date;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "i2sync_config")
@ApiModel("i2导出类型配置")
public class I2syncConfig {
private Integer id;
@NotNull(message = "modevtypeId不能为空")
private Integer modevtypeId;
private Date createTime;
@ApiModelProperty("类型名称")
@Transient
private String typeName;
@ApiModelProperty("对应的表名")
@Transient
private String tableName;
}

@ -0,0 +1,28 @@
package com.xydl.cac.entity;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Table;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "i2sync_field")
@ApiModel("i2导出字段映射配置")
public class I2syncField {
private Integer id;
private String tableName;
private String fieldName;
private String destFieldName;
}

@ -0,0 +1,29 @@
package com.xydl.cac.entity;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "i2sync_record")
@ApiModel("i2导出记录")
public class I2syncRecord {
private Integer id;
private Integer modevtypeId;
private Integer eqmid;
private Date lastDTime;
}

@ -10,6 +10,7 @@ import lombok.NoArgsConstructor;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
@ -38,4 +39,7 @@ public class ModevType {
@Transient
private long sensorCount;
@Transient
private List<I2syncField> i2syncFields;
}

@ -0,0 +1,12 @@
package com.xydl.cac.repository;
import com.xydl.cac.entity.I2syncConfig;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
@Repository
public interface I2syncConfigRepository extends JpaRepository<I2syncConfig, Integer>, JpaSpecificationExecutor<I2syncConfig> {
}

@ -0,0 +1,17 @@
package com.xydl.cac.repository;
import com.xydl.cac.entity.I2syncField;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface I2syncFieldRepository extends JpaRepository<I2syncField, Integer>, JpaSpecificationExecutor<I2syncField> {
List<I2syncField> findByTableName(String tablename);
void deleteByTableName(String tablename);
}

@ -0,0 +1,16 @@
package com.xydl.cac.repository;
import com.xydl.cac.entity.I2syncRecord;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface I2syncRecordRepository extends JpaRepository<I2syncRecord, Integer>, JpaSpecificationExecutor<I2syncRecord> {
List<I2syncRecord> findByModevtypeId(Integer modevtypeId);
}

@ -0,0 +1,22 @@
package com.xydl.cac.service;
import com.xydl.cac.entity.I2syncConfig;
import com.xydl.cac.entity.ModevType;
import java.util.List;
public interface I2syncService {
List<ModevType> listFieldConfig();
void updateFieldConfig(ModevType item);
void delFieldConfig(String tablename);
List<I2syncConfig> listConfig();
void addConfig(I2syncConfig item);
void delConfig(Integer id);
}

@ -0,0 +1,96 @@
package com.xydl.cac.service.impl;
import com.alibaba.excel.util.StringUtils;
import com.xydl.cac.entity.*;
import com.xydl.cac.repository.*;
import com.xydl.cac.service.I2syncService;
import com.xydl.cac.service.ModevTypeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class I2syncServiceImpl implements I2syncService {
@Resource
ModevTypeRepository modevTypeRepository;
@Resource
ModevTypeService modevTypeService;
@Resource
I2syncFieldRepository syncFieldRepository;
@Resource
I2syncConfigRepository configRepository;
@Override
public List<ModevType> listFieldConfig() {
List<ModevType> result = new ArrayList<>();
List<ModevType> typeList = modevTypeRepository.findAll();
for (ModevType item : typeList) {
if (StringUtils.isNotBlank(item.getTablename())) {
List<I2syncField> fieldList = syncFieldRepository.findByTableName(item.getTablename());
if (!CollectionUtils.isEmpty(fieldList)) {
item.setI2syncFields(fieldList);
result.add(item);
}
}
}
return result;
}
@Override
public void updateFieldConfig(ModevType item) {
syncFieldRepository.deleteByTableName(item.getTablename());
for (I2syncField field : item.getI2syncFields()) {
field.setTableName(item.getTablename());
field.setId(null);
syncFieldRepository.save(field);
}
}
@Override
public void delFieldConfig(String tablename) {
syncFieldRepository.deleteByTableName(tablename);
}
@Override
public List<I2syncConfig> listConfig() {
List<I2syncConfig> list = configRepository.findAll();
this.fillModeType(list);
return list;
}
private void fillModeType(List<I2syncConfig> list) {
List<ModevType> modevTypeList = modevTypeService.listAll();
if (!CollectionUtils.isEmpty(list)) {
for (I2syncConfig item : list) {
for (ModevType type : modevTypeList) {
if (type.getId().equals(item.getModevtypeId())) {
item.setTypeName(type.getMc());
item.setTableName(type.getTablename());
}
}
}
}
}
@Override
public void addConfig(I2syncConfig item) {
item.setId(null);
item.setCreateTime(new Date());
configRepository.save(item);
}
@Override
public void delConfig(Integer id) {
configRepository.deleteById(id);
}
}
Loading…
Cancel
Save