1.优化OA供应商逻辑

S
This commit is contained in:
weiyunlong 2025-04-17 15:55:32 +08:00
parent a29e85e4c5
commit 0b0c4580cb
3 changed files with 118 additions and 94 deletions

View File

@ -12,6 +12,7 @@ import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.sdk.plugin.Plugin; import kd.sdk.plugin.Plugin;
import shkd.utils.DobeDWUtils;
import java.util.Map; import java.util.Map;
@ -23,7 +24,6 @@ public class SupplierInfoFixeButtonPlugin extends AbstractListPlugin implements
private final static Log Logger = LogFactory.getLog(SupplierInfoFixeButtonPlugin.class); private final static Log Logger = LogFactory.getLog(SupplierInfoFixeButtonPlugin.class);
@Override @Override
public void itemClick(ItemClickEvent evt) { public void itemClick(ItemClickEvent evt) {
super.itemClick(evt); super.itemClick(evt);
@ -35,109 +35,132 @@ public class SupplierInfoFixeButtonPlugin extends AbstractListPlugin implements
// 1. 查询所有已审核可用状态的正式供应商 // 1. 查询所有已审核可用状态的正式供应商
QFilter qFilter = new QFilter("status", QCP.equals, "C") QFilter qFilter = new QFilter("status", QCP.equals, "C")
.and(new QFilter("enable", QCP.equals, "1")); .and(new QFilter("enable", QCP.equals, "1")).and(new QFilter("qeug_oacode", QCP.not_equals, ""));
Map<Object, DynamicObject> supplierMap = BusinessDataServiceHelper.loadFromCache( Map<Object, DynamicObject> supplierMap = BusinessDataServiceHelper.loadFromCache(
"resm_official_supplier", qFilter.toArray()); "resm_official_supplier", qFilter.toArray());
if (supplierMap == null || supplierMap.isEmpty()) { if (supplierMap == null || supplierMap.isEmpty()) {
this.getView().showMessage("没有找到符合条件的供应商数据"); this.getView().showMessage("没有找到符合条件的供应商数据");
return; return;
} }
// 加载默认供应商分类
DynamicObject defaultGroup = BusinessDataServiceHelper.loadSingle(
"bd_suppliergroup",
new QFilter("number", QCP.equals, "GYSFL-202410-08").toArray());
// 初始化消息构建器
StringBuilder successMessage = new StringBuilder("成功修复以下供应商的分录数据:\n");
StringBuilder errorMessage = new StringBuilder("以下供应商处理失败:\n");
int successCount = 0;
int skipCount = 0;
int errorCount = 0;
for (DynamicObject dynamicObject : supplierMap.values()) { for (DynamicObject dynamicObject : supplierMap.values()) {
String supplierNumber = dynamicObject.getString("number"); String number = "";
try { try {
boolean hasGroup = !dynamicObject.getDynamicObjectCollection("apt_group").isEmpty(); number = dynamicObject.getString("number");
DynamicObjectCollection entry_org = dynamicObject.getDynamicObjectCollection("entry_org"); String qeug_oacode = dynamicObject.getString("qeug_oacode");
dynamicObject.set("number", qeug_oacode);
if (entry_org == null || entry_org.isEmpty()) {
skipCount++;
continue;
}
boolean needProcess = false;
// 检查是否需要处理
for (DynamicObject object : entry_org) {
DynamicObjectCollection entry_org_group = object.getDynamicObjectCollection("entry_org_group");
if (entry_org_group == null || entry_org_group.isEmpty()) {
needProcess = true;
break;
}
}
if (!needProcess) {
skipCount++;
continue;
}
// 处理数据
for (DynamicObject object : entry_org) {
DynamicObjectCollection entry_org_group = object.getDynamicObjectCollection("entry_org_group");
if (entry_org_group == null || entry_org_group.isEmpty()) {
if (hasGroup) {
for (DynamicObject group : dynamicObject.getDynamicObjectCollection("apt_group")) {
DynamicObject supplierObj = group.getDynamicObject("fbasedataid");
DynamicObject newObject = entry_org_group.addNew();
newObject.set("suppliergroup", supplierObj);
newObject.set("examstatus", "NOT_EXAM");
newObject.set("qualifiedstatus", "1");
newObject.set("frozenstatus", "1");
}
} else {
DynamicObject newObject = entry_org_group.addNew();
newObject.set("suppliergroup", defaultGroup);
newObject.set("examstatus", "NOT_EXAM");
newObject.set("qualifiedstatus", "1");
newObject.set("frozenstatus", "1");
}
}
}
// 保存数据
SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
successCount++; DobeDWUtils.saveLog(qeug_oacode,"刷新供应商数据(OAid)",null,null,true,"更新金蝶供应商编码");
successMessage.append(supplierNumber).append("\n");
}catch (Exception e) { }catch (Exception e) {
errorCount++; Logger.error("修复供应商数据失败: " + number, e);
errorMessage.append(supplierNumber) DobeDWUtils.saveLog(number,"刷新供应商数据(OAid)",null,e.toString(),false,"更新金蝶供应商编码");
.append(" - 错误原因: ")
.append(e.getMessage())
.append("\n");
Logger.error("修复供应商数据失败: " + supplierNumber, e);
}
} }
// 构建最终消息
StringBuilder finalMessage = new StringBuilder();
finalMessage.append("处理完成!\n")
.append("成功处理: ").append(successCount).append("\n")
.append("跳过处理: ").append(skipCount).append("\n")
.append("处理失败: ").append(errorCount).append("\n\n");
if (successCount > 0) {
finalMessage.append(successMessage.toString()).append("\n");
} }
if (errorCount > 0) { // QFilter qFilter = new QFilter("status", QCP.equals, "C")
finalMessage.append(errorMessage.toString()); // .and(new QFilter("enable", QCP.equals, "1"));
} // Map<Object, DynamicObject> supplierMap = BusinessDataServiceHelper.loadFromCache(
// "resm_official_supplier", qFilter.toArray());
this.getView().showMessage(finalMessage.toString()); //
// if (supplierMap == null || supplierMap.isEmpty()) {
// this.getView().showMessage("没有找到符合条件的供应商数据");
// return;
// }
//
// // 加载默认供应商分类
// DynamicObject defaultGroup = BusinessDataServiceHelper.loadSingle(
// "bd_suppliergroup",
// new QFilter("number", QCP.equals, "GYSFL-202410-08").toArray());
//
// // 初始化消息构建器
// StringBuilder successMessage = new StringBuilder("成功修复以下供应商的分录数据:\n");
// StringBuilder errorMessage = new StringBuilder("以下供应商处理失败:\n");
//
// int successCount = 0;
// int skipCount = 0;
// int errorCount = 0;
//
// for (DynamicObject dynamicObject : supplierMap.values()) {
// String supplierNumber = dynamicObject.getString("number");
//
// try {
// boolean hasGroup = !dynamicObject.getDynamicObjectCollection("apt_group").isEmpty();
// DynamicObjectCollection entry_org = dynamicObject.getDynamicObjectCollection("entry_org");
//
// if (entry_org == null || entry_org.isEmpty()) {
// skipCount++;
// continue;
// }
//
// boolean needProcess = false;
//
// // 检查是否需要处理
// for (DynamicObject object : entry_org) {
// DynamicObjectCollection entry_org_group = object.getDynamicObjectCollection("entry_org_group");
// if (entry_org_group == null || entry_org_group.isEmpty()) {
// needProcess = true;
// break;
// }
// }
//
// if (!needProcess) {
// skipCount++;
// continue;
// }
//
// // 处理数据
// for (DynamicObject object : entry_org) {
// DynamicObjectCollection entry_org_group = object.getDynamicObjectCollection("entry_org_group");
// if (entry_org_group == null || entry_org_group.isEmpty()) {
// if (hasGroup) {
// for (DynamicObject group : dynamicObject.getDynamicObjectCollection("apt_group")) {
// DynamicObject supplierObj = group.getDynamicObject("fbasedataid");
// DynamicObject newObject = entry_org_group.addNew();
// newObject.set("suppliergroup", supplierObj);
// newObject.set("examstatus", "NOT_EXAM");
// newObject.set("qualifiedstatus", "1");
// newObject.set("frozenstatus", "1");
// }
// } else {
// DynamicObject newObject = entry_org_group.addNew();
// newObject.set("suppliergroup", defaultGroup);
// newObject.set("examstatus", "NOT_EXAM");
// newObject.set("qualifiedstatus", "1");
// newObject.set("frozenstatus", "1");
// }
// }
// }
//
// // 保存数据
// SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
// successCount++;
// successMessage.append(supplierNumber).append("\n");
//
// } catch (Exception e) {
// errorCount++;
// errorMessage.append(supplierNumber)
// .append(" - 错误原因: ")
// .append(e.getMessage())
// .append("\n");
// Logger.error("修复供应商数据失败: " + supplierNumber, e);
// }
// }
//
// // 构建最终消息
// StringBuilder finalMessage = new StringBuilder();
// finalMessage.append("处理完成!\n")
// .append("成功处理: ").append(successCount).append("\n")
// .append("跳过处理: ").append(skipCount).append("\n")
// .append("处理失败: ").append(errorCount).append("\n\n");
//
// if (successCount > 0) {
// finalMessage.append(successMessage.toString()).append("\n");
// }
//
// if (errorCount > 0) {
// finalMessage.append(errorMessage.toString());
// }
//
// this.getView().showMessage(finalMessage.toString());
} }
} }

View File

@ -105,7 +105,7 @@ public class PushOASupplierOPPlugin extends AbstractOperationServicePlugIn {
customerBody.put("legalbody", legalbody);// "法人", customerBody.put("legalbody", legalbody);// "法人",
customerBody.put("createTime", createtime);// "创建时间例如2024-06-02 17:27:10", customerBody.put("createTime", createtime);// "创建时间例如2024-06-02 17:27:10",
customerBody.put("updateTime", updatetime);//"更新时间例如2024-06-02 17:27:10", customerBody.put("updateTime", updatetime);//"更新时间例如2024-06-02 17:27:10",
customerBody.put("def1", "租赁客户");//"客商类别:默认租赁客户", customerBody.put("def1", "采购供应商");//"客商类别:默认租赁客户",
JSONArray custBankaccMapBody = new JSONArray(); JSONArray custBankaccMapBody = new JSONArray();
//银行信息 //银行信息

View File

@ -99,6 +99,7 @@ public class OAUtils {
DynamicObject officialSupplier = BusinessDataServiceHelper.loadSingle(RESM_OFFICIAL_SUPPLIER, new QFilter[]{q}); DynamicObject officialSupplier = BusinessDataServiceHelper.loadSingle(RESM_OFFICIAL_SUPPLIER, new QFilter[]{q});
if (officialSupplier != null) { if (officialSupplier != null) {
officialSupplier.set("qeug_oacode", id); officialSupplier.set("qeug_oacode", id);
officialSupplier.set("number", id);
SaveServiceHelper.save(new DynamicObject[]{officialSupplier}); SaveServiceHelper.save(new DynamicObject[]{officialSupplier});
} }
} }