Browse Source

1:RST手机端进入系统,到电脑页面
2:优化导单速度问题
3:优化导单地址选择问题
4:优化订单跟踪

wangxiaoming 5 years ago
parent
commit
843c381e92

+ 18 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -165,6 +165,13 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                 returnInventory(salesOrder.getSalesId(),so.getSalesWarehouseId());
             }
         }
+
+        //添加操作跟踪记录
+//        OrderTracking orderTracking = new OrderTracking();
+//        orderTracking.setAdminId(mainOrder.getSalesAdminId());
+//        orderTracking.setSalesId(mainOrder.getSalesId());
+//        orderTracking.setTrackingDesc("确认订单(拆分订单)");
+//        salesOrderService.addTracking(orderTracking);
         return 1;
     }
 
@@ -423,6 +430,8 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         if (itemNum <= 0) {
             return salesOrder;
         }
+
+        this.cacheOrderItem(salesOrder.getSalesId());
         return salesOrder;
     }
 
@@ -629,7 +638,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     @Override
     @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
     public boolean addRstOrderinfo(SalesOrder mainOrder,List<SalesOrder> listSalesOrder,String[] detectIds) {
-        // 查询交易号的数量(注意,此处可能重复,应该增加唯一索引)
+        // 查询交易号的数量
         Integer flag = salesOrderMapper.getOrderBySalesDealCodeNum(mainOrder.getSalesDealCode());
         if(flag > 0){
             throw new RuntimeException("交易号("+ mainOrder.getSalesDealCode() +")重复,请重新生成交易号!");
@@ -702,6 +711,13 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         }
         // 缓存订单项
         cacheOrderItem(mainOrder.getSalesId());
+
+        //添加操作跟踪记录
+        OrderTracking orderTracking = new OrderTracking();
+        orderTracking.setAdminId(mainOrder.getSalesAdminId());
+        orderTracking.setSalesId(mainOrder.getSalesId());
+        orderTracking.setTrackingDesc("创建订单");
+        salesOrderService.addTracking(orderTracking);
         return true;
     }
 
@@ -1823,6 +1839,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                 if(flag < 1){
                     throw new RuntimeException("添加订单项失败,订单交易号:"+salesOrder.getSalesDealCode());
                 }
+                this.cacheOrderItem(salesOrder.getSalesId());
             }
         }
 

+ 113 - 23
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderController.java

@@ -3,7 +3,9 @@ package com.iamberry.rst.controllers.order;
 import com.alibaba.fastjson.JSONArray;
 import com.iamberry.redis.RedisUtils;
 import com.iamberry.rst.controllers.sys.SysController;
+import com.iamberry.rst.core.address.City;
 import com.iamberry.rst.core.address.District;
+import com.iamberry.rst.core.address.Province;
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
 import com.iamberry.rst.core.cm.StoreInfo;
@@ -1056,6 +1058,10 @@ public class AdminOrderController {
             batchId = orderBatch;
         }
         StringBuilder sb = new StringBuilder();
+
+        //因为 在一次导单中 下面循环里面会多次使用相同的条件查询产品供应价格list(smallDpList),所以使用list将他临时存储起来,
+        List<Map<String,Object>> list = new ArrayList<>();
+
         for(SalesOrder salesOrders: mapsalesOrderList.values()){
             String salesDealCode = salesOrders.getSalesDealCode();
             salesOrders.setSalesBatchId(batchId);
@@ -1078,10 +1084,27 @@ public class AdminOrderController {
                     throw new Exception("订单导入失败-查询店铺对应客户信息失败,店铺ID:"+salesOrders.getSalesStoreId()+"。");
                 }
 
-                DealerProduct smallDp = new DealerProduct();
-                smallDp.setDealerId(dealerChannel.getDealerId());
-                smallDp.setDealChannelId(dealerChannel.getDealChannelId());
-                List<DealerProduct> smallDpList = dealerProductService.getProductByChannelList(smallDp);
+                List<DealerProduct> smallDpList = null;
+                if(list.size() > 0){
+                    for (Map<String,Object> smap:list) {
+                        if(Objects.equals(dealerChannel.getDealerId(),smap.get("dealerId"))
+                                && Objects.equals(dealerChannel.getDealChannelId(),smap.get("dealChannelId"))){
+                            smallDpList = (List<DealerProduct>) smap.get("dpList");
+                        }
+                    }
+                }
+                if(smallDpList == null){
+                    DealerProduct smallDp = new DealerProduct();
+                    smallDp.setDealerId(dealerChannel.getDealerId());
+                    smallDp.setDealChannelId(dealerChannel.getDealChannelId());
+                    smallDpList = dealerProductService.getProductByChannelList(smallDp);
+
+                    Map<String,Object> smap = new HashMap<>();
+                    smap.put("dealerId",dealerChannel.getDealerId());
+                    smap.put("dealChannelId",dealerChannel.getDealChannelId());
+                    smap.put("dpList",smallDpList);
+                    list.add(smap);
+                }
 
                 //取出订单项价格不为零的订单项 -- 自营需要
                 List<SalesOrderItem> salesOrderItemList = new ArrayList<>();
@@ -1330,32 +1353,99 @@ public class AdminOrderController {
                 }
                 salesOrder.setSalesAddressInfo(efastOrder.getOrderProvince()+" "+efastOrder.getOrderCity()+" "+efastOrder.getOrderArea()+" "+myaddress);
                 try{
-                    String newArea  = efastOrder.getOrderArea();
-                    newArea = newArea.replaceAll("高新技术产业开发区|高新技术开发区|技术开发区|经济开发区|自治区|地区|自治县","");
-
-                    //去掉全角和半角空格
-                    byte bytes[] = {(byte) 0xC2,(byte) 0xA0};
-                    String UTFSpace = new String(bytes,"utf-8");
-                    newArea = newArea.replaceAll(UTFSpace, "");
-
-                    String lastNewArea  = newArea.substring(newArea.length()-1,newArea.length());
-                    lastNewArea = lastNewArea.replaceAll("县|区|镇|乡|市|州|洲","");
-
-                    newArea = newArea.substring(0,newArea.length()-1);
+                    String orderProvince  = efastOrder.getOrderProvince();
+                    orderProvince = orderProvince.replaceAll("省|自治区|壮族自治区|特别行政区","");
+                    Province province = new Province();
+                    province.setProvince(orderProvince);
+                    List<Province> provinceList = addressService.listProvince(province);
+                    if(provinceList != null && provinceList.size() >0 ){
+                        String orderCity  = efastOrder.getOrderCity();
+                        orderCity = orderCity.replaceAll("市|州|地区|自治区|特别行政区","");
+
+                        int cityNum = 0;
+                        Integer cityId = null;
+
+                        province = provinceList.get(0);
+                        City city = new City();
+                        city.setProvinceId(province.getProvinceId());
+                        List<City> cityList = addressService.listCity(city);
+                        for (City ci:cityList) {
+                            int ciNum = 0;
+                            String newCi = ci.getCity().replaceAll("市|州|地区|自治区|特别行政区","");
+                            if(orderCity.indexOf(newCi)>-1){
+                                ciNum ++;
+                            }
+                            if(newCi.indexOf(orderCity)>-1){
+                                ciNum ++;
+                            }
+                            if(cityNum < ciNum){
+                                cityNum = ciNum;
+                                cityId = ci.getCityId();
+                            }
+                        }
+                        if(cityId == null){
+                            throw new Exception("未查询到该县区");
+                        }
 
-                    newArea += lastNewArea;
+                        String newArea  = efastOrder.getOrderArea();
+                        //去掉全角和半角空格
+                        byte bytes[] = {(byte) 0xC2,(byte) 0xA0};
+                        String UTFSpace = new String(bytes,"utf-8");
+                        newArea = newArea.replaceAll(UTFSpace, "");
+
+                        String lastNewArea  = newArea.substring(newArea.length()-1,newArea.length());
+                        lastNewArea = lastNewArea.replaceAll("县|区|镇|乡|市|州|洲","");
+                        newArea = newArea.substring(0,newArea.length()-1);
+                        newArea += lastNewArea;
+
+                        int districtNum = 0;
+                        String postcode = null;
+
+                        District district = new District();
+                        district.setCityId(cityId);
+                        List<District> districtList = addressService.listDistrict(district);
+                        for (District dis:districtList) {
+                            int disNum = 0;
+
+                            String newDIs = dis.getDistrict();
+                            String newLastNewArea  = newDIs.substring(newDIs.length()-1,newDIs.length());
+                            newLastNewArea = newLastNewArea.replaceAll("县|区|镇|乡|市|州|洲","");
+                            newDIs = newDIs.substring(0,newDIs.length()-1);
+                            newDIs += newLastNewArea;
+
+                            if(newDIs.indexOf(newArea) > -1){
+                                disNum++;
+                            }
+                            if(newArea.indexOf(newDIs) > -1){
+                                disNum++;
+                            }
+                            if(districtNum < disNum){
+                                districtNum = disNum;
+                                postcode = dis.getPostcode();
+                            }
+                        }
 
-                    District district = new District();
-                    district.setDistrict(newArea);
-                    List<District> districtList = addressService.listDistrict(district);
-                    if(districtList!=null && districtList.size() > 0){
-                        salesOrder.setSalesAddressPostcode(districtList.get(0).getPostcode());
+                        if(postcode != null){
+                            salesOrder.setSalesAddressPostcode(postcode);
+                        }else{
+                            throw new Exception("未查询到该县区");
+                        }
+                    }else{
+                        throw new Exception("未查询到该省份");
                     }
                 }catch (Exception e){
                     e.printStackTrace();
                 }
 
-                salesOrder.setSalesAddressTel(efastOrder.getOrderAddressTel());
+                String tel = efastOrder.getOrderAddressTel();
+                tel = tel.replaceAll("'","");
+
+                //去掉全角和半角空格
+                byte bytes[] = {(byte) 0xC2,(byte) 0xA0};
+                String UTFSpace = new String(bytes,"utf-8");
+                tel = tel.replaceAll(UTFSpace, "");
+
+                salesOrder.setSalesAddressTel(tel);
                 salesOrder.setSalesAddressName(efastOrder.getOrderAddressName());
                 salesOrder.setSalesPayType(1);
                 salesOrder.setSalesWaitMoney(efastOrder.getOrderAmount() - efastOrder.getOrderPayMoney());

+ 11 - 8
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java

@@ -25,10 +25,12 @@ import com.iamberry.rst.faces.order.OrderBatchService;
 import com.iamberry.rst.faces.order.OrderWarehouseService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.faces.sms.SmsService;
-import com.iamberry.rst.utils.*;
+import com.iamberry.rst.utils.AdminUtils;
+import com.iamberry.rst.utils.ExcelUtil;
+import com.iamberry.rst.utils.GenerateKeyUtil;
+import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.DateTimeUtil;
 import com.iamberry.wechat.tools.ResponseJson;
-import com.iamberry.wechat.tools.UUIDGenerator;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
@@ -1253,6 +1255,13 @@ public class AdminSalesOrderController {
                         salesOrder.setSalesId(salesIds);
                         salesOrder.setSalesStatus(1);
                         flag = salesOrderService.updateSalesOrder(salesOrder);
+
+                        //添加操作跟踪记录
+                        OrderTracking orderTracking = new OrderTracking();
+                        orderTracking.setAdminId(AdminUtils.getLoginAdminId());
+                        orderTracking.setSalesId(salesIds);
+                        orderTracking.setTrackingDesc("确认订单(未拆分订单)");
+                        salesOrderService.addTracking(orderTracking);
                     } catch (Exception e) {
                         msg = e.getMessage();
                         e.printStackTrace();
@@ -1261,12 +1270,6 @@ public class AdminSalesOrderController {
                 if (flag < 1) {
                     errorId += salesIds + ":" + msg + ";";
                 }
-                //添加操作跟踪记录
-                OrderTracking orderTracking = new OrderTracking();
-                orderTracking.setAdminId(AdminUtils.getLoginAdminId());
-                orderTracking.setSalesId(salesIds);
-                orderTracking.setTrackingDesc("确认订单");
-                salesOrderService.addTracking(orderTracking);
             }
             if (errorId.length() > 0) {
                 rj.addResponseKeyValue("errorId", errorId);

+ 2 - 2
watero-rst-web/src/main/java/com/iamberry/rst/controllers/sys/SysController.java

@@ -72,14 +72,14 @@ public class SysController {
         Depart depart = departService.getDepartById(admin.getAdminDept());
         // 判断来源
         String userAgent = request.getHeader("User-Agent").toLowerCase();
-        if (userAgent.contains("ipad") || userAgent.contains("iphone os") || userAgent.contains("android")) {
+      /*  if (userAgent.contains("ipad") || userAgent.contains("iphone os") || userAgent.contains("android")) {
             // 来自手机端
             logger.info("用户{}来源于手机端", currentUser.getPrincipal());
             // 传递部门信息
             return new ModelAndView("wap/wap_index")
                     .addObject("dept_name", depart.getDepartName())
                     .addObject("dept_role", admin.getAdminManager() == 2);
-        }
+        }*/
         logger.info("用户{}来源于PC端", currentUser.getPrincipal());
 
         // 注入数据:管理员名称、管理员部门