From 1922aaaa94c42c547d5d5238198acdf7e7d6865e Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:59:51 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20#3751=20=E3=80=90=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E3=80=91=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0process?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BB=A5=E6=94=AF=E6=8C=81=E6=96=B0=E7=89=88?= =?UTF-8?q?=E7=9A=84=E5=AE=A1=E6=89=B9=E6=B5=81=E7=A8=8B=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cp/bean/oa/WxCpOaApplyEventRequest.java | 50 +++++++++- .../bean/oa/WxCpOaApplyEventRequestTest.java | 95 +++++++++++++++++++ 2 files changed, 144 insertions(+), 1 deletion(-) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/oa/WxCpOaApplyEventRequest.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/oa/WxCpOaApplyEventRequest.java index 8aebb6600..30ae6497f 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/oa/WxCpOaApplyEventRequest.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/oa/WxCpOaApplyEventRequest.java @@ -44,7 +44,13 @@ public class WxCpOaApplyEventRequest implements Serializable { private Integer chooseDepartment; /** - * 审批流程信息,用于指定审批申请的审批流程,支持单人审批、多人会签、多人或签,可能有多个审批节点,仅use_template_approver为0时生效。 + * 审批流程信息(新版流程列表),用于指定审批申请的审批流程,支持单人审批、多人会签、多人或签,可能有多个审批节点,仅use_template_approver为0时生效。 + */ + @SerializedName("process") + private Process process; + + /** + * 审批流程信息(旧版),用于指定审批申请的审批流程,支持单人审批、多人会签、多人或签,可能有多个审批节点,仅use_template_approver为0时生效。 */ @SerializedName("approver") private List approvers; @@ -118,4 +124,46 @@ public class WxCpOaApplyEventRequest implements Serializable { private List contents; } + /** + * 审批流程信息(新版). + */ + @Data + @Accessors(chain = true) + public static class Process implements Serializable { + private static final long serialVersionUID = 4758206091546930988L; + + /** + * 审批流程节点列表,当use_template_approver为0时必填 + */ + @SerializedName("node_list") + private List nodeList; + } + + /** + * 审批流程节点. + */ + @Data + @Accessors(chain = true) + public static class ProcessNode implements Serializable { + private static final long serialVersionUID = 1758206091546930988L; + + /** + * 节点类型:1-审批人,2-抄送人,3-抄送人 + */ + @SerializedName("type") + private Integer type; + + /** + * 多人审批方式:1-全签,2-或签,3-依次审批 + */ + @SerializedName("apv_rel") + private Integer apvRel; + + /** + * 审批节点审批人userid列表,若为多人会签、多人或签,需填写每个人的userid + */ + @SerializedName("userid") + private String[] userIds; + } + } diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/oa/WxCpOaApplyEventRequestTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/oa/WxCpOaApplyEventRequestTest.java index f2dedb4dd..e6fc2e800 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/oa/WxCpOaApplyEventRequestTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/oa/WxCpOaApplyEventRequestTest.java @@ -95,4 +95,99 @@ public class WxCpOaApplyEventRequestTest { assertThat(request.toJson()).isEqualTo(GsonParser.parse(json).toString()); } + + /** + * Test to json with process. + */ + @Test + public void testToJsonWithProcess() { + String json = "{\n" + + " \"creator_userid\": \"WangXiaoMing\",\n" + + " \"template_id\": \"3Tka1eD6v6JfzhDMqPd3aMkFdxqtJMc2ZRioeFXkaaa\",\n" + + " \"use_template_approver\":0,\n" + + " \"process\": {\n" + + " \"node_list\": [\n" + + " {\n" + + " \"type\": 1,\n" + + " \"apv_rel\": 2,\n" + + " \"userid\": [\"WuJunJie\",\"WangXiaoMing\"]\n" + + " },\n" + + " {\n" + + " \"type\": 1,\n" + + " \"apv_rel\": 1,\n" + + " \"userid\": [\"LiuXiaoGang\"]\n" + + " },\n" + + " {\n" + + " \"type\": 2,\n" + + " \"userid\": [\"ZhangSan\",\"LiSi\"]\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"apply_data\": {\n" + + " \"contents\": [\n" + + " {\n" + + " \"control\": \"Text\",\n" + + " \"id\": \"Text-15111111111\",\n" + + " \"value\": {\n" + + " \"text\": \"文本填写的内容\"\n" + + " }\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"summary_list\": [\n" + + " {\n" + + " \"summary_info\": [{\n" + + " \"text\": \"摘要第1行\",\n" + + " \"lang\": \"zh_CN\"\n" + + " }]\n" + + " },\n" + + " {\n" + + " \"summary_info\": [{\n" + + " \"text\": \"摘要第2行\",\n" + + " \"lang\": \"zh_CN\"\n" + + " }]\n" + + " },\n" + + " {\n" + + " \"summary_info\": [{\n" + + " \"text\": \"摘要第3行\",\n" + + " \"lang\": \"zh_CN\"\n" + + " }]\n" + + " }\n" + + " ]\n" + + "}"; + + WxCpOaApplyEventRequest request = new WxCpOaApplyEventRequest(); + request.setCreatorUserId("WangXiaoMing") + .setTemplateId("3Tka1eD6v6JfzhDMqPd3aMkFdxqtJMc2ZRioeFXkaaa") + .setUseTemplateApprover(0) + .setProcess(new WxCpOaApplyEventRequest.Process() + .setNodeList(Arrays.asList( + new WxCpOaApplyEventRequest.ProcessNode() + .setType(1) + .setApvRel(2) + .setUserIds(new String[]{"WuJunJie", "WangXiaoMing"}), + new WxCpOaApplyEventRequest.ProcessNode() + .setType(1) + .setApvRel(1) + .setUserIds(new String[]{"LiuXiaoGang"}), + new WxCpOaApplyEventRequest.ProcessNode() + .setType(2) + .setUserIds(new String[]{"ZhangSan", "LiSi"}) + ))) + .setApplyData(new WxCpOaApplyEventRequest.ApplyData() + .setContents(Collections.singletonList(new ApplyDataContent() + .setControl("Text").setId("Text-15111111111").setValue(new ContentValue().setText("文本填写的内容"))))) + .setSummaryList(Arrays.asList(new SummaryInfo() + .setSummaryInfoData(Collections.singletonList(new SummaryInfo.SummaryInfoData().setLang("zh_CN").setText( + "摘要第1行"))), + new SummaryInfo() + .setSummaryInfoData(Collections.singletonList(new SummaryInfo.SummaryInfoData().setLang("zh_CN").setText( + "摘要第2行"))), + new SummaryInfo() + .setSummaryInfoData(Collections.singletonList(new SummaryInfo.SummaryInfoData().setLang("zh_CN").setText( + "摘要第3行"))))) + ; + + assertThat(request.toJson()).isEqualTo(GsonParser.parse(json).toString()); + } }