提交人:陈绍鑫

日期:2025/5/15 16:30
内容:账户明细查询保存操作插件
This commit is contained in:
陈绍鑫 2025-05-15 16:04:27 +08:00
parent 63af6bca0d
commit ab1165feb6
2 changed files with 55 additions and 10 deletions

View File

@ -39,7 +39,7 @@ public class banksavekdFormPlugin extends AbstractFormPlugin {
filterGrid.setEntityNumber("bei_transdetail"); filterGrid.setEntityNumber("bei_transdetail");
List<String> keys = new ArrayList<>(); List<String> keys = new ArrayList<>();
keys.add("description");//编码这个可以添加为过滤字段 keys.add("description");//编码这个可以添加为过滤字段
keys.add("billno");//商品标签多选基础资料无法添加为过滤字段 // keys.add("billno");//商品标签多选基础资料无法添加为过滤字段
filterGrid.setFilterFieldKeys(keys); filterGrid.setFilterFieldKeys(keys);
} }

View File

@ -1,13 +1,27 @@
package shkd.sys.sys.plugin.operation; package shkd.sys.sys.plugin.operation;
import com.alibaba.druid.util.StringUtils;
import kd.bos.algo.DataSet;
import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.serialization.SerializationUtils;
import kd.bos.db.DB;
import kd.bos.db.DBRoute;
import kd.bos.entity.EntityMetadataCache;
import kd.bos.entity.ExtendedDataEntity; import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.MainEntityType;
import kd.bos.entity.filter.FilterBuilder;
import kd.bos.entity.filter.FilterCondition;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.PreparePropertysEventArgs; import kd.bos.entity.plugin.PreparePropertysEventArgs;
import kd.bos.entity.plugin.args.AfterOperationArgs; import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.entity.plugin.args.BeforeOperationArgs; import kd.bos.entity.plugin.args.BeforeOperationArgs;
import kd.bos.logging.Log; import kd.bos.logging.Log;
import kd.bos.logging.LogFactory; import kd.bos.logging.LogFactory;
import kd.bos.orm.ORM;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QContext;
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 shkd.sys.sys.plugin.report.FinanceReportPlugin; import shkd.sys.sys.plugin.report.FinanceReportPlugin;
@ -29,8 +43,29 @@ public class BankSaveOP extends AbstractOperationServicePlugIn {
super.beforeExecuteOperationTransaction(e); super.beforeExecuteOperationTransaction(e);
DynamicObject[] dataEntities = e.getDataEntities(); DynamicObject[] dataEntities = e.getDataEntities();
if("banksave".equals(e.getOperationKey()) ) { //按钮操作编码 if("banksave".equals(e.getOperationKey()) ) { //按钮操作编码
QFilter filter = new QFilter("billstatus", QCP.equals, "C");
DynamicObject[] shkd_banksavekds = BusinessDataServiceHelper.load("shkd_banksavekd", "id,billno,shkd_filter,shkd_filter_tag", filter.toArray());
QFilter qFilter =null;
for (DynamicObject shkd_banksavekd : shkd_banksavekds) {
String shkd_filter = shkd_banksavekd.getString("shkd_filter_tag");
FilterCondition filterCondition = null;
if (!StringUtils.isEmpty(shkd_filter)) {
filterCondition = SerializationUtils.fromJsonString(shkd_filter, FilterCondition.class);
}
if (filterCondition != null){
MainEntityType mainEntityType = EntityMetadataCache.getDataEntityType("bei_transdetail");
FilterBuilder filterBuilder = new FilterBuilder(mainEntityType, filterCondition);
filterBuilder.buildFilter();
QFilter qFilter1 = filterBuilder.getQFilter();
if (qFilter==null){
qFilter=qFilter1;
}else {
qFilter.or(qFilter1);
}
}
}
logger.info("进入banksavef方法"); logger.info("进入banksavef方法");
List<String> ids = Arrays.stream(dataEntities) // 将数组转换为 Stream List<String> ids = Arrays.stream(dataEntities) // 将数组转换为 Stream
.map(entity -> (String) entity.get("billno")) // 提取每个元素的 id .map(entity -> (String) entity.get("billno")) // 提取每个元素的 id
@ -41,21 +76,31 @@ public class BankSaveOP extends AbstractOperationServicePlugIn {
for(int i = 0;i < dataEntities.length;i ++) { for(int i = 0;i < dataEntities.length;i ++) {
DynamicObject dynamicObject = dataEntities[i]; DynamicObject dynamicObject = dataEntities[i];
try { String description = dynamicObject.getString("description");
dynamicObject.set("kdretflag", null); //数据赋值 String sql = qFilter.toString();
} catch (Exception ex) { String replaced = sql.replace("description", "'"+description+"'");
logger.info("进入banksavef方法赋值失败"); String selsql = "select 1 where "+replaced;
DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), selsql);//财务云
DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(res.copy());
if (srcCollection.size()!=0){
try {
dynamicObject.set("kdretflag", null); //数据赋值
} catch (Exception ex) {
logger.info("进入banksavef方法直接赋值失败");
}
} }
if(dynamicObject != null) { if(dynamicObject != null) {
//通过基础资料或单据标识 的id 获取数据 //通过基础资料或单据标识 的id 获取数据
DynamicObject bei_transdetail = BusinessDataServiceHelper.loadSingle(dynamicObject.getPkValue(), "bei_transdetail"); QFilter newqFilter =new QFilter("id", QCP.equals,dynamicObject.getPkValue());
qFilter.and(newqFilter);
// DynamicObject bei_transdetail = BusinessDataServiceHelper.loadSingle(dynamicObject.getPkValue(), "bei_transdetail");
DynamicObject bei_transdetail = BusinessDataServiceHelper.loadSingle("bei_transdetail", "id,billno,description,kdretflag", qFilter.toArray());
if(bei_transdetail != null ) { if(bei_transdetail != null ) {
bei_transdetail.set("kdretflag", null); //数据赋值 bei_transdetail.set("kdretflag", null); //数据赋值
SaveServiceHelper.save(new DynamicObject[] {bei_transdetail}); SaveServiceHelper.save(new DynamicObject[] {bei_transdetail});
}else {
logger.info("dynamicObject"+dynamicObject.toString()+"未找到");
} }
} }