|
|
|
@ -4,7 +4,7 @@ import cn.hutool.core.util.IdUtil;
|
|
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
|
|
import com.sztzjy.forex.trading_trading.config.websocket.WebSocket;
|
|
|
|
|
import com.sztzjy.forex.trading_trading.controller.TradingController;
|
|
|
|
|
import com.sztzjy.forex.trading_trading.controller.TakeStashController;
|
|
|
|
|
import com.sztzjy.forex.trading_trading.entity.*;
|
|
|
|
|
import com.sztzjy.forex.trading_trading.mappers.*;
|
|
|
|
|
import com.sztzjy.forex.trading_trading.util.ForexMarketDateUtil;
|
|
|
|
@ -87,29 +87,33 @@ public class WainingService {
|
|
|
|
|
List<MarginWarning> marginWarningList = marginWarningMapper.selectByExample(marginWarningExample);
|
|
|
|
|
MarginWarningRecordExample marginWarningRecordExample = new MarginWarningRecordExample();
|
|
|
|
|
marginWarningRecordExample.createCriteria().andNameEqualTo(userName).andTrainingidEqualTo(trainingId);
|
|
|
|
|
|
|
|
|
|
Member member = memberMapper.selectByPrimaryKey(memberId);
|
|
|
|
|
Double marginUsed = member.getMarginUsed(); //已用保证金
|
|
|
|
|
Double cumulativeProfitLoss = member.getCumulativeProfitLoss(); //累计盈亏
|
|
|
|
|
Double initialCapital = member.getInitialCapital(); //初始资金
|
|
|
|
|
Double positionProfitLoss = memberService.flashTotalPositionProfitLoss(memberId); //获取持仓盈亏
|
|
|
|
|
|
|
|
|
|
Double netValue = initialCapital + cumulativeProfitLoss + positionProfitLoss; //净值 = 持仓盈亏 + 累计盈亏 + 期初资金
|
|
|
|
|
Double marginLevel = (netValue / marginUsed) * 100; //保证金水平 = 净值/已用保证金 (%)
|
|
|
|
|
// 如果表里有数据直接返回
|
|
|
|
|
if (marginWarningList != null && !marginWarningList.isEmpty()) {
|
|
|
|
|
for (MarginWarning warning : marginWarningList) {
|
|
|
|
|
warning.setMarginUsed(member.getMarginUsed()); //字段实时变化 差的时候 重新赋值一次
|
|
|
|
|
warning.setMarginLevel(marginLevel); //保证金水平 这两个字段是实时变化的,数据库中没有
|
|
|
|
|
warning.setNetValue(netValue); //净值 查询的时候重新要查一次
|
|
|
|
|
return warning;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 表里没有就从member表里取好封装返回
|
|
|
|
|
MemberExample memberExample = new MemberExample();
|
|
|
|
|
memberExample.createCriteria().andTrainingIdEqualTo(trainingId).andNameEqualTo(userName);
|
|
|
|
|
List<Member> members = memberMapper.selectByExample(memberExample);
|
|
|
|
|
// Double positionProfitLoss = takeStashController.getPositionProfitLoss(memberId); //获取持仓盈亏
|
|
|
|
|
for (Member member : members) {
|
|
|
|
|
marginWarning.setAccount(userName);
|
|
|
|
|
BeanUtils.copyProperties(member, marginWarning);
|
|
|
|
|
marginWarning.setStatus(0);
|
|
|
|
|
marginWarning.setId(IdUtil.simpleUUID());
|
|
|
|
|
//这两个值需要写方法去取
|
|
|
|
|
//净值 = 持仓盈亏 + 累计盈亏 + 期初资金 保证金水平 = 净值/已用保证金 (%)
|
|
|
|
|
// Double marginLevel =
|
|
|
|
|
marginWarning.setMarginLevel(50.12); //保证金水平
|
|
|
|
|
marginWarning.setNetValue(50.2131); //净值
|
|
|
|
|
marginWarningMapper.insert(marginWarning);
|
|
|
|
|
}
|
|
|
|
|
marginWarning.setAccount(userName);
|
|
|
|
|
BeanUtils.copyProperties(member, marginWarning);
|
|
|
|
|
marginWarning.setStatus(0);
|
|
|
|
|
marginWarning.setId(IdUtil.simpleUUID());
|
|
|
|
|
|
|
|
|
|
marginWarning.setMarginLevel(marginLevel); //保证金水平
|
|
|
|
|
marginWarning.setNetValue(netValue); //净值
|
|
|
|
|
marginWarningMapper.insert(marginWarning);
|
|
|
|
|
return marginWarning;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -122,19 +126,21 @@ public class WainingService {
|
|
|
|
|
MarginWarningRecord marginWarningRecord = new MarginWarningRecord();
|
|
|
|
|
|
|
|
|
|
for (MarginWarning warning : marginWarningList) {
|
|
|
|
|
Date currentDate = new Date();
|
|
|
|
|
Timestamp currentTimestamp = new Timestamp(currentDate.getTime());
|
|
|
|
|
warning.setSetTime(currentTimestamp);
|
|
|
|
|
warning.setStatus(1);
|
|
|
|
|
warning.setAccount(userName);
|
|
|
|
|
warning.setWarningLevel(warningLevel);
|
|
|
|
|
marginWarningMapper.updateByPrimaryKeySelective(warning);
|
|
|
|
|
BeanUtils.copyProperties(warning, marginWarningRecord);
|
|
|
|
|
marginWarningRecord.setId(IdUtil.simpleUUID());
|
|
|
|
|
marginWarningRecord.setMarginWarningId(warning.getId());
|
|
|
|
|
marginWarningRecord.setTrainingid(trainingId);
|
|
|
|
|
marginWarningRecordMapper.insert(marginWarningRecord);
|
|
|
|
|
return warning;
|
|
|
|
|
if (warning.getMarginLevel() >= warningLevel) {
|
|
|
|
|
Date currentDate = new Date();
|
|
|
|
|
Timestamp currentTimestamp = new Timestamp(currentDate.getTime());
|
|
|
|
|
warning.setSetTime(currentTimestamp);
|
|
|
|
|
warning.setStatus(1);
|
|
|
|
|
warning.setAccount(userName);
|
|
|
|
|
warning.setWarningLevel(warningLevel);
|
|
|
|
|
marginWarningMapper.updateByPrimaryKeySelective(warning);
|
|
|
|
|
BeanUtils.copyProperties(warning, marginWarningRecord);
|
|
|
|
|
marginWarningRecord.setId(IdUtil.simpleUUID());
|
|
|
|
|
marginWarningRecord.setMarginWarningId(warning.getId());
|
|
|
|
|
marginWarningRecord.setTrainingid(trainingId);
|
|
|
|
|
marginWarningRecordMapper.insert(marginWarningRecord);
|
|
|
|
|
return warning;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
@ -332,6 +338,7 @@ public class WainingService {
|
|
|
|
|
tnwr.setId(IdUtil.simpleUUID());
|
|
|
|
|
BeanUtils.copyProperties(transactionNumberWarning, tnwr);
|
|
|
|
|
transactionNumberWarningMapper.insert(transactionNumberWarning);
|
|
|
|
|
tnwr.setWarningTime(null);
|
|
|
|
|
transactionNumberWarningRecordMapper.insert(tnwr);
|
|
|
|
|
return "新增成功";
|
|
|
|
|
}
|
|
|
|
|