feat: 同步所有客户到下单平台

(cherry picked from commit 8da0f08ed7)
This commit is contained in:
zzs 2025-04-10 14:01:29 +08:00
parent 840b050bdd
commit fed462d2c6
2 changed files with 90 additions and 34 deletions

View File

@ -47,25 +47,51 @@ public class CustomerTask extends AbstractTask {
QFilter qFilter = new QFilter("status", QCP.equals, "C");
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("bd_customer", "id,number,name,yem_checkboxfield,yem_torderid,group,yem_groupcustomers"
, new QFilter[]{qFilter});
for (DynamicObject dynamicObject : dynamicObjects) {
String number = dynamicObject.getString("number");
String name = dynamicObject.getString("name");
DynamicObject groupcustomers = dynamicObject.getDynamicObject("yem_groupcustomers");
for (DynamicObject customer : dynamicObjects) {
DynamicObject groupcustomers = customer.getDynamicObject("yem_groupcustomers");
if (YEM.isEmpty(groupcustomers)) {
log.error(" [SKIP] 业务主体为空 ");
continue;
}
Map<String, String> demands;
// 同步业务主体
if (!groupcustomers.containsProperty("yem_torderid")) {
groupcustomers = BusinessDataServiceHelper.loadSingleFromCache(groupcustomers.getDataEntityType().getName(), new QFilter[]{new QFilter("id", "=", groupcustomers.getPkValue())});
String group_torderid = groupcustomers.getString("yem_torderid");
if (YEM.isEmpty(group_torderid)) {
log.error(" [SKIP] 业务主体未同步 ");
continue;
boolean isGroupSynced = groupcustomers.getBoolean("yem_checkboxfield");
String number = groupcustomers.getString("number");
String name = groupcustomers.getString("name");
if (isGroupSynced) {
log.info("业务主体已同步,进行更新");
String torderid = groupcustomers.getString("yem_torderid");
Long existId = Long.valueOf(torderid);
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, false, existId);
} else {
log.info("业务主体未同步,进行同步");
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, true, null);
}
if (demands.containsKey("id")) {
String id = demands.get("id");
groupcustomers.set("yem_torderid", id);
groupcustomers.set("yem_checkboxfield", true);
SaveServiceHelper.save(new DynamicObject[]{groupcustomers});
log.info("业务主体已同步");
} else if (demands.containsKey("msg")) {
throw new KDBizException("同步当前客户业务主体异常: " + demands.get("msg"));
}
}
Map<String, String> demands;
if (dynamicObject.getBoolean("yem_checkboxfield")) {
String torderid = dynamicObject.getString("yem_torderid");
// 业务主体和客户相同跳过
if (customer.getLong("id") == groupcustomers.getLong("id")) {
log.info("业务主体和客户相同,跳过");
continue;
}
String number = customer.getString("number");
String name = customer.getString("name");
if (customer.getBoolean("yem_checkboxfield")) {
String torderid = customer.getString("yem_torderid");
if (YEM.isEmpty(torderid)) {
log.error(" [SKIP] 已同步但ID为空 ");
continue;
@ -78,9 +104,9 @@ public class CustomerTask extends AbstractTask {
log.info(demands.toString());
if (demands.containsKey("id")) {
String id = demands.get("id");
dynamicObject.set("yem_torderid", id);
dynamicObject.set("yem_checkboxfield", true);
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
customer.set("yem_torderid", id);
customer.set("yem_checkboxfield", true);
SaveServiceHelper.save(new DynamicObject[]{customer});
} else if (demands.containsKey("msg")) {
log.error(demands.get("msg"));
}

View File

@ -39,27 +39,35 @@ public class CustomerValidator extends AbstractValidator {
}
for (ExtendedDataEntity dataEntitie : dataEntities) {
DynamicObject mechanical = dataEntitie.getDataEntity();
boolean isSynced = mechanical.getBoolean("yem_checkboxfield");
String number = mechanical.getString("number");
String name = mechanical.getString("name");
DynamicObject groupcustomers = mechanical.getDynamicObject("yem_groupcustomers");
DynamicObject customer = dataEntitie.getDataEntity();
DynamicObject groupcustomers = customer.getDynamicObject("yem_groupcustomers");
String name = customer.getString("name");
if (YEM.isEmpty(groupcustomers)) {
this.addErrorMessage(dataEntitie, String.format("请维护客户 [%s] 的业务主体", name));
continue;
}
Map<String, String> demands;
doSyncCustomer(customer, accessToken);
}
}
if (!groupcustomers.containsProperty("yem_torderid")) {
groupcustomers = BusinessDataServiceHelper.loadSingleFromCache(groupcustomers.getDataEntityType().getName(), new QFilter[]{new QFilter("id", "=", groupcustomers.getPkValue())});
String group_torderid = groupcustomers.getString("yem_torderid");
if (YEM.isEmpty(group_torderid)) {
this.addErrorMessage(dataEntitie, String.format("客户 [%s] 的业务主体 [%s] 未同步,请先同步业务主体至下单平台", name, groupcustomers.getString("name")));
continue;
}
}
if (isSynced) {
String torderid = mechanical.getString("yem_torderid");
/**
* 同步客户至下单平台如果业务主体为同步先同步业务主体
* @param customer 当前客户
* @param accessToken 访问Token
*/
public static void doSyncCustomer(DynamicObject customer, String accessToken) {
boolean isSynced = customer.getBoolean("yem_checkboxfield");
DynamicObject groupcustomers = customer.getDynamicObject("yem_groupcustomers");
Map<String, String> demands;
if (!groupcustomers.containsProperty("yem_torderid")) {
groupcustomers = BusinessDataServiceHelper.loadSingleFromCache(groupcustomers.getDataEntityType().getName(), new QFilter[]{new QFilter("id", "=", groupcustomers.getPkValue())});
boolean isGroupSynced = groupcustomers.getBoolean("yem_checkboxfield");
String number = groupcustomers.getString("number");
String name = groupcustomers.getString("name");
if (isGroupSynced) {
String torderid = groupcustomers.getString("yem_torderid");
Long existId = Long.valueOf(torderid);
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, false, existId);
} else {
@ -67,12 +75,34 @@ public class CustomerValidator extends AbstractValidator {
}
if (demands.containsKey("id")) {
String id = demands.get("id");
mechanical.set("yem_torderid", id);
mechanical.set("yem_checkboxfield", true);
SaveServiceHelper.save(new DynamicObject[]{mechanical});
groupcustomers.set("yem_torderid", id);
groupcustomers.set("yem_checkboxfield", true);
SaveServiceHelper.save(new DynamicObject[]{groupcustomers});
} else if (demands.containsKey("msg")) {
this.addErrorMessage(dataEntitie, demands.get("msg"));
throw new KDBizException("同步当前客户业务主体异常: " + demands.get("msg"));
}
}
// 业务主体和客户相同跳过
if (customer.getLong("id") == groupcustomers.getLong("id")) {
return;
}
String number = customer.getString("number");
String name = customer.getString("name");
if (isSynced) {
String torderid = customer.getString("yem_torderid");
Long existId = Long.valueOf(torderid);
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, false, existId);
} else {
demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, true, null);
}
if (demands.containsKey("id")) {
String id = demands.get("id");
customer.set("yem_torderid", id);
customer.set("yem_checkboxfield", true);
SaveServiceHelper.save(new DynamicObject[]{customer});
} else if (demands.containsKey("msg")) {
throw new KDBizException("同步当前客户异常: " + demands.get("msg"));
}
}
}