From 8e6c706e02a887676291c491d593ea881a188ab7 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 6 Jun 2024 13:16:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0i2=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9C=80=E8=A6=81=E7=9A=84=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xydl/cac/controller/I2syncController.java | 75 +++++++++++++++ .../com/xydl/cac/entity/I2syncConfig.java | 39 ++++++++ .../java/com/xydl/cac/entity/I2syncField.java | 28 ++++++ .../com/xydl/cac/entity/I2syncRecord.java | 29 ++++++ .../java/com/xydl/cac/entity/ModevType.java | 4 + .../repository/I2syncConfigRepository.java | 12 +++ .../cac/repository/I2syncFieldRepository.java | 17 ++++ .../repository/I2syncRecordRepository.java | 16 ++++ .../com/xydl/cac/service/I2syncService.java | 22 +++++ .../cac/service/impl/I2syncServiceImpl.java | 96 +++++++++++++++++++ 10 files changed, 338 insertions(+) create mode 100644 src/main/java/com/xydl/cac/controller/I2syncController.java create mode 100644 src/main/java/com/xydl/cac/entity/I2syncConfig.java create mode 100644 src/main/java/com/xydl/cac/entity/I2syncField.java create mode 100644 src/main/java/com/xydl/cac/entity/I2syncRecord.java create mode 100644 src/main/java/com/xydl/cac/repository/I2syncConfigRepository.java create mode 100644 src/main/java/com/xydl/cac/repository/I2syncFieldRepository.java create mode 100644 src/main/java/com/xydl/cac/repository/I2syncRecordRepository.java create mode 100644 src/main/java/com/xydl/cac/service/I2syncService.java create mode 100644 src/main/java/com/xydl/cac/service/impl/I2syncServiceImpl.java diff --git a/src/main/java/com/xydl/cac/controller/I2syncController.java b/src/main/java/com/xydl/cac/controller/I2syncController.java new file mode 100644 index 0000000..ffae2c1 --- /dev/null +++ b/src/main/java/com/xydl/cac/controller/I2syncController.java @@ -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> listFieldConfig() { + List result = service.listFieldConfig(); + return Response.success(result); + } + + @PostMapping("updateFieldConfig") + @ApiOperation("修改字段映射") + public Response 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 delFieldConfig(@Validated @RequestBody ModevType item) throws Exception { + service.delFieldConfig(item.getTablename()); + return Response.success("OK"); + } + + @GetMapping("listConfig") + @ApiOperation("查询导出类型配置") + public Response> listConfig() { + List result = service.listConfig(); + return Response.success(result); + } + + @PostMapping("addConfig") + @ApiOperation("新增导出类型配置") + public Response addConfig(@Validated @RequestBody I2syncConfig item) throws Exception { + service.addConfig(item); + return Response.success("OK"); + } + + @PostMapping("delConfig") + @ApiOperation("删除导出类型配置") + public Response delConfig(@Validated @RequestBody I2syncConfig item) throws Exception { + if (item.getId() == null) { + throw new BusinessException("id不能为空!"); + } + service.delConfig(item.getId()); + return Response.success("OK"); + } + +} diff --git a/src/main/java/com/xydl/cac/entity/I2syncConfig.java b/src/main/java/com/xydl/cac/entity/I2syncConfig.java new file mode 100644 index 0000000..12c4127 --- /dev/null +++ b/src/main/java/com/xydl/cac/entity/I2syncConfig.java @@ -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; + +} \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/I2syncField.java b/src/main/java/com/xydl/cac/entity/I2syncField.java new file mode 100644 index 0000000..a2dd277 --- /dev/null +++ b/src/main/java/com/xydl/cac/entity/I2syncField.java @@ -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; + +} \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/I2syncRecord.java b/src/main/java/com/xydl/cac/entity/I2syncRecord.java new file mode 100644 index 0000000..5a6dc36 --- /dev/null +++ b/src/main/java/com/xydl/cac/entity/I2syncRecord.java @@ -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; + +} \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/ModevType.java b/src/main/java/com/xydl/cac/entity/ModevType.java index 126fcf7..c515cd8 100644 --- a/src/main/java/com/xydl/cac/entity/ModevType.java +++ b/src/main/java/com/xydl/cac/entity/ModevType.java @@ -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 i2syncFields; } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/repository/I2syncConfigRepository.java b/src/main/java/com/xydl/cac/repository/I2syncConfigRepository.java new file mode 100644 index 0000000..4b0018f --- /dev/null +++ b/src/main/java/com/xydl/cac/repository/I2syncConfigRepository.java @@ -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, JpaSpecificationExecutor { + +} \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/repository/I2syncFieldRepository.java b/src/main/java/com/xydl/cac/repository/I2syncFieldRepository.java new file mode 100644 index 0000000..b281850 --- /dev/null +++ b/src/main/java/com/xydl/cac/repository/I2syncFieldRepository.java @@ -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, JpaSpecificationExecutor { + + List findByTableName(String tablename); + + void deleteByTableName(String tablename); +} \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/repository/I2syncRecordRepository.java b/src/main/java/com/xydl/cac/repository/I2syncRecordRepository.java new file mode 100644 index 0000000..a6cfd94 --- /dev/null +++ b/src/main/java/com/xydl/cac/repository/I2syncRecordRepository.java @@ -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, JpaSpecificationExecutor { + + List findByModevtypeId(Integer modevtypeId); + +} \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/service/I2syncService.java b/src/main/java/com/xydl/cac/service/I2syncService.java new file mode 100644 index 0000000..96d0467 --- /dev/null +++ b/src/main/java/com/xydl/cac/service/I2syncService.java @@ -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 listFieldConfig(); + + void updateFieldConfig(ModevType item); + + void delFieldConfig(String tablename); + + List listConfig(); + + void addConfig(I2syncConfig item); + + void delConfig(Integer id); +} diff --git a/src/main/java/com/xydl/cac/service/impl/I2syncServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/I2syncServiceImpl.java new file mode 100644 index 0000000..a9a5ddc --- /dev/null +++ b/src/main/java/com/xydl/cac/service/impl/I2syncServiceImpl.java @@ -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 listFieldConfig() { + List result = new ArrayList<>(); + List typeList = modevTypeRepository.findAll(); + for (ModevType item : typeList) { + if (StringUtils.isNotBlank(item.getTablename())) { + List 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 listConfig() { + List list = configRepository.findAll(); + this.fillModeType(list); + return list; + } + + private void fillModeType(List list) { + List 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); + } + +}