Merge branch 'main' of http://39.98.69.61:22174/yem_rabbit_lhb/Cosmic_YEMStandard into yem_rabbit_lhb
This commit is contained in:
commit
678508f626
@ -7,6 +7,7 @@ import kd.bos.cache.CacheFactory;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.entity.LocaleString;
|
||||
import kd.bos.dataentity.resource.ResManager;
|
||||
import kd.bos.entity.EntityMetadataCache;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
@ -21,12 +22,17 @@ import kd.bos.form.control.AttachmentPanel;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||
import kd.bos.form.field.ComboEdit;
|
||||
import kd.bos.form.field.ComboItem;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.lang.Lang;
|
||||
import kd.bos.metadata.dao.MetaCategory;
|
||||
import kd.bos.metadata.dao.MetadataDao;
|
||||
import kd.bos.metadata.form.ControlAp;
|
||||
import kd.bos.metadata.form.FormMetadata;
|
||||
import kd.bos.metadata.form.control.AttachmentPanelAp;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.user.UserServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
@ -49,7 +55,26 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
super.afterCreateNewData(e);
|
||||
initData();
|
||||
IFormView parentView = this.getView().getParentView();
|
||||
String parentFormName = parentView.getModel().getDataEntity().getDataEntityType().getName();
|
||||
DynamicObject orgBillObject = BusinessDataServiceHelper.loadSingle("bos_entityobject",
|
||||
new QFilter[]{new QFilter("number", QCP.equals, parentFormName)});
|
||||
this.getView().getModel().setValue("yem_srcentity",orgBillObject);
|
||||
this.getView().setEnable(false,"yem_srcentity");
|
||||
Map<String,String> attachControl = getAttachControl(parentFormName);
|
||||
Set<String> attachControlKey = attachControl.keySet();
|
||||
// 初始化 [目标面板]下拉列表项集合
|
||||
String currLCId = Lang.get().toString();// 获取当前语言代码
|
||||
List<ComboItem> entryItems = new ArrayList<>();
|
||||
for (String name : attachControlKey) {
|
||||
ComboItem comboItem = new ComboItem();
|
||||
comboItem.setValue(attachControl.get(name));
|
||||
comboItem.setCaption(new LocaleString(currLCId, "" + name));
|
||||
entryItems.add(comboItem);
|
||||
}
|
||||
ComboEdit yemTargetkey = this.getControl("yem_targetkey");
|
||||
yemTargetkey.setComboItems(entryItems);
|
||||
initData(attachControlKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -58,7 +83,11 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin
|
||||
String operateKey = e.getOperateKey();
|
||||
switch(operateKey){
|
||||
case "refreshentry": // 刷新自动重新从父页面更新PDF文件明细
|
||||
initData();
|
||||
IFormView parentView = this.getView().getParentView();
|
||||
String parentFormName = parentView.getModel().getDataEntity().getDataEntityType().getName();
|
||||
Map<String,String> attachControl = getAttachControl(parentFormName);
|
||||
Set<String> attachControlKey = attachControl.keySet();
|
||||
initData(attachControlKey);
|
||||
break;
|
||||
default :
|
||||
break;
|
||||
@ -68,29 +97,26 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin
|
||||
/**
|
||||
* PDF文件合并界面初始化
|
||||
* */
|
||||
private void initData(){
|
||||
private void initData(Set<String> attachControlKey){
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = view.getModel();
|
||||
IFormView parentView = this.getView().getParentView();
|
||||
// 清除分录
|
||||
model.deleteEntryData("yem_entryentity");
|
||||
FormShowParameter formShowParameter = view.getFormShowParameter();
|
||||
String attachKey = formShowParameter.getCustomParam("srcAttachKey");
|
||||
if (YEM.isEmpty(attachKey))return;
|
||||
IFormView parentView = view.getParentView();
|
||||
if (parentView == null) return;
|
||||
DynamicObject dataEntity = parentView.getModel().getDataEntity();// 源单实体
|
||||
// 获取附件
|
||||
AttachmentPanel panel = parentView.getControl(attachKey);
|
||||
List<Map<String, Object>> attachs = panel.getAttachmentData();
|
||||
DynamicObjectCollection entry = model.getEntryEntity("yem_entryentity");
|
||||
for (Map<String, Object> attach:attachs){
|
||||
String fileName = (String) attach.get("name");
|
||||
String url = (String) attach.get("url");
|
||||
if (YEM.isEmpty(fileName)) continue;
|
||||
if (fileName.endsWith(".pdf") || fileName.endsWith(".PDF")){
|
||||
int row = model.createNewEntryRow("yem_entryentity");
|
||||
model.setValue("yem_attachmentname",fileName,row);
|
||||
model.setValue("yem_url",url,row);
|
||||
for (String attachKey : attachControlKey) {
|
||||
// 获取附件
|
||||
AttachmentPanel panel = parentView.getControl(attachKey);
|
||||
List<Map<String, Object>> attachs = panel.getAttachmentData();
|
||||
DynamicObjectCollection entry = model.getEntryEntity("yem_entryentity");
|
||||
for (Map<String, Object> attach:attachs){
|
||||
String fileName = (String) attach.get("name");
|
||||
String url = (String) attach.get("url");
|
||||
if (YEM.isEmpty(fileName)) continue;
|
||||
if (fileName.endsWith(".pdf") || fileName.endsWith(".PDF")){
|
||||
int row = model.createNewEntryRow("yem_entryentity");
|
||||
model.setValue("yem_attachmentname",fileName,row);
|
||||
model.setValue("yem_url",url,row);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -106,29 +132,31 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin
|
||||
super.click(evt);
|
||||
IFormView view = this.getView();
|
||||
IFormView parentView = view.getParentView();
|
||||
if (parentView == null)return;
|
||||
Control source = (Control) evt.getSource();
|
||||
String key = source.getKey();
|
||||
// 获取需要合并的文件
|
||||
EntryGrid treeEntryEntity = this.getControl("yem_entryentity");
|
||||
String yemTargetkey = (String) view.getModel().getValue("yem_targetkey");
|
||||
int[] rows = treeEntryEntity.getSelectRows();
|
||||
switch(key){
|
||||
case "btnok":
|
||||
if (rows.length == 0 ){
|
||||
this.getView().showErrorNotification(ResManager.loadKDString("请先选择需要合并的附件!", "PDFMergeDynamicPlugin_0", "yem-base"));
|
||||
return;
|
||||
}
|
||||
if (rows.length < 2 ){
|
||||
this.getView().showErrorNotification(ResManager.loadKDString("请至少选择两个文件进行合并!", "PDFMergeDynamicPlugin_1", "yem-base"));
|
||||
return;
|
||||
}
|
||||
if (YEM.isEmpty(yemTargetkey)){
|
||||
this.getView().showErrorNotification(ResManager.loadKDString("请先选择合并附件的目标面板!", "PDFMergeDynamicPlugin_0", "yem-base"));
|
||||
return;
|
||||
}
|
||||
Arrays.sort(rows);
|
||||
try {
|
||||
mergeCreateFile(rows);
|
||||
mergeCreateFile(rows,yemTargetkey);
|
||||
} catch (IOException e) {
|
||||
this.getView().showErrorNotification(ResManager.loadKDString("文件合并失败!", "PDFMergeDynamicPlugin_2", "yem-base"));
|
||||
return;
|
||||
}
|
||||
view.returnDataToParent("success");
|
||||
view.returnDataToParent(yemTargetkey);
|
||||
view.close();
|
||||
break;
|
||||
case "btncancel":
|
||||
@ -144,12 +172,9 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin
|
||||
|
||||
|
||||
// 合并生成文件并回传至源单
|
||||
private void mergeCreateFile(int[] rows) throws IOException {
|
||||
private void mergeCreateFile(int[] rows ,String yemTargetkey ) throws IOException {
|
||||
// 获取源单数据
|
||||
FormShowParameter formShowParameter = this.getView().getFormShowParameter();
|
||||
String attachKey = formShowParameter.getCustomParam("targetAttachKey");
|
||||
IFormView parentView = this.getView().getParentView();
|
||||
if (YEM.isEmpty(attachKey) || parentView == null)return;
|
||||
DynamicObject obj = parentView.getModel().getDataEntity();// 源单实体
|
||||
SimpleDateFormat format = new SimpleDateFormat("HHmmss");
|
||||
String date = format.format(new Date());
|
||||
@ -219,7 +244,7 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin
|
||||
attachMap.put("creator", user == null ? "金小蝶":user.getString("name"));
|
||||
attachMap.put("description", "");//description
|
||||
attachMap.put("type", "pdf");
|
||||
attachMap.put("fattachmentpanel",attachKey);
|
||||
attachMap.put("fattachmentpanel",yemTargetkey);
|
||||
attachMap.put("entityNum", "");
|
||||
attachMap.put("billPkId", 0L);
|
||||
attachMap.put("billno", "");
|
||||
@ -227,9 +252,9 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin
|
||||
attachMap.put("endProgress", true);
|
||||
attachMap.put("filesource", 1);
|
||||
attachDataList.add(attachMap);
|
||||
AttachmentPanel control = this.getView().getParentView().getControl(attachKey);
|
||||
AttachmentPanel control = this.getView().getParentView().getControl(yemTargetkey);
|
||||
control.upload(attachDataList);
|
||||
this.getView().getParentView().updateView(attachKey);
|
||||
this.getView().getParentView().updateView(yemTargetkey);
|
||||
}
|
||||
|
||||
|
||||
@ -286,19 +311,20 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin
|
||||
|
||||
|
||||
/**
|
||||
* 获取源单实体所有附件面板的key
|
||||
* 获取源单实体所有附件面板的key\name
|
||||
* @param formName 源单标识
|
||||
* */
|
||||
private List<String> getAttachControl(String formName){
|
||||
private Map<String,String> getAttachControl(String formName){
|
||||
MainEntityType entityType = EntityMetadataCache.getDataEntityType(formName);
|
||||
FormMetadata taskMeta = (FormMetadata) MetadataDao.readRuntimeMeta(MetadataDao.getIdByNumber(
|
||||
entityType.getName(), MetaCategory.Form), MetaCategory.Form);
|
||||
List<ControlAp<?>> items = taskMeta.getItems();
|
||||
// 附件面板标识集合。
|
||||
List<String> attachmentPanelAp = new ArrayList<>();
|
||||
Map<String,String> attachmentPanelAp = new HashMap<>();
|
||||
items.forEach(item ->{
|
||||
if(item instanceof AttachmentPanelAp){
|
||||
attachmentPanelAp.add(item.getKey());
|
||||
AttachmentPanelAp attachmentPanel = (AttachmentPanelAp) item;
|
||||
attachmentPanelAp.put(String.valueOf(attachmentPanel.getName()),attachmentPanel.getKey());
|
||||
}
|
||||
});
|
||||
return attachmentPanelAp;
|
||||
|
@ -0,0 +1,97 @@
|
||||
package yem.base.common.module.attach.form;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.bill.OperationStatus;
|
||||
import kd.bos.dataentity.resource.ResManager;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.form.CloseCallBack;
|
||||
import kd.bos.form.FormShowParameter;
|
||||
import kd.bos.form.ShowType;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||
import kd.bos.form.events.ClosedCallBackEvent;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import yem.base.common.utils.YEM;
|
||||
|
||||
import java.util.EventObject;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 单据界面插件
|
||||
*/
|
||||
public class PDFMergeFormPlugin extends AbstractBillPlugIn implements Plugin {
|
||||
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
Control control = this.getView().getControl("yem_pdf_merge");
|
||||
if (control != null){
|
||||
this.addClickListeners("yem_pdf_merge");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
super.click(evt);
|
||||
Control source = (Control) evt.getSource();
|
||||
String key = source.getKey();
|
||||
if ("yem_pdf_merge".equals(key)){
|
||||
FormShowParameter showParameter = new FormShowParameter();
|
||||
showParameter.setStatus(OperationStatus.ADDNEW);
|
||||
showParameter.getOpenStyle().setShowType(ShowType.Modal);
|
||||
showParameter.setFormId("yem_base_pdfmerge");
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("srcAttachKey", "attachmentpanel");
|
||||
map.put("targetAttachKey", "signattachment");
|
||||
showParameter.setCustomParams(map);
|
||||
showParameter.setCloseCallBack(new CloseCallBack(this.getClass().getName(),"yem_base_pdfmerge"));
|
||||
this.getView().showForm(showParameter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterDoOperation(AfterDoOperationEventArgs e) {
|
||||
super.afterDoOperation(e);
|
||||
String operateKey = e.getOperateKey();
|
||||
OperationResult operationResult = e.getOperationResult();
|
||||
if (!operationResult.isSuccess())return;
|
||||
switch(operateKey){
|
||||
case "filemerge":// 附件合并
|
||||
showFileMergePage();
|
||||
break;
|
||||
default :
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 打开附件合并界面
|
||||
private void showFileMergePage(){
|
||||
FormShowParameter showParameter = new FormShowParameter();
|
||||
showParameter.setStatus(OperationStatus.ADDNEW);
|
||||
showParameter.getOpenStyle().setShowType(ShowType.Modal);
|
||||
showParameter.setFormId("yem_base_pdfmerge");
|
||||
showParameter.setCloseCallBack(new CloseCallBack(this.getClass().getName(),"yem_base_pdfmerge"));
|
||||
this.getView().showForm(showParameter);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void closedCallBack(ClosedCallBackEvent e) {
|
||||
super.closedCallBack(e);
|
||||
String actionId = e.getActionId();
|
||||
if ("yem_base_pdfmerge".equals(actionId)) {
|
||||
// 返回目标附件面板key
|
||||
String returnData = (String) e.getReturnData();
|
||||
if (!YEM.isEmpty(returnData)){
|
||||
// 刷新附件面板
|
||||
this.getView().updateView(returnData);
|
||||
this.getView().showSuccessNotification(ResManager.loadKDString("合并PDF文件成功!", "PDFMergeFormPlugin_0", "yem-base"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package yem.base.common.module.meta.list;
|
||||
|
||||
import com.alibaba.druid.util.StringUtils;
|
||||
import kd.bos.form.ShowType;
|
||||
import kd.bos.form.control.events.ItemClickEvent;
|
||||
import kd.bos.list.plugin.AbstractListPlugin;
|
||||
import kd.bos.report.ReportShowParameter;
|
||||
|
||||
|
||||
/**
|
||||
* 字段标识库 列表插件
|
||||
*/
|
||||
public class FieldKeyStoreList extends AbstractListPlugin {
|
||||
|
||||
@Override
|
||||
public void itemClick(ItemClickEvent evt) {
|
||||
super.itemClick(evt);
|
||||
String key = evt.getItemKey();
|
||||
if (StringUtils.equals("yem_barrptdiff", key)) { //异常字段查询
|
||||
//获得报表显示参数
|
||||
ReportShowParameter reportShowParameter = new ReportShowParameter();
|
||||
//设置报表标识
|
||||
reportShowParameter.setFormId("yem_base_filekeydiff");
|
||||
//设置弹出页面的打开方式
|
||||
reportShowParameter.getOpenStyle().setShowType(ShowType.Modal);
|
||||
//绑定子页面到当前页面
|
||||
this.getView().showForm(reportShowParameter);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,159 @@
|
||||
package yem.base.common.module.meta.report;
|
||||
|
||||
import kd.bos.algo.*;
|
||||
import kd.bos.algo.input.CollectionInput;
|
||||
import kd.bos.entity.report.AbstractReportListDataPlugin;
|
||||
import kd.bos.entity.report.ReportQueryParam;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 异常字段表 数据包插件
|
||||
*/
|
||||
public class FileKeyDiffRptListDataPlugin extends AbstractReportListDataPlugin {
|
||||
|
||||
private static final String algoKey = "FileKeyDiffListDataPlugin";
|
||||
public static final DataType[] DATATYPESXS = {
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType,
|
||||
DataType.StringType };
|
||||
public static final String[] FIELDSXS = {
|
||||
"yem_bizcloudname",
|
||||
"yem_appname",
|
||||
"yem_entitykey",
|
||||
"yem_entityname",
|
||||
"yem_modeltype",
|
||||
"yem_parentname",
|
||||
"yem_entitysname",
|
||||
"yem_fieldnumber",
|
||||
"yem_fieldnumbers",
|
||||
"yem_aliasname",
|
||||
"yem_fieldname",
|
||||
"yem_fieldnames",
|
||||
"yem_datatype",
|
||||
"yem_fieldtype",
|
||||
"yem_basedatatype",
|
||||
"yem_textfield1"};
|
||||
|
||||
@Override
|
||||
public DataSet query(ReportQueryParam queryParam, Object o) throws Throwable {
|
||||
|
||||
// 创建显示行字段
|
||||
Collection<Object[]> coll = new ArrayList<>();
|
||||
RowMeta createRowMeta = RowMetaFactory.createRowMeta(FIELDSXS, DATATYPESXS);//字段集合
|
||||
CollectionInput collectionInput = new CollectionInput(createRowMeta, coll);
|
||||
DataSet createDataSet = Algo.create(algoKey).createDataSet(collectionInput);//数据集合
|
||||
|
||||
// // 获取过滤
|
||||
// List<FilterItemInfo> filters = queryParam.getFilter().getFilterItems();
|
||||
// String tpv_ordernumm = null;
|
||||
// for (FilterItemInfo filterItem : filters) {
|
||||
// switch (filterItem.getPropName()) {
|
||||
// case "tpv_ordernumm":
|
||||
// tpv_ordernumm = filterItem.getString();
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
List<QFilter> filterList1 = new ArrayList<>();
|
||||
filterList1.add(new QFilter("yem_fieldnumber", QCP.not_equals2, "billno"));
|
||||
filterList1.add(new QFilter("yem_fieldnumber", QCP.not_equals2, "id"));
|
||||
filterList1.add(new QFilter("yem_fieldnumber", QCP.not_equals2, "org"));
|
||||
filterList1.add(new QFilter("yem_fieldnumber", QCP.not_equals2, "seq"));
|
||||
|
||||
DataSet dataSet1 = QueryServiceHelper.queryDataSet(algoKey, "yem_base_fieldkeystore",
|
||||
"id,yem_bizcloudname ,yem_appname, yem_entitykey , yem_entityname, yem_modeltype, yem_parentname," +
|
||||
" yem_entitysname, yem_fieldnumber, yem_fieldnumbers, yem_aliasname, yem_fieldname, yem_fieldnames ," +
|
||||
" yem_datatype, yem_fieldtype, yem_basedatatype"
|
||||
,filterList1.toArray(new QFilter[0]), "yem_fieldname desc");
|
||||
GroupbyDataSet groupby1 = dataSet1.groupBy(new String[]{"yem_fieldnumber","yem_aliasname","yem_fieldname","yem_fieldnames"});
|
||||
groupby1.minP("id","yem_bizcloudname");
|
||||
groupby1.minP("id","yem_appname");
|
||||
groupby1.minP("id","yem_entitykey");
|
||||
groupby1.minP("id","yem_entityname");
|
||||
groupby1.minP("id","yem_modeltype");
|
||||
groupby1.minP("id","yem_parentname");
|
||||
groupby1.minP("id","yem_entitysname");
|
||||
groupby1.minP("id","yem_datatype");
|
||||
groupby1.minP("id","yem_fieldtype");
|
||||
groupby1.minP("id","yem_basedatatype");
|
||||
groupby1.minP("id","yem_fieldnumbers");
|
||||
groupby1.count("yem_textfield1");
|
||||
DataSet dataSet2 = groupby1.finish(); //构造完毕,返回DataSet
|
||||
dataSet2 = dataSet2.orderBy(new String[]{"yem_fieldnames"});
|
||||
|
||||
DataSet dataSet3 = dataSet2.copy();
|
||||
dataSet3 = dataSet3.select("yem_fieldnames as yem_fieldnames2");
|
||||
GroupbyDataSet groupby2 = dataSet3.groupBy(new String[]{"yem_fieldnames2"});
|
||||
groupby2.count("yem_count");
|
||||
DataSet dataSet4 = groupby2.finish(); //构造完毕,返回DataSet
|
||||
dataSet4 = dataSet4.where("yem_count>1");
|
||||
|
||||
DataSet dataSet5 = dataSet4.join(dataSet2,JoinType.INNER).on("yem_fieldnames2", "yem_fieldnames")
|
||||
.select("yem_bizcloudname", "yem_appname", "yem_entitykey","yem_entityname", "yem_modeltype",
|
||||
"yem_parentname", "yem_entitysname", "yem_fieldnumber","yem_fieldnumbers", "yem_aliasname",
|
||||
"yem_fieldname", "yem_fieldnames", "yem_datatype","yem_fieldtype", "yem_basedatatype","yem_textfield1")
|
||||
.finish();
|
||||
|
||||
DataSet dataSetfinal = dataSet5.copy();
|
||||
for (Row row : dataSetfinal) {
|
||||
String yem_bizcloudname = row.getString("yem_bizcloudname");
|
||||
String yem_appname = row.getString("yem_appname");
|
||||
String yem_entitykey = row.getString("yem_entitykey");
|
||||
String yem_entityname = row.getString("yem_entityname");
|
||||
String yem_modeltype = row.getString("yem_modeltype");
|
||||
String yem_parentname = row.getString("yem_parentname");
|
||||
String yem_entitysname = row.getString("yem_entitysname");
|
||||
String yem_fieldnumber = row.getString("yem_fieldnumber");
|
||||
String yem_fieldnumbers = row.getString("yem_fieldnumbers");
|
||||
String yem_aliasname = row.getString("yem_aliasname");
|
||||
String yem_fieldname = row.getString("yem_fieldname");
|
||||
String yem_fieldnames = row.getString("yem_fieldnames");
|
||||
String yem_datatype = row.getString("yem_datatype");
|
||||
String yem_fieldtype = row.getString("yem_fieldtype");
|
||||
String yem_basedatatype = row.getString("yem_basedatatype");
|
||||
String yem_textfield1 = row.getString("yem_textfield1");
|
||||
|
||||
Object[] tempData = new Object[FIELDSXS.length];
|
||||
tempData[0] = yem_bizcloudname;
|
||||
tempData[1] = yem_appname;
|
||||
tempData[2] = yem_entitykey;
|
||||
tempData[3] = yem_entityname;
|
||||
tempData[4] = yem_modeltype;
|
||||
tempData[5] = yem_parentname;
|
||||
tempData[6] = yem_entitysname;
|
||||
tempData[7] = yem_fieldnumber;
|
||||
tempData[8] = yem_fieldnumbers;
|
||||
tempData[9] = yem_aliasname;
|
||||
tempData[10] = yem_fieldname;
|
||||
tempData[11] = yem_fieldnames;
|
||||
tempData[12] = yem_datatype;
|
||||
tempData[13] = yem_fieldtype;
|
||||
tempData[14] = yem_basedatatype;
|
||||
tempData[15] = yem_textfield1;
|
||||
|
||||
coll.add(tempData);
|
||||
}
|
||||
|
||||
return createDataSet;
|
||||
}
|
||||
}
|
@ -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());
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package yem.base.common.module.plugin.report;
|
||||
|
||||
import kd.bos.report.filter.ReportFilter;
|
||||
import kd.bos.report.plugin.AbstractReportFormPlugin;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* 异常字段表 表单插件
|
||||
*/
|
||||
public class FileKeyDiffRptFromDataPlugin extends AbstractReportFormPlugin {
|
||||
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
super.afterCreateNewData(e);
|
||||
ReportFilter filter = this.getView().getControl("reportfilterap");
|
||||
filter.search();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user