yangyj hai 1 ano
pai
achega
b4bbd75527

+ 7 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/MeterType.java

@@ -6,7 +6,9 @@ public enum MeterType {
     /**材料预付款*/
     MATERIAL(1,"材料预付款报表"),
     /**开工预付款*/
-    START(2,"动员预付款报表");
+    START(2,"动员预付款报表"),
+    /***/
+    INTERIM_JL(3,"监理计量报表");
     private final int index;
     private final String name;
     MeterType(int index, String name) {
@@ -19,8 +21,11 @@ public enum MeterType {
     public String getName() {
         return name;
     }
-    public static MeterType getByIndex(int index) {
+    public static MeterType getByIndex(int index,int contractType) {
         MeterType[] values = MeterType.values();
+        if(contractType==2){
+            index=3;
+        }
         if (index >= 0 && index < values.length) {
             return values[index];
         } else {

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

@@ -8,6 +8,7 @@ package org.springblade.manager.vo;
 public class SelectorModel {
     public static final String NODE_NAME="模型数据";
     public  static final Long ID=20000000000L;
+    public  static final Long MAX_ID=30000000000L;
     public  static final Long P_ID=12345678910L;
     public Long getParentId(){
         return ID;

+ 4 - 27
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/SubprojectInterimPaymentSummary.java

@@ -71,33 +71,10 @@ public class SubprojectInterimPaymentSummary  {
     /**第n页 共m页*/
     @JSONField(name = "key_12",label="页码",ordinal = 101)
     private String pageCount;
-    /**变更金额*/
-   /* @JSONField(name = "key_16",label="变更金额-ZJ",ordinal = 12)
-    private String adjustmentAmount;
-    *//**单项占合同价*//*
-    @JSONField(name = "key_17",label="单项占合同价-ZJ",ordinal = 12)
-    private String itemPercent;
-    *//**单项计划完成*//*
-    @JSONField(name = "key_18",label="单项计划完成-ZJ",ordinal = 12)
-    private String itemProgress;
-    *//**单项计划完成*//*
-    @JSONField(name = "key_19",label="本期占该合同金额-ZJ",ordinal = 12)
-    private String currentPayPercent;
-    *//**本期末累计占变更后的总金额*//*
-    @JSONField(name = "key_20",label="本期末累计占变更后的总金额-ZJ",ordinal = 12)
-    private String payPercent;
-    *//**本期末累计占变更后的总金额*//*
-    @JSONField(name = "key_21",label="按月计划与实际完成-ZJ",ordinal = 12)
-    private List<List<Payment>> monthlyCompletion = new ArrayList<>() ;
-    *//**累计实际完成*//*
-    @JSONField(name = "key_22",label="累计实际完成-ZJ",ordinal = 102)
-    private String actualCompletion;
-    *//**本次实际完成*//*
-    @JSONField(name = "key_23",label="本次实际完成-ZJ",ordinal = 102)
-    private String currentCompletion;
-    *//**合同概要*//*
-    @JSONField(name = "key_24",label="合同概要-ZJ",ordinal = 106)
-    private String contractSummary;*/
+    /**章名称*/
+    @JSONField(name = "key_16",label="清单号-ZJ",ordinal = 102)
+    private String chapterName;
+
 
 
     public SubprojectInterimPaymentSummary(String itemName) {

+ 6 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/util/CharType.java

@@ -1,5 +1,7 @@
 package com.jfireel.expression.util;
 
+import java.nio.charset.StandardCharsets;
+
 public class CharType {
     /**
      * 输入结束符.
@@ -43,8 +45,11 @@ public class CharType {
      * @return 是否为中文
      */
     public static boolean isChineseChar(final char ch) {
-        return ch >= 0x4E00 && ch <= 0x9FFF || ch >= 0x3400 && ch <= 0x4DBF;
+        return ch >= 0x4E00 && ch <= 0x9FFF || ch >= 0x3400 && ch <= 0x4DBF||ch=='{'||ch=='{';
     }
+
+
+
     /**
      * 判断是右括号和顿号
      *

+ 20 - 1
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -2823,8 +2823,27 @@ public class CustomFunction {
           return data;
       }
 
+    public static Object dateRange(List<Object>d1,List<Object>d2,String template){
+        if(BaseUtils.isNotEmpty(template)&&BaseUtils.isNotEmpty(d1)&&BaseUtils.isNotEmpty(d2)) {
+        return     IntStream.range(0,Math.min(d1.size(),d2.size())).boxed().map(i->{
+                List<Object> list =new ArrayList<>();
+                list.add(d1.get(i));
+                list.add(d2.get(i));
+                return list;
+            }).map(l-> IntStream.range(0, l.size()).boxed().reduce(template, (str, i) -> str.replaceFirst("\\{}", l.get(i).toString()), String::concat)
+             ).collect(Collectors.toList());
+        }
+        return template;
+    }
+
+
+/*    public static void main(String[] args) {
+        List<Object> list = Arrays.asList("","20240403");
+        List<Object> list2 = Arrays.asList("20040402","20240405");
+        System.out.println(dateRange(list,list2,"时间范围{}至{}"));
+    }*/
 
-      /**转成人民币大写形式*/
+    /**转成人民币大写形式*/
       public static List<Object> toRmb(List<Object> arabic ){
           if(StringUtils.isNotEmpty(arabic)){
               return arabic.stream().filter(CustomFunction::isNumber).map(e -> StringUtils.obj2Double(e, 2)).filter(Objects::nonNull).map(org.springblade.business.utils.NumberUtil::numberToRMB).collect(Collectors.toList());

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

@@ -48,7 +48,7 @@ public class ExecutorInit extends FormulaExecutor {
         if(MeterType.MATERIAL.equals(tec.getMeterType())||MeterType.START.equals(tec.getMeterType())){
             /*加载计量期信息*/
             tec.periodInfo=meterPeriodFc.apply(tec.getReportId());
-        }else if(MeterType.INTERIM.equals(tec.getMeterType())){
+        }else if(MeterType.INTERIM.equals(tec.getMeterType())||MeterType.INTERIM_JL.equals(tec.getMeterType())){
             /*计量期*/
             List<MeterPeriodInfo> meterPeriodInfoList = interimMeterPeriodAllFc.apply(tec.getContractId());
             for(MeterPeriodInfo mpi:meterPeriodInfoList){

+ 18 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -55,7 +55,7 @@ public class ExecutorMeter extends FormulaExecutor {
 
     private List<InterimPaymentCertificate> interimPaymentCertificates =new ArrayList<>();
     /*分项中期汇总*/
-    private List<SubprojectInterimPaymentSummary> subprojectInterimPaymentSummarys  =new ArrayList<>();
+    private List<SubprojectInterimPaymentSummary> subprojectInterimPaymentSummary =new ArrayList<>();
     /*求百分比*/
     private BinaryOperator<String> ratioFc = (a,b)->{
         /*合同金额*/
@@ -113,8 +113,11 @@ public class ExecutorMeter extends FormulaExecutor {
         }else if(MeterType.INTERIM.equals(tec.getMeterType())){
             this.specialList.add(new InterimPayCert());
             this.specialList.add(new InterimSum());
+            /*分项工程中期支付汇总*/
             this.specialList.add(new SubIPaySum());
+            /*施工进度表*/
             this.specialList.add(new ConSch());
+            /*分项工程中期计量支付表*/
             this.specialList.add(new SubIMeterPay());
             this.specialList.add(new IMeterPaySummary());
             /*中间计量表*/
@@ -612,12 +615,13 @@ public class ExecutorMeter extends FormulaExecutor {
                 totalList.add(sis);
             });
             totalList.forEach(e->{
-                subprojectInterimPaymentSummarys.add(e.copy());
+                subprojectInterimPaymentSummary.add(e.copy());
             });
             LinkedHashMap<String,List<SubprojectInterimPaymentSummary>> chapterGroup= totalList.stream().collect(Collectors.groupingBy(e->getPrefix(e.getFormNumber()),LinkedHashMap::new,Collectors.toList()));
             AtomicInteger loop = new AtomicInteger(chapterGroup.size());
+            List<String> chapterNames= new ArrayList<>();
             chapterGroup.forEach((k,v)->{
-                int extra=loop.getAndDecrement()>0?1:2;
+                int extra=loop.getAndDecrement()>1?1:2;
                 /*每章小结或总结等价一行数据*/
                 int dataLength=v.size()+extra;
                 /*每页小结是固定内容,需要每页保留一行*/
@@ -647,9 +651,17 @@ public class ExecutorMeter extends FormulaExecutor {
                     }
                     dataList.addAll(tmp);
                     tmp.clear();
+                    /*chapter*/
+                    if(BaseUtils.isNumber(k)){
+                        k=k+"章";
+                    }
+                    chapterNames.add(k);
                 }
             });
-            /*内容输出*/
+            if(chapterNames.size()>0){
+                FormulaUtils.elementFindByKey(fdm,"key_16").ifPresent(fd->elementWriter.write(fd,chapterNames));
+            }
+            /*动态行内容输出*/
              putOut(SubprojectInterimPaymentSummary.class);
         }
 
@@ -678,14 +690,14 @@ public class ExecutorMeter extends FormulaExecutor {
 
         @Override
         public boolean ready() {
-            return subprojectInterimPaymentSummarys.size()>0&&MeterInfo.MB_ZJ.equals(tec.getMeterInfo().getConfig());
+            return subprojectInterimPaymentSummary.size()>0&&MeterInfo.MB_ZJ.equals(tec.getMeterInfo().getConfig());
         }
 
         @Override
         public void parse() {
             builderFormDatas(ConstructionSchedule.class);
             List<ConstructionSchedule> totalList = new ArrayList<>();
-            subprojectInterimPaymentSummarys.forEach(e->{
+            subprojectInterimPaymentSummary.forEach(e->{
                 ConstructionSchedule cs = new ConstructionSchedule();
                 BeanUtils.copyProperties(e,cs);
                 totalList.add(cs);

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

@@ -372,7 +372,7 @@ public class TableElementConverter implements ITableElementConverter {
         public void convert() {
               /*模版选择*/
               for(NodeTable nt:tableAll){
-                  if("m_20240222111932_1760504568283660288".equals(nt.getInitTableName())){
+                  if("m_20240222111932_1760504568283660288".equals(nt.getInitTableName())||"m_20240222093331_1760477888294944768".equals(nt.getInitTableName())){
                       meterInfo.setConfig(MeterInfo.MB_ZJ);
                       break;
                   }

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

@@ -48,10 +48,10 @@ public class FormulaDaoImpl implements IFormulaDao {
             if(info.getPlanEndTime()!=null) {
                 baseInfo.setEndDatePlan(info.getPlanEndTime().format(chineseDateFm));
             }
-            if(info.getPlanEndTime()!=null)  {
+            if(info.getActualStartTime()!=null)  {
                 baseInfo.setStartDate(info.getActualStartTime().format(chineseDateFm));
             }
-            if(info.getPlanEndTime()!=null) {
+            if(info.getActualEndTime()!=null) {
                 baseInfo.setEndDate(info.getActualEndTime().format(chineseDateFm));
             }
             List<Map<String,Object>> meterContractList = jdbcTemplate.queryForList("select * from s_meter_contract_info where contract_Id="+contractId);
@@ -63,9 +63,9 @@ public class FormulaDaoImpl implements IFormulaDao {
                 if(Func.notNull(map.get("cl_prepayment_ratio"))){
                     baseInfo.setDeductRatio(BaseUtils.obj2DoubleZero(map.get("cl_prepayment_ratio")));
                 }
-                baseInfo.setBankAccountName(map.getOrDefault("bank_account_name","").toString());
-                baseInfo.setBankAccount(map.getOrDefault("bank_account_number","").toString());
-                baseInfo.setBankName(map.getOrDefault("bank_of_deposit","").toString());
+                baseInfo.setBankAccountName(StringUtils.handleNull(map.getOrDefault("bank_account_name","")));
+                baseInfo.setBankAccount(StringUtils.handleNull(map.getOrDefault("bank_account_number","")));
+                baseInfo.setBankName(StringUtils.handleNull(map.getOrDefault("bank_of_deposit","")));
             }
             BeanUtils.copyProperties(info,baseInfo);
             baseInfo.setProjectName(projectInfo.getProjectName());
@@ -120,7 +120,7 @@ public class FormulaDaoImpl implements IFormulaDao {
     @Override
     public Function<Long, List<MeterPeriodInfo>> getInterimMeterPeriodAllFc() {
           return contractId->{
-            String sql="select a.id, a.period_number periodNumber,a.sort ,b.print_date formPrintDate ,b.pay_money curTotal,b.id reportId from  s_contract_meter_period a join s_interim_pay_certificate b on a.id=b.contract_period_id where a.is_deleted=0 and b.contract_id="+contractId+" order by a.sort";
+            String sql="select a.id, a.period_number periodNumber,a.sort ,b.print_date formPrintDate ,b.pay_money curTotal,b.id reportId from  s_contract_meter_period a join s_interim_pay_certificate b on a.id=b.contract_period_id where a.is_deleted=0 and  b.is_deleted=0 and b.contract_id="+contractId+" order by a.sort";
             return   getEntityList(sql,MeterPeriodInfo.class);
         };
     }

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

@@ -2420,7 +2420,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 }
             }
             if(mapList.size()>0){
-               return mapList.stream().filter(e-> Arrays.stream(relyArr).anyMatch(c->StringUtils.isEquals(e.get(ekey),c))).collect(Collectors.toMap(e->StringUtils.handleNull(e.get(ekey)), e->e));
+               return mapList.stream().filter(e-> Arrays.stream(relyArr).anyMatch(c->StringUtils.isEquals(e.get(ekey),c))).collect(Collectors.toMap(e->StringUtils.handleNull(e.get(ekey)), e->e,(v1,v2)->v1));
             }
 
         }
@@ -2670,7 +2670,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     public  List<ReportResult> execute3(Long contractId,Long reportId ,Integer type) {
         ExecutionTime executionTime = new ExecutionTime();
         ContractInfo contractInfo = this.contractInfoService.getById(contractId);
-        MeterType meterType = MeterType.getByIndex(type);
+        MeterType meterType = MeterType.getByIndex(type,contractInfo.getContractType());
         /*元素创建*/
         Map<String,String> parent=  getWtpParent(meterType.getName(),contractInfo.getPId());
         List<NodeTable> tableList=getTableListMeter(parent);

+ 3 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -223,23 +223,20 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     @Override
     public IPage<TreeNodeVOByTabType> tabTypeLazyTreeAll(IPage<TreeNodeVOByTabType> page, Long parentId, String titleName, Boolean hasPartFormula) {
         boolean base = false;
-        if (hasPartFormula == null) {
-            hasPartFormula = true;
-        }
         if ((parentId + "").equals("12345678910")) {
             page.setSize(100);
             base = true;
         }
         List<TreeNodeVOByTabType> data;
-        if (SelectorModel.ID.equals(parentId)) {
+        if (SelectorModel.ID<=parentId&&parentId<=SelectorModel.MAX_ID) {
             data = this.baseList();
         } else {
             data = baseMapper.tabTypeLazyTreeAll(page, parentId, titleName);
         }
         addBase(data, base);
-        if (base && !hasPartFormula) {
+     /*   if (base && hasPartFormula != null) {
             data.removeIf(e -> e.getId() != 20 && !e.getId().equals(SelectorModel.ID));
-        }
+        }*/
         return page.setRecords(data);
     }