Merge remote-tracking branch 'origin/master'

pull/1/head
陈沅 2 years ago
commit 71256efc7a

@ -17,6 +17,7 @@ import io.swagger.annotations.ApiParam;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@Api(tags = "预警页面") @Api(tags = "预警页面")
@ -148,9 +149,9 @@ public class WarningController {
@ApiOperation("新增持仓时长预警") @ApiOperation("新增持仓时长预警")
public void addAlertHoldDuration(@ApiParam("持仓时长预警对象") @RequestBody AlertHoldDuration alertHoldDuration, public void addAlertHoldDuration(@ApiParam("持仓时长预警对象") @RequestBody AlertHoldDuration alertHoldDuration,
@ApiParam("任务ID") @RequestParam String trainingId, @ApiParam("任务ID") @RequestParam String trainingId,
@ApiParam("姓名")@RequestParam String name, @ApiParam("姓名") @RequestParam String name
@ApiParam("交易记录表ID")@RequestParam String stashId) { ) {
wainingService.addAlertHoldDuration(alertHoldDuration,trainingId,name,stashId); wainingService.addAlertHoldDuration(alertHoldDuration, trainingId, name);
} }
//删除持仓时长预警 //删除持仓时长预警

@ -107,6 +107,7 @@ public class IndexService {
criteria1.andNameLike("%" + name + "%"); criteria1.andNameLike("%" + name + "%");
} }
memberExample.setOrderByClause("yield DESC"); memberExample.setOrderByClause("yield DESC");
PageHelper.startPage(index, size);
List<Member> membersForTraining = memberMapper.selectByExample(memberExample); List<Member> membersForTraining = memberMapper.selectByExample(memberExample);
for (int i = 1; i <= membersForTraining.size(); i++) { for (int i = 1; i <= membersForTraining.size(); i++) {
for (Member member : membersForTraining) { for (Member member : membersForTraining) {

@ -114,7 +114,7 @@ public class WainingService {
warning.setStatus(1); warning.setStatus(1);
warning.setAccount(userName); warning.setAccount(userName);
warning.setWarningLevel(warningLevel); warning.setWarningLevel(warningLevel);
marginWarningMapper.updateByExampleSelective(warning, marginWarningExample); marginWarningMapper.updateByPrimaryKeySelective(warning);
BeanUtils.copyProperties(warning, marginWarningRecord); BeanUtils.copyProperties(warning, marginWarningRecord);
marginWarningRecord.setId(IdUtil.simpleUUID()); marginWarningRecord.setId(IdUtil.simpleUUID());
marginWarningRecord.setMarginWarningId(warning.getId()); marginWarningRecord.setMarginWarningId(warning.getId());
@ -125,40 +125,6 @@ public class WainingService {
return null; return null;
} }
// 定时任务,五秒比较一次保证金预警值是否相等,
// @Scheduled(fixedRate = 10000)
// public void compareMarginLevels() {
// Boolean isStorageNeeded = true;
// Set<String> keys = redisUtil.keys("*marginWarningId*");
// for (String key : keys) {
// Map<Object, Object> hmget = redisUtil.hmget(key);
// Integer warningLevel = (Integer) hmget.get("warningLevel");
// MarginWarningRecord marginWarningRecord = (MarginWarningRecord) hmget.get("marginWarningRecord");
// String memberId = (String) hmget.get("memberId");
// Member member = memberMapper.selectByPrimaryKey(memberId);
// String message = "保证金已到达预警水平!";
// if (warningLevel != null) {
// Double aDouble = Double.valueOf(warningLevel);
// Double marginLevel = member.getMarginLevel();
// if (redisUtil.get("StorageOrNot") != null) {
// boolean storageOrNot = redisUtil.get("StorageOrNot");
//// 相等就存预警水平和预警时间,并且发送消息给前端提醒
// if (aDouble >= marginLevel) {
// if (!storageOrNot) {
// Date date = new Date();
// Timestamp current = new Timestamp(date.getTime());
// marginWarningRecord.setWarningTime(current);
// marginWarningRecord.setWarningLevel(aDouble.intValue());
// marginWarningRecordMapper.insert(marginWarningRecord);
// redisUtil.set("StorageOrNot", true);
// simpMessagingTemplate.convertAndSend("/topic/margin-change", message);
//// isStorageNeeded = false; // 存完库后设置为false
// }
// }
// }
// }
// }
// }
//查询保证金预警记录表 //查询保证金预警记录表
public PageInfo<MarginWarningRecord> getMarginWarningRecord(Integer index, Integer size, String userName, String trainingId) { public PageInfo<MarginWarningRecord> getMarginWarningRecord(Integer index, Integer size, String userName, String trainingId) {
@ -176,47 +142,6 @@ public class WainingService {
marginWarningMapper.updateByPrimaryKeySelective(marginWarning); marginWarningMapper.updateByPrimaryKeySelective(marginWarning);
} }
// // 新增行情预警,并在达到预警值时将数据存入记录表
// public void addMarketWarning(MarketWarning marketWarning, String trainingId, String name) {
// MarketWarningRecord marketWarningRecord = new MarketWarningRecord();
// marketWarning.setTime(new Timestamp(new Date().getTime()));
// marketWarning.setTariningid(trainingId);
// marketWarning.setName(name);
// marketWarningMapper.insert(marketWarning);
// BeanUtils.copyProperties(marketWarning, marketWarningRecord);
// marketWarningRecord.setMarketWarningId(marketWarning.getId());
// marketWarningRecord.setId(IdUtil.simpleUUID());
//
//// 1.从redis中取出当前价位
// ForexMarketData forexMarketDateByCode = forexMarketDateUtil.getForexMarketDateByCode(marketWarning.getSymbol());
// if (forexMarketDateByCode != null) {
// Double buyPic = forexMarketDateByCode.getBuyPic();
// String sellPic = forexMarketDateByCode.getSellPic();
// Double sellPicValue = Double.parseDouble(sellPic);
//// 2.判断新增的预警是买还是卖
// String direction = marketWarning.getDirection();
// Double upperBreakPrice = marketWarning.getUpperBreakPrice();
// Double lowerBreakPrice = marketWarning.getLowerBreakPrice();
// String message = "预警通知:价格已达到预警值";
// if (direction.equals("买")) {
//// 3.拿redis的价位和新增的高价低价做比较==的时候就弹出提示,并且存入行情预警记录表
// if (buyPic.equals(upperBreakPrice) || buyPic.equals(lowerBreakPrice)) {
// simpMessagingTemplate.convertAndSend("/topic/alerts", message);
// marketWarningRecord.setWarningPrice(buyPic);
// marketWarningRecord.setWarningTime((new Timestamp(new Date().getTime())));
// }
// } else {
// if (sellPicValue.equals(upperBreakPrice) || sellPicValue.equals(lowerBreakPrice)) {
// simpMessagingTemplate.convertAndSend("/topic/alerts", message);
// marketWarningRecord.setWarningPrice(sellPicValue);
// marketWarningRecord.setWarningTime((new Timestamp(new Date().getTime())));
// }
// }
// }
// marketWarningRecordMapper.insert(marketWarningRecord);
// }
// 新增行情预警,并在达到预警值时将数据存入记录表 // 新增行情预警,并在达到预警值时将数据存入记录表
public void addMarketWarning(MarketWarning marketWarning, String trainingId, String name) { public void addMarketWarning(MarketWarning marketWarning, String trainingId, String name) {
// 记录表需要设置预警水平和预警时间 为报警时候的值 // 记录表需要设置预警水平和预警时间 为报警时候的值
@ -267,7 +192,7 @@ public class WainingService {
simpMessagingTemplate.convertAndSend("/topic/alerts", message); simpMessagingTemplate.convertAndSend("/topic/alerts", message);
marketWarningRecord.setWarningPrice(buyPic); marketWarningRecord.setWarningPrice(buyPic);
marketWarningRecord.setWarningTime((new Timestamp(new Date().getTime()))); marketWarningRecord.setWarningTime((new Timestamp(new Date().getTime())));
marketWarningRecordMapper.updateByExampleSelective(marketWarningRecord, marketWarningRecordExample); marketWarningRecordMapper.updateByPrimaryKeySelective(marketWarningRecord);
redisUtil.del(key); redisUtil.del(key);
} }
} else { } else {
@ -275,7 +200,7 @@ public class WainingService {
simpMessagingTemplate.convertAndSend("/topic/alerts", message); simpMessagingTemplate.convertAndSend("/topic/alerts", message);
marketWarningRecord.setWarningPrice(sellPicValue); marketWarningRecord.setWarningPrice(sellPicValue);
marketWarningRecord.setWarningTime((new Timestamp(new Date().getTime()))); marketWarningRecord.setWarningTime((new Timestamp(new Date().getTime())));
marketWarningRecordMapper.updateByExampleSelective(marketWarningRecord, marketWarningRecordExample); marketWarningRecordMapper.updateByPrimaryKeySelective(marketWarningRecord);
redisUtil.del(key); redisUtil.del(key);
} }
} }
@ -284,13 +209,19 @@ public class WainingService {
} }
//新增持仓时长预警 //新增持仓时长预警
public void addAlertHoldDuration(AlertHoldDuration alertHoldDuration, String trainingId, String name, String stashId) { public void addAlertHoldDuration(AlertHoldDuration alertHoldDuration, String trainingId, String name) {
TakeStash takeStash = takeStashMapper.selectByPrimaryKey(stashId); String symbol = alertHoldDuration.getSymbol();
TakeStashExample takeStashExample = new TakeStashExample();
takeStashExample.createCriteria().andTradingCodeEqualTo(symbol);
List<TakeStash> takeStashes = takeStashMapper.selectByExample(takeStashExample);
for (TakeStash takeStash : takeStashes) {
String stashId = takeStash.getStashId();
alertHoldDuration.setName(name); alertHoldDuration.setName(name);
alertHoldDuration.setTrainingid(trainingId); alertHoldDuration.setTrainingid(trainingId);
alertHoldDuration.setSetTime(new Timestamp(new Date().getTime())); alertHoldDuration.setSetTime(new Timestamp(new Date().getTime()));
alertHoldDuration.setStashid(stashId); alertHoldDuration.setStashid(stashId);
alertHoldDurationMapper.insert(alertHoldDuration); alertHoldDurationMapper.insert(alertHoldDuration);
String durationId = alertHoldDuration.getId(); String durationId = alertHoldDuration.getId();
AlertHoldDurationRecord ahdr = new AlertHoldDurationRecord(); AlertHoldDurationRecord ahdr = new AlertHoldDurationRecord();
BeanUtils.copyProperties(alertHoldDuration, ahdr); BeanUtils.copyProperties(alertHoldDuration, ahdr);
@ -302,38 +233,130 @@ public class WainingService {
objectObjectHashMap.put("takeStashId", stashId); objectObjectHashMap.put("takeStashId", stashId);
objectObjectHashMap.put("durationId", durationId); objectObjectHashMap.put("durationId", durationId);
alertHoldDurationRecordMapper.insert(ahdr); alertHoldDurationRecordMapper.insert(ahdr);
redisUtil.hmset("AlertHoldDurationTakeStashId" + stashId + "_", objectObjectHashMap); redisUtil.hmset("AlertHoldDurationTakeStashId" + stashId + "_", objectObjectHashMap);
b(); b();
} }
}
// 持仓时长预警对比定时任务 // 持仓时长预警对比定时任务
// @Scheduled(fixedRate = 10000) @Scheduled(fixedRate = 10000)
public void b() { public void b() {
// Set<String> alertHoldDurationTakeStashId = redisUtil.keys("AlertHoldDurationTakeStashId"); Set<String> alertHoldDurationTakeStashId = redisUtil.keys("AlertHoldDurationTakeStashId");
// for (String takeStashId : alertHoldDurationTakeStashId) { for (String takeStashId : alertHoldDurationTakeStashId) {
// Map<Object, Object> hmget = redisUtil.hmget(takeStashId); Map<Object, Object> hmget = redisUtil.hmget(takeStashId);
// String resultTakeStashId = (String) hmget.get("takeStashId"); String resultTakeStashId = (String) hmget.get("takeStashId");
// String durationId = (String)hmget.get("durationId"); String durationId = (String) hmget.get("durationId");
// AlertHoldDurationRecordExample alertHoldDurationRecordExample = new AlertHoldDurationRecordExample(); //根据TakeStashId查出对应的持仓记录对象
// alertHoldDurationRecordExample.createCriteria().andStashidEqualTo(resultTakeStashId); AlertHoldDurationRecordExample alertHoldDurationRecordExample = new AlertHoldDurationRecordExample();
// List<AlertHoldDuration> alertHoldDurations = alertHoldDurationMapper.selectByExample(alertHoldDurationExample); alertHoldDurationRecordExample.createCriteria().andStashidEqualTo(resultTakeStashId);
// for (AlertHoldDuration alertHoldDuration : alertHoldDurations) { TakeStash takeStash = takeStashMapper.selectByPrimaryKey(resultTakeStashId);
// String wariningHoldDuration = alertHoldDuration.getWariningHoldDuration(); Date timeTransaction = takeStash.getTimeTransaction(); //交易时间
// Date setTime = alertHoldDuration.getSetTime(); String buySellType = takeStash.getBuySellType(); //买卖类型
// Calendar calendar = Calendar.getInstance(); List<AlertHoldDurationRecord> alertHoldDurationRecords = alertHoldDurationRecordMapper.selectByExample(alertHoldDurationRecordExample);
// calendar.setTime(setTime); AlertHoldDurationRecord ahdr = alertHoldDurationRecords.get(0);
// calendar.add(Calendar.DAY_OF_YEAR, Integer.parseInt(wariningHoldDuration));
// //相加后的时间 AlertHoldDuration alertHoldDurations = alertHoldDurationMapper.selectByPrimaryKey(durationId);
// Date time = calendar.getTime(); String wainingHoldDuration = alertHoldDurations.getWariningHoldDuration();
// Timestamp timestamp = new Timestamp(new Date().getTime()); Date setTime = alertHoldDurations.getSetTime();
// if ("当前时间等于或大于预警值就将时间存库然后发送消息给前端"){ Calendar calendar = Calendar.getInstance();
//// TODO 设置记录表的持仓时长和交易时间两个参数 calendar.setTime(setTime);
// // ahdr.setHoldDuration("持仓时长"); calendar.add(Calendar.DAY_OF_YEAR, Integer.parseInt(wainingHoldDuration));
//// ahdr.setWariningTime("预警时间"); //相加后的时间
Timestamp resultTime = new Timestamp(calendar.getTime().getTime());
Timestamp nowTime = new Timestamp(new Date().getTime());
long timeDiff = nowTime.getTime() - timeTransaction.getTime();
long totalHours = timeDiff / (1000 * 60 * 60);
long days = totalHours / 24;
long hours = totalHours % 24;
String timeString = days + "天 " + hours + "小时";
//"当前时间等于或大于预警值就将时间存库然后发送消息给前端"
if (nowTime.compareTo(resultTime) >= 0) {
ahdr.setWariningTime(nowTime); //设置预警时间
ahdr.setTradingHour(timeTransaction); //设置交易时间
}
if (buySellType != null) {
ahdr.setDirection(buySellType); //设置买卖类型
}
ahdr.setHoldDuration(timeString); //设置持仓时长
alertHoldDurationRecordMapper.updateByPrimaryKeySelective(ahdr);
}
}
// // 新增行情预警,并在达到预警值时将数据存入记录表
// public void addMarketWarning(MarketWarning marketWarning, String trainingId, String name) {
// MarketWarningRecord marketWarningRecord = new MarketWarningRecord();
// marketWarning.setTime(new Timestamp(new Date().getTime()));
// marketWarning.setTariningid(trainingId);
// marketWarning.setName(name);
// marketWarningMapper.insert(marketWarning);
// BeanUtils.copyProperties(marketWarning, marketWarningRecord);
// marketWarningRecord.setMarketWarningId(marketWarning.getId());
// marketWarningRecord.setId(IdUtil.simpleUUID());
//
//// 1.从redis中取出当前价位
// ForexMarketData forexMarketDateByCode = forexMarketDateUtil.getForexMarketDateByCode(marketWarning.getSymbol());
// if (forexMarketDateByCode != null) {
// Double buyPic = forexMarketDateByCode.getBuyPic();
// String sellPic = forexMarketDateByCode.getSellPic();
// Double sellPicValue = Double.parseDouble(sellPic);
//// 2.判断新增的预警是买还是卖
// String direction = marketWarning.getDirection();
// Double upperBreakPrice = marketWarning.getUpperBreakPrice();
// Double lowerBreakPrice = marketWarning.getLowerBreakPrice();
// String message = "预警通知:价格已达到预警值";
// if (direction.equals("买")) {
//// 3.拿redis的价位和新增的高价低价做比较==的时候就弹出提示,并且存入行情预警记录表
// if (buyPic.equals(upperBreakPrice) || buyPic.equals(lowerBreakPrice)) {
// simpMessagingTemplate.convertAndSend("/topic/alerts", message);
// marketWarningRecord.setWarningPrice(buyPic);
// marketWarningRecord.setWarningTime((new Timestamp(new Date().getTime())));
// }
// } else {
// if (sellPicValue.equals(upperBreakPrice) || sellPicValue.equals(lowerBreakPrice)) {
// simpMessagingTemplate.convertAndSend("/topic/alerts", message);
// marketWarningRecord.setWarningPrice(sellPicValue);
// marketWarningRecord.setWarningTime((new Timestamp(new Date().getTime())));
// } // }
// } // }
// // }
// marketWarningRecordMapper.insert(marketWarningRecord);
// } // }
} // 定时任务,五秒比较一次保证金预警值是否相等,
// @Scheduled(fixedRate = 10000)
// public void compareMarginLevels() {
// Boolean isStorageNeeded = true;
// Set<String> keys = redisUtil.keys("*marginWarningId*");
// for (String key : keys) {
// Map<Object, Object> hmget = redisUtil.hmget(key);
// Integer warningLevel = (Integer) hmget.get("warningLevel");
// MarginWarningRecord marginWarningRecord = (MarginWarningRecord) hmget.get("marginWarningRecord");
// String memberId = (String) hmget.get("memberId");
// Member member = memberMapper.selectByPrimaryKey(memberId);
// String message = "保证金已到达预警水平!";
// if (warningLevel != null) {
// Double aDouble = Double.valueOf(warningLevel);
// Double marginLevel = member.getMarginLevel();
// if (redisUtil.get("StorageOrNot") != null) {
// boolean storageOrNot = redisUtil.get("StorageOrNot");
//// 相等就存预警水平和预警时间,并且发送消息给前端提醒
// if (aDouble >= marginLevel) {
// if (!storageOrNot) {
// Date date = new Date();
// Timestamp current = new Timestamp(date.getTime());
// marginWarningRecord.setWarningTime(current);
// marginWarningRecord.setWarningLevel(aDouble.intValue());
// marginWarningRecordMapper.insert(marginWarningRecord);
// redisUtil.set("StorageOrNot", true);
// simpMessagingTemplate.convertAndSend("/topic/margin-change", message);
//// isStorageNeeded = false; // 存完库后设置为false
// }
// }
// }
// }
// }
// }
} }

Loading…
Cancel
Save