diff --git a/src/main/java/com/budwk/app/base/sms/impl/jshvc/SmsJshvcServiceImpl.java b/src/main/java/com/budwk/app/base/sms/impl/jshvc/SmsJshvcServiceImpl.java index 50b851a..b973050 100644 --- a/src/main/java/com/budwk/app/base/sms/impl/jshvc/SmsJshvcServiceImpl.java +++ b/src/main/java/com/budwk/app/base/sms/impl/jshvc/SmsJshvcServiceImpl.java @@ -31,149 +31,152 @@ import java.util.List; @IocBean public class SmsJshvcServiceImpl implements SmsService { - @Override - public void sendSingleMessage(String loginName, String content) { - this.sendSingleMessage(loginName, "智慧工会", content); - } + @Override + public void sendSingleMessage(String loginName, String content) { + this.sendSingleMessage(loginName, "智慧工会", content); + } - @Override - public void sendSingleMessage(String loginName, String title, String content) { - this.massSendMessage(List.of(loginName), title, content); - } + @Override + public void sendSingleMessage(String loginName, String title, String content) { + this.massSendMessage(List.of(loginName), title, content); + } - @Override - public void sendSingleTextCard(String loginName, String content, String pcUrl, String mobileUrl) { - this.sendSingleTextCard(loginName, "智慧工会", content, pcUrl, mobileUrl); - } + @Override + public void sendSingleTextCard(String loginName, String content, String pcUrl, String mobileUrl) { + this.sendSingleTextCard(loginName, "智慧工会", content, pcUrl, mobileUrl); + } - @Override - public void sendSingleTextCard(String loginName, String title, String content, String pcUrl, String mobileUrl) { - this.massSendTextCard(List.of(loginName), title, content, pcUrl, mobileUrl); - } + @Override + public void sendSingleTextCard(String loginName, String title, String content, String pcUrl, String mobileUrl) { + this.massSendTextCard(List.of(loginName), title, content, pcUrl, mobileUrl); + } - @Override - public void sendSinglePicTextCard(String loginName, String content, String pcUrl, String mobileUrl, String picUrl) { - this.sendSinglePicTextCard(loginName, "智慧工会", content, pcUrl, mobileUrl, picUrl); - } + @Override + public void sendSinglePicTextCard(String loginName, String content, String pcUrl, String mobileUrl, String picUrl) { + this.sendSinglePicTextCard(loginName, "智慧工会", content, pcUrl, mobileUrl, picUrl); + } - @Override - public void sendSinglePicTextCard(String loginName, String title, String content, String pcUrl, String mobileUrl, String picUrl) { - this.massSendPicTextCard(List.of(loginName), title, content, pcUrl, mobileUrl, picUrl); - } + @Override + public void sendSinglePicTextCard(String loginName, String title, String content, String pcUrl, String mobileUrl, String picUrl) { + this.massSendPicTextCard(List.of(loginName), title, content, pcUrl, mobileUrl, picUrl); + } - @Override - public void massSendMessage(List loginNames, String content) { - this.massSendMessage(loginNames, "智慧工会", content); - } + @Override + public void massSendMessage(List loginNames, String content) { + this.massSendMessage(loginNames, "智慧工会", content); + } - @Override - public void massSendMessage(List loginNames, String title, String content) { - List list = loginNames.stream().map(loginName -> { - ReceiverDto receiverDto = new ReceiverDto(); - receiverDto.setUserId(loginName); - return receiverDto; - }).toList(); - this.doSend(WxSendType_Constants.TEXT, list, title, content, null, null, null); - } + @Override + public void massSendMessage(List loginNames, String title, String content) { + List list = loginNames.stream().map(loginName -> { + ReceiverDto receiverDto = new ReceiverDto(); + receiverDto.setUserId(loginName); + return receiverDto; + }).toList(); + this.doSend(WxSendType_Constants.TEXT, list, title, content, null, null, null); + } - @Override - public void massSendTextCard(List loginNames, String content, String pcUrl, String mobileUrl) { - this.massSendTextCard(loginNames, "智慧工会", content, pcUrl, mobileUrl); - } + @Override + public void massSendTextCard(List loginNames, String content, String pcUrl, String mobileUrl) { + this.massSendTextCard(loginNames, "智慧工会", content, pcUrl, mobileUrl); + } - @Override - public void massSendTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl) { - List list = loginNames.stream().map(loginName -> { - ReceiverDto receiverDto = new ReceiverDto(); - receiverDto.setUserId(loginName); - return receiverDto; - }).toList(); - this.doSend(WxSendType_Constants.TEXT_CARD, list, title, content, pcUrl, mobileUrl, null); - } + @Override + public void massSendTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl) { + List list = loginNames.stream().map(loginName -> { + ReceiverDto receiverDto = new ReceiverDto(); + receiverDto.setUserId(loginName); + return receiverDto; + }).toList(); + this.doSend(WxSendType_Constants.TEXT_CARD, list, title, content, pcUrl, mobileUrl, null); + } - @Override - public void massSendPicTextCard(List loginNames, String content, String pcUrl, String mobileUrl, String picUrl) { - this.massSendPicTextCard(loginNames, "智慧工会", content, pcUrl, mobileUrl, picUrl); - } + @Override + public void massSendPicTextCard(List loginNames, String content, String pcUrl, String mobileUrl, String picUrl) { + this.massSendPicTextCard(loginNames, "智慧工会", content, pcUrl, mobileUrl, picUrl); + } - @Override - public void massSendPicTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl, String picUrl) { - List list = loginNames.stream().map(loginName -> { - ReceiverDto receiverDto = new ReceiverDto(); - receiverDto.setUserId(loginName); - return receiverDto; - }).toList(); - this.doSend(WxSendType_Constants.NEWS, list, title, content, pcUrl, mobileUrl, picUrl); - } + @Override + public void massSendPicTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl, String picUrl) { + List list = loginNames.stream().map(loginName -> { + ReceiverDto receiverDto = new ReceiverDto(); + receiverDto.setUserId(loginName); + return receiverDto; + }).toList(); + this.doSend(WxSendType_Constants.NEWS, list, title, content, pcUrl, mobileUrl, picUrl); + } - @Override - public void recallMsg(String msgId) { - try { - Client client = new DefaultClient(TodoPlatformConfig.TODO_PLATFORM_BASE_URL, TodoPlatformConfig.TODO_APP_ID, TodoPlatformConfig.TODO_APP_SECRET); - RecallMsgRequest request = new RecallMsgRequest(); - request.setMsgId(msgId); + @Override + public void recallMsg(String msgId) { + try { + Client client = new DefaultClient(TodoPlatformConfig.TODO_PLATFORM_BASE_URL, TodoPlatformConfig.TODO_APP_ID, TodoPlatformConfig.TODO_APP_SECRET); + RecallMsgRequest request = new RecallMsgRequest(); + request.setMsgId(msgId); - log.info("撤回企业微信消息,请求参数:{}", Json.toJson(request)); - RecallMsgResponse response = client.execute(request); - log.info("撤回企业微信消息,接口响应数据:{}", Json.toJson(response)); - } catch (Exception e) { - log.error("撤回企业微信消息失败", e); - } - } + log.info("撤回企业微信消息,请求参数:{}", Json.toJson(request)); + RecallMsgResponse response = client.execute(request); + log.info("撤回企业微信消息,接口响应数据:{}", Json.toJson(response)); + } catch (Exception e) { + log.error("撤回企业微信消息失败", e); + } + } - private void doSend(String sendType, - List receivers, - String title, - String content, - String pcUrl, - String mobileUrl, - String picUrl) { + private void doSend(String sendType, + List receivers, + String title, + String content, + String pcUrl, + String mobileUrl, + String picUrl) { + if (!Globals.MyConfig.getBoolean("AppSms", false)) { + log.error("【log】消息配置未开启"); + return; + } + if (!Globals.sso) { + log.error("【log】开发模式不允许发送企业微信通知"); + return; + } - if (!Globals.sso) { - log.error("【log】开发模式不允许发送企业微信通知"); - return; - } + if (Lang.isEmpty(receivers)) { + log.error("send fail by receivers is null"); + return; + } + try { + // 创建客户端 + Client client = new DefaultClient(TodoPlatformConfig.TODO_PLATFORM_BASE_URL, TodoPlatformConfig.TODO_APP_ID, TodoPlatformConfig.TODO_APP_SECRET); + SendMsgRequest request = new SendMsgRequest(); + request.setSubject(title); + request.setContent(content); + request.setMsgType(MsgType_Constants.COMMON); + request.setSendType(SendType_Constants.WECHAT_ENTERPRISE); + request.setWxSendType(sendType); + request.setReceivers(receivers); - if (Lang.isEmpty(receivers)) { - log.error("send fail by receivers is null"); - return; - } - try { - // 创建客户端 - Client client = new DefaultClient(TodoPlatformConfig.TODO_PLATFORM_BASE_URL, TodoPlatformConfig.TODO_APP_ID, TodoPlatformConfig.TODO_APP_SECRET); - SendMsgRequest request = new SendMsgRequest(); - request.setSubject(title); - request.setContent(content); - request.setMsgType(MsgType_Constants.COMMON); - request.setSendType(SendType_Constants.WECHAT_ENTERPRISE); - request.setWxSendType(sendType); - request.setReceivers(receivers); + if (WxSendType_Constants.TEXT_CARD.equals(sendType)) { + request.setPcUrl(pcUrl); + request.setMobileUrl(mobileUrl); + request.setUrlDesc("查看详情"); + } + if (WxSendType_Constants.NEWS.equals(sendType)) { + request.setPcUrl(pcUrl); + request.setMobileUrl(mobileUrl); + request.setUrlDesc("查看详情"); + request.setQyWeChatImgUrl(picUrl); + } - if (WxSendType_Constants.TEXT_CARD.equals(sendType)) { - request.setPcUrl(pcUrl); - request.setMobileUrl(mobileUrl); - request.setUrlDesc("查看详情"); - } - if (WxSendType_Constants.NEWS.equals(sendType)) { - request.setPcUrl(pcUrl); - request.setMobileUrl(mobileUrl); - request.setUrlDesc("查看详情"); - request.setQyWeChatImgUrl(picUrl); - } + log.info("发送企业微信通知,请求参数:{}", Json.toJson(request)); + SendMsgResponse response = client.execute(request); + log.info("发送企业微信通知,接口响应数据:{}", Json.toJson(response)); - log.info("发送企业微信通知,请求参数:{}", Json.toJson(request)); - SendMsgResponse response = client.execute(request); - log.info("发送企业微信通知,接口响应数据:{}", Json.toJson(response)); - - if (response.isSuccess() && response.getStatus() == 200) { - // TODO 消息Id,后面可以存着,撤回要用到 - String msgId = response.getMsgId(); - log.info("发送企业微信通知成功: {}, msg: {}", response.getStatus(), response.getMsg()); - } else { - log.info("发送企业微信通知失败:{}", response.getMsg()); - } - } catch (Exception e) { - log.error("发送企业微信通知失败", e); - } - } + if (response.isSuccess() && response.getStatus() == 200) { + // TODO 消息Id,后面可以存着,撤回要用到 + String msgId = response.getMsgId(); + log.info("发送企业微信通知成功: {}, msg: {}", response.getStatus(), response.getMsg()); + } else { + log.info("发送企业微信通知失败:{}", response.getMsg()); + } + } catch (Exception e) { + log.error("发送企业微信通知失败", e); + } + } } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java index 5f1b98e..bc365f2 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java @@ -1,6 +1,7 @@ package com.budwk.app.zhgh.democratic.proposal.service.common; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -172,6 +173,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp SELECT info.name, info.code, + info.excerpt, info.brief, info.measures, info.createUserName, @@ -215,6 +217,20 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp // 按任务节点分组 Map> taskGroups = doneTaskVos.stream().collect(Collectors.groupingBy(ProcessTaskVO::getDisplayName)); + taskGroups.forEach((taskKey, taskVOS) -> { + if (taskKey.equals("提案附议")){ + taskVOS.forEach(taskVO -> { + Dict ext = taskVO.getExt(); + if (ObjectUtil.isNotEmpty(ext)) { + String tfSignature = ext.getStr("tf_signature"); + // 导出 Word 时将签字附件地址转换为图片对象,避免 taskFormData 重建后丢失值。 + if (StrUtil.isNotBlank(tfSignature)) { + ext.set("tf_signatureImg", sysOfficeTemplateUtil.createPictureRenderData(tfSignature)); + } + } + }); + } + }); docData.putAll(taskGroups); LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy(); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java index d3d369e..2ca5de6 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java @@ -166,6 +166,7 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp info.name, info.code, info.researchFindings, + info.excerpt, info.brief, info.measures, info.createUserName, @@ -220,8 +221,8 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp exportEntities.add(new ExcelExportEntity("序号", "index", 10)); exportEntities.add(new ExcelExportEntity("提案编号", "code", 20)); exportEntities.add(new ExcelExportEntity("提案名称", "name", 20)); + exportEntities.add(new ExcelExportEntity("提案概要", "excerpt", 40)); exportEntities.add(new ExcelExportEntity("提案案由", "brief", 40)); - exportEntities.add(new ExcelExportEntity("代表调研情况", "researchFindings", 40)); exportEntities.add(new ExcelExportEntity("代表建议措施", "measures", 40)); exportEntities.add(new ExcelExportEntity("提案人", "createUserName", 20)); exportEntities.add(new ExcelExportEntity("提案人电话", "mobile", 20)); @@ -541,6 +542,7 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp info.name, info.code, info.researchFindings, + info.excerpt, info.brief, info.measures, info.createUserName, diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/common/info.js b/src/main/resources/views/platform/zhgh/democratic/proposal/common/info.js index b0f6d3b..6b5a56b 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/common/info.js +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/common/info.js @@ -29,9 +29,9 @@ const PROPOSAL_INFO = { - + +
{{viewData.excerpt}}
+
@@ -140,6 +140,31 @@ const PROPOSAL_INFO = { + + + + + {{ task.taskFormData.userName + }}({{task.taskFormData.loginName}}) + + {{ task.finishTime }} + + + + +
+
+ + +
+ +
+
+ 暂无 +
@@ -163,10 +188,12 @@ const PROPOSAL_INFO = { {{task.ext.tf_masterUnitName}} + v-if="['CONFIRM_FILING','SUGGESTION'].includes(task.ext.tf_caseFilingResult)"> + {{task.ext.tf_masterUnitName}} {{task?.ext?.tf_slaveUnitNameStr}} + v-if="['CONFIRM_FILING','SUGGESTION'].includes(task.ext.tf_caseFilingResult)"> + {{task?.ext?.tf_slaveUnitNameStr}}
diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html index 1be33e7..b44ce5e 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html @@ -201,6 +201,7 @@ layout("/layouts/platform.html"){ {label: "立案结果", prop: "caseFilingResult"}, {label: "立案类型", prop: "caseFilingType"}, {label: "是否并案", prop: "merge"}, + {label: "提案概要", prop: "excerpt", visible: false}, {label: "案由", prop: "brief", visible: false}, {label: "建议措施", prop: "measures", visible: false}, {label: "主办单位", prop: "masterUnitName"}, diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/seconded/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/seconded/index.html index 2ef16d2..64f585f 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/seconded/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/seconded/index.html @@ -76,6 +76,9 @@ layout("/layouts/platform.html"){ :rules="[{required:true,message:'必填',trigger:['change','blur']}]"> + + + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/write/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/write/index.html index f319aff..528bbff 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/write/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/write/index.html @@ -99,21 +99,21 @@ layout("/layouts/platform.html"){ - - - - - - - - - - - - - - - + + + 提案摘要 + + + + + + diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/common/info.js b/src/main/resources/views/platform/zhghh5/democratic/proposal/common/info.js index 836e0f9..bac6286 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/common/info.js +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/common/info.js @@ -27,9 +27,9 @@ const PROPOSAL_INFO = { - + +
{{viewData.excerpt}}
+
@@ -121,6 +121,26 @@ const PROPOSAL_INFO = { + + {{ task.taskFormData.userName }}({{task.taskFormData.loginName}}) + + {{ task.finishTime }} + + + + +
+
+ +
+ +
+
+
+ diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/seconded/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/seconded/index.html index f487421..c145d4f 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/seconded/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/seconded/index.html @@ -63,9 +63,10 @@ layout("/layouts/platform_h5.html"){ maxlength="100" show-word-limit > - - - + + +
不同意 @@ -97,7 +98,7 @@ layout("/layouts/platform_h5.html"){ formData: {}, showApprovalForm: false, rules: { - approvalSignature: [{required: true, message: "请签字"}] + tf_signature: [{required: true, message: "请签字"}] } } }, diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/write/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/write/index.html index b60621c..d1f3336 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/write/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/write/index.html @@ -283,17 +283,18 @@ layout("/layouts/platform_h5.html"){ - + type="textarea" + rows="2" + maxlength="20" + show-word-limit + >