|
@@ -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());
|