From c2d49ede268b5ab8df639e494caae02cde8b2599 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 24 十月 2025 10:25:57 +0800
Subject: [PATCH] 计费规则指标完成,人员管理职业技能处理

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMissionController.java |   42 ++++++++++++++++++++++++++++++++----------
 1 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMissionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMissionController.java
index 30b117a..21d422e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMissionController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMissionController.java
@@ -47,8 +47,9 @@
     private final TAppUserService appUserService;
     private final TAppUserEquipmentService appUserEquipmentService;
     private final TUserMajorService userMajorService;
+    private final TAppUserSkillService appUserSkillService;
     @Autowired
-    public TMissionController(TMissionService missionService, TMissionReassignService missionReassignService, TokenService tokenService, TMissionAssignRuleService missionAssignRuleService, TMissionAssignRuleIndicatorService missionAssignRuleIndicatorService, TAppUserService appUserService, TAppUserEquipmentService appUserEquipmentService, TUserMajorService userMajorService) {
+    public TMissionController(TMissionService missionService, TMissionReassignService missionReassignService, TokenService tokenService, TMissionAssignRuleService missionAssignRuleService, TMissionAssignRuleIndicatorService missionAssignRuleIndicatorService, TAppUserService appUserService, TAppUserEquipmentService appUserEquipmentService, TUserMajorService userMajorService, TAppUserSkillService appUserSkillService) {
         this.missionService = missionService;
         this.missionReassignService = missionReassignService;
         this.tokenService = tokenService;
@@ -57,6 +58,7 @@
         this.appUserService = appUserService;
         this.appUserEquipmentService = appUserEquipmentService;
         this.userMajorService = userMajorService;
+        this.appUserSkillService = appUserSkillService;
     }
 
     /**
@@ -155,6 +157,9 @@
         // 查询专业信息
         List<TUserMajor> userMajorList = userMajorService.list(Wrappers.lambdaQuery(TUserMajor.class)
                 .in(TUserMajor::getAppUserId,appUserIds));
+        // 查询技能信息
+        List<TAppUserSkill> appUserSkillList = appUserSkillService.list(Wrappers.lambdaQuery(TAppUserSkill.class)
+                .in(TAppUserSkill::getAppUserId,appUserIds));
 
         for (TAppUser appUser : appUsers) {
             double scoreTotal = 0;
@@ -162,6 +167,8 @@
             List<TAppUserEquipment> userEquipments = appUserEquipmentList.stream().filter(appEquipment -> appUser.getId().equals(appEquipment.getAppUserId())).collect(Collectors.toList());
             // 匹配专业信息
             List<TUserMajor> userMajors = userMajorList.stream().filter(userMajor -> appUser.getId().equals(userMajor.getAppUserId())).collect(Collectors.toList());
+            // 匹配技能信息
+            List<TAppUserSkill> userSkills = appUserSkillList.stream().filter(appUserSkill -> appUser.getId().equals(appUserSkill.getAppUserId())).collect(Collectors.toList());
 
             // 计算用户到任务的距离
             double distance = GDMapGeocodingUtil.getDistance(Double.parseDouble(mission.getMissionLon()), Double.parseDouble(mission.getMissionLat()), Double.parseDouble(appUser.getLon()), Double.parseDouble(appUser.getLat()));
@@ -234,8 +241,16 @@
                                     }
                                 }
                                 // 技能等级
-                                if(2 == i){
-                                    // TODO 技能等级
+                                if(2 == i && !CollectionUtils.isEmpty(userSkills)){
+                                    TAppUserSkill appUserSkill = userSkills.get(0);
+                                    int count = appUserSkill.getAdvancedCount() + appUserSkill.getIntermediateCount() + appUserSkill.getPrimaryCount();
+                                    if(count >= value){
+                                        // 得基准分值
+                                        scoreTotal += score;
+                                    }else{
+                                        // 训练次数 / 基准值 * 基准分值
+                                        scoreTotal += (double)count / value * score;
+                                    }
                                 }
                             }
                         }
@@ -269,23 +284,30 @@
                         JSONArray trainingIndicators = JSONObject.parseArray(missionAssignRuleIndicator.getContent());
                         // 训练指标分数计算
                         // 实训次数
-                        Integer practicalTrainCount = appUser.getPracticalTrainCount();
+                        Integer reconnaissanceMajor = appUser.getReconnaissanceMajor();
+                        Integer otherCount = appUser.getOtherCount();
                         for (int i = 0; i < 3; i++) {
                             JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(trainingIndicators.get(i)));
                             Integer value = jsonObject.getInteger("value");
                             Integer score = jsonObject.getInteger("score");
                             // 侦察专业成绩
                             if(0 == i){
-                                // TODO
-                            }
-                            // 训练次数
-                            if(1 == i){
-                                if(practicalTrainCount >= value){
+                                if(reconnaissanceMajor >= value){
                                     // 得基准分值
                                     scoreTotal += score;
                                 }else{
                                     // 训练次数 / 基准值 * 基准分值
-                                    scoreTotal += (double)practicalTrainCount / value * score;
+                                    scoreTotal += (double)reconnaissanceMajor / value * score;
+                                }
+                            }
+                            // 训练次数
+                            if(1 == i){
+                                if(otherCount >= value){
+                                    // 得基准分值
+                                    scoreTotal += score;
+                                }else{
+                                    // 训练次数 / 基准值 * 基准分值
+                                    scoreTotal += (double)otherCount / value * score;
                                 }
                             }
                         }

--
Gitblit v1.7.1