ソースを参照

商品调价优化

李天标 5 年 前
コミット
3f5df11e27

+ 28 - 18
app-api/src/main/java/com/hboxs/control/api/equipment/IndexController.java

@@ -21,6 +21,7 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 
 @Controller("appEquipmentIndexController")
@@ -174,7 +175,8 @@ public class IndexController extends BaseController {
         Double f=0.00;
         int num=0;
         int n=0;
-        List<Double> price = new ArrayList<Double>();
+        HashSet<Double> price = new HashSet<Double>();
+        HashSet<Double> minprice = new HashSet<Double>();
         for (ProductVo product : productVos) {
             String clientId = product.getClientId();
             Equipment equipment = equipmentService.findByClientId(clientId);
@@ -223,49 +225,57 @@ public class IndexController extends BaseController {
             //价格和平台分销比例要大于0
             if(pricePro>0&&rmbPrice>0){
                 //重新设定价格后平台收入和平台最低收入比较
-                if(rmbPrice*pricePro<minProportion){
-                    num++;
+                Double latePrice = rmbPrice-(tran2(provincePrice)+tran2(cityPrice)+tran2(personPrice));
+                if(tran(latePrice)<minProportion){
+                    if(rmbPrice*pricePro>minProportion){
+                        n++;
+                        price.add(rmbPrice);
+                        continue;
+                    }else {
+                        num++;
+                        minprice.add(rmbPrice);
+                    }
                     //保留4位小数点
                     BigDecimal b = new BigDecimal(minProportion/pricePro);
                     Double d = b.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
                     Double testPrice =  d-(tran2(d*provinceProportion)+tran2(d*cityProportion)+tran2(d*personProportion));
                     if(tran(testPrice)<0.01){
-                        f=d;
+                        f=tran(d);
                     }else {
                         for(int i=0;i<=100;i++){
-                            d+=0.1;
+                            d+=0.01;
                             Double pricecd =  d-(tran(d*provinceProportion)+tran(d*cityProportion)+tran(d*personProportion));
                             if(tran(pricecd)>=0.01){
-                                f=d;
+                                f=tran(d);
                                 break;
                             }
                         }
                     }
                     continue;
                 }
-                Double testPrice = rmbPrice-(tran2(provincePrice)+tran2(cityPrice)+tran2(personPrice));
-                testPrice= new BigDecimal(testPrice).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-                //判断本次价格设定是否合理
-                if(testPrice<0.01){
-                    n++;
-                    if(rmbPrice!=null){
-                        price.add(rmbPrice);
-                    }
-                    continue;
-                }
+//                Double testPrice = rmbPrice-(tran2(provincePrice)+tran2(cityPrice)+tran2(personPrice));
+//                testPrice= new BigDecimal(testPrice).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
+//                //判断本次价格设定是否合理
+//                if(testPrice<0.01){
+//                    n++;
+//                    if(rmbPrice!=null){
+//                        price.add(rmbPrice);
+//                    }
+//                    continue;
+//                }
             }
             productService.updateByClientID(id, product.getRmbPrice(), product.getCodePrice(), product.getProductName(), product.getSellStatus());
         }
         if(num>0 || n>0){
             String errorData=null;
             if(num>0 && n==0){
-                errorData = "最低价格为"+f+"元,或者设为0元。有"+num+"处价低于"+f;
+                errorData = "建议测试价格为"+f+"元,或者设为0元。价格"+minprice.toString()+"设置不通过";
             }
             if(num==0 && n>0){
                 errorData = "价格"+price.toString()+"设置不通过,请尽量提高价格";
             }
             if(num>0&&n>0){
-                errorData ="最低价格为"+f+"元,或者设为0元。有"+num+"处价低于"+f+"。并有价格"+price.toString()+"设置不通过,请尽量提高价格";
+                errorData ="建议测试价格为"+f+"元,或者设为0元。价格"+minprice.toString()+"设置不通过。并有价格"+price.toString()+"设置不通过,请尽量提高价格";
             }
 
             return JsonMessage.error(errorData);

+ 29 - 23
app-backend-web/src/main/java/com/hboxs/control/admin/ProductController.java

@@ -24,10 +24,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Controller - 第三方设备管理
@@ -54,7 +51,8 @@ public class ProductController extends BaseController {
             Double f=0.00;
             int num=0;
             int n=0;
-            List<Double> price = new ArrayList<Double>();
+            HashSet<Double> price = new HashSet<Double>();
+            HashSet<Double> minprice = new HashSet<Double>();
             List<ProductVo> list = new ArrayList<>();
             for (Map<String,String> map:products) {
                 Product product = new Product();
@@ -107,38 +105,46 @@ public class ProductController extends BaseController {
                 //价格和平台分销比例要大于0
                 if(pricePro>0&&rmbPrice>0){
                     //重新设定价格后平台收入和平台最低收入比较
-                    if(rmbPrice*pricePro<minProportion){
-                        num++;
+                    Double latePrice = rmbPrice-(tran2(provincePrice)+tran2(cityPrice)+tran2(personPrice));
+                    if(tran(latePrice)<minProportion){
+                        if(rmbPrice*pricePro>minProportion){
+                            n++;
+                            price.add(rmbPrice);
+                            continue;
+                        }else{
+                            num++;
+                            minprice.add(rmbPrice);
+                        }
                         //保留4位小数点
                         BigDecimal b = new BigDecimal(minProportion/pricePro);
                         Double d = b.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
                         //最低价格f
                         Double testPrice = d-(tran2(d*provinceProportion)+tran2(d*cityProportion)+tran2(d*personProportion));
                         if(tran(testPrice)>=0.01){
-                            f=d;
+                            f=tran(d);
                         }else {
                             for(int i=0;i<=100;i++){
-                                d+=0.1;
+                                d+=0.01;
                                 Double pricecd = d-(tran2(d*provinceProportion)+tran2(d*cityProportion)+tran2(d*personProportion));
                                 if(tran(pricecd)>=0.01){
-                                    f=d;
+                                    f=tran(d);
                                     break;
                                 }
                             }
                         }
                         continue;
                     }
-                    Double testPrice = rmbPrice-(tran2(provincePrice)+tran2(cityPrice)+tran2(personPrice));
-                    testPrice= new BigDecimal(testPrice).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-                    //判断本次价格设定是否合理
-                    if(testPrice<0.01){
-                        n++;
-                        if(rmbPrice!=null){
-                            price.add(rmbPrice);
-                        }
-
-                        continue;
-                    }
+//                    Double testPrice = rmbPrice-(tran2(provincePrice)+tran2(cityPrice)+tran2(personPrice));
+//                    testPrice= new BigDecimal(testPrice).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
+//                    //判断本次价格设定是否合理
+//                    if(testPrice<0.01){
+//                        n++;
+//                        if(rmbPrice!=null){
+//                            price.add(rmbPrice);
+//                        }
+//
+//                        continue;
+//                    }
                 }
                 productService.update(product1, "equipmentId", "productName", "sellStatus");
                 productVo.setId(map.get("id"));
@@ -152,13 +158,13 @@ public class ProductController extends BaseController {
             if(num>0 || n>0){
                 String errorData=null;
                 if(num>0 && n==0){
-                    errorData = "最低价格为"+f+"元,或者设为0元。有"+num+"处价低于"+f;
+                    errorData = "建议测试价格为"+f+"元,或者设为0元。价格"+minprice.toString()+"设置不通过";
                 }
                 if(num==0 && n>0){
                     errorData = "价格"+price.toString()+"设置不通过,请尽量提高价格";
                 }
                 if(num>0&&n>0){
-                    errorData ="最低价格为"+f+"元,或者设为0元。有"+num+"处价低于"+f+"。并有价格"+price.toString()+"设置不通过,请尽量提高价格";
+                    errorData ="建议测试价格为"+f+"元,或者设为0元。价格"+minprice.toString()+"设置不通过。并有价格"+price.toString()+"设置不通过,请尽量提高价格";
                 }
                 ERROR_MESSAGE.setContent(errorData);
                 addFlashMessage(redirectAttributes, ERROR_MESSAGE);