Kaynağa Gözat

只有在表单点清楚数据时才会删除附表

cr 2 gün önce
ebeveyn
işleme
3c544101a8

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/bean/TableInfo.java

@@ -27,6 +27,8 @@ public class TableInfo {
     private String groupId = "0";
     // 用于实验
     private String testGroupId = "0";
+    //清楚字段数据时 是否删除附表 0否 1是
+    private String isRemoveForSubTab;
 
 
     /**

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -134,6 +134,8 @@ public class TableElementConverter implements ITableElementConverter {
     /**取小数*/
     public Integer scale = 0;
     public Integer payRadicScale = 2;
+    //清楚字段数据时 是否删除附表 0否 1是
+    private String isRemoveForSubTab;
     /*计量属性*/
     /**根据表名获取对应表页对象*/
     public LinkedList<NodeTable> getTableByName(String initTableName){

+ 4 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -362,7 +362,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 tableInfo.setProjectId(dataInfo2.getString("projectId"));
                 //huangjn 填报的类型,施工或监理
                 tableInfo.setClassify(dataInfo2.getString("classify"));
-
+                tableInfo.setIsRemoveForSubTab(dataInfo2.getString("isRemoveForSubTab"));
                 //设置首件信息
                 this.setFirstData(dataInfo2, tableInfo);
                 //设置日志信息
@@ -466,11 +466,11 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 }else{
                    tableAll = createNodeTables(nodeId, tableInfoList.get(0).getContractId(), tableInfoList.get(0).getProjectId(), type,tableInfoList.get(0).getClassify(), tableInfoList.get(0).getTestGroupId());
                 }
-
+                String isRemoveForSubTab = "0";
 
                 if (tableAll.size() > tableInfoList.size()) {
                     TableInfo example = tableInfoList.get(0);
-
+                    isRemoveForSubTab=example.getIsRemoveForSubTab();
                     /*补充缺失的数据*/
                     List<Long> cp = tableInfoList.stream().map(TableInfo::getPkeyId).map(Long::parseLong).collect(Collectors.toList());
                     List<Long> load = tableAll.stream().map(NodeTable::getPKeyId).filter(pk -> !cp.contains(pk)).collect(Collectors.toList());
@@ -549,6 +549,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         tec.setExecuteType(type);
                         tec.setContractId(contractId);
                         tec.setProjectId(projectId);
+                        tec.setIsRemoveForSubTab(isRemoveForSubTab);
                         if (tec.isPresent()) {
                             tec.before();
                             this.formulaService.execute(tec);

+ 10 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -1696,14 +1696,16 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 headerFooterSub(subTableFds, tec);
                 /*如果识别到手填内容需要在附表写入数据后,更新评定关联数据*/
             }else {
-                List<NodeTable> subTabList = tec.getTableAll().stream().filter(e -> e.getNodeName().contains("附表") && (e.getTableType() == 1 || e.getTableType() == 5)).collect(Collectors.toList());
-                if(!subTabList.isEmpty()){
-                    String queryIds = subTabList.stream().map(e -> e.getPKeyId() + "").collect(Collectors.joining(","));
-                    // 如果不是系统自动生成的附表,则不删除。
-                    List<Long> ids = jdbcTemplate.query("SELECT a.p_key_id from m_wbs_tree_contract a LEFT JOIN m_wbs_tree_private b on b.p_key_id = a.is_type_private_pid " +
-                            "where a.is_deleted = 0 and (b.p_key_id is null or (b.is_deleted = 0 and b.is_link_table = 2 and b.type = 10 )) and a.p_key_id in ( " + queryIds +")", new SingleColumnRowMapper<>(Long.class));
-                    if (!ids.isEmpty()) {
-                        this.wbsTreeContractMapper.deleteLogicByIds(ids);
+                if(StringUtils.isNotEmpty(tec.getIsRemoveForSubTab())&&"1".equals(tec.getIsRemoveForSubTab())){
+                    List<NodeTable> subTabList = tec.getTableAll().stream().filter(e -> e.getNodeName().contains("附表") && (e.getTableType() == 1 || e.getTableType() == 5)).collect(Collectors.toList());
+                    if(!subTabList.isEmpty()){
+                        String queryIds = subTabList.stream().map(e -> e.getPKeyId() + "").collect(Collectors.joining(","));
+                        // 如果不是系统自动生成的附表,则不删除。
+                        List<Long> ids = jdbcTemplate.query("SELECT a.p_key_id from m_wbs_tree_contract a LEFT JOIN m_wbs_tree_private b on b.p_key_id = a.is_type_private_pid " +
+                                "where a.is_deleted = 0 and (b.p_key_id is null or (b.is_deleted = 0 and b.is_link_table = 2 and b.type = 10 )) and a.p_key_id in ( " + queryIds +")", new SingleColumnRowMapper<>(Long.class));
+                        if (!ids.isEmpty()) {
+                            this.wbsTreeContractMapper.deleteLogicByIds(ids);
+                        }
                     }
                 }
             }