From 68b49efb4da346edb42a5d8ebb39af47207402bd Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期一, 12 十月 2026 11:14:13 +0800
Subject: [PATCH] 修改了报销校验
---
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 100 insertions(+), 20 deletions(-)
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
index f566881..bbb0cb4 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
@@ -17,6 +17,8 @@
import com.ruoyi.common.utils.HttpClientKit;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.project.common.FundNotifyMessageBuilder;
import com.ruoyi.project.common.IdGeneratorUtils;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.dto.ServiceReimbursementDto;
@@ -27,6 +29,7 @@
import com.ruoyi.project.service.*;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
+import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysPostService;
import com.ruoyi.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
@@ -116,6 +119,35 @@
@Value("${spring.profiles.active}")
private String active;
+
+ @Autowired
+ private ISysConfigService sysConfigService;
+
+ /**
+ * 瀹℃壒鍗曟槸鍚︿笂浼犲尰闄㈠崗鍙嬶紙鑷磋繙锛夌郴缁燂細0=涓嶄笂浼狅紙娴嬭瘯鐜锛夛紝1=涓婁紶锛堟寮忕幆澧冿級銆�
+ *
+ * <p>2026-10-09 鏂板锛氬師鏉ョ敤 {@code spring.profiles.active == druid} 鏉ュ垽鏂槸鍚︽帹閫侊紝
+ * 瀵艰嚧娴嬭瘯鐜涓庢寮忕幆澧冩棤娉曢�氳繃鍙傛暟鍖哄垎銆傛敼涓虹郴缁熷弬鏁版帶鍒讹紝鐜鍚勮嚜閰嶇疆銆�
+ */
+ private static final String CFG_UPLOAD_OA = "sys.approval.upload.oa";
+
+ /** 鍙傛暟缂虹渷鍊硷細涓婁紶锛堜繚鎸佹寮忕幆澧冨師鏈夎涓猴級 */
+ private static final boolean DEFAULT_UPLOAD_OA = true;
+
+ /** 瀹℃壒鍗曟槸鍚﹂渶瑕佷笂浼犲尰闄㈠崗鍙嬶紙鑷磋繙锛夌郴缁� */
+ private boolean isUploadOaEnabled() {
+ String value = null;
+ try {
+ value = sysConfigService.selectConfigByKey(CFG_UPLOAD_OA);
+ } catch (Exception e) {
+ log.warn("璇诲彇鍙傛暟 {} 澶辫触锛屾寜榛樿鍊� {} 澶勭悊", CFG_UPLOAD_OA, DEFAULT_UPLOAD_OA, e);
+ }
+ if (value == null || value.trim().isEmpty()) {
+ return DEFAULT_UPLOAD_OA;
+ }
+ String v = value.trim();
+ return "1".equals(v) || "true".equalsIgnoreCase(v) || "y".equalsIgnoreCase(v) || "on".equalsIgnoreCase(v);
+ }
/**
@@ -259,7 +291,7 @@
log.info("涓婁紶OA鏂囦欢鏂规硶鐨勫叆鍙�:{}", serviceReimbursementdetailShareds.get(i));
try {
//濡傛灉鏄湰鍦扮幆澧冿紝灏变笉璋冭繖涓簡
- if (!active.equals("druid")) uploadOAFileAndUpdateDb(serviceReimbursementdetailShareds.get(i));
+ if (isUploadOaEnabled()) uploadOAFileAndUpdateDb(serviceReimbursementdetailShareds.get(i));
} catch (Exception e) {
log.error("Exception涓璻eimShare鐨勫叆鍙俰d涓猴細{}", serviceReimbursementShared.getId());
if (serviceReimbursementShared.getId() != null) {
@@ -333,6 +365,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public Map<String, String> checkFund(LoginUser loginUser, CheckFundVO checkFundVO) {
Map<String, String> allMap = new HashMap<>();
@@ -397,8 +430,9 @@
if (newSwitch == 1) {
aBoolean1 = sendData(serviceReimbursement);
if (!aBoolean1) {
- allMap.put("500", "鍙戦�佸け璐�");
- return allMap;
+ // 鎺ㄩ�佸尰闄㈠崗鍙嬬郴缁熷け璐ワ細鏁翠釜瀹℃壒涓嶇敓鏁堬紙浜嬪姟鍥炴粴锛夛紝鍏佽涓嬫閲嶆柊瀹℃壒
+ log.error("宸梾瀹℃壒鍗曚笂浼犲尰闄㈠崗鍙嬬郴缁熷け璐ワ紝瀹℃壒涓嶇敓鏁堬紝id={}锛岃閲嶆柊瀹℃壒", serviceReimbursement.getId());
+ throw new ServiceException("鍖婚櫌鍗忓弸绯荤粺鎺ユ敹澶辫触锛屾湰娆″鎵规湭鐢熸晥锛岃绋嶅悗閲嶆柊瀹℃壒");
}
}
//淇濆瓨瀹℃壒娴佺▼琛�
@@ -443,22 +477,25 @@
}
}
SysUser sysUser = sysUserService.selectUserByUserName(serviceReimbursement.getUserno());
- ArrayList<ConcurrentHashMap<String, Object>> contentList = new ArrayList<>();
- ConcurrentHashMap map = new ConcurrentHashMap();
- map.put("瀹℃壒浜猴細", loginUser.getUser().getUserName());
- map.put("瀹℃壒鏃堕棿锛�", new Date());
- map.put("鎰忚锛�", "涓嶉�氳繃");
- if (StringUtils.isNotBlank(checkFundVO.getFlowcontent()))
- map.put("鎰忚锛�", checkFundVO.getFlowcontent());
- contentList.add(map);
+ //瀹℃壒鏈�氳繃锛氬崟鎹俊鎭� + 鍑哄樊淇℃伅 + 瀹℃壒浜�/瀹℃壒鏃堕棿/鎰忚锛堟剰瑙� = "瀹℃壒鏈�氳繃銆�" + 椹冲洖鎰忚锛�
+ List<ConcurrentHashMap<String, Object>> contentList = FundNotifyMessageBuilder.newRows();
+ FundNotifyMessageBuilder.addBillInfo(contentList, "0", serviceReimbursement.getUsername(),
+ serviceReimbursement.getAmountrequested(), null,
+ FundNotifyMessageBuilder.billNo(serviceReimbursement.getBh(),
+ serviceReimbursement.getId()));
+ FundNotifyMessageBuilder.addTravelInfo(contentList, serviceReimbursement.getTravelers(),
+ serviceReimbursement.getReason());
+ FundNotifyMessageBuilder.addAuditResult(contentList, loginUser.getUser().getNickName(), new Date(),
+ FundNotifyMessageBuilder.opinion(FundNotifyMessageBuilder.CONCLUSION_REJECT,
+ checkFundVO.getFlowcontent()));
try {
DingTalkReqVo dingTalkReqVo = new DingTalkReqVo();
- dingTalkReqVo.setTitle("璐㈠姟绯荤粺椹冲洖淇℃伅");
+ dingTalkReqVo.setTitle(FundNotifyMessageBuilder.TITLE);
dingTalkReqVo.setNumber(sysUser.getPhonenumber());
dingTalkReqVo.setContents(contentList);
dingTalkService.sendNotification(dingTalkReqVo);
- }catch (Exception e){
- log.error("宸梾---璐㈠姟绯荤粺椹冲洖淇℃伅鎶ラ敊浜�", e);
+ } catch (Exception e) {
+ log.error("宸梾---瀹℃壒鏈�氳繃閽夐拤閫氱煡澶辫触锛宨d={}", serviceReimbursement.getId(), e);
}
}
@@ -515,8 +552,9 @@
log.info("宸梾newSwitch杩斿洖鐨勫�间负:{}", newSwitch);
aBoolean1 = sendData(serviceReimbursement);
if (!aBoolean1) {
- allMap.put("500", "鍙戦�佸け璐�");
- return allMap;
+ // 鎺ㄩ�佸尰闄㈠崗鍙嬬郴缁熷け璐ワ細鏁翠釜瀹℃壒涓嶇敓鏁堬紙浜嬪姟鍥炴粴锛夛紝鍏佽涓嬫閲嶆柊瀹℃壒
+ log.error("宸梾瀹℃壒鍗曚笂浼犲尰闄㈠崗鍙嬬郴缁熷け璐ワ紝瀹℃壒涓嶇敓鏁堬紝id={}锛岃閲嶆柊瀹℃壒", serviceReimbursement.getId());
+ throw new ServiceException("鍖婚櫌鍗忓弸绯荤粺鎺ユ敹澶辫触锛屾湰娆″鎵规湭鐢熸晥锛岃绋嶅悗閲嶆柊瀹℃壒");
}
}
}
@@ -585,7 +623,30 @@
return "鏈壘鍒板鎵硅褰�";
}
+ /**
+ * 瀹℃壒鍗曚笂浼犲尰闄㈠崗鍙嬶紙鑷磋繙锛夌郴缁熴��
+ *
+ * <p>2026-10-09锛氬灞傚寘涓�灞傚厹搴曪紝淇濊瘉**浠讳綍寮傚父閮戒笉浼氬悜澶栨姏**锛堝師鏉� strRes 涓� null 鏃�
+ * 浼氬湪 parseObject 鍚庡彇 code 瑙﹀彂 NPE锛屾妸鏁翠釜瀹℃壒璇锋眰鎵撴垚 500锛夈��
+ * 杩斿洖 false 琛ㄧず鎺ㄩ�佸け璐ワ紝璋冪敤鏂规寜"瀹℃壒涓嶇敓鏁堛�佸厑璁镐笅娆¢噸鏂板鎵�"澶勭悊銆�
+ */
public Boolean sendData(ServiceReimbursement serviceReimbursement) {
+ if (!isUploadOaEnabled()) {
+ // 涓婁紶寮�鍏冲叧闂紙濡傛祴璇曠幆澧冿級锛氳烦杩囦笂浼犲苟瑙嗕负鎴愬姛锛岀粷涓嶈兘鍥犳闃绘柇瀹℃壒
+ log.info("瀹℃壒鍗曚笂浼犲尰闄㈠崗鍙嬬郴缁熷凡鍏抽棴锛坰ys.approval.upload.oa != 1锛夛紝璺宠繃涓婁紶骞惰涓烘垚鍔燂紝id={}",
+ serviceReimbursement == null ? null : serviceReimbursement.getId());
+ return true;
+ }
+ try {
+ return doSendData(serviceReimbursement);
+ } catch (Throwable t) {
+ log.error("宸梾瀹℃壒鍗曚笂浼犲尰闄㈠崗鍙嬬郴缁熷紓甯革紝瀹℃壒涓嶇敓鏁堬紝id={}",
+ serviceReimbursement == null ? null : serviceReimbursement.getId(), t);
+ return false;
+ }
+ }
+
+ private Boolean doSendData(ServiceReimbursement serviceReimbursement) {
// fund鍜宖unddetail鐨勬暟鎹幏鍙�
addSharedData(serviceReimbursement.getId());
List<ServiceReimbursementShared> serviceReimbursementSharedList = sharedService.getRemShareInfoByRemId(serviceReimbursement.getId());
@@ -631,7 +692,7 @@
data.put("summaryId", serviceReimbursement1.getSummaryId() == null ? "" : serviceReimbursement1.getSummaryId());
map.put("data", data);
String strRes = null;
- if (!active.equals("druid")) {
+ if (isUploadOaEnabled()) {
//濡傛灉鏄湰鍦扮幆澧冿紝灏变笉璋冭繖涓簡
String token = getToken();
JSONObject json1 = JSONObject.parseObject(token);
@@ -662,9 +723,28 @@
}
}
log.error("-----Reimbursement-------------strRes鐨勫�间负锛歿}", strRes);
- JSONObject jsonObject = JSONObject.parseObject(strRes);
+ if (strRes == null || strRes.trim().isEmpty()) {
+ // 鍖婚櫌鍗忓弸绯荤粺鏃犺繑鍥烇紙瓒呮椂/寮傚父/鏈厤缃級锛氭帹閫佸け璐ワ紝鐢辫皟鐢ㄦ柟鍥炴粴鏁翠釜瀹℃壒
+ log.error("宸梾瀹℃壒鍗曚笂浼犲尰闄㈠崗鍙嬬郴缁熷け璐ワ細鎺ュ彛鏃犺繑鍥炲唴瀹癸紝id={}", serviceReimbursement.getId());
+ return false;
+ }
+ JSONObject jsonObject = null;
+ try {
+ jsonObject = JSONObject.parseObject(strRes);
+ } catch (Exception e) {
+ log.error("宸梾瀹℃壒鍗曚笂浼犲尰闄㈠崗鍙嬬郴缁熷け璐ワ細杩斿洖鍐呭鏃犳硶瑙f瀽锛宨d={}锛宻trRes={}",
+ serviceReimbursement.getId(), strRes, e);
+ return false;
+ }
+ if (jsonObject == null) {
+ log.error("宸梾瀹℃壒鍗曚笂浼犲尰闄㈠崗鍙嬬郴缁熷け璐ワ細杩斿洖鍐呭涓虹┖锛宨d={}锛宻trRes={}",
+ serviceReimbursement.getId(), strRes);
+ return false;
+ }
String code = jsonObject.getString("code");
- if (!code.equals("0")) {
+ if (code == null || !"0".equals(code)) {
+ log.error("宸梾瀹℃壒鍗曚笂浼犲尰闄㈠崗鍙嬬郴缁熷け璐ワ細code={}锛宨d={}锛宻trRes={}",
+ code, serviceReimbursement.getId(), strRes);
return false;
}
@@ -876,7 +956,7 @@
Map<String, Object> map = new HashMap<String, Object>();
map.put("userName", "opo");
map.put("password", "4126407a-9821-4874-be41-6568abd6dbe5");
- map.put("loginName", "OPO绯荤粺");
+ map.put("loginName", "OPO绯荤粺瀹℃壒");
JSONObject jsonObj = new JSONObject(map);
--
Gitblit v1.9.3