Quellcode durchsuchen

183 2-4 2-6计量公式修改

cr vor 5 Tagen
Ursprung
Commit
0a905db2ed

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

@@ -1262,13 +1262,42 @@ public class ExecutorMeter extends FormulaExecutor {
                              }
                          }
                          ipc.setCurrentPeriodPay(StringUtils.handleNull(currentMoney.get(cm.getKey())));
-                         ipc.setCurrentPeriodChangeMoney(StringUtils.handleNullZero(sumChangeMoneyForChapter(changeTokenList0,ch)
-                                 ,tec.getPayRadicScale()));
-                         ipc.setPreviousPeriodEndChangeMoney(StringUtils.handleNullZero(sumChangeMoneyForChapter(changeTokenList1,ch)
-                                 ,tec.getPayRadicScale()));
-                         ipc.setCurrentPeriodEndChangeMoney(StringUtils.handleNullZero(sumChangeMoneyForChapter(changeTokenList2,ch)
-                                 ,tec.getPayRadicScale()));
-
+                         //2-8公式开发前逻辑
+                         //本期变更金额
+//                         ipc.setCurrentPeriodChangeMoney(StringUtils.handleNullZero(sumChangeMoneyForChapter(changeTokenList0,ch)
+//                                 ,tec.getPayRadicScale()));
+                         //上期末变更金额
+//                         ipc.setPreviousPeriodEndChangeMoney(StringUtils.handleNullZero(sumChangeMoneyForChapter(changeTokenList1,ch)
+//                                 ,tec.getPayRadicScale()));
+                         //本期末变更金额
+//                         ipc.setCurrentPeriodEndChangeMoney(StringUtils.handleNullZero(sumChangeMoneyForChapter(changeTokenList2,ch)
+//                                 ,tec.getPayRadicScale()));
+                         //2-8公式开发后逻辑
+                         List<ChangeInventoryForm> changeInventoryForms = InventoryUCUtil.selectInventoryFormByInventoryNum(tec.getPeriodId(), tec.getContractId(), k);
+                         //本期变更金额
+                         String totalChangeMoney = changeInventoryForms.stream()
+                                 .map(form -> new BigDecimal(form.getChangeMoney()))
+                                 .reduce(BigDecimal.ZERO, BigDecimal::add)
+                                 .setScale(0, RoundingMode.HALF_UP)
+                                 .toPlainString();
+                         ipc.setCurrentPeriodChangeMoney(totalChangeMoney);
+                        if(finalPrePeriodId!=null){
+                            List<ChangeInventoryForm> preChangeInventoryForms = InventoryUCUtil.selectInventoryFormByInventoryNum(finalPrePeriodId, tec.getContractId(), k);
+                            String afterTotalChangeMoney = preChangeInventoryForms.stream()
+                                    .map(form -> new BigDecimal(form.getAfterChangeMoney()))
+                                    .reduce(BigDecimal.ZERO, BigDecimal::add)
+                                    .setScale(0, RoundingMode.HALF_UP)
+                                    .toPlainString();
+                            //上期末变更金额
+                            ipc.setPreviousPeriodEndChangeMoney(afterTotalChangeMoney);
+                            BigDecimal currentChange = BaseUtils.str2BigDecimal(totalChangeMoney);
+                            BigDecimal previousChange = BaseUtils.str2BigDecimal(afterTotalChangeMoney);
+                            //本期末变更金额
+                            ipc.setCurrentPeriodEndChangeMoney(currentChange.add(previousChange).toPlainString());
+                        }else {
+                            //本期末变更金额
+                            ipc.setCurrentPeriodEndChangeMoney(totalChangeMoney);
+                        }
                          /*计算其它属性值*/
                          ipc.calculate();
                          //dataList.add(ipc);
@@ -2202,8 +2231,16 @@ public class ExecutorMeter extends FormulaExecutor {
                 cs.setPayPercent(ratioFc.apply(cs.getCurrentPeriodEndPay(),meterAmountChange));
                 /*本期末占合合同金额 */
                 cs.setCurrentEndPayPercent(ratioFc.apply(cs.getCurrentPeriodEndPay(),meterAmount));
-                /*变更金额*/
-                cs.setChangeMoneyAll(subtractFc.apply(cs.getChangeMoney(),cs.getContractMoney()));
+                /*变更金额 2-8公式开发之前逻辑*/
+                //cs.setChangeMoneyAll(subtractFc.apply(cs.getChangeMoney(),cs.getContractMoney()));
+                List<ChangeInventoryForm> changeInventoryForms = InventoryUCUtil.selectInventoryFormByInventoryNum(tec.getPeriodId(), tec.getContractId(), k);
+                BigDecimal changeMoneyAll = changeInventoryForms.stream()
+                        .map(ChangeInventoryForm::getChangeMoney)
+                        .map(BaseUtils::str2BigDecimal)
+                        .reduce(BigDecimal.ZERO, BigDecimal::add)
+                        .setScale(0, RoundingMode.HALF_UP);  // 四舍五入保留整数
+                String changeMoneyAllWan = changeMoneyAll.divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_UP).toPlainString();
+                cs.setChangeMoneyAll(changeMoneyAllWan);
                 dataList.add(cs);
             });
             /*每月合计进度*/

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/InventoryUCUtil.java

@@ -109,6 +109,12 @@ public class InventoryUCUtil {
         return str.matches("\\d+");
     }
 
+    //根据章节查询变更详情
+    public static List<ChangeInventoryForm> selectInventoryFormByInventoryNum(Long periodId, Long contractId, String k) {
+        String sql="select * from s_change_inventory_form where contract_id="+contractId+" and period_id="+periodId+" and inventory_num='"+k+"' and is_deleted=0";
+        return jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(ChangeInventoryForm.class));
+    }
+
     @Autowired
     public  void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
         InventoryUCUtil.jdbcTemplate = jdbcTemplate;