소스 검색

监理开工报告中期支付汇总

yangyj 1 년 전
부모
커밋
57ec942249

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/InventoryForm.java

@@ -2,6 +2,8 @@ package org.springblade.manager.vo;
 
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 /**
  * @author yangyj
  * @Date 2024/1/12 10:20
@@ -18,6 +20,10 @@ public class InventoryForm {
     private String formNumber;
     /*章节*/
     private  String chapter;
+    /**单位*/
+    private String unit;
+    /**现行单价*/
+    private String currentPrice;
     /*中标价格*/
     private  String bidPrice;
     /*合同数量*/

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

@@ -117,4 +117,5 @@ public class MeterInfo {
         return this.chapters;
     }
 
+
 }

+ 7 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/SupervisionCertificate.java

@@ -43,4 +43,11 @@ public class SupervisionCertificate implements  DataModel{
     private Boolean isSummary=false;
     /**计算的时候控制正负属性*/
     private BigDecimal invertState=BigDecimal.ONE;
+
+    public SupervisionCertificate(String itemName) {
+        this.itemName = itemName;
+    }
+
+    public SupervisionCertificate() {
+    }
 }

+ 53 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -607,18 +607,62 @@ public class ExecutorMeter extends FormulaExecutor {
 
         @Override
         public void parse() {
+            builderFormDatas(SupervisionCertificate.class);
             List<InventoryForm> inventoryForms = tec.meterInfo.getInventoryForms();
-            List<InventoryForm> chapters = tec.meterInfo.getChapter();
-            LinkedHashMap<Integer, List<ChangeToken>> changeTokenListMap = tec.meterInfo.getChangeTokenListMap();
-            /* 本期变更 */
-            List<ChangeToken> changeTokenList0 = changeTokenListMap.get(MeterInfo.CUR);
-            /* 上期末变更 */
-            List<ChangeToken> changeTokenList1 = changeTokenListMap.get(MeterInfo.PRE);
-            /* 本期末变更 */
-            List<ChangeToken> changeTokenList2 = changeTokenListMap.get(MeterInfo.END);
+            /*List<InventoryForm> chapters = tec.meterInfo.getChapter();*/
             /*合同金额*/
             Map<String, BigDecimal[]> contractMoney = contractMoneySum.apply(inventoryForms);
-            LinkedHashMap<String, InventoryForm> dictMap = chapters.stream().collect(Collectors.toMap(e->chapterPreFixFc.apply(e),e -> e, (v1, v2) -> v1,LinkedHashMap::new));
+           Map<String,List<InventoryForm>> group=inventoryForms.stream().filter(e->StringUtils.isNotEmpty(e.getContractMoney())).collect(Collectors.groupingBy(ExecutorMeter.this::getPrefix,Collectors.toList()));
+           // LinkedHashMap<String, InventoryForm> dictMap = chapters.stream().sorted(Comparator.comparingInt(toIntFc)).collect(Collectors.toMap(e->chapterPreFixFc.apply(e),e -> e, (v1, v2) -> v1,LinkedHashMap::new));
+            Map<SupervisionCertificate, Map<Function<SupervisionCertificate, String>, Consumer<String>>> summaryConfigMap = new HashMap<>();
+            itemNamesMap.forEach((k,v)->{
+                SupervisionCertificate sc= new SupervisionCertificate(k);
+                BigDecimal[] arr =  contractMoney.get(v);
+                if(arr!=null) {
+                    if ("100".equals(v)) {
+                        BigDecimal[] chapter200 = contractMoney.get("200");
+                        if (chapter200 != null) {
+                            arr[0] = arr[0].add(chapter200[0]);
+                            arr[1] = arr[1].add(chapter200[1]);
+                        }
+                    }
+                    sc.setContractAmount(arr[0].toPlainString());
+                }
+                if(BaseUtils.handleObj2Integer(v)>0) {
+                   List<InventoryForm> list= group.get(v);
+                    InventoryForm one =list.get(0);
+                    sc.setPrice(one.getCurrentPrice());
+                    sc.setMonth(one.getUnit());
+                }
+                if("小计".equals(k)){
+                    addGetSetConfig(sc, summaryConfigMap, SupervisionCertificate::getContractAmount, sc::setContractAmount);
+                }
+                if("动员预付款".equals(k)){
+                    sc.setContractAmount(StringUtils.handleNull(tec.meterInfo.getBaseInfo().getDyTotalAmount()));
+                    sc.setCurrentAmount(currentStart);
+                    sc.setPeriodEndAmount(sumStart);
+                    sc.setPreviousEndAmount(subtractFc.apply(sumStart,currentStart));
+                }
+                if("实际支付金额".equals(k)){
+                    sc.setCurrentAmount(currentStart);
+                    sc.setPeriodEndAmount(sumStart);
+                    sc.setPreviousEndAmount(subtractFc.apply(sumStart,currentStart));
+                }
+                dataList.add(sc);
+            });
+            /*分行合计列,合计的时候需要计入手填部分*/
+            fieldGetSet(summaryConfigMap,x->!x.getIsSummary(),SupervisionCertificate::getInvertState);
+            /*占位行*/
+            dataList.stream().filter(t->t.getItemName().equals("小计")).findFirst().ifPresent(t->{
+                int over= capacity-dataList.size();
+                if(over>0){
+                    int index = dataList.indexOf(t);
+                    for(int i=0;i<over;i++){
+                        dataList.add(index,new SupervisionCertificate(""));
+                    }
+                }
+            });
+            putOut();
         }
 
     }

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

@@ -174,7 +174,7 @@ public class FormulaDaoImpl implements IFormulaDao {
     @Override
     public Function<Long, List<InventoryForm>> getInventoryFormFc() {
         return  contractId->{
-           String sql="select id,form_name,parent_id,chapter_number chapter,bid_price,contract_total,form_number,contract_money,change_money from  s_contract_inventory_form where   is_deleted=0  and contract_id="+contractId;
+           String sql="select id,form_name,parent_id,chapter_number chapter,unit,current_price,bid_price,contract_total,form_number,contract_money,change_money from  s_contract_inventory_form where   is_deleted=0  and contract_id="+contractId;
            return getEntityList(sql,InventoryForm.class);
         };
     }

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

@@ -2525,7 +2525,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     @Override
     public Map<String,Object> getElementInfoByCodes(String codes){
        final String ekey="ekey";
-        String[] model = new String[]{BaseInfo.TBN,MeterPeriodInfo.TBN};
+        List<String> model = new ArrayList<>(DataModel.getTableElementsMapTbn().keySet());
         List<Map<String,Object>> mapList =new ArrayList<>();
         if(StringUtils.isNotEmpty(codes)){
             String[] relyArr=codes.split(StringPool.COMMA);

+ 1 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -3479,7 +3479,7 @@ public class TaskController extends BladeController {
                 reportResults.removeIf(rs -> !fileUrlMapping.containsKey(rs.getExcelId().toString()));
                 /*准备*/
                 reportResults.forEach(rs -> {
-                    if (rs.getInitTableName().equals("m_20240325154016_1772166597482381312")) {
+                    if (rs.getInitTableName().equals("m_20240325154016_1772166597482381312")||rs.getInitTableName().equals("m_20240710170847_1810964374177710080")) {
                         List<Map.Entry<String,Object>> entries=rs.getData().get(0).entrySet().stream().filter(e->Integer.parseInt(e.getKey().split("_")[1])==1).sorted(Comparator.comparingInt(e->Integer.parseInt(e.getKey().split("_")[0]))).collect(Collectors.toList());
                         List<String> list =entries.stream().map(e->e.getValue().toString()).collect(Collectors.toList());
                         int index= list.indexOf("小计");
@@ -3491,9 +3491,6 @@ public class TaskController extends BladeController {
                             rs.setDeleteRow(start+","+end);
                         }
                     }
-
-                    //
-
                     /*初始化路径*/
                     rs.pathInit(file_path, report.getContractId());
                     rs.setExcelUrl(fileUrlMapping.get(rs.getExcelId().toString()));