From 7d8ad420e4cc3d979df089ebe5d582af9a0a7f06 Mon Sep 17 00:00:00 2001 From: chenhao Date: Wed, 4 Feb 2026 16:14:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(purchase):=20=E6=B7=BB=E5=8A=A0=E4=BE=9B?= =?UTF-8?q?=E5=BA=94=E5=95=86=E7=A1=AE=E8=AE=A4=E9=82=AE=E4=BB=B6=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在采购订单实体类中新增供应商邮箱字段 - 更新采购订单查询映射,添加供应商代码和邮箱信息 - 集成模板邮件工具类,实现供应商确认邮件发送 - 添加供应商确认邮件模板HTML文件 - 实现邮件发送逻辑,支持抄送特定供应商邮件 - 修复角色数据权限分配中的注释代码问题 --- .../oms_vue/src/views/system/role/index.vue | 12 +++---- .../mailTemplate/vendorConfirmTemplate.html | 32 +++++++++++++++++++ .../common/utils/mail/TemplateMailUtil.java | 1 + .../ruoyi/sip/domain/OmsPurchaseOrder.java | 1 + .../impl/OmsPurchaseOrderServiceImpl.java | 27 +++++++++++++++- .../mapper/sip/OmsPurchaseOrderMapper.xml | 2 +- 6 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 ruoyi-admin/src/main/resources/mailTemplate/vendorConfirmTemplate.html diff --git a/oms_web/oms_vue/src/views/system/role/index.vue b/oms_web/oms_vue/src/views/system/role/index.vue index e1be50e1..4d52ea81 100644 --- a/oms_web/oms_vue/src/views/system/role/index.vue +++ b/oms_web/oms_vue/src/views/system/role/index.vue @@ -534,15 +534,15 @@ export default { /** 分配数据权限操作 */ handleDataScope(row) { this.reset() - // const deptTreeSelect = this.getDeptTree(row.roleId) + const deptTreeSelect = this.getDeptTree(row.roleId) getRole(row.roleId).then(response => { this.form = response.data this.openDataScope = true - // this.$nextTick(() => { - // deptTreeSelect.then(res => { - // this.$refs.dept.setCheckedKeys(res.checkedKeys) - // }) - // }) + this.$nextTick(() => { + deptTreeSelect.then(res => { + this.$refs.dept.setCheckedKeys(res.checkedKeys) + }) + }) }) this.title = "分配数据权限" }, diff --git a/ruoyi-admin/src/main/resources/mailTemplate/vendorConfirmTemplate.html b/ruoyi-admin/src/main/resources/mailTemplate/vendorConfirmTemplate.html new file mode 100644 index 00000000..0c06a537 --- /dev/null +++ b/ruoyi-admin/src/main/resources/mailTemplate/vendorConfirmTemplate.html @@ -0,0 +1,32 @@ + + + + + + + + + +
+ +

您好,紫光汇智有新 PO 单【[[${purchaseNo}]]】送达,请进入紫光汇智 OMS 系统【进销存管理】供应商界面,确认订单,完成相关操作,并及时处理后续入库手续。

+

如有疑问,可随时与我司沟通。联系人:徐心钰 15168396014

+
+ +

紫光汇智信息技术有限公司

+
+
+ + + + \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/mail/TemplateMailUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/mail/TemplateMailUtil.java index cef8f8bb..c2fb0b3b 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/mail/TemplateMailUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/mail/TemplateMailUtil.java @@ -101,6 +101,7 @@ public class TemplateMailUtil { PAYABLE_REFUNDED_EMAIL("payableRefundedTemplate.html", "预付款恢复通知"), RECEIPT_EMAIL("receiptTemplate.html", "预收款变动通知"), RECEIPT_REFUNDED_EMAIL("receiptRefundedTemplate.html", "预收款恢复通知"), + VENDOR_CONFIRM_EMAIL("vendorConfirmTemplate.html", "预收款恢复通知"), ; diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPurchaseOrder.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPurchaseOrder.java index d0e22585..93cc1205 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPurchaseOrder.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPurchaseOrder.java @@ -129,6 +129,7 @@ public class OmsPurchaseOrder extends BaseEntity private String taskId; private String productCode; private String productModel; + private String vendorEmail; private Integer fileId; private OmsFileLog fileLog; diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPurchaseOrderServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPurchaseOrderServiceImpl.java index fe0cfd18..ad5ac0ce 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPurchaseOrderServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPurchaseOrderServiceImpl.java @@ -6,11 +6,13 @@ import java.util.function.Function; import java.util.stream.Collectors; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Dict; import com.alibaba.fastjson.JSON; import com.ruoyi.common.enums.ApproveStatusEnum; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; +import com.ruoyi.common.utils.mail.TemplateMailUtil; import com.ruoyi.sip.domain.*; import com.ruoyi.sip.dto.inventory.OmsPurchaseOrderItemDto; import com.ruoyi.sip.flowable.domain.Todo; @@ -406,7 +408,30 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService, To @Override public int vendorConfirmStatus(OmsPurchaseOrder omsPurchaseOrder) { omsPurchaseOrder.setUpdateTime(DateUtils.getNowDate()); - return omsPurchaseOrderMapper.updateOmsPurchaseOrder(omsPurchaseOrder); + + int i = omsPurchaseOrderMapper.updateOmsPurchaseOrder(omsPurchaseOrder); + //发送邮件 + OmsPurchaseOrder existsOrder = omsPurchaseOrderMapper.selectOmsPurchaseOrderById(omsPurchaseOrder.getId()); + List cssMailList = new ArrayList<>(); + //鼎盛需要抄送 + if ("P004".equals(existsOrder.getVendorCode())){ +// cssMailList.add("laiyk@dsipc.com.cn"); + cssMailList.add("chenhao2@unisinsight.com"); + } + + + if (StringUtils.isEmpty(existsOrder.getVendorEmail())){ + log.info("发货邮件发送失败,收件人为空"); + return i; + } + String templateTile="紫光汇智云桌面-{}-采购单入库通知"; + Dict dict = Dict.create(); + dict.put("purchaseNo",existsOrder.getPurchaseNo()); + String title = StringUtils.format(templateTile, existsOrder.getPurchaseNo()); + TemplateMailUtil.sendTemplateMail(Collections.singletonList(existsOrder.getVendorEmail()),title, + TemplateMailUtil.MailTemplate.VENDOR_CONFIRM_EMAIL, dict,cssMailList); + + return i; } diff --git a/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml index a24a77e9..0dea58b4 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml @@ -72,7 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , t1.purchaser_mobile, t1.purchaser_email, t1.warehouse_id, t1.pay_method, t1.owner_id, t1.owner_name, t1.remark, t1.total_amount,t1.flow_type , t1.status, t1.approve_status, t1.approve_time, t1.approve_node, t1.confirm_status, t1.create_time, t1.update_time, t1.del_flag,t1.version , t1.file_id - ,t2.vendor_name,t2.vendor_user,t2.vendor_phone,t3.warehouse_name + ,t2.vendor_name,t2.vendor_user,t2.vendor_code,t2.vendor_phone,t2.vendor_email,t3.warehouse_name from oms_purchase_order t1 left join oms_vendor_info t2 on t1.vendor_id = t2.vendor_id left join oms_warehouse_info t3 on t1.warehouse_id = t3.id