Procházet zdrojové kódy

183 2-8计量公式

cr před 2 dny
rodič
revize
2d7a0422aa

+ 21 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ChangeInventoryForm.java

@@ -0,0 +1,21 @@
+package org.springblade.manager.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@TableName("s_change_inventory_form")
+public class ChangeInventoryForm implements Serializable {
+    private Long id;
+    private Long contractId;
+    private Long periodId;
+    private String formNumber;
+    private String itemName;
+    private String changeTotal;
+    private String changeMoney;
+    private String afterChangeTotal;
+    private String afterChangeMoney;
+    private Integer isDeleted;
+}

+ 27 - 14
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -11,6 +11,7 @@ import lombok.EqualsAndHashCode;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.common.utils.BaseUtils;
 import org.springblade.manager.dto.FormEndPayDTO;
+import org.springblade.manager.entity.ChangeInventoryForm;
 import org.springblade.manager.entity.ChapterEndPay;
 import org.springblade.manager.utils.InventoryUCUtil;
 import org.springblade.manager.utils.PeriodContractUtil;
@@ -986,27 +987,27 @@ public class ExecutorMeter extends FormulaExecutor {
                     //同一组清单编号
                     List<ChangeTokenInventory> ChangeTokenInventoryList = entry.getValue();
                     InventoryUnitChange change = new InventoryUnitChange();
-                    ContractInventoryForm inventoryNum = InventoryUCUtil.getInventoryNum(ChangeTokenInventoryList.get(0).getContractFormId());
+                    ContractInventoryForm inventory = InventoryUCUtil.getInventory(ChangeTokenInventoryList.get(0).getContractFormId());
                     /*清单编号*/
-                    change.setInventoryNum(inventoryNum.getChapterNumber()+"章");
+                    change.setInventoryNum(inventory.getChapterNumber()+"章");
                     /*项目编号*/
                     change.setFormNumber(entry.getKey());
                     /*项目内容*/
-                    change.setItemName(inventoryNum.getFormName());
+                    change.setItemName(inventory.getFormName());
                     /*计量单位*/
-                    change.setUnit(inventoryNum.getUnit());
+                    change.setUnit(inventory.getUnit());
                     /*合同清单数量(单价)*/
-                    change.setContractInventoryPrice(inventoryNum.getBidPrice()+"");
+                    change.setContractInventoryPrice(inventory.getBidPrice()+"");
                     /*合同清单数量(工程量)*/
-                    change.setContractInventoryUnit(inventoryNum.getContractTotal()+"");
+                    change.setContractInventoryUnit(inventory.getContractTotal()+"");
                     /*合同清单数量(金额)*/
-                    change.setContractInventoryAmount(inventoryNum.getContractMoney()+"");
+                    change.setContractInventoryAmount(inventory.getContractMoney()+"");
                     /*到本期末变更后(单价)*/
-                    change.setAfterChangePeriodPrice(inventoryNum.getChangePrice()+"");
+                    change.setAfterChangePeriodPrice(inventory.getChangePrice()+"");
                     /*到本期末变更后(工程量)*/
-                    change.setAfterChangePeriodUnit(inventoryNum.getChangeTotal()+"");
+                    change.setAfterChangePeriodUnit(inventory.getChangeTotal()+"");
                     /*到本期末变更后(金额)*/
-                    change.setAfterChangePeriodAmount(inventoryNum.getChangeMoney()+"");
+                    change.setAfterChangePeriodAmount(inventory.getChangeMoney()+"");
                     //统计本期变更(数量) 将所有的变更数量加起来
                     BigDecimal totalChangeUnit = ChangeTokenInventoryList.stream()
                             .map(ChangeTokenInventory::getChangeTotal)
@@ -1054,11 +1055,23 @@ public class ExecutorMeter extends FormulaExecutor {
                         }
                     }
                     if(prePeriodId!=null){
-
+                        //上一期变更情况
+                        ChangeInventoryForm preChangeForm = InventoryUCUtil.getChangeForm(tec.getContractId(), prePeriodId, entry.getKey());
+                        if(preChangeForm!=null){
+                            //上一期的到本期末变更数量+本期变更数量
+                            /*到本期末变更累计数量*/
+                            BigDecimal prechangeTotal = new BigDecimal(StringUtils.isEmpty(preChangeForm.getChangeTotal())?"0":preChangeForm.getChangeTotal());
+                            change.setChangeEndPeriodUnit(prechangeTotal.add(prechangeTotal)+"");
+                            //上一期的到本期末变更金额+本期变更金额
+                            /*到本期末变更累计金额*/
+                            BigDecimal prechangeMoney = new BigDecimal(StringUtils.isEmpty(preChangeForm.getChangeMoney())?"0":preChangeForm.getChangeMoney());
+                            change.setChangeEndPeriodAmount(prechangeMoney.add(totalChangeAmount)+"");
+                        }
                     }
-                    //获取上一期的到本期末变更数量
-
-                    //获取上一期的到本期末变更金额
+                    dataList.add(change);
+                }
+                if(!dataList.isEmpty()){
+                    InventoryUCUtil.saveOrUpdate(dataList,tec.getContractId(),tec.getPeriodId());
                 }
                 putOut();
             }

+ 35 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/InventoryUCUtil.java

@@ -1,9 +1,13 @@
 package org.springblade.manager.utils;
 
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.manager.entity.ChangeInventoryForm;
+import org.springblade.manager.vo.InventoryUnitChange;
 import org.springblade.meter.entity.ChangeTokenForm;
 import org.springblade.meter.entity.ChangeTokenInventory;
 import org.springblade.meter.entity.ContractInventoryForm;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Component;
@@ -15,14 +19,41 @@ import java.util.List;
 public class InventoryUCUtil {
     private static JdbcTemplate jdbcTemplate;
 
-    public static ContractInventoryForm getInventoryNum(Long contractFormId) {
+    @Autowired
+    public  void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
+        InventoryUCUtil.jdbcTemplate = jdbcTemplate;
+    }
+    //获取清单详情
+    public static ContractInventoryForm getInventory(Long contractFormId) {
         String sql="select * from s_contract_inventory_form where id ="+contractFormId;
         return jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<>(ContractInventoryForm.class));
     }
 
-    @Autowired
-    public  void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
-        InventoryUCUtil.jdbcTemplate = jdbcTemplate;
+    //获取变更情况
+    public static ChangeInventoryForm getChangeForm(Long contractId, Long prePeriodId, String formNumber) {
+        String sql="select * from s_change_inventory_form where contract_id="+contractId+" and period_id="+prePeriodId+" and form_number='"+formNumber+"' and is_deleted=0";
+        try {
+            return jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<>(ChangeInventoryForm.class));
+        } catch (EmptyResultDataAccessException e) {
+            return null; // 或者返回默认值
+        }
+    }
+
+    //新增或修改当前期 变更情况
+    public static void saveOrUpdate(List<InventoryUnitChange> dataList,Long contractId, Long periodId) {
+        for (InventoryUnitChange change : dataList) {
+            ChangeInventoryForm changeForm = getChangeForm(contractId, periodId, change.getFormNumber());
+            if(changeForm==null){
+                String insertSql = "INSERT INTO s_change_inventory_form(id,contract_id,period_id,form_number,item_name,change_total,change_money,after_change_total,after_change_money,is_deleted) VALUES(?,?,?,?,?,?,?,?,?,?)";
+                jdbcTemplate.update(insertSql, SnowFlakeUtil.getId(), contractId, periodId, change.getFormNumber(), change.getItemName(),
+                        change.getChangePeriodUnit(), change.getChangePeriodAmount(), change.getChangeEndPeriodUnit(),
+                        change.getChangeEndPeriodAmount(), 0);
+            }else {
+                String updateSql = "UPDATE s_change_inventory_form SET change_total=?, change_money=?, after_change_total=?, after_change_money=? WHERE id=?";
+                jdbcTemplate.update(updateSql, change.getChangePeriodUnit(), change.getChangePeriodAmount(),
+                        change.getChangeEndPeriodUnit(), change.getChangeEndPeriodAmount(), changeForm.getId());
+            }
+        }
     }
 
     // 获取当前期变更令