Browse Source

Merge remote-tracking branch 'origin/master'

lwhhszx 1 năm trước cách đây
mục cha
commit
550e0b3d0d
25 tập tin đã thay đổi với 924 bổ sung45 xóa
  1. 54 0
      src/main/java/cn/cslg/pas/common/dto/customAnalyse/CustomAnalyseDTO.java
  2. 14 0
      src/main/java/cn/cslg/pas/common/dto/customAnalyse/CustomSettingColorConfigDTO.java
  3. 27 0
      src/main/java/cn/cslg/pas/common/dto/customAnalyse/CustomSettingConfigDTO.java
  4. 17 0
      src/main/java/cn/cslg/pas/common/dto/customAnalyse/CustomSettingLineConfigDTO.java
  5. 10 0
      src/main/java/cn/cslg/pas/common/dto/customAnalyse/CustomSettingTableConfigDTO.java
  6. 27 0
      src/main/java/cn/cslg/pas/common/dto/customAnalyse/SchemaDataDTO.java
  7. 22 0
      src/main/java/cn/cslg/pas/common/dto/customAnalyse/SchemaDimensionDTO.java
  8. 11 0
      src/main/java/cn/cslg/pas/common/dto/customAnalyse/SelectCustomAnalyseDTO.java
  9. 23 3
      src/main/java/cn/cslg/pas/common/dto/customAnalyse/SelectCustomAnalyseListDTO.java
  10. 0 1
      src/main/java/cn/cslg/pas/common/vo/customAnalyse/CustomAnalyseIdVO.java
  11. 5 0
      src/main/java/cn/cslg/pas/common/vo/customAnalyse/CustomAnalyseVO.java
  12. 2 1
      src/main/java/cn/cslg/pas/common/vo/customAnalyse/SelectCustomAnalyseVO.java
  13. 15 7
      src/main/java/cn/cslg/pas/controller/CustomAnalyseController.java
  14. 16 6
      src/main/java/cn/cslg/pas/domain/business/CustomAnalysisItem.java
  15. 16 6
      src/main/java/cn/cslg/pas/domain/business/CustomAnalysisItemSchema.java
  16. 393 0
      src/main/java/cn/cslg/pas/domain/business/CustomAnalysisItemSetting.java
  17. 99 0
      src/main/java/cn/cslg/pas/domain/business/CustomAnalysisItemSource.java
  18. 0 1
      src/main/java/cn/cslg/pas/mapper/CustomAnalysisItemMapper.java
  19. 2 2
      src/main/java/cn/cslg/pas/mapper/CustomAnalysisItemSchemaMapper.java
  20. 14 0
      src/main/java/cn/cslg/pas/mapper/CustomAnalysisItemSettingMapper.java
  21. 14 0
      src/main/java/cn/cslg/pas/mapper/CustomAnalysisItemSourceMapper.java
  22. 58 14
      src/main/java/cn/cslg/pas/service/business/CustomAnalyseService.java
  23. 56 0
      src/main/java/cn/cslg/pas/service/business/CustomAnalysisItemSchemaService.java
  24. 24 0
      src/main/java/cn/cslg/pas/service/business/CustomAnalysisItemSettingService.java
  25. 5 4
      src/main/resources/mapper/CustomAnalyseMapper.xml

+ 54 - 0
src/main/java/cn/cslg/pas/common/dto/customAnalyse/CustomAnalyseDTO.java

@@ -0,0 +1,54 @@
+package cn.cslg.pas.common.dto.customAnalyse;
+
+import cn.cslg.pas.domain.business.CustomAnalysisItemSetting;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class CustomAnalyseDTO {
+
+    private Integer id;
+
+    private String uid;
+
+    private String name;
+
+    private Integer parentId;
+
+    private Integer permissions;
+
+    private Integer projectId;
+
+    private Integer tenantId;
+
+    private Integer sort;
+
+    private Integer type;
+
+    private Integer status;
+
+    private String createId;
+
+    private String createName;
+
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 维度数据
+     */
+    private SchemaDimensionDTO schema;
+
+    /**
+     * 图表设置
+     */
+    private CustomAnalysisItemSetting setting;
+
+    private String parentName;
+
+}

+ 14 - 0
src/main/java/cn/cslg/pas/common/dto/customAnalyse/CustomSettingColorConfigDTO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.dto.customAnalyse;
+
+import lombok.Data;
+
+@Data
+public class CustomSettingColorConfigDTO {
+    private String name;
+    private String color;
+
+    public CustomSettingColorConfigDTO() {
+        this.name = "";
+        this.color = "";
+    }
+}

+ 27 - 0
src/main/java/cn/cslg/pas/common/dto/customAnalyse/CustomSettingConfigDTO.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.common.dto.customAnalyse;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class CustomSettingConfigDTO {
+    private List<CustomSettingTableConfigDTO> table;
+    private CustomSettingLineConfigDTO line;
+    private List<CustomSettingColorConfigDTO> color;
+
+    public CustomSettingConfigDTO() {
+        this.line = new CustomSettingLineConfigDTO();
+        List<CustomSettingTableConfigDTO> configs = new ArrayList<>();
+        for (int i = 0; i < 10; i++) {
+            CustomSettingTableConfigDTO configDTO = new CustomSettingTableConfigDTO();
+            configDTO.setMax(0);
+            configDTO.setMin(0);
+            configDTO.setColor("");
+            configs.add(configDTO);
+        }
+        this.table = configs;
+        this.color = new ArrayList<>();
+    }
+}

+ 17 - 0
src/main/java/cn/cslg/pas/common/dto/customAnalyse/CustomSettingLineConfigDTO.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.dto.customAnalyse;
+
+import lombok.Data;
+
+@Data
+public class CustomSettingLineConfigDTO {
+
+    private String name;
+    private Integer operator;
+    private Boolean enable;
+
+    public CustomSettingLineConfigDTO() {
+        this.name = "";
+        this.operator = 0;
+        this.enable = false;
+    }
+}

+ 10 - 0
src/main/java/cn/cslg/pas/common/dto/customAnalyse/CustomSettingTableConfigDTO.java

@@ -0,0 +1,10 @@
+package cn.cslg.pas.common.dto.customAnalyse;
+
+import lombok.Data;
+
+@Data
+public class CustomSettingTableConfigDTO {
+    private Integer min;
+    private Integer max;
+    private String color;
+}

+ 27 - 0
src/main/java/cn/cslg/pas/common/dto/customAnalyse/SchemaDataDTO.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.common.dto.customAnalyse;
+
+import lombok.Data;
+
+@Data
+public class SchemaDataDTO {
+    private Integer field;
+    private Integer expand;
+    private Integer ptype;
+    private Integer type;
+    private Integer num;
+    private Integer merge;
+
+    public SchemaDataDTO() {
+        this.field = 0;
+        this.expand = 0;
+        this.type = 0;
+        this.ptype = 0;
+        this.num = 0;
+        this.merge = 0;
+    }
+
+    public SchemaDataDTO(Integer field, Integer expand) {
+        this.field = field;
+        this.expand = expand;
+    }
+}

+ 22 - 0
src/main/java/cn/cslg/pas/common/dto/customAnalyse/SchemaDimensionDTO.java

@@ -0,0 +1,22 @@
+package cn.cslg.pas.common.dto.customAnalyse;
+
+public class SchemaDimensionDTO {
+    private SchemaDataDTO x;
+    private SchemaDataDTO y;
+
+    public SchemaDataDTO getX() {
+        return x;
+    }
+
+    public void setX(SchemaDataDTO x) {
+        this.x = x;
+    }
+
+    public SchemaDataDTO getY() {
+        return y;
+    }
+
+    public void setY(SchemaDataDTO y) {
+        this.y = y;
+    }
+}

+ 11 - 0
src/main/java/cn/cslg/pas/common/dto/customAnalyse/SelectCustomAnalyseDTO.java

@@ -5,4 +5,15 @@ import lombok.Data;
 @Data
 public class SelectCustomAnalyseDTO {
 
+    private String parentName;
+
+    private String name;
+
+    private Integer parentId;
+
+    private Integer permissions;
+
+    private Integer sort;
+
+    private Integer type;
 }

+ 23 - 3
src/main/java/cn/cslg/pas/common/dto/customAnalyse/SelectCustomAnalyseListDTO.java

@@ -1,16 +1,36 @@
 package cn.cslg.pas.common.dto.customAnalyse;
 
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
+import java.util.Date;
+import java.util.List;
+
 @Data
 public class SelectCustomAnalyseListDTO {
 
-    private String name;
+    private String uid;
 
+    private Integer id;
+    //名称
+    private String name;
+    //1系统公有 2系统私有 3数据库共有 4数据库私有
     private Integer permissions;
-
+    //顺序
     private Integer sort;
-
+    //类型 1组别  2分析项
     private Integer type;
+
+    private Integer parentId;
+    private Integer projectId;
+    private Integer tenantId;
+    private String createId;
+    private String createName;
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    private List<SelectCustomAnalyseListDTO> children;
 }

+ 0 - 1
src/main/java/cn/cslg/pas/common/vo/customAnalyse/CustomAnalyseIdVO.java

@@ -7,5 +7,4 @@ public class CustomAnalyseIdVO {
 
     private Integer id;
 
-    private Integer type;
 }

+ 5 - 0
src/main/java/cn/cslg/pas/common/vo/customAnalyse/CustomAnalyseVO.java

@@ -1,8 +1,11 @@
 package cn.cslg.pas.common.vo.customAnalyse;
 
 
+import cn.cslg.pas.domain.business.CustomAnalysisItem;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class CustomAnalyseVO {
 
@@ -23,4 +26,6 @@ public class CustomAnalyseVO {
     private Integer type;
 
     private Integer status;
+
+    private List<CustomAnalysisItem> children;
 }

+ 2 - 1
src/main/java/cn/cslg/pas/common/vo/customAnalyse/SelectCustomAnalyseVO.java

@@ -5,7 +5,8 @@ import lombok.Data;
 @Data
 public class SelectCustomAnalyseVO {
 
+    //专题库id
     private Integer projectId;
-
+    //类型 1组别  2分析项
     private Integer type;
 }

+ 15 - 7
src/main/java/cn/cslg/pas/controller/CustomAnalyseController.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.customAnalyse.CustomAnalyseDTO;
 import cn.cslg.pas.common.dto.customAnalyse.SelectCustomAnalyseDTO;
 import cn.cslg.pas.common.dto.customAnalyse.SelectCustomAnalyseListDTO;
 import cn.cslg.pas.common.utils.Response;
@@ -24,37 +25,44 @@ public class CustomAnalyseController {
     @Autowired
     private CustomAnalyseService customAnalyseService;
 
-    @Operation(summary = "查询组别")
+    @Operation(summary = "查询组别/分析项")
     @PostMapping("/queryAnalyseGroup")
     public Response queryAnalyseGroup(@RequestBody SelectCustomAnalyseVO vo) {
         List<SelectCustomAnalyseListDTO> list = customAnalyseService.queryAnalyseGroup(vo);
         return Response.success(list);
     }
 
-    @Operation(summary = "查询组别详情")
+    @Operation(summary = "根据id查询组别/分析项详情")
     @PostMapping("/queryAnalyseGroupDetail")
     public Response queryAnalyseGroupDetail(@RequestBody CustomAnalyseIdVO vo) {
         SelectCustomAnalyseDTO dto = customAnalyseService.queryAnalyseGroupDetail(vo);
         return Response.success(dto);
     }
 
-    @Operation(summary = "添加组别")
+    @Operation(summary = "查询组别/分析项详情")
+    @PostMapping("/queryAnalyseDetail")
+    public Response queryAnalyseDetail(@RequestBody CustomAnalyseIdVO vo) {
+        CustomAnalyseDTO dto = customAnalyseService.queryAnalyseDetail(vo);
+        return Response.success(dto);
+    }
+
+    @Operation(summary = "添加组别/分析项")
     @PostMapping("/addAnalyseGroup")
-    public Response addAnalyseGroup(@RequestBody CustomAnalyseVO vo) {
+    public Response addAnalyseGroup(@RequestBody CustomAnalyseDTO vo) {
         Integer groupId = customAnalyseService.addAnalyseGroup(vo);
         return Response.success(groupId);
     }
 
     @Operation(summary = "编辑组别")
     @PostMapping("/editAnalyseGroup")
-    public Response editAnalyseGroup(@RequestBody CustomAnalyseVO vo) {
+    public Response editAnalyseGroup(@RequestBody CustomAnalyseDTO vo) {
         Integer groupId = customAnalyseService.editAnalyseGroup(vo);
         return Response.success(groupId);
     }
 
-    @Operation(summary = "删除组别")
+    @Operation(summary = "删除组别/分析项")
     @PostMapping("/delAnalyseGroup")
-    public Response delAnalyseGroup(@RequestBody CustomAnalyseIdVO vo) {
+    public Response delAnalyseGroup(@RequestBody CustomAnalyseIdVO vo) throws Exception {
         Integer groupId = customAnalyseService.delAnalyseGroup(vo);
         return Response.success(groupId);
     }

+ 16 - 6
src/main/java/cn/cslg/pas/domain/business/CustomAnalysisItem.java

@@ -1,9 +1,12 @@
 package cn.cslg.pas.domain.business;
 
 import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -17,6 +20,9 @@ import java.util.Date;
 @TableName("os_custom_analysis_item")
 public class CustomAnalysisItem extends BaseEntity<CustomAnalysisItem> {
 
+    @TableField(value = "uid")
+    private String uid;
+
     @TableField(value = "name")
     private String name;
 
@@ -41,15 +47,19 @@ public class CustomAnalysisItem extends BaseEntity<CustomAnalysisItem> {
     @TableField(value = "status")
     private Integer status;
 
-    @TableField(value = "creator_id")
-    private String creatorId;
+    @TableField(value = "create_id")
+    private String createId;
 
-    @TableField(value = "creator")
-    private String creator;
+    @TableField(value = "create_name")
+    private String createName;
 
-    @TableField(value = "create_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time",fill = FieldFill.INSERT_UPDATE)
     private Date createTime;
 
-    @TableField(value = "update_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
     private Date updateTime;
 }

+ 16 - 6
src/main/java/cn/cslg/pas/domain/business/CustomAnalysisItemSchema.java

@@ -1,9 +1,12 @@
 package cn.cslg.pas.domain.business;
 
 import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -17,6 +20,9 @@ import java.util.Date;
 @TableName("os_custom_analysis_item_schema")
 public class CustomAnalysisItemSchema extends BaseEntity<CustomAnalysisItemSchema> {
 
+    @TableField(value = "uid")
+    private String uid;
+
     @TableField(value = "dimension")
     private String dimension;
 
@@ -38,16 +44,20 @@ public class CustomAnalysisItemSchema extends BaseEntity<CustomAnalysisItemSchem
     @TableField(value = "status")
     private Integer status;
 
-    @TableField(value = "creator_id")
-    private Integer creatorId;
+    @TableField(value = "create_id")
+    private String createId;
 
-    @TableField(value = "creator")
-    private String creator;
+    @TableField(value = "create_name")
+    private String createName;
 
-    @TableField(value = "create_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time",fill = FieldFill.INSERT_UPDATE)
     private Date createTime;
 
-    @TableField(value = "update_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
     private Date updateTime;
 
 }

+ 393 - 0
src/main/java/cn/cslg/pas/domain/business/CustomAnalysisItemSetting.java

@@ -0,0 +1,393 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.common.dto.customAnalyse.CustomSettingConfigDTO;
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 自定义分析项目图表设置
+ *
+ * @Author zero
+ * @Date 2024/01/15
+ */
+@Data
+@TableName("os_custom_analysis_item_setting")
+public class CustomAnalysisItemSetting extends BaseEntity<CustomAnalysisItemSetting> {
+
+    public CustomAnalysisItemSetting() {
+        this.type = 1;
+        this.showType = 0;
+        this.tableType = 0;
+        this.theme = "customed";
+        this.titleSize = 14;
+        this.dataSize = 14;
+        this.axisSize = 14;
+        this.dataLabel = false;
+        this.dataLabel2 = false;
+        this.dataLabel3 = false;
+        this.title1Dir = 0;
+        this.title1 = "";
+        this.title2 = "";
+        this.dataPosition = "top";
+        this.fontFamily = "sans-serif";
+        this.fontFamily2 = "sans-serif";
+        this.fontFamily3 = "sans-serif";
+        this.fontFamily4 = "sans-serif";
+        this.fontWeight = false;
+        this.fontWeight2 = false;
+        this.nameLocation = "end";
+        this.nameLocation2 = "end";
+        this.width = "100";
+        this.height = "650";
+        this.widthUnit = "%";
+        this.heightUnit = "px";
+        this.splitLine = false;
+        this.splitLine2 = false;
+        this.legend = true;
+        this.gridTop = "0";
+        this.gridLeft = "0";
+        this.gridBottom = "0";
+        this.gridRight = "0";
+        this.labelColor = "#000000";
+        this.legendColor = "#000000";
+        this.legendLocation = "top";
+        this.legendFontSize = "13";
+        this.fontSize = "13";
+        this.fontSize2 = "13";
+        this.fontColor = "#000000";
+        this.fontColor2 = "#000000";
+        this.show = true;
+        this.show2 = true;
+        this.interval = true;
+        this.interval2 = true;
+        this.rotate = "0";
+        this.rotate2 = "0";
+        this.paddingTop = 0;
+        this.paddingBottom = 0;
+        this.paddingRight = 0;
+        this.paddingLeft = 0;
+        this.paddingTop2 = 0;
+        this.paddingLeft2 = 0;
+        this.paddingBottom2 = 0;
+        this.paddingRight2 = 0;
+        this.type2 = "scroll";
+        this.barWidth = "";
+        this.scatterSize = "0";
+        this.config = new CustomSettingConfigDTO();
+    }
+
+    @TableField(value = "uid")
+    private String uid;
+
+    @TableField(value = "type")
+    private Integer type;
+
+    @TableField(value = "show_type")
+    private Integer showType;
+
+    @TableField(value = "table_type")
+    private Integer tableType;
+
+    @TableField(value = "theme")
+    private String theme;
+
+    @TableField(value = "title1")
+    private String title1;
+
+    @TableField(value = "title2")
+    private String title2;
+
+    @TableField(value = "data_label")
+    private Boolean dataLabel;
+
+    @TableField(value = "data_position")
+    private String dataPosition;
+
+    @TableField(value = "data_size")
+    private Integer dataSize;
+
+    @TableField(value = "title_size")
+    private Integer titleSize;
+
+    @TableField(value = "axis_size")
+    private Integer axisSize;
+
+    @TableField(value = "title1_dir")
+    private Integer title1Dir;
+
+    /**
+     * 表格设置
+     */
+    @TableField(value = "table_config")
+    private String tableConfig;
+    /**
+     * 颜色
+     */
+    @TableField(value = "color_config")
+    private String colorConfig;
+
+    /**
+     * 辅助线
+     */
+    @TableField(value = "line_config")
+    private String lineConfig;
+
+    /**
+     * 字体
+     */
+    @TableField(value = "font_family")
+    private String fontFamily;
+
+    @TableField(exist = false)
+    private CustomSettingConfigDTO config;
+
+    @TableField(value = "create_id")
+    private String createId;
+
+    @TableField(value = "create_name")
+    private String createName;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time",fill = FieldFill.INSERT_UPDATE)
+    private Date createTime;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    /**
+     * 坐标轴(X)加粗
+     */
+    @TableField(value = "font_weight")
+    private Boolean fontWeight;
+
+    /**
+     * 坐标轴(Y)加粗
+     */
+    @TableField(value = "font_weight2")
+    private Boolean fontWeight2;
+
+    @TableField(value = "name_location")
+    private String nameLocation;
+    /**
+     * 高
+     */
+    @TableField(value = "height")
+    private String height;
+
+    /**
+     * 宽
+     */
+    @TableField(value = "width")
+    private String width;
+
+    /**
+     * 高(单位)
+     */
+    @TableField(value = "height_unit")
+    private String heightUnit;
+
+    /**
+     * 宽(单位)
+     */
+    @TableField(value = "width_unit")
+    private String widthUnit;
+
+    /**
+     * 坐标轴X(线)是否显示
+     */
+    @TableField(value = "split_line")
+    private Boolean splitLine;
+
+    /**
+     * 坐标轴Y(线)是否显示
+     */
+    @TableField(value = "split_line2")
+    private Boolean splitLine2;
+
+    /**
+     * 图例是否显示
+     */
+    @TableField(value = "legend")
+    private Boolean legend;
+
+    /**
+     * 图例位置
+     */
+    @TableField(value = "legend_location")
+    private String legendLocation;
+
+    /**
+     * 图表位置
+     */
+    @TableField(value = "grid_top")
+    private String gridTop;
+    @TableField(value = "grid_left")
+    private String gridLeft;
+    @TableField(value = "grid_right")
+    private String gridRight;
+    @TableField(value = "grid_bottom")
+    private String gridBottom;
+
+    /**
+     * 标签字体
+     */
+    @TableField(value = "font_family2")
+    private String fontFamily2;
+
+    /**
+     * 标签字体颜色
+     */
+    @TableField(value = "label_color")
+    private String labelColor;
+
+    /**
+     * 图例字体
+     */
+    @TableField(value = "font_family3")
+    private String fontFamily3;
+
+    /**
+     * 图例字体大小
+     */
+    @TableField(value = "legend_font_size")
+    private String legendFontSize;
+
+    /**
+     * 图例字体颜色
+     */
+    @TableField(value = "legend_color")
+    private String legendColor;
+
+    /**
+     * 坐标轴(Y)字体
+     */
+    @TableField(value = "font_family4")
+    private String fontFamily4;
+
+    /**
+     * 坐标轴(X)字体大小
+     */
+    @TableField(value = "font_size")
+    private String fontSize;
+
+    /**
+     * 坐标轴(Y)字体大小
+     */
+    @TableField(value = "font_size2")
+    private String fontSize2;
+
+    /**
+     * 坐标轴(X)字体颜色
+     */
+    @TableField(value = "font_color")
+    private String fontColor;
+
+    /**
+     * 坐标轴(Y)字体颜色
+     */
+    @TableField(value = "font_color2")
+    private String fontColor2;
+
+    /**
+     * 坐标轴(X)显示
+     */
+    @TableField(value = "show")
+    private Boolean show;
+
+    /**
+     * 坐标轴(Y)显示
+     */
+    @TableField(value = "show2")
+    private Boolean show2;
+
+    @TableField(value = "name_location2")
+    private String nameLocation2;
+
+    /**
+     * X轴信息全部显示
+     */
+    @TableField(value = "interval")
+    private Boolean interval;
+
+    /**
+     * X轴倾斜角度
+     */
+    @TableField(value = "rotate")
+    private String rotate;
+
+    /**
+     * Y轴信息全部显示
+     */
+    @TableField(value = "interval2")
+    private Boolean interval2;
+
+    /**
+     * Y轴倾斜角度
+     */
+    @TableField(value = "rotate2")
+    private String rotate2;
+
+    /**
+     * X轴标题padding
+     */
+    @TableField(value = "padding_top")
+    private Integer paddingTop;
+    @TableField(value = "padding_left")
+    private Integer paddingLeft;
+    @TableField(value = "padding_bottom")
+    private Integer paddingBottom;
+    @TableField(value = "padding_right")
+    private Integer paddingRight;
+
+    /**
+     * Y轴标题padding
+     */
+    @TableField(value = "padding_top2")
+    private Integer paddingTop2;
+    @TableField(value = "padding_right2")
+    private Integer paddingLeft2;
+    @TableField(value = "padding_bottom2")
+    private Integer paddingBottom2;
+    @TableField(value = "padding_left2")
+    private Integer paddingRight2;
+
+    /**
+     * 图例类型
+     */
+    @TableField(value = "type2")
+    private String type2;
+
+    /**
+     * 饼图(环形图)数值
+     */
+    @TableField(value = "data_label2")
+    private Boolean dataLabel2;
+
+    /**
+     * 饼图(环形图)百分比
+     */
+    @TableField(value = "data_label3")
+    private Boolean dataLabel3;
+
+    /**
+     * 柱形图宽度
+     */
+    @TableField(value = "bar_width")
+    private String barWidth;
+
+    /**
+     * 气泡比例
+     */
+    @TableField(value = "scatter_size")
+    private String scatterSize;
+}

+ 99 - 0
src/main/java/cn/cslg/pas/domain/business/CustomAnalysisItemSource.java

@@ -0,0 +1,99 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 自定义分析项目数据源
+ *
+ * @Author zero
+ * @Date 2024/01/14
+ */
+@Data
+@TableName("os_custom_analysis_item_source")
+public class CustomAnalysisItemSource extends BaseEntity<CustomAnalysisItemSource> {
+
+    @TableField(value = "show")
+    private String uid;
+
+    /**
+     * 维度
+     */
+    @TableField(value = "show")
+    private String dimension;
+
+    /**
+     * 名称
+     */
+    @TableField(value = "show")
+    private String name;
+
+    /**
+     * 是否选择
+     */
+    @TableField(value = "show")
+    private Boolean selected;
+
+    /**
+     * 字段ID
+     */
+    @TableField(value = "show")
+    private Integer fieldId;
+
+    /**
+     * 拓展ID
+     */
+    @TableField(value = "show")
+    private Integer expandId;
+
+    /**
+     * 开始时间
+     */
+    @TableField(value = "show")
+    private String startTime;
+
+    /**
+     * 结束时间
+     */
+    @TableField(value = "show")
+    private String endTime;
+
+    /**
+     * 大于
+     */
+
+    @TableField(value = "show")
+    private String minData;
+
+    /**
+     * 小于
+     */
+    @TableField(value = "show")
+    private String maxData;
+
+    @TableField(value = "status")
+    private Integer status;
+
+    @TableField(value = "create_id")
+    private String createId;
+
+    @TableField(value = "create_name")
+    private String createName;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time",fill = FieldFill.INSERT_UPDATE)
+    private Date createTime;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+}

+ 0 - 1
src/main/java/cn/cslg/pas/mapper/CustomAnalysisItemMapper.java

@@ -2,7 +2,6 @@ package cn.cslg.pas.mapper;
 
 import cn.cslg.pas.common.dto.customAnalyse.SelectCustomAnalyseListDTO;
 import cn.cslg.pas.common.vo.customAnalyse.SelectAnalyseVO;
-import cn.cslg.pas.common.vo.customAnalyse.SelectCustomAnalyseVO;
 import cn.cslg.pas.domain.business.CustomAnalysisItem;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;

+ 2 - 2
src/main/java/cn/cslg/pas/mapper/CustomAnalysisItemSchemaMapper.java

@@ -5,9 +5,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
 /**
- * 自定义分析项目维度数据mapper
+ * 自定义分析项目图表设置mapper
  * @Author zero
- * @Date 2024/01/12
+ * @Date 2024/01/14
  */
 @Repository
 public interface CustomAnalysisItemSchemaMapper extends BaseMapper<CustomAnalysisItemSchema> {

+ 14 - 0
src/main/java/cn/cslg/pas/mapper/CustomAnalysisItemSettingMapper.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.CustomAnalysisItemSetting;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 自定义分析项目维度数据mapper
+ * @Author zero
+ * @Date 2024/01/12
+ */
+@Repository
+public interface CustomAnalysisItemSettingMapper extends BaseMapper<CustomAnalysisItemSetting> {
+}

+ 14 - 0
src/main/java/cn/cslg/pas/mapper/CustomAnalysisItemSourceMapper.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.CustomAnalysisItemSource;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 自定义分析项目数据源mapper
+ * @Author zero
+ * @Date 2024/01/12
+ */
+@Repository
+public interface CustomAnalysisItemSourceMapper extends BaseMapper<CustomAnalysisItemSource> {
+}

+ 58 - 14
src/main/java/cn/cslg/pas/service/business/CustomAnalyseService.java

@@ -1,10 +1,12 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.customAnalyse.CustomAnalyseDTO;
 import cn.cslg.pas.common.dto.customAnalyse.SelectCustomAnalyseDTO;
 import cn.cslg.pas.common.dto.customAnalyse.SelectCustomAnalyseListDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.customAnalyse.CustomAnalyseIdVO;
 import cn.cslg.pas.common.vo.customAnalyse.CustomAnalyseVO;
 import cn.cslg.pas.common.vo.customAnalyse.SelectAnalyseVO;
@@ -12,15 +14,21 @@ import cn.cslg.pas.common.vo.customAnalyse.SelectCustomAnalyseVO;
 import cn.cslg.pas.domain.business.CustomAnalysisItem;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.mapper.CustomAnalysisItemMapper;
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 自定义分析项目Service层
@@ -40,8 +48,13 @@ public class CustomAnalyseService extends ServiceImpl<CustomAnalysisItemMapper,
     @Autowired
     private CustomAnalysisItemMapper customAnalysisItemMapper;
 
+    @Autowired
+    private CustomAnalysisItemSchemaService itemSchemaService;
+
+    @Autowired
+    private CustomAnalysisItemSettingService itemSettingService;
+
     public List<SelectCustomAnalyseListDTO> queryAnalyseGroup(SelectCustomAnalyseVO vo) {
-        List<SelectCustomAnalyseListDTO> list = new ArrayList<>();
         //获取登陆人信息 用于设置创建人
         PersonnelVO personnelVO = new PersonnelVO();
         try {
@@ -52,25 +65,46 @@ public class CustomAnalyseService extends ServiceImpl<CustomAnalysisItemMapper,
 
         SelectAnalyseVO analyseVO = new SelectAnalyseVO();
         analyseVO.setProjectId(vo.getProjectId());
-        analyseVO.setType(vo.getType());
         analyseVO.setTenantId(personnelVO.getTenantId());
         analyseVO.setCreatorId(personnelVO.getId());
-        customAnalysisItemMapper.queryAnalyseGroup(analyseVO);
-        return list;
+        List<SelectCustomAnalyseListDTO> list = customAnalysisItemMapper.queryAnalyseGroup(analyseVO);
+        List<SelectCustomAnalyseListDTO> returnList = list.stream().filter(item -> item.getParentId().equals(0)).collect(Collectors.toList());
+        returnList.forEach(item -> {
+            item.setChildren(list.stream().filter(c -> c.getParentId().equals(item.getId())).collect(Collectors.toList()));
+        });
+        return returnList;
     }
 
 
     public SelectCustomAnalyseDTO queryAnalyseGroupDetail(CustomAnalyseIdVO vo) {
         SelectCustomAnalyseDTO dto = new SelectCustomAnalyseDTO();
         CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
-        if (ObjectUtil.isNotEmpty(item)) {
-            BeanUtils.copyProperties(item, dto);
+        if (item.getParentId() != null && item.getParentId() != 0) {
+            CustomAnalysisItem parentItem = customAnalysisItemMapper.selectById(item.getParentId());
+            dto.setParentId(item.getParentId());
+            dto.setParentName(parentItem.getName());
         }
+        BeanUtils.copyProperties(item, dto);
         return dto;
     }
 
-    public Integer addAnalyseGroup(CustomAnalyseVO vo) {
+    public CustomAnalyseDTO queryAnalyseDetail(CustomAnalyseIdVO vo) {
+        CustomAnalyseDTO dto = new CustomAnalyseDTO();
+        CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
+        if (item.getType().equals(2)) {
+            dto.setSchema(itemSchemaService.getItemSchemaByUid(item.getUid()));
+//            dto.setSetting();
+        } else {
+            dto.setSchema(null);
+            dto.setSetting(null);
+        }
+        BeanUtils.copyProperties(item, dto);
+        return dto;
+    }
 
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public Integer addAnalyseGroup(CustomAnalyseDTO vo) {
+        String uid = IdUtil.simpleUUID();
         //获取登陆人信息 用于设置创建人
         PersonnelVO personnelVO = new PersonnelVO();
         try {
@@ -80,17 +114,19 @@ public class CustomAnalyseService extends ServiceImpl<CustomAnalysisItemMapper,
         }
 
         CustomAnalysisItem item = new CustomAnalysisItem();
+        item.setUid(uid);
         BeanUtils.copyProperties(vo, item);
         item.setTenantId(personnelVO.getTenantId());
-        item.setCreatorId(personnelVO.getId());
-        item.setCreator(personnelVO.getName());
+        item.setCreateId(personnelVO.getId());
+        item.setCreateName(personnelVO.getName());
         item.setCreateTime(new Date());
         item.setUpdateTime(new Date());
         item.insert();
         return item.getId();
     }
 
-    public Integer editAnalyseGroup(CustomAnalyseVO vo) {
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public Integer editAnalyseGroup(CustomAnalyseDTO vo) {
 
         //获取登陆人信息 用于设置创建人
         PersonnelVO personnelVO = new PersonnelVO();
@@ -103,16 +139,24 @@ public class CustomAnalyseService extends ServiceImpl<CustomAnalysisItemMapper,
         CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
         BeanUtils.copyProperties(vo, item);
         item.setTenantId(personnelVO.getTenantId());
-        item.setCreatorId(personnelVO.getId());
-        item.setCreator(personnelVO.getName());
+        item.setCreateId(personnelVO.getId());
+        item.setCreateName(personnelVO.getName());
         item.setUpdateTime(new Date());
         item.insert();
         return item.getId();
     }
 
-    public Integer delAnalyseGroup(CustomAnalyseIdVO vo) {
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public Integer delAnalyseGroup(CustomAnalyseIdVO vo) throws Exception {
         CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
-        customAnalysisItemMapper.deleteById(vo.getId());
+        long count = this.count(new LambdaQueryWrapper<CustomAnalysisItem>()
+                .eq(CustomAnalysisItem::getParentId, vo.getId()));
+        if (count > 0) {
+            throw new Exception("删除失败,请先删除子节点");
+        }
+        this.removeById(vo.getId());
+        itemSchemaService.deleteByUid(item.getUid());
+        itemSettingService.deleteByUid(item.getUid());
         return item.getId();
     }
 

+ 56 - 0
src/main/java/cn/cslg/pas/service/business/CustomAnalysisItemSchemaService.java

@@ -0,0 +1,56 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.customAnalyse.SchemaDataDTO;
+import cn.cslg.pas.common.dto.customAnalyse.SchemaDimensionDTO;
+import cn.cslg.pas.domain.business.CustomAnalysisItemSchema;
+import cn.cslg.pas.mapper.CustomAnalysisItemSchemaMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 自定义分析项目维度数据 服务实现类
+ * </p>
+ */
+@Service
+public class CustomAnalysisItemSchemaService extends ServiceImpl<CustomAnalysisItemSchemaMapper, CustomAnalysisItemSchema> {
+    @Autowired
+    private CustomAnalysisItemSchemaMapper customAnalysisItemSchemaMapper;
+
+    public List<CustomAnalysisItemSchema> getListByUid(String uid) {
+        LambdaQueryWrapper<CustomAnalysisItemSchema> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CustomAnalysisItemSchema::getUid, uid);
+        return this.list(queryWrapper);
+    }
+
+    public SchemaDimensionDTO getItemSchemaByUid(String uid) {
+        List<CustomAnalysisItemSchema> schemaList = this.getListByUid(uid);
+        CustomAnalysisItemSchema d1 = schemaList.stream().filter(item -> item.getDimension().equals("x")).findFirst().orElse(new CustomAnalysisItemSchema());
+        CustomAnalysisItemSchema d2 = schemaList.stream().filter(item -> item.getDimension().equals("y")).findFirst().orElse(new CustomAnalysisItemSchema());
+        SchemaDimensionDTO dto = new SchemaDimensionDTO();
+        SchemaDataDTO x = new SchemaDataDTO();
+        SchemaDataDTO y = new SchemaDataDTO();
+        x.setField(d1.getField());
+        x.setExpand(d1.getExpand());
+        x.setPtype(d1.getPtype());
+        x.setNum(d1.getNum());
+        x.setType(d1.getType());
+        y.setField(d2.getField());
+        y.setExpand(d2.getExpand());
+        y.setPtype(d2.getPtype());
+        y.setNum(d2.getNum());
+        y.setType(d2.getType());
+        dto.setX(x);
+        dto.setY(y);
+        return dto;
+    }
+
+    public void deleteByUid(String uid) {
+        this.remove(Wrappers.<CustomAnalysisItemSchema>lambdaQuery().eq(CustomAnalysisItemSchema::getUid, uid));
+    }
+}

+ 24 - 0
src/main/java/cn/cslg/pas/service/business/CustomAnalysisItemSettingService.java

@@ -0,0 +1,24 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.domain.business.CustomAnalysisItemSetting;
+import cn.cslg.pas.mapper.CustomAnalysisItemSettingMapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 自定义分析项目图表设置 服务实现类
+ * </p>
+ */
+@Service
+public class CustomAnalysisItemSettingService extends ServiceImpl<CustomAnalysisItemSettingMapper, CustomAnalysisItemSetting> {
+    @Autowired
+    private CustomAnalysisItemSettingMapper customAnalysisItemSettingMapper;
+
+
+    public void deleteByUid(String uid) {
+        this.remove(Wrappers.<CustomAnalysisItemSetting>lambdaQuery().eq(CustomAnalysisItemSetting::getUid, uid));
+    }
+}

+ 5 - 4
src/main/resources/mapper/CustomAnalyseMapper.xml

@@ -2,13 +2,14 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.cslg.pas.mapper.CustomAnalysisItemMapper">
 
+    <sql id="Base_Column_Analyse_Item">
+        id,uid,name,parent_id,permissions,project_id,tenant_id,sort,type,status,create_id,create_name,create_time,update_time
+    </sql>
+
     <select id="queryAnalyseGroup" resultType="cn.cslg.pas.common.dto.customAnalyse.SelectCustomAnalyseListDTO">
-        select id,name,parent_id,permissions,project_id,tenant_id,sort,type,status,creator
+        select <include refid="Base_Column_Analyse_Item"/>
         from os_custom_analysis_item
         <where>
-            <if test="vo.type != null">
-                AND type = #{vo.type}
-            </if>
             and (
             <if test="vo.tenantId != null">
                 /*系统公开情况*/