From 194ecd2dbc3a9c7eccfe5d9809ff947715960465 Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期二, 13 十月 2026 17:32:14 +0800
Subject: [PATCH] 上传命名规则调整
---
ruoyi-project/src/main/java/com/ruoyi/project/common/FundNotifyMessageBuilder.java | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 180 insertions(+), 0 deletions(-)
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/common/FundNotifyMessageBuilder.java b/ruoyi-project/src/main/java/com/ruoyi/project/common/FundNotifyMessageBuilder.java
new file mode 100644
index 0000000..e09eb52
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/common/FundNotifyMessageBuilder.java
@@ -0,0 +1,180 @@
+package com.ruoyi.project.common;
+
+import com.ruoyi.common.enums.ApplyTypeEnum;
+import com.ruoyi.common.utils.StringUtils;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 鎶ラ攢瀹℃壒閽夐拤娑堟伅鍐呭缁勮銆�
+ *
+ * <p>缁熶竴銆屾爣棰� + 鍗曟嵁淇℃伅 + 瀹℃壒鎰忚鏂囨銆嶏紝渚涗互涓嬪彂閫佺偣澶嶇敤锛�
+ * <ul>
+ * <li>鑷磋繙 OA 鍥炰紶瀹℃壒鎰忚 鈥斺�� {@code ServiceFundServiceImpl#processlog} 鈫� {@code sendMeg}</li>
+ * <li>绯荤粺鍐呭鏍搁┏鍥烇紙璐圭敤鎶ラ攢锛� 鈥斺�� {@code ServiceFundServiceImpl#checkFund}</li>
+ * <li>绯荤粺鍐呭鏍搁┏鍥烇紙宸梾璐癸級 鈥斺�� {@code ServiceReimbursementServiceImpl#checkFund}</li>
+ * <li>宸梾璐逛笂鎶ユ彁浜� 鈥斺�� {@code ServiceReimbursementController#travelexpensereport}</li>
+ * </ul>
+ *
+ * <p><b>涓轰粈涔堣涓�琛屼竴涓� map锛�</b>{@code DingTalkReqVo.contents} 鐨勫厓绱犳槸
+ * {@link ConcurrentHashMap}锛屽叾閬嶅巻椤哄簭涓嶄繚璇侊紱涓�鏉� map 閲屽澶氳浼氬鑷撮拤閽夎〃鍗曡搴忛敊涔便��
+ * 杩欓噷姣忔潯淇℃伅鍗曠嫭涓�涓�屽崟閿� map銆嶏紝鐢� List 鐨勯『搴忎繚璇佹樉绀洪『搴忋��
+ *
+ * @author ruoyi
+ */
+public final class FundNotifyMessageBuilder {
+
+ /** 閽夐拤娑堟伅缁熶竴鏍囬锛�2026-10-08 涓氬姟鏂圭‘璁ょ粺涓�涓恒�孫PO鎶ラ攢瀹℃壒銆嶏級 */
+ public static final String TITLE = "OPO鎶ラ攢瀹℃壒";
+
+ /** 瀹℃壒缁撹锛氶�氳繃 */
+ public static final String CONCLUSION_PASS = "1";
+ /** 瀹℃壒缁撹锛氶┏鍥� */
+ public static final String CONCLUSION_REJECT = "2";
+ /** 瀹℃壒缁撹锛氬畬缁� */
+ public static final String CONCLUSION_FINISH = "3";
+
+ private static final String KEY_TYPE = "鎶ラ攢鍗曠被鍨嬶細";
+ private static final String KEY_BENEFICIARY = "鎶ラ攢浜猴細";
+ private static final String KEY_AMOUNT = "閲戦锛�";
+ private static final String KEY_DONOR = "鎹愮尞妗堜緥锛�";
+ private static final String KEY_BILL_NO = "鍗曟嵁缂栧彿锛�";
+ private static final String KEY_TRAVELERS = "鍑哄樊浜猴細";
+ private static final String KEY_REASON = "鍑哄樊浜嬬敱锛�";
+ private static final String KEY_CHECKER = "瀹℃壒浜猴細";
+ private static final String KEY_CHECK_TIME = "瀹℃壒鏃堕棿锛�";
+ private static final String KEY_OPINION = "鎰忚锛�";
+ private static final String KEY_SUBMITTER = "鎻愪氦浜猴細";
+ private static final String KEY_SUBMIT_TIME = "鎻愪氦鏃堕棿锛�";
+ private static final String KEY_CONTENT = "鍐呭锛�";
+
+ private FundNotifyMessageBuilder() {
+ }
+
+ /** 鏂板缓鍐呭琛屽鍣� */
+ public static List<ConcurrentHashMap<String, Object>> newRows() {
+ return new ArrayList<ConcurrentHashMap<String, Object>>();
+ }
+
+ /**
+ * 杩藉姞涓�琛屻�傚�间负绌猴紙null / 绌轰覆 / 鍏ㄧ┖鐧斤級鏃�**涓嶈拷鍔�**锛岄伩鍏嶉拤閽夐噷鍑虹幇绌鸿銆�
+ */
+ public static void addRow(List<ConcurrentHashMap<String, Object>> rows, String key, Object value) {
+ if (rows == null || key == null || value == null) {
+ return;
+ }
+ if (value instanceof String && StringUtils.isEmpty(((String) value).trim())) {
+ return;
+ }
+ ConcurrentHashMap<String, Object> row = new ConcurrentHashMap<String, Object>(1);
+ row.put(key, value);
+ rows.add(row);
+ }
+
+ /** 鎶ラ攢鍗曠被鍨嬶細applytype 鈫� 涓枃鍚嶏紱鏈尮閰嶈繑鍥� null锛堣琛屼笉鏄剧ず锛� */
+ public static String typeName(String applytype) {
+ return StringUtils.isEmpty(applytype) ? null : ApplyTypeEnum.getDescByCode(applytype);
+ }
+
+ /** 鍗曟嵁缂栧彿锛氫紭鍏堝彇涓氬姟缂栧彿 bh锛岀己澶辨椂閫�鍥炰富閿� id */
+ public static String billNo(String bh, Long id) {
+ if (StringUtils.isNotEmpty(bh)) {
+ return bh;
+ }
+ return id == null ? null : String.valueOf(id);
+ }
+
+ /**
+ * 杩藉姞鎶ラ攢鍗曞熀纭�淇℃伅锛氭姤閿�鍗曠被鍨� / 鎶ラ攢浜� / 閲戦 / 鎹愮尞妗堜緥 / 鍗曟嵁缂栧彿銆�
+ *
+ * <p>閲戦鍙e緞锛氳垂鐢ㄧ被鍙� {@code service_fund.pretaxcost}锛堝鏍搁〉銆岀敵璇烽噾棰濄�嶅垪锛夛紝
+ * 宸梾璐瑰彇 {@code service_reimbursement.amountrequested}锛堝鏍搁〉銆屾姤閿�閲戦銆嶅垪锛夈��
+ */
+ public static void addBillInfo(List<ConcurrentHashMap<String, Object>> rows,
+ String applytype, String beneficiary, Double amount,
+ String donorname, String billNo) {
+ addRow(rows, KEY_TYPE, typeName(applytype));
+ addRow(rows, KEY_BENEFICIARY, beneficiary);
+ addRow(rows, KEY_AMOUNT, money(amount));
+ addRow(rows, KEY_DONOR, donorname);
+ addRow(rows, KEY_BILL_NO, billNo);
+ }
+
+ /** 杩藉姞宸梾璐逛笓鏈変俊鎭細鍑哄樊浜� / 鍑哄樊浜嬬敱 */
+ public static void addTravelInfo(List<ConcurrentHashMap<String, Object>> rows,
+ String travelers, String reason) {
+ addRow(rows, KEY_TRAVELERS, travelers);
+ addRow(rows, KEY_REASON, reason);
+ }
+
+ /**
+ * 杩藉姞瀹℃壒缁撴灉锛氬鎵逛汉 / 瀹℃壒鏃堕棿 / 鎰忚銆�
+ *
+ * <p>瀹℃壒鏃堕棿浼� {@link Date}锛氶敭鍚嶅惈銆屽鎵规椂闂淬�嶏紝鐢� {@code DingTalkServiceImpl} 缁熶竴鏍煎紡鍖栥��
+ */
+ public static void addAuditResult(List<ConcurrentHashMap<String, Object>> rows,
+ String checker, Date checkTime, String opinion) {
+ addRow(rows, KEY_CHECKER, checker);
+ addRow(rows, KEY_CHECK_TIME, checkTime);
+ addRow(rows, KEY_OPINION, opinion);
+ }
+
+ /** 杩藉姞鎻愪氦閫氱煡淇℃伅锛氭彁浜や汉 / 鎻愪氦鏃堕棿 / 鍐呭锛堟椂闂村湪姝ら鏍煎紡鍖栵紝閬垮厤 Date.toString()锛� */
+ public static void addSubmitInfo(List<ConcurrentHashMap<String, Object>> rows,
+ String submitter, Date submitTime, String content) {
+ addRow(rows, KEY_SUBMITTER, submitter);
+ addRow(rows, KEY_SUBMIT_TIME, time(submitTime));
+ addRow(rows, KEY_CONTENT, content);
+ }
+
+ /**
+ * 瀹℃壒鎰忚鏂囨锛�2026-10-08 涓氬姟鏂圭‘璁わ級銆�
+ *
+ * <pre>
+ * 閫氳繃(1) 鈫� "瀹℃壒閫氳繃銆�" + 鎰忚澶囨敞锛堣嫢鏈夛級
+ * 椹冲洖(2) 鈫� "瀹℃壒鏈�氳繃銆�" + 鎰忚澶囨敞锛堣嫢鏈夛級
+ * 瀹岀粨(3) 鈫� "娴佺▼宸插畬缁撱��"
+ * 鍏朵粬/绌� 鈫� 鍘熸牱杩斿洖澶囨敞锛涙棤澶囨敞杩斿洖绌轰覆
+ * </pre>
+ *
+ * <p>瀹炴祴渚濇嵁锛堟湰鍦板簱 {@code service_fundflow.flowlevel=100} 鍗宠嚧杩滃洖浼犺褰曪級锛�
+ * 閫氳繃 11618 鏉′腑 9606 鏉℃剰瑙佷负绌恒�佸畬缁� 1457 鏉″叏閮ㄤ负绌恒�侀┏鍥� 743 鏉′腑 161 鏉′负绌恒��
+ * 鑻ヤ笉缁欑粨璁哄厹搴曟枃妗堬紝閽夐拤娑堟伅鐨勩�屾剰瑙併�嶄竴鏍忓氨鏄┖鐧斤紙杩欐鏄笟鍔″弽棣堢殑闂锛夈��
+ */
+ public static String opinion(String conclusion, String content) {
+ String remark = content == null ? "" : content.trim();
+ String base;
+ if (CONCLUSION_PASS.equals(conclusion)) {
+ base = "瀹℃壒閫氳繃銆�";
+ } else if (CONCLUSION_REJECT.equals(conclusion)) {
+ base = "瀹℃壒鏈�氳繃銆�";
+ } else if (CONCLUSION_FINISH.equals(conclusion)) {
+ base = "娴佺▼宸插畬缁撱��";
+ } else {
+ // 缁撹缂哄け锛氬彧鏄剧ず澶囨敞锛屼笉鑷嗘祴缁撹
+ return remark;
+ }
+ return remark.isEmpty() ? base : base + remark;
+ }
+
+ /** 閲戦鏄剧ず锛氫袱浣嶅皬鏁般�佹棤鍗冨垎浣嶏紝濡� {@code 1200.00 鍏儅 */
+ public static String money(Double amount) {
+ if (amount == null) {
+ return null;
+ }
+ return new BigDecimal(String.valueOf(amount))
+ .setScale(2, RoundingMode.HALF_UP)
+ .toPlainString() + " 鍏�";
+ }
+
+ /** 鏃堕棿鏄剧ず锛歿@code yyyy-MM-dd HH:mm:ss}锛�24 灏忔椂鍒讹級 */
+ public static String time(Date date) {
+ return date == null ? null : new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
+ }
+}
--
Gitblit v1.9.3