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