From 375b55f41ecaa2d0642e37de686e9d5836843176 Mon Sep 17 00:00:00 2001 From: pan-houxiang <2663608154@qq.com> Date: Wed, 26 Nov 2025 11:37:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E8=B0=83=E7=94=A8FL-?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E8=A7=84=E5=88=99=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=9C=A8=E9=87=87=E8=B4=AD=E5=90=88=E5=90=8C=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=B8=AD=202.=E5=85=B6=E4=BB=96=E5=85=A5=E5=BA=93=E5=8D=95?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E4=B8=AD=E6=B7=BB=E5=8A=A0=E5=85=8B=E9=9A=86?= =?UTF-8?q?=E6=8C=89=E9=92=AE=EF=BC=8C=E5=85=8B=E9=9A=86=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E5=B9=B6=E6=9F=A5=E8=AF=A2=E4=B8=8A=E6=B8=B8?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E7=BC=96=E5=8F=B7=E5=88=B0=E5=85=8B=E9=9A=86?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E9=87=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/conm/ConmChangePlugin.java | 103 ++++++++++++++++++ .../form/result/WarehouseReceiptClone.java | 83 ++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java create mode 100644 lc123/cloud/app/plugin/form/result/WarehouseReceiptClone.java diff --git a/lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java b/lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java new file mode 100644 index 0000000..e7e1d09 --- /dev/null +++ b/lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java @@ -0,0 +1,103 @@ +package tqq9.lc123.cloud.app.plugin.form.conm; + +import com.alibaba.fastjson.JSONObject; +import com.bes.gson.Gson; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.operate.FormOperate; +import kd.bos.list.BillList; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; +import tqq9.lc123.cloud.app.eip.iscb.LCLogService; +import tqq9.lc123.cloud.app.eip.iscb.impl.LCLogServiceImpl; +import tqq9.lc123.cloud.app.plugin.utils.HttpRequestUtils; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * 标准单据列表插件 + */ +public class ConmChangePlugin extends AbstractListPlugin implements Plugin { + final static String KEY_OPKEY = "bizchange"; + private static String Change_URL; + private static String FLXT_TOKEN; + + static { + DynamicObject url = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", + new QFilter[]{new QFilter("number", QCP.equals, "FLXT_Change_Url")}); + Change_URL = url != null ? url.getString("name") : null; + DynamicObject token = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", + new QFilter[]{new QFilter("number", QCP.equals, "FLXT_TOKEN")}); + FLXT_TOKEN = token != null ? token.getString("name") : null; + } + + @Override + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + super.beforeDoOperation(args); + FormOperate formOperate = (FormOperate) args.getSource(); + if (StringUtils.equals(KEY_OPKEY, formOperate.getOperateKey())) { + LCLogService lcLogService = new LCLogServiceImpl(); + BillList billlistap = this.getControl("billlistap"); + HashMap params = new HashMap<>(); + HashMap headers = new HashMap<>(); + headers.put("Authorization", FLXT_TOKEN); + ListSelectedRowCollection selectedRows = billlistap.getSelectedRows(); + if (selectedRows != null && selectedRows.size() > 0) { + for (ListSelectedRow listSelectedRow : selectedRows) { + Object primaryKeyValue = listSelectedRow.getPrimaryKeyValue(); //获取单据pkid + DynamicObject dataEntity = BusinessDataServiceHelper.loadSingle("conm_purcontract", + new QFilter[]{new QFilter("id", QCP.equals, primaryKeyValue)}); + DynamicObjectCollection tqq9Entryentity = dataEntity.getDynamicObjectCollection("tqq9_entryentity"); + for (DynamicObject dynamicObject : tqq9Entryentity) {// + DynamicObject tqq9_pur_rebate = dynamicObject.getDynamicObject("tqq9_pur_rebate"); + DynamicObject tqq9_pur_rebate1 = BusinessDataServiceHelper.loadSingle("tqq9_pur_rebate", new QFilter[]{new QFilter("id", QCP.equals, tqq9_pur_rebate.getLong("id"))}); + String id = tqq9_pur_rebate1.getString("id");//获取返利单据id + String tqq9_rebateruleid = tqq9_pur_rebate1.getString("tqq9_rebateruleid");//获取返利规则id + if (tqq9_rebateruleid != null && id != null) { + params.put("id", tqq9_rebateruleid); + } + + Gson gson = new Gson(); + try { + String bodyString = HttpRequestUtils.doGet(Change_URL, params, headers); + JSONObject map = gson.fromJson(bodyString, JSONObject.class); + Integer code = map.getInteger("code"); + if (code == 0) { + lcLogService.savelog("FL-查看规则状态", Change_URL, false, true, params.toString(), bodyString); + Map data = (Map) map.get("data"); + if (data != null) { + Number statusNum = (Number) data.get("status"); + if (statusNum != null) { + int status = statusNum.intValue(); + if (status == -1 || status == 1 || status == 4) { + //终止流程 + this.getView().showErrorNotification("该状态下不允许变更!"); + args.setCancel(true); + return; + } + } + } + } else { + lcLogService.savelog("FL-查看规则状态", Change_URL, false, true, params.toString(), bodyString); + args.setCancel(true); + return; + } + } catch (IOException e) { + lcLogService.savelog("FL-查看规则状态", Change_URL, false, false, params.toString(), "接口调用报错,errormessage:" + e.getMessage()); + throw new RuntimeException(e + ",请求返利系统失败"); + } + } + } + } + } + } +} \ No newline at end of file diff --git a/lc123/cloud/app/plugin/form/result/WarehouseReceiptClone.java b/lc123/cloud/app/plugin/form/result/WarehouseReceiptClone.java new file mode 100644 index 0000000..b9be5a7 --- /dev/null +++ b/lc123/cloud/app/plugin/form/result/WarehouseReceiptClone.java @@ -0,0 +1,83 @@ +package tqq9.lc123.cloud.app.plugin.form.result; + +import kd.bos.dataentity.OperateOption; +import kd.bos.dataentity.entity.CloneUtils; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.botp.runtime.BFRow; +import kd.bos.entity.operate.result.OperationResult; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.args.BeforeOperationArgs; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.botp.BFTrackerServiceHelper; +import kd.bos.servicehelper.operation.OperationServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.sdk.plugin.Plugin; + +import java.util.List; +import java.util.Map; + +/** + * 单据操作插件 + */ +public class WarehouseReceiptClone extends AbstractOperationServicePlugIn implements Plugin { + private final static Log logger = LogFactory.getLog(WarehouseReceiptClone.class); + + @Override + public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { + super.beforeExecuteOperationTransaction(e); + + DynamicObject[] dataEntities1 = e.getDataEntities();//获取数据实体 + for (DynamicObject dynamicObject : dataEntities1) { + StringBuilder billnoSet = new StringBuilder(); + //查找上游单据 + Map> sourceBillsMap = BFTrackerServiceHelper.findDirtSourceBills(dynamicObject.getDataEntityType().getName(), new Long[]{dynamicObject.getLong("id")}); + if (sourceBillsMap.size() > 0 && sourceBillsMap != null) { + List bfRows = sourceBillsMap.get(dynamicObject.getLong("id")); + if (bfRows != null) { + for (BFRow bfRow : bfRows) { + Long billId = bfRow.getSId().getBillId();//获取上游订单ID + DynamicObject[] im_otheroutbill = BusinessDataServiceHelper.load("im_otheroutbill", + "billno", new QFilter[]{new QFilter("id", QCP.equals, billId)}); + if (im_otheroutbill != null) { + for (int i = 0; i < im_otheroutbill.length; i++) { + DynamicObject doj = im_otheroutbill[i]; + billnoSet.append(doj.get("billno")); + if (i < im_otheroutbill.length - 1) { + billnoSet.append("、"); + } + } + } + } + } + } + //查找再克隆 + QFilter qf1 = new QFilter("id", QCP.equals, dynamicObject.getLong("id")); + dynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObject.getDataEntityType().getName(), new QFilter[]{qf1}); + DynamicObject newData = (DynamicObject) new CloneUtils(false, true).clone(dynamicObject); + newData.set("billno", dynamicObject.getString("billno")); + newData.set("billstatus", "C"); + newData.set("tqq9_sourcebillno", billnoSet); + //保存 + SaveServiceHelper.save(new DynamicObject[]{newData}); + //反审核 + OperateOption option = OperateOption.create(); + StringBuilder message = new StringBuilder(); + OperationResult unauditResult = OperationServiceHelper.executeOperate("unaudit", dynamicObject.getDataEntityType().getName(), new DynamicObject[]{dynamicObject}, OperateOption.create()); + if (unauditResult.isSuccess()) { + OperationResult deleteResult = OperationServiceHelper.executeOperate("delete", dynamicObject.getDataEntityType().getName(), new DynamicObject[]{dynamicObject}, OperateOption.create()); + + deleteResult.getAllErrorOrValidateInfo().forEach((error) -> { + message.append(error.getMessage()); + }); + } else { + unauditResult.getAllErrorOrValidateInfo().forEach((error) -> { + message.append(error.getMessage()); + }); + } + } + } +} \ No newline at end of file From f2f1e8ad0f9bb225d166bf48f737eac13161d32d Mon Sep 17 00:00:00 2001 From: pan-houxiang <2663608154@qq.com> Date: Wed, 26 Nov 2025 11:41:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9catch=E7=9A=84throw?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java b/lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java index e7e1d09..9cbab55 100644 --- a/lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java +++ b/lc123/cloud/app/plugin/form/conm/ConmChangePlugin.java @@ -93,7 +93,7 @@ public class ConmChangePlugin extends AbstractListPlugin implements Plugin { } } catch (IOException e) { lcLogService.savelog("FL-查看规则状态", Change_URL, false, false, params.toString(), "接口调用报错,errormessage:" + e.getMessage()); - throw new RuntimeException(e + ",请求返利系统失败"); + throw new RuntimeException(e + ",请求返利规则状态查询失败"); } } }