同步odoo的product.product

沃森川job同步飞书
YXY 1 year ago
parent 8cb9cf4bc5
commit da9898d95c

@ -71,7 +71,7 @@ public abstract class OdooAbstrackob {
private static final String PAGE_LIMIT_KEY = "limit"; private static final String PAGE_LIMIT_KEY = "limit";
private static final Integer PAGE_SIZE = 20; private static final Integer PAGE_SIZE = 20;
protected void execute() { public void execute() {
try { try {
log.info("===================== {} strat ======================", this.getClassName()); log.info("===================== {} strat ======================", this.getClassName());
//初始化调用对象 //初始化调用对象
@ -101,7 +101,7 @@ public abstract class OdooAbstrackob {
//分页对象 //分页对象
Map<String, Integer> pageMap = getPageMap(); Map<String, Integer> pageMap = getPageMap();
//查询结果 //查询结果
List<JSONObject> dateList = new ArrayList<>(); List<Object> dateList = new ArrayList<>();
//错误信息 //错误信息
List<String> errorList = new ArrayList<>(); List<String> errorList = new ArrayList<>();
//构建飞书请求对象 //构建飞书请求对象
@ -112,10 +112,16 @@ public abstract class OdooAbstrackob {
List<ErpLarkRelation> waitCreateRelation = new ArrayList<>(); List<ErpLarkRelation> waitCreateRelation = new ArrayList<>();
do { do {
dateList = getDate(context, pageMap, errorList); dateList = getDate(context, pageMap, errorList);
Map<String, String> relationMap = getLarkRelation(dateList); List<JSONObject> midDateList = dateList.stream().map(r -> {
for (JSONObject jsonObject : dateList) { return (JSONObject)JSONObject.toJSON(r);
sync(jsonObject, errorList, relationMap, larkRequest,waitCreateRelation); }).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(midDateList)){
Map<String, String> relationMap = getLarkRelation(midDateList);
for (JSONObject jsonObject : midDateList) {
sync(jsonObject, errorList, relationMap, larkRequest,waitCreateRelation);
}
} }
pageMap.put(PAGE_OFFSET_KEY,pageMap.get(PAGE_OFFSET_KEY) + PAGE_SIZE);
} while (dateList == null || (CollectionUtils.isNotEmpty(dateList) && dateList.size() == PAGE_SIZE)); } while (dateList == null || (CollectionUtils.isNotEmpty(dateList) && dateList.size() == PAGE_SIZE));
if (!CollectionUtils.isEmpty(errorList)) { if (!CollectionUtils.isEmpty(errorList)) {
String errorKey = String.join(",", errorList); String errorKey = String.join(",", errorList);
@ -219,7 +225,7 @@ public abstract class OdooAbstrackob {
//获取待同步飞书表格信息 //获取待同步飞书表格信息
protected abstract TableRelationTypeEnum syncLarkType(); protected abstract TableRelationTypeEnum syncLarkType();
public List<JSONObject> getDate(OdooContext odooContext, Map<String, Integer> pageMap, List<String> errorList) { public List<Object> getDate(OdooContext odooContext, Map<String, Integer> pageMap, List<String> errorList) {
try { try {
XmlRpcClient models = odooContext.getModels(); XmlRpcClient models = odooContext.getModels();
Integer uid = getUserId(); Integer uid = getUserId();
@ -231,7 +237,7 @@ public abstract class OdooAbstrackob {
pageMap//分页 pageMap//分页
))); )));
return asList((JSONObject[]) models.execute(GET_DATA_P_METHOD_NAME, asList( return asList((Object[])models.execute(GET_DATA_P_METHOD_NAME, asList(
GET_DATA_DB, uid, GET_DATA_PASSWORD, GET_DATA_DB, uid, GET_DATA_PASSWORD,
modelName, "read", modelName, "read",
asList(ids), asList(ids),

@ -20,7 +20,7 @@ public class ProductProduceJob extends OdooAbstrackob {
@Override @Override
protected String buildUniqueKey(JSONObject body) { protected String buildUniqueKey(JSONObject body) {
return null; return body.getString("id");
} }
@Override @Override
@ -39,14 +39,31 @@ public class ProductProduceJob extends OdooAbstrackob {
@Override @Override
protected Map<String, List<String>> getQueryFieldMap() { protected Map<String, List<String>> getQueryFieldMap() {
// return new HashMap() {{
// put("fields", Arrays.asList(
// "id", "default_code", "name"
// ,"description_purchase", "qty_available", "incoming_qty"
// ,"cost", "categ_id.name", "packaging_ids"));
// }};
return new HashMap() {{ return new HashMap() {{
put("fields", Arrays.asList("default_code", "company_id", "display_name")); put("fields", Arrays.asList("id","default_code", "name", "description_purchase"
, "qty_available", "incoming_qty", "packaging_ids"));
}}; }};
} }
@Override @Override
protected Map<String, Object> buildLarkBodyMap(JSONObject date) { protected Map<String, Object> buildLarkBodyMap(JSONObject date) {
return null; Map<String, Object> map = new HashMap<>();
map.put("id",date.getString("id"));
map.put("default_code",date.getString("default_code"));
map.put("name",date.getString("name"));
map.put("description_purchase",date.getString("description_purchase"));
map.put("qty_available",date.getString("qty_available"));
map.put("incoming_qty",date.getString("incoming_qty"));
map.put("cost",date.getString("cost"));
map.put("categ_id.name",date.getString("categ_id.name"));
map.put("packaging_ids",date.getString("packaging_ids"));
return map;
} }
@Override @Override

Loading…
Cancel
Save