|
|
|
@ -15,8 +15,9 @@ import com.ruoyi.flyingbook.domain.lark.LarkTableRequest;
|
|
|
|
|
import com.ruoyi.flyingbook.mapper.ErpLarkRelationMapper;
|
|
|
|
|
import com.ruoyi.flyingbook.mapper.LarkCompanyRelationMapper;
|
|
|
|
|
import com.ruoyi.flyingbook.mapper.LarkTableRelationMapper;
|
|
|
|
|
import com.ruoyi.quartz.domain.CJTJobContext;
|
|
|
|
|
import com.ruoyi.quartz.domain.OdooContext;
|
|
|
|
|
import com.ruoyi.quartz.domain.OdooRequest;
|
|
|
|
|
import com.ruoyi.quartz.helper.OkHttpHelper;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
@ -25,7 +26,6 @@ import org.apache.xmlrpc.client.XmlRpcClient;
|
|
|
|
|
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
|
|
import java.net.MalformedURLException;
|
|
|
|
|
import java.net.URL;
|
|
|
|
@ -33,7 +33,6 @@ import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static java.util.Arrays.asList;
|
|
|
|
|
import static java.util.Collections.emptyList;
|
|
|
|
|
import static java.util.Collections.emptyMap;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -68,13 +67,14 @@ public abstract class OdooAbstrackob {
|
|
|
|
|
|
|
|
|
|
private static final String PAGE_OFFSET_KEY = "offset";
|
|
|
|
|
private static final String PAGE_LIMIT_KEY = "limit";
|
|
|
|
|
private static final Integer PAGE_SIZE = 20;
|
|
|
|
|
private static final Integer PAGE_SIZE = 500;
|
|
|
|
|
|
|
|
|
|
public void execute(Integer warehouseId) {
|
|
|
|
|
try {
|
|
|
|
|
if (Boolean.FALSE.equals(syncFlag)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//todo yxy
|
|
|
|
|
// if (Boolean.FALSE.equals(syncFlag)) {
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
log.info("===================== {} strat ======================", this.getClassName());
|
|
|
|
|
//初始化调用对象
|
|
|
|
|
OdooContext context = initContext(warehouseId);
|
|
|
|
@ -117,17 +117,15 @@ public abstract class OdooAbstrackob {
|
|
|
|
|
|
|
|
|
|
private void batchCreate(OdooContext context, Map<String, Integer> pageMap, LarkTableRequest larkRequest, List<String> errorList,Integer retryCount) {
|
|
|
|
|
//查询结果
|
|
|
|
|
List<Object> dateList = new ArrayList<>();
|
|
|
|
|
List<JSONObject> dateList = new ArrayList<>();
|
|
|
|
|
List<Integer> retryPageList = new ArrayList<>();
|
|
|
|
|
List<ErpLarkRelation> waitCreateRelation = new ArrayList<>();
|
|
|
|
|
do {
|
|
|
|
|
dateList = getDate(context, pageMap, context.getWarehouseId(), retryPageList);
|
|
|
|
|
List<JSONObject> midDateList = dateList.stream().map(r -> {
|
|
|
|
|
return (JSONObject) JSONObject.toJSON(r);
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
if (CollectionUtils.isNotEmpty(midDateList)) {
|
|
|
|
|
Map<String, String> relationMap = getLarkRelation(midDateList, context.getWarehouseId());
|
|
|
|
|
for (JSONObject jsonObject : midDateList) {
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(dateList)) {
|
|
|
|
|
Map<String, String> relationMap = getLarkRelation(dateList, context.getWarehouseId());
|
|
|
|
|
for (JSONObject jsonObject : dateList) {
|
|
|
|
|
sync(jsonObject, errorList, relationMap, larkRequest, waitCreateRelation, context.getWarehouseId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -253,29 +251,51 @@ public abstract class OdooAbstrackob {
|
|
|
|
|
return jsonArray;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<Object> getDate(OdooContext odooContext, Map<String, Integer> pageMap, Integer warehouseId, List<Integer> retryPageList) {
|
|
|
|
|
// public List<Object> getDate(OdooContext odooContext, Map<String, Integer> pageMap, Integer warehouseId, List<Integer> retryPageList) {
|
|
|
|
|
// try {
|
|
|
|
|
// XmlRpcClient models = odooContext.getModels();
|
|
|
|
|
// Integer uid = getUserId();
|
|
|
|
|
// String modelName = getQueryModelName();
|
|
|
|
|
// List<Object> ids = asList((Object[]) models.execute(GET_DATA_P_METHOD_NAME, asList(
|
|
|
|
|
// GET_DATA_DB, uid, GET_DATA_PASSWORD,
|
|
|
|
|
// modelName, "search", //product.product 表名
|
|
|
|
|
// getQueryConditionList(), //查询条件
|
|
|
|
|
// pageMap//分页
|
|
|
|
|
// )));
|
|
|
|
|
//
|
|
|
|
|
// return asList((Object[]) models.execute(GET_DATA_P_METHOD_NAME, asList(
|
|
|
|
|
// GET_DATA_DB, uid, GET_DATA_PASSWORD,
|
|
|
|
|
// modelName, "read",
|
|
|
|
|
// asList(ids),
|
|
|
|
|
// getQueryFieldMap(warehouseId)
|
|
|
|
|
// )));
|
|
|
|
|
// } catch (Exception e) {
|
|
|
|
|
// log.error("{} 获取数据失败", this.getClassName(), e);
|
|
|
|
|
// retryPageList.add(pageMap.get(PAGE_OFFSET_KEY));
|
|
|
|
|
// }
|
|
|
|
|
// return null;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
public List<JSONObject> getDate(OdooContext odooContext, Map<String, Integer> pageMap, Integer warehouseId, List<Integer> retryPageList) {
|
|
|
|
|
List<JSONObject> resultList = new ArrayList<>();
|
|
|
|
|
try {
|
|
|
|
|
XmlRpcClient models = odooContext.getModels();
|
|
|
|
|
Integer uid = getUserId();
|
|
|
|
|
String modelName = getQueryModelName();
|
|
|
|
|
List<Object> ids = asList((Object[]) models.execute(GET_DATA_P_METHOD_NAME, asList(
|
|
|
|
|
GET_DATA_DB, uid, GET_DATA_PASSWORD,
|
|
|
|
|
modelName, "search", //product.product 表名
|
|
|
|
|
getQueryConditionList(), //查询条件
|
|
|
|
|
pageMap//分页
|
|
|
|
|
)));
|
|
|
|
|
|
|
|
|
|
return asList((Object[]) models.execute(GET_DATA_P_METHOD_NAME, asList(
|
|
|
|
|
GET_DATA_DB, uid, GET_DATA_PASSWORD,
|
|
|
|
|
modelName, "read",
|
|
|
|
|
asList(ids),
|
|
|
|
|
getQueryFieldMap(warehouseId)
|
|
|
|
|
)));
|
|
|
|
|
Map<String, List<String>> queryFieldMap = getQueryFieldMap(warehouseId);
|
|
|
|
|
JSONObject context = null;
|
|
|
|
|
if (warehouseId != null){
|
|
|
|
|
context = new JSONObject();
|
|
|
|
|
context.put("warehouse_id",warehouseId);
|
|
|
|
|
}
|
|
|
|
|
OdooRequest odooRequest = new OdooRequest(getQueryModelName(),getQueryConditionList(),context,queryFieldMap.get("fields"),pageMap.get(PAGE_OFFSET_KEY));
|
|
|
|
|
JSONObject jsonObject = OkHttpHelper.postOdoo(odooRequest);
|
|
|
|
|
JSONArray result = jsonObject.getJSONArray("result");
|
|
|
|
|
for (int i = 0; i < result.size(); i++) {
|
|
|
|
|
resultList.add(result.getJSONObject(i));
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("{} 获取数据失败", this.getClassName(), e);
|
|
|
|
|
retryPageList.add(pageMap.get(PAGE_OFFSET_KEY));
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
return resultList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public OdooContext initContext(Integer warehouseId) {
|
|
|
|
|