Forráskód Böngészése

甬台温材料预付款

yangyj 1 éve
szülő
commit
ef2ae2d739

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/MaterialPriceDifferential.java

@@ -1,12 +1,14 @@
 package org.springblade.manager.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
 
 /**
  * @author yangyj
  * @Date 2024/4/19 10:50
  * @description 永久性工程材料差价金额预览表
  */
+@Data
 public class MaterialPriceDifferential implements  DataModel{
     public static final String ID="20310000000";
     public static final String TBN="MtPiDf";

+ 9 - 9
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/MaterialsArrival.java

@@ -18,26 +18,26 @@ public class MaterialsArrival implements  DataModel{
     private String periodNumber;
     @JSONField(name = "key_2",label="材料名称",ordinal = 1)
     private String name;
-    @JSONField(name = "key_1",label="单位",ordinal = 1)
+    @JSONField(name = "key_3",label="单位",ordinal = 1)
     private String unit;
-    @JSONField(name = "key_2",label="数量",ordinal = 1)
+    @JSONField(name = "key_4",label="数量",ordinal = 1)
     private String quantity;
 
-    @JSONField(name = "key_2",label="单价",ordinal = 1)
+    @JSONField(name = "key_5",label="单价",ordinal = 1)
     private String price;
 
-    @JSONField(name = "key_1",label="金额",ordinal = 1)
+    @JSONField(name = "key_6",label="金额",ordinal = 1)
     private String amount;
-    @JSONField(name = "key_2",label="按合同规定预付总金额",ordinal = 1)
+    @JSONField(name = "key_7",label="按合同规定预付总金额",ordinal = 1)
     private String total;
-    @JSONField(name = "key_1",label="材料来源",ordinal = 1)
+    @JSONField(name = "key_8",label="材料来源",ordinal = 1)
     private String source;
-    @JSONField(name = "key_2",label="发票",ordinal = 1)
+    @JSONField(name = "key_9",label="发票",ordinal = 1)
     private String Invoice;
 
-    @JSONField(name = "key_1",label="质保书编号",ordinal = 1)
+    @JSONField(name = "key_10",label="质保书编号",ordinal = 1)
     private String warrantyNumber;
-    @JSONField(name = "key_2",label="监抽报告编号",ordinal = 1)
+    @JSONField(name = "key_11",label="监抽报告编号",ordinal = 1)
     private String ssr;
 
 

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

@@ -27,6 +27,7 @@ public class MeterInfo {
     BaseInfo baseInfo;
     /**计量期信息*/
     LinkedHashMap<Long,MeterPeriodInfo> meterPeriodInfoLinkedHashMap= new LinkedHashMap<>();
-
+    /**加载合同材料、材料清单*/
+    List<Material> materialsAll;
 
 }

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

@@ -31,8 +31,9 @@ public class ExecutorInit extends FormulaExecutor {
     private Function<Long, MeterPeriodInfo>  meterPeriodFc;
     private Function<Long, List<MeterTree>> meterTreeFc;
     /*private Function<Long, MeterPeriodInfo> interimMeterPeriodFc;*/
+    private Function<Long, List<Material>> materialFormFc;
     private Function<Long,List<MeterPeriodInfo>> interimMeterPeriodAllFc;
-
+    public static final String SZ="[ 一二三四五六七八九十]+";
 
 
     public void handle() {
@@ -48,6 +49,8 @@ public class ExecutorInit extends FormulaExecutor {
         if(MeterType.MATERIAL.equals(tec.getMeterType())||MeterType.START.equals(tec.getMeterType())){
             /*加载计量期信息*/
             tec.periodInfo=meterPeriodFc.apply(tec.getReportId());
+            /*加载合同材料、材料清单*/
+            tec.meterInfo.setMaterialsAll(materialFormFc.apply(tec.getContractId()));
         }else if(MeterType.INTERIM.equals(tec.getMeterType())||MeterType.INTERIM_JL.equals(tec.getMeterType())){
             /*计量期*/
             List<MeterPeriodInfo> meterPeriodInfoList = interimMeterPeriodAllFc.apply(tec.getContractId());
@@ -67,15 +70,16 @@ public class ExecutorInit extends FormulaExecutor {
         tec.setPeriodId(tec.periodInfo.getId());
         String periodNumber = tec.periodInfo.getPeriodNumber();
         if(!BaseUtils.isNumber(periodNumber)){
-            periodNumber= RegexUtil.findResult("[ 一二三四五六七八九十]+",periodNumber);
+            periodNumber= RegexUtil.findResult(SZ,periodNumber);
             if(periodNumber!=null){
-                if(RegexUtil.find("[ 一二三四五六七八九十]+",periodNumber)){
+                if(RegexUtil.find(SZ,periodNumber)){
                     periodNumber=String.valueOf(FormulaUtils.chineseToArabic(periodNumber));
                 }
                 tec.periodInfo.setPeriodNumber(periodNumber);
             }
         }
-        LinkedHashMap<String, FormData> periodMap=  FormulaUtils.toFormDataMap(tec.periodInfo);
+        LinkedHashMap<String, FormData> periodMap = FormulaUtils.toFormDataMap(tec.periodInfo);
+        /*每页内容都一样*/
         tec.getRepeatKeys().addAll(periodMap.keySet());
         tec.formDataMap.putAll(periodMap);
     }

+ 67 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -35,7 +35,7 @@ import java.util.stream.IntStream;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class ExecutorMeter extends FormulaExecutor {
-    private Function<Long, List<Material>> materialFormFc;
+  /*  private Function<Long, List<Material>> materialFormFc;*/
     private Function<Long, List<Payment>> paymentListFc;
     private Function<Long, List<MidPayItem>> midPayItemListFc;
     private Function<Long, List<InventoryForm>> inventoryFormFc;
@@ -53,6 +53,9 @@ public class ExecutorMeter extends FormulaExecutor {
     /**累计到本期末支付信息*/
     private List<Payment>   paymentsPeriodEnd =new ArrayList<>();
 
+    /*本期材料支付信息*/
+    List<Material>materials;
+
     private List<InterimPaymentCertificate> interimPaymentCertificates =new ArrayList<>();
     /*分项中期汇总*/
     private List<SubprojectInterimPaymentSummary> subprojectInterimPaymentSummary =new ArrayList<>();
@@ -110,6 +113,7 @@ public class ExecutorMeter extends FormulaExecutor {
         if(MeterType.MATERIAL.equals(tec.getMeterType())){
             /*材料预付款支付申请表处理*/
             this.specialList.add(new MaterialCalc());
+            this.specialList.add(new MaterialSp());
         }else if(MeterType.INTERIM.equals(tec.getMeterType())){
             this.specialList.add(new InterimPayCert());
             this.specialList.add(new InterimSum());
@@ -219,7 +223,7 @@ public class ExecutorMeter extends FormulaExecutor {
 
         public void parse(){
             /*加载合同材料、材料清单*/
-            List<Material> materialsAll = materialFormFc.apply(tec.getContractId());
+            List<Material> materialsAll =tec.getMeterInfo().getMaterialsAll();
             /*本期*/
             List<Material>materials=materialsAll.stream().filter(m->tec.getPeriodId().equals(m.getPeriodId())).collect(Collectors.toList());
             /*本期,往期累计,本期累计*/
@@ -283,7 +287,68 @@ public class ExecutorMeter extends FormulaExecutor {
             }
         }
     }
+    @Data
+    @EqualsAndHashCode(callSuper = true)
+    public  class MaterialSp extends   BaseSpecial<MaterialPriceDifferential> implements Special{
+
+        @Override
+        public boolean ready() {
+            return MeterInfo.MB_ZJ.equals(tec.getMeterInfo().getConfig());
+        }
+
+        @Override
+        public void parse() {
+            /*本期材料*/
+            materials=tec.meterInfo.getMaterialsAll().stream().filter(e->tec.getPeriodId().equals(e.getPeriodId())).collect(Collectors.toList());
+            if(materials.size()>0){
+                dataList.addAll(materials.stream().map(e->{
+                    MaterialPriceDifferential mpd = new MaterialPriceDifferential();
+                    mpd.setPeriodNumber(tec.periodInfo.getPeriodNumber());
+                    mpd.setName(e.getMaterialName());
+                    mpd.setUnit(e.getUnit());
+                    mpd.setQuantity(e.getMeterAmount());
+                    mpd.setPriceBase(e.getPrice());
+                    mpd.setAmountBase(e.getSum());
+                    mpd.setPrice(e.getPrice());
+                    mpd.setAmountBase(e.getSum());
+                    return mpd;
+                 }
+                ).collect(Collectors.toList()));
+            }
+            putOut();
+        }
+    }
 
+    @Data
+    @EqualsAndHashCode(callSuper = true)
+    public  class MaterialsArrivalSp extends   BaseSpecial<MaterialsArrival> implements Special{
+
+        @Override
+        public boolean ready() {
+            return MeterInfo.MB_ZJ.equals(tec.getMeterInfo().getConfig());
+        }
+
+        @Override
+        public void parse() {
+            builderFormDatas(MaterialsArrival.class);
+            if(materials.size()>0){
+                dataList.addAll(materials.stream().map(e->{
+                            MaterialsArrival ma = new MaterialsArrival();
+                            ma.setPeriodNumber(tec.periodInfo.getPeriodNumber());
+                            ma.setName(e.getMaterialName());
+                            ma.setUnit(e.getUnit());
+                            ma.setQuantity(e.getMeterAmount());
+                            ma.setPrice(e.getPrice());
+                            ma.setAmount(e.getMeterAmount());
+                            ma.setTotal(e.getAdvancePayment());
+                            ma.setSource(e.getSource());
+                            return ma;
+                        }
+                ).collect(Collectors.toList()));
+            }
+            putOut();
+        }
+    }
 
     @Data
     @EqualsAndHashCode(callSuper = true)