api导入改善

This commit is contained in:
lym
2025-01-02 15:02:49 +08:00
parent 066fed2423
commit 87bd765361
9 changed files with 1055 additions and 875 deletions
@@ -47,6 +47,7 @@ public class ErrorCodeConstants {
public static final ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_002_029_004, "当前柜体不存在"); public static final ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_002_029_004, "当前柜体不存在");
public static final ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_029_005, "生产单中未用到此板材"); public static final ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_029_005, "生产单中未用到此板材");
public static final ErrorCode APP_TOKEN_ERROR = new ErrorCode(1_002_029_007, "token获取失败"); public static final ErrorCode APP_TOKEN_ERROR = new ErrorCode(1_002_029_007, "token获取失败");
public static final ErrorCode ORDER_NOT_FOUND = new ErrorCode(1_002_029_006, "生产单不存在");
public static final ErrorCode PLATE_PLAN_DATA_ERROR = new ErrorCode(1_002_029_008, "板材生产数据获取错误或此单不存在"); public static final ErrorCode PLATE_PLAN_DATA_ERROR = new ErrorCode(1_002_029_008, "板材生产数据获取错误或此单不存在");
public static final ErrorCode PLATE_PLAN_DATA_NULL = new ErrorCode(1_002_029_008, "板材生产源数据为空"); public static final ErrorCode PLATE_PLAN_DATA_NULL = new ErrorCode(1_002_029_008, "板材生产源数据为空");
public static final ErrorCode PARTS_DATA_ERROR = new ErrorCode(1_002_029_009, "配件数据获取错误"); public static final ErrorCode PARTS_DATA_ERROR = new ErrorCode(1_002_029_009, "配件数据获取错误");
@@ -56,10 +57,13 @@ public class ErrorCodeConstants {
public static final ErrorCode ORDER_STATUS_CONFLICT = new ErrorCode(1_002_029_006, "生产单状态冲突,禁止投入生产"); public static final ErrorCode ORDER_STATUS_CONFLICT = new ErrorCode(1_002_029_006, "生产单状态冲突,禁止投入生产");
public static final ErrorCode ORDER_READ_ERR = new ErrorCode(1_002_029_006, "订单列表获取失败,请刷新重试"); public static final ErrorCode ORDER_READ_ERR = new ErrorCode(1_002_029_006, "订单列表获取失败,请刷新重试");
public static final ErrorCode ORDER_DATE_ERR = new ErrorCode(1_002_029_006, "获取订单列表,时间超出范围,请在30天范围内选择"); public static final ErrorCode ORDER_DATE_ERR = new ErrorCode(1_002_029_006, "获取订单列表,时间超出范围,请在30天范围内选择");
public static final ErrorCode ORDER_DETAIL_DATE_ERR = new ErrorCode(1_002_029_006, "板件造型数据对应有无,请重新上传");
public static final ErrorCode SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_002_029_013, "源数据查询失败"); public static final ErrorCode SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_002_029_013, "源数据查询失败");
public static final ErrorCode ORDER_DELETED_ERR = new ErrorCode(1_002_029_006, "生产单删除失败"); public static final ErrorCode ORDER_DELETED_ERR = new ErrorCode(1_002_029_006, "生产单删除失败");
public static final ErrorCode ORDER_RESTORE_ERR = new ErrorCode(1_002_029_006, "生产单还原失败"); public static final ErrorCode ORDER_RESTORE_ERR = new ErrorCode(1_002_029_006, "生产单还原失败");
public static final ErrorCode DATA_ERR = new ErrorCode(1_002_030_000, "当前正在导入,请稍后");
public static final ErrorCode LOCK_ERR = new ErrorCode(1_002_030_001, "当前存在导入情况,请稍后");
// ========== 自定义板编号生成 ========== // ========== 自定义板编号生成 ==========
public static final ErrorCode CUSTOM_PLATENO_GENERATE_ORDERNO_RULE_NOT_SUPPORT_RESETMODE = new ErrorCode(1_002_030_001, "自定义版编号生产单序号规则中存在不支持的复位类型:{}"); public static final ErrorCode CUSTOM_PLATENO_GENERATE_ORDERNO_RULE_NOT_SUPPORT_RESETMODE = new ErrorCode(1_002_030_001, "自定义版编号生产单序号规则中存在不支持的复位类型:{}");
@@ -217,48 +217,20 @@ public class OrderController {
try { try {
orderId = (Long) identifierGenerator.nextId(null); orderId = (Long) identifierGenerator.nextId(null);
Long organId = getUserOrganId(); Long organId = getUserOrganId();
JSONObject oauth = apiDataAchieve.getApiToken(organId).get();
String token = oauth.getJSONObject("info").getString("access_token"); Long id = orderService.importApiData(apiTypeRealize.apiDataChange(orderNo, orderId, organId));
String shopId = oauth.getJSONObject("info").getString("shop_id");
JSONObject order = apiDataAchieve.getApiOrder(token, shopId, orderNo).get();
if (!order.getString("err_code").equals("0")) {
throw exception(PLATE_PLAN_DATA_ERROR);
}
if (order.getJSONArray("data") == null) {
throw exception(PLATE_PLAN_DATA_NULL);
}
JSONObject dataPlates = apiDataAchieve.getApiPlateProData(token, orderNo).get();
JSONObject dataParts = apiDataAchieve.getApiPartsMessage(token, orderNo).get();
JSONObject dataBody = apiDataAchieve.getApiBodyMessage(token, orderNo).get();
JSONObject dataGoods = apiDataAchieve.getApiGoodsMessage(token, orderNo).get();
JSONObject plate = apiDataAchieve.getApiPlateDetailMessage(token, orderNo).get();
JSONObject dataModule = apiDataAchieve.getApiGroupMessage(token, orderNo).get();
JSONObject block = apiDataAchieve.getApiBlocksMessage(token, orderNo).get();
Map<String, Object> listMap = apiTypeRealize.apiPlateDataChange(
token,
order,
dataPlates,//板件生产信息
dataParts,// 配件信息
dataBody, // 柜体信息
dataGoods, // 商品信息
plate, // 板件明细
dataModule,// 加工组信息
block,// 板材数据
orderNo,// 原始生产单号
orderId,// 生成生产单号
organId);
Long id = orderService.importApiData(listMap);
return success(String.valueOf(id)); return success(String.valueOf(id));
} catch (Exception e) { } catch (Exception e) {
log.error(errKey, e);
return success(e.getMessage());
} finally {
// 进行判断,为空,写入时出现了错误,数据库数据回滚,此时删除 ES 里的数据 // 进行判断,为空,写入时出现了错误,数据库数据回滚,此时删除 ES 里的数据
OrderDO orderDO = orderMapper.selectById(orderId); OrderDO orderDO = orderMapper.selectById(orderId);
if (orderDO == null) { if (orderDO == null) {
orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL); orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL);
orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL_COMPRESS); orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL_COMPRESS);
} }
log.error(errKey, e);
return success(e.getMessage());
} finally {
redisLockUtil.unlock(lockKey); redisLockUtil.unlock(lockKey);
} }
@@ -8,6 +8,7 @@ import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRe
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataTypeVo;
import org.springframework.boot.system.ApplicationHome; import org.springframework.boot.system.ApplicationHome;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -102,10 +103,10 @@ public interface OrderService {
void updateRestoreBody(Long orderId , Set<Long> roomId, Long bodyId, Integer status); void updateRestoreBody(Long orderId , Set<Long> roomId, Long bodyId, Integer status);
/** /**
* @param listMap:生产单号 * @param apiDataTypeVo:生产单号
* @return Boolean * @return Boolean
*/ */
Long importApiData(Map<String, Object> listMap); Long importApiData(ApiDataTypeVo apiDataTypeVo);
/** /**
* 文件数据导入 * 文件数据导入
@@ -59,6 +59,7 @@ import com.cf.imes.module.executor.service.plan.PlanService;
import com.cf.imes.module.executor.util.deviseData.structure.FieldConstants; import com.cf.imes.module.executor.util.deviseData.structure.FieldConstants;
import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail; import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail;
import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd; import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataTypeVo;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -398,8 +399,8 @@ public class OrderServiceImpl implements OrderService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long importApiData(Map<String, Object> listMap) { public Long importApiData(ApiDataTypeVo apiDataTypeVo) {
OrderDO order = (OrderDO) listMap.get(FieldConstants.ORDER); OrderDO order = apiDataTypeVo.getOrderDO();
if (order != null) { if (order != null) {
//判断是否已经导入 //判断是否已经导入
// if (!validateOrderNoExists(order.getApiOrderId(), OrganContextHolder.getOrganId())) { // if (!validateOrderNoExists(order.getApiOrderId(), OrganContextHolder.getOrganId())) {
@@ -415,15 +416,15 @@ public class OrderServiceImpl implements OrderService {
order.setSplitter(nickName); order.setSplitter(nickName);
} }
} }
List<GoodsDO> goodsDO = (List<GoodsDO>) listMap.get(FieldConstants.GOODS); List<GoodsDO> goodsDO = new ArrayList<>(apiDataTypeVo.getMapGoodsDO().values());
List<RawGoodsDO> rawGoodsDO = (List<RawGoodsDO>) listMap.get(FieldConstants.RAW_GOODS); List<RawGoodsDO> rawGoodsDO = new ArrayList<>(apiDataTypeVo.getMapRawGoodsDO().values());
List<OrderBodyDO> bodyDO = (List<OrderBodyDO>) listMap.get(FieldConstants.BODY); List<OrderBodyDO> bodyDO = new ArrayList<>(apiDataTypeVo.getMapOrderBodyDO().values());
List<OrderGroupDO> groupDO = (List<OrderGroupDO>) listMap.get(FieldConstants.GROUP); List<OrderGroupDO> groupDO = new ArrayList<>(apiDataTypeVo.getMapOrderGroupDO().values());
List<OrderPartsDO> partsDO = (List<OrderPartsDO>) listMap.get(FieldConstants.PARTS); List<OrderPartsDO> partsDO = new ArrayList<>(apiDataTypeVo.getMapPartsInfos().values());
List<PlateDO> plateDO = (List<PlateDO>) listMap.get(FieldConstants.PLATE); List<PlateDO> plateDO = new ArrayList<>(apiDataTypeVo.getMapPlatesInfos().values());
List<PlateDetail> plateDetail = (List<PlateDetail>) listMap.get(FieldConstants.PLATE_DETAIL); List<PlateDetail> plateDetail = new ArrayList<>(apiDataTypeVo.getMapPlateDetails().values());
List<OrderItemDO> itemDO = (List<OrderItemDO>) listMap.get(FieldConstants.ITEM); List<OrderItemDO> itemDO = apiDataTypeVo.getMapItem();
List<OrderPartsRemark> partsRemark = (List<OrderPartsRemark>) listMap.get(FieldConstants.PARTS_REMARK); List<OrderPartsRemark> partsRemark = new ArrayList<>(apiDataTypeVo.getMapPartRemarks().values());
Map<String, List<?>> map = getPlateGoods(goodsDO);// 检验商品板材信息是否存在 Map<String, List<?>> map = getPlateGoods(goodsDO);// 检验商品板材信息是否存在
goodsDO = (List<GoodsDO>) map.get(FieldConstants.GOODS); goodsDO = (List<GoodsDO>) map.get(FieldConstants.GOODS);
@@ -448,7 +449,7 @@ public class OrderServiceImpl implements OrderService {
// 保存压缩的数据 // 保存压缩的数据
orderInputProcessor.batchSaveCompressModel(Collections.singletonList(orderModelCompressDO)); orderInputProcessor.batchSaveCompressModel(Collections.singletonList(orderModelCompressDO));
} }
if (partsRemark != null && !partsRemark.isEmpty()) { if (!partsRemark.isEmpty()) {
orderInputProcessor.batchSaveOrderPartsModel(partsRemark); orderInputProcessor.batchSaveOrderPartsModel(partsRemark);
} }
@@ -26,9 +26,9 @@ public class PlateDetail{
private String name; private String name;
// 板id // 板id
private Long plateId; private Long plateId;
// 板编号 // 设计板编号
private String plateNo; private String plateNo;
// 自定义板 // 设计板编
private String customPlateNo; private String customPlateNo;
private Integer texture; //纹路 纹路(0正纹1可翻转2反纹) private Integer texture; //纹路 纹路(0正纹1可翻转2反纹)
@@ -2,7 +2,6 @@ package com.cf.imes.module.executor.util.fileConversion.admin.api.webcad;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cf.imes.module.system.api.application.ApplicationApi; import com.cf.imes.module.system.api.application.ApplicationApi;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
@@ -10,15 +9,19 @@ import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.List; import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.function.BiFunction;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_NOT_FOUND;
/** /**
@@ -39,9 +42,9 @@ public class ApiDataAchieve {
// 重复使用的常量 // 重复使用的常量
private static final String ORDER_NO_KEY = "order_no"; private static final String ORDER_NO_KEY = "order_no";
private static final String CURR_PAGE_KEY = "curr_page"; private static final String CURR_PAGE_KEY = "curr_page";
private static final String PAGE_COUNT_KEY = "page_count"; private static final String PAGE_COUNT_KEY = "page_count"; //请求
private static final String ERR_CODE_KEY = "err_code"; private static final String ERR_CODE_KEY = "err_code";
private static final String PAGECOUNT_KEY = "PageCount"; private static final String ALL_PAGE_COUNT_KEY = "PageCount"; // 页数
private static final String VALUE_KEY = "value"; private static final String VALUE_KEY = "value";
private static final String GOODS_ID = "goods_id"; private static final String GOODS_ID = "goods_id";
@@ -56,45 +59,35 @@ public class ApiDataAchieve {
if (!json.getString("err_msg").equals("success")) { if (!json.getString("err_msg").equals("success")) {
throw exception(APP_TOKEN_ERROR); throw exception(APP_TOKEN_ERROR);
} }
// String token = json.getJSONObject("info").getString("access_token");
return new AsyncResult<>(json); return new AsyncResult<>(json);
} }
// 获取板件生产数据信息 // 获取板件生产数据信息
@Async public JSONObject getApiPlateProData(String token, String orderNo) {
public Future<JSONObject> getApiPlateProData(String token, String orderNo) {
JSONObject jsonPlatesData = new JSONObject(); JSONObject jsonPlatesData = new JSONObject();
jsonPlatesData.put(ORDER_NO_KEY, "N" + orderNo);//生产单号需要传入赋值 jsonPlatesData.put(ORDER_NO_KEY, "N" + orderNo);//生产单号需要传入赋值
jsonPlatesData.put("format", "json"); jsonPlatesData.put("format", "json");
jsonPlatesData.put("version", "3"); jsonPlatesData.put("version", "3");
JSONObject dataPlates = apiDataProduction.getApiOrderMessage(token, jsonPlatesData); JSONObject dataPlates = apiDataProduction.getApiOrderMessage(token, jsonPlatesData);
return new AsyncResult<>(dataPlates); return dataPlates;
} }
// 获取配件信息 分页获取 // 获取配件信息 分页获取
@Async public JSONObject getApiPartsMessage(String token, String orderNo, JSONObject jsonParts) {
public Future<JSONObject> getApiPartsMessage(String token, String orderNo) {
JSONObject jsonParts = new JSONObject();
jsonParts.put(CURR_PAGE_KEY, 1);
jsonParts.put(PAGE_COUNT_KEY, PARTS_PAGE_MAX);
jsonParts.put(ORDER_NO_KEY, "N" + orderNo);
JSONObject parts = apiDataProduction.getApiOrderPartsMessage(token, jsonParts); JSONObject parts = apiDataProduction.getApiOrderPartsMessage(token, jsonParts);
if (!parts.getString(ERR_CODE_KEY).equals("0")) { if (!parts.getString(ERR_CODE_KEY).equals("0")) {
log.error("配件数据获取错误" + "N" + orderNo); log.error("配件数据获取错误" + "N" + orderNo);
throw exception(PARTS_DATA_ERROR); throw exception(PARTS_DATA_ERROR);
} }
JSONObject dataParts = new JSONObject(); if (parts.getJSONObject(VALUE_KEY).getJSONArray("List") == null || parts.getJSONObject(VALUE_KEY).getJSONArray("List").isEmpty()) {
for (int i = 1; i <= parts.getJSONObject(VALUE_KEY).getInteger(PAGECOUNT_KEY); i++) { return null;
jsonParts.put(CURR_PAGE_KEY, i);
JSONObject value = apiDataProduction.getApiOrderPartsMessage(token, jsonParts);
dataParts = mergeJSONObjects(dataParts, value);
} }
return new AsyncResult<>(dataParts); return parts;
} }
// 柜体信息转换 // 柜体信息转换
@Async public JSONObject getApiBodyMessage(String token, String orderNo) {
public Future<JSONObject> getApiBodyMessage(String token, String orderNo) {
JSONObject jsonBody = new JSONObject(); JSONObject jsonBody = new JSONObject();
jsonBody.put(CURR_PAGE_KEY, 1); jsonBody.put(CURR_PAGE_KEY, 1);
jsonBody.put(PAGE_COUNT_KEY, PARTS_PAGE_MAX); jsonBody.put(PAGE_COUNT_KEY, PARTS_PAGE_MAX);
@@ -105,17 +98,17 @@ public class ApiDataAchieve {
throw exception(BODY_DATA_ERROR); throw exception(BODY_DATA_ERROR);
} }
JSONObject dataBody = new JSONObject(); JSONObject dataBody = new JSONObject();
for (int i = 1; i <= body.getJSONObject(VALUE_KEY).getInteger(PAGECOUNT_KEY); i++) { for (int i = 1; i <= body.getJSONObject(VALUE_KEY).getInteger(ALL_PAGE_COUNT_KEY); i++) {
jsonBody.put(CURR_PAGE_KEY, i); jsonBody.put(CURR_PAGE_KEY, i);
JSONObject value = apiDataProduction.getApiOrderBodyMessage(token, jsonBody); JSONObject value = apiDataProduction.getApiOrderBodyMessage(token, jsonBody);
dataBody = mergeJSONObjects(dataBody, value); dataBody = mergeJSONObjects(dataBody, value);
} }
return new AsyncResult<>(dataBody); return dataBody;
} }
// 商品信息转换 // 商品信息转换
@Async public JSONObject getApiGoodsMessage(String token, String orderNo) {
public Future<JSONObject> getApiGoodsMessage(String token, String orderNo) {
JSONObject jsonGoods = new JSONObject(); JSONObject jsonGoods = new JSONObject();
jsonGoods.put(CURR_PAGE_KEY, 1); jsonGoods.put(CURR_PAGE_KEY, 1);
jsonGoods.put(PAGE_COUNT_KEY, PARTS_PAGE_MAX); jsonGoods.put(PAGE_COUNT_KEY, PARTS_PAGE_MAX);
@@ -126,47 +119,38 @@ public class ApiDataAchieve {
throw exception(GOODS_DATA_ERROR); throw exception(GOODS_DATA_ERROR);
} }
JSONObject dataGoods = new JSONObject(); JSONObject dataGoods = new JSONObject();
for (int i = 1; i <= goods.getJSONObject(VALUE_KEY).getInteger(PAGECOUNT_KEY); i++) { for (int i = 1; i <= goods.getJSONObject(VALUE_KEY).getInteger(ALL_PAGE_COUNT_KEY); i++) {
jsonGoods.put(CURR_PAGE_KEY, i); jsonGoods.put(CURR_PAGE_KEY, i);
JSONObject value = apiDataProduction.getApiOrderGoodsMessage(token, jsonGoods); JSONObject value = apiDataProduction.getApiOrderGoodsMessage(token, jsonGoods);
dataGoods = mergeJSONObjects(dataGoods, value); dataGoods = mergeJSONObjects(dataGoods, value);
} }
return new AsyncResult<>(dataGoods);
return dataGoods;
} }
// 板材明细信息转换 // 板材明细信息转换
@Async public JSONObject getApiPlateDetailMessage(String token, String orderNo, JSONObject jsonPlates) {
public Future<JSONObject> getApiPlateDetailMessage(String token, String orderNo) {
JSONObject jsonPlates = new JSONObject();
jsonPlates.put(CURR_PAGE_KEY, 1);
jsonPlates.put(PAGE_COUNT_KEY, PARTS_PAGE_MAX);
jsonPlates.put(ORDER_NO_KEY, "N" + orderNo);
JSONObject plates = apiDataProduction.getApiBlocksDataMessage(token, jsonPlates); JSONObject plates = apiDataProduction.getApiBlocksDataMessage(token, jsonPlates);
if (!plates.getString(ERR_CODE_KEY).equals("0")) { if (!plates.getString(ERR_CODE_KEY).equals("0")) {
log.error("板材明细获取错误" + "N" + orderNo); log.error("板材明细获取错误" + "N" + orderNo);
throw exception(PLATE_DATA_ERROR); throw exception(PLATE_DATA_ERROR);
} }
JSONObject plate = new JSONObject(); if (plates.getJSONObject(VALUE_KEY).getJSONArray("List") == null || plates.getJSONObject(VALUE_KEY).getJSONArray("List").isEmpty()) {
for (int i = 1; i <= plates.getJSONObject(VALUE_KEY).getInteger(PAGECOUNT_KEY); i++) { return null;
jsonPlates.put(CURR_PAGE_KEY, i);
JSONObject value = apiDataProduction.getApiBlocksDataMessage(token, jsonPlates);
plate = mergeJSONObjects(plate, value);
} }
return new AsyncResult<>(plate); return plates;
} }
// 加工组信息转换 // 加工组信息转换
@Async public JSONObject getApiGroupMessage(String token, String orderNo) {
public Future<JSONObject> getApiGroupMessage(String token, String orderNo) {
JSONObject jsonModule = new JSONObject(); JSONObject jsonModule = new JSONObject();
jsonModule.put(ORDER_NO_KEY, "N" + orderNo); jsonModule.put(ORDER_NO_KEY, "N" + orderNo);
JSONObject dataModule = apiDataProduction.getApiModuleTypeDataMessage(token, jsonModule); JSONObject dataModule = apiDataProduction.getApiModuleTypeDataMessage(token, jsonModule);
return new AsyncResult<>(dataModule); return dataModule;
} }
// 板材数据信息转换 // 板材数据信息转换
@Async public JSONObject getApiBlocksMessage(String token, String orderNo) {
public Future<JSONObject> getApiBlocksMessage(String token, String orderNo) {
JSONObject jsonBlocks = new JSONObject(); JSONObject jsonBlocks = new JSONObject();
jsonBlocks.put(CURR_PAGE_KEY, 1); jsonBlocks.put(CURR_PAGE_KEY, 1);
jsonBlocks.put(PAGE_COUNT_KEY, PARTS_PAGE_MAX); jsonBlocks.put(PAGE_COUNT_KEY, PARTS_PAGE_MAX);
@@ -176,12 +160,12 @@ public class ApiDataAchieve {
log.error("板材数据获取错误" + "N" + orderNo); log.error("板材数据获取错误" + "N" + orderNo);
} }
JSONObject block = new JSONObject(); JSONObject block = new JSONObject();
for (int i = 1; i <= blocks.getJSONObject(VALUE_KEY).getInteger(PAGECOUNT_KEY); i++) { for (int i = 1; i <= blocks.getJSONObject(VALUE_KEY).getInteger(ALL_PAGE_COUNT_KEY); i++) {
jsonBlocks.put(CURR_PAGE_KEY, i); jsonBlocks.put(CURR_PAGE_KEY, i);
JSONObject value = apiDataProduction.getApiBlocksMessage(token, jsonBlocks); JSONObject value = apiDataProduction.getApiBlocksMessage(token, jsonBlocks);
block = mergeJSONObjects(block, value); block = mergeJSONObjects(block, value);
} }
return new AsyncResult<>(block); return block;
} }
// 商品列表信息转换 // 商品列表信息转换
@@ -197,14 +181,21 @@ public class ApiDataAchieve {
} }
// 订单获取 // 订单获取
public Future<JSONObject> getApiOrder(String token, String shopId, String orderNo) { public JSONObject getApiOrder(String token, String orderNo) {
JSONObject jsonOrders = new JSONObject(); JSONObject jsonOrders = new JSONObject();
orderNo = "N" +orderNo; orderNo = "N" +orderNo;
JSONArray orderList = new JSONArray(); JSONArray orderList = new JSONArray();
orderList.add(orderNo.replace(" ", "")); orderList.add(orderNo.replace(" ", ""));
jsonOrders.put(ORDER_NO_KEY, orderList); jsonOrders.put(ORDER_NO_KEY, orderList);
JSONObject order = apiDataProduction.getApiOrderList(token, jsonOrders); JSONObject order = apiDataProduction.getApiOrderList(token, jsonOrders);
return new AsyncResult<>(order);
if (!order.getString(ProduceApiConstants.CODE).equals("0") ||
order.getJSONArray(ProduceApiConstants.DATA) == null ||
order.getJSONArray(ProduceApiConstants.DATA).isEmpty()) {
throw exception(ORDER_NOT_FOUND);
}
return order;
} }
// 订单列表 // 订单列表
@@ -281,7 +272,6 @@ public class ApiDataAchieve {
} }
mergedObj.put("List", mergedList); mergedObj.put("List", mergedList);
// System.out.println(mergedObj);
return mergedObj; return mergedObj;
@@ -328,7 +318,6 @@ public class ApiDataAchieve {
} }
mergedObj.put("data", mergedList); mergedObj.put("data", mergedList);
// System.out.println(mergedObj);
return mergedObj; return mergedObj;
@@ -0,0 +1,59 @@
package com.cf.imes.module.executor.util.fileConversion.admin.api.webcad;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
/**
* api数据转换中可能用到的数据结构
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ApiDataTypeVo {
public OrderDO orderDO;
public Map<String, RawGoodsDO> mapRawGoodsDO;
public Map<String, GoodsDO> mapGoodsDO;
public Map<String, OrderBodyDO> mapOrderBodyDO;
public Map<String, OrderGroupDO> mapOrderGroupDO; // 加工组id 和 加工组信息
public Map<String, List<String>> mapGroupLists;// 加工组id 和 小板配件itemId
public Map<String, List<OrderItemDO>> mapItemByGroup;
public List<OrderItemDO> mapItem;
public Map<String, OrderPartsDO> mapPartsInfos;
public Map<String, OrderPartsRemark> mapPartRemarks;
public Map<String, PlateDetail> mapPlateDetails; // 造型数据
public Map<String, PlateDO> mapPlatesInfos; // 小板数据
// 柜体板块片数,柜体异形板片数
public Map<String, Integer> totalPlateCountMapToBody;
public Map<String, Integer> irregularPlateCountMapToBody;
// 加工组板块片数,加工组异形板片数
public Map<String, Integer> totalPlateCountMapToGroup;
public Map<String, Integer> irregularPlateCountMapToGroup;
}
@@ -11,6 +11,12 @@ public class ProduceApiConstants {
public static final String CODE = "err_code"; public static final String CODE = "err_code";
public static final String ZERO = "0"; public static final String ZERO = "0";
public static final String ONE = "1"; public static final String ONE = "1";
public static final String PAGE_COUNT = "PageCount";
// 请求发送
public static final String ORDER_NO_KEY = "order_no";
public static final String CURR_PAGE_KEY = "curr_page";
public static final String PAGE_COUNT_KEY = "page_count"; //请求
// ========== getApiOrderPartsMessage partsList 配件明细模块 ========== // ========== getApiOrderPartsMessage partsList 配件明细模块 ==========
public static final String GD_GOODS_SN = "goods_sn"; // 用户自定义配件编号 public static final String GD_GOODS_SN = "goods_sn"; // 用户自定义配件编号
@@ -156,7 +162,7 @@ public class ProduceApiConstants {
public static final String BG_THICKNESS = "Thickness"; // 厚 public static final String BG_THICKNESS = "Thickness"; // 厚
public static final String BG_AREA = "Area"; // 面积 public static final String BG_AREA = "Area"; // 面积
public static final String BG_WAVE = "Wave"; // 纹路(正纹 = 0, 可翻转 = 1, 反纹 = 2 ) public static final String BG_WAVE = "Wave"; // 纹路(正纹 = 0, 可翻转 = 1, 反纹 = 2 )
public static final String BG_SEAL = "Seal"; // 封边信息(格式:左封边,右封边,上封边,下封边) public static final String BG_SEAL = "Seal"; // 封边信息(格式:左封边,右封边,上封边,下封边) 信息不可以用,信息不全
public static final String BG_IS_UN_REGULAR = "IsUnRegular"; // 是否异形 public static final String BG_IS_UN_REGULAR = "IsUnRegular"; // 是否异形
public static final String BG_IS_MODEL = "IsModel"; // 是否造型 public static final String BG_IS_MODEL = "IsModel"; // 是否造型
public static final String BG_IS_HOLE = "IsHole"; // 是否有孔 public static final String BG_IS_HOLE = "IsHole"; // 是否有孔