Ver Fonte

后管-元素库
1、新增“元素表回显”功能

LHB há 1 dia atrás
pai
commit
0274b7b2ff

+ 17 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsFormElementDetailTabExcelVO.java

@@ -0,0 +1,17 @@
+package org.springblade.manager.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author LHB
+ */
+@Data
+public class WbsFormElementDetailTabExcelVO {
+    @ApiModelProperty("id")
+    private Long id;
+    @ApiModelProperty("清表模板名称")
+    private String tableName;
+    @ApiModelProperty("清表节点名称")
+    private String nodeName;
+}

+ 40 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsFormElementDetailVO.java

@@ -0,0 +1,40 @@
+package org.springblade.manager.vo;
+
+import cn.hutool.core.date.DateTime;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.manager.entity.ExcelTab;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 元素实体表详情实体类
+ * @author LHB
+ */
+@Data
+public class WbsFormElementDetailVO {
+    @ApiModelProperty("id")
+    private Long id;
+    @ApiModelProperty("是否存在数据:true-存在,false-不存在")
+    private Boolean isExistData;
+    @ApiModelProperty("实体表")
+    private String tabEnName;
+    @ApiModelProperty("实体表名称")
+    private String tabChName;
+    @ApiModelProperty("创建人")
+    private String name;
+    @ApiModelProperty("创建时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    @ApiModelProperty("项目使用数量")
+    private Integer privateCount;
+    @ApiModelProperty("使用清表数")
+    private Integer tabExcelCount;
+
+    @ApiModelProperty("项目名称列表")
+    private List<String> projectList;
+}

+ 25 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.mixsmart.utils.StringUtils;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -17,10 +18,7 @@ import org.springblade.manager.dto.WbsFormElementDTO2;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.excel.*;
-import org.springblade.manager.vo.WbsFormElementVO;
-import org.springblade.manager.vo.WbsFormElementVO2;
-import org.springblade.manager.vo.WbsNodeTableVO;
-import org.springblade.manager.vo.WbsTreePrivateTableVO;
+import org.springblade.manager.vo.*;
 import org.springblade.manager.wrapper.WbsFormElementWrapper;
 import org.springblade.system.entity.Dict;
 import org.springblade.system.feign.IDictClient;
@@ -321,4 +319,27 @@ public class WbsFormElementController extends BladeController {
         return R.data(wbsFormElementService.checkTableExist(nodeId, tableName), "查询成功");
     }
 
+
+    /**
+     * 获取元素实体表详情
+     */
+    @GetMapping("/elementDetail")
+    @ApiOperationSupport(order = 17)
+    @ApiOperation(value = "获取元素实体表详情", notes = "传入id")
+    public R<WbsFormElementDetailVO> elementDetail(@RequestParam Long id) {
+        WbsFormElementDetailVO vo = wbsFormElementService.elementDetail(id);
+        return R.data(vo);
+    }
+    /**
+     * 获取元素实体表 对应的清表列表
+     */
+    @GetMapping("/elementDetailPage")
+    @ApiOperationSupport(order = 18)
+    @ApiOperation(value = "获取元素实体表 对应的清表列表", notes = "传入id")
+    public R<IPage<WbsFormElementDetailTabExcelVO>> elementDetail(@RequestParam Long id, @RequestParam Integer current, @RequestParam Integer pageSize) {
+
+        IPage<WbsFormElementDetailTabExcelVO> vo = wbsFormElementService.elementDetailPage(id,current,pageSize);
+        return R.data(vo);
+    }
+
 }

+ 9 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.java

@@ -2,6 +2,7 @@ package org.springblade.manager.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.dto.FormElementDTO2;
 import org.springblade.manager.dto.WbsFormElementDTO;
@@ -9,6 +10,8 @@ import org.springblade.manager.dto.WbsFormElementDTO2;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTabRelationExcelTab;
 import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.vo.WbsFormElementDetailTabExcelVO;
+import org.springblade.manager.vo.WbsFormElementDetailVO;
 import org.springblade.manager.vo.WbsFormElementVO;
 
 import java.util.List;
@@ -84,4 +87,10 @@ public interface WbsFormElementMapper extends BaseMapper<WbsFormElement> {
      * @return
      */
     int selectSumColumnLength(@Param("database") String database,@Param("tableName") String initTableName);
+
+    WbsFormElementDetailVO elementDetail(@Param("id") Long id);
+
+    List<String> selectProjectList(@Param("id") Long id);
+
+    IPage<WbsFormElementDetailTabExcelVO> selectTabExcelNodeList(Page page, @Param("id") Long id);
 }

+ 36 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.xml

@@ -192,5 +192,41 @@
             AND TABLE_NAME = #{tableName}
             AND DATA_TYPE = 'varchar'
     </select>
+    <select id="elementDetail" resultType="org.springblade.manager.vo.WbsFormElementDetailVO">
+        select
+            a.id,
+            a.tab_en_name,
+            a.tab_ch_name,
+            b.`name`,
+            a.create_time,
+            (select count(DISTINCT project_id) from m_wbs_tree_private where init_table_id = a.id and is_deleted = 0 and project_id is not null ) privateCount,
+            (select count(0) from m_excel_tab where tab_id = a.id) tabExcelCount
+        from m_table_info a
+                 left join blade_user b on a.create_user = b.id
+        where a.id = #{id}
+    </select>
+    <select id="selectProjectList" resultType="java.lang.String">
+        SELECT
+            b.project_name
+        FROM
+            m_wbs_tree_private a
+                INNER JOIN m_project_info b ON a.project_id = b.id
+        WHERE
+            init_table_id = #{id}
+          AND a.is_deleted = 0
+          AND a.project_id IS NOT NULL
+        GROUP BY
+            a.project_id
+    </select>
+    <select id="selectTabExcelNodeList" resultType="org.springblade.manager.vo.WbsFormElementDetailTabExcelVO">
+        SELECT
+            a.id,
+            ( SELECT NAME FROM m_excel_tab WHERE id = SUBSTRING_INDEX( a.alias, ',', 1 ) ) tableName,
+            ( SELECT NAME FROM m_excel_tab WHERE id = a.parent_id ) nodeName
+        FROM
+            m_excel_tab a
+        WHERE
+            a.tab_id = #{id}
+    </select>
 
 </mapper>

+ 6 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsFormElementService.java

@@ -8,9 +8,7 @@ import org.springblade.manager.dto.WbsFormElementDTO2;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.excel.WbsFormElementBatchExcel;
 import org.springblade.manager.excel.WbsFormElementExcel;
-import org.springblade.manager.vo.WbsFormElementVO;
-import org.springblade.manager.vo.WbsFormElementVO2;
-import org.springblade.manager.vo.WbsNodeTableVO;
+import org.springblade.manager.vo.*;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
@@ -58,4 +56,9 @@ public interface IWbsFormElementService extends BaseService<WbsFormElement> {
     boolean saveRelation(FormElementDTO2 formElementDTO);
 
     Boolean checkTableExist(String nodeId, String tableName);
+
+    WbsFormElementDetailVO elementDetail(Long id);
+
+    IPage<WbsFormElementDetailTabExcelVO> elementDetailPage(Long id, Integer current, Integer pageSize);
+
 }

+ 24 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.jsoup.Jsoup;
@@ -30,13 +31,10 @@ import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.utils.FileUtils;
 import org.springblade.manager.utils.StringCNUtils;
 import org.springblade.manager.utils.WbsElementUtil;
-import org.springblade.manager.vo.WbsFormElementVO;
-import org.springblade.manager.vo.WbsFormElementVO2;
-import org.springblade.manager.vo.WbsNodeTableVO;
+import org.springblade.manager.vo.*;
 import org.springblade.system.cache.ParamCache;
 import org.springframework.dao.DataAccessException;
 import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.ResultSetExtractor;
 import org.springframework.jdbc.core.SingleColumnRowMapper;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
@@ -45,7 +43,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.math.BigInteger;
 import java.text.ParseException;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -1128,4 +1125,26 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
             }
         }
     }
+
+    @Override
+    public WbsFormElementDetailVO elementDetail(Long id) {
+        WbsFormElementDetailVO vo = baseMapper.elementDetail(id);
+        vo.setIsExistData(false);
+        try {
+            //获取实体表是否存储数据
+            vo.setIsExistData(jdbcTemplate.queryForObject("select count(0) > 0 from " + vo.getTabChName(), Boolean.class));
+        } catch (Exception ignored) {
+        }
+        //获取项目列表
+        List<String> list = baseMapper.selectProjectList(id);
+        vo.setProjectList(list);
+        return vo;
+    }
+
+
+    @Override
+    public IPage<WbsFormElementDetailTabExcelVO> elementDetailPage(Long id, Integer current, Integer pageSize) {
+        IPage<WbsFormElementDetailTabExcelVO> wbsFormElementDetailTabExcelVOIPage = baseMapper.selectTabExcelNodeList(new Page(current, pageSize), id);
+        return wbsFormElementDetailTabExcelVOIPage;
+    }
 }