Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master' into master

yangyj 1 anno fa
parent
commit
158bed57b6
13 ha cambiato i file con 236 aggiunte e 11 eliminazioni
  1. 59 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterial.java
  2. 61 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterialAdjust.java
  3. 42 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterialAdjustDetail.java
  4. 11 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterialPrice.java
  5. 1 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterialValidity.java
  6. 11 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormMaterial.java
  7. 11 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMaterialVO3.java
  8. 12 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/GetLinkAllFormVO.java
  9. 11 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/GetMaterialCurrentPriceVO.java
  10. 4 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMaterialAdjustMapper.xml
  11. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMaterialMapper.xml
  12. 11 4
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMaterialAdjustServiceImpl.java
  13. 1 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMaterialValidityServiceImpl.java

+ 59 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterial.java

@@ -90,4 +90,63 @@ public class ContractMaterial extends BaseEntity {
     @ApiModelProperty(value = "材料总和抵扣率")
     private BigDecimal deductionRatio;
 
+    public BigDecimal getPrice() {
+        if (price == null){
+            return null;
+        }else {
+            return new BigDecimal(price.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setPrice(BigDecimal price) {
+        this.price = new BigDecimal(price.stripTrailingZeros().toPlainString());
+    }
+
+    public BigDecimal getWastageRatio() {
+        if (wastageRatio == null){
+            return null;
+        }else {
+            return new BigDecimal(wastageRatio.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setWastageRatio(BigDecimal wastageRatio) {
+        this.wastageRatio = new BigDecimal(wastageRatio.stripTrailingZeros().toPlainString());
+    }
+
+    public BigDecimal getQuotaRatio() {
+        if (quotaRatio == null){
+            return null;
+        }else {
+            return new BigDecimal(quotaRatio.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setQuotaRatio(BigDecimal quotaRatio) {
+        this.quotaRatio = new BigDecimal(quotaRatio.stripTrailingZeros().toPlainString());
+    }
+
+    public BigDecimal getOwnerRatio() {
+        if (ownerRatio == null){
+            return null;
+        }else {
+            return new BigDecimal(ownerRatio.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setOwnerRatio(BigDecimal ownerRatio) {
+        this.ownerRatio = new BigDecimal(ownerRatio.stripTrailingZeros().toPlainString());
+    }
+
+    public BigDecimal getDeductionRatio() {
+        if (deductionRatio == null){
+            return null;
+        }else {
+            return new BigDecimal(deductionRatio.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setDeductionRatio(BigDecimal deductionRatio) {
+        this.deductionRatio = new BigDecimal(deductionRatio.stripTrailingZeros().toPlainString());
+    }
 }

+ 61 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterialAdjust.java

@@ -29,7 +29,7 @@ import java.time.LocalDate;
 import java.time.YearMonth;
 
 /**
- * 合同材料表实体类
+ * 合同材料调差表实体类
  *
  * @author BladeX
  * @since 2023-11-29
@@ -110,7 +110,67 @@ public class ContractMaterialAdjust extends BaseEntity {
     @ApiModelProperty(value = "调差计算式")
     private String adjustCalculation;
 
+    //因为计量期审批通过之后可以随意撤回,目前此字段毫无意义,审批状态取合同计量期实时状态
     @ApiModelProperty(value = "审批状态:0未完成1已完成(此处根据计量期状态)")
     private Integer approveStatus;
 
+    public BigDecimal getCurrentPrice() {
+        if (currentPrice == null){
+            return null;
+        }else {
+            return new BigDecimal(currentPrice.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setCurrentPrice(BigDecimal currentPrice) {
+        this.currentPrice = new BigDecimal(currentPrice.stripTrailingZeros().toPlainString());
+    }
+
+    public BigDecimal getMaterialPrice() {
+        if (materialPrice == null){
+            return null;
+        }else {
+            return new BigDecimal(materialPrice.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setMaterialPrice(BigDecimal materialPrice) {
+        this.materialPrice = new BigDecimal(materialPrice.stripTrailingZeros().toPlainString());
+    }
+
+    public BigDecimal getRangePriceRatio() {
+        if (rangePriceRatio == null){
+            return null;
+        }else {
+            return new BigDecimal(rangePriceRatio.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setRangePriceRatio(BigDecimal rangePriceRatio) {
+        this.rangePriceRatio = new BigDecimal(rangePriceRatio.stripTrailingZeros().toPlainString());
+    }
+
+    public BigDecimal getAdjustTotal() {
+        if (adjustTotal == null){
+            return null;
+        }else {
+            return new BigDecimal(adjustTotal.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setAdjustTotal(BigDecimal adjustTotal) {
+        this.adjustTotal = new BigDecimal(adjustTotal.stripTrailingZeros().toPlainString());
+    }
+
+    public BigDecimal getAdjustMoney() {
+        if (adjustMoney == null){
+            return null;
+        }else {
+            return new BigDecimal(adjustMoney.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setAdjustMoney(BigDecimal adjustMoney) {
+        this.adjustMoney =  new BigDecimal(adjustMoney.stripTrailingZeros().toPlainString());
+    }
 }

+ 42 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterialAdjustDetail.java

@@ -81,11 +81,52 @@ public class ContractMaterialAdjustDetail extends BaseEntity {
     @ApiModelProperty(value = "调差数量")
     private BigDecimal adjustTotal;
 
+    public BigDecimal getChangeTotal() {
+        if (changeTotal == null){
+            return null;
+        }else {
+            return new BigDecimal(changeTotal.stripTrailingZeros().toPlainString());
+        }
+
+    }
+
+    public void setChangeTotal(BigDecimal changeTotal) {
+        this.changeTotal = new BigDecimal(changeTotal.stripTrailingZeros().toPlainString());
+    }
+
+    public BigDecimal getAdjustFactor() {
+        if (adjustFactor == null){
+            return null;
+        }else {
+            return new BigDecimal(adjustFactor.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setAdjustFactor(BigDecimal adjustFactor) {
+        this.adjustFactor = new BigDecimal(adjustFactor.stripTrailingZeros().toPlainString());
+    }
+
     public BigDecimal getMeterTotal() {
-        return new BigDecimal(meterTotal.stripTrailingZeros().toPlainString());
+        if (meterTotal == null){
+            return null;
+        }else {
+            return new BigDecimal(meterTotal.stripTrailingZeros().toPlainString());
+        }
     }
 
     public void setMeterTotal(BigDecimal meterTotal) {
         this.meterTotal = new BigDecimal(meterTotal.stripTrailingZeros().toPlainString());
     }
+
+    public BigDecimal getAdjustTotal() {
+        if (adjustTotal == null){
+            return null;
+        }else {
+            return new BigDecimal(adjustTotal.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setAdjustTotal(BigDecimal adjustTotal) {
+        this.adjustTotal =  new BigDecimal(adjustTotal.stripTrailingZeros().toPlainString());
+    }
 }

+ 11 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterialPrice.java

@@ -58,4 +58,15 @@ public class ContractMaterialPrice extends BaseEntity {
     @ApiModelProperty(value = "实时单价")
     private BigDecimal currentPrice;
 
+    public BigDecimal getCurrentPrice() {
+        if (currentPrice == null){
+            return null;
+        }else {
+            return new BigDecimal(currentPrice.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setCurrentPrice(BigDecimal currentPrice) {
+        this.currentPrice =  new BigDecimal(currentPrice.stripTrailingZeros().toPlainString());
+    }
 }

+ 1 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractMaterialValidity.java

@@ -26,7 +26,7 @@ import java.math.BigDecimal;
 import java.time.LocalDate;
 
 /**
- * 合同材料表实体类
+ * 材料价格有效期表实体类
  *
  * @author BladeX
  * @since 2023-11-29

+ 11 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormMaterial.java

@@ -58,4 +58,15 @@ public class InventoryFormMaterial extends BaseEntity {
     @ApiModelProperty(value = "调差系数")
     private BigDecimal adjustFactor;
 
+    public BigDecimal getAdjustFactor() {
+        if (adjustFactor == null){
+            return null;
+        }else {
+            return new BigDecimal(adjustFactor.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setAdjustFactor(BigDecimal adjustFactor) {
+        this.adjustFactor = new BigDecimal(adjustFactor.stripTrailingZeros().toPlainString());
+    }
 }

+ 11 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractMaterialVO3.java

@@ -48,4 +48,15 @@ public class ContractMaterialVO3 {
 	@ApiModelProperty(value = "单价")
 	private BigDecimal price;
 
+	public BigDecimal getPrice() {
+		if (price == null){
+			return null;
+		}else {
+			return new BigDecimal(price.stripTrailingZeros().toPlainString());
+		}
+	}
+
+	public void setPrice(BigDecimal price) {
+		this.price = new BigDecimal(price.stripTrailingZeros().toPlainString());
+	}
 }

+ 12 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/GetLinkAllFormVO.java

@@ -31,4 +31,16 @@ public class GetLinkAllFormVO {
 
     @ApiModelProperty(value = "是否被引用0否1是,被引用后不允许取消")
     private Integer isQuote;
+
+    public BigDecimal getAdjustFactor() {
+        if (adjustFactor == null){
+            return null;
+        }else {
+            return new BigDecimal(adjustFactor.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setAdjustFactor(BigDecimal adjustFactor) {
+        this.adjustFactor = new BigDecimal(adjustFactor.stripTrailingZeros().toPlainString());
+    }
 }

+ 11 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/GetMaterialCurrentPriceVO.java

@@ -41,4 +41,15 @@ public class GetMaterialCurrentPriceVO {
     @ApiModelProperty(value = "结束日期")
     private LocalDate endDate;
 
+    public BigDecimal getCurrentPrice() {
+        if (currentPrice == null){
+            return null;
+        }else {
+            return new BigDecimal(currentPrice.stripTrailingZeros().toPlainString());
+        }
+    }
+
+    public void setCurrentPrice(BigDecimal currentPrice) {
+        this.currentPrice = new BigDecimal(currentPrice.stripTrailingZeros().toPlainString());
+    }
 }

+ 4 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMaterialAdjustMapper.xml

@@ -17,8 +17,10 @@
         </foreach>
     </select>
     <select id="page2" resultType="org.springblade.meter.vo.ContractMaterialAdjustVO">
-        select *,if(approve_status = 0,'未完成','已完成') as approveStatusName
-        from s_contract_material_adjust
+        select *,
+               (select approve_status from s_contract_meter_period scmp
+                        where scmp.id = scma.meter_period_id)as approveStatus
+        from s_contract_material_adjust scma
         where contract_id = #{dto.contractId} and is_deleted = 0
         <if test="dto.contractPeriodId != null and dto.contractPeriodId != ''">
             and contract_period_id = #{dto.contractPeriodId}

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMaterialMapper.xml

@@ -73,7 +73,7 @@
                         <if test="dto.id != null">
                             and cma.id != #{dto.id}
                         </if>
-                                                                                       )
+                        )
     </select>
 
 

+ 11 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMaterialAdjustServiceImpl.java

@@ -232,6 +232,7 @@ public class ContractMaterialAdjustServiceImpl extends BaseServiceImpl<ContractM
      * 生成材料调差计算式
      */
     private void buildCalculation(ContractMaterialAdjustAddDTO dto,BigDecimal adjustTotal,ContractMaterialAdjust adjust){
+        adjust.setAdjustTotal(adjustTotal);
         //获取材料信息,用于调差范围
         ContractMaterial material= baseMapper.getMaterialInfo(dto.getContractMaterialId());
         if (material == null){
@@ -243,22 +244,28 @@ public class ContractMaterialAdjustServiceImpl extends BaseServiceImpl<ContractM
         StringBuilder str = new StringBuilder("调差价格依据于:"+dto.getMaterialName()+
                 "("+validity.getStartDate().format(DateTimeFormatter.ofPattern("yyyyMMdd"))+"至"+
                 validity.getEndDate().format(DateTimeFormatter.ofPattern("yyyyMMdd"))+")\n");
+        /** 如果价差幅度小于调差限额,则调差金额为0*/
+        if (dto.getRangePriceRatio().abs().compareTo(material.getQuotaRatio()) < 0){
+            String st = "调差公式(标准):调差金额=0,"+dto.getRangePriceRatio()+"% <= ±"+material.getQuotaRatio()+"%";
+            adjust.setAdjustMoney(BigDecimal.ZERO);
+            adjust.setAdjustCalculation(st);
+            return ;
+        }
         BigDecimal adjustMoney = BigDecimal.ZERO;
         BigDecimal price = dto.getMaterialPrice();
         BigDecimal currentPrice = dto.getCurrentPrice();
         if (price.compareTo(currentPrice) == 1){
             //市场价低于基准价
             adjustMoney = adjustTotal.multiply(currentPrice.subtract((price.multiply(new BigDecimal(1).subtract(material.getQuotaRatio().multiply(new BigDecimal("0.01"))))))).multiply(new BigDecimal("1.09")).setScale(2, RoundingMode.HALF_UP);
-            str.append("调差公式(标准):调增金额=调差数量×[市场价-基准价×(1-风险幅度差%)]×(1+合同增值税税率)\n");
+            str.append("调差公式(标准)调增金额=调差数量×[市场价-基准价×(1-风险幅度差%)]×(1+合同增值税税率)\n");
             str.append("调差公式(计算):"+adjustMoney+"="+adjustTotal+"*["+currentPrice+"-"+price+"*(1-"+material.getQuotaRatio()+"%)]*(1+9.0/100)");
         }else {
             //市场价高于基准价
             adjustMoney = adjustTotal.multiply(currentPrice.subtract((price.multiply(new BigDecimal(1).add(material.getQuotaRatio().multiply(new BigDecimal("0.01"))))))).multiply(new BigDecimal("1.09")).setScale(2, RoundingMode.HALF_UP);
-            str.append("调差公式(标准):调增金额=调差数量×[市场价-基准价×(1+风险幅度差%)]×(1+合同增值税税率)\n");
+            str.append("调差公式(标准)调增金额=调差数量×[市场价-基准价×(1+风险幅度差%)]×(1+合同增值税税率)\n");
             str.append("调差公式(计算):"+adjustMoney+"="+adjustTotal+"*["+currentPrice+"-"+price+"*(1+"+material.getQuotaRatio()+"%)]*(1+9.0/100)");
         }
-        adjust.setAdjustMoney(adjustMoney);
-        adjust.setAdjustTotal(adjustTotal);
+        adjust.setAdjustMoney(adjustMoney.setScale(0,RoundingMode.HALF_UP));
         adjust.setAdjustCalculation(str.toString());
     }
 }

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractMaterialValidityServiceImpl.java

@@ -168,7 +168,7 @@ public class ContractMaterialValidityServiceImpl extends BaseServiceImpl<Contrac
         }
         Map<String, Object> map = new HashMap<>();
         BigDecimal decimal = currentPrice.subtract(price).multiply(new BigDecimal(100)).divide(price, 2, RoundingMode.DOWN);
-        map.put("rangePriceRatio",decimal);
+        map.put("rangePriceRatio",decimal.stripTrailingZeros().toPlainString());
         map.put("adjustCalculation",str.toString());
         if (decimal.compareTo(quotaRatio.negate()) == 1 && decimal.compareTo(quotaRatio) == -1){
             map.put("isAdjust",0);