From 11e4469de377d53a636008bf514c066b7cc824fb Mon Sep 17 00:00:00 2001 From: bang Date: Sat, 15 Feb 2025 15:48:23 +0800 Subject: [PATCH] =?UTF-8?q?lb=EF=BC=9A=E5=AD=97=E6=AE=B5=E6=A0=87=E8=AF=86?= =?UTF-8?q?=E5=BA=93=20=E5=AE=9A=E6=97=B6=E6=9B=B4=E6=96=B0=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/FieldKeyStoreUpdateTaskPlugin.java | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 yem-base/yem-base-common/src/main/java/yem/base/common/module/meta/task/FieldKeyStoreUpdateTaskPlugin.java diff --git a/yem-base/yem-base-common/src/main/java/yem/base/common/module/meta/task/FieldKeyStoreUpdateTaskPlugin.java b/yem-base/yem-base-common/src/main/java/yem/base/common/module/meta/task/FieldKeyStoreUpdateTaskPlugin.java new file mode 100644 index 0000000..58444ff --- /dev/null +++ b/yem-base/yem-base-common/src/main/java/yem/base/common/module/meta/task/FieldKeyStoreUpdateTaskPlugin.java @@ -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 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 creatNewList = new ArrayList<>(); + // 定义List 用以收集 涉及到的表单ID + List 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()); + } +} \ No newline at end of file