瀏覽代碼

Merge remote-tracking branch 'origin/master' into master

yangyj 2 年之前
父節點
當前提交
80010cd4b1

+ 15 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -855,7 +855,7 @@ public class ExcelTabController extends BladeController {
         ProjectInfo projectInfo = projectInfoService.getById(wbsTreePrivate.getProjectId());
         // 添加标题显示
         Elements trs = table.select("tr");
-        for (int i = 0; i < 6; i++) {
+        for (int i = 1; i < 6; i++) {
             Element tr = trs.get(i);
             Elements tds = tr.select("td");
             for (int j = 0; j < tds.size(); j++) {
@@ -3669,4 +3669,18 @@ public class ExcelTabController extends BladeController {
         }
     }
 
+    /**
+     * 编辑元素,提示未匹配元素
+     */
+    @GetMapping("/getUnMatchField")
+    @ApiOperationSupport(order = 20)
+    @ApiOperation(value = "编辑元素,提示未匹配元素", notes = "返回未匹配元素数组")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "pkeyId", value = "WBS私有库的pkeyId", required = true),
+            @ApiImplicitParam(name = "tabId", value = "表信息id", required = true)
+    })
+    public R<List<WbsFormElement>> getUnMatchField(Long pkeyId,Long tabId) throws FileNotFoundException {
+        return R.data(excelTabService.getUnMatchField(pkeyId,tabId));
+    }
+
 }

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

@@ -20,6 +20,7 @@ import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.springblade.business.entity.TrialSelfInspectionRecord;
 import org.springblade.manager.entity.ExcelTab;
+import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.vo.ExceTabTreVO;
 import org.springblade.manager.vo.ExcelTabVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -28,6 +29,7 @@ import org.springblade.manager.vo.ExcelTabWbsTypeVO;
 import org.springblade.manager.vo.WbsTreeVO;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * 清表基础数据表 Mapper 接口
@@ -75,4 +77,6 @@ public interface ExcelTabMapper extends BaseMapper<ExcelTab> {
     List<String> queryTrialRecordId(String nodeId);
 
     ExcelTab getWaterByTableId(@Param("id") Long excelId);
+
+    List<WbsFormElement> getUnMatchField(@Param("tabId") Long tabId, @Param("set") Set<String> set);
 }

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

@@ -204,6 +204,14 @@
                                         AND met.id =
                                             (SELECT SUBSTRING_INDEX(alias,',',1)  from m_excel_tab WHERE  id = #{id})
     </select>
+    <select id="getUnMatchField" resultType="org.springblade.manager.entity.WbsFormElement">
+        select * from m_wbs_form_element
+        WHERE f_id = #{tabId}  and is_deleted = 0 and e_name not in
+        <foreach collection="set" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+
 
     <delete id="removeBussTabInfoById">
         delete from m_wbs_tree_contract where p_key_id = #{pkeyid}

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

@@ -23,6 +23,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.manager.bean.TableInfo;
 import org.springblade.manager.entity.ExcelEditCallback;
 import org.springblade.manager.entity.ExcelTab;
+import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.enums.ExecuteType;
 import org.springblade.manager.vo.ExceTabTreVO;
 import org.springblade.manager.vo.ExcelTabVO;
@@ -172,4 +173,6 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
      * 已经关联公式元素的单元格灰色背景设置
      */
     void gsColor(Long pKeyId, String nodeId, String projectId, Document doc);
+
+    List<WbsFormElement> getUnMatchField(Long pkeyId, Long tabId) throws FileNotFoundException;
 }

+ 34 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.log.StaticLog;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -717,6 +718,39 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         return parent;
     }
 
+    /**
+     *编辑元素,提示未匹配元素
+     * @param pkeyId
+     * @param tabId
+     * @return
+     */
+    @Override
+    public List<WbsFormElement> getUnMatchField(Long pkeyId, Long tabId) throws FileNotFoundException {
+        // 获取 节点信息
+        WbsTreePrivate wbsTreePrivate = wbsTreePrivateService.getOne(
+                new LambdaQueryWrapper<WbsTreePrivate>().eq(WbsTreePrivate::getPKeyId,pkeyId));
+        // 读取html页面信息
+        File file1 = ResourceUtil.getFile(wbsTreePrivate.getHtmlUrl());
+        FileInputStream inputStream = new FileInputStream(file1);
+        String htmlString = IoUtil.readToString(inputStream);
+        // 样式集合
+        Document doc = Jsoup.parse(htmlString);
+        Element table = doc.select("table").first();
+        Elements td = table.select("td");
+        Set<String> set = new HashSet<>();
+        for (Element element : td) {
+            if (element.childNodes().size() >= 2) {
+                String title = element.childNodes().get(1).attr("placeholder");
+                if (StringUtils.isNotBlank(title)) {
+                    set.add(title);
+                }
+            }
+        }
+        //获取未匹配的字段
+        List<WbsFormElement> list = baseMapper.getUnMatchField(tabId, set);
+        return list;
+    }
+
     private void processElements(Elements elements) {
         elements.stream().map(this::findParentTd).filter(Objects::nonNull).forEach(element -> element.attr("gscolor", "11"));
     }