From a0b39b0530c294e54345b1f03d9f1f9bb0fc10a8 Mon Sep 17 00:00:00 2001 From: pan-houxiang <2663608154@qq.com> Date: Thu, 25 Dec 2025 13:54:01 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E3=80=90=E9=87=87=E8=B4=AD=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E3=80=81=E9=87=87=E8=B4=AD=E5=8F=98=E6=9B=B4=E5=8D=95?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E3=80=91FW=E2=80=94=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=B5=81=E8=BD=AC=E6=95=B0=E6=8D=AE=20?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8=E8=8E=B7=E5=8F=96=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E6=AD=A5=E5=A4=84=E7=90=86=E4=BA=BA=E3=80=81=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E5=90=8D=E7=A7=B0=E3=80=81=E4=B8=8A=E4=B8=80=E6=AD=A5?= =?UTF-8?q?=E5=A4=84=E7=90=86=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurOrderBillWorkflowDataListPlugin.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lc123/cloud/app/plugin/form/pm/PurOrderBillWorkflowDataListPlugin.java diff --git a/lc123/cloud/app/plugin/form/pm/PurOrderBillWorkflowDataListPlugin.java b/lc123/cloud/app/plugin/form/pm/PurOrderBillWorkflowDataListPlugin.java new file mode 100644 index 0000000..83383a4 --- /dev/null +++ b/lc123/cloud/app/plugin/form/pm/PurOrderBillWorkflowDataListPlugin.java @@ -0,0 +1,34 @@ +package tqq9.lc123.cloud.app.plugin.form.pm; + +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.list.BillList; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.sdk.plugin.Plugin; +import tqq9.lc123.cloud.app.plugin.trd.FWImpl; + +import java.util.EventObject; + +/** + * 采购订单、采购变更单列表插件 + * FW—获取流程流转数据 接口调用获取下一步处理人、节点名称、上一步处理人 + */ +public class PurOrderBillWorkflowDataListPlugin extends AbstractListPlugin implements Plugin { + private static final Log log = LogFactory.getLog(PurOrderBillWorkflowDataListPlugin.class); + + @Override + public void afterBindData(EventObject e) { + super.afterBindData(e); + BillList billList = this.getView().getControl("billlistap"); + ListSelectedRowCollection currentListAllRowCollection = billList.getCurrentListAllRowCollection(); + String billSign = billList.getBillFormId(); + String result = FWImpl.getWorkFlowHandler(billSign, currentListAllRowCollection); + if ("调用成功".equals(result)) { + log.info("调用成功"); + }else{ + getView().showTipNotification("单据【"+result+"】中创建人没有填写泛微人员ID"); + log.info("调用失败"); + } + } +} \ No newline at end of file From 4208c877831102ecac2fab267e028b75861ea1fb Mon Sep 17 00:00:00 2001 From: pan-houxiang <2663608154@qq.com> Date: Thu, 25 Dec 2025 14:06:44 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E3=80=90=E7=9F=AD=E7=BC=BA=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=8D=95=E5=88=97=E8=A1=A8=E3=80=91FW=E2=80=94?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=B5=81=E7=A8=8B=E6=B5=81=E8=BD=AC=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=20=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=B8=8B=E4=B8=80=E6=AD=A5=E5=A4=84=E7=90=86=E4=BA=BA?= =?UTF-8?q?=E3=80=81=E8=8A=82=E7=82=B9=E5=90=8D=E7=A7=B0=E3=80=81=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E6=AD=A5=E5=A4=84=E7=90=86=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ShortageBillWorkflowDataListPlugin.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lc123/cloud/app/plugin/form/im/ShortageBillWorkflowDataListPlugin.java diff --git a/lc123/cloud/app/plugin/form/im/ShortageBillWorkflowDataListPlugin.java b/lc123/cloud/app/plugin/form/im/ShortageBillWorkflowDataListPlugin.java new file mode 100644 index 0000000..66646f6 --- /dev/null +++ b/lc123/cloud/app/plugin/form/im/ShortageBillWorkflowDataListPlugin.java @@ -0,0 +1,34 @@ +package tqq9.lc123.cloud.app.plugin.form.im; + +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.list.BillList; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.sdk.plugin.Plugin; +import tqq9.lc123.cloud.app.plugin.trd.FWImpl; + +import java.util.EventObject; + +/** + * 短缺处理单列表插件 + * FW—获取流程流转数据 接口调用获取下一步处理人、节点名称、上一步处理人 + */ +public class ShortageBillWorkflowDataListPlugin extends AbstractListPlugin implements Plugin { + private static final Log log = LogFactory.getLog(ShortageBillWorkflowDataListPlugin.class); + + @Override + public void afterBindData(EventObject e) { + super.afterBindData(e); + BillList b = this.getView().getControl("billlistap"); + ListSelectedRowCollection currentListAllRowCollection = b.getCurrentListAllRowCollection(); + String billSign = b.getBillFormId(); + String result = FWImpl.getWorkFlowHandler(billSign, currentListAllRowCollection); + if ("调用成功".equals(result)) { + log.info("调用成功"); + }else{ + getView().showTipNotification("单据【"+result+"】中创建人没有填写泛微人员ID"); + log.info("调用失败"); + } + } +} \ No newline at end of file From 237e1a7ed2f3f59146329d2dfe5cd9c8c11d9459 Mon Sep 17 00:00:00 2001 From: pan-houxiang <2663608154@qq.com> Date: Thu, 25 Dec 2025 14:38:09 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E3=80=90=E4=BE=9B=E5=BA=94=E5=95=86?= =?UTF-8?q?=E3=80=81=E4=BE=9B=E5=BA=94=E5=95=86=E5=8F=98=E6=9B=B4=E3=80=91?= =?UTF-8?q?FW=E2=80=94=E8=8E=B7=E5=8F=96=E6=B5=81=E7=A8=8B=E6=B5=81?= =?UTF-8?q?=E8=BD=AC=E6=95=B0=E6=8D=AE=20=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E8=8E=B7=E5=8F=96=E4=B8=8B=E4=B8=80=E6=AD=A5=E5=A4=84?= =?UTF-8?q?=E7=90=86=E4=BA=BA=E3=80=81=E8=8A=82=E7=82=B9=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E3=80=81=E4=B8=8A=E4=B8=80=E6=AD=A5=E5=A4=84=E7=90=86=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SupplierBillWorkflowDataListPlugin.java | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 lc123/cloud/app/plugin/form/sys/SupplierBillWorkflowDataListPlugin.java diff --git a/lc123/cloud/app/plugin/form/sys/SupplierBillWorkflowDataListPlugin.java b/lc123/cloud/app/plugin/form/sys/SupplierBillWorkflowDataListPlugin.java new file mode 100644 index 0000000..548cffe --- /dev/null +++ b/lc123/cloud/app/plugin/form/sys/SupplierBillWorkflowDataListPlugin.java @@ -0,0 +1,143 @@ +package tqq9.lc123.cloud.app.plugin.form.sys; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.list.BillList; +import kd.bos.list.plugin.AbstractListPlugin; +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.QueryServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.sdk.plugin.Plugin; +import org.apache.commons.lang3.StringUtils; +import tqq9.lc123.cloud.app.plugin.trd.FWImpl; +import tqq9.lc123.cloud.app.plugin.utils.ConfigUtils; +import tqq9.lc123.cloud.app.plugin.utils.FWRestfulUtils; +import tqq9.lc123.cloud.app.plugin.utils.FWUtils; + +import java.util.EventObject; +import java.util.HashSet; +import java.util.Set; + +/** + *供应商、供应商变更列表插件 + *FW—获取流程流转数据 接口调用获取下一步处理人、节点名称、上一步处理人 + */ +public class SupplierBillWorkflowDataListPlugin extends AbstractListPlugin implements Plugin { + private static final Log log = LogFactory.getLog(SupplierBillWorkflowDataListPlugin.class); + + @Override + public void afterBindData(EventObject e) { + super.afterBindData(e); + BillList billList = this.getView().getControl("billlistap"); + ListSelectedRowCollection currentListAllRowCollection = billList.getCurrentListAllRowCollection(); + String billSign = billList.getBillFormId(); + Set idSet = new HashSet<>(); + for (ListSelectedRow row : currentListAllRowCollection) { + Long primaryKeyValue = (Long) row.getPrimaryKeyValue(); + idSet.add(primaryKeyValue); + } + QFilter f = new QFilter("id", "in", idSet); + DynamicObject[] billArr = BusinessDataServiceHelper.load(billSign, + "id,number,tqq9_fwrequestid,tqq9_fwstate,tqq9_auditor,tqq9_auditornode,tqq9_sybclr", new QFilter[]{f}); + for (DynamicObject supplier : billArr) { + supplier = BusinessDataServiceHelper.loadSingle(supplier.getPkValue(), supplier.getDynamicObjectType().getName()); + String userid = null; + String requestid = null; + //获取当前用户id对应的泛微用户ID +// Long id = RequestContext.get().getCurrUserId(); +// Long id = tqq9_otheroutapply.getLong("id"); + //获取创建人id对应的泛微用户ID + DynamicObject creator = supplier.getDynamicObject("creator"); + Long id = creator.getLong("id"); + QFilter f1 = new QFilter("id", "=", id); + QFilter f2 = new QFilter("entryentity.ispartjob", "=", false); + DynamicObject bos_user = QueryServiceHelper.queryOne("bos_user", "id,entryentity.tqq9_fwuserid", new QFilter[]{f1, f2}); + if (bos_user != null) { + userid = bos_user.getString("entryentity.tqq9_fwuserid"); + } + String number = supplier.getString("number"); + log.info("number:" + number); + String tqq9_fwupdid = supplier.getString("tqq9_fwrequestid");//泛微修改流程id + String tqq9_fwrequestid = supplier.getString("tqq9_fwrequestid");//泛微流程id + if (StringUtils.isNotBlank(tqq9_fwupdid)){ + requestid = tqq9_fwupdid; + } else if (StringUtils.isNotBlank(tqq9_fwrequestid)){ + requestid = tqq9_fwrequestid; + } + String tqq9_fwstate = supplier.getString("tqq9_fwstate"); + if (StringUtils.isNotBlank(requestid) && "B".equals(tqq9_fwstate)) { + if (StringUtils.isBlank(userid)) { + //获取第三方配置表的泛微用户ID + userid = ConfigUtils.getThirdConfigByNumber("FW_WorkFlowInfo_UserId"); + if (StringUtils.isBlank(userid)) { + log.info("没有获取到泛微用户ID,当前用户ID:" + id); + continue; + } + } + + String requestName = "FW_获取流程流转数据"; + //调用泛微接口获取下一步处理人 + String bodyString = FWRestfulUtils.getRequest(requestName, number, requestid, userid); + log.info("number:" + number + ",bodyString:" + bodyString); + JSONObject map = JSONObject.parseObject(bodyString); + if (map != null) { + JSONArray data = map.getJSONArray("data");//节点id + if (data != null && data.size() > 0) { + String xybNodeName = null;//下一步节点名称 + String xybclrid = null;//下一步处理人OAuserid + String sybclrid = null;//上一步处理人OAuserid + boolean existXybCLR = false;//是否找到了下一步处理人 + boolean existSybCLR = false;//是否找到了上一步处理人 + for (int i = 0; i < data.size(); i++) { + JSONObject data0 = (JSONObject) data.get(i); + Integer isremark = data0.getInteger("isremark"); + String nodeName = data0.getString("nodeName"); + if (StringUtils.isNotBlank(nodeName) && isremark != null) { + if (isremark == 0 && !nodeName.contains("归档")) { + xybclrid = String.valueOf(data0.getInteger("userid")); + xybNodeName = nodeName; + existXybCLR = true; + }else if (isremark == 2 && !nodeName.contains("申请人") && !nodeName.contains("发起")) { + sybclrid = String.valueOf(data0.getInteger("userid")); + existSybCLR = true; + } + if(existXybCLR && existSybCLR){ + //如果下一步处理人和上一步处理人都找到了,可以直接跳过了 + break; + } + } + } + + //给下一步处理人,下一步节点赋值 + boolean isUpdate = false;//是否需要更新数据 + if (StringUtils.isNotBlank(xybclrid)) { + DynamicObject kdUser = FWUtils.getKdUserByFwUserID(xybclrid); + if (kdUser != null) { + supplier.set("tqq9_auditor", kdUser);//下一步处理人(待审批人) + supplier.set("tqq9_auditornode", xybNodeName);//节点名称 + isUpdate = true; + } + } + //给上一步处理人赋值,用于执行撤回操作 + if (StringUtils.isNotBlank(sybclrid)) { + DynamicObject kdUser = FWUtils.getKdUserByFwUserID(sybclrid); + if (kdUser != null) { + supplier.set("tqq9_sybclr", kdUser);//上一步处理人 + isUpdate = true; + } + } + if(isUpdate){ + SaveServiceHelper.save(new DynamicObject[]{supplier}); + } + } + } + } + } + } +} \ No newline at end of file From f2410f0e35387b5137af5563e6857a02e20dd1e4 Mon Sep 17 00:00:00 2001 From: pan-houxiang <2663608154@qq.com> Date: Thu, 25 Dec 2025 14:43:26 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E3=80=90=E9=87=87=E8=B4=AD=E9=80=80?= =?UTF-8?q?=E8=B4=A7=E7=94=B3=E8=AF=B7=E5=8D=95=E5=88=97=E8=A1=A8=E3=80=91?= =?UTF-8?q?FW=E2=80=94=E8=8E=B7=E5=8F=96=E6=B5=81=E7=A8=8B=E6=B5=81?= =?UTF-8?q?=E8=BD=AC=E6=95=B0=E6=8D=AE=20=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E8=8E=B7=E5=8F=96=E4=B8=8B=E4=B8=80=E6=AD=A5=E5=A4=84?= =?UTF-8?q?=E7=90=86=E4=BA=BA=E3=80=81=E8=8A=82=E7=82=B9=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E3=80=81=E4=B8=8A=E4=B8=80=E6=AD=A5=E5=A4=84=E7=90=86=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...RefundApplyBillWorkflowDataListPlugin.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lc123/cloud/app/plugin/form/result/PmPurRefundApplyBillWorkflowDataListPlugin.java diff --git a/lc123/cloud/app/plugin/form/result/PmPurRefundApplyBillWorkflowDataListPlugin.java b/lc123/cloud/app/plugin/form/result/PmPurRefundApplyBillWorkflowDataListPlugin.java new file mode 100644 index 0000000..2bfedbc --- /dev/null +++ b/lc123/cloud/app/plugin/form/result/PmPurRefundApplyBillWorkflowDataListPlugin.java @@ -0,0 +1,34 @@ +package tqq9.lc123.cloud.app.plugin.form.result; + +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.list.BillList; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.sdk.plugin.Plugin; +import tqq9.lc123.cloud.app.plugin.trd.FWImpl; + +import java.util.EventObject; + +/** + *采购退货申请单列表插件 + *FW—获取流程流转数据 接口调用获取下一步处理人、节点名称、上一步处理人 + */ +public class PmPurRefundApplyBillWorkflowDataListPlugin extends AbstractListPlugin implements Plugin { + private static final Log log = LogFactory.getLog(PmPurRefundApplyBillWorkflowDataListPlugin.class); + + @Override + public void afterBindData(EventObject e) { + super.afterBindData(e); + BillList billList = this.getView().getControl("billlistap"); + ListSelectedRowCollection currentListAllRowCollection = billList.getCurrentListAllRowCollection(); + String billSign = billList.getBillFormId(); + String result = FWImpl.getWorkFlowHandler(billSign, currentListAllRowCollection); + if ("调用成功".equals(result)) { + log.info("调用成功"); + }else{ + getView().showTipNotification("单据【"+result+"】中创建人没有填写泛微人员ID"); + log.info("调用失败"); + } + } +} \ No newline at end of file From 4e64e222b41f5f17883e772acc96d5e57512d657 Mon Sep 17 00:00:00 2001 From: "tanfengling@x-ri.com" <123456> Date: Thu, 25 Dec 2025 14:56:28 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E3=80=90=E7=89=A9=E6=96=99=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E3=80=91=20=E5=8C=BA=E5=88=86=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=B8=8E=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lc123/cloud/app/plugin/trd/FWImpl.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/lc123/cloud/app/plugin/trd/FWImpl.java b/lc123/cloud/app/plugin/trd/FWImpl.java index ef58405..6cdb045 100644 --- a/lc123/cloud/app/plugin/trd/FWImpl.java +++ b/lc123/cloud/app/plugin/trd/FWImpl.java @@ -6584,11 +6584,9 @@ public class FWImpl { String requestName = "新增物料流程"; String wfID = ConfigUtils.getThirdConfigByNumber("FW_WFID_XZWL"); String requestid = bill.getString("tqq9_fwrequestid"); -// boolean tqq9_issuccess = bill.getBoolean("tqq9_issuccess"); if (lcbh.endsWith("_copy")) { requestName = "变更物料流程"; wfID = ConfigUtils.getThirdConfigByNumber("FW_WFID_WLBG"); - requestid = bill.getString("tqq9_fwupdid"); JSONObject m_bgyy = new JSONObject(); m_bgyy.put("fieldName", "bgyy");