lvy пре 1 месец
родитељ
комит
5999126cec

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

@@ -20,6 +20,9 @@ import io.swagger.annotations.ApiModelProperty;
 import org.springblade.manager.entity.ExcelTab;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springblade.manager.entity.ProjectInfo;
+
+import java.util.List;
 
 /**
  * 清表基础数据表视图实体类
@@ -35,4 +38,18 @@ public class ExcelTabVO extends ExcelTab {
     @ApiModelProperty(value = "清表模板类型名称")
     private String tableTemplateTypeName;
 
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+
+    List<ProjectInfoVO1> projectInfoList;
+
+    @ApiModelProperty(value = "项目使用数量")
+    private Integer projectUseNumber;
+
+    @ApiModelProperty(value = "清表使用数量")
+    private Integer excelUseNumber;
+
 }

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -188,6 +188,17 @@ public class ExcelTabController extends BladeController {
         return R.data(ExcelTabWrapper.build().entityVO(detail));
     }
 
+    /**
+     * 详情
+     */
+    @GetMapping("/templateDetail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "传入excelTab")
+    public R<ExcelTabVO> templateDetail(@RequestParam Long id) {
+        ExcelTabVO vo = excelTabService.templateDetail(id);
+        return R.data(vo);
+    }
+
     /**
      * 分页 清表基础数据表
      */

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.java

@@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.vo.ExcelTabWbsTypeVO;
 import org.springblade.manager.vo.WbsTreeVO;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
@@ -79,4 +80,6 @@ public interface ExcelTabMapper extends BaseMapper<ExcelTab> {
     ExcelTab getWaterByTableId(@Param("id") Long excelId);
 
     List<WbsFormElement> getUnMatchField(@Param("tabId") Long tabId, @Param("set") Set<String> set);
+
+    List<ExcelTabVO> selectRootExcelTab(IPage<ExcelTabVO> page, @Param("projectId") Long projectId,@Param("rootIds") Collection<Long> rootIds);
 }

+ 23 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml

@@ -202,6 +202,14 @@
         <if test="excelTab.name!=null and excelTab.name!=''">
             AND x.name like concat(concat('%', #{excelTab.name}),'%')
         </if>
+        <if test="param2.parentId == null or param2.parentId == 0">
+            <if test="param2.tabType != null">
+                AND x.tab_type = #{param2.tabType}
+            </if>
+            <if test="param2.tableTemplateType != null">
+                AND x.table_template_type = #{param2.tableTemplateType}
+            </if>
+        </if>
     </select>
     <select id="getWaterByTableId" resultType="org.springblade.manager.entity.ExcelTab">
         select * from m_excel_tab met WHERE met.parent_id = 0 AND met.table_template_type = 2 AND met.is_deleted = 0
@@ -215,6 +223,21 @@
             #{item}
         </foreach>
     </select>
+    <select id="selectRootExcelTab" resultType="org.springblade.manager.vo.ExcelTabVO">
+        SELECT project_id as projectId, project_name as projectName, root_id as id from m_project_info a RIGHT JOIN  (
+            SELECT project_id, SUBSTRING_INDEX(alias,',',1) as root_id from m_wbs_tree_private a LEFT JOIN m_excel_tab b on a.excel_id = b.id where a.type = 2 and a.is_deleted =0 and a.excel_id is not null
+            <if test="projectId !=null and projectId > 0">
+                and project_id = #{projectId}
+            </if>
+            GROUP BY root_id,project_id
+            <if test="rootIds !=null">
+                and root_id in
+                <foreach collection="rootIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        ) as t on a.id = t.project_id where project_id is not null
+    </select>
 
 
     <delete id="removeBussTabInfoById">

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java

@@ -19,6 +19,7 @@ package org.springblade.manager.service;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.jsoup.nodes.Document;
 import org.springblade.business.dto.TrialSelfInspectionRecordDTO;
 import org.springblade.core.mp.base.BaseService;
@@ -222,4 +223,6 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
     void expailHtmlInfo(String thmlUrl, Long id, String s) throws Exception ;
 
     R batchAddNumbers(BatchAddNumbersDTO dto) throws Exception;
+
+    ExcelTabVO templateDetail(Long id);
 }

+ 75 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -11,6 +11,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 com.mixsmart.utils.FormulaUtils;
 import com.mixsmart.utils.ListUtils;
 import com.mixsmart.utils.RegexUtils;
@@ -73,6 +74,7 @@ import org.springblade.manager.mapper.ExcelTabMapper;
 import org.springblade.manager.service.*;
 import org.springblade.manager.utils.*;
 import org.springblade.manager.vo.*;
+import org.springblade.manager.wrapper.ExcelTabWrapper;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.cache.ParamCache;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -143,7 +145,79 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
     @Override
     public IPage<ExcelTabVO> selectExcelTabPage(IPage<ExcelTabVO> page, ExcelTabVO excelTab) {
-        return page.setRecords(baseMapper.selectExcelTabPage(page, excelTab));
+        if (excelTab.getProjectId() != null && excelTab.getProjectId() > 0 && (excelTab.getParentId() == null || excelTab.getParentId() == 0)) {
+            List<ExcelTabVO> records  = baseMapper.selectRootExcelTab(page, excelTab.getProjectId(), null);
+            if (!records.isEmpty()) {
+                List<Long> ids = records.stream().map(ExcelTabVO::getId).collect(Collectors.toList());
+                List<ExcelTab> excelTabs = this.listByIds(ids);
+                Map<Long, ExcelTab> map = excelTabs.stream().collect(toMap(ExcelTab::getId, v -> v));
+                records.forEach(v -> {
+                    ProjectInfoVO1 projectInfoVO1 = new ProjectInfoVO1();
+                    projectInfoVO1.setProjectId(v.getProjectId());
+                    projectInfoVO1.setProjectName(v.getProjectName());
+                    if (map.get(v.getId()) != null) {
+                        BeanUtil.copyProperties(map.get(v.getId()), v);
+                    }
+                    v.setProjectInfoList(Collections.singletonList(projectInfoVO1));
+                });
+            }
+            return page.setRecords(records);
+        }
+        List<ExcelTabVO> records = baseMapper.selectExcelTabPage(page, excelTab);
+        if (!records.isEmpty() && (excelTab.getParentId() == null || excelTab.getParentId() == 0)) {
+            Set<Long> set = records.stream().map(ExcelTabVO::getId).collect(Collectors.toSet());
+            List<ExcelTabVO> projectInfoList  = baseMapper.selectRootExcelTab(page, null, set);
+            Map<Long, List<ExcelTabVO>> collect = projectInfoList.stream().collect(Collectors.groupingBy(ExcelTabVO::getId));
+            records.forEach(v -> {
+                List<ExcelTabVO> excelTabVOS = collect.get(v.getId());
+                if (excelTabVOS != null) {
+                    List<ProjectInfoVO1> list = excelTabVOS.stream().map(vo -> {
+                        ProjectInfoVO1 projectInfoVO1 = new ProjectInfoVO1();
+                        projectInfoVO1.setProjectId(vo.getProjectId());
+                        projectInfoVO1.setProjectName(vo.getProjectName());
+                        return projectInfoVO1;
+                    }).collect(Collectors.toList());
+                    v.setProjectInfoList(list);
+                }
+            });
+        }
+        return page.setRecords(records);
+    }
+
+    @Override
+    public ExcelTabVO templateDetail(Long id) {
+        ExcelTab detail = this.getById(id);
+        if (detail == null) {
+            return new ExcelTabVO();
+        }
+        ExcelTabVO excelTabVO = ExcelTabWrapper.build().entityVO(detail);
+        if (detail.getParentId() != null && detail.getParentId() > 0) {
+            return excelTabVO;
+        }
+        Map<String, Object> map = jdbcTemplate.queryForMap("SELECT count(a.id) as total,count(t.id) as useNum from m_excel_tab a LEFT JOIN ( select excel_id as id from m_wbs_tree_private where type = 2 and is_deleted = 0 and excel_id is not null GROUP BY excel_id ) as t " +
+                "on a.id = t.id where a.is_deleted = 0 and file_type = 3 and alias like '" + id + "%'");
+        if (map.get("total") == null) {
+            excelTabVO.setTabCout(0);
+        } else {
+            excelTabVO.setTabCout(Integer.parseInt(map.get("total").toString()));
+        }
+        if (map.get("useNum") == null) {
+            excelTabVO.setExcelUseNumber(0);
+        } else {
+            excelTabVO.setExcelUseNumber(Integer.parseInt(map.get("useNum").toString()));
+        }
+        List<ExcelTabVO> projectInfoList  = baseMapper.selectRootExcelTab(new Page<>(), null, Collections.singleton(id));
+        if (projectInfoList != null && !projectInfoList.isEmpty()) {
+            List<ProjectInfoVO1> list = projectInfoList.stream().map(vo -> {
+                ProjectInfoVO1 projectInfoVO1 = new ProjectInfoVO1();
+                projectInfoVO1.setProjectId(vo.getProjectId());
+                projectInfoVO1.setProjectName(vo.getProjectName());
+                return projectInfoVO1;
+            }).collect(Collectors.toList());
+            excelTabVO.setProjectInfoList(list);
+            excelTabVO.setProjectUseNumber(list.size());
+        }
+        return excelTabVO;
     }
 
     @Override