From ab1165feb634801a7a5c10b4cb687a4910e337c2 Mon Sep 17 00:00:00 2001 From: chenshaoxin <1981897232@qq.com> Date: Thu, 15 May 2025 16:04:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=99=88?= =?UTF-8?q?=E7=BB=8D=E9=91=AB=20=E6=97=A5=E6=9C=9F=EF=BC=9A2025/5/15=2016?= =?UTF-8?q?=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E8=B4=A6=E6=88=B7=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E6=9F=A5=E8=AF=A2=E4=BF=9D=E5=AD=98=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/plugin/form/banksavekdFormPlugin.java | 2 +- .../sys/sys/plugin/operation/BankSaveOP.java | 63 ++++++++++++++++--- 2 files changed, 55 insertions(+), 10 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/banksavekdFormPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/banksavekdFormPlugin.java index 49aa8bc..4e1ee79 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/banksavekdFormPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/banksavekdFormPlugin.java @@ -39,7 +39,7 @@ public class banksavekdFormPlugin extends AbstractFormPlugin { filterGrid.setEntityNumber("bei_transdetail"); List keys = new ArrayList<>(); keys.add("description");//编码,这个可以添加为过滤字段 - keys.add("billno");//商品标签,多选基础资料,无法添加为过滤字段 +// keys.add("billno");//商品标签,多选基础资料,无法添加为过滤字段 filterGrid.setFilterFieldKeys(keys); } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/BankSaveOP.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/BankSaveOP.java index 8a23f7e..27cb7d1 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/BankSaveOP.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/BankSaveOP.java @@ -1,13 +1,27 @@ 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.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.MainEntityType; +import kd.bos.entity.filter.FilterBuilder; +import kd.bos.entity.filter.FilterCondition; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.PreparePropertysEventArgs; import kd.bos.entity.plugin.args.AfterOperationArgs; import kd.bos.entity.plugin.args.BeforeOperationArgs; import kd.bos.logging.Log; 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.operation.SaveServiceHelper; import shkd.sys.sys.plugin.report.FinanceReportPlugin; @@ -29,8 +43,29 @@ public class BankSaveOP extends AbstractOperationServicePlugIn { super.beforeExecuteOperationTransaction(e); DynamicObject[] dataEntities = e.getDataEntities(); - 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方法"); List ids = Arrays.stream(dataEntities) // 将数组转换为 Stream .map(entity -> (String) entity.get("billno")) // 提取每个元素的 id @@ -41,21 +76,31 @@ public class BankSaveOP extends AbstractOperationServicePlugIn { for(int i = 0;i < dataEntities.length;i ++) { DynamicObject dynamicObject = dataEntities[i]; - try { - dynamicObject.set("kdretflag", null); //数据赋值 - } catch (Exception ex) { - logger.info("进入banksavef方法赋值失败"); + String description = dynamicObject.getString("description"); + String sql = qFilter.toString(); + String replaced = sql.replace("description", "'"+description+"'"); + 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) { //通过基础资料或单据标识 的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 ) { bei_transdetail.set("kdretflag", null); //数据赋值 SaveServiceHelper.save(new DynamicObject[] {bei_transdetail}); - - + }else { + logger.info("dynamicObject:"+dynamicObject.toString()+"未找到"); } }