xuhy
3 天以前 c2d49ede268b5ab8df639e494caae02cde8b2599
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;
                                }
                            }
                        }