From da9898d95c7d4cd4f684a02ef77f238d92476ef9 Mon Sep 17 00:00:00 2001 From: YXY <932687738@qq.com> Date: Wed, 26 Jul 2023 21:40:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5odoo=E7=9A=84product.product?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quartz/task/odoo/OdooAbstrackob.java | 20 ++++++++++------ .../quartz/task/odoo/ProductProduceJob.java | 23 ++++++++++++++++--- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/OdooAbstrackob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/OdooAbstrackob.java index b42d2cf..223f603 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/OdooAbstrackob.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/OdooAbstrackob.java @@ -71,7 +71,7 @@ public abstract class OdooAbstrackob { private static final String PAGE_LIMIT_KEY = "limit"; private static final Integer PAGE_SIZE = 20; - protected void execute() { + public void execute() { try { log.info("===================== {} strat ======================", this.getClassName()); //初始化调用对象 @@ -101,7 +101,7 @@ public abstract class OdooAbstrackob { //分页对象 Map pageMap = getPageMap(); //查询结果 - List dateList = new ArrayList<>(); + List dateList = new ArrayList<>(); //错误信息 List errorList = new ArrayList<>(); //构建飞书请求对象 @@ -112,10 +112,16 @@ public abstract class OdooAbstrackob { List waitCreateRelation = new ArrayList<>(); do { dateList = getDate(context, pageMap, errorList); - Map relationMap = getLarkRelation(dateList); - for (JSONObject jsonObject : dateList) { - sync(jsonObject, errorList, relationMap, larkRequest,waitCreateRelation); + List midDateList = dateList.stream().map(r -> { + return (JSONObject)JSONObject.toJSON(r); + }).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(midDateList)){ + Map 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)); if (!CollectionUtils.isEmpty(errorList)) { String errorKey = String.join(",", errorList); @@ -219,7 +225,7 @@ public abstract class OdooAbstrackob { //获取待同步飞书表格信息 protected abstract TableRelationTypeEnum syncLarkType(); - public List getDate(OdooContext odooContext, Map pageMap, List errorList) { + public List getDate(OdooContext odooContext, Map pageMap, List errorList) { try { XmlRpcClient models = odooContext.getModels(); Integer uid = getUserId(); @@ -231,7 +237,7 @@ public abstract class OdooAbstrackob { 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, modelName, "read", asList(ids), diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/ProductProduceJob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/ProductProduceJob.java index 13b500d..0483123 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/ProductProduceJob.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/odoo/ProductProduceJob.java @@ -20,7 +20,7 @@ public class ProductProduceJob extends OdooAbstrackob { @Override protected String buildUniqueKey(JSONObject body) { - return null; + return body.getString("id"); } @Override @@ -39,14 +39,31 @@ public class ProductProduceJob extends OdooAbstrackob { @Override protected Map> 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() {{ - 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 protected Map buildLarkBodyMap(JSONObject date) { - return null; + Map 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