|
@@ -2,7 +2,10 @@ package cn.iselab.mooctest.site.web.logic.impl;
|
|
|
|
|
|
import cn.iselab.mooctest.site.common.constant.AnswerWayConstants;
|
|
import cn.iselab.mooctest.site.common.constant.AnswerWayConstants;
|
|
import cn.iselab.mooctest.site.data.CaseBlock;
|
|
import cn.iselab.mooctest.site.data.CaseBlock;
|
|
-import cn.iselab.mooctest.site.models.*;
|
|
|
|
|
|
+import cn.iselab.mooctest.site.models.AssignedTask;
|
|
|
|
+import cn.iselab.mooctest.site.models.CaseExtends;
|
|
|
|
+import cn.iselab.mooctest.site.models.Exam2Case;
|
|
|
|
+import cn.iselab.mooctest.site.models.Paper;
|
|
import cn.iselab.mooctest.site.rpc.dev.data.CaseMutationDTO;
|
|
import cn.iselab.mooctest.site.rpc.dev.data.CaseMutationDTO;
|
|
import cn.iselab.mooctest.site.rpc.dev.data.LineMutationDTO;
|
|
import cn.iselab.mooctest.site.rpc.dev.data.LineMutationDTO;
|
|
import cn.iselab.mooctest.site.rpc.dev.data.MutationDTO;
|
|
import cn.iselab.mooctest.site.rpc.dev.data.MutationDTO;
|
|
@@ -12,6 +15,7 @@ import cn.iselab.mooctest.site.service.fromDev.AnalysisService;
|
|
import cn.iselab.mooctest.site.service.fromKibug.ScoreRuleService;
|
|
import cn.iselab.mooctest.site.service.fromKibug.ScoreRuleService;
|
|
import cn.iselab.mooctest.site.web.data.WeightDirtyVO;
|
|
import cn.iselab.mooctest.site.web.data.WeightDirtyVO;
|
|
import cn.iselab.mooctest.site.web.data.forMongo.MutationForMongoDTO;
|
|
import cn.iselab.mooctest.site.web.data.forMongo.MutationForMongoDTO;
|
|
|
|
+import cn.iselab.mooctest.site.web.data.forMongo.NodeCatch.CaughtNodeDTO;
|
|
import cn.iselab.mooctest.site.web.data.fromKibug.ScoreRuleItemVO;
|
|
import cn.iselab.mooctest.site.web.data.fromKibug.ScoreRuleItemVO;
|
|
import cn.iselab.mooctest.site.web.exception.HttpNotFoundException;
|
|
import cn.iselab.mooctest.site.web.exception.HttpNotFoundException;
|
|
import cn.iselab.mooctest.site.web.logic.CalculateSocreLogic;
|
|
import cn.iselab.mooctest.site.web.logic.CalculateSocreLogic;
|
|
@@ -46,81 +50,85 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
|
|
MongoAPIService mongoAPIService;
|
|
MongoAPIService mongoAPIService;
|
|
@Autowired
|
|
@Autowired
|
|
AnalysisService analysisService;
|
|
AnalysisService analysisService;
|
|
|
|
+ @Autowired
|
|
|
|
+ CaughtNodeService caughtNodeService;
|
|
|
|
+ @Autowired
|
|
|
|
+ UserCatchService userCatchService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void calculateScore(long taskId, long caseId) {
|
|
public void calculateScore(long taskId, long caseId) {
|
|
- CaseExtends caseExtends=caseService.getCaseExtendsById(caseId);
|
|
|
|
- Long subsiteId=caseExtends.getAnswerWay();
|
|
|
|
- if(subsiteId== AnswerWayConstants.APP_ECLIPSE || subsiteId== AnswerWayConstants.WEB_ECLIPSE || subsiteId==AnswerWayConstants.ZHICEYUN
|
|
|
|
- || subsiteId== AnswerWayConstants.THIRD_PARTY || subsiteId== AnswerWayConstants.REPORT || subsiteId==AnswerWayConstants.JMETER){
|
|
|
|
|
|
+ CaseExtends caseExtends = caseService.getCaseExtendsById(caseId);
|
|
|
|
+ Long subsiteId = caseExtends.getAnswerWay();
|
|
|
|
+ if (subsiteId == AnswerWayConstants.APP_ECLIPSE || subsiteId == AnswerWayConstants.WEB_ECLIPSE || subsiteId == AnswerWayConstants.ZHICEYUN
|
|
|
|
+ || subsiteId == AnswerWayConstants.THIRD_PARTY || subsiteId == AnswerWayConstants.REPORT || subsiteId == AnswerWayConstants.JMETER) {
|
|
calculateScoreService.calculateManual(taskId, caseId);
|
|
calculateScoreService.calculateManual(taskId, caseId);
|
|
- calculateScoreService.calculateScript(taskId,caseId);
|
|
|
|
- List<ScoreRuleItemVO> scoreRule = scoreRuleService.getKibugScoreRule(taskId,caseId);
|
|
|
|
- calculateScoreService.calculateTotal(taskId,caseId,scoreRule);
|
|
|
|
- }else if(subsiteId == AnswerWayConstants.DEV_ECLIPSE){
|
|
|
|
|
|
+ calculateScoreService.calculateScript(taskId, caseId);
|
|
|
|
+ List<ScoreRuleItemVO> scoreRule = scoreRuleService.getKibugScoreRule(taskId, caseId);
|
|
|
|
+ calculateScoreService.calculateTotal(taskId, caseId, scoreRule);
|
|
|
|
+ } else if (subsiteId == AnswerWayConstants.DEV_ECLIPSE) {
|
|
calculateScoreService.calculateDevScore(taskId, caseId);
|
|
calculateScoreService.calculateDevScore(taskId, caseId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void calculateScore(long taskId, long caseId, long userId) throws Exception {
|
|
public void calculateScore(long taskId, long caseId, long userId) throws Exception {
|
|
- CaseExtends caseExtends=caseService.getCaseExtendsById(caseId);
|
|
|
|
- Long subsiteId=caseExtends.getAnswerWay();
|
|
|
|
- if(subsiteId== AnswerWayConstants.APP_ECLIPSE || subsiteId== AnswerWayConstants.WEB_ECLIPSE
|
|
|
|
- || subsiteId== AnswerWayConstants.THIRD_PARTY || subsiteId== AnswerWayConstants.REPORT || subsiteId==AnswerWayConstants.JMETER || subsiteId==AnswerWayConstants.ZHICEYUN){
|
|
|
|
- calculateScoreService.calculatePersonalManual(taskId, caseId,userId);
|
|
|
|
- calculateScoreService.calculatePersonalScript(taskId,caseId,userId);
|
|
|
|
- List<ScoreRuleItemVO> scoreRule = scoreRuleService.getKibugScoreRule(taskId,caseId);
|
|
|
|
- calculateScoreService.calculatePersonalTotal(taskId,caseId,userId,scoreRule);
|
|
|
|
- }else if(subsiteId == AnswerWayConstants.DEV_ECLIPSE){
|
|
|
|
- calculateScoreService.calculatePersonalDevScore(taskId, caseId,userId);
|
|
|
|
|
|
+ CaseExtends caseExtends = caseService.getCaseExtendsById(caseId);
|
|
|
|
+ Long subsiteId = caseExtends.getAnswerWay();
|
|
|
|
+ if (subsiteId == AnswerWayConstants.APP_ECLIPSE || subsiteId == AnswerWayConstants.WEB_ECLIPSE
|
|
|
|
+ || subsiteId == AnswerWayConstants.THIRD_PARTY || subsiteId == AnswerWayConstants.REPORT || subsiteId == AnswerWayConstants.JMETER || subsiteId == AnswerWayConstants.ZHICEYUN) {
|
|
|
|
+ calculateScoreService.calculatePersonalManual(taskId, caseId, userId);
|
|
|
|
+ calculateScoreService.calculatePersonalScript(taskId, caseId, userId);
|
|
|
|
+ List<ScoreRuleItemVO> scoreRule = scoreRuleService.getKibugScoreRule(taskId, caseId);
|
|
|
|
+ calculateScoreService.calculatePersonalTotal(taskId, caseId, userId, scoreRule);
|
|
|
|
+ } else if (subsiteId == AnswerWayConstants.DEV_ECLIPSE) {
|
|
|
|
+ calculateScoreService.calculatePersonalDevScore(taskId, caseId, userId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<Double> calculateExamScore(long examId, Long participantId,WeightDirtyVO weightDirtyVO, boolean calculateAll){
|
|
|
|
- if(calculateAll==false
|
|
|
|
- && (weightDirtyVO.getCaseDirty()==null || weightDirtyVO.getCaseDirty().size()==0)
|
|
|
|
- && weightDirtyVO.isWeightDirty()==false){
|
|
|
|
|
|
+ public List<Double> calculateExamScore(long examId, Long participantId, WeightDirtyVO weightDirtyVO, boolean calculateAll) {
|
|
|
|
+ if (calculateAll == false
|
|
|
|
+ && (weightDirtyVO.getCaseDirty() == null || weightDirtyVO.getCaseDirty().size() == 0)
|
|
|
|
+ && weightDirtyVO.isWeightDirty() == false) {
|
|
throw new IllegalArgumentException("Illegal Arguments!");
|
|
throw new IllegalArgumentException("Illegal Arguments!");
|
|
}
|
|
}
|
|
//获取exam中应有的case
|
|
//获取exam中应有的case
|
|
Paper paper = paperService.getByExamId(examId);
|
|
Paper paper = paperService.getByExamId(examId);
|
|
- if(paper == null) {
|
|
|
|
|
|
+ if (paper == null) {
|
|
throw new IllegalArgumentException("Cannot find paper of this exam.");
|
|
throw new IllegalArgumentException("Cannot find paper of this exam.");
|
|
}
|
|
}
|
|
List<CaseBlock> caseBlocks = taskService.getCaseBlocks(paper.getId());
|
|
List<CaseBlock> caseBlocks = taskService.getCaseBlocks(paper.getId());
|
|
List<Long> casesId = new ArrayList<>();
|
|
List<Long> casesId = new ArrayList<>();
|
|
- for(CaseBlock caseBlock :caseBlocks){
|
|
|
|
- for(Long caseId : caseBlock.getCaseIds()) {
|
|
|
|
|
|
+ for (CaseBlock caseBlock : caseBlocks) {
|
|
|
|
+ for (Long caseId : caseBlock.getCaseIds()) {
|
|
casesId.add(caseId);
|
|
casesId.add(caseId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//为null表示为发布成绩时,计算所有case的小分,再计算总分
|
|
//为null表示为发布成绩时,计算所有case的小分,再计算总分
|
|
- if(calculateAll == true) {
|
|
|
|
- for(Long caseId:casesId){
|
|
|
|
- calculateScore(examId,caseId);
|
|
|
|
|
|
+ if (calculateAll == true) {
|
|
|
|
+ for (Long caseId : casesId) {
|
|
|
|
+ calculateScore(examId, caseId);
|
|
}
|
|
}
|
|
- }else if(weightDirtyVO.getCaseDirty() != null && weightDirtyVO.getCaseDirty().size() != 0){
|
|
|
|
|
|
+ } else if (weightDirtyVO.getCaseDirty() != null && weightDirtyVO.getCaseDirty().size() != 0) {
|
|
//如果不为null,并且有小评分规则变动,表示保存评分规则时,需要对更改的评分规则的case进行计算,再计算总分
|
|
//如果不为null,并且有小评分规则变动,表示保存评分规则时,需要对更改的评分规则的case进行计算,再计算总分
|
|
- for(Long caseId:weightDirtyVO.getCaseDirty()){
|
|
|
|
- if(casesId.contains(caseId))
|
|
|
|
- calculateScore(examId,caseId);
|
|
|
|
|
|
+ for (Long caseId : weightDirtyVO.getCaseDirty()) {
|
|
|
|
+ if (casesId.contains(caseId))
|
|
|
|
+ calculateScore(examId, caseId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//最后计算task的总分
|
|
//最后计算task的总分
|
|
List<Double> scores = new ArrayList<>();
|
|
List<Double> scores = new ArrayList<>();
|
|
- if(participantId != null){
|
|
|
|
- AssignedTask assignedTask=assignedTaskService.getAssignedTask(examId,participantId);
|
|
|
|
- double score = calculateOneScore(assignedTask,examId);
|
|
|
|
|
|
+ if (participantId != null) {
|
|
|
|
+ AssignedTask assignedTask = assignedTaskService.getAssignedTask(examId, participantId);
|
|
|
|
+ double score = calculateOneScore(assignedTask, examId);
|
|
assignedTask.setScore(score);
|
|
assignedTask.setScore(score);
|
|
scores.add(score);
|
|
scores.add(score);
|
|
assignedTaskService.saveOrUpdateAssignedTask(assignedTask);
|
|
assignedTaskService.saveOrUpdateAssignedTask(assignedTask);
|
|
- }else{
|
|
|
|
|
|
+ } else {
|
|
List<AssignedTask> assignedTasks = assignedTaskService.getAssignedTasks(examId);
|
|
List<AssignedTask> assignedTasks = assignedTaskService.getAssignedTasks(examId);
|
|
- for(AssignedTask assignedTask : assignedTasks){
|
|
|
|
- double score = calculateOneScore(assignedTask,examId);
|
|
|
|
|
|
+ for (AssignedTask assignedTask : assignedTasks) {
|
|
|
|
+ double score = calculateOneScore(assignedTask, examId);
|
|
assignedTask.setScore(score);
|
|
assignedTask.setScore(score);
|
|
scores.add(score);
|
|
scores.add(score);
|
|
}
|
|
}
|
|
@@ -134,7 +142,7 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
|
|
WeightDirtyVO weightDirtyVO = new WeightDirtyVO();
|
|
WeightDirtyVO weightDirtyVO = new WeightDirtyVO();
|
|
weightDirtyVO.setWeightDirty(true);
|
|
weightDirtyVO.setWeightDirty(true);
|
|
weightDirtyVO.setCaseDirty(null);
|
|
weightDirtyVO.setCaseDirty(null);
|
|
- return this.calculateExamScore(examId,participantId,weightDirtyVO,false);
|
|
|
|
|
|
+ return this.calculateExamScore(examId, participantId, weightDirtyVO, false);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -144,7 +152,7 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
|
|
Map<String, Integer> mutationTotalKilledMap = new HashMap<>();
|
|
Map<String, Integer> mutationTotalKilledMap = new HashMap<>();
|
|
List<MutationForMongoDTO> mutationForMongoDTOS = mongoAPIService.getMutationFromMongo(null, examId, caseId);
|
|
List<MutationForMongoDTO> mutationForMongoDTOS = mongoAPIService.getMutationFromMongo(null, examId, caseId);
|
|
|
|
|
|
- if(mutationForMongoDTOS == null && mutationForMongoDTOS.size() == 0)
|
|
|
|
|
|
+ if (mutationForMongoDTOS == null && mutationForMongoDTOS.size() == 0)
|
|
throw new HttpNotFoundException("该考试的这道题没有变异成绩。");
|
|
throw new HttpNotFoundException("该考试的这道题没有变异成绩。");
|
|
for (MutationForMongoDTO mutationForMongoDTO : mutationForMongoDTOS) {
|
|
for (MutationForMongoDTO mutationForMongoDTO : mutationForMongoDTOS) {
|
|
statisMutation(mutationTotalKilledMap, mutationForMongoDTO.getMutationDTO());
|
|
statisMutation(mutationTotalKilledMap, mutationForMongoDTO.getMutationDTO());
|
|
@@ -168,11 +176,11 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
|
|
|
|
|
|
|
|
|
|
private double calculateMutationScore(MutationForMongoDTO mutationForMongoDTO, Map<String, Double> mutationScoreMap,
|
|
private double calculateMutationScore(MutationForMongoDTO mutationForMongoDTO, Map<String, Double> mutationScoreMap,
|
|
- final double baseScore) {
|
|
|
|
|
|
+ final double baseScore) {
|
|
double sum = 0;
|
|
double sum = 0;
|
|
for (CaseMutationDTO caseMutation : mutationForMongoDTO.getMutationDTO().getDetailList()) {
|
|
for (CaseMutationDTO caseMutation : mutationForMongoDTO.getMutationDTO().getDetailList()) {
|
|
for (LineMutationDTO lineMutation : caseMutation.getEachMutantsResult()) {
|
|
for (LineMutationDTO lineMutation : caseMutation.getEachMutantsResult()) {
|
|
- if(lineMutation.isKilled()) {
|
|
|
|
|
|
+ if (lineMutation.isKilled()) {
|
|
String key = caseMutation.getClassName() + lineMutation.getMutantId();
|
|
String key = caseMutation.getClassName() + lineMutation.getMutantId();
|
|
double score = mutationScoreMap.get(key);
|
|
double score = mutationScoreMap.get(key);
|
|
sum += score;
|
|
sum += score;
|
|
@@ -185,15 +193,15 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
|
|
private double calculateBaseScore(Map<String, Double> mutationScoreMap) {
|
|
private double calculateBaseScore(Map<String, Double> mutationScoreMap) {
|
|
List<Double> scores = (List<Double>) mutationScoreMap.values();
|
|
List<Double> scores = (List<Double>) mutationScoreMap.values();
|
|
double sum = 0;
|
|
double sum = 0;
|
|
- for(Double score : scores) {
|
|
|
|
|
|
+ for (Double score : scores) {
|
|
sum += score;
|
|
sum += score;
|
|
}
|
|
}
|
|
return sum;
|
|
return sum;
|
|
}
|
|
}
|
|
|
|
|
|
private Map<String, Double> generatePerMutationScore(Map<String, Integer> mutationTotalKilledMap,
|
|
private Map<String, Double> generatePerMutationScore(Map<String, Integer> mutationTotalKilledMap,
|
|
- List<MutationForMongoDTO> mutationForMongoDTOS,
|
|
|
|
- final double scoreOfPerMutation) {
|
|
|
|
|
|
+ List<MutationForMongoDTO> mutationForMongoDTOS,
|
|
|
|
+ final double scoreOfPerMutation) {
|
|
Map<String, Double> mutationScoreMap = new HashMap<>();
|
|
Map<String, Double> mutationScoreMap = new HashMap<>();
|
|
MutationForMongoDTO mutationForMongoDTO = mutationForMongoDTOS.get(0);
|
|
MutationForMongoDTO mutationForMongoDTO = mutationForMongoDTOS.get(0);
|
|
mutationForMongoDTO.getMutationDTO().getDetailList().forEach(caseMutation -> {
|
|
mutationForMongoDTO.getMutationDTO().getDetailList().forEach(caseMutation -> {
|
|
@@ -212,42 +220,63 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
|
|
|
|
|
|
private void statisMutation(Map<String, Integer> mutationTotalKilledMap, MutationDTO mutationDTO) {
|
|
private void statisMutation(Map<String, Integer> mutationTotalKilledMap, MutationDTO mutationDTO) {
|
|
mutationDTO.getDetailList().forEach(caseMutation -> {
|
|
mutationDTO.getDetailList().forEach(caseMutation -> {
|
|
- caseMutation.getEachMutantsResult().forEach(lineMutation -> {
|
|
|
|
- if(lineMutation.isKilled()) {
|
|
|
|
- String key = caseMutation.getClassName() + lineMutation.getMutantId();
|
|
|
|
- Integer count = mutationTotalKilledMap.get(key);
|
|
|
|
- if(count != null) {
|
|
|
|
- count = 0;
|
|
|
|
- }
|
|
|
|
- count = count + 1;
|
|
|
|
- mutationTotalKilledMap.put(key, count);
|
|
|
|
|
|
+ caseMutation.getEachMutantsResult().forEach(lineMutation -> {
|
|
|
|
+ if (lineMutation.isKilled()) {
|
|
|
|
+ String key = caseMutation.getClassName() + lineMutation.getMutantId();
|
|
|
|
+ Integer count = mutationTotalKilledMap.get(key);
|
|
|
|
+ if (count != null) {
|
|
|
|
+ count = 0;
|
|
}
|
|
}
|
|
- });
|
|
|
|
|
|
+ count = count + 1;
|
|
|
|
+ mutationTotalKilledMap.put(key, count);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
|
|
});
|
|
});
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
|
|
- private double calculateOneScore(AssignedTask assignedTask,long examId){
|
|
|
|
- String result=assignedTask.getResult();
|
|
|
|
|
|
+
|
|
|
|
+ private double calculateOneScore(AssignedTask assignedTask, long examId) {
|
|
|
|
+ String result = assignedTask.getResult();
|
|
JSONObject cases = new JSONObject(result).getJSONObject("results");
|
|
JSONObject cases = new JSONObject(result).getJSONObject("results");
|
|
- Iterator it=cases.keys();
|
|
|
|
|
|
+ Iterator it = cases.keys();
|
|
double score = 0.0;
|
|
double score = 0.0;
|
|
- while(it.hasNext()){
|
|
|
|
|
|
+ while (it.hasNext()) {
|
|
String id = (String) it.next();
|
|
String id = (String) it.next();
|
|
JSONObject caseInfo = cases.getJSONObject(id);
|
|
JSONObject caseInfo = cases.getJSONObject(id);
|
|
- if(!caseInfo.has("maxScore")){
|
|
|
|
|
|
+ if (!caseInfo.has("maxScore")) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
double maxScore = caseInfo.getDouble("maxScore");
|
|
double maxScore = caseInfo.getDouble("maxScore");
|
|
long caseId = caseInfo.getLong("id");
|
|
long caseId = caseInfo.getLong("id");
|
|
- List<Exam2Case> exam2Cases = exam2CaseService.findByExamIdAndCaseId(examId,caseId);
|
|
|
|
- if(exam2Cases.size() == 0){
|
|
|
|
- throw new IllegalArgumentException("Cannot find case's ["+ caseId + "] weight");
|
|
|
|
|
|
+ List<Exam2Case> exam2Cases = exam2CaseService.findByExamIdAndCaseId(examId, caseId);
|
|
|
|
+ if (exam2Cases.size() == 0) {
|
|
|
|
+ throw new IllegalArgumentException("Cannot find case's [" + caseId + "] weight");
|
|
}
|
|
}
|
|
double weight = exam2Cases.get(0).getWeight();
|
|
double weight = exam2Cases.get(0).getWeight();
|
|
score += weight * maxScore;
|
|
score += weight * maxScore;
|
|
}
|
|
}
|
|
return score;
|
|
return score;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public CaughtNodeDTO catchNode(CaughtNodeDTO caughtNodeDTO, Long userId) {
|
|
|
|
+// //userCatch
|
|
|
|
+// UserCatchDTO userCatchDTO = userCatchService.getUserCatchDTO(userId);
|
|
|
|
+// List<String> nodeNames = userCatchDTO.getNodeNames();
|
|
|
|
+// nodeNames.add(caughtNodeDTO.getNodeName());
|
|
|
|
+// userCatchDTO.setNodeNames(nodeNames);
|
|
|
|
+// if (userCatchDTO.checkNodeNameUnique()) {
|
|
|
|
+// userCatchService.updateUserCatchDTO(userCatchDTO);
|
|
|
|
+// }
|
|
|
|
+// return null;
|
|
|
|
+// //caughtNode
|
|
|
|
+// caughtNodeDTO = caughtNodeService.getCaughtNodeDTO(caughtNodeDTO.getExamId(), caughtNodeDTO.getCaseId(), caughtNodeDTO.getNodeName());
|
|
|
|
+// List<Long> userIds = caughtNodeDTO.getUserIds();
|
|
|
|
+// userIds.add(userId);
|
|
|
|
+// caughtNodeDTO.setUserIds(userIds);
|
|
|
|
+// caughtNodeDTO.setCatchNum(caughtNodeDTO.getCatchNum() + 1);
|
|
|
|
+// return caughtNodeService.updateCaughtNodeDTO(caughtNodeDTO);
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
}
|
|
}
|