| | |
| | | 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; |
| | |
| | | this.appUserService = appUserService; |
| | | this.appUserEquipmentService = appUserEquipmentService; |
| | | this.userMajorService = userMajorService; |
| | | this.appUserSkillService = appUserSkillService; |
| | | } |
| | | |
| | | /** |
| | |
| | | // 查询专业信息 |
| | | 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; |
| | |
| | | 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())); |
| | |
| | | } |
| | | } |
| | | // 技能等级 |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |