Kaynağa Gözat

1.机器设备价格指数抹零问题修复,指数保留四位小数
2.机器设备新增列原值增值率
3.机器设备测算表新增表尾合计行、新增表尾合计段落模板相关

GouGengquan 6 ay önce
ebeveyn
işleme
8734d1bfc9

+ 1 - 1
domain/src/main/java/com/dayou/bo/EqptReportFillBO.java

@@ -62,7 +62,7 @@ public class EqptReportFillBO {
     /**
      * 增值率
      */
-    private Double valueAddedRate;
+    private Double netValueAddedRate;
 
     /**
      * 开始评估工作年月

+ 16 - 15
domain/src/main/java/com/dayou/common/CalculateFormula.java

@@ -26,22 +26,23 @@ public class CalculateFormula {
      */
     public enum EquipmentMainFormula {
         不含税单价("ROUND(M{0,number,#}/(1+N{0,number,#}),2)",15),
-        原值("AT{0,number,#}",17),
-        成新率("AB{0,number,#}",18),
+        原值("AU{0,number,#}",17),
+        成新率("AC{0,number,#}",18),
         净值("ROUND(Q{0,number,#}*R{0,number,#},0)",19),
-        增值率("ROUND((S{0,number,#}-L{0,number,#})/L{0,number,#},2)", 20),
-        已使用年数("ROUND(($X$2-F{0,number,#})/365,2)",22),
-        年限成新率("IF((U{0,number,#}-V{0,number,#})/U{0,number,#}<15%,ROUND(W{0,number,#}/(V{0,number,#}+W{0,number,#}),2),ROUND((U{0,number,#}-V{0,number,#})/U{0,number,#},2))",24),
-        综合成新率("ROUND(X{0,number,#}*Y{0,number,#}+Z{0,number,#}*AA{0,number,#},2)",28),
-        报价("AH{0,number,#}*I{0,number,#}",35),
-        运杂费("ROUND(AI{0,number,#}*AJ{0,number,#},0)",37),
-        基础费("ROUND(AI{0,number,#}*AL{0,number,#},0)",39),
-        安装费("AI{0,number,#}*AN{0,number,#}",41),
-        设备工程费("ROUND(AI{0,number,#}+AK{0,number,#}+AM{0,number,#}+AO{0,number,#},0)",42),
-        前期费("ROUND(AP{0,number,#}*$AW$3,0)",43),
-        资金成本("ROUND((AQ{0,number,#}*((1+$AW$3)^($AW$1)-1)+AP{0,number,#}*((1+$AW$3)^($AW$1/2)-1)),0)",44),
-        可抵扣增值税("ROUND(AI{0,number,#}/(1+13%)*13%+(AK{0,number,#}+AM{0,number,#}+AO{0,number,#})/(1+9%)*9%+AP{0,number,#}*($AW$3-$AW$4)/1.06*0.06,0)",45),
-        重置全价("ROUND(AP{0,number,#}+AQ{0,number,#}+AR{0,number,#}-AS{0,number,#},0)",46);
+        原值增值率("ROUND((Q{0,number,#}-K{0,number,#})/K{0,number,#},4)", 20),
+        净值增值率("ROUND((S{0,number,#}-L{0,number,#})/L{0,number,#},4)", 21),
+        已使用年数("ROUND(($Y$2-F{0,number,#})/365,2)",23),
+        年限成新率("IF((V{0,number,#}-W{0,number,#})/V{0,number,#}<15%,ROUND(X{0,number,#}/(W{0,number,#}+X{0,number,#}),2),ROUND((V{0,number,#}-W{0,number,#})/V{0,number,#},2))",25),
+        综合成新率("ROUND(Y{0,number,#}*Z{0,number,#}+AA{0,number,#}*AB{0,number,#},2)",29),
+        报价("AI{0,number,#}*I{0,number,#}",36),
+        运杂费("ROUND(AJ{0,number,#}*AK{0,number,#},0)",38),
+        基础费("ROUND(AJ{0,number,#}*AM{0,number,#},0)",40),
+        安装费("AJ{0,number,#}*AO{0,number,#}",42),
+        设备工程费("ROUND(AJ{0,number,#}+AL{0,number,#}+AN{0,number,#}+AP{0,number,#},0)",43),
+        前期费("ROUND(AQ{0,number,#}*$AX$3,0)",44),
+        资金成本("ROUND((AR{0,number,#}*((1+$AX$3)^($AX$1)-1)+AQ{0,number,#}*((1+$AX$3)^($AX$1/2)-1)),0)",45),
+        可抵扣增值税("ROUND(AJ{0,number,#}/(1+13%)*13%+(AL{0,number,#}+AN{0,number,#}+AP{0,number,#})/(1+9%)*9%+AQ{0,number,#}*($AX$3-$AX$4)/1.06*0.06,0)",46),
+        重置全价("ROUND(AQ{0,number,#}+AR{0,number,#}+AS{0,number,#}-AT{0,number,#},0)",47);
 
         /**
          * 公式

+ 1 - 1
domain/src/main/java/com/dayou/entity/AssetsCalculateEqptData.java

@@ -88,7 +88,7 @@ public class AssetsCalculateEqptData extends BaseEntity implements Serializable
      */
     @ExcelProperty("数量")
     @TableField(updateStrategy = FieldStrategy.IGNORED)
-    private String quantity;
+    private Integer quantity;
 
     /**
      * 计量单位

+ 3 - 2
domain/src/main/java/com/dayou/entity/EqptPPI.java

@@ -2,6 +2,7 @@ package com.dayou.entity;
 import com.dayou.common.BaseEntity;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -30,9 +31,9 @@ public class EqptPPI extends BaseEntity implements Serializable {
     private String ppiType;
 
     /**
-     * 指数值
+     * 指数值(用String避免小数中的0被抹掉)
      */
-    private Float ppi;
+    private String ppi;
 
 
 }

+ 2 - 1
domain/src/main/java/com/dayou/enums/EqptCalculateTmplCode.java

@@ -4,9 +4,10 @@ public enum EqptCalculateTmplCode {
 
     MAIN("MAIN", "机器设备-主模板"),
     MAIN_DETAIL("MAIN_DETAIL", "机器设备-主模板-设备信息-段落模板"),
+    MAIN_BOTTOM_TOTAL("MAIN_BOTTOM_TOTAL", "机器设备-主模板-表尾合计-段落模板"),
     IMPORTED("IMPORTED", "机器设备-进口设备-段落模板"),
     NONSTANDARD("NONSTANDARD", "机器设备-非标设备-段落模板"),
-    DECLARATION_FORM("DECLARATION_FORM", "机器设备-基础信息导入模板");
+    DECLARATION_FORM("DECLARATION_FORM", "机器设备-基础信息导入模板"),;
 
     private String code;
 

+ 1 - 1
domain/src/main/java/com/dayou/vo/AssetsCalculateEqptImpDataVO.java

@@ -47,7 +47,7 @@ public class AssetsCalculateEqptImpDataVO {
     /**
      * 数量
      */
-    private String quantity;
+    private Integer quantity;
 
     /**
      * 计量单位

+ 1 - 1
domain/src/main/java/com/dayou/vo/AssetsCalculateEqptNonsDataVO.java

@@ -48,7 +48,7 @@ public class AssetsCalculateEqptNonsDataVO {
     /**
      * 数量
      */
-    private String quantity;
+    private Integer quantity;
 
     /**
      * 计量单位

+ 9 - 7
service/src/main/java/com/dayou/service/impl/AssetsCalculateServiceImpl.java

@@ -246,9 +246,6 @@ public class AssetsCalculateServiceImpl extends ServiceImpl<AssetsCalculateMappe
                     cell = row.createCell(formula.getColumn() - 1);
                 }
                 // 设置公式
-                int testRow1 = (row.getRowNum() + 1);
-                int testRow2 = (row.getRowNum() + 1);
-                String test = MessageFormat.format(formula.getFormula(), (row.getRowNum() + 1));
                 cell.setCellFormula(MessageFormat.format(formula.getFormula(), (row.getRowNum() + 1)));
             }
         }
@@ -288,9 +285,9 @@ public class AssetsCalculateServiceImpl extends ServiceImpl<AssetsCalculateMappe
 
             // 将主表sheet中进口设备数据的单价改为引用对应的进口设备表的设备原价
             for (Row row : sheet) {
-                Cell cell = row.getCell(28); // AB列(设备类型)的索引是28(从0开始计数)
+                Cell cell = row.getCell(29); // AB列(设备类型)29(从0开始计数)
                 if (cell != null && cell.getStringCellValue().equals("进口设备")) {
-                    Cell priceCell = row.getCell(33); // 单价单元格
+                    Cell priceCell = row.getCell(34); // 单价单元格
                     int importedRowNum;
                     // 循环进口设备sheet
                     for (int i = 2; i <= importedSheet.getLastRowNum(); i++) { // 跳过前两行
@@ -344,9 +341,9 @@ public class AssetsCalculateServiceImpl extends ServiceImpl<AssetsCalculateMappe
 
             // 将主表sheet中非标设备数据的单价改为引用对应的非标设备表的设备原价
             for (Row row : sheet) {
-                Cell cell = row.getCell(28); // AB列(设备类型)的索引是28(从0开始计数)
+                Cell cell = row.getCell(29); // AB列(设备类型)的索引是28(从0开始计数)
                 if (cell != null && cell.getStringCellValue().equals("非标设备")) {
-                    Cell priceCell = row.getCell(33); // 单价单元格
+                    Cell priceCell = row.getCell(34); // 单价单元格
                     int importedRowNum;
                     // 循环进口设备sheet
                     for (int i = 2; i <= nonstandardSheet.getLastRowNum(); i++) { // 跳过前两行
@@ -367,6 +364,11 @@ public class AssetsCalculateServiceImpl extends ServiceImpl<AssetsCalculateMappe
         // 强制计算公式
         workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
 
+
+        // 设置表尾合计(这一步一定要最后做,如果在设置其他公式之前设置表尾合计,可能会导致表尾合计的公式被覆盖)
+        TmplAssetCalculateSection mainBottomTotal = calculateSectionMapper.getByTmplCode(MAIN_BOTTOM_TOTAL.getCode());
+        EasyExcelUtil.mergeExcel(fileNetConfig.getBaseDir() + mainBottomTotal.getSectionFileUrl() + mainBottomTotal.getSectionFileName(), workbook, 0, workbook.getSheetAt(0).getLastRowNum() + 1, 0, 0);
+
         OutputStream outputStream = Files.newOutputStream(Paths.get(mainMergePath));
         workbook.write(outputStream);
         // 关闭流

+ 1 - 1
service/src/main/java/com/dayou/service/impl/AssetsReportServiceImpl.java

@@ -156,7 +156,7 @@ public class AssetsReportServiceImpl extends ServiceImpl<AssetsReportMapper, Ass
         EqptReportFillBO eqptReportFillBO = assetsReportMapper.getEqptReportFillBO(reportId);
         // 设置增值率(评估净值 - 账面净值) / 账面净值,保留两位小数
         if (ObjectUtil.isNotNull(eqptReportFillBO.getEvaluateNetValue()) && ObjectUtil.isNotNull(eqptReportFillBO.getBookNetValue())) {
-            eqptReportFillBO.setValueAddedRate(((eqptReportFillBO.getEvaluateNetValue().subtract(eqptReportFillBO.getBookNetValue())).divide(eqptReportFillBO.getBookNetValue(), 2, RoundingMode.HALF_UP)).doubleValue() * 100);
+            eqptReportFillBO.setNetValueAddedRate(((eqptReportFillBO.getEvaluateNetValue().subtract(eqptReportFillBO.getBookNetValue())).divide(eqptReportFillBO.getBookNetValue(), 2, RoundingMode.HALF_UP)).doubleValue() * 100);
         }
         // 将账面、评估的原值、净值处理成千分位格式
         DecimalFormat decimalFormat = new DecimalFormat("#,##0.##");

+ 9 - 1
sql/update_sql.sql

@@ -998,4 +998,12 @@ ALTER TABLE assets_calculate_eqpt_data MODIFY COLUMN book_net_value DECIMAL(11,2
   修改人:苟耕铨
   未更新到test-env
  */
-ALTER TABLE assets_calculate_eqpt_data ADD COLUMN remaining_useful_life INT(11) NULL COMMENT '尚可使用年限';
+ALTER TABLE assets_calculate_eqpt_data ADD COLUMN remaining_useful_life INT(11) NULL COMMENT '尚可使用年限';
+
+/**
+  日期:2025-01-09
+  修改人:苟耕铨
+  未更新到test-env
+ */
+ALTER TABLE eqpt_ppi MODIFY COLUMN ppi DECIMAL(11,4) NULL COMMENT '指数值';
+ALTER TABLE assets_calculate_eqpt_data MODIFY COLUMN quantity INT(11) NULL COMMENT '数量';