From f875770855cd6ea3cbfd8a877991b47cebc0960f Mon Sep 17 00:00:00 2001 From: pan-houxiang <2663608154@qq.com> Date: Wed, 10 Dec 2025 17:50:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BF=9D=E5=AD=98=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E7=B1=BB(MaterialSaveClosePlugin),=E4=B8=AA=E6=80=A7?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E7=BD=AE=E4=B8=BAfalse=E7=94=A8save=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E4=BF=9D=E5=AD=98(MaterialSaveOp),=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E7=82=B9=E5=87=BB=E5=85=B3=E9=97=AD=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E5=B0=86=E5=B7=B2=E5=85=B3=E9=97=AD=E6=95=B0?= =?UTF-8?q?=E9=87=8F=3D=E6=95=B0=E9=87=8F-=E5=B7=B2=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E6=95=B0=E9=87=8F(PurOlderCloseCountOp)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/sys/MaterialSaveClosePlugin.java | 59 ------------------- .../operate/pm/PurOlderCloseCountOp.java | 38 ++++++++++++ .../plugin/operate/sys/MaterialSaveOp.java | 9 +-- 3 files changed, 40 insertions(+), 66 deletions(-) delete mode 100644 lc123/cloud/app/plugin/form/sys/MaterialSaveClosePlugin.java create mode 100644 lc123/cloud/app/plugin/operate/pm/PurOlderCloseCountOp.java diff --git a/lc123/cloud/app/plugin/form/sys/MaterialSaveClosePlugin.java b/lc123/cloud/app/plugin/form/sys/MaterialSaveClosePlugin.java deleted file mode 100644 index 67ff9b5..0000000 --- a/lc123/cloud/app/plugin/form/sys/MaterialSaveClosePlugin.java +++ /dev/null @@ -1,59 +0,0 @@ -package tqq9.lc123.cloud.app.plugin.form.sys; - -import kd.bos.bill.AbstractBillPlugIn; -import kd.bos.dataentity.OperateOption; -import kd.bos.dataentity.entity.DynamicObject; -import kd.bos.dataentity.resource.ResManager; -import kd.bos.dataentity.utils.StringUtils; -import kd.bos.entity.operate.result.OperationResult; -import kd.bos.form.IFormView; -import kd.bos.form.events.BeforeDoOperationEventArgs; -import kd.bos.form.operate.FormOperate; -import kd.bos.logging.Log; -import kd.bos.logging.LogFactory; -import kd.bos.orm.query.QFilter; -import kd.bos.servicehelper.BusinessDataServiceHelper; -import kd.bos.servicehelper.operation.OperationServiceHelper; -import kd.sdk.plugin.Plugin; -import tqq9.lc123.cloud.app.plugin.operate.sys.MaterialSaveOp; - -/** - * 单据界面插件 - * 物料保存后关闭单据的插件 - */ -public class MaterialSaveClosePlugin extends AbstractBillPlugIn implements Plugin { - private static final Log log = LogFactory.getLog(MaterialSaveClosePlugin.class); - @Override - public void beforeDoOperation(BeforeDoOperationEventArgs args) { - super.beforeDoOperation(args); - FormOperate operation = (FormOperate) args.getSource(); - String key = operation.getOperateKey(); - if (StringUtils.equals("save", key)) { - args.setCancel(Boolean.TRUE); - //保存校验 当前单据数据 - DynamicObject dataEntity = this.getModel().getDataEntity(true); - OperationResult result = OperationServiceHelper.executeOperate("save", "bd_material", new DynamicObject[]{dataEntity}, OperateOption.create()); - if (result.isSuccess()) { - log.info(dataEntity.getString("number") + "保存成功"); - } else { - getView().showErrorNotification("保存失败"); - log.info(dataEntity.getString("number") + "保存失败,原因:" + result); - return; - } - } - // 弹出操作成功提示消息 - boolean showInParentView = true; - IFormView view = this.getView().getViewNoPlugin(this.getView().getFormShowParameter().getParentPageId()); - if (view == null) { - view = this.getView(); - showInParentView = false; - } - view.showSuccessNotification(String.format(ResManager.loadKDString("保存成功", "DefaultEntityOperate_5", "bos-entity-business", new Object[0]), operation.getOperateName().toString())); - if (showInParentView) { - this.getView().sendFormAction(view); - } - this.getModel().setDataChanged(Boolean.FALSE); - // 关闭新增窗口 - this.getView().close(); - } -} \ No newline at end of file diff --git a/lc123/cloud/app/plugin/operate/pm/PurOlderCloseCountOp.java b/lc123/cloud/app/plugin/operate/pm/PurOlderCloseCountOp.java new file mode 100644 index 0000000..7c48eb8 --- /dev/null +++ b/lc123/cloud/app/plugin/operate/pm/PurOlderCloseCountOp.java @@ -0,0 +1,38 @@ +package tqq9.lc123.cloud.app.plugin.operate.pm; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.args.BeforeOperationArgs; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.sdk.plugin.Plugin; + +/** + * 单据操作插件 + * 采购单点击关闭操作后,将已关闭数量=数量-已入库数量 + */ +public class PurOlderCloseCountOp extends AbstractOperationServicePlugIn implements Plugin { + + @Override + public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { + super.beforeExecuteOperationTransaction(e); + DynamicObject[] dataEntities = e.getDataEntities(); + String operationKey = e.getOperationKey(); + if(dataEntities.length>0 && "bizclose".equals(operationKey)){ + for(DynamicObject purOlder:dataEntities){ + purOlder = BusinessDataServiceHelper.loadSingle(purOlder.getPkValue(), "pm_purorderbill"); + DynamicObjectCollection billentry = purOlder.getDynamicObjectCollection("billentry"); + if(billentry.size()>0){ + for (DynamicObject dynamicObject : billentry) { + Integer invqty = dynamicObject.getInt("invqty");//已入库数量 + Integer qty = dynamicObject.getInt("qty");//数量 + Integer tqq9_qtyfield = qty-invqty;//已关闭数量 + dynamicObject.set("tqq9_qtyfield",tqq9_qtyfield); + } + SaveServiceHelper.save(new DynamicObject[]{purOlder}); + } + } + } + } +} \ No newline at end of file diff --git a/lc123/cloud/app/plugin/operate/sys/MaterialSaveOp.java b/lc123/cloud/app/plugin/operate/sys/MaterialSaveOp.java index e43a491..b40a998 100644 --- a/lc123/cloud/app/plugin/operate/sys/MaterialSaveOp.java +++ b/lc123/cloud/app/plugin/operate/sys/MaterialSaveOp.java @@ -9,6 +9,7 @@ import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.sdk.plugin.Plugin; /** @@ -26,13 +27,7 @@ public class MaterialSaveOp extends AbstractOperationServicePlugIn implements Pl for (DynamicObject material : dataEntities) { material = BusinessDataServiceHelper.loadSingle(material.getPkValue(), material.getDynamicObjectType().getName()); material.set("tqq9_checkboxfield", false); - OperationResult opResult = OperationServiceHelper.executeOperate("save", "bd_material", new DynamicObject[]{material}, OperateOption.create()); - if (opResult.isSuccess()) { - log.info( material.getString("number")+"保存成功"); - } - else { - log.info( material.getString("number")+"保存失败"); - } + SaveServiceHelper.save(new DynamicObject[]{material}); } } }