From 68c068cd6e71b246b5c46b7489565d690e59e723 Mon Sep 17 00:00:00 2001
From: whb <17803890193@163.com>
Date: Fri, 10 May 2024 08:47:19 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=9A=E6=97=B6=E4=BB=BB?=
 =?UTF-8?q?=E5=8A=A1=E6=8E=92=E5=90=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/task/StuTaskController.java    | 14 ++++++
 .../sztzjy/digital_credit/entity/StuUser.java |  8 +--
 .../digital_credit/mapper/StuUserMapper.java  | 38 ++++++++++++++
 .../service/StuUserService.java               | 27 ++++++++++
 .../StuEnterPriseByInfoEntryServiceImpl.java  | 13 ++---
 .../StuFinancialEarlyWarningServiceImpl.java  |  3 --
 .../impl/StuPersonalCreditServiceImpl.java    |  2 +
 .../service/impl/StuRateServiceImpl.java      |  5 +-
 .../service/impl/StuUserServiceImpl.java      | 49 +++++++++++++++++++
 9 files changed, 145 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/sztzjy/digital_credit/controller/task/StuTaskController.java b/src/main/java/com/sztzjy/digital_credit/controller/task/StuTaskController.java
index 94ab8cf..ba52c73 100644
--- a/src/main/java/com/sztzjy/digital_credit/controller/task/StuTaskController.java
+++ b/src/main/java/com/sztzjy/digital_credit/controller/task/StuTaskController.java
@@ -154,7 +154,21 @@ public class StuTaskController {
         List<String> schoolIds=userMapper.selectSchool();
         for (int i = 0; i < schoolIds.size(); i++) {
             String schoolId = schoolIds.get(i);
+            //总成绩排序
             userService.totalRank(schoolId);
+
+            //征信画像成绩排序
+            userService.creditPortraitRank(schoolId);
+
+            //个人征信成绩排序
+            userService.personCreditRank(schoolId);
+
+            //企业征信成绩排序
+            userService.corporateCreditRank(schoolId);
+
+            //综合案例成绩排序
+            userService.comprehensiveCaseRank(schoolId);
+
         }
     }
 
diff --git a/src/main/java/com/sztzjy/digital_credit/entity/StuUser.java b/src/main/java/com/sztzjy/digital_credit/entity/StuUser.java
index e894dd0..a1359fc 100644
--- a/src/main/java/com/sztzjy/digital_credit/entity/StuUser.java
+++ b/src/main/java/com/sztzjy/digital_credit/entity/StuUser.java
@@ -122,13 +122,13 @@ public class StuUser {
     public StuUser(StuUser stuUser, TchModuleWeith resultsOverviewWeight) {
         this.userId=stuUser.getUserId();
         //征信画像
-        BigDecimal creditPortraitScore =stuUser.getLoanCasesScore().add(stuUser.getPerSituationScore()).add(stuUser.getRepaymentBehaviorScore()).divide(BigDecimal.valueOf(3)).multiply(resultsOverviewWeight.getCreditPortraitWeith()).setScale(2,BigDecimal.ROUND_HALF_UP);
+        BigDecimal creditPortraitScore =stuUser.getLoanCasesScore().add(stuUser.getPerSituationScore()).add(stuUser.getRepaymentBehaviorScore()).divide(BigDecimal.valueOf(3),2,BigDecimal.ROUND_HALF_UP).multiply(resultsOverviewWeight.getCreditPortraitWeith()).setScale(2,BigDecimal.ROUND_HALF_UP);
         //个人征信
-        BigDecimal personalCreditScore=stuUser.getPerInfluenceFactorScore().add(stuUser.getPerCreditOptimizationSocre()).add(stuUser.getPerCreditRatingSocre()).divide(BigDecimal.valueOf(3)).multiply(resultsOverviewWeight.getPersonalCreditWeith()).setScale(2,BigDecimal.ROUND_HALF_UP);
+        BigDecimal personalCreditScore=stuUser.getPerInfluenceFactorScore().add(stuUser.getPerCreditOptimizationSocre()).add(stuUser.getPerCreditRatingSocre()).divide(BigDecimal.valueOf(3),2,BigDecimal.ROUND_HALF_UP).multiply(resultsOverviewWeight.getPersonalCreditWeith()).setScale(2,BigDecimal.ROUND_HALF_UP);
         //企业征信
-        BigDecimal corporateCreditScore=stuUser.getEntInfluenceFactorSocre().add(stuUser.getEntCreditOptimizationSocre()).add(stuUser.getEntCreditRatingSocre()).divide(BigDecimal.valueOf(3)).multiply(resultsOverviewWeight.getEnterpriseCreditWeith()).setScale(2,BigDecimal.ROUND_HALF_UP);
+        BigDecimal corporateCreditScore=stuUser.getEntInfluenceFactorSocre().add(stuUser.getEntCreditOptimizationSocre()).add(stuUser.getEntCreditRatingSocre()).divide(BigDecimal.valueOf(3),2,BigDecimal.ROUND_HALF_UP).multiply(resultsOverviewWeight.getEnterpriseCreditWeith()).setScale(2,BigDecimal.ROUND_HALF_UP);
         //综合案例
-        BigDecimal comprehensiveCaseScore=stuUser.getCaseUserProfileSocre().add(stuUser.getCasePersonalCreditScore()).add(stuUser.getCaseCorporateCreditScore()).divide(BigDecimal.valueOf(3)).multiply(resultsOverviewWeight.getCaseStudyWeith()).setScale(2,BigDecimal.ROUND_HALF_UP);
+        BigDecimal comprehensiveCaseScore=stuUser.getCaseUserProfileSocre().add(stuUser.getCasePersonalCreditScore()).add(stuUser.getCaseCorporateCreditScore()).divide(BigDecimal.valueOf(3),2,BigDecimal.ROUND_HALF_UP).multiply(resultsOverviewWeight.getCaseStudyWeith()).setScale(2,BigDecimal.ROUND_HALF_UP);
 
 
         this.totalScore= creditPortraitScore.add(personalCreditScore).add(corporateCreditScore)
diff --git a/src/main/java/com/sztzjy/digital_credit/mapper/StuUserMapper.java b/src/main/java/com/sztzjy/digital_credit/mapper/StuUserMapper.java
index 014cb85..2b19932 100644
--- a/src/main/java/com/sztzjy/digital_credit/mapper/StuUserMapper.java
+++ b/src/main/java/com/sztzjy/digital_credit/mapper/StuUserMapper.java
@@ -7,6 +7,7 @@ import java.util.Map;
 
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 
 public interface StuUserMapper {
     long countByExample(StuUserExample example);
@@ -42,4 +43,41 @@ public interface StuUserMapper {
 
     @Select("select school_id from stu_user group by school_id")
     List<String> selectSchool();
+
+    @Update("UPDATE stu_user as s " +
+            "JOIN  " +
+            "(select user_id , ROW_NUMBER() OVER (ORDER BY credit_portrait_score DESC) AS ranking " +
+            "FROM stu_user where school_id=#{schoolId}) as r" +
+            " ON " +
+            "s.user_id = r.user_id " +
+            "SET s.credit_portrait_rank = r.ranking WHERE school_id=#{schoolId}")
+    void updateCreditPortraitRank(String schoolId);
+
+    @Update("UPDATE stu_user as s " +
+            "JOIN  " +
+            "(select user_id , ROW_NUMBER() OVER (ORDER BY personal_credit_score DESC) AS ranking " +
+            "FROM stu_user where school_id=#{schoolId}) as r" +
+            " ON " +
+            "s.user_id = r.user_id " +
+            "SET s.personal_credit_rank = r.ranking WHERE school_id=#{schoolId}")
+    void updatePersonCreditRank(String schoolId);
+
+
+    @Update("UPDATE stu_user as s " +
+            "JOIN  " +
+            "(select user_id , ROW_NUMBER() OVER (ORDER BY corporate_credit_score DESC) AS ranking " +
+            "FROM stu_user where school_id=#{schoolId}) as r" +
+            " ON " +
+            "s.user_id = r.user_id " +
+            "SET s.corporate_credit_rank = r.ranking WHERE school_id=#{schoolId}")
+    void updateCorporateCreditRank(String schoolId);
+
+    @Update("UPDATE stu_user as s " +
+            "JOIN  " +
+            "(select user_id , ROW_NUMBER() OVER (ORDER BY comprehensive_case_score DESC) AS ranking " +
+            "FROM stu_user where school_id=#{schoolId}) as r" +
+            " ON " +
+            "s.user_id = r.user_id " +
+            "SET s.comprehensive_case_rank = r.ranking WHERE school_id=#{schoolId}")
+    void updateComprehensiveCaseRank(String schoolId);
 }
\ No newline at end of file
diff --git a/src/main/java/com/sztzjy/digital_credit/service/StuUserService.java b/src/main/java/com/sztzjy/digital_credit/service/StuUserService.java
index ffcd7de..f2f6e71 100644
--- a/src/main/java/com/sztzjy/digital_credit/service/StuUserService.java
+++ b/src/main/java/com/sztzjy/digital_credit/service/StuUserService.java
@@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo;
 import com.sztzjy.digital_credit.entity.tchdto.ScoreOverviewParametesDTO;
 import com.sztzjy.digital_credit.entity.tchdto.TchGeneralViewDTO;
 import com.sztzjy.digital_credit.entity.tchdto.TchGeneralViewWeightDTO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -27,4 +28,30 @@ public interface StuUserService {
     Boolean updateWeight(TchGeneralViewWeightDTO generalViewWeightDTO);
 
     void totalRank(String schoolId);
+
+    /**
+        * //征信画像成绩排序
+        * @param schoolId
+        * @return
+    */
+
+    void creditPortraitRank(@Param("schoolId") String schoolId);
+
+    /**
+        * 个人征信成绩排序
+        * @param schoolId
+        * @return
+    */
+
+    void personCreditRank(@Param("schoolId") String schoolId);
+
+    void corporateCreditRank(String schoolId);
+
+    /**
+        * 综合案例成绩排序
+        * @param schoolId
+        * @return
+    */
+
+    void comprehensiveCaseRank(@Param("schoolId") String schoolId);
 }
diff --git a/src/main/java/com/sztzjy/digital_credit/service/impl/StuEnterPriseByInfoEntryServiceImpl.java b/src/main/java/com/sztzjy/digital_credit/service/impl/StuEnterPriseByInfoEntryServiceImpl.java
index cfcb418..fe665c8 100644
--- a/src/main/java/com/sztzjy/digital_credit/service/impl/StuEnterPriseByInfoEntryServiceImpl.java
+++ b/src/main/java/com/sztzjy/digital_credit/service/impl/StuEnterPriseByInfoEntryServiceImpl.java
@@ -26,11 +26,13 @@ import com.sztzjy.digital_credit.util.MyExcelListener;
 import com.sztzjy.digital_credit.util.ResultEntity;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.data.annotation.Id;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
@@ -44,6 +46,10 @@ import java.util.List;
 public class StuEnterPriseByInfoEntryServiceImpl implements StuEnterPriseByInfoEntryService {
 
 
+    @Resource
+    private StuPersonalCreditService stuPersonalCreditService;
+
+
     @Autowired
     private StuBaseInfoMapper stuBaseInfoMapper;
 
@@ -66,19 +72,14 @@ public class StuEnterPriseByInfoEntryServiceImpl implements StuEnterPriseByInfoE
     @Autowired
     private StuOperatingCapacityMapper operatingCapacityMapper;
 
-    @Autowired
-    private StuPersonalCreditService stuPersonalCreditService;
+
 
 
 
     @Autowired
     private StuSolvencyMapper solvencyMapper;
 
-    @Autowired
-    private StuUserMapper userMapper;
 
-    @Autowired
-    private StuRateService stuRateService;
 
     /**
      * 基本信息查询
diff --git a/src/main/java/com/sztzjy/digital_credit/service/impl/StuFinancialEarlyWarningServiceImpl.java b/src/main/java/com/sztzjy/digital_credit/service/impl/StuFinancialEarlyWarningServiceImpl.java
index 681fbc2..d2ae5d9 100644
--- a/src/main/java/com/sztzjy/digital_credit/service/impl/StuFinancialEarlyWarningServiceImpl.java
+++ b/src/main/java/com/sztzjy/digital_credit/service/impl/StuFinancialEarlyWarningServiceImpl.java
@@ -33,9 +33,6 @@ public class StuFinancialEarlyWarningServiceImpl implements StuFinancialEarlyWar
     private StuOperationAssetAnalysisModuleMapper operationAssetAnalysisModuleMapper;
 
 
-    @Autowired
-    private StuRateService stuRateService;
-
     @Autowired
     private StuPersonalCreditService stuPersonalCreditService;
     /**
diff --git a/src/main/java/com/sztzjy/digital_credit/service/impl/StuPersonalCreditServiceImpl.java b/src/main/java/com/sztzjy/digital_credit/service/impl/StuPersonalCreditServiceImpl.java
index 30e39ee..27822bb 100644
--- a/src/main/java/com/sztzjy/digital_credit/service/impl/StuPersonalCreditServiceImpl.java
+++ b/src/main/java/com/sztzjy/digital_credit/service/impl/StuPersonalCreditServiceImpl.java
@@ -10,6 +10,7 @@ import com.sztzjy.digital_credit.service.StuScoreCenterService;
 import com.sztzjy.digital_credit.util.BigDecimalUtils;
 import org.checkerframework.checker.units.qual.A;
 import org.geolatte.geom.M;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -33,6 +34,7 @@ public class StuPersonalCreditServiceImpl implements StuPersonalCreditService {
     TchModuleWeithMapper tchModuleWeithMapper;
     @Resource
     StuPersonalCreditReportingService stuPersonalCreditReportingService;
+    @Lazy
     @Resource
     StuRateService service;
     @Resource
diff --git a/src/main/java/com/sztzjy/digital_credit/service/impl/StuRateServiceImpl.java b/src/main/java/com/sztzjy/digital_credit/service/impl/StuRateServiceImpl.java
index e88ffa2..767de86 100644
--- a/src/main/java/com/sztzjy/digital_credit/service/impl/StuRateServiceImpl.java
+++ b/src/main/java/com/sztzjy/digital_credit/service/impl/StuRateServiceImpl.java
@@ -16,6 +16,7 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
 import java.util.*;
@@ -70,7 +71,7 @@ public class StuRateServiceImpl implements StuRateService {
     private StuScoreCenterMapper stuScoreCenterMapper;
 
 
-    @Autowired
+    @Resource
     private StuPersonalCreditService stuPersonalCreditService;
 
 
@@ -401,6 +402,8 @@ public class StuRateServiceImpl implements StuRateService {
 
         return new ResultEntity<>(HttpStatus.OK,"保存成功!",scoreByAuto);
     }
+
+
     //先将成绩写入stu_score_center 根据重新实训次数(最多两次) 累加到对应成绩,求取平均分,然后再写入用户表对应的总成绩  累加总分
     private void enhanceMeasureWriteInByAutoRating(StuCreditEnhanceMeasure enhanceMeasure) {
         StuScoreCenterExample stuScoreCenterExample = new StuScoreCenterExample();
diff --git a/src/main/java/com/sztzjy/digital_credit/service/impl/StuUserServiceImpl.java b/src/main/java/com/sztzjy/digital_credit/service/impl/StuUserServiceImpl.java
index 156b325..c2425f3 100644
--- a/src/main/java/com/sztzjy/digital_credit/service/impl/StuUserServiceImpl.java
+++ b/src/main/java/com/sztzjy/digital_credit/service/impl/StuUserServiceImpl.java
@@ -136,6 +136,7 @@ public class StuUserServiceImpl implements StuUserService {
         List<StuUser> stuUsers = userMapper.selectByExample(example);
         List<StuUser> list = new ArrayList();
         for (int i = 0; i < stuUsers.size(); i++) {
+            System.out.println(stuUsers.get(i).getUserId());
             StuUser stuUser=new StuUser(stuUsers.get(i),tchModuleWeithList.get(0));
             list.add(stuUser);
         }
@@ -154,5 +155,53 @@ public class StuUserServiceImpl implements StuUserService {
 
     }
 
+    /**
+        * 征信画像成绩排序
+        * @param schoolId
+        * @return
+    */
+
+    @Override
+    public void creditPortraitRank(String schoolId) {
+
+
+        userMapper.updateCreditPortraitRank(schoolId);
+
+    }
+
+    /**
+        * 个人征信成绩排序
+        * @param schoolId
+        * @return
+    */
+
+    @Override
+    public void personCreditRank(String schoolId) {
+
+        userMapper.updatePersonCreditRank(schoolId);
+
+    }
+
+    /**
+        * 企业征信成绩排序
+        * @param schoolId
+        * @return
+    */
+    @Override
+    public void corporateCreditRank(String schoolId) {
+        userMapper.updateCorporateCreditRank(schoolId);
+    }
+
+    /**
+        * 综合案例成绩排序
+        * @param schoolId
+        * @return
+    */
+
+    @Override
+    public void comprehensiveCaseRank(String schoolId) {
+        userMapper.updateComprehensiveCaseRank(schoolId);
+    }
+
 
 }