diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/WarningController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/WarningController.java index a138127..176d550 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/WarningController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/WarningController.java @@ -13,7 +13,6 @@ import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.List; @Api(tags = "预警页面") @@ -176,14 +175,17 @@ public class WarningController { @PutMapping("/setAlertHoldDuration") @ApiOperation("启用或关闭持仓时长预警") public void setAlertHoldDuration(@ApiParam("0 停用 1 启用") @RequestParam Integer status, - @ApiParam("id") @RequestParam String symbol) { - AlertHoldDurationExample alertHoldDurationExample = new AlertHoldDurationExample(); - alertHoldDurationExample.createCriteria().andSymbolEqualTo(symbol); - List alertHoldDurations = alertHoldDurationMapper.selectByExample(alertHoldDurationExample); - for (AlertHoldDuration alertHoldDuration : alertHoldDurations) { - alertHoldDuration.setStatus(status); - alertHoldDurationMapper.updateByPrimaryKeySelective(alertHoldDuration); - } + @ApiParam("id") @RequestParam String id) { +// AlertHoldDurationExample alertHoldDurationExample = new AlertHoldDurationExample(); +// alertHoldDurationExample.createCriteria().andSymbolEqualTo(symbol); +// List alertHoldDurations = alertHoldDurationMapper.selectByExample(alertHoldDurationExample); +// for (AlertHoldDuration alertHoldDuration : alertHoldDurations) { +// alertHoldDuration.setStatus(status); +// alertHoldDurationMapper.updateByPrimaryKeySelective(alertHoldDuration); +// } + AlertHoldDuration alertHoldDuration = alertHoldDurationMapper.selectByPrimaryKey(id); + alertHoldDuration.setStatus(status); + alertHoldDurationMapper.updateByPrimaryKeySelective(alertHoldDuration); } //删除持仓时长预警记录表 diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/WainingService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/WainingService.java index 3074454..b4c9d62 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/WainingService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/WainingService.java @@ -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 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 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 "新增成功"; }