Browse Source

分部评定

yangyj 11 tháng trước cách đây
mục cha
commit
c3bd95ff5a

+ 5 - 3
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/DW01.java

@@ -12,6 +12,8 @@ import java.util.stream.Collectors;
  * @description 单位工程质量检验评定表
  */
 public class DW01 extends EvaSummary<Item01>{
+    public static  final String TABLE_NAME="m_20231027100459_1717724038211567616";
+
     private FormData number;
     private FormData name;
     private FormData level;
@@ -31,13 +33,13 @@ public class DW01 extends EvaSummary<Item01>{
 
     public DW01(List<FormData> processFds) {
         for(FormData fd:processFds){
-            if(fd.getEName().contains("分项工程编号")||fd.getEName().contains("分部工程编号")){
+            if(fd.getEName().equals("分部工程_分部工程编号")){
                 this.number=fd;
                 this.fm.put(fd.getCode(),(List<Item01> l,Integer pn)->l.stream().map(Item01::getNumber).collect(Collectors.toList()));
-            }else if(fd.getEName().contains("分项工程名称")||fd.getEName().contains("分部工程名称")){
+            }else if(fd.getEName().equals("分部工程_分部工程名称")){
                 this.name=fd;
                 this.fm.put(fd.getCode(),(List<Item01> l,Integer pn)->l.stream().map(Item01::getName).collect(Collectors.toList()));
-            }else if(fd.getEName().contains("质量等级")){
+            }else if(fd.getEName().equals("分部工程_质量等级")){
                 this.level=fd;
                 this.fm.put(fd.getCode(),(List<Item01> l,Integer pn)->l.stream().map(Item01::getLevel).collect(Collectors.toList()));
             }else if(fd.getEName().trim().equals("备注")){

+ 49 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/DW02.java

@@ -1,11 +1,26 @@
 package org.springblade.manager.vo;
 
+import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.dto.FormData;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 /**
  * @author yangyj
  * @Date 2024/8/19 16:18
  * @description 单位工程质量检验评定表2
  */
 public class DW02 extends EvaSummary<Item02>{
+    public static  final String TABLE_NAME="m_20231027100505_1717724063251562496";
+
+    private FormData name;
+    private FormData passRate;
+    private FormData weight;
+    /**加权平均分*/
+    private FormData level;
     @Override
     public Integer getPageNum() {
         return null;
@@ -13,6 +28,39 @@ public class DW02 extends EvaSummary<Item02>{
 
     @Override
     public boolean checked() {
-        return false;
+        return this.name!=null&&passRate!=null&&weight!=null&&level!=null;
+    }
+
+
+    public DW02(List<FormData> processFds) {
+        for(FormData fd:processFds){
+         if(fd.getEName().contains("分部工程_分部工程名称")){
+                this.name=fd;
+                this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->l.stream().map(Item02::getName).collect(Collectors.toList()));
+            }else if(fd.getEName().contains("分部工程_评分")){
+                this.passRate=fd;
+                this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->l.stream().map(Item02::getPassRate).collect(Collectors.toList()));
+            }else if(fd.getEName().trim().equals("分部工程_质量等级")){
+                this.level=fd;
+                this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->l.stream().map(Item02::getLevel).collect(Collectors.toList()));
+            }
+         else if(fd.getEName().trim().equals("分部工程_权值")){
+             this.weight=fd;
+             this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->l.stream().map(Item02::getWeight).collect(Collectors.toList()));
+         }
+            if(this.name != null && this.passRate != null){
+                /*匹配完成*/
+                this.fds.add(this.name);
+                this.fds.add(this.passRate);
+                this.fds.add(this.weight);
+                break;
+            }
+        }
+    }
+
+    public void source(List<Item02> abList) {
+        if (Func.isNotEmpty(abList)) {
+            this.datas.addAll(abList);
+        }
     }
 }

+ 4 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/FB01.java

@@ -2,6 +2,7 @@ package org.springblade.manager.vo;
 
 import com.alibaba.fastjson.JSON;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.FormData;
 import org.springblade.manager.entity.FormulaDataBlock;
@@ -18,9 +19,10 @@ import java.util.stream.IntStream;
  * @Date 2023/12/5 17:16
  * @description 分部工程质量检验评定表1
  */
+@EqualsAndHashCode(callSuper = true)
 @Data
 public class FB01 extends EvaSummary<Item01>{
-
+    public static  final String TABLE_NAME="m_20231027094738_1717719671702028288";
     private FormData number;
     private FormData name;
     private FormData level;
@@ -49,7 +51,7 @@ public class FB01 extends EvaSummary<Item01>{
             }else if(fd.getEName().contains("质量等级")){
                 this.level=fd;
                 this.fm.put(fd.getCode(),(List<Item01> l,Integer pn)->l.stream().map(Item01::getLevel).collect(Collectors.toList()));
-            }else if(fd.getEName().trim().equals("备注")){
+            }else if("备注".equals(fd.getEName().trim())){
                 this.remark=fd;
                 this.fm.put(fd.getCode(),(List<Item01> l,Integer pn)->l.stream().map(Item01::getRemark).collect(Collectors.toList()));
             }

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/FB02.java

@@ -24,6 +24,7 @@ import static java.util.regex.Pattern.compile;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class FB02 extends EvaSummary<Item02>{
+    public static  final String TABLE_NAME="m_20231027094746_1717719707244560384";
     private FormData subItem;
     private FormData sn;
     private FormData name;

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/Item02.java

@@ -13,6 +13,7 @@ public class Item02 {
     private String name;
     private Double passRate=100d;
     private Integer weight=1;
+    private String level;
 
     public void setName(String name) {
         if(name!=null&&name.contains("△")){

+ 74 - 22
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -2777,6 +2777,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     @Override
     public R<Object> evaluate(Long pkeyId) {
         if (StringUtils.isNumber(pkeyId)) {
+            /*节点信息*/
             WtcEva wtcEva = this.getSqlOne(
                        "select b.tree_code treeCode ,a.contract_id contractId,a.init_table_name initTableName,a.html_url htmlUrl ,a.node_name nodeName ,a.parent_id parentId " +
                             "from m_wbs_tree_contract a join m_wbs_tree_contract b on (a.parent_id=b.id and a.contract_id=b.contract_id) where a.p_key_id ="
@@ -2786,7 +2787,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     wtcEva.setPKeyId(pkeyId);
                     List<FormData> processFds = this.createFormDataByTableName(wtcEva.getInitTableName());
                     LinkedList<String> treeCode = new LinkedList<>(FormulaUtils.treeCodeSplit(wtcEva.getTreeCode()));
-                    if(wtcEva.getInitTableName().equals("m_20231027094746_1717719707244560384")) {
+                    if(FB02.TABLE_NAME.equals(wtcEva.getInitTableName())) {
                         FB02 fb02 = new FB02(processFds);
                         if (fb02.checked()) {
                             /*swId是分项评定的父节点Id*/
@@ -2813,7 +2814,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                 }
                             }
                         }
-                    }else  if(wtcEva.getInitTableName().equals("m_20231027094738_1717719671702028288")){
+                    }else  if(FB01.TABLE_NAME.equals(wtcEva.getInitTableName())){
                         FB01 fb01 = new FB01(processFds);
                         if(fb01.checked()) {
                             /*获取同一个treeCode前缀下的所有分项评定表*/
@@ -2860,44 +2861,95 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                 }
                             }
                         }
-                    }else if(wtcEva.getInitTableName().equals("m_20231027100459_1717724038211567616")){
+                    }else if(DW01.TABLE_NAME.equals(wtcEva.getInitTableName())){
                         /*单位评定表一*/
-                        FB01 fb01 = new FB01(processFds);
-                        if (fb01.checked()){
+                        DW01 dw01 = new DW01(processFds);
+                        if (dw01.checked()){
                             List<FormData> fbFds = this.createFormDataByTableName("m_20231027094738_1717719671702028288");
-                            FB01 fb01a = new FB01(fbFds);
-                            String keys = Stream.of(fb01a.getNumber(),fb01a.getName(),fb01a.getLevel()).map(FormData::getKey).map(StringUtils::handleNull).collect(Collectors.joining(",c.","c.",""));
+                            FormData fbName = null,fbNumber = null,fbLevel = null;
+                            for(FormData e:fbFds){
+                                if(e.getEName().startsWith("分部工程名称")){
+                                    fbName=e;
+                                }else if(e.getEName().startsWith("分部工程编号")){
+                                    fbNumber=e;
+                                }else if(e.getEName().startsWith("质量等级")){
+                                    fbLevel=e;
+                                }
+                            }
+                            if(!(fbName!=null&&fbNumber!=null&&fbLevel!=null)){
+                                return R.fail("未能匹配分部评定节点");
+                            }
+                            String keys = Stream.of(fbName,fbNumber,fbLevel).map(FormData::getKey).map(StringUtils::handleNull).collect(Collectors.joining(",c.","c.",""));
                             List<Map<String,Object>> mapList = jdbcTemplate.queryForList("select "+keys+" from (select id,tree_code from m_wbs_tree_contract where tree_code like '"+treeCode.getLast()+"%' and contract_id ="+wtcEva.getContractId()+" and major_data_type=2 and is_deleted=0 and node_type=3 ORDER BY tree_code)a join m_wbs_tree_contract b on a.id=b.parent_id" +
                                     " join m_20231027094738_1717719671702028288 c on b.p_key_id=c.p_key_id where b.contract_id ="+wtcEva.getContractId()+" and b.is_deleted=0 and b.init_table_name='m_20231027094738_1717719671702028288'" +
                                     "ORDER BY a.tree_code");
                             if(mapList.size()>0){
                                 List<Item01> abList= new ArrayList<>();
-                                mapList.forEach(map->{
+                                for (Map<String,Object> map:mapList){
                                     Item01 item = new Item01();
-                                    item.setName(fb01a.getName().getKey());
-                                    item.setNumber(fb01a.getNumber().getKey());
-                                    item.setLevel(fb01a.getLevel().getKey());
+                                    item.setName(StringUtils.handleNull(map.get(fbName.getKey())).split("_\\^_")[0]);
+                                    item.setNumber(StringUtils.handleNull(map.get(fbNumber.getKey())).split("_\\^_")[0]);
+                                    item.setLevel(StringUtils.handleNull(map.get(fbLevel.getKey())).split("_\\^_")[0]);
                                     abList.add(item);
-                                });
-                                fb01.source(abList);
-                                if (fb01.getDatas().size() > 0) {
+                                }
+                                dw01.source(abList);
+                                if (dw01.getDatas().size() > 0) {
                                     Map<String, String> tableKeysCoordsMap = FormulaUtils.getElementCell(wtcEva.getHtmlUrl());
-                                    if (fb01.initFdCoords(tableKeysCoordsMap)) {
+                                    if (dw01.initFdCoords(tableKeysCoordsMap)) {
                                         /*根据数据长度,增减页数*/
-                                        List<WbsTreeContract> wtcList = this.adjustPageSize(fb01.getPageNum(), wtcEva, processFds);
-                                        if (fb01.flush(wtcList)) {
-                                            this.jdbcTemplate.batchUpdate(fb01.getSql(), fb01.getParams());
+                                        List<WbsTreeContract> wtcList = this.adjustPageSize(dw01.getPageNum(), wtcEva, processFds);
+                                        if (dw01.flush(wtcList)) {
+                                            this.jdbcTemplate.batchUpdate(dw01.getSql(), dw01.getParams());
                                             return R.success("成功");
                                         }
                                     }
                                 }
                             }
                         }
-                    }else if(wtcEva.getInitTableName().equals("m_20231027100505_1717724063251562496")){
+                    }else if(DW02.TABLE_NAME.equals(wtcEva.getInitTableName())){
                         /*单位评定表二*/
-                        FB02 fb02 = new FB02(processFds);
-                        if (fb02.checked()){
-
+                        /*单位评定表一*/
+                        DW02 dw02 = new DW02(processFds);
+                        if (dw02.checked()){
+                            List<FormData> fbFds = this.createFormDataByTableName(FB02.TABLE_NAME);
+                            FormData fbName = null,passRate = null,weight = null,fbLevel=null;
+                            for(FormData e:fbFds){
+                                if(e.getEName().startsWith("分部工程名称")){
+                                    fbName=e;
+                                }else if(e.getEName().startsWith("分部工程实测得分计算")){
+                                    passRate=e;
+                                }else if(e.getEName().startsWith("质量等级")){
+                                    fbLevel=e;
+                                }
+                            }
+                            if(!(fbName!=null&&passRate!=null&&fbLevel!=null)){
+                                return R.fail("未能匹配分部评定节点");
+                            }
+                            String keys = Stream.of(fbName,passRate,fbLevel).map(FormData::getKey).map(StringUtils::handleNull).collect(Collectors.joining(",c.","c.",""));
+                            List<Map<String,Object>> mapList = jdbcTemplate.queryForList("select "+keys+" from (select id,tree_code from m_wbs_tree_contract where tree_code like '"+treeCode.getLast()+"%' and contract_id ="+wtcEva.getContractId()+" and major_data_type=2 and is_deleted=0 and node_type=3 ORDER BY tree_code)a join m_wbs_tree_contract b on a.id=b.parent_id" +
+                                    " join "+FB02.TABLE_NAME+" c on b.p_key_id=c.p_key_id where b.contract_id ="+wtcEva.getContractId()+" and b.is_deleted=0 and b.init_table_name='"+FB02.TABLE_NAME+"'" +
+                                    "ORDER BY a.tree_code");
+                            if(mapList.size()>0){
+                                List<Item02> abList= new ArrayList<>();
+                                for (Map<String,Object> map:mapList){
+                                      Item02 item = new Item02();
+                                      item.setName(StringUtils.handleNull(map.get(fbName.getKey())).split("_\\^_")[0]);
+                                      item.setPassRate(BaseUtils.obj2DoubleZero(StringUtils.handleNull(map.get(passRate.getKey())).split("_\\^_")[0]));
+                                      item.setLevel(StringUtils.handleNull(map.get(fbLevel.getKey())).split("_\\^_")[0]);
+                                }
+                                dw02.source(abList);
+                                if (dw02.getDatas().size() > 0) {
+                                    Map<String, String> tableKeysCoordsMap = FormulaUtils.getElementCell(wtcEva.getHtmlUrl());
+                                    if (dw02.initFdCoords(tableKeysCoordsMap)) {
+                                        /*根据数据长度,增减页数*/
+                                        List<WbsTreeContract> wtcList = this.adjustPageSize(dw02.getPageNum(), wtcEva, processFds);
+                                        if (dw02.flush(wtcList)) {
+                                            this.jdbcTemplate.batchUpdate(dw02.getSql(), dw02.getParams());
+                                            return R.success("成功");
+                                        }
+                                    }
+                                }
+                            }
                         }
                     }
                 }