ソースを参照

计量公式相关

yangyj 1 年間 前
コミット
80a5264a74

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/utils/NumberUtil.java

@@ -451,7 +451,7 @@ public class NumberUtil {
             strRMB = strRMB.replaceAll("点", "圆");
             String s1 = strRMB.substring(0, strRMB.indexOf("圆") + 1);
             String s2 = strRMB.substring(strRMB.indexOf("圆") + 1);
-            strRMB = s1 + s2.charAt(0) + "角" + s2.charAt(1) + "分";
+            strRMB = s1 + s2.charAt(0) + "角" + s2.charAt(1) + "分";
         } else {
             strRMB = strRMB + "圆整";
         }

+ 3 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/AdvancePaymentCertificate.java

@@ -1,17 +1,19 @@
 package org.springblade.manager.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
 
 /**
  * @author yangyj
  * @Date 2024/2/26 15:57
  * @description 开工预付款支付证书
  */
+@Data
 public class AdvancePaymentCertificate {
     public static final String ID="20280000000";
     public static final String TBN="APayCert";
     public static final String TBN_CH="开工预付款支付证书";
-    /**项目名称*/
+
     @JSONField(name = "key_1",label="上次开工预付款",ordinal = 1)
     private String previousStayPay;
     @JSONField(name = "key_2",label="本次申请预付开工预付款",ordinal = 2)

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

@@ -47,6 +47,8 @@ public class Material {
     private String storageConform;
     @JSONField(name = "key_14",label="备注",ordinal = 14)
     private String remark;
+    private Integer sort;
+    private Long periodId;
     public List<Object> getData(){
         List<Object> data = new ArrayList<>();
         data.add(index);

+ 22 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/MaterialAdvancePayment.java

@@ -0,0 +1,22 @@
+package org.springblade.manager.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * @author yangyj
+ * @Date 2024/2/27 16:36
+ * @description 材料预付款申请单
+ */
+@Data
+public class MaterialAdvancePayment {
+    public static final String ID="20290000000";
+    public static final String TBN="MtAdPay";
+    public static final String TBN_CH="材料预付款申请单";
+    @JSONField(name = "key_1",label="上次累计已付材料预付款",ordinal = 1)
+    private String preTotalMaterialPay;
+    @JSONField(name = "key_2",label="本次申请材料预付款",ordinal = 2)
+    private String currentMaterialPay;
+    @JSONField(name = "key_3",label="累计已付材料预付款",ordinal = 3)
+    private String totalMaterialPay;
+}

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -295,6 +295,7 @@ public class WbsTreeController extends BladeController {
          set.add(BaseInfo.ID);
          set.add(MeterPeriodInfo.ID);
          set.add(AdvancePaymentCertificate.ID);
+         set.add(MaterialAdvancePayment.ID);
          set.add(InterimPaymentCertificate.ID);
          set.add(InterimPaymentSummary.ID);
          set.add(SubprojectInterimPaymentSummary.ID);
@@ -309,6 +310,7 @@ public class WbsTreeController extends BladeController {
         MODEL_MAP.put(BaseInfo.ID,FormulaUtils.toElementVos(BaseInfo.class));
         MODEL_MAP.put(MeterPeriodInfo.ID,FormulaUtils.toElementVos(MeterPeriodInfo.class));
         MODEL_MAP.put(AdvancePaymentCertificate.ID,FormulaUtils.toElementVos(AdvancePaymentCertificate.class));
+        MODEL_MAP.put(MaterialAdvancePayment.ID,FormulaUtils.toElementVos(MaterialAdvancePayment.class));
         MODEL_MAP.put(InterimPaymentCertificate.ID,FormulaUtils.toElementVos(InterimPaymentCertificate.class));
         MODEL_MAP.put(InterimPaymentSummary.ID,FormulaUtils.toElementVos(InterimPaymentSummary.class));
         MODEL_MAP.put(SubprojectInterimPaymentSummary.ID,FormulaUtils.toElementVos(SubprojectInterimPaymentSummary.class));

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

@@ -129,14 +129,14 @@ public class ExecutorMeter extends FormulaExecutor {
                     StartPayForm one = current.get(0);
                     sum= startPayForms.stream().filter(s->s.getPeriodSort()<=one.getPeriodSort()).mapToDouble(s->Double.parseDouble(s.getMeterMoney())).sum();
                     /*累计*/
-                    elementWriter.write(fdm.get("key_3"),StringUtils.number2String(sum,2));
+                    elementWriter.write(fdm.get(AdvancePaymentCertificate.TBN+":key_3"),StringUtils.number2String(sum,2));
                     currentD=startPayForms.stream().mapToDouble(s->Double.parseDouble(s.getMeterMoney())).sum();
-                    elementWriter.write(fdm.get("key_2"),StringUtils.number2String(currentD,2));
+                    elementWriter.write(fdm.get(AdvancePaymentCertificate.TBN+":key_2"),StringUtils.number2String(currentD,2));
                     /*上一期*/
                   Optional<Integer> op=startPayForms.stream().map(StartPayForm::getPeriodSort).filter(s->s<one.getPeriodSort()).max(Comparator.comparingInt(s->s));
                   if(op.isPresent()){
                       previousD= startPayForms.stream().filter(s->s.getPeriodSort().equals(one.getPeriodSort())).mapToDouble(s->Double.parseDouble(s.getMeterMoney())).sum();
-                      elementWriter.write(fdm.get("key_1"),StringUtils.number2String(previousD,2));
+                      elementWriter.write(fdm.get(AdvancePaymentCertificate.TBN+":key_1"),StringUtils.number2String(previousD,2));
                   }
                 }
             }
@@ -211,9 +211,11 @@ public class ExecutorMeter extends FormulaExecutor {
 
         public void parse(){
             /*加载合同材料、材料清单*/
-            /* b.material_name name,b.unit,b.price,a.meter_amount amount,a.material_source source
-            ,material_conform  materialConform,a.storage_place storagePlace,a.storage_status storageStatus,a.storage_conform storageConform,a.remark*/
-            List<Material> materials = materialFormFc.apply(tec.getPeriodId());
+            List<Material> materialsAll = materialFormFc.apply(tec.getContractId());
+            /*本期*/
+            List<Material>materials=materialsAll.stream().filter(m->tec.getPeriodId().equals(m.getPeriodId())).collect(Collectors.toList());
+            /*本期,往期累计,本期累计*/
+            double preTotal,total;
             if(Func.isNotEmpty(materials)){
                 BaseInfo baseInfo= (BaseInfo) tec.getConstantMap().get(BaseInfo.TBN);
                 int n=1;
@@ -244,6 +246,27 @@ public class ExecutorMeter extends FormulaExecutor {
                        elementWriter.write(fd,dl);
                    }
                 }
+                Integer sort = materials.get(0).getSort();
+
+                /*材料预付款申请单处理*/
+                LinkedHashMap<String,FormData>  fdm = FormulaUtils.toFormDataMap(MaterialAdvancePayment.class);
+                tec.formDataMap.putAll(fdm);
+                preTotal=materialsAll.stream().filter(m->m.getSort()<sort).mapToDouble(m->Double.parseDouble(m.getSum())*baseInfo.getDeductRatio()).sum();
+                if(preTotal>=0D){
+                    /*上期累计支付*/
+                    elementWriter.write(fdm.get(MaterialAdvancePayment.TBN+":key_1"),StringUtils.number2String(preTotal,2));
+                }
+                if(BaseUtils.isNumber(this.totalAdvance)){
+                    /*本期支付*/
+                    elementWriter.write(fdm.get(MaterialAdvancePayment.TBN+":key_2"),StringUtils.number2String(this.totalAdvance,2));
+                    total=Double.parseDouble(this.totalAdvance)+preTotal;
+                    if(total>0){
+                        /*本期累计支付*/
+                        elementWriter.write(fdm.get(MaterialAdvancePayment.TBN+":key_3"),StringUtils.number2String(total,2));
+                    }
+                }
+
+
             }
         }
 

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

@@ -68,8 +68,12 @@ public class FormulaDaoImpl implements IFormulaDao {
 
     @Override
     public Function<Long, List<Material>> getMaterialFormFc() {
-        return id->{
-            String sql="select  b.material_name materialName,b.unit,b.price,a.meter_amount meterAmount,meter_money sum,a.material_source source,material_conform  materialConform,a.storage_place storagePlace,a.storage_status storageStatus,a.storage_conform storageConform,a.remark from s_material_meter_form a left join s_contract_material b on a.contract_material_id = b.id where a.meter_period_id="+id+"  and a.is_deleted=0";
+/*        return id->{
+            String sql="select  b.material_name materialName,b.unit,b.price,a.meter_amount meterAmount,meter_money sum,a.material_source source,material_conform  materialConform,a.storage_place storagePlace,a.storage_status storageStatus,a.storage_conform storageConform,a.remark from s_material_meter_form a left join s_contract_material b on a.contract_material_id = b.id where a.meter_period_id="+id+"  and a.is_deleted=0 and  a.approve_status=2";
+            return  getEntityList(sql,Material.class);
+        };*/
+        return contractId->{
+            String sql="select  b.material_name materialName,b.unit,b.price,a.meter_amount meterAmount,meter_money sum,a.material_source source,material_conform  materialConform,a.storage_place storagePlace,a.storage_status storageStatus,a.storage_conform storageConform,a.remark,c.sort,c.id period_id from s_material_meter_form a left join s_contract_material b on a.contract_material_id = b.id join s_meter_period c  on a.meter_period_id=c.id where a.contract_id="+contractId+"  and a.is_deleted=0 and  a.approve_status=2";
             return  getEntityList(sql,Material.class);
         };
     }

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

@@ -260,6 +260,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         Map<String, String[]> titleMap = new LinkedHashMap<>();
         titleMap.put(BaseInfo.TBN_CH, new String[]{BaseInfo.TBN, BaseInfo.ID});
         titleMap.put(AdvancePaymentCertificate.TBN_CH, new String[]{AdvancePaymentCertificate.TBN, AdvancePaymentCertificate.ID});
+        titleMap.put(MaterialAdvancePayment.TBN_CH, new String[]{MaterialAdvancePayment.TBN, MaterialAdvancePayment.ID});
         titleMap.put(MeterPeriodInfo.TBN_CH, new String[]{MeterPeriodInfo.TBN, MeterPeriodInfo.ID});
         titleMap.put(InterimPaymentCertificate.TBN_CH, new String[]{InterimPaymentCertificate.TBN, InterimPaymentCertificate.ID});
         titleMap.put(InterimPaymentSummary.TBN_CH, new String[]{InterimPaymentSummary.TBN, InterimPaymentSummary.ID});