ccjgmwz 3 lat temu
rodzic
commit
fb60bd1dd1

+ 20 - 3
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/PurchaseOrderServiceImpl.java

@@ -22,12 +22,14 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.google.common.collect.Lists;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.yh.saas.plugin.yiliangyiyun.util.CalculationUtil;
 import com.yh.saas.plugin.yiliangyiyun.util.GeTuiUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -139,9 +141,24 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
         purchaseClosingReport.setCustomerName(purchaseOrder.getSeller());
         purchaseClosingReport.setStatusFlag(StatusEnum.FORM_REVIEWED.getFlag());
         purchaseClosingReport.setStatus(StatusEnum.FORM_REVIEWED.getName());
-        if (purchaseOrder.getClosingPositionPayable() < 0) {
-            purchaseClosingReport.setCollectionIngPayable(Math.abs(purchaseOrder.getClosingPositionPayable()));
+
+        BigDecimal transactionPrice = new BigDecimal(Float.toString(purchaseOrder.getTransactionPrice()));
+        BigDecimal closeRate = new BigDecimal(Float.toString(purchaseOrder.getCloseRate()));
+        BigDecimal closingBasis = new BigDecimal(Float.toString(Math.abs(purchaseOrder.getClosingBasis())));
+        Float price = transactionPrice.subtract(closeRate).subtract(closingBasis).floatValue();
+        if(price > 0){
+            purchaseClosingReport.setAmountIngPayable(CalculationUtil.mulToFloat(price,purchaseClosingReport.getClosingQuantity()));
+            purchaseClosingReport.setAmountEdPayable(0f);
+            purchaseClosingReport.setAmountNotPayable(purchaseClosingReport.getAmountIngPayable());
+        }
+        else{
+            purchaseClosingReport.setCollectionIngPayable(CalculationUtil.mulToFloat(Math.abs(price),purchaseClosingReport.getClosingQuantity()));
+            purchaseClosingReport.setCollectionEdPayable(0f);
+            purchaseClosingReport.setCollectionNotPayable(purchaseClosingReport.getCollectionIngPayable());
         }
+//        if (purchaseOrder.getClosingPositionPayable() < 0) {
+//            purchaseClosingReport.setCollectionIngPayable(Math.abs(purchaseOrder.getClosingPositionPayable()));
+//        }
         if (procurementPlanInfo != null) {
             purchaseClosingReport.setWarehouseName(procurementPlanInfo.getReceiveWarehouse());
         }
@@ -368,7 +385,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
                 purchaseOrdera.setClosePositionList(closePositionList);
                 purchaseOrdera.setPriceChangeRecordList(priceChangeRecordList);
                 purchaseOrdera.setStockInQuantity(stockInQuantity);
-
+                purchaseOrdera.setOpenPosition(CalculationUtil.subToFloat(CalculationUtil.subToFloat(purchaseOrdera.getCumulativeTurnover(),purchaseOrdera.getClosedPosition()),purchaseOrdera.getStockInQuantity()));
 
                 String taskId = "";
                 // 只有待审核状态才有taskId

+ 19 - 3
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/SaleOrderServiceImpl.java

@@ -15,6 +15,7 @@ import com.yh.saas.plugin.yiliangyiyun.exception.*;
 import com.yh.saas.plugin.yiliangyiyun.mapper.SaleOrderMapper;
 import com.yh.saas.plugin.yiliangyiyun.service.*;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.yh.saas.plugin.yiliangyiyun.util.CalculationUtil;
 import com.yh.saas.plugin.yiliangyiyun.util.GeTuiUtils;
 import com.yh.saas.toolkit.workflow.service.IWorkflowService;
 import org.apache.commons.lang3.StringUtils;
@@ -22,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -194,9 +196,23 @@ public class SaleOrderServiceImpl extends ServiceImpl<SaleOrderMapper, SaleOrder
         salesClosingReport.setStatusFlag(StatusEnum.FORM_REVIEWED.getFlag());
         salesClosingReport.setStatus(StatusEnum.FORM_REVIEWED.getName());
         salesClosingReport.setCustomerName(saleOrder.getBuyer());
-        if(saleOrder.getClosingPositionPayable() < 0 ){
-            salesClosingReport.setCollectionIngPayable(Math.abs(saleOrder.getClosingPositionPayable()));
+        BigDecimal transactionPrice = new BigDecimal(Float.toString(saleOrder.getTransactionPrice()));
+        BigDecimal closeRate = new BigDecimal(Float.toString(saleOrder.getCloseRate()));
+        BigDecimal closingBasis = new BigDecimal(Float.toString(Math.abs(saleOrder.getClosingBasis())));
+        Float price = closeRate.subtract(transactionPrice).subtract(closingBasis).floatValue();
+        if(price > 0){
+            salesClosingReport.setAmountIngPayable(CalculationUtil.mulToFloat(price,salesClosingReport.getClosingQuantity()));
+            salesClosingReport.setAmountEdPayable(0f);
+            salesClosingReport.setAmountNotPayable(salesClosingReport.getAmountIngPayable());
         }
+        else{
+            salesClosingReport.setCollectionIngPayable(CalculationUtil.mulToFloat(Math.abs(price),salesClosingReport.getClosingQuantity()));
+            salesClosingReport.setCollectionEdPayable(0f);
+            salesClosingReport.setCollectionNotPayable(salesClosingReport.getCollectionIngPayable());
+        }
+//        if(saleOrder.getClosingPositionPayable() < 0 ){
+//            salesClosingReport.setCollectionIngPayable(Math.abs(saleOrder.getClosingPositionPayable()));
+//        }
         if(salePlanInfo!=null){
             salesClosingReport.setWarehouseName(salePlanInfo.getSendWarehouse());
         }
@@ -416,7 +432,7 @@ public class SaleOrderServiceImpl extends ServiceImpl<SaleOrderMapper, SaleOrder
                 saleOrdera.setClosePositionList(closePositionList);
                 saleOrdera.setPriceChangeRecordList(priceChangeRecordList);
                 saleOrdera.setStockOutQuantity(stockOutQuantity);
-
+                saleOrdera.setOpenPosition(CalculationUtil.subToFloat(CalculationUtil.subToFloat(saleOrdera.getCumulativeTurnover(),saleOrdera.getClosedPosition()),saleOrdera.getStockOutQuantity()));
                 String taskId = "";
                 // 只有待审核状态才有taskId
                 if (StringUtils.isNotBlank(saleOrdera.getWorkflowId())) {

+ 42 - 19
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/WarehouseInOutInfoServiceImpl.java

@@ -22,10 +22,12 @@ import com.google.common.collect.Lists;
 import com.yh.saas.plugin.yiliangyiyun.service.IWarehouseInOutDetailService;
 import com.yh.saas.plugin.yiliangyiyun.service.IWarehouseInOutInfoService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.yh.saas.plugin.yiliangyiyun.util.CalculationUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 import java.util.HashMap;
@@ -356,19 +358,7 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                     // 采购订单
                     PurchaseOrder purchaseOrder = purchaseOrderService.selectOne(new EntityWrapper<PurchaseOrder>().eq("contract_no", warehouseInOutInfo.getContractNo())
                             .eq("delete_flag", "0"));
-                    if (tranCarInfo != null) {
-                        //将到货数据同步到派车表
-                        tranCarInfo.setUnloadNetWeight(warehouseInOutInfo.getNetWeight());
-                        tranCarInfo.setUnloadPoundImg(warehouseInOutInfo.getAddressUrl());
-                        tranCarInfo.setDeductionAmount(warehouseInOutInfo.getDeductionAmount());
-                        tranCarInfo.setDeductionItems(warehouseInOutInfo.getDeductionItems());
-                        tranCarInfo.setStatus(StatusEnum.DELIVERED.getName());
-                        tranCarInfo.setStatusFlag(StatusEnum.DELIVERED.getFlag());
-                        if (purchaseOrder!=null) {
-                            tranCarInfo.setSettlementPrice(purchaseOrder.getUnitPrice() - purchaseOrder.getBasis() - purchaseOrder.getUnloadingCharge() - purchaseOrder.getInvoiceFee() - Float.valueOf(warehouseInOutInfo.getDeductionAmount()));
-                        }
-                        tranCarInfoService.updateById(tranCarInfo);
-                    }
+
                     //判断是否第一次提交
                     if (StringUtils.isEmpty(warehouseInOutDetail.getId())) {
                         // 插入详情
@@ -389,7 +379,6 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                     purchaseReceiptReport.setWarehousingDate(warehouseInOutInfo.getInOutDate());
                     purchaseReceiptReport.setProtein(warehouseInOutDetail.getProtein());
                     purchaseReceiptReport.setWaterContent(warehouseInOutDetail.getWaterContent());
-                    purchaseReceiptReport.setUnitPrice(purchaseOrder.getUnitPrice());
                     purchaseReceiptReport.setDeductionAmount(Float.valueOf(warehouseInOutInfo.getDeductionAmount()));
                     purchaseReceiptReport.setNetWeight(warehouseInOutInfo.getNetWeight());
                     purchaseReceiptReport.setDeductionItems(warehouseInOutInfo.getDeductionItems());
@@ -397,12 +386,36 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                     purchaseReceiptReport.setStatusFlag(StatusEnum.FORM_REVIEWED.getFlag());
                     purchaseReceiptReport.setStatus(StatusEnum.FORM_REVIEWED.getName());
                     if (purchaseOrder != null) {
+                        purchaseReceiptReport.setUnitPrice(purchaseOrder.getUnitPrice());
                         purchaseReceiptReport.setBasisPrice(purchaseOrder.getBasis());
                         purchaseReceiptReport.setUnloadingCharge(purchaseOrder.getUnloadingCharge());
                         purchaseReceiptReport.setInvoiceFee(purchaseOrder.getInvoiceFee());
                         purchaseReceiptReport.setCustomerName(purchaseOrder.getSeller());
                         purchaseReceiptReport.setInvoiceType(purchaseOrder.getType());
                         purchaseReceiptReport.setInvoiceTypeKey(purchaseOrder.getType());
+                        BigDecimal unitPrice = new BigDecimal(Float.toString(purchaseReceiptReport.getUnitPrice()));
+                        BigDecimal basis = new BigDecimal(Float.toString(purchaseReceiptReport.getBasisPrice()));
+                        BigDecimal unloadingCharge = new BigDecimal(Float.toString(purchaseReceiptReport.getUnloadingCharge()));
+                        BigDecimal invoiceFee = new BigDecimal(Float.toString(purchaseReceiptReport.getInvoiceFee()));
+                        BigDecimal deductionAmount = new BigDecimal(Float.toString(purchaseReceiptReport.getDeductionAmount()));
+
+                        purchaseReceiptReport.setSettlementPrice(unitPrice.add(basis).add(unloadingCharge).add(invoiceFee).add(deductionAmount).floatValue());
+                        purchaseReceiptReport.setAmountIngPayable(CalculationUtil.mulToFloat(purchaseReceiptReport.getSettlementPrice(),purchaseReceiptReport.getNetWeight()));
+                        purchaseReceiptReport.setAmountEdPayable(0f);
+                        purchaseReceiptReport.setAmountNotPayable(purchaseReceiptReport.getAmountIngPayable());
+                        if (tranCarInfo != null) {
+                            //将到货数据同步到派车表
+                            tranCarInfo.setUnloadNetWeight(warehouseInOutInfo.getNetWeight());
+                            tranCarInfo.setUnloadPoundImg(warehouseInOutInfo.getAddressUrl());
+                            tranCarInfo.setDeductionAmount(warehouseInOutInfo.getDeductionAmount());
+                            tranCarInfo.setDeductionItems(warehouseInOutInfo.getDeductionItems());
+                            tranCarInfo.setStatus(StatusEnum.DELIVERED.getName());
+                            tranCarInfo.setStatusFlag(StatusEnum.DELIVERED.getFlag());
+                            if (purchaseOrder!=null) {
+                                tranCarInfo.setSettlementPrice(purchaseReceiptReport.getSettlementPrice());
+                            }
+                            tranCarInfoService.updateById(tranCarInfo);
+                        }
                     }
 
                     // 客户确认
@@ -462,10 +475,7 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                     // 销售订单
                     SaleOrder saleOrder = saleOrderService.selectOne(new EntityWrapper<SaleOrder>().eq("contract_no", warehouseInOutInfo.getContractNo())
                             .eq("delete_flag", "0"));
-                    if (saleOrder != null) {
-                        tranCarInfo.setSettlementPrice(saleOrder.getUnitPrice() + saleOrder.getBasis() + saleOrder.getInvoiceFee());
-                    }
-                    tranCarInfoService.insert(tranCarInfo);
+
                     //判断是否第一次提交
                     if (StringUtils.isEmpty(warehouseInOutDetail.getId())) {
                         // 插入详情
@@ -486,15 +496,28 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                     salesDeliveryReport.setRetrievalDate(warehouseInOutInfo.getInOutDate());
                     salesDeliveryReport.setProtein(warehouseInOutDetail.getProtein());
                     salesDeliveryReport.setWaterContent(warehouseInOutDetail.getWaterContent());
-                    salesDeliveryReport.setUnitPrice(saleOrder.getUnitPrice());
                     salesDeliveryReport.setNetWeight(warehouseInOutInfo.getNetWeight());
                     salesDeliveryReport.setWarehouseName(warehouseInOutInfo.getWarehouseName());
                     salesDeliveryReport.setStatusFlag(StatusEnum.FORM_REVIEWED.getFlag());
                     salesDeliveryReport.setStatus(StatusEnum.FORM_REVIEWED.getName());
                     if (saleOrder != null) {
+                        salesDeliveryReport.setUnitPrice(saleOrder.getUnitPrice());
                         salesDeliveryReport.setBasisPrice(saleOrder.getBasis());
                         salesDeliveryReport.setInvoiceFee(saleOrder.getInvoiceFee());
                         salesDeliveryReport.setCustomerName(saleOrder.getBuyer());
+
+                        BigDecimal unitPrice = new BigDecimal(Float.toString(salesDeliveryReport.getUnitPrice()));
+                        BigDecimal basis = new BigDecimal(Float.toString(salesDeliveryReport.getBasisPrice()));
+                        BigDecimal invoiceFee = new BigDecimal(Float.toString(salesDeliveryReport.getInvoiceFee()));
+
+                        salesDeliveryReport.setSettlementPrice(unitPrice.add(basis).add(invoiceFee).floatValue());
+                        salesDeliveryReport.setCollectionIngPayable(CalculationUtil.mulToFloat(salesDeliveryReport.getSettlementPrice(),salesDeliveryReport.getNetWeight()));
+//                        salesDeliveryReport.setCollectionEdPayable(0f);
+//                        salesDeliveryReport.setCollectionNotPayable(salesDeliveryReport.getCollectionIngPayable());
+                        if (saleOrder != null) {
+                            tranCarInfo.setSettlementPrice(saleOrder.getUnitPrice() + saleOrder.getBasis() + saleOrder.getInvoiceFee());
+                        }
+                        tranCarInfoService.insert(tranCarInfo);
                     }
 
                     // 客户确认

+ 392 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/CalculationUtil.java

@@ -0,0 +1,392 @@
+package com.yh.saas.plugin.yiliangyiyun.util;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author:chengchangjiang
+ * @Description: 精确计算方法类
+ * @Date:Created in 10:53 2021-08-23
+ */
+public class CalculationUtil {
+
+    /**
+     * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
+     * 确的浮点数运算,包括加减乘除和四舍五入。
+     */
+//默认除法运算精度
+    private static final int DEF_DIV_SCALE = 10;
+
+    /**
+     * 提供精确的加法运算。
+     * @param v1 被加数
+     * @param v2 加数
+     * @return 两个参数的和
+     */
+    public static double add(double v1,double v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.add(b2).doubleValue();
+    }
+    /**
+     * 提供精确的加法运算。
+     * @param v1 被加数
+     * @param v2 加数
+     * @return 两个参数的和
+     */
+    public static double add(float v1,double v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.add(b2).doubleValue();
+    }
+    /**
+     * 提供精确的加法运算。
+     * @param v1 被加数
+     * @param v2 加数
+     * @return 两个参数的和
+     */
+    public static double add(double v1,float v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.add(b2).doubleValue();
+    }
+    /**
+     * 提供精确的加法运算。
+     * @param v1 被加数
+     * @param v2 加数
+     * @return 两个参数的和
+     */
+    public static float addToFloat(double v1,float v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.add(b2).floatValue();
+    }
+    /**
+     * 提供精确的加法运算。
+     * @param v1 被加数
+     * @param v2 加数
+     * @return 两个参数的和
+     */
+    public static float addToFloat(float v1,float v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.add(b2).floatValue();
+    }
+    /**
+     * 提供精确的加法运算。
+     * @param v1 被加数
+     * @param v2 加数
+     * @return 两个参数的和
+     */
+    public static float addToFloat(float v1,double v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.add(b2).floatValue();
+    }
+    /**
+     * 提供精确的加法运算。
+     * @param v1 被加数
+     * @param v2 加数
+     * @return 两个参数的和
+     */
+    public static float addToFloat(double v1,double v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.add(b2).floatValue();
+    }
+    /**
+     * 提供精确的加法运算。
+     * @param v1 被加数
+     * @param v2 加数
+     * @return 两个参数的和
+     */
+    public static double add(float v1,float v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.add(b2).doubleValue();
+    }
+    /**
+     * 提供精确的减法运算。
+     * @param v1 被减数
+     * @param v2 减数
+     * @return 两个参数的差
+     */
+    public static double sub(double v1,double v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.subtract(b2).doubleValue();
+    }
+    /**
+     * 提供精确的减法运算。
+     * @param v1 被减数
+     * @param v2 减数
+     * @return 两个参数的差
+     */
+    public static double sub(float v1,double v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.subtract(b2).doubleValue();
+    }    /**
+     * 提供精确的减法运算。
+     * @param v1 被减数
+     * @param v2 减数
+     * @return 两个参数的差
+     */
+    public static double sub(double v1,float v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.subtract(b2).doubleValue();
+    }
+    /**
+     * 提供精确的减法运算。
+     * @param v1 被减数
+     * @param v2 减数
+     * @return 两个参数的差
+     */
+    public static double sub(float v1,float v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.subtract(b2).doubleValue();
+    }
+    /**
+     * 提供精确的减法运算。
+     * @param v1 被减数
+     * @param v2 减数
+     * @return 两个参数的差
+     */
+    public static float subToFloat(double v1,float v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.subtract(b2).floatValue();
+    }
+    /**
+     * 提供精确的减法运算。
+     * @param v1 被减数
+     * @param v2 减数
+     * @return 两个参数的差
+     */
+    public static float subToFloat(float v1,double v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.subtract(b2).floatValue();
+    }
+    /**
+     * 提供精确的减法运算。
+     * @param v1 被减数
+     * @param v2 减数
+     * @return 两个参数的差
+     */
+    public static float subToFloat(double v1,double v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.subtract(b2).floatValue();
+    }
+    /**
+     * 提供精确的减法运算。
+     * @param v1 被减数
+     * @param v2 减数
+     * @return 两个参数的差
+     */
+    public static float subToFloat(float v1,float v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.subtract(b2).floatValue();
+    }
+    /**
+     * 提供精确的乘法运算。
+     * @param v1 被乘数
+     * @param v2 乘数
+     * @return 两个参数的积
+     */
+    public static double mul(double v1,double v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.multiply(b2).doubleValue();
+    }
+    /**
+     * 提供精确的乘法运算。
+     * @param v1 被乘数
+     * @param v2 乘数
+     * @return 两个参数的积
+     */
+    public static double mul(float v1,double v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.multiply(b2).doubleValue();
+    }
+
+    /**
+     * 提供精确的乘法运算。
+     * @param v1 被乘数
+     * @param v2 乘数
+     * @return 两个参数的积
+     */
+    public static double mul(double v1,float v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.multiply(b2).doubleValue();
+    }
+    /**
+     * 提供精确的乘法运算。
+     * @param v1 被乘数
+     * @param v2 乘数
+     * @return 两个参数的积
+     */
+    public static double mul(float v1,float v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.multiply(b2).doubleValue();
+    }
+    /**
+     * 提供精确的乘法运算。
+     * @param v1 被乘数
+     * @param v2 乘数
+     * @return 两个参数的积
+     */
+    public static float mulToFloat(double v1,double v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.multiply(b2).floatValue();
+    }
+    /**
+     * 提供精确的乘法运算。
+     * @param v1 被乘数
+     * @param v2 乘数
+     * @return 两个参数的积
+     */
+    public static float mulToFloat(float v1,double v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.multiply(b2).floatValue();
+    }
+    /**
+     * 提供精确的乘法运算。
+     * @param v1 被乘数
+     * @param v2 乘数
+     * @return 两个参数的积
+     */
+    public static float mulToFloat(double v1,float v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.multiply(b2).floatValue();
+    }
+    /**
+     * 提供精确的乘法运算。
+     * @param v1 被乘数
+     * @param v2 乘数
+     * @return 两个参数的积
+     */
+    public static float mulToFloat(float v1,float v2){
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.multiply(b2).floatValue();
+    }
+    /**
+     * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
+     * 小数点以后10位,以后的数字四舍五入。
+     * @param v1 被除数
+     * @param v2 除数
+     * @return 两个参数的商
+     */
+    public static double div(double v1,double v2){
+        return div(v1,v2,DEF_DIV_SCALE);
+    }
+
+    /**
+     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
+     * 定精度,以后的数字四舍五入。
+     * @param v1 被除数
+     * @param v2 除数
+     * @param scale 表示表示需要精确到小数点以后几位。
+     * @return 两个参数的商
+     */
+    public static double div(double v1,double v2,int scale){
+        if(scale<0){
+            throw new IllegalArgumentException(
+                    "The scale must be a positive integer or zero");
+        }
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+    /**
+     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
+     * 定精度,以后的数字四舍五入。
+     * @param v1 被除数
+     * @param v2 除数
+     * @param scale 表示表示需要精确到小数点以后几位。
+     * @return 两个参数的商
+     */
+    public static double div(float v1,double v2,int scale){
+        if(scale<0){
+            throw new IllegalArgumentException(
+                    "The scale must be a positive integer or zero");
+        }
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+    /**
+     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
+     * 定精度,以后的数字四舍五入。
+     * @param v1 被除数
+     * @param v2 除数
+     * @param scale 表示表示需要精确到小数点以后几位。
+     * @return 两个参数的商
+     */
+    public static double div(double v1,float v2,int scale){
+        if(scale<0){
+            throw new IllegalArgumentException(
+                    "The scale must be a positive integer or zero");
+        }
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+    /**
+     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
+     * 定精度,以后的数字四舍五入。
+     * @param v1 被除数
+     * @param v2 除数
+     * @param scale 表示表示需要精确到小数点以后几位。
+     * @return 两个参数的商
+     */
+    public static double div(float v1,float v2,int scale){
+        if(scale<0){
+            throw new IllegalArgumentException(
+                    "The scale must be a positive integer or zero");
+        }
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+    /**
+     * 提供精确的小数位四舍五入处理。
+     * @param v 需要四舍五入的数字
+     * @param scale 小数点后保留几位
+     * @return 四舍五入后的结果
+     */
+    public static double round(double v,int scale){
+        if(scale<0){
+            throw new IllegalArgumentException(
+                    "The scale must be a positive integer or zero");
+        }
+        BigDecimal b = new BigDecimal(Double.toString(v));
+        BigDecimal one = new BigDecimal("1");
+        return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+    /**
+     * 提供精确的小数位四舍五入处理。
+     * @param v 需要四舍五入的数字
+     * @param scale 小数点后保留几位
+     * @return 四舍五入后的结果
+     */
+    public static double round(float v,int scale){
+        if(scale<0){
+            throw new IllegalArgumentException(
+                    "The scale must be a positive integer or zero");
+        }
+        BigDecimal b = new BigDecimal(Float.toString(v));
+        BigDecimal one = new BigDecimal("1");
+        return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+}

+ 2 - 2
winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/SalesClosingReportMapper.xml

@@ -19,7 +19,7 @@
         <if test="statusSet != null and statusSet.size > 0">
             or (
             <foreach collection="statusSet" item="statusId" separator="or" open="(" close=")">
-                t1.status_flag =
+                status_flag =
                 <if test="statusId != null">
                     #{statusId}
                 </if>
@@ -96,7 +96,7 @@
         <if test="statusSet != null and statusSet.size > 0">
             or (
             <foreach collection="statusSet" item="statusId" separator="or" open="(" close=")">
-                t1.status_flag =
+                status_flag =
                 <if test="statusId != null">
                     #{statusId}
                 </if>

+ 2 - 2
winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/SalesDeliveryReportMapper.xml

@@ -19,7 +19,7 @@
         <if test="statusSet != null and statusSet.size > 0">
             or (
             <foreach collection="statusSet" item="statusId" separator="or" open="(" close=")">
-                t1.status_flag =
+                status_flag =
                 <if test="statusId != null">
                     #{statusId}
                 </if>
@@ -100,7 +100,7 @@
         <if test="statusSet != null and statusSet.size > 0">
             or (
             <foreach collection="statusSet" item="statusId" separator="or" open="(" close=")">
-                t1.status_flag =
+                status_flag =
                 <if test="statusId != null">
                     #{statusId}
                 </if>