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

中间计量公式

yangyj 1 éve
szülő
commit
86584d12c3

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

@@ -51,7 +51,9 @@ public class InterimPaymentCertificate {
         BigDecimal currentPeriodPayBd = new BigDecimal(currentPeriodPay);
         BigDecimal currentPeriodEndPayBd = previousPeriodEndPayBd.add(currentPeriodPayBd);
         this.currentPeriodEndPay = currentPeriodEndPayBd.toString();
-        BigDecimal payRatioBd = currentPeriodPayBd.multiply(new BigDecimal(100)).divide(currentPeriodEndPayBd, 2, RoundingMode.HALF_UP);
-        this.payRatio = payRatioBd.toString();
+        if(BigDecimal.ZERO.compareTo(currentPeriodEndPayBd)<0) {
+            BigDecimal payRatioBd = currentPeriodPayBd.multiply(new BigDecimal(100)).divide(currentPeriodEndPayBd, 2, RoundingMode.HALF_UP);
+            this.payRatio = payRatioBd.toString();
+        }
     }
 }

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

@@ -11,6 +11,7 @@ import java.math.BigDecimal;
  */
 @Data
 public class Payment {
+    private Long id;
     /**计量清单id*/
     private Long  formId;
     /**计量单元id*/

+ 4 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorSpecial.java → blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -26,11 +26,11 @@ import java.util.stream.IntStream;
 /**
  * @author yangyj
  * @Date 2023/12/19 17:40
- * @description TODO
+ * @description 计量相关报表计算
  */
 @EqualsAndHashCode(callSuper = true)
 @Data
-public class ExecutorSpecial extends FormulaExecutor {
+public class ExecutorMeter extends FormulaExecutor {
     private Function<Long, List<Material>> materialFormFc;
     private Function<Long, List<Payment>> paymentListFc;
     private Function<Long, List<InventoryForm>> inventoryFormFc;
@@ -310,6 +310,7 @@ public class ExecutorSpecial extends FormulaExecutor {
                 /*合同金额*/
                  Map<String,BigDecimal[]> contractMoney = this.contractMoneySum.apply(inventoryForms);
                  for(Map.Entry<String,BigDecimal[]> cm:contractMoney.entrySet()){
+                       if(Func.isEmpty(cm.getKey()))continue;
                       InterimPaymentCertificate ipc = new InterimPaymentCertificate();
                       BigDecimal[]  bmMoney =cm.getValue();
                       ipc.setContractAmount(bmMoney[0].toString());
@@ -762,7 +763,7 @@ public class ExecutorSpecial extends FormulaExecutor {
         /**解析数据*/
         void parse();
     }
-    public ExecutorSpecial(TableElementConverter tec) {
+    public ExecutorMeter(TableElementConverter tec) {
         super(tec);
     }
 }

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

@@ -79,7 +79,7 @@ public class FormulaDaoImpl implements IFormulaDao {
     @Override
     public Function<Long, MeterPeriodInfo> getInterimMeterPeriodFc() {
         return certificateId->{
-            String sql="select a.period_number number,a.sort 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.id=="+certificateId;
+            String sql="select a.period_number number,a.sort 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.id="+certificateId;
             return this.jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<>(MeterPeriodInfo.class));
         };
     }
@@ -87,7 +87,7 @@ public class FormulaDaoImpl implements IFormulaDao {
     @Override
     public Function<Long, List<Payment>> getPaymentListFc() {
         return contractId->{
-            String paySql="select a.form_number number,a.form_name name ,a.middle_meter_id,a.current_meter_total completed ,a.current_price price,current_meter_money money,meter_number meterNumber ,contract_meter_id meterId,b.id formId,b.chapter_number chapter, b.contract_money contractMoney,b.change_money,b.unit,contract_total ,change_total,c.sort,c.id periodId from s_inventory_form_apply a join s_contract_inventory_form b on a.contract_form_id=b.id join s_contract_meter_period c on a.contract_period_id=c.id where a.is_deleted=0 and a.approve_status=2 and a.contract_id="+contractId;
+            String paySql="select  a.id,a.form_number number,a.form_name name ,a.middle_meter_id,a.current_meter_total completed ,a.current_price price,current_meter_money money,meter_number meterNumber ,contract_meter_id meterId,b.id formId,b.chapter_number chapter, b.contract_money contractMoney,b.change_money,b.unit,contract_total ,change_total,c.sort,c.id periodId from s_inventory_form_apply a join s_contract_inventory_form b on a.contract_form_id=b.id join s_contract_meter_period c on a.contract_period_id=c.id where a.is_deleted=0 and a.approve_status=2 and a.contract_id="+contractId;
             return this.jdbcTemplate.query(paySql,new BeanPropertyRowMapper<>(Payment.class));
         };
     }
@@ -95,7 +95,7 @@ public class FormulaDaoImpl implements IFormulaDao {
     @Override
     public Function<Long, List<InventoryForm>> getInventoryFormFc() {
         return  contractId->{
-           String sql="select form_name,chapter_number,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,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 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -2642,19 +2642,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         List<FormulaHandleChain> formulaHandleChains = new ArrayList<>();
         /*初始化*/
         ExecutorInit init= new ExecutorInit(tec);
-/*        init.setBaseInfoFc(this.formulaDao.getBaseInfoFc());
-        init.setMeterPeriodFc(this.formulaDao.getMeterPeriodFc());
-        init .setMeterTreeFc(this.formulaDao.getMeterTreeFc());*/
         BeanUtils.copyProperties(this.formulaDao,init);
         formulaHandleChains.add(init);
         formulaHandleChains.add(new ExecutorSort(tec));
         formulaHandleChains.add(new ExecutorPre(tec));
         /*特殊公式*/
-        ExecutorSpecial special = new ExecutorSpecial(tec);
-/*        special.setMaterialFormFc(this.formulaDao.getMaterialFormFc());
-        special.setInterimMeterPeriodFc(this.formulaDao.getInterimMeterPeriodFc());
-        special.setPaymentListFc(this.formulaDao.getPaymentListFc());
-        special.setMeterApplyFc(this.formulaDao.getMeterApplyFc());*/
+        ExecutorMeter special = new ExecutorMeter(tec);
         BeanUtils.copyProperties(this.formulaDao,special);
         formulaHandleChains.add(special);
         /*通用计算*/