|
@@ -2,6 +2,7 @@ package com.iamberry.rst.service.order;
|
|
|
|
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.iamberry.app.tool.util.MD5;
|
|
import com.iamberry.app.tool.util.MD5;
|
|
|
|
+import com.iamberry.redis.RedisUtils;
|
|
import com.iamberry.rst.core.address.City;
|
|
import com.iamberry.rst.core.address.City;
|
|
import com.iamberry.rst.core.address.District;
|
|
import com.iamberry.rst.core.address.District;
|
|
import com.iamberry.rst.core.address.Province;
|
|
import com.iamberry.rst.core.address.Province;
|
|
@@ -638,7 +639,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
orderIdMap.put("condValue",orderIds);
|
|
orderIdMap.put("condValue",orderIds);
|
|
conditionTypeList.add(orderIdMap);
|
|
conditionTypeList.add(orderIdMap);
|
|
|
|
|
|
- StringBuffer stringBuffer = new StringBuffer();
|
|
|
|
|
|
+ StringBuilder stringBuffer = new StringBuilder();
|
|
Integer amountAllNum = 0; //同步总数量
|
|
Integer amountAllNum = 0; //同步总数量
|
|
Integer amountSuccessAllNum = 0; //同步成功总数量
|
|
Integer amountSuccessAllNum = 0; //同步成功总数量
|
|
String batchId = ""; //批次id
|
|
String batchId = ""; //批次id
|
|
@@ -1115,10 +1116,8 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
private Map<String,Object> saveOrder(Integer type,String json,String batchId){
|
|
private Map<String,Object> saveOrder(Integer type,String json,String batchId){
|
|
-
|
|
|
|
//获取省份
|
|
//获取省份
|
|
List<Province> provinceList = addressService.listProvince(new Province());
|
|
List<Province> provinceList = addressService.listProvince(new Province());
|
|
-
|
|
|
|
//返回保存订单结果
|
|
//返回保存订单结果
|
|
Map<String,Object> returnMap = new HashMap<>();
|
|
Map<String,Object> returnMap = new HashMap<>();
|
|
|
|
|
|
@@ -1443,7 +1442,18 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
salesOrder.setSalesPledgeMoney(0);//押金金额
|
|
salesOrder.setSalesPledgeMoney(0);//押金金额
|
|
salesOrder.setSalesRemainDeposit(0);
|
|
salesOrder.setSalesRemainDeposit(0);
|
|
salesOrder.setSalesWaitMoney(0);//待付金额
|
|
salesOrder.setSalesWaitMoney(0);//待付金额
|
|
- salesOrder.setSalesSendType(2);//送货方式 1:线下送货,2:物流发货
|
|
|
|
|
|
+ salesOrder.setSalesSendType(2);// 送货方式 1:线下送货,2:物流发货
|
|
|
|
+
|
|
|
|
+ // 新增处理:如果有订单满足规则,去除对应的订单项内容 {"productCode":"xx","group":[{"productCode":"xx", "productNum":1}]}
|
|
|
|
+ for (int j = 0; j < itemsArray.length(); j++) {
|
|
|
|
+ JSONObject o = itemsArray.getJSONObject(j);
|
|
|
|
+ String groupRule = RedisUtils.get("GROUP_PRODUCT_" + platformId + "_" + o.getString("outerId"));
|
|
|
|
+ if (groupRule != null) {
|
|
|
|
+ // 第一步:匹配订单中是否有包含的产品
|
|
|
|
+ itemsArray = groupProductFilter(itemsArray, groupRule);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
Integer salesWarrantyStatus = 0;
|
|
Integer salesWarrantyStatus = 0;
|
|
List<SalesOrderItem> salesOrderItemList = new ArrayList<SalesOrderItem>();
|
|
List<SalesOrderItem> salesOrderItemList = new ArrayList<SalesOrderItem>();
|
|
@@ -1785,6 +1795,68 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
return returnMap;
|
|
return returnMap;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private JSONArray groupProductFilter(JSONArray itemsArray, String groupRule) {
|
|
|
|
+ // 再次判断来源产品中是否包含了指定的组合产品
|
|
|
|
+ com.alibaba.fastjson.JSONObject groupJSON = com.alibaba.fastjson.JSONObject.parseObject(groupRule);
|
|
|
|
+ boolean isGroup = false;
|
|
|
|
+ for (int i = 0; i < itemsArray.length(); i++) {
|
|
|
|
+ JSONObject jsonObject = itemsArray.getJSONObject(i);
|
|
|
|
+ if (jsonObject.get("outerId").equals(groupJSON.getString("productCode"))) {
|
|
|
|
+ isGroup = true;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (!isGroup) {
|
|
|
|
+ return itemsArray;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 获取产品的对应规则,如果不符合规则,则不出发系统功能
|
|
|
|
+ com.alibaba.fastjson.JSONArray group = groupJSON.getJSONArray("group");
|
|
|
|
+ if (group == null || group.size() <= 0) {
|
|
|
|
+ return itemsArray;
|
|
|
|
+ }
|
|
|
|
+ // 匹配规则
|
|
|
|
+ int count = 0;
|
|
|
|
+ for (int gi = 0; gi < group.size(); gi++) {
|
|
|
|
+ com.alibaba.fastjson.JSONObject rule = group.getJSONObject(gi);
|
|
|
|
+ String productCode = rule.getString("productCode");
|
|
|
|
+ Integer productNum = rule.getInteger("productNum");
|
|
|
|
+ for (int i = 0; i < itemsArray.length(); i++) {
|
|
|
|
+ JSONObject org = itemsArray.getJSONObject(i);
|
|
|
|
+ if (productCode.equals(org.getString("outerId")) && org.getInt("num") >= productNum) {
|
|
|
|
+ count++;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 如果订单项全部匹配上,则表示匹配上规则
|
|
|
|
+ if (count != group.size()) {
|
|
|
|
+ return itemsArray;
|
|
|
|
+ }
|
|
|
|
+ JSONArray result = new JSONArray(itemsArray.toString());
|
|
|
|
+ for (int gi = 0; gi < group.size(); gi++) {
|
|
|
|
+ com.alibaba.fastjson.JSONObject rule = group.getJSONObject(gi);
|
|
|
|
+ String productCode = rule.getString("productCode");
|
|
|
|
+ Integer productNum = rule.getInteger("productNum");
|
|
|
|
+ for (int i = 0; i < result.length(); i++) {
|
|
|
|
+ JSONObject org = result.getJSONObject(i);
|
|
|
|
+ int num = org.getInt("num");
|
|
|
|
+ if (productCode.equals(org.getString("outerId")) && num >= productNum) {
|
|
|
|
+ // 减少产品或者删除订单项
|
|
|
|
+ if (num > productNum) {
|
|
|
|
+ JSONObject edit = result.getJSONObject(i);
|
|
|
|
+ edit.remove("num");
|
|
|
|
+ edit.put("num", num-productNum);
|
|
|
|
+ } else {
|
|
|
|
+ result.remove(i);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 拉取单个订单,但是调用请走验证发货验证或者保存接口,此方法不公开
|
|
* 拉取单个订单,但是调用请走验证发货验证或者保存接口,此方法不公开
|
|
* @param orderId
|
|
* @param orderId
|