lb:字段标识库 定时更新插件

This commit is contained in:
bang 2025-02-15 15:48:23 +08:00
parent ece212d849
commit 11e4469de3

View File

@ -0,0 +1,124 @@
package yem.base.common.module.meta.task;
import kd.bos.algo.DataSet;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.report.FilterInfo;
import kd.bos.entity.report.ReportQueryParam;
import kd.bos.exception.KDException;
import kd.bos.orm.ORM;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.schedule.executor.AbstractTask;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.DeleteServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.sdk.plugin.Plugin;
import yem.base.common.module.meta.report.DataDictionaryRptQuery;
import yem.base.common.utils.YEM;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @Description: 字段标识库 定时更新插件
* @author: lib
* @date: 2025/1/9 9:54
*/
public class FieldKeyStoreUpdateTaskPlugin extends AbstractTask implements Plugin {
@Override
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
// 获取参数
String bizcloudkey = (String) map.get("bizcloudkey");// 业务云标识
String appkeys = (String) map.get("appkeys");// 应用标识拼接
if (YEM.isEmpty(bizcloudkey) || YEM.isEmpty(appkeys))return;
String[] appkeyArray = appkeys.split(",");
for (int i = 0; i < appkeyArray.length; i++) {
String appkey = appkeyArray[i];
// 更新数据
try {
updateFieldKeyStore(bizcloudkey,appkey);
} catch (Throwable e) {
throw new KDException(e.getMessage());
}
}
}
/**
* @Description: 查询并更新字段标识库数据
* @function 功能
* 1根据业务云应用标识查询数据字典报表获取对应应用下所有表单元数据项
* 2根据所查结果分别查询每个元数据 对应表单字段
* 3查询字段标识库删除已有对应历史数据创建最新数据
* @purposes 定时任务更新调用
* @param bizcloudkey 业务云标识
* @param appkey 应用标识
* @return void
*/
private void updateFieldKeyStore (String bizcloudkey ,String appkey) throws Throwable {
// 定义List 用以收集 新增的数据
List<DynamicObject> creatNewList = new ArrayList<>();
// 定义List 用以收集 涉及到的表单ID
List<String> billIdList = new ArrayList<>();
// 查询 业务云/应用 的所有元数据实体
DataDictionaryRptQuery report = new DataDictionaryRptQuery();
ReportQueryParam Param = new ReportQueryParam();
FilterInfo filters = Param.getFilter();
filters.addFilterItem("yem_datefilter", "1");
filters.addFilterItem("yem_fbizcloud", bizcloudkey);
filters.addFilterItem("yem_fapp", appkey);
Param.setFilter(filters);
DataSet entityList = report.query(Param, null);
DynamicObjectCollection entityCollection = ORM.create().toPlainDynamicObjectCollection(entityList);
for (DynamicObject entity : entityCollection){
String yemEntityid = entity.getString("yem_entityid");// 表单ID
String yemEntitykey = entity.getString("yem_entitykey");// 表单标识
// 查询 元数据实体 的所有字段信息
DataSet entityFields = DataDictionaryRptQuery.queryDataBill(yemEntitykey);
DynamicObjectCollection fieldsCollection = ORM.create().toPlainDynamicObjectCollection(entityFields);
for(DynamicObject fields : fieldsCollection){
DynamicObject addNew = BusinessDataServiceHelper.newDynamicObject("yem_base_fieldkeystore");
addNew.set("name",yemEntitykey+fields.getString("yem_number2"));//名称
addNew.set("enable", "1");//使用状态
addNew.set("status", "C");//数据状态
addNew.set("yem_bizcloud",entity.getString("yem_bizcloud"));// 业务云ID
addNew.set("yem_bizcloudkey",entity.getString("yem_bizcloudkey"));// 业务云标识
addNew.set("yem_bizcloudname",entity.getString("yem_bizcloudname"));// 业务云名称
addNew.set("yem_appid",entity.getString("yem_appid"));// 应用ID
addNew.set("yem_appkey",entity.getString("yem_appkey"));// 应用标识
addNew.set("yem_appname",entity.getString("yem_appname"));// 应用名称
addNew.set("yem_dbroute",entity.getString("yem_dbroute"));// 数据库标识
addNew.set("yem_entityid",yemEntityid);// 表单ID
addNew.set("yem_entitykey",yemEntitykey);// 表单标识
addNew.set("yem_entityname",entity.getString("yem_entityname"));// 表单名称
addNew.set("yem_modeltype",entity.getString("yem_modeltype"));// 模型类型
addNew.set("yem_isv",entity.getString("yem_isv"));// 开发商标识
addNew.set("yem_parentname",fields.getString("yem_parent2"));// 父实体名称
addNew.set("yem_entitysname",entity.getString("yem_entity2"));// 实体名称
addNew.set("yem_fieldnumber",fields.getString("yem_number2"));// 字段编码
addNew.set("yem_fieldnumbers",fields.getString("yem_fullnumber2"));// 字段全编码
addNew.set("yem_aliasname",fields.getString("yem_alias2"));// 对应数据库字段名
addNew.set("yem_datatype",fields.getString("yem_aliastype2"));// 数据类型
addNew.set("yem_fieldname",fields.getString("yem_name2"));// 字段名称
addNew.set("yem_fieldnames",fields.getString("yem_fullname2"));// 字段全名
addNew.set("yem_fieldtype",fields.getString("yem_datatype2"));// 字段类型
addNew.set("yem_fieldtypekey",fields.getString("yem_datatype_key2"));// 字段类型key
addNew.set("yem_basedatatype",fields.getString("yem_basedatakey2"));// 基础资料类型
creatNewList.add(addNew);
}
billIdList.add(yemEntityid);
}
// 删除 字段标识库 中的历史数据
DeleteServiceHelper.delete("yem_base_fieldkeystore",
new QFilter[]{new QFilter("yem_entityid", QCP.in, billIdList)});
// 保存最新的数据
SaveServiceHelper.saveOperate("save","yem_base_fieldkeystore",
creatNewList.toArray(new DynamicObject[0]), OperateOption.create());
}
}