|  | @@ -133,7 +133,7 @@ public class CommSendService {
 | 
	
		
			
				|  |  |                          Fault.TYPE_3.equals(f.getFaultType()) &&
 | 
	
		
			
				|  |  |                          Fault.State.ENABLE.equals(f.getFaultState())
 | 
	
		
			
				|  |  |                  ) {
 | 
	
		
			
				|  |  | -                    readOneFaultResistance(s, ref, f);
 | 
	
		
			
				|  |  | +                    readOneFaultResistance(s, ref, f, RealExamFault.State.LOOP_READ);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -148,42 +148,25 @@ public class CommSendService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void readOneExamAtLast(RealExam re) {
 | 
	
		
			
				|  |  | +        l.info("readOneExamAtLast");
 | 
	
		
			
				|  |  |          List<RealExamFault> listREF = realExamFaultService.listAllType2LoopReadStateByExamId(re.getExamId());
 | 
	
		
			
				|  |  |          listREF.forEach(ref -> {
 | 
	
		
			
				|  |  |              Sim s = simService.selectSimBySimId(re.getSimId());
 | 
	
		
			
				|  |  |              Fault f = faultService.selectFaultByFaultId(ref.getFaultId());
 | 
	
		
			
				|  |  | -            readOneFaultResistance(s, ref, f);
 | 
	
		
			
				|  |  | +            readOneFaultResistance(s, ref, f, RealExamFault.State.FINISH);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        submit(re.getExamId());
 | 
	
		
			
				|  |  | +        // 计算扣分。
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            calculateScoreAsync(re.getExamId());
 | 
	
		
			
				|  |  | +            calculateScore(re.getExamId());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * @param examId
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    @Transactional
 | 
	
		
			
				|  |  | -    public void submit(long examId) {
 | 
	
		
			
				|  |  | -        l.info("submit");
 | 
	
		
			
				|  |  | -        RealExam re1 = realExamService.selectRealExamByExamId(examId);
 | 
	
		
			
				|  |  | -        re1.setExamStatus(RealExam.State.SUBMITTED);
 | 
	
		
			
				|  |  | -        re1.setEndTime(DateUtils.getNowDate());
 | 
	
		
			
				|  |  | -        realExamService.updateRealExam(re1);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      @Async("tp-comm")
 | 
	
		
			
				|  |  |      public void readOneExamAtLastAsync(RealExam re) {
 | 
	
		
			
				|  |  | +        l.info("readOneExamAtLastAsync");
 | 
	
		
			
				|  |  |          readOneExamAtLast(re);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // todo:
 | 
	
		
			
				|  |  | -    // @Async
 | 
	
		
			
				|  |  | -    public void calculateScoreAsync(Long realExamId) {
 | 
	
		
			
				|  |  | -        calculateScore(realExamId);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 计算减分(不包括超时)。汇总到deduction_total_score字段。
 | 
	
		
			
				|  |  |       *
 | 
	
	
		
			
				|  | @@ -418,7 +401,7 @@ public class CommSendService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    public void readOneFaultResistance(Sim s, RealExamFault reF, Fault f) {
 | 
	
		
			
				|  |  | +    public void readOneFaultResistance(Sim s, RealExamFault reF, Fault f, String refState) {
 | 
	
		
			
				|  |  |          l.info("readOneFaultResistance");
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              SimMsg sm = new SimMsg();
 | 
	
	
		
			
				|  | @@ -426,12 +409,18 @@ public class CommSendService {
 | 
	
		
			
				|  |  |              sm.setSendMsg(sendMsg);
 | 
	
		
			
				|  |  |              String receiveMsg = send(sendMsg, s);
 | 
	
		
			
				|  |  |              sm.setReceiveMsg(receiveMsg);
 | 
	
		
			
				|  |  | -            simReceiveService.setFaultAnswerValue(sm, s, reF, f);
 | 
	
		
			
				|  |  | +            simReceiveService.setFaultAnswerValue(sm, s, reF, f, refState);
 | 
	
		
			
				|  |  |          } catch (IOException e) {
 | 
	
		
			
				|  |  |              catchException(e);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Async("tp-comm")
 | 
	
		
			
				|  |  | +    public void readOneFaultResistanceAsync(Sim s, RealExamFault reF, Fault f, String refState) {
 | 
	
		
			
				|  |  | +        l.info("readOneFaultResistanceAsync");
 | 
	
		
			
				|  |  | +        readOneFaultResistance(s, reF, f, refState);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      public void test() {
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              {
 |