From 64bce2eb858b95e7851b6c05fa34938dbfb701e6 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 30 五月 2024 16:49:13 +0800
Subject: [PATCH] 修改因算税时间一税,导致获取历史数据不准的问题(加上xh字段) 个税汇总里的功能,删除时一个fund时,将相应的fund的“算税时间” 和"funddetail"表里的“算税时间”、“序号”置空

---
 ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml                  |   18 ++++++++-
 ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml                        |    3 +
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetailVO.java                |    6 +++
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java            |    2 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java       |   12 +++++-
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java    |    4 ++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java                |    5 ++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java                  |   18 +++++++--
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java |   42 ++++++++++++++++++--
 9 files changed, 96 insertions(+), 14 deletions(-)

diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java
index dbe6445..99ce37a 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java
@@ -216,7 +216,9 @@
     @Excel(name = "鍙戠エ寮犳暟")
     private Long invoicecount;
 
-    /** $column.columnComment */
+    /**
+     * $column.columnComment
+     */
     @ApiModelProperty("$column.columnComment")
     @Excel(name = "涓婁紶鏃堕棿")
     private BigDecimal reimbursementamount;
@@ -337,14 +339,16 @@
      * 闄勪欢鏂囦欢鍦板潃
      */
     @ApiModelProperty("闄勪欢鏂囦欢鍦板潃")
-    @TableField(value = "annexfiles",updateStrategy = FieldStrategy.IGNORED)
+    @TableField(value = "annexfiles", updateStrategy = FieldStrategy.IGNORED)
     private String annexfiles;
 
     /**
      * 闄勪欢鏂囦欢鍦板潃
      */
-    /** 鍙戠エ闄勪欢 */
-    @TableField(value = "invoicefiles",updateStrategy =FieldStrategy.IGNORED)
+    /**
+     * 鍙戠エ闄勪欢
+     */
+    @TableField(value = "invoicefiles", updateStrategy = FieldStrategy.IGNORED)
     @ApiModelProperty("鍙戠エ闄勪欢")
     @Excel(name = "鍙戠エ闄勪欢")
     private String invoicefiles;
@@ -382,5 +386,11 @@
     @ApiModelProperty("閮ㄩ棬鍚嶇О")
     private String deptName;
 
+    /**
+     * 搴忓彿
+     */
+    @ApiModelProperty("搴忓彿")
+    private Long xh;
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetailVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetailVO.java
index 7bc954e..3690179 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetailVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetailVO.java
@@ -288,6 +288,12 @@
     private String servicesscope;
 
     /**
+     * 搴忓彿
+     */
+    @ApiModelProperty("搴忓彿")
+    private Long xh;
+
+    /**
      * 鏈嶅姟鑼冨洿鍚嶇О
      */
     @ApiModelProperty("鏈嶅姟鑼冨洿鍚嶇О")
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java
index 936ec16..3beb534 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java
@@ -42,4 +42,9 @@
      */
     private Long fundID;
 
+    /**
+     * 搴忓彿
+     */
+    private Long xh;
+
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
index ee1c509..7c564a7 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
@@ -55,6 +55,8 @@
 
     TaxMoneySumEO getTaxSum(TaxMoneyByItemEO taxMoneyByItemEO);
 
+    Long getMaxXH(TaxMoneyByItemEO taxMoneyByItemEO);
+
     List<ServiceFunddetail> totlaTax(List<Long> fundids);
 
 }
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 e3126ac..5cc56c4 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
@@ -708,7 +708,7 @@
 
     @Override
     public List<SpFinancialExpensesFundOut> getExpertfeeList(SpSelectExpertfee spSelectExpertfee) {
-        log.info("spSelectExpertfee鐨勫叆鍙備负锛歿}",spSelectExpertfee);
+        log.info("spSelectExpertfee鐨勫叆鍙備负锛歿}", spSelectExpertfee);
         return serviceFundMapper.getExpertfeeList(spSelectExpertfee.getPaApplyType(), spSelectExpertfee.getPfundtaxid(), spSelectExpertfee.getDonorname(), spSelectExpertfee.getPadepartid(), spSelectExpertfee.getPausername());
     }
 
@@ -1190,6 +1190,14 @@
 
     @Transactional(rollbackFor = Exception.class)
     public Boolean updateFundTaxIdById(Long id, Long fundTaxId) {
-        return serviceFundMapper.updateFundTaxIdById(id, fundTaxId);
+        //灏唂und閲岀殑绠楃◣鏃堕棿锛屼笌璇︽儏閲岀殑鐗堢◣鏃堕棿鍏ㄦ竻绌�
+        Boolean aBoolean = serviceFundMapper.updateFundTaxIdById(id, fundTaxId);
+        ServiceFunddetail serviceFunddetail = new ServiceFunddetail();
+        serviceFunddetail.setFundid(id);
+        serviceFunddetail.setTaxTime(null);
+        serviceFunddetail.setXh(null);
+        boolean b = serviceFunddetailMapper.updateTaxTime(serviceFunddetail);
+
+        return b;
     }
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
index 26f1267..a7038e2 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
@@ -276,13 +276,23 @@
         if (CollectionUtils.isEmpty(serviceFunddetails)) {
             throw new BaseException("绠楃◣鏉′欢涓虹┖锛岃妫�鏌ュ悗锛屽啀杩涜璁$畻");
         }
+        // 鍏堝serviceFunddetails鎺掑簭
+        Comparator<ServiceFunddetail> customComparator = Comparator.comparing(obj -> {
+            if (ObjectUtils.isEmpty(obj.getTaxTime())) {
+                return 1; // 杩斿洖1琛ㄧず瀛楁涓虹┖鐨勫璞℃帓鍦ㄥ悗闈�
+            } else {
+                return 0; // 杩斿洖0琛ㄧず瀛楁涓嶄负绌虹殑瀵硅薄淇濇寔鍘熼『搴�
+            }
+        });
+        Collections.sort(serviceFunddetails, customComparator);
+
         //杩欎釜鏄负浜嗚幏鍙杅und_tax_time
         Long fundid = serviceFunddetails.get(0).getFundid();
         log.info("绠楃◣鐨刦undid鐨勫�间负锛歿}", fundid);
         ServiceFund serviceFund1 = serviceFundMapper.selectById(fundid);
         log.info("fund琛ㄧ殑fundtextime鍊间负锛歿}", serviceFund1.getFundtaxtime());
 
-        //鐢ㄤ簬涓存椂淇濆瓨宸茬粡绠楀ソ鐨�"璐圭敤璇︽儏鏁版嵁"
+//        //鐢ㄤ簬涓存椂淇濆瓨宸茬粡绠楀ソ鐨�"璐圭敤璇︽儏鏁版嵁"
         List<ServiceFunddetail> temporarySave = new ArrayList<>();
         //淇濆瓨鎬荤◣鍓嶉噾棰濓紙鐢ㄤ簬鏇存柊fund琛ㄩ噷鐨勶級
         BigDecimal pretaxcost = BigDecimal.valueOf(0.00);
@@ -309,8 +319,16 @@
 
             //鑾峰彇褰撴湀鐨勭涓�澶�
             Date firstDay = Date.from(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay(ZoneId.systemDefault()).toInstant());
-//            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//            String firstDatStr = dateFormat.format(firstDay);
+            //鑾峰彇鍒板綋鍓嶄汉鐨勬湰鏈堢畻绋庡簭鍙锋渶澶у��
+            TaxMoneyByItemEO taxMoneyByItemEO = new TaxMoneyByItemEO();
+            taxMoneyByItemEO.setFirstDay(firstDay);
+            taxMoneyByItemEO.setIDCard(serviceFunddetail.getIdcardno());
+            taxMoneyByItemEO.setTaxTime(new Date());
+            Long maxXH = serviceFunddetailMapper.getMaxXH(taxMoneyByItemEO);
+            if (maxXH == null) {
+                maxXH = 0L;
+            }
+
             TaxMoneyByItemEO taxMoneyVO = new TaxMoneyByItemEO();
             if (serviceFund1.getFundtaxtime() != null) {
                 taxMoneyVO.setTaxTime(serviceFund1.getFundtaxtime());
@@ -320,6 +338,11 @@
             taxMoneyVO.setFirstDay(firstDay);
             taxMoneyVO.setFundID(serviceFunddetail.getFundid());
             taxMoneyVO.setIDCard(serviceFunddetail.getIdcardno());
+            if (serviceFunddetail.getXh() != null) {
+                taxMoneyVO.setXh(serviceFunddetail.getXh());
+            } else {
+                taxMoneyVO.setXh(maxXH + 1);
+            }
             //鏌ュ嚭绋庡墠銆佺◣銆佺◣鍚庣殑鎬婚锛堜笉鍖呭惈鏈锛�
             TaxMoneySumEO taxSum = serviceFunddetailMapper.getTaxSum(taxMoneyVO);
             logger.info("鏌ヨ鐨則axSum鐨勫�� 锛� {}", taxSum);
@@ -344,6 +367,9 @@
                     }
                     continue;
                 }
+            }
+            if (serviceFunddetail.getXh() == null) {
+                serviceFunddetail.setXh(maxXH + 1);
             }
 
             if (StringUtils.isEmpty(serviceFunddetail.getServicesscopename()) || !serviceFunddetail.getServicesscopename().contains("绋庡悗")) {
@@ -373,10 +399,11 @@
                 logger.info("鎵撳嵃绋庡墠serviceFunddetail3鏁版嵁 :{}", serviceFunddetail3);
 
                 // 灏嗚鏉℃暟鎹洿鏂�
+
                 boolean b = this.updateById(serviceFunddetail3);
                 pretaxcost = pretaxcost.add(BigDecimal.valueOf(serviceFunddetail.getAmount()));
                 taxedcost = taxedcost.add(BigDecimal.valueOf(serviceFunddetail.getTaxedamount()));
-                // 鎶婅鏁版嵁锛屾斁鍒颁复鏃剁殑闆嗗悎涓�
+//                // 鎶婅鏁版嵁锛屾斁鍒颁复鏃剁殑闆嗗悎涓�
                 temporarySave.add(serviceFunddetail3);
             } else if (serviceFunddetail.getServicesscopename().contains("绋庡悗")) {
                 logger.info("璁$畻绋庡悗淇℃伅寮�濮嬶細{}", serviceFunddetail);
@@ -403,11 +430,16 @@
                     serviceFunddetail3.setTaxTime(serviceFund1.getFundtaxtime());
                 }
                 logger.info("鎵撳嵃serviceFunddetail3:{}", serviceFunddetail3);
+                //鑾峰彇鍒板綋鍓嶄汉鐨勬湰鏈堢畻绋庡簭鍙锋渶澶у��
+                TaxMoneyByItemEO byItemEO = new TaxMoneyByItemEO();
+                byItemEO.setFirstDay(firstDay);
+                byItemEO.setIDCard(serviceFunddetail.getIdcardno());
+                byItemEO.setTaxTime(new Date());
                 // 灏嗚鏉℃暟鎹洿鏂�
                 updateById(serviceFunddetail3);
                 pretaxcost = pretaxcost.add(BigDecimal.valueOf(serviceFunddetail3.getAmount()));
                 taxedcost = taxedcost.add(BigDecimal.valueOf(serviceFunddetail3.getTaxedamount()));
-                // 鎶婅鏁版嵁锛屾斁鍒颁复鏃剁殑闆嗗悎涓�
+//                // 鎶婅鏁版嵁锛屾斁鍒颁复鏃剁殑闆嗗悎涓�
                 temporarySave.add(serviceFunddetail3);
             }
         }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java
index e34b7e8..5e51ccc 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java
@@ -14,6 +14,7 @@
 import com.ruoyi.project.service.IServiceFundService;
 import com.ruoyi.project.service.IServiceFunddetailService;
 import com.ruoyi.project.service.IServiceFundtaxService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -26,6 +27,7 @@
  * @author ruoyi
  * @date 2024-03-13
  */
+@Slf4j
 @Service
 public class ServiceFundtaxServiceImpl extends ServiceImpl<ServiceFundtaxMapper, ServiceFundtax> implements IServiceFundtaxService {
 
@@ -158,11 +160,13 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean batchFundTax(FundTaxVO fundTaxVO) {
+        log.info("鎵归噺绠楃◣鐨刦undTaxVO鍏ュ弬涓猴細{}", fundTaxVO);
         if (fundTaxVO.getFundTaxId() == null) {
             throw new BaseException("鍒嗘壒绠楃◣鍑洪棶棰樹簡,璇锋鏌ュ悗鍐嶈繘琛岃绠�");
         }
         if (fundTaxVO.getAddOrupdate() == 1) {
             Integer maxFundTaxId = serviceFundtaxMapper.getMaxFundTaxId();
+            log.info("鎵归噺绠楃◣鐨刴axFundTaxId涓猴細{}", maxFundTaxId);
             if (fundTaxVO.getFundTaxId() != maxFundTaxId.longValue()) {
                 throw new BaseException("璇ユ壒鏁版嵁涓嶈兘绠楃◣");
             }
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
index 81d136d..16808bb 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
@@ -277,7 +277,8 @@
     <update id="updateFundTaxIdById">
         update service_fund
         <set>
-            fund_tax_id = #{fundTaxId}
+            fund_tax_id = #{fundTaxId},
+            fundtaxtime = null
         </set>
         where id = #{id}
     </update>
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
index 9f09a61..f59fd3a 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
@@ -64,11 +64,13 @@
         <result property="invoicefiles" column="InvoiceFiles"/>
         <result property="deptId" column="dept_id"/>
         <result property="deptName" column="dept_name"/>
+        <result property="xh" column="xh"/>
     </resultMap>
 
     <sql id="selectServiceFunddetailVo">
         select ID,
                fundID,
+               xh,
                InfoId,
                DonorNo,
                dept_id,
@@ -265,6 +267,7 @@
         update com.ruoyi.project.domain.
         <set>
             tax_time = #{taxTime},
+            xh = #{xh}
         </set>
         where fundID = #{fundid}
     </update>
@@ -275,7 +278,8 @@
         FROM service_funddetail a,
              service_fund b
         where a.FundID = b.id
-          and a.tax_time &lt; #{taxTime}
+          and a.tax_time &lt;= #{taxTime}
+          and a.xh &lt; #{xh}
           and a.tax_time >= #{firstDay}
           and TRIM(a.IDCardNo) = #{IDCard}
           and a.del_flag != 1
@@ -286,6 +290,16 @@
           and b.del_flag != 1
           and b.ApplyType in (1
             , 2)
+    </select>
+
+    <select id="getMaxXH" parameterType="com.ruoyi.project.domain.vo.TaxMoneyByItemEO"
+            resultType="Long">
+        SELECT max(xh)
+        FROM service_funddetail
+        where tax_time &lt;= #{taxTime}
+          and tax_time >= #{firstDay}
+          and TRIM(IDCardNo) = #{IDCard}
+          and del_flag != 1
     </select>
 
     <select id="totlaTax" resultType="com.ruoyi.project.domain.ServiceFunddetail">
@@ -303,4 +317,4 @@
         call `SP_STAT_BONUS`(#{PABEGTIME,mode=IN,jdbcType=VARCHAR},#{PAENDTIME,mode=IN,jdbcType=VARCHAR},#{PADEPTNO,mode=IN,jdbcType=VARCHAR},#{PAUSERNO,mode=IN,jdbcType=VARCHAR},#{PABONUSTYPE,mode=IN,jdbcType=VARCHAR})
     </select>
 
-</mapper>
\ No newline at end of file
+</mapper>

--
Gitblit v1.9.3