From 34b56683125b210f929b9ef5ea41a4dea009dfcf Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期二, 13 十月 2026 10:06:12 +0800
Subject: [PATCH] 差旅报销审批流程处理

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonationwitnessController.java |   53 ++++++++++++++++++++++++++++++++---------------------
 1 files changed, 32 insertions(+), 21 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonationwitnessController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonationwitnessController.java
index 1152ca9..c1f68fd 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonationwitnessController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonationwitnessController.java
@@ -6,12 +6,15 @@
 
 import com.ruoyi.common.annotation.NotRepeatCommit;
 import com.ruoyi.common.config.RuoYiConfig;
+import com.ruoyi.common.constant.HttpStatus;
 import com.ruoyi.common.enums.OrganEnum;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.DtoConversionUtils;
 import com.ruoyi.project.domain.ServiceDonatebaseinfo;
 import com.ruoyi.project.domain.ServiceDonateorgan;
+import com.ruoyi.project.domain.ServiceDonationwitnessorgan;
 import com.ruoyi.project.domain.vo.DonationWitnessVO;
 import com.ruoyi.project.domain.vo.TimeVO;
 import com.ruoyi.project.service.IBaseOnlyvalueService;
@@ -129,17 +132,20 @@
     @PostMapping("/add")
     @RepeatSubmit
     public AjaxResult add(@RequestBody ServiceDonationwitness serviceDonationwitness) {
-        boolean save = serviceDonationwitnessService.save(serviceDonationwitness);
-        log.info("鏂板鎹愮尞瑙佽瘉鏄惁鎴愬姛锛歿},id涓猴細{},infoId涓猴細{}", save, serviceDonationwitness.getId(), serviceDonationwitness.getInfoid());
-//        if (save) {
-//            //鐢熸垚鈥滄崘鐚�呯紪鍙封��
-//            ServiceDonatebaseinfo serviceDonatebaseinfo = serviceDonatebaseinfoService.getById(serviceDonationwitness.getInfoid());
-//            log.info("serviceDonatebaseinfo鐨勪俊鎭负{}", serviceDonatebaseinfo);
-//            String donorno = serviceDonatebaseinfoService.getDonateNumber(serviceDonatebaseinfo);
-//            log.info("鐢熸垚鐨勬崘鐚�呯紪鍙蜂负:{}", donorno);
-//            serviceDonatebaseinfo.setDonorno(donorno);
-//            serviceDonatebaseinfoService.updateById(serviceDonatebaseinfo);
-//        }
+        log.info("鏂板鎹愮尞瑙佽瘉infoId涓猴細{}", serviceDonationwitness.getInfoid());
+        ServiceDonationwitness sd = new ServiceDonationwitness();
+        sd.setInfoid(serviceDonationwitness.getInfoid());
+        sd.setDel_flag(0);
+        List<ServiceDonationwitness> serviceDonationwitnesses = serviceDonationwitnessService.selectServiceDonationwitnessList(sd);
+        if (CollectionUtils.isEmpty(serviceDonationwitnesses)) {
+            boolean save = serviceDonationwitnessService.save(serviceDonationwitness);
+            log.info("鏂板鎹愮尞瑙佽瘉鏄惁鎴愬姛锛歿},id涓猴細{},infoId涓猴細{}", save, serviceDonationwitness.getId(), serviceDonationwitness.getInfoid());
+        } else {
+            log.info("鏂板鎹愮尞瑙佽瘉id涓猴細{}", serviceDonationwitnesses.get(0).getId());
+            serviceDonationwitness.setId(serviceDonationwitnesses.get(0).getId());
+            serviceDonationwitnessService.updateById(serviceDonationwitness);
+        }
+
         return AjaxResult.success(serviceDonationwitness);
     }
 
@@ -206,18 +212,16 @@
         String name = "浜轰綋鍣ㄥ畼鎹愮尞鑾峰彇瑙佽瘉鐧昏琛╛" + dataMap.get("XM") + "_" + newTime;
         //杈撳嚭鏂囨。璺緞鍙婂悕绉�
         File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc");
-        Writer out = null;
-
-        try {
-            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"));
-
-        } catch (FileNotFoundException e1) {
-            e1.printStackTrace();
+        if (t == null) {
+            throw new ServiceException("妯℃澘鍔犺浇澶辫触锛岃妫�鏌ユā鏉挎枃浠舵槸鍚﹀瓨鍦�", HttpStatus.NO_CONTENT);
         }
-        try {
+
+        // Writer 蹇呴』鍏抽棴/鍒锋柊锛欱ufferedWriter 甯︾紦鍐诧紝涓嶅叧闂細閫犳垚鏂囦欢鍙ユ焺娉勬紡涓斿唴瀹瑰彲鑳戒笉瀹屾暣
+        try (Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"))) {
             t.process(dataMap, out);
-        } catch (TemplateException e) {
-            e.printStackTrace();
+        } catch (TemplateException | IOException e) {
+            log.error("鐢熸垚妯℃澘鏂囨。澶辫触, name={}", name, e);
+            throw new ServiceException("鐢熸垚鏂囨。澶辫触", HttpStatus.ERROR);
         }
         Map<String, Object> map = new HashMap<>();
         map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc");
@@ -548,6 +552,13 @@
         Boolean i = null;
         for (ServiceDonationwitness serviceDonationwitness : serviceDonationwitnessList) {
             log.info("鎹愮尞瑙佽瘉绠$悊id鏄惁涓虹┖ : {},鍩虹琛ㄧ殑id涓� : {}", serviceDonationwitness.getId(), serviceDonationwitness.getInfoid());
+            ServiceDonationwitness sd2 = new ServiceDonationwitness();
+            sd2.setInfoid(serviceDonationwitness.getInfoid());
+            sd2.setDel_flag(0);
+            List<ServiceDonationwitness> serviceDonationwitnesses = serviceDonationwitnessService.queryList(sd2);
+            if (!CollectionUtils.isEmpty(serviceDonationwitnesses)) {
+                serviceDonationwitness.setId(serviceDonationwitnesses.get(0).getId());
+            }
             if (serviceDonationwitness.getId() == null) {
                 i = serviceDonationwitnessService.save(serviceDonationwitness);
             } else {

--
Gitblit v1.9.3