Browse Source

上传订单保存公共方法修改

liujiankang 6 years ago
parent
commit
c11f52d61b

+ 1 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java

@@ -110,6 +110,7 @@ public class SalesOrder implements Serializable {
         this.isDeliverGoods = isDeliverGoods;
     }
 
+
     public String getItemProductName() {
         return itemProductName;
     }

+ 23 - 59
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -23,6 +23,7 @@ import com.iamberry.wechat.tools.DateTimeUtil;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONNull;
 import net.sf.json.JSONObject;
+import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -33,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.xml.crypto.Data;
 import java.beans.Transient;
+import java.lang.reflect.InvocationTargetException;
 import java.util.*;
 
 import static sun.misc.MessageUtils.where;
@@ -146,59 +148,6 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         return salesOrder;
     }
 
-    /*private List<SalesOrder> breakOrder(SalesOrder salesOrder) {
-        List<SalesOrder> listSalesOrder = new ArrayList<>();
-        List<SalesOrderItem> list = salesOrder.getSalesOrderItemList();
-        //查询所有拆单规则
-        List<DownsingleRuleInfo> listDownsingleRuleInfo = salesOrderService.listDownsingleRule();
-        if (listDownsingleRuleInfo.size() < 1) {
-            return listSalesOrder;
-        }
-        for (DownsingleRuleInfo downsingleRuleInfo : listDownsingleRuleInfo) {
-            SalesOrder order = null;
-            //保存原始订单集合,防止订单被篡改后无法还原
-            List<SalesOrderItem> originalList = list;
-            List<SalesOrderItem> itemList = new ArrayList<>();
-            for (DownsingleRuleItemInfo downsingleRuleItemInfo : downsingleRuleInfo.getDownsingleRuleItemList()) {
-
-                for (int i = 0; i < list.size(); i++) {
-                    if (list.get(i).getItemColorBar().equals(downsingleRuleItemInfo.getDownsingleItemBar())
-                            && downsingleRuleItemInfo.getDownsingleItemNum() <= list.get(i).getItemNum()) {
-                        if (downsingleRuleItemInfo.getDownsingleItemNum() < list.get(i).getItemNum()) {
-                            //如果规则数量小于订单项数量这需要将订单项拆分
-                            list.get(i).setItemNum(list.get(i).getItemNum() - downsingleRuleItemInfo.getDownsingleItemNum());
-                            SalesOrderItem orderItem = list.get(i);
-                            orderItem.setItemNum(downsingleRuleItemInfo.getDownsingleItemNum());
-                            itemList.add(list.get(i));
-                        } else {
-                            itemList.add(list.get(i));
-                            list.remove(i);
-                            break;
-                        }
-                    } else {
-                        itemList.clear();
-                        list = originalList;
-                        break;
-                    }
-                }
-
-            }
-            if (itemList.size() > 0) {
-                order = salesOrder;
-                order.setSalesOrderItemList(itemList);
-            }
-            if (order != null) {
-                listSalesOrder.add(order);
-            }
-        }
-        if (list.size() > 0) {
-            SalesOrder remainingOrder = new SalesOrder();
-            remainingOrder = salesOrder;
-            remainingOrder.setSalesOrderItemList(list);
-            listSalesOrder.add(remainingOrder);
-        }
-    }*/
-
     public void parseOrder(SalesOrder oginerOrder, List<SalesOrder> listOrder) {
         // 订单项拆分完成,直接返回
         if (oginerOrder.getSalesOrderItemList().size() <= 0) {
@@ -214,7 +163,9 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         // 拆单,比较的是数量和产品
         Map<String, SalesOrderItem> itemMap = new HashMap<>(oginerOrder.getSalesOrderItemList().size());
         for (SalesOrderItem item : oginerOrder.getSalesOrderItemList()) {
-            itemMap.put(item.getItemColorBar(), item);
+            SalesOrderItem itemTwo = new SalesOrderItem();
+            BeanUtils.copyProperties(item,itemTwo);
+            itemMap.put(item.getItemColorBar(), itemTwo);
         }
 
         // 遍历拆单规则
@@ -232,10 +183,11 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             if (count == rule.getDownsingleRuleItemList().size()) {
                 // 满足拆单条件
                 SalesOrder newOrder = new SalesOrder();
-                BeanUtils.copyProperties(oginerOrder, newOrder);
+                BeanUtils.copyProperties(oginerOrder,newOrder);
                 newOrder.setSalesOrderItemList(new ArrayList<SalesOrderItem>(count));
                 for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
-                    SalesOrderItem temp = itemMap.get(item.getDownsingleItemBar());
+                    SalesOrderItem temp = new SalesOrderItem();
+                    BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),temp);
                     temp.setItemNum(item.getDownsingleItemNum());
                     newOrder.getSalesOrderItemList().add(temp);
                 }
@@ -245,11 +197,23 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                 for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
                     if (item.getDownsingleItemNum() == itemMap.get(item.getDownsingleItemBar()).getItemNum()) {
                         // 数量和拆单规则相同,则删除原订单的订单项
-                        oginerOrder.getSalesOrderItemList().remove(itemMap.get(item.getDownsingleItemBar()));
+                        /*oginerOrder.getSalesOrderItemList().remove(itemMap.get(item.getDownsingleItemBar()));*/
+                        for(int i = 0;i<oginerOrder.getSalesOrderItemList().size();i++){
+                            if(oginerOrder.getSalesOrderItemList().get(i).getItemColorBar() .equals(item.getDownsingleItemBar())){
+                                oginerOrder.getSalesOrderItemList().remove(i);
+                            }
+                        }
                     } else {
-                        SalesOrderItem orderItem = itemMap.get(item.getDownsingleItemBar());
+//                        SalesOrderItem orderItem = itemMap.get(item.getDownsingleItemBar());
+                        SalesOrderItem orderItem = new SalesOrderItem();
+                        BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),orderItem);
                         int oldCount = orderItem.getItemNum();
-                        orderItem.setItemNum(oldCount - item.getDownsingleItemNum());
+                        /*orderItem.setItemNum(oldCount - item.getDownsingleItemNum());*/
+                        for(int i = 0;i<oginerOrder.getSalesOrderItemList().size();i++){
+                            if(oginerOrder.getSalesOrderItemList().get(i).getItemColorBar() .equals(item.getDownsingleItemBar())){
+                                oginerOrder.getSalesOrderItemList().get(i).setItemNum(oldCount - item.getDownsingleItemNum());
+                            }
+                        }
                     }
                 }
                 parseOrder(oginerOrder, listOrder);