From 3102944a7d59ae8f952e45f3ca39c00142ba885e Mon Sep 17 00:00:00 2001 From: chenshaoxin <1981897232@qq.com> Date: Wed, 21 May 2025 11:30:11 +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/19=2010?= =?UTF-8?q?=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E7=90=86=E8=B4=A2=E6=94=B6?= =?UTF-8?q?=E7=9B=8A=E6=98=8E=E7=BB=86=E8=A1=A8=E6=8B=93=E5=B1=95=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/sys/plugin/operation/BankSaveOP.java | 126 ++++++++++-------- 1 file changed, 67 insertions(+), 59 deletions(-) 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 cee4318..b3bb7f8 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 @@ -43,76 +43,84 @@ 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=qFilter.or(qFilter1); + try { + 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=qFilter.or(qFilter1); + } + } } - } - logger.info("进入banksavef方法"); - List ids = Arrays.stream(dataEntities) // 将数组转换为 Stream - .map(entity -> (String) entity.get("billno")) // 提取每个元素的 id - .collect(Collectors.toList()); // 收集到 List 中 - logger.info("入参:"+ids.toString()); - if(dataEntities != null && dataEntities.length != 0) { + logger.info("进入banksavef方法"); + List ids = Arrays.stream(dataEntities) // 将数组转换为 Stream + .map(entity -> (String) entity.get("billno")) // 提取每个元素的 id + .collect(Collectors.toList()); // 收集到 List 中 + logger.info("入参:"+ids.toString()); + if(dataEntities != null && dataEntities.length != 0) { - for(int i = 0;i < dataEntities.length;i ++) { + for(int i = 0;i < dataEntities.length;i ++) { - DynamicObject dynamicObject = dataEntities[i]; - String description = dynamicObject.getString("description"); - if (qFilter!=null){ - String sql = qFilter.toString(); - String replaced = sql.replace("description", "'"+description+"'"); - String selsql = " /*dialect*/ 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方法直接赋值失败"); + DynamicObject dynamicObject = dataEntities[i]; + String description = dynamicObject.getString("description"); + if (qFilter!=null){ + String sql = qFilter.toString(); + String replaced = sql.replace("description", "'"+description+"'"); + String selsql = " /*dialect*/ 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); //数据赋值 + logger.info("单据编号"+dynamicObject.getString("billno")+"进入banksavef方法直接赋值成功"); + } catch (Exception ex) { + logger.info("进入banksavef方法直接赋值失败"); + } } } - } - if(dynamicObject != null) { - //通过基础资料或单据标识 的id 获取数据 - QFilter newqFilter =new QFilter("id", QCP.equals,dynamicObject.getPkValue()); - if (qFilter!=null){ - qFilter=qFilter.and(newqFilter); - }else { - qFilter=newqFilter; - } -// 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()+"未找到"); - } + if(dynamicObject != null) { + //通过基础资料或单据标识 的id 获取数据 + QFilter newqFilter =new QFilter("billno", QCP.equals,dynamicObject.getString("billno")); + if (qFilter!=null){ + qFilter=qFilter.and(newqFilter); + }else { + qFilter=newqFilter; + } + DynamicObject bei_transdetail = BusinessDataServiceHelper.loadSingle("bei_transdetail", "id,billno,description,kdretflag", qFilter.toArray()); +// DynamicObject bei_transdetail_cas = BusinessDataServiceHelper.loadSingle(dynamicObject.getDynamicObjectType().toString(), "id,billno,description,kdretflag", qFilter.toArray()); + if(bei_transdetail != null ) { + bei_transdetail.set("kdretflag", null); //数据赋值 +// bei_transdetail_cas.set("kdretflag", null); //数据赋值 + SaveServiceHelper.save(new DynamicObject[] {bei_transdetail}); +// SaveServiceHelper.save(new DynamicObject[] {bei_transdetail_cas}); + logger.info("bei_transdetail:"+dynamicObject.toString()+"赋值成功"); + }else { + logger.info("dynamicObject:"+dynamicObject.toString()+"未找到"); + } + } + dataEntities[i]=dynamicObject; } - dataEntities[i]=dynamicObject; } } + } catch (Exception ex) { + logger.error("banksave方法错误原因:"+ex.getMessage()); + throw new RuntimeException(ex); } e.setDataEntities(dataEntities); }