From 96e443a77b1d425d3e536c288fc271fe182f1496 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Fri, 18 Jul 2025 18:31:44 +0800
Subject: [PATCH] app股票列表修改
---
src/main/java/com/nq/controller/backend/AdminStockAiController.java | 7
src/main/java/com/nq/vo/position/UserPositionVO.java | 5
src/main/java/com/nq/service/impl/StockServiceImpl.java | 10
src/main/java/com/nq/pojo/StockAIOrderPosition.java | 4
src/main/resources/mapper/UserPositionMapper.xml | 80 +++++++++++++
src/main/java/com/nq/pojo/UserPosition.java | 7
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java | 76 +++++++++++-
src/main/java/com/nq/service/IUserPositionService.java | 9 +
src/main/java/com/nq/controller/protol/UserPositionController.java | 21 +++
src/main/java/com/nq/dao/StockAiOrderPositionMapper.java | 8 +
src/main/resources/mapper/StockAiOrderPositionMapper.xml | 22 +++
src/main/java/com/nq/dao/UserPositionMapper.java | 9 +
src/main/java/com/nq/pojo/StockAIOrder.java | 2
src/main/java/com/nq/service/impl/StockAiServiceImpl.java | 6
src/main/java/com/nq/utils/UserPointUtil.java | 54 +++++++++
15 files changed, 287 insertions(+), 33 deletions(-)
diff --git a/src/main/java/com/nq/controller/backend/AdminStockAiController.java b/src/main/java/com/nq/controller/backend/AdminStockAiController.java
index cfcbb6a..5ca5239 100644
--- a/src/main/java/com/nq/controller/backend/AdminStockAiController.java
+++ b/src/main/java/com/nq/controller/backend/AdminStockAiController.java
@@ -101,14 +101,17 @@
/**
- * 根据条件查询股票code 名称 或 spell
+ * 根据条件查询股票
+ * @param pageNum
+ * @param pageSize
+ * @param keyWords code 名称 或 spell
* @return
*/
@PostMapping({"getStocksByKeyWords.do"})
@ResponseBody
public ServerResponse getStocksByKeyWords(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@RequestParam(value = "pageSize", defaultValue = "5") int pageSize,
- @RequestParam(value = "keyWords") String keyWords) {
+ @RequestParam(value = "keyWords", required = false) String keyWords) {
return stockService.getStocksByKeyWords(pageNum, pageSize, keyWords);
}
}
\ No newline at end of file
diff --git a/src/main/java/com/nq/controller/protol/UserPositionController.java b/src/main/java/com/nq/controller/protol/UserPositionController.java
index db83376..4de0f90 100644
--- a/src/main/java/com/nq/controller/protol/UserPositionController.java
+++ b/src/main/java/com/nq/controller/protol/UserPositionController.java
@@ -20,18 +20,35 @@
@Autowired
IUserPositionService iUserPositionService;
- //查询所有融资平仓/持仓信息
+ /*//查询所有融资平仓/持仓信息
@RequestMapping({"list.do"})
@ResponseBody
public ServerResponse list(HttpServletRequest request,
@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
- @RequestParam(value = "state", required = false) Integer state,
+ @RequestParam(value = "state", defaultValue = "0") Integer state,
@RequestParam(value = "stockCode", required = false) String stockCode,
@RequestParam(value = "stockSpell", required = false) String stockSpell,
@RequestParam(value = "stockType", required = false) String stockType
) {
return this.iUserPositionService.findMyPositionByCodeAndSpell(stockCode, stockSpell, state, request, pageNum, pageSize,stockType);
+ }*/
+
+ /**
+ * 查询所有融资平仓/持仓信息
+ * @param positionType //0正常股票 2.新股 3.大宗 4.ai交易
+ */
+ @RequestMapping({"list.do"})
+ @ResponseBody
+ public ServerResponse findMyPositionByParam(HttpServletRequest request,
+ @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
+ @RequestParam(value = "state", defaultValue = "0") Integer state,
+ @RequestParam(value = "stockCode", required = false) String stockCode,
+ @RequestParam(value = "stockSpell", required = false) String stockSpell,
+ @RequestParam(value = "stockType", required = false) String stockType,
+ @RequestParam(value = "positionType", required = false) Integer positionType) {
+ return this.iUserPositionService.findMyPositionByParam(stockCode, stockSpell, state, request, pageNum, pageSize,stockType, positionType);
}
//查询账户市值和持仓收益
diff --git a/src/main/java/com/nq/dao/StockAiOrderPositionMapper.java b/src/main/java/com/nq/dao/StockAiOrderPositionMapper.java
index 90deb76..151f6e4 100644
--- a/src/main/java/com/nq/dao/StockAiOrderPositionMapper.java
+++ b/src/main/java/com/nq/dao/StockAiOrderPositionMapper.java
@@ -2,9 +2,17 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nq.pojo.StockAIOrderPosition;
+import com.nq.vo.position.UserPositionVO;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
@Mapper
public interface StockAiOrderPositionMapper extends BaseMapper<StockAIOrderPosition> {
+ int updateStatusByOrderId(@Param("stockAiOrderId") Integer stockAiOrderId, @Param("status") Integer status);
+
+ List<UserPositionVO> getAiPositionList(@Param("userId") Integer userId, @Param("status") Integer status);
+
}
\ No newline at end of file
diff --git a/src/main/java/com/nq/dao/UserPositionMapper.java b/src/main/java/com/nq/dao/UserPositionMapper.java
index 4b82671..e3dbcf3 100644
--- a/src/main/java/com/nq/dao/UserPositionMapper.java
+++ b/src/main/java/com/nq/dao/UserPositionMapper.java
@@ -6,6 +6,7 @@
import java.util.Date;
import java.util.List;
+import com.nq.vo.position.UserPositionVO;
import org.apache.ibatis.annotations.Param;
public interface UserPositionMapper extends BaseMapper<UserPosition> {
@@ -23,11 +24,17 @@
UserPosition findPositionBySn(String paramString);
- List findMyPositionByCodeAndSpell(@Param("uid") Integer paramInteger1, @Param("stockCode") String paramString1,
+ List<UserPosition> findMyPositionByCodeAndSpell(@Param("uid") Integer paramInteger1, @Param("stockCode") String paramString1,
@Param("stockSpell") String paramString2, @Param("state") Integer paramInteger2,
@Param("stockType") String stockType
);
+
+ List<UserPositionVO> findMyPositionByParam(@Param("uid") Integer paramInteger1, @Param("stockCode") String paramString1,
+ @Param("stockSpell") String paramString2, @Param("state") Integer paramInteger2,
+ @Param("stockType") String stockType, @Param("positionType") Integer positionType
+
+ );
List findPositionByUserIdAndSellIdIsNull(Integer paramInteger);
diff --git a/src/main/java/com/nq/pojo/StockAIOrder.java b/src/main/java/com/nq/pojo/StockAIOrder.java
index 040e459..63c971c 100644
--- a/src/main/java/com/nq/pojo/StockAIOrder.java
+++ b/src/main/java/com/nq/pojo/StockAIOrder.java
@@ -29,7 +29,7 @@
private Integer userId;
//ai交易产品id
- private Long stockAiId;
+ private Integer stockAiId;
//买入时间
private Date buyDate;
diff --git a/src/main/java/com/nq/pojo/StockAIOrderPosition.java b/src/main/java/com/nq/pojo/StockAIOrderPosition.java
index 9400fed..5a77931 100644
--- a/src/main/java/com/nq/pojo/StockAIOrderPosition.java
+++ b/src/main/java/com/nq/pojo/StockAIOrderPosition.java
@@ -64,5 +64,9 @@
*/
private BigDecimal earnings;
+ /**
+ * 建仓状态 0持仓 1已平仓
+ */
+ private Integer status;
}
diff --git a/src/main/java/com/nq/pojo/UserPosition.java b/src/main/java/com/nq/pojo/UserPosition.java
index 64504ed..cbf5224 100644
--- a/src/main/java/com/nq/pojo/UserPosition.java
+++ b/src/main/java/com/nq/pojo/UserPosition.java
@@ -19,7 +19,7 @@
public class UserPosition implements Serializable {
@TableId(type = IdType.AUTO,value = "id")
private Integer id;
- //0正常股票 1新股 3大宗
+ //0正常股票 1.模拟 2.新股 3.大宗
private Integer positionType;
private String positionSn;
private Integer userId;
@@ -27,6 +27,7 @@
private Integer agentId;
private String stockName;
private String stockCode;
+ //存放股票类型
private String stockGid;
private String stockSpell;
private String buyOrderId;
@@ -36,10 +37,6 @@
private String sellOrderId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date sellOrderTime;
-
- public void setId(Integer id) {
- this.id = id;
- }
private BigDecimal sellOrderPrice;
//
diff --git a/src/main/java/com/nq/service/IUserPositionService.java b/src/main/java/com/nq/service/IUserPositionService.java
index b9f0478..c5e1301 100644
--- a/src/main/java/com/nq/service/IUserPositionService.java
+++ b/src/main/java/com/nq/service/IUserPositionService.java
@@ -27,9 +27,14 @@
UserPositionVO findByPostionSn(String positionSn);
- ServerResponse<PageInfo> findMyPositionByCodeAndSpell(String paramString1, String paramString2, Integer paramInteger,
+
+ ServerResponse findMyPositionByCodeAndSpell(String stockCode, String stockSpell,
+ Integer state, HttpServletRequest request,
+ int pageNum, int pageSize, String stockType);
+
+ ServerResponse findMyPositionByParam(String paramString1, String paramString2, Integer paramInteger,
HttpServletRequest paramHttpServletRequest,
- int paramInt1, int paramInt2,String stockType);
+ int paramInt1, int paramInt2,String stockType, Integer positionType);
PositionVO findUserPositionAllProfitAndLose(Integer paramInteger);
diff --git a/src/main/java/com/nq/service/impl/StockAiServiceImpl.java b/src/main/java/com/nq/service/impl/StockAiServiceImpl.java
index f184062..a17362f 100644
--- a/src/main/java/com/nq/service/impl/StockAiServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockAiServiceImpl.java
@@ -126,7 +126,7 @@
iUserAssetsServices.aiAvailableBalanceChange(stockAI.getStockType(), user.getId(), EUserAssets.BUY_AI, buyNum);
StockAIOrder stockAIOrder = new StockAIOrder();
stockAIOrder.setUserId(user.getId());
- stockAIOrder.setStockAiId(id);
+ stockAIOrder.setStockAiId(id.intValue());
stockAIOrder.setBuyDate(new Date());
stockAIOrder.setBuyAmount(buyNum);
stockAIOrder.setRemainAmount(buyNum);
@@ -292,6 +292,7 @@
BigDecimal earnings = model.getCoverPrice().subtract(model.getStockPrice()).multiply(BigDecimal.valueOf(model.getStockNum()));
model.setCreatDate(new Date());
model.setEarnings(earnings);
+ model.setStatus(0);
stockAIOrder.setRealEarning(stockAIOrder.getRealEarning().add(earnings));
//保存
@@ -335,6 +336,7 @@
}
//结算 TODO结算建仓 计算收益
/*//所有建仓
+
List<StockAIOrderPosition> stockAIOrderPositionList = stockAiOrderPositionMapper
.selectList(new QueryWrapper<StockAIOrderPosition>()
.eq("stock_ai_order_id", id));
@@ -349,6 +351,8 @@
amount = amount.add(earningsSUM);
}*/
StockAI stockAI = stockAiMapper.selectById(stockAIOrder.getStockAiId());
+ //结算修改为平仓状态
+ stockAiOrderPositionMapper.updateStatusByOrderId(stockAIOrder.getId(), 1);
//归还本金
iUserAssetsServices.aiAvailableBalanceChange(stockAI.getStockType(), stockAIOrder.getUserId(), EUserAssets.AI_SETTLEMENT, stockAIOrder.getBuyAmount());
//收益
diff --git a/src/main/java/com/nq/service/impl/StockServiceImpl.java b/src/main/java/com/nq/service/impl/StockServiceImpl.java
index c9d16a6..fd68115 100644
--- a/src/main/java/com/nq/service/impl/StockServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -828,16 +828,16 @@
*/
@Override
public ServerResponse getStocksByKeyWords(int pageNum, int pageSize, String keyWords) {
-
try {
PageHelper.startPage(pageNum, pageSize);
List<StockVOQuery> stocks = stockMapper.findStocksQuery(keyWords);
// 获取分页信息
PageInfo<StockVOQuery> pageInfo = new PageInfo<>(stocks);
-
- /*if (!pageInfo.getList().isEmpty()) {
-
- }*/
+ if (!pageInfo.getList().isEmpty()) {
+ pageInfo.getList().forEach(stock -> {
+ stock.setNowPrice(iPriceServices.getNowPrice(stock.getStockCode()));
+ });
+ }
return ServerResponse.createBySuccess(pageInfo);
} catch (Exception e) {
log.error("StockAiService getStocksByKeyWords error", e);
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 1be8727..11d666d 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -690,6 +690,68 @@
return ServerResponse.createBySuccess(pageInfo);
}
+ public ServerResponse findMyPositionByParam(String stockCode, String stockSpell,
+ Integer state, HttpServletRequest request,
+ int pageNum, int pageSize, String stockType, Integer positionType) {
+ try {
+ User user = iUserService.getCurrentUser(request);
+ if (user == null ){
+ return ServerResponse.createByErrorCodeMsg(ResponseCode.NEED_LOGIN.getCode(),"请先登录", request);
+ }
+
+ PageHelper.startPage(pageNum, pageSize);
+ List<UserPositionVO> userPositions = userPositionMapper.findMyPositionByParam(user.getId(),
+ stockCode, stockSpell, state, stockType, positionType);
+ PageInfo<UserPositionVO> pageInfo = new PageInfo<>(userPositions);
+
+ List<UserPositionVO> resultUserPositions = new ArrayList<>();
+ if (!pageInfo.getList().isEmpty()) {
+ for (UserPositionVO position : userPositions) {
+ UserPositionVO userPositionVO = position;
+ if (position.getPositionType() != 4) {
+ BigDecimal nowPrice;
+ if(state == 0){
+ nowPrice = priceServices.getNowPrice(position.getStockCode());
+ }else{
+ nowPrice = position.getSellOrderPrice();
+ }
+
+ userPositionVO = UserPointUtil.assembleUserPositionVO2(position,nowPrice);
+ userPositionVO.setOrderTotalPrice(userPositionVO.getOrderTotalPrice().multiply(new BigDecimal(userPositionVO.getOrderLever())));
+
+ StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new LambdaQueryWrapper<StockSubscribe>()
+ .eq(StockSubscribe::getCode, userPositionVO.getStockCode()));
+ if(position.getSellOrderId() == null){
+ if (null != stockSubscribe && DateUtil.date().before(stockSubscribe.getListDate())) {
+ userPositionVO.setProfitAndLose(BigDecimal.ZERO);
+ userPositionVO.setProfitAndLoseParent("0%");
+ userPositionVO.setIsListed(false);
+ }else{
+ userPositionVO.setIsListed(true);
+ userPositionVO.setProfitAndLose(userPositionVO.getProfitAndLose().multiply(new BigDecimal(userPositionVO.getOrderLever())));
+ }
+ }else{
+ userPositionVO.setProfitAndLose(userPositionVO.getProfitAndLose().multiply(new BigDecimal(userPositionVO.getOrderLever())));
+ }
+ } else {
+ //ai交易 计算收益率 收益/本金*100
+ BigDecimal profitAndLose = userPositionVO.getProfitAndLose()
+ .divide(userPositionVO.getOrderTotalPrice())
+ .multiply(new BigDecimal(100))
+ .setScale(2, BigDecimal.ROUND_DOWN);
+ userPositionVO.setProfitAndLoseParent(profitAndLose + "%");
+ }
+ resultUserPositions.add(userPositionVO);
+ }
+ }
+ pageInfo.setList(resultUserPositions);
+ return ServerResponse.createBySuccess(pageInfo);
+ } catch (Exception e) {
+ log.error("IUserPositionService findMyPositionByParam {}", e.getMessage());
+ }
+ return ServerResponse.createByError();
+ }
+
public PositionVO findUserPositionAllProfitAndLose(Integer userId) {
List<UserPosition> userPositions = this.userPositionMapper.findPositionByUserIdAndSellIdIsNull(userId);
@@ -958,7 +1020,7 @@
userPosition.setAgentId(user.getAgentId());
userPosition.setStockCode(stock.getStockCode());
userPosition.setStockName(stock.getStockName());
- userPosition.setStockGid(stock.getStockGid());
+ userPosition.setStockGid(stock.getStockType());
userPosition.setStockSpell(stock.getStockSpell());
userPosition.setBuyOrderId(GeneratePosition.getPositionId());
userPosition.setBuyOrderTime(DateTimeUtil.strToDate(buyTime));
@@ -1341,7 +1403,7 @@
stockType = stock.getStockType();
}
- userPosition.setPositionType(1);
+ userPosition.setPositionType(2);
userPosition.setPositionSn(KeyUtils.getUniqueKey());
userPosition.setUserId(userStockSubscribe.getUserId());
userPosition.setNickName(userStockSubscribe.getRealName());
@@ -1599,7 +1661,7 @@
userPosition.setAgentId(user.getAgentId());
userPosition.setStockCode(stock.getStockCode());
userPosition.setStockName(stock.getStockName());
- userPosition.setStockGid(stock.getStockGid());
+ userPosition.setStockGid(stock.getStockType());
userPosition.setStockSpell(stock.getStockSpell());
userPosition.setBuyOrderId(GeneratePosition.getPositionId());
userPosition.setBuyOrderTime(new Date());
@@ -2042,14 +2104,14 @@
BigDecimal usPositionEarningsParent = BigDecimal.ZERO; //美股持仓收益百分比
BigDecimal mxPositionEarningsParent = BigDecimal.ZERO; //墨西哥持仓收益百分比
- if (userPositions.size() > 0) {
+ if (!userPositions.isEmpty()) {
for (UserPosition position : userPositions) {
- BigDecimal nowPrice;
- if(state == 0){
+ BigDecimal nowPrice = priceServices.getNowPrice(position.getStockCode());
+ /*if(state == 0){
nowPrice = priceServices.getNowPrice(position.getStockCode());
}else{
nowPrice = position.getSellOrderPrice();
- }
+ }*/
UserPositionVO userPositionVO = UserPointUtil.assembleUserPositionVO(position,nowPrice);
userPositionVO.setOrderTotalPrice(userPositionVO.getOrderTotalPrice().multiply(new BigDecimal(userPositionVO.getOrderLever())));
diff --git a/src/main/java/com/nq/utils/UserPointUtil.java b/src/main/java/com/nq/utils/UserPointUtil.java
index 8ae2780..ac5f782 100644
--- a/src/main/java/com/nq/utils/UserPointUtil.java
+++ b/src/main/java/com/nq/utils/UserPointUtil.java
@@ -66,6 +66,29 @@
return userPositionVO;
}
+
+ /**
+ * 返回当前 仓位表 实时数据
+ * */
+ public static UserPositionVO assembleUserPositionVO2(UserPositionVO userPositionVO,BigDecimal nowPrice) {
+ PositionProfitVO positionProfitVO = getPositionProfitVO2(userPositionVO, nowPrice);
+ BigDecimal ss = positionProfitVO.getProfitAndLose().divide(userPositionVO.getOrderTotalPrice(),BigDecimal.ROUND_CEILING)
+ .multiply(new BigDecimal(100));
+ ss = ss.setScale(2, BigDecimal.ROUND_DOWN);
+ userPositionVO.setProfitAndLoseParent(ss+"%");
+ userPositionVO.setProfitAndLoseParent2(ss);
+ userPositionVO.setProfitAndLose(positionProfitVO.getProfitAndLose());
+ userPositionVO.setAllProfitAndLose(positionProfitVO.getAllProfitAndLose());
+ if(StringUtil.isEmpty(userPositionVO.getSellOrderId())){
+ userPositionVO.setNow_price(nowPrice.toString());
+ }else{
+ userPositionVO.setNow_price(userPositionVO.getSellOrderPrice().toString());
+ }
+ userPositionVO.setAmountToBeCovered(userPositionVO.getAmountToBeCovered());
+ return userPositionVO;
+ }
+
+
/**
* 计算仓位盈亏计算方法
* */
@@ -96,4 +119,35 @@
positionProfitVO.setNowPrice(nowPrice.setScale(5,BigDecimal.ROUND_UP).toString());
return positionProfitVO;
}
+
+ /**
+ * 计算仓位盈亏计算方法
+ * */
+ public static PositionProfitVO getPositionProfitVO2(UserPositionVO position,BigDecimal nowPrice) {
+ BigDecimal profitAndLose = new BigDecimal("0");
+ BigDecimal allProfitAndLose = new BigDecimal("0");
+
+ if (position.getSellOrderId() != null) {
+
+ BigDecimal subPrice = position.getSellOrderPrice().subtract(position.getBuyOrderPrice());
+ profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue()));
+ if ("买跌".equals(position.getOrderDirection())) {
+ profitAndLose = profitAndLose.negate();
+ }
+ allProfitAndLose = profitAndLose.subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
+ } else {
+ BigDecimal subPrice = nowPrice.subtract(position.getBuyOrderPrice());
+ profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue()));
+ if ("买跌".equals(position.getOrderDirection())) {
+ profitAndLose = profitAndLose.negate();
+ }
+ //总盈亏= 浮动盈亏 – 手续费 – 印花税 – 留仓费 – 点差费
+ allProfitAndLose = profitAndLose.subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
+ }
+ PositionProfitVO positionProfitVO = new PositionProfitVO();
+ positionProfitVO.setProfitAndLose(profitAndLose);
+ positionProfitVO.setAllProfitAndLose(allProfitAndLose);
+ positionProfitVO.setNowPrice(nowPrice.setScale(5,BigDecimal.ROUND_UP).toString());
+ return positionProfitVO;
+ }
}
diff --git a/src/main/java/com/nq/vo/position/UserPositionVO.java b/src/main/java/com/nq/vo/position/UserPositionVO.java
index 004678a..26a83f2 100644
--- a/src/main/java/com/nq/vo/position/UserPositionVO.java
+++ b/src/main/java/com/nq/vo/position/UserPositionVO.java
@@ -34,11 +34,6 @@
private Date sellOrderTime;
-
- public void setId(Integer id) {
- this.id = id;
- }
-
private BigDecimal sellOrderPrice;
private BigDecimal profitTargetPrice;
private BigDecimal stopTargetPrice;
diff --git a/src/main/resources/mapper/StockAiOrderPositionMapper.xml b/src/main/resources/mapper/StockAiOrderPositionMapper.xml
new file mode 100644
index 0000000..ab77bd8
--- /dev/null
+++ b/src/main/resources/mapper/StockAiOrderPositionMapper.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.nq.dao.StockAiOrderPositionMapper">
+
+ <update id="updateStatusByOrderId">
+ update stock_ai_order_position
+ set status = #{status}
+ where stock_ai_order_id = #{stockAiOrderId}
+ </update>
+
+ <select id="getAiPositionList" resultType="com.nq.vo.position.UserPositionVO">
+ SELECT * FROM stock_ai_order_position
+ WHERE stock_ai_order_id IN (SELECT id FROM stock_ai_order WHERE
+ user_id = #{userId} and status='passed' )
+ <if test="status != null">
+ AND status = #{status}
+ </if>
+ ORDER BY creat_date DESC
+ </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/UserPositionMapper.xml b/src/main/resources/mapper/UserPositionMapper.xml
index d4e785c..34c6e59 100644
--- a/src/main/resources/mapper/UserPositionMapper.xml
+++ b/src/main/resources/mapper/UserPositionMapper.xml
@@ -387,8 +387,7 @@
<!-- <if test="stockType != null and stockType!= ''">-->
<!-- and stock_gid = #{stockType}-->
<!-- </if>-->
-
-
+ and position_type != 1
</where>
ORDER BY id DESC
</select>
@@ -542,6 +541,83 @@
limit 1
</select>
+ <select id="findMyPositionByParam" parameterType="map" resultType="com.nq.vo.position.UserPositionVO">
+ SELECT a.* FROM (SELECT
+ *
+ FROM user_position
+ WHERE
+ user_id = #{uid}
+ UNION ALL
+ SELECT
+ p.id,
+ 4 position_type,
+ null position_sn,
+ null user_id,
+ null nick_name,
+ null agent_id,
+ s.stock_name,
+ s.stock_code,
+ s.stock_gid,
+ s.stock_spell,
+ p.stock_ai_order_id buy_order_id,
+ p.creat_date buy_order_time,
+ p.stock_price buy_order_price,
+ null sell_order_id,
+ null sell_order_time,
+ p.cover_price sell_order_price,
+ null profit_target_price,
+ null stop_target_price,
+ null order_direction,
+ p.stock_num order_num,
+ null order_lever,
+ p.stock_num*p.stock_price order_total_price,
+ 0 order_fee,
+ 0 order_spread,
+ 0 order_stay_fee,
+ null order_stay_days,
+ p.earnings profit_and_lose,
+ p.earnings all_profit_and_lose,
+ 0 is_lock,
+ null lock_msg,
+ null stock_plate,
+ 0 spread_rate_price,
+ 0 margin_add,
+ null dz_id,
+ null new_id,
+ 0 amount_to_be_covered
+ FROM stock_ai_order_position p
+ LEFT JOIN stock s ON s.id = p.stock_id
+ WHERE p.stock_ai_order_id IN (SELECT id FROM stock_ai_order WHERE
+ user_id = #{uid} and status='passed' )
+ <if test="state != null ">
+ <if test="state == 0">
+ and p.status = 0
+ </if>
+ <if test="state == 1">
+ and p.status = 1
+ </if>
+ </if>
+ ) a
+ WHERE a.position_type != 1
+ <if test="state != null ">
+ <if test="state == 0">
+ and a.sell_order_id is null
+ </if>
+ <if test="state == 1">
+ and a.sell_order_id is not null
+ </if>
+ </if>
+ <if test="stockCode != null and stockCode != '' ">
+ and a.stock_code like CONCAT('%','${stockCode}','%')
+ </if>
+ <if test="stockSpell != null and stockSpell != '' ">
+ and a.stock_spell like CONCAT('%','${stockSpell}','%')
+ </if>
+ <if test="positionType != null">
+ and a.position_type = #{positionType}
+ </if>
+ ORDER BY a.buy_order_time DESC
+ </select>
</mapper>
--
Gitblit v1.9.3