From d75a864b57bdc147e044fad256d640e4ff3bd0bb Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 12 十二月 2025 17:01:05 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java           |    7 +++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitness.java                |    7 +++
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java          |    7 +--
 ruoyi-project/src/main/java/com/ruoyi/project/common/IdGeneratorUtils.java                      |   59 +++++++++++++++++++++++++++++
 ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml                |    5 ++
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java |    8 +--
 6 files changed, 84 insertions(+), 9 deletions(-)

diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/common/IdGeneratorUtils.java b/ruoyi-project/src/main/java/com/ruoyi/project/common/IdGeneratorUtils.java
new file mode 100644
index 0000000..822749e
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/common/IdGeneratorUtils.java
@@ -0,0 +1,59 @@
+package com.ruoyi.project.common;
+
+import java.net.InetAddress;
+import java.util.concurrent.ThreadLocalRandom;
+
+public class IdGeneratorUtils {
+    // 鏈哄櫒ID锛�0-31锛�
+    private static final long MACHINE_ID = getMachineId() & 31L;
+    // 鏃堕棿鎴冲乏绉荤殑浣嶆暟锛�22浣嶇粰璁℃暟鍣紝5浣嶇粰鏈哄櫒ID锛�
+    private static final long TIMESTAMP_SHIFT = 22 + 5;
+    private static final long COUNTER_BITS = 22L;
+    private static final long MAX_COUNTER = (1L << COUNTER_BITS) - 1;
+
+    private static long lastTimestamp = -1L;
+    private static long counter = 0L;
+
+    public synchronized static long nextId() {
+        long timestamp = System.currentTimeMillis();
+
+        if (timestamp < lastTimestamp) {
+            throw new RuntimeException("Clock moved backwards");
+        }
+
+        if (timestamp == lastTimestamp) {
+            counter = (counter + 1) & MAX_COUNTER;
+            if (counter == 0) {
+                // 鍚屼竴姣鍐呰鏁板櫒鐢ㄥ畬锛岀瓑寰呬笅涓�姣
+                timestamp = waitNextMillis(lastTimestamp);
+            }
+        } else {
+            counter = 0L;
+        }
+
+        lastTimestamp = timestamp;
+
+        return ((timestamp) << TIMESTAMP_SHIFT) |
+                (MACHINE_ID << COUNTER_BITS) |
+                counter;
+    }
+
+    private static long waitNextMillis(long lastTimestamp) {
+        long timestamp = System.currentTimeMillis();
+        while (timestamp <= lastTimestamp) {
+            timestamp = System.currentTimeMillis();
+        }
+        return timestamp;
+    }
+
+    private static long getMachineId() {
+        try {
+            // 鍙互鏍规嵁闇�瑕佽幏鍙栨満鍣ㄦ爣璇嗭紝姣斿IP鍦板潃鏈�鍚庝竴娈�
+            String hostAddress = InetAddress.getLocalHost().getHostAddress();
+            return Long.parseLong(hostAddress.split("\\.")[3]);
+        } catch (Exception e) {
+            return ThreadLocalRandom.current().nextLong(32);
+        }
+    }
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitness.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitness.java
index b5934f5..b134606 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitness.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitness.java
@@ -44,6 +44,13 @@
     private String donorno;
 
     /**
+     * 鎹愮尞鍖婚櫌
+     */
+    @ApiModelProperty("鎹愮尞鍖婚櫌")
+    @Excel(name = "鎹愮尞鍖婚櫌")
+    private String donateHospital;
+
+    /**
      * 鍣ㄥ畼鑾峰彇鏈烘瀯缂栧彿
      */
     @ApiModelProperty("鍣ㄥ畼鑾峰彇鏈烘瀯缂栧彿")
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java
index 0b24198..a496175 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java
@@ -59,6 +59,13 @@
     private String organname;
 
     /**
+     * 鎹愮尞鍖婚櫌
+     */
+    @ApiModelProperty("鎹愮尞鍖婚櫌")
+    @Excel(name = "鎹愮尞鍖婚櫌")
+    private String donateHospital ;
+
+    /**
      * 鍣ㄥ畼缂栧彿
      */
     @ApiModelProperty("鍣ㄥ畼缂栧彿 ")
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
index 0434b71..28353ca 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
@@ -21,6 +21,7 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.DtoConversionUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.project.common.IdGeneratorUtils;
 import com.ruoyi.project.domain.*;
 import com.ruoyi.project.domain.vo.*;
 import com.ruoyi.project.mapper.*;
@@ -682,8 +683,6 @@
         return true;
     }
 
-    private static final AtomicLong COUNTER = new AtomicLong(System.currentTimeMillis());
-
     private Map<String, List<Map<String, Object>>> formson_0832(List<ServiceFunddetailShared> serviceFunddetailSharedList) {
         Map<String, List<Map<String, Object>>> allMap = new HashMap<>();
 
@@ -703,7 +702,7 @@
             map.put("鏀剁泭浜哄灞炴垨涓撳", serviceFunddetailShared.getBeneficiaryname());
             map.put("绋庡悗閲戦", serviceFunddetailShared.getTaxedamount());
             map.put("浣滃簾鏈�缁堥噾棰�", null);
-            Long fpuuid = COUNTER.incrementAndGet();
+            Long fpuuid = IdGeneratorUtils.nextId();
             map.put("鍙戠エ闄勪欢", "");
             if (StringUtils.isNotEmpty(invoicefiles)) {
                 map.put("鍙戠エ闄勪欢", fpuuid);
@@ -711,7 +710,7 @@
             map.put("鍙戠エ璇嗗埆", null);
             map.put("璇嗗埆浜�", null);
             map.put("绋庨", serviceFunddetailShared.getTaxamount());
-            long qtuuid = COUNTER.incrementAndGet();
+            long qtuuid = IdGeneratorUtils.nextId();
             map.put("鍏朵粬闄勪欢", "");
             if (StringUtils.isNotEmpty(annexfiles)) {
                 map.put("鍏朵粬闄勪欢", qtuuid);
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 1cc2a8b..df1c025 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,7 +17,7 @@
 import com.ruoyi.common.utils.HttpClientKit;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.DtoConversionUtils;
-import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.project.common.IdGeneratorUtils;
 import com.ruoyi.project.domain.*;
 import com.ruoyi.project.domain.dto.ServiceReimbursementDto;
 import com.ruoyi.project.domain.vo.CheckFundVO;
@@ -635,8 +635,6 @@
         return true;
     }
 
-    private static final AtomicLong COUNTER = new AtomicLong(System.currentTimeMillis());
-
     private Map<String, List<Map<String, Object>>> formson_1210(List<ServiceReimbursementdetailShared> serviceReimbursementdetailSharedList) {
         Map<String, List<Map<String, Object>>> allMap = new HashMap<>();
         List<Map<String, Object>> list = new ArrayList<>();
@@ -667,12 +665,12 @@
             map.put("浜哄憳绫诲埆", reimbursementdetailShared.getPersontype());
             map.put("浣忓璐规爣鍑�", "");
             map.put("浣忓璐规爣鍑嗗悎璁�", reimbursementdetailShared.getHotelexpense());
-            Long fpuuid = COUNTER.incrementAndGet();
+            Long fpuuid = IdGeneratorUtils.nextId();
             map.put("鍙戠エ闄勪欢", fpuuid);
             map.put("绁ㄦ嵁璇嗗埆", "");
             map.put("璇嗗埆浜�", "");
             map.put("搴忓彿1", "");
-            Long qtuuid = COUNTER.incrementAndGet();
+            Long qtuuid = IdGeneratorUtils.nextId();
             map.put("鍏朵粬闄勪欢", qtuuid);
             map.put("涓汉绁ㄥす鐢ㄦ埛", "");
             map.put("璇嗗埆绁ㄦ嵁", "");
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
index 73e8fb3..8edb45a 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
@@ -47,11 +47,13 @@
         <result property="coordinatorOutOperating" column="coordinator_out_operating"/>
         <result property="coordinatorSign" column="coordinator_sign"/>
         <result property="coordinatorSignTime" column="coordinator_sign_time"/>
+        <result property="donateHospital" column="donate_hospital"/>
     </resultMap>
 
     <sql id="selectServiceDonationwitnessVo">
         select ID,
                InfoID,
+               donate_hospital,
                coordinator_in_operating,
                coordinator_out_operating,
                coordinator_sign,
@@ -100,6 +102,7 @@
         <include refid="selectServiceDonationwitnessVo"/>
         <where>
             <if test="donorno != null  and donorno != ''">and DonorNo = #{donorno}</if>
+            <if test="donateHospital != null  and donateHospital != ''">and donate_hospital = #{donateHospital}</if>
             <if test="gainhospitalname != null  and gainhospitalname != ''">and GainHospitalName like concat('%',
                 #{gainhospitalname}, '%')
             </if>
@@ -173,6 +176,7 @@
         `service_donationwitness`.`coordinator_out_operating` AS `coordinatorOutOperating`,
         `service_donationwitness`.`coordinator_sign` AS `coordinatorSign`,
         `service_donationwitness`.`coordinator_sign_time` AS `coordinatorSignTime`
+        `service_donationwitness`.`donate_hospital` AS `donate_hospital`
         FROM
         `service_donatebaseinfo`
         LEFT JOIN `service_donationwitness` ON
@@ -265,6 +269,7 @@
             w.del_flag=0
             and b.del_flag=0
             <if test="starttime != null ">and w.OperationBegTime >= #{starttime}</if>
+            <if test="donateHospital != null ">and w.donate_hospital >= #{donateHospital}</if>
             <if test="endtime != null ">and w.OperationBegTime &lt;= #{endtime}</if>
             <if test="city != null and city != ''">and o.City = #{city}</if>
             <if test="reporterno != null and reporterno != ''">and b.ReporterNo = #{reporterno}</if>

--
Gitblit v1.9.3