| 
					
				 | 
			
			
				@@ -2211,63 +2211,64 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map resultObj = Maps.newHashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 海控需求,下单流程修改,收银端接收会员码,付款码,用户信息,订单数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 1. 校验库存:保税仓库存 + 展销店库存 - 出区数 >= 购买数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /* -----------------↓--------------生产请打开注释-------------------↓------------ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /*WareQueryStockParamDTO wareQueryStockParamDTO = new WareQueryStockParamDTO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Criteria> criteriaList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        goodsList.forEach(goods -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Criteria criteria = new Criteria(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String sku = (String) goods.get("goodsSn"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            criteria.setItemCode(sku); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            GoodsEntity goodsEntity = goodsEntityMap.get(sku); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            criteria.setItemId(goodsEntity.getWarehousSysGoodId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            criteria.setWarehouseCode(goodsEntity.getWarehouseSn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            criteria.setOwnerCode(goodsEntity.getConsignorSn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            criteria.setInventoryType(Constants.InventoryType.ZP.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            criteriaList.add(criteria); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        wareQueryStockParamDTO.setCriteriaList(criteriaList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String queryWarehouseStockResponse = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            queryWarehouseStockResponse = haiKongWarehouseTemplate.queryWarehouseStock(wareQueryStockParamDTO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            LOGGER.error("下单调用海控仓库系统查询库存出现异常!", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new ServiceException(String.format("下单调用海控仓库系统查询库存出现异常!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (org.springframework.util.StringUtils.isEmpty(queryWarehouseStockResponse)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            LOGGER.error("调用库存系统接口出现错误!返回结果为空!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new ServiceException("调用库存系统接口出现错误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        WareQueryStockResponseDTO wareQueryStockResponseDTO = JacksonUtil.fromStringJson(queryWarehouseStockResponse, WareQueryStockResponseDTO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (Objects.isNull(wareQueryStockResponseDTO)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new ServiceException("解析一步达库存系统响应数据出现错误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<WareQueryStockResponseDTO.WareQueryStockResponseItemDTO> items = wareQueryStockResponseDTO.getItems(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 解析xml,组装成map key=>sku value=>库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String, Integer> stockMap = new HashMap<>(16); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        items.forEach(item -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String itemCode = item.getItemCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Integer quantity = item.getQuantity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (stockMap.containsKey(itemCode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 避免出现sku相同情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                stockMap.put(itemCode, stockMap.get(itemCode) + quantity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                stockMap.put(itemCode, quantity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Integer> stockMap = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String env = environment.getProperty("haikong.env"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (Constants.PROD.equals(env)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            WareQueryStockParamDTO wareQueryStockParamDTO = new WareQueryStockParamDTO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Criteria> criteriaList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            goodsList.forEach(goods -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Criteria criteria = new Criteria(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String sku = (String) goods.get("goodsSn"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                criteria.setItemCode(sku); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                GoodsEntity goodsEntity = goodsEntityMap.get(sku); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                criteria.setItemId(goodsEntity.getWarehousSysGoodId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                criteria.setWarehouseCode(goodsEntity.getWarehouseSn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                criteria.setOwnerCode(haiKongProperties.getWareCompanyCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                criteria.setInventoryType(Constants.InventoryType.ZP.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                criteriaList.add(criteria); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            wareQueryStockParamDTO.setCriteriaList(criteriaList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String queryWarehouseStockResponse = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                queryWarehouseStockResponse = haiKongWarehouseTemplate.queryWarehouseStock(wareQueryStockParamDTO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                LOGGER.error("下单调用海控仓库系统查询库存出现异常!", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new ServiceException(String.format("下单调用海控仓库系统查询库存出现异常!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        });*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /* -----------------↑--------------生产请打开注释------------------↑------------- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /* -----------------↓--------------测试数据,生产请注释-------------------↓------------ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String, Integer> stockMap = new HashMap<>(16); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        goodsList.forEach(goods -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String sku = (String) goods.get("goodsSn"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (stockMap.containsKey(sku)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 避免出现sku相同情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                stockMap.put(sku, stockMap.get(sku) + 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                stockMap.put(sku, 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (org.springframework.util.StringUtils.isEmpty(queryWarehouseStockResponse)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                LOGGER.error("调用库存系统接口出现错误!返回结果为空!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new ServiceException("调用库存系统接口出现错误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /* -----------------↑--------------测试数据,生产请注释------------------↑------------- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            WareQueryStockResponseDTO wareQueryStockResponseDTO = JacksonUtil.fromStringJson(queryWarehouseStockResponse, WareQueryStockResponseDTO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (Objects.isNull(wareQueryStockResponseDTO)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new ServiceException("解析一步达库存系统响应数据出现错误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<WareQueryStockResponseDTO.WareQueryStockResponseItemDTO> items = wareQueryStockResponseDTO.getItems(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 解析xml,组装成map key=>sku value=>库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            stockMap = new HashMap<>(16); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (WareQueryStockResponseDTO.WareQueryStockResponseItemDTO item : items) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String itemCode = item.getItemCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Integer quantity = item.getQuantity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (stockMap.containsKey(itemCode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 避免出现sku相同情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    stockMap.put(itemCode, stockMap.get(itemCode) + quantity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    stockMap.put(itemCode, quantity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            stockMap = new HashMap<>(16); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (LinkedHashMap goods : goodsList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String sku = (String) goods.get("goodsSn"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (stockMap.containsKey(sku)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 避免出现sku相同情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    stockMap.put(sku, stockMap.get(sku) + 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    stockMap.put(sku, 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (user == null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2515,8 +2516,6 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             StoreEntity store = storeService.queryObject(order.getStore_id().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             processRecordEntity.setPaymentStartTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String env = environment.getProperty("haikong.env"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 判断是微信的支付码还是支付宝的支付码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!org.springframework.util.StringUtils.isEmpty(env) && Constants.PROD.equals(env)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2812,13 +2811,11 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         HaiKongSendOrderInfoRecordEntity haiKongSendOrderInfoRecordEntity = wrapSendOrderInfoRecord(sendOrderToVmcShopDTO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<HaiKongSendOrderInfoDetailRecordEntity> detailRecordEntities = wrapSendOrderInfoDetailRecord(orderInfoItemDTOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 不要用自带的工具类,处理XML字符串时有bug 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cn.hutool.json.JSON json = JSONUtil.parse(sendOrderToVmcShopDTO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String body = JSONUtil.toJsonPrettyStr(json); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String orderSn = order.getOrder_sn(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String body = JacksonUtil.getObjectMapper().writeValueAsString(sendOrderToVmcShopDTO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LOGGER.info("请求免税mall创建订单接口!请求体:{}", body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             String response = vmcShopTemplate.sendOrder(body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Response<String> r = JacksonUtil.fromListJson(response, new TypeReference<Response<String>>() {}); 
			 |