1、教师端首页报错修复

pull/13/head
陈沅 1 year ago
parent c83298356f
commit a38f12b112

@ -84,7 +84,7 @@ public class MemberController {
@AnonymousAccess
@PostMapping("getPracticeMemberIdByStudentNumberAndPracticeTrainingId")
public ResultEntity getPracticeMemberIdByStudentNumberAndPracticeTrainingId(@RequestBody String studentNumber) {
Member member = memberService.getPracticeMemberIdByStudentNumberAndPracticeTrainingId(studentNumber,Constant.PRACTICE_TRAINING_ID);
Member member = memberService.getPracticeMemberIdByStudentNumberAndPracticeTrainingId(studentNumber, Constant.PRACTICE_TRAINING_ID);
return new ResultEntity(HttpStatus.OK, "根据学号获取成员ID", member.getMemberId());
}
@ -93,48 +93,48 @@ public class MemberController {
public ResultEntity getMemberId(@RequestBody JSONObject jsonObject) {
String studentNumber = jsonObject.getString("studentNumber");
String trainingId = jsonObject.getString("trainingId");
String trainingStatus=jsonObject.getString("trainingStatus");
Integer schoolId =Constant.PRACTICE_SCHOOL_ID;
if(trainingId.isEmpty()){
trainingId=Constant.PRACTICE_TRAINING_ID;
String trainingStatus = jsonObject.getString("trainingStatus");
Integer schoolId = Constant.PRACTICE_SCHOOL_ID;
if (trainingId.isEmpty()) {
trainingId = Constant.PRACTICE_TRAINING_ID;
}
if(!Constant.PRACTICE_TRAINING_ID.equals(trainingId)){
if (!Constant.PRACTICE_TRAINING_ID.equals(trainingId)) {
schoolId = jsonObject.getInteger("schoolId");
}
Member member = memberService.selectByStudentNumberAndSchoolIdAndTrainingID(studentNumber, schoolId, trainingId);
Double positionProfitLoss=0.0;
if(!Constant.TRAINING_STATUS_FINISHED.equals(trainingStatus)){
Double positionProfitLoss = 0.0;
if (!Constant.TRAINING_STATUS_FINISHED.equals(trainingStatus)) {
positionProfitLoss = takeStashController.flashTotalPositionProfitLoss(member.getMemberId());
if (positionProfitLoss==null){
positionProfitLoss=0.0;
if (positionProfitLoss == null) {
positionProfitLoss = 0.0;
}
member.setPositionProfitLoss(positionProfitLoss); //设置持仓盈亏
}
Double initialCapital = member.getInitialCapital();//初始资金
Double cumulativeProfitLoss = member.getCumulativeProfitLoss(); //累计盈亏
if(cumulativeProfitLoss==null){
cumulativeProfitLoss=0.0;
if (cumulativeProfitLoss == null) {
cumulativeProfitLoss = 0.0;
}
if(cumulativeProfitLoss==null){
if (cumulativeProfitLoss == null) {
member.setCumulativeProfitLoss(0.0);
}
Double totalAssets = initialCapital+cumulativeProfitLoss; //总资产=初始资金+累计盈亏
Double totalAssets = initialCapital + cumulativeProfitLoss; //总资产=初始资金+累计盈亏
Double netValue = bigDecimalUtils.add(totalAssets, positionProfitLoss);
member.setTotalAssets(totalAssets); //设置总资产
member.setNetValue(netValue); //设置净值
Double marginUsed = member.getMarginUsed(); //获取已用保证金
if (marginUsed==null || marginUsed==0.0){
marginUsed=0.0;
if (marginUsed == null || marginUsed == 0.0) {
marginUsed = 0.0;
member.setMarginLevel(null);
member.setMarginUsed(0.0);
}else {
} else {
member.setMarginLevel(bigDecimalUtils.div(netValue, marginUsed, 2)); //设置保证金水平
}
member.setAvailableFunds(bigDecimalUtils.sub(netValue, marginUsed)); //设置可用资金
//特殊处理 占用ReportScore 传递美元转换rmb
ForexMarketData usdcnh = forexMarketDateUtil.getForexMarketDateByCode("USDCNY");
member.setReportScore(bigDecimalUtils.mul(Double.parseDouble(usdcnh.getSellPic())*totalAssets,1,2));
member.setReportScore(bigDecimalUtils.mul(Double.parseDouble(usdcnh.getSellPic()) * totalAssets, 1, 2));
return new ResultEntity(HttpStatus.OK, "获取成员ID", member);
}
@ -150,13 +150,13 @@ public class MemberController {
@ApiParam("页量") @RequestParam(required = false) Integer size) {
JwtUser jwtUser = TokenProvider.getJWTUser(request);
PageInfo<MemberVO> pageInfo = memberService.pagedListMembers(className, trainingName, markStatus, keyword, jwtUser,index, size);
PageInfo<MemberVO> pageInfo = memberService.pagedListMembers(className, trainingName, markStatus, keyword, jwtUser, index, size);
if (!pageInfo.getList().isEmpty()) {
for (MemberVO vo : pageInfo.getList()) {
Training training = trainingService.findById(vo.getTrainingId());
if (vo.getYield() == null || training == null) continue;
vo.setTradeTrainingScore(gradeWeightService.findWeightByWeightIdAndYield(training.getWeightId(), vo.getYield()).getActualScore());
vo.setTotalScore(vo.getTradeTrainingScore() + (vo.getReportScore()==null?0:vo.getReportScore()));
vo.setTotalScore(vo.getTradeTrainingScore() + (vo.getReportScore() == null ? 0 : vo.getReportScore()));
}
}
return new ResultEntity<PageInfo<MemberVO>>(pageInfo);
@ -180,6 +180,12 @@ public class MemberController {
ExcelData excelData = ExcelData.create(titles);
for (MemberVO member : members) {
List<Object> rows = new ArrayList<>();
Training training = trainingService.findById(member.getTrainingId());
if (member.getYield() == null || training == null) continue;
member.setTradeTrainingScore(gradeWeightService.findWeightByWeightIdAndYield(training.getWeightId(), member.getYield()).getActualScore());
member.setTotalScore(member.getTradeTrainingScore() + (member.getReportScore() == null ? 0 : member.getReportScore()));
rows.add(member.getTrainingName());
rows.add(member.getClassGrade());
rows.add(member.getStudentNumber());
@ -205,13 +211,12 @@ public class MemberController {
@GetMapping("listMembersByTrainingId")
public ResultEntity<PageInfo<MemberVO>> listMembersByTrainingId(@RequestParam String trainingId,
@ApiParam("班级id") Integer classId,
@ApiParam("查询关键字:学号和姓名")String keyword,
@ApiParam("查询关键字:学号和姓名") String keyword,
@RequestParam Integer index,
@RequestParam Integer size) {
PageInfo<MemberVO> members = memberService.pageListMemberByTrainingId(trainingId, classId,keyword,index, size);
PageInfo<MemberVO> members = memberService.pageListMemberByTrainingId(trainingId, classId, keyword, index, size);
return new ResultEntity<PageInfo<MemberVO>>(members);
}
}

@ -148,4 +148,7 @@ public interface TrainingMapper {
"WHERE end_time >= NOW() - INTERVAL 5 MINUTE AND end_time <= NOW() AND status = 'FINISHED'")
List<Training> findTrainingForUpdateScore();
@Select("SELECT * FROM sys_training WHERE weight_id=#{weightId}")
List<Training> findByWeightId(@Param("weightId") String weightId);
}

@ -5,23 +5,54 @@ import com.sztzjy.forex.trading_trading.dto.GradeWeightBO;
import com.sztzjy.forex.trading_trading.dto.GradeWeightDetailBO;
import com.sztzjy.forex.trading_trading.entity.GradeWeight;
import com.sztzjy.forex.trading_trading.entity.GradeWeightExample;
import com.sztzjy.forex.trading_trading.entity.Training;
import com.sztzjy.forex.trading_trading.mappers.GradeWeightMapper;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class GradeWeightService {
@Autowired
GradeWeightMapper gradeWeightMapper;
@Autowired
TrainingService trainingService;
public void insert(GradeWeightBO bo, JwtUser currentUser) {
GradeWeight.buildGradeWeights(bo, currentUser).forEach(gradeWeightMapper::insertSelective);
HashSet<String> oldWeightIds = new HashSet();
List<GradeWeight> gradeWeights = findWeightBySchoolId(currentUser.getSchoolId());
if (gradeWeights != null && gradeWeights.size() > 0) {
for(GradeWeight weight: gradeWeights) {
oldWeightIds.add(weight.getWeightId());
gradeWeightMapper.deleteByPrimaryKey(weight.getId());
}
}
List<GradeWeight> weights = GradeWeight.buildGradeWeights(bo, currentUser);
for (GradeWeight weight : weights) {
gradeWeightMapper.insertSelective(weight);
}
if (oldWeightIds != null) {
for(String oldWeightId: oldWeightIds) {
List<Training> training = trainingService.findByWeightId(oldWeightId);
if (training != null && training.size() > 0) {
GradeWeight gradeWeight = findBySchoolId(currentUser.getSchoolId());
for (Training t : training) {
t.setWeightId(gradeWeight.getWeightId());
trainingService.update(t);
}
}
}
}
}
public GradeWeight findBySchoolId(int schoolId) {
GradeWeightExample example = new GradeWeightExample();
GradeWeightExample.Criteria criteria = example.createCriteria();
@ -82,7 +113,7 @@ public class GradeWeightService {
criteria.andWeightIdEqualTo(weightId);
if (yield > 1000D) {
criteria.andLevelEqualTo(1);
}else{
} else {
criteria.andMaxProfitGreaterThan(yield);
criteria.andMinProfitLessThanOrEqualTo(yield);
}

@ -60,6 +60,10 @@ public class TrainingService {
return trainingMapper.selectByPrimaryKey(id);
}
public List<Training> findByWeightId(String weightId) {
return trainingMapper.findByWeightId(weightId);
}
public void delete(String id) {
//TODO 删除实训还要删除member表中的trainingId相关数据
trainingMapper.deleteByPrimaryKey(id);

Loading…
Cancel
Save