Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
stockPriceTack
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
刘长帅
stockPriceTack
Commits
64c9ace3
Commit
64c9ace3
authored
May 07, 2024
by
lilei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
首席定制定时任务
parent
2ed18d3c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
6153 additions
and
0 deletions
+6153
-0
CommonConfig.java
...va/com/zfxftech/telmarket/common/config/CommonConfig.java
+2
-0
MybatisConfiguration.java
...ket/common/config/configuration/MybatisConfiguration.java
+1
-0
ChiefBatchSellingOrderBO.java
...t/common/pojo/request/chief/ChiefBatchSellingOrderBO.java
+29
-0
ChiefPagePositionTradeInfoRecordGroupByBatchBO.java
...chief/ChiefPagePositionTradeInfoRecordGroupByBatchBO.java
+60
-0
ChiefQueryCustomerMarketDetailsBO.java
...pojo/request/chief/ChiefQueryCustomerMarketDetailsBO.java
+26
-0
ChiefQueryProductBO.java
...market/common/pojo/request/chief/ChiefQueryProductBO.java
+49
-0
ChiefQueryStockInputLogBO.java
.../common/pojo/request/chief/ChiefQueryStockInputLogBO.java
+44
-0
ChiefQueryStockProfitLogBO.java
...common/pojo/request/chief/ChiefQueryStockProfitLogBO.java
+25
-0
ChiefSaveProductBO.java
...lmarket/common/pojo/request/chief/ChiefSaveProductBO.java
+58
-0
ChiefSellingOrderBO.java
...market/common/pojo/request/chief/ChiefSellingOrderBO.java
+48
-0
ChiefSendClearOrderBO.java
...rket/common/pojo/request/chief/ChiefSendClearOrderBO.java
+29
-0
ChiefTradeOrderBO.java
...elmarket/common/pojo/request/chief/ChiefTradeOrderBO.java
+57
-0
ChiefMarketDetailsVO.java
.../telmarket/common/pojo/vo/chief/ChiefMarketDetailsVO.java
+114
-0
ChiefProductStrategyVO.java
...elmarket/common/pojo/vo/chief/ChiefProductStrategyVO.java
+11
-0
ChiefStockProfitLogVO.java
...telmarket/common/pojo/vo/chief/ChiefStockProfitLogVO.java
+37
-0
ChiefStockVO.java
...zfxftech/telmarket/common/pojo/vo/chief/ChiefStockVO.java
+61
-0
ChiefTradeOrderVO.java
...ech/telmarket/common/pojo/vo/chief/ChiefTradeOrderVO.java
+25
-0
ChiefAccountProductRelationService.java
...ce/business/chief/ChiefAccountProductRelationService.java
+62
-0
ChiefFinanceCalculateService.java
.../service/business/chief/ChiefFinanceCalculateService.java
+149
-0
ChiefFrozenRecordService.java
...rket/service/business/chief/ChiefFrozenRecordService.java
+84
-0
ChiefMarketProfitLogService.java
...t/service/business/chief/ChiefMarketProfitLogService.java
+14
-0
ChiefPositionTradeInfoRecordService.java
...e/business/chief/ChiefPositionTradeInfoRecordService.java
+83
-0
ChiefProductService.java
...telmarket/service/business/chief/ChiefProductService.java
+52
-0
ChiefStockInputLogService.java
...ket/service/business/chief/ChiefStockInputLogService.java
+71
-0
ChiefStockPositionService.java
...ket/service/business/chief/ChiefStockPositionService.java
+197
-0
ChiefStockProfitLogService.java
...et/service/business/chief/ChiefStockProfitLogService.java
+28
-0
ChiefAccountProductRelationServiceImpl.java
...usiness/chief/ChiefAccountProductRelationServiceImpl.java
+273
-0
ChiefFinanceCalculateServiceImpl.java
...impl/business/chief/ChiefFinanceCalculateServiceImpl.java
+172
-0
ChiefFrozenRecordServiceImpl.java
...ice/impl/business/chief/ChiefFrozenRecordServiceImpl.java
+162
-0
ChiefMarketProfitLogServiceImpl.java
.../impl/business/chief/ChiefMarketProfitLogServiceImpl.java
+22
-0
ChiefPositionTradeInfoRecordServiceImpl.java
...siness/chief/ChiefPositionTradeInfoRecordServiceImpl.java
+814
-0
ChiefProductServiceImpl.java
.../service/impl/business/chief/ChiefProductServiceImpl.java
+471
-0
ChiefStockInputLogServiceImpl.java
...ce/impl/business/chief/ChiefStockInputLogServiceImpl.java
+314
-0
ChiefStockPositionServiceImpl.java
...ce/impl/business/chief/ChiefStockPositionServiceImpl.java
+2157
-0
ChiefStockProfitLogServiceImpl.java
...e/impl/business/chief/ChiefStockProfitLogServiceImpl.java
+147
-0
ChiefStockPriceTask.java
...ech/telmarket/task/followAccount/ChiefStockPriceTask.java
+205
-0
No files found.
src/main/java/com/zfxftech/telmarket/common/config/CommonConfig.java
View file @
64c9ace3
...
...
@@ -101,4 +101,6 @@ public class CommonConfig {
private
String
surveyStockPriceTask
;
@Value
(
"${nacos.config.highStockPriceTask}"
)
private
String
highStockPriceTask
;
@Value
(
"${nacos.config.chiefStockPriceTask}"
)
private
String
chiefStockPriceTask
;
}
src/main/java/com/zfxftech/telmarket/common/config/configuration/MybatisConfiguration.java
View file @
64c9ace3
...
...
@@ -108,6 +108,7 @@ public class MybatisConfiguration {
mapperLocations
.
add
(
"classpath*:mybatis/mapper/product/*.xml"
);
mapperLocations
.
add
(
"classpath*:mybatis/mapper/report/*.xml"
);
mapperLocations
.
add
(
"classpath*:mybatis/mapper/high/*.xml"
);
mapperLocations
.
add
(
"classpath*:mybatis/mapper/chief/*.xml"
);
List
<
Resource
>
resources
=
new
ArrayList
();
if
(!
CollectionUtils
.
isEmpty
(
mapperLocations
))
{
for
(
String
mapperLocation
:
mapperLocations
)
{
...
...
src/main/java/com/zfxftech/telmarket/common/pojo/request/chief/ChiefBatchSellingOrderBO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
request
.
chief
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* @Description
* @Author jianghua
* @Date 2021/9/27 13:51
*/
@Data
@ApiModel
(
value
=
"批量卖出指令"
,
description
=
"从客户端,交易指令封装的表单数据封装在此entity中"
)
public
class
ChiefBatchSellingOrderBO
{
@NotNull
@ApiModelProperty
(
value
=
"股票代码集合"
,
name
=
"code"
,
required
=
true
)
private
List
<
String
>
code
;
@NotNull
@ApiModelProperty
(
value
=
"示范盘id"
,
name
=
"marketId"
,
required
=
true
)
private
Long
marketId
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/request/chief/ChiefPagePositionTradeInfoRecordGroupByBatchBO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
request
.
chief
;
import
com.zfxftech.telmarket.common.pojo.request.PageBO
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/12/25 18:58
*/
@Data
@ApiModel
(
value
=
"查询收集统计页面数据"
,
description
=
"从客户端,查询收集统计数据传入的数据封装在此entity中"
)
public
class
ChiefPagePositionTradeInfoRecordGroupByBatchBO
extends
PageBO
{
@ApiModelProperty
(
value
=
"股票代码"
,
name
=
"code"
,
required
=
false
)
private
String
code
;
@ApiModelProperty
(
value
=
"交易状态"
,
name
=
"tradeStatus"
,
required
=
false
)
private
Long
tradeStatus
;
@ApiModelProperty
(
value
=
"是否一对多过滤"
,
name
=
"filterOneMore"
,
required
=
false
)
private
Boolean
filterOneMore
;
@ApiModelProperty
(
value
=
"产品类型"
,
name
=
"productType"
,
required
=
false
)
private
String
productType
;
@ApiModelProperty
(
value
=
"产品id"
,
name
=
"productId"
,
required
=
false
)
private
Long
productId
;
@ApiModelProperty
(
value
=
"收益率下限"
,
name
=
"profitLowerLimit"
,
required
=
false
)
private
String
profitLowerLimit
;
@ApiModelProperty
(
value
=
"收益率上限"
,
name
=
"profitUpperLimit"
,
required
=
false
)
private
String
profitUpperLimit
;
@ApiModelProperty
(
value
=
"买入时间开始"
,
name
=
"profitLowerLimit"
,
required
=
false
)
private
Long
buyingTimeLowerLimit
;
@ApiModelProperty
(
value
=
"买入时间结束"
,
name
=
"profitLowerLimit"
,
required
=
false
)
private
Long
buyingTimeUpperLimit
;
@ApiModelProperty
(
value
=
"卖出时间开始"
,
name
=
"profitLowerLimit"
,
required
=
false
)
private
Long
sellingTimeLowerLimit
;
@ApiModelProperty
(
value
=
"卖出时间结束"
,
name
=
"profitLowerLimit"
,
required
=
false
)
private
Long
sellingTimeUpperLimit
;
@ApiModelProperty
(
value
=
"排序 格式:排序字段:ASC"
,
name
=
"orderBy"
,
required
=
false
)
private
String
orderBy
;
@ApiModelProperty
(
value
=
"公司id"
,
name
=
"companyId"
,
required
=
false
)
private
Integer
companyId
;
@ApiModelProperty
(
value
=
"委托方向"
,
name
=
"trustSourceId"
,
required
=
false
)
private
Integer
trustSourceId
;
@ApiModelProperty
(
value
=
"行业"
,
name
=
"industry"
,
required
=
false
)
private
String
industry
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/request/chief/ChiefQueryCustomerMarketDetailsBO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
request
.
chief
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/15 15:07
*/
@ApiModel
(
value
=
"模拟盘详情查询表单"
,
description
=
"从客户端,模拟盘详情查询传入的数据封装在此entity中"
)
@Data
public
class
ChiefQueryCustomerMarketDetailsBO
{
@NotNull
@ApiModelProperty
(
value
=
"模拟盘id"
,
name
=
"marketId"
,
required
=
true
)
private
Long
marketId
;
@NotBlank
@ApiModelProperty
(
value
=
"模拟盘类型 实盘:real 示范:simulated"
,
name
=
"type"
,
required
=
true
)
private
String
type
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/request/chief/ChiefQueryProductBO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
request
.
chief
;
import
com.zfxftech.telmarket.common.pojo.request.PageBO
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
value
=
"查询产品列表"
,
description
=
"从客户端,查询产品列表传入的数据封装在此entity中"
)
public
class
ChiefQueryProductBO
extends
PageBO
{
@ApiModelProperty
(
value
=
"产品类型"
,
name
=
"productType"
,
required
=
false
)
private
String
productType
;
@ApiModelProperty
(
value
=
"产品id"
,
name
=
"productId"
,
required
=
false
)
private
String
productId
;
@ApiModelProperty
(
value
=
"风险等级"
,
name
=
"riskLevel"
,
required
=
false
)
private
String
riskLevel
;
@ApiModelProperty
(
value
=
"分析师"
,
name
=
"analyst"
,
required
=
false
)
private
Long
analyst
;
@ApiModelProperty
(
value
=
"产品经理"
,
name
=
"productManager"
,
required
=
false
)
private
Long
productManager
;
@ApiModelProperty
(
value
=
"所属公司"
,
name
=
"companyId"
,
required
=
false
)
private
Integer
companyId
;
// @ApiModelProperty(value = "初始本金", name = "initialPrincipal", required = false)
// private String initialPrincipal;
@ApiModelProperty
(
value
=
"开始时间"
,
name
=
"startCreateTime"
,
example
=
"1626739300000"
,
required
=
false
)
private
Long
startCreateTime
;
@ApiModelProperty
(
value
=
"结束时间"
,
name
=
"endExpiredTime"
,
example
=
"1626739300000"
,
required
=
false
)
private
Long
endCreateTime
;
@ApiModelProperty
(
value
=
"公众号"
,
name
=
"weChatId"
,
example
=
"19"
,
required
=
false
)
private
Long
weChatId
;
@ApiModelProperty
(
value
=
"排序(格式:排序字段:排序规则) 支持的字段:created_time、initial_funding、modify_time, 序:desc降序 asc升序"
,
name
=
"sort"
,
example
=
"created_time:desc"
,
required
=
false
)
private
String
orderBy
;
private
String
uid
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/request/chief/ChiefQueryStockInputLogBO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
request
.
chief
;
import
com.zfxftech.telmarket.common.pojo.request.PageBO
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
@Data
@ApiModel
(
value
=
"查询股票录入记录"
,
description
=
"从客户端,查询股票录入记录的数据封装在此entity中"
)
public
class
ChiefQueryStockInputLogBO
extends
PageBO
{
@ApiModelProperty
(
value
=
"客户id"
,
name
=
"description"
,
required
=
false
)
private
String
customerId
;
@ApiModelProperty
(
value
=
"产品类型"
,
name
=
"productType"
,
example
=
"6050350b758289001f6bb543"
,
required
=
false
)
private
String
productType
;
@ApiModelProperty
(
value
=
"产品id"
,
name
=
"productId"
,
example
=
"6051c185338354001cc327cf"
,
required
=
false
)
private
String
productId
;
@ApiModelProperty
(
value
=
"股票代码"
,
name
=
"code"
,
example
=
"000001"
,
required
=
false
)
private
String
code
;
@ApiModelProperty
(
value
=
"交易方向"
,
name
=
"startExpiredTime"
,
example
=
"1626739100000"
,
required
=
false
)
private
Integer
operation
;
@ApiModelProperty
(
value
=
"交易时间上限"
,
name
=
"tradingTimeUpperLimit"
,
example
=
"1626739100000"
,
required
=
false
)
private
Long
tradingTimeUpperLimit
;
@ApiModelProperty
(
value
=
"交易时间下限"
,
name
=
"tradingTimeLowerLimit"
,
example
=
"1626739300000"
,
required
=
false
)
private
Long
tradingTimeLowerLimit
;
@ApiModelProperty
(
value
=
"示范盘Id"
,
name
=
"description"
,
required
=
false
)
private
String
marketId
;
@NotBlank
@ApiModelProperty
(
value
=
"实盘|示范"
,
name
=
"marketType"
,
required
=
true
)
private
String
marketType
;
private
Integer
companyId
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/request/chief/ChiefQueryStockProfitLogBO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
request
.
chief
;
import
com.zfxftech.telmarket.common.pojo.request.PageBO
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/23 15:45
*/
@ApiModel
(
value
=
"个股盈亏列表表单"
,
description
=
"个股盈亏列表表单"
)
@Data
public
class
ChiefQueryStockProfitLogBO
extends
PageBO
{
@NotNull
@ApiModelProperty
(
value
=
"模拟盘id"
,
name
=
"marketId"
,
required
=
true
)
private
Long
marketId
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/request/chief/ChiefSaveProductBO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
request
.
chief
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
/**
* @Description TODO
* @Author jianghua
* @Date 2021/8/31 17:34
*/
@Data
@ApiModel
(
value
=
"保存产品"
,
description
=
"从客户端,保存产品传入的数据封装在此entity中"
)
public
class
ChiefSaveProductBO
{
@ApiModelProperty
(
value
=
"产品id"
,
name
=
"id"
,
required
=
false
)
private
Long
id
;
@NotNull
(
message
=
"客戶名称不能为空"
)
@ApiModelProperty
(
value
=
"产品名称"
,
name
=
"productName"
,
required
=
true
)
private
String
productName
;
@NotNull
(
message
=
"产品类型不能为空"
)
@ApiModelProperty
(
value
=
"产品类型"
,
name
=
"productType"
,
required
=
true
)
private
String
productType
;
@NotNull
(
message
=
"所属分公司不能为空"
)
@ApiModelProperty
(
value
=
"所属分公司,格式:1,2,3"
,
name
=
"companyId"
,
required
=
true
)
private
Long
companyId
;
// @NotNull(message = "交易风格不能为空")
@ApiModelProperty
(
value
=
"交易风格"
,
name
=
"tradeStyle"
,
required
=
false
)
private
Long
tradeStyle
;
@ApiModelProperty
(
value
=
"风险等级,暂时只有跟投有产品"
,
name
=
"riskLevel"
,
required
=
false
)
private
String
riskLevel
;
// @ApiModelProperty(value = "初始本金", name = "initialPrincipal", required = false)
// private String initialPrincipal;
@ApiModelProperty
(
value
=
"卖出股票消息通知 0 未勾选 1勾选"
,
name
=
"sellMessage"
,
required
=
false
)
private
String
sellMessage
;
@ApiModelProperty
(
value
=
"买入消息股票通知 0 未勾选 1勾选"
,
name
=
"buyMessage"
,
required
=
false
)
private
String
buyMessage
;
// @ApiModelProperty(value = "每日统计发送通知 0 未勾选 1勾选", name = "dayStatisticsSend", required = false)
// private String dayStatisticsSend;
@ApiModelProperty
(
value
=
"产品经理"
,
name
=
"productManagerList"
,
required
=
false
)
private
String
productManagerList
;
@NotNull
(
message
=
"公众号不能为空"
)
@ApiModelProperty
(
value
=
"公众号Id"
,
name
=
"weChatId"
,
required
=
true
)
private
Long
weChatId
;
@ApiModelProperty
(
value
=
"分析师"
,
name
=
"analyst"
,
required
=
true
)
private
Long
analyst
;
@ApiModelProperty
(
value
=
"备注"
,
name
=
"remark"
,
required
=
false
)
private
String
remark
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/request/chief/ChiefSellingOrderBO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
request
.
chief
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* @Description 系统常量字典表
* @Author jianghua
* @Date 2021/9/27 13:51
*/
@Data
@ApiModel
(
value
=
"卖出指令"
,
description
=
"从客户端,交易指令封装的表单数据封装在此entity中"
)
public
class
ChiefSellingOrderBO
{
@NotBlank
@ApiModelProperty
(
value
=
"股票代码"
,
name
=
"code"
,
required
=
true
)
private
String
code
;
@NotNull
@ApiModelProperty
(
value
=
"是否是现价卖出,是:true,否:false"
,
name
=
"type"
,
required
=
true
)
private
boolean
isPresent
;
@ApiModelProperty
(
value
=
"价格,若是现价当前值为空"
,
name
=
"type"
,
required
=
false
)
private
String
price
;
@NotBlank
@ApiModelProperty
(
value
=
"卖出仓位"
,
name
=
"position"
,
example
=
"0.333"
,
required
=
true
)
private
String
position
;
@NotNull
@ApiModelProperty
(
value
=
"用户和产品关联id"
,
name
=
"relationId"
,
required
=
true
)
private
List
<
Long
>
relationId
;
@NotBlank
@ApiModelProperty
(
value
=
"卖出理由"
,
name
=
"reason"
,
required
=
true
)
private
String
reason
;
private
boolean
followAccountLink
;
private
String
followAccountName
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/request/chief/ChiefSendClearOrderBO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
request
.
chief
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* @Description
* @Author jianghua
* @Date 2021/9/27 13:51
*/
@Data
@ApiModel
(
value
=
"原价清零"
,
description
=
"从客户端,交易指令封装的表单数据封装在此entity中"
)
public
class
ChiefSendClearOrderBO
{
@NotNull
@ApiModelProperty
(
value
=
"股票代码集合"
,
name
=
"code"
,
required
=
true
)
private
List
<
String
>
code
;
@NotNull
@ApiModelProperty
(
value
=
"示范盘id"
,
name
=
"marketId"
,
required
=
true
)
private
Long
marketId
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/request/chief/ChiefTradeOrderBO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
request
.
chief
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* @Description 系统常量字典表
* @Author jianghua
* @Date 2021/9/27 13:51
*/
@Data
@ApiModel
(
value
=
""
,
description
=
"从客户端,交易指令封装的表单数据封装在此entity中"
)
public
class
ChiefTradeOrderBO
{
@NotBlank
@ApiModelProperty
(
value
=
"股票代码"
,
name
=
"code"
,
required
=
true
)
private
String
code
;
@ApiModelProperty
(
value
=
"风险等级"
,
name
=
"riskLevel"
,
required
=
false
)
private
String
riskLevel
;
@NotNull
@ApiModelProperty
(
value
=
"是否是现价买入,是:true,否:false"
,
name
=
"isPresent"
,
required
=
true
)
private
boolean
isPresent
;
@ApiModelProperty
(
value
=
"价格,若是现价当前值为空"
,
name
=
"type"
,
required
=
false
)
private
String
price
;
@NotBlank
@ApiModelProperty
(
value
=
"买入仓位"
,
name
=
"position"
,
example
=
"0.333"
,
required
=
true
)
private
String
position
;
@NotNull
@ApiModelProperty
(
value
=
"用户和产品关联id"
,
name
=
"relationId"
,
required
=
true
)
private
List
<
Long
>
relationId
;
@NotBlank
@ApiModelProperty
(
value
=
"买入理由"
,
name
=
"reason"
,
required
=
true
)
private
String
reason
;
@ApiModelProperty
(
value
=
"止盈位"
,
name
=
"interferenceStopPosition"
,
required
=
false
)
private
String
interferenceStopPosition
;
@ApiModelProperty
(
value
=
"止损位"
,
name
=
"stopLossPosition"
,
required
=
false
)
private
String
stopLossPosition
;
@ApiModelProperty
(
value
=
"买入股票数量,录入上海数据使用,以后删除"
,
name
=
"buyStockToSyncDataCount"
,
required
=
false
)
private
Long
buyStockToSyncDataCount
;
private
boolean
followAccountLink
;
private
String
followAccountName
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/vo/chief/ChiefMarketDetailsVO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
vo
.
chief
;
import
lombok.Data
;
import
org.apache.commons.lang3.tuple.Pair
;
import
java.util.List
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/17 15:10
*/
@Data
public
class
ChiefMarketDetailsVO
{
/**
* 姓名
*/
private
String
name
;
/**
* 昵称
*/
private
String
nickName
;
/**
* 投资风格
*/
private
String
investmentStyle
;
/**
* 公司
*/
private
String
company
;
/**
* 账户限制
*/
private
String
accountLimit
;
/**
* 产品名称
*/
private
String
productName
;
/**
* 产品类型
*/
private
String
productType
;
/**
* 产品开始时间
*/
private
Long
productStartTime
;
/**
* 产品结束时间
*/
private
Long
productEndTime
;
/**
* 总价格
*/
private
String
totalPrice
;
/**
* 总股票价值
*/
private
String
totalStocksPrice
;
/**
* 可用资金
*/
private
String
availableFunding
;
/**
* 当前仓位
*/
private
String
position
;
/**
* 交易股票数
*/
private
Integer
stockCount
;
/**
* 盈利股票数
*/
private
Integer
profitStockCount
;
/**
* 持仓信息
*/
List
<
ChiefStockVO
>
stocksInfo
;
/**
* 行业占比
*/
List
<
Pair
<
String
,
String
>>
industryProportion
;
/**
* 产品类型(中文)
*/
private
String
productTypeDesc
;
/**
* 总盈亏比例
*/
private
String
totalProfitRate
;
/**
* 总盈亏
*/
private
String
totalProfit
;
/**
* 产品经理
*/
private
String
pmUserName
;
/**
* 销售关系名称
*/
private
String
teamRelationNames
;
/**
* 客户id
*/
private
Long
customerId
;
/**
* 是否问题客户 1=问题客户
*/
private
String
isProblem
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/vo/chief/ChiefProductStrategyVO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
vo
.
chief
;
import
lombok.Data
;
import
lombok.ToString
;
@Data
@ToString
public
class
ChiefProductStrategyVO
{
private
Integer
id
;
private
String
productName
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/vo/chief/ChiefStockProfitLogVO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
vo
.
chief
;
import
lombok.Data
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/23 15:46
*/
@Data
public
class
ChiefStockProfitLogVO
{
private
Long
buyingTime
;
private
Long
sellingTime
;
private
String
code
;
private
String
name
;
private
String
stockDesc
;
private
String
profitPrice
;
private
String
profitRatio
;
private
Integer
holdingDays
;
/**
* 买入途径
*/
private
String
buyingRoute
;
/**
* 卖出途径
*/
private
String
sellingRoute
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/vo/chief/ChiefStockVO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
vo
.
chief
;
import
lombok.Data
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/17 15:27
*/
@Data
public
class
ChiefStockVO
{
/**
* 代码
*/
private
String
code
;
/**
* 名称
*/
private
String
name
;
/**
* 来源
*/
private
String
channel
;
/**
* 产品类型
*/
private
String
businessType
;
/**
* 购入时间
*/
private
Long
buyTime
;
/**
* 持仓数量
*/
private
Long
count
;
/**
* 可用数量
*/
private
Long
availableCount
;
/**
* 成本价格
*/
private
String
cost
;
/**
* 最新价格
*/
private
String
currentPrice
;
/**
* 当前市值
*/
private
String
marketValue
;
/**
* 盈亏比例
*/
private
String
profitRate
;
/**
* 浮动盈亏
*/
private
String
dynamicProfit
;
}
src/main/java/com/zfxftech/telmarket/common/pojo/vo/chief/ChiefTradeOrderVO.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
common
.
pojo
.
vo
.
chief
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/15 14:29
*/
@ApiModel
(
value
=
"交易指令交易失败返回实体类"
,
description
=
"交易指令交易失败返回实体类"
)
@Data
public
class
ChiefTradeOrderVO
{
/**
* 客户姓名
*/
private
String
customerName
;
/**
* 错误码
*/
private
Integer
errorCode
;
private
Long
customerId
;
}
src/main/java/com/zfxftech/telmarket/service/business/chief/ChiefAccountProductRelationService.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
business
.
chief
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefAccountProductRelation
;
import
com.zfxftech.telmarket.common.pojo.dto.chief.ChiefProductCustomerFansDto
;
import
java.util.List
;
public
interface
ChiefAccountProductRelationService
extends
IService
<
ChiefAccountProductRelation
>
{
List
<
ChiefAccountProductRelation
>
queryAll
();
//通过用户id批量查询用户的产品信息
List
<
ChiefAccountProductRelation
>
queryAccountProductRelationByMemberIds
(
List
<
Long
>
memberIds
);
//通过用户id 产品id 批量查询用户的产品信息
List
<
ChiefAccountProductRelation
>
getMarkId
(
Long
memberIds
,
List
<
Long
>
productList
);
//批量查询用户的产品
List
<
ChiefAccountProductRelation
>
queryAccountProductRelationByMemberId
(
Long
memberId
);
//根据粉丝id查询用户的产品
List
<
ChiefAccountProductRelation
>
queryAccountProductRelationByFansId
(
Long
fansId
);
void
updateAccountProductRelation
(
ChiefAccountProductRelation
accountProductRelation
,
Long
memberId
,
Long
productId
);
void
updateAccountProductRelation
(
ChiefAccountProductRelation
accountProductRelation
);
void
batchUpdateAccountProductRelation
(
List
<
ChiefAccountProductRelation
>
accountProductRelations
);
void
addAccountProductRelation
(
ChiefAccountProductRelation
accountProductRelation
);
//查询用户的指定产品
ChiefAccountProductRelation
queryAccountProductRelationByMemberIdAndProductId
(
Long
memberId
,
Long
productId
);
/**
* @param marketId
* @param type (实盘:real 示范:simulated)
* @return
*/
ChiefAccountProductRelation
queryAccountProductRelationByMarketInfo
(
Long
marketId
,
String
type
);
//通过id批量查询产品和用户的关联关系
List
<
ChiefAccountProductRelation
>
queryAccountProductRelationByIds
(
List
<
Long
>
relationIds
);
//通过虚拟帐号批量查询产品和用户的关联关系
List
<
ChiefAccountProductRelation
>
queryAccountProductRelationBySimulatedIds
(
List
<
Long
>
simulatedIdsIds
);
void
checkProductIsExpire
();
//根据产品id获取对应的客户userId 1表是只要客户的userId 2 表示只要分析师的userId 3.表示全都要
List
<
Long
>
getUserId
(
Long
productId
,
Integer
type
);
//根据产品id获取客户id
List
<
Long
>
getCustomerIds
(
Long
productId
);
List
<
ChiefProductCustomerFansDto
>
getProductUserList
(
Long
productId
);
List
<
ChiefAccountProductRelation
>
getRelationByProductIds
(
List
<
Long
>
ids
);
void
updateList
(
List
<
ChiefAccountProductRelation
>
list
);
}
src/main/java/com/zfxftech/telmarket/service/business/chief/ChiefFinanceCalculateService.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
business
.
chief
;
import
com.zfxftech.telmarket.common.pojo.dao.Quote
;
import
com.zfxftech.telmarket.common.pojo.dao.StocksCode
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefStockPosition
;
import
org.apache.commons.lang3.tuple.Pair
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.Map
;
public
interface
ChiefFinanceCalculateService
{
/**
* 计算股价均值
*
* @param totalPrice
* @param count
* @return
*/
BigDecimal
calculateAverageStockPrice
(
BigDecimal
totalPrice
,
Long
count
);
/**
* 计算股价均值
*
* @param count1 新买入股数
* @param price1 新买入股票成交价
* @param count2 原先总股数
* @param price2 原先股票平均成交价
* @return
*/
BigDecimal
calculateAverageStockPrice
(
Long
count1
,
BigDecimal
price1
,
Long
count2
,
BigDecimal
price2
);
/**
* 计算总资产(股票+可用资金)
*
* @param availableFund 可用资金
* @param stockPositions 股票持仓
* @param stockCodeAndPriceMapping 股票代码-股票映射关系
* @return
*/
BigDecimal
calculateTotalAssets
(
BigDecimal
availableFund
,
List
<
ChiefStockPosition
>
stockPositions
,
Map
<
String
,
Quote
>
stockCodeAndPriceMapping
);
/**
* 计算股票总市值(当前价格)
*
* @param stockPositions
* @param stockCodeAndPriceMapping
* @return
*/
BigDecimal
calculateTotalAssets
(
List
<
ChiefStockPosition
>
stockPositions
,
Map
<
String
,
Quote
>
stockCodeAndPriceMapping
);
/**
* 计算股票总市值(成本价格)
*
* @param stockPositions
* @return
*/
BigDecimal
calculateTotalAssets
(
List
<
ChiefStockPosition
>
stockPositions
);
/**
* 计算可买入股票价格
*
* @param totalFund 资金
* @param price 价格
* @return
*/
Long
calculateBuyStockCount
(
BigDecimal
totalFund
,
BigDecimal
price
);
/**
* 计算总价
*
* @param count 股数
* @param price 股票价格
* @return
*/
BigDecimal
calculateTotalPrice
(
Long
count
,
BigDecimal
price
);
/**
* 计算股票站总股票市值的占比
*
* @param totalValue 股票总值
* @param count 股数
* @param price 价格
* @return
*/
BigDecimal
calculateIndustryShare
(
BigDecimal
totalValue
,
Long
count
,
BigDecimal
price
);
/**
* 计算收益率(盈亏比例)
*
* @param value1 减数
* @param value2 被减数
* @return
*/
BigDecimal
calculateProfitRate
(
BigDecimal
value1
,
BigDecimal
value2
);
/**
* 计算收益率(盈亏比例)
*
* @param value1 减数
* @param value2 被减数
* @return
*/
BigDecimal
calculateProfitRate2
(
BigDecimal
value1
,
BigDecimal
value2
);
/**
* 计算单个股票的涨跌幅
* 最新价格
* 收盘价格
* 涨跌幅=(现价-上一个交易日收盘价)/上一个交易日收盘价*100%
* @return
*/
BigDecimal
riseDownRange
(
BigDecimal
now
,
BigDecimal
close
);
/**
* 计算单个股票的盈亏比例
* 最新价格
* 成本价格
* 盈亏比例=(现价-成本价)/成本价×100%
* @return
*/
BigDecimal
profitLossRatio
(
BigDecimal
now
,
BigDecimal
cost
);
/**
* 计算收益
*
* @param value1 分子
* @param value2 分母
* @return
*/
BigDecimal
calculateProfit
(
BigDecimal
value1
,
BigDecimal
value2
);
/**
* @param price 价格
* @param range 范围
* @return
*/
Pair
<
String
,
String
>
calculatePriceRange
(
String
price
,
String
range
);
/**
* @param stocksCode 根据股票计算涨跌幅
* @return
*/
Pair
<
BigDecimal
,
BigDecimal
>
calculatePriceLimit
(
StocksCode
stocksCode
);
}
src/main/java/com/zfxftech/telmarket/service/business/chief/ChiefFrozenRecordService.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
business
.
chief
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefFrozenRecord
;
import
java.util.List
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/12/21 14:30
*/
public
interface
ChiefFrozenRecordService
{
/**
* marketId和股票代码获取股票
*
* @param marketId
* @param code
* @return
*/
ChiefFrozenRecord
getStockByMarketIdAndCode
(
Long
marketId
,
String
code
);
/**
* 通过股票和marketId集合批量查询冻结股票
*
* @param marketIds
* @param code
* @return
*/
List
<
ChiefFrozenRecord
>
getStockByMarketIdsAndCode
(
List
<
Long
>
marketIds
,
String
code
);
/**
* 通过股票和marketId集合批量查询冻结股票
*
* @param marketIds
* @param codes
* @return
*/
List
<
ChiefFrozenRecord
>
getStockByMarketIdsAndCode
(
List
<
Long
>
marketIds
,
List
<
String
>
codes
);
/**
* 通过marketId查询当前账户下的所有冻结股票
*
* @param marketId
* @return
*/
List
<
ChiefFrozenRecord
>
getStockByMarketId
(
Long
marketId
);
/**
* 获取冻结资金
*
* @param marketId
* @return
*/
ChiefFrozenRecord
getFrozenFundByMarketId
(
Long
marketId
);
/**
* 插入冻结股票
*
* @param marketId 盘
* @param code 股票代码
* @param count 股票数量
*/
void
insertFrozenStock
(
Long
marketId
,
String
code
,
String
count
);
/**
* 插入冻结资金
*
* @param marketId 盘id
* @param fund 资金
*/
void
insertFrozenFund
(
Long
marketId
,
String
fund
);
/**
* 清除冻结记录
*/
void
clearFrozenRecords
();
/**
* 清除冻结记录为同步数据使用
*/
void
clearFrozenRecordsForSynData
();
}
src/main/java/com/zfxftech/telmarket/service/business/chief/ChiefMarketProfitLogService.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
business
.
chief
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefMarketProfitLog
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/19 9:44
*/
public
interface
ChiefMarketProfitLogService
extends
IService
<
ChiefMarketProfitLog
>
{
}
src/main/java/com/zfxftech/telmarket/service/business/chief/ChiefPositionTradeInfoRecordService.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
business
.
chief
;
import
com.zfxftech.telmarket.common.bean.CommonPage
;
import
com.zfxftech.telmarket.common.enums.StockInputLogTrustSource
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefPositionTradeInfoRecord
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefPositionTradeInfoRecord4Page
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefStockPosition
;
import
com.zfxftech.telmarket.common.pojo.request.chief.ChiefPagePositionTradeInfoRecordGroupByBatchBO
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.Map
;
public
interface
ChiefPositionTradeInfoRecordService
{
/**
* 分页查询交易记录,批次分组
*
* @param pagePositionTradeInfoRecordGroupByBatchBO
* @return
*/
@Deprecated
List
pagePositionTradeInfoRecordGroupByBatch
(
ChiefPagePositionTradeInfoRecordGroupByBatchBO
pagePositionTradeInfoRecordGroupByBatchBO
);
/**
* 历史收益统计
*
* @param pagePositionTradeInfoRecordGroupByBatchBO
* @return
*/
Map
<
String
,
Object
>
positionTradeInfoRecordCount
(
ChiefPagePositionTradeInfoRecordGroupByBatchBO
pagePositionTradeInfoRecordGroupByBatchBO
);
/**
* 历史收益统计-详细数据
*
* @param pagePositionTradeInfoRecordGroupByBatchBO
* @return
*/
CommonPage
<
ChiefPositionTradeInfoRecord4Page
>
positionTradeInfoRecordCountDetail
(
ChiefPagePositionTradeInfoRecordGroupByBatchBO
pagePositionTradeInfoRecordGroupByBatchBO
);
/**
持仓id获取交易记录
*
* @param positionIds
* @return
*/
List
<
ChiefPositionTradeInfoRecord
>
listByPositionIds
(
List
<
Long
>
positionIds
);
/**
* 批量修改交易记录
*
* @param list
*/
void
updateBatchPositionTradeInfoRecord
(
List
<
ChiefPositionTradeInfoRecord
>
list
);
/**
* 批量插入交易记录
*
* @param list
*/
void
addBatch
(
List
<
ChiefPositionTradeInfoRecord
>
list
);
/**
* @param positionIds 持仓id
* @param action 动作,买入、减仓、加仓、清仓
* @param positionMapping
* @param batch 批次
* @param sellingPrice 清仓时候的卖出价格,买入、减仓、加仓均不传
* @param status 只有在示有实无的时候才传
* @param trustSource 委托方向
* @param trustSourceName 委托方向描述
*/
void
updateData
(
List
<
Long
>
positionIds
,
Integer
action
,
Map
<
Long
,
ChiefStockPosition
>
positionMapping
,
Long
batch
,
BigDecimal
sellingPrice
,
Integer
status
,
Integer
entrustWay
,
StockInputLogTrustSource
trustSource
,
String
trustSourceName
);
List
<
ChiefPositionTradeInfoRecord
>
getPositionTradeInfoRecordByPositionId
(
String
code
,
Long
positionId
);
int
updatePositionTradeInfoRecord
(
ChiefPositionTradeInfoRecord
positionTradeInfoRecord
);
}
src/main/java/com/zfxftech/telmarket/service/business/chief/ChiefProductService.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
business
.
chief
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.zfxftech.telmarket.common.bean.MapIntgerVo
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefProduct
;
import
com.zfxftech.telmarket.common.pojo.dao.permission.UsAdmin
;
import
com.zfxftech.telmarket.common.pojo.request.PageProportionBO
;
import
com.zfxftech.telmarket.common.pojo.request.chief.ChiefQueryProductBO
;
import
com.zfxftech.telmarket.common.pojo.request.chief.ChiefSaveProductBO
;
import
com.zfxftech.telmarket.common.pojo.vo.chief.ChiefProductStrategyVO
;
import
java.util.List
;
/**
* 产品服务类接口
*
* @author jianghua
* @version 1.0
* @date 2021-08-24 15:55
*/
public
interface
ChiefProductService
extends
IService
<
ChiefProduct
>
{
void
saveProduct
(
ChiefSaveProductBO
saveProductBO
,
UsAdmin
usAdmin
);
List
<
ChiefProduct
>
queryProductByIds
(
List
<
Long
>
id
);
ChiefProduct
queryProductById
(
Long
id
);
List
<
ChiefProduct
>
queryAll
();
List
<
ChiefProduct
>
queryListForAuthority
();
List
<
ChiefProduct
>
pageProduct
(
ChiefQueryProductBO
queryProductBO
);
List
<
ChiefProduct
>
getListForDataSource
();
void
operationSubstituteAnalyst
(
Long
productId
,
Long
analyst
,
String
operation
);
List
<
ChiefProduct
>
queryProductByType
(
String
type
);
/**
* 获取私人定制产品名称未删除
*
* @return
*/
List
<
ChiefProductStrategyVO
>
getAllFollowAccount
();
List
<
MapIntgerVo
>
getProductName
(
PageProportionBO
pageProportionBO
);
List
<
UsAdmin
>
getProductUserByRoleIds
(
Long
productId
,
List
<
Long
>
roleIds
);
}
src/main/java/com/zfxftech/telmarket/service/business/chief/ChiefStockInputLogService.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
business
.
chief
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefStockInputLog
;
import
com.zfxftech.telmarket.common.pojo.request.chief.ChiefQueryStockInputLogBO
;
import
java.util.List
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/3 9:34
*/
public
interface
ChiefStockInputLogService
{
List
<
ChiefStockInputLog
>
pageStockInputLogs
(
ChiefQueryStockInputLogBO
queryStockInputLogBO
);
/**
* 新增股票
*
* @param stockInputLog
*/
void
addStockInputLog
(
ChiefStockInputLog
stockInputLog
);
void
addStockInputLog2
(
ChiefStockInputLog
stockInputLog
);
void
addStockInputLogs
(
List
<
ChiefStockInputLog
>
stockInputLogs
);
void
updateStockInputLog
(
ChiefStockInputLog
stockInputLog
);
List
<
ChiefStockInputLog
>
queryStockInputLogs
(
long
customerId
,
long
productId
,
String
code
);
/**
* 通过持仓id获取交易日志
*
* @param stockPositionId
* @param operation
* @return
*/
List
<
ChiefStockInputLog
>
queryStockInputLogs
(
long
stockPositionId
,
Integer
operation
);
/**
* 获取最近一次交易的记录
*
* @param stockPositionId
* @param operation
* @return
*/
ChiefStockInputLog
queryOldestStockInputLog
(
long
stockPositionId
,
Integer
operation
);
/**
* 获取当日的操作记录
*
* @param marketIds
* @return
*/
List
<
ChiefStockInputLog
>
queryByMarketIdsAndToday
(
List
<
Long
>
marketIds
);
/**
* 获取前一日的操作记录
*
* @param marketType 根据类型查询前一天的操作记录
* @return
*/
List
<
ChiefStockInputLog
>
queryPreToday
(
String
marketType
,
String
operation
);
List
<
ChiefStockInputLog
>
all
();
void
updateAA
(
ChiefStockInputLog
stockInputLog
);
}
src/main/java/com/zfxftech/telmarket/service/business/chief/ChiefStockPositionService.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
business
.
chief
;
import
cn.hutool.core.date.DateTime
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.zfxftech.telmarket.common.enums.StockInputLogTrustSource
;
import
com.zfxftech.telmarket.common.pojo.dao.MemberBase
;
import
com.zfxftech.telmarket.common.pojo.dao.Quote
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefAccountProductRelation
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefMemberStockPage
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefStockPosition
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefTradingStrategyParam
;
import
com.zfxftech.telmarket.common.pojo.dao.permission.UsAdmin
;
import
com.zfxftech.telmarket.common.pojo.dto.remind.FullStockPositionTask
;
import
com.zfxftech.telmarket.common.pojo.dto.remind.StockPositionTask
;
import
com.zfxftech.telmarket.common.pojo.request.QueryCustomerPositionBO
;
import
com.zfxftech.telmarket.common.pojo.request.chief.*
;
import
com.zfxftech.telmarket.common.pojo.request.statistics.CurrDayRiseDownDataBO
;
import
com.zfxftech.telmarket.common.pojo.request.statistics.CurrDayRiseDownGroupDataVO
;
import
com.zfxftech.telmarket.common.pojo.request.statistics.RealTimeCodeQueryDataBO
;
import
com.zfxftech.telmarket.common.pojo.request.statistics.RealTimeCodeQueryGroupDataVO
;
import
com.zfxftech.telmarket.common.pojo.vo.chief.ChiefMarketDetailsVO
;
import
com.zfxftech.telmarket.common.pojo.vo.chief.ChiefStockVO
;
import
com.zfxftech.telmarket.common.pojo.vo.chief.ChiefTradeOrderVO
;
import
org.apache.commons.lang3.tuple.Pair
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.Map
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/3 9:34
*/
public
interface
ChiefStockPositionService
extends
IService
<
ChiefStockPosition
>
{
/**
* 获取所有的股票持仓
*
* @return
*/
List
<
ChiefStockPosition
>
getAll
();
/**
* 实盘新增股票
*
* @param stockPosition
* @return
*/
ChiefStockPosition
saveStockPosition
(
ChiefStockPosition
stockPosition
);
int
updateStockPosition
(
ChiefStockPosition
stockPosition
);
int
bactchUpdateStockPosition
(
List
<
ChiefStockPosition
>
stockPositions
);
void
del
(
Long
id
);
/**
* 示范盘添加股票
*
* @param stockPosition
* @return
*/
Pair
<
ChiefStockPosition
,
Boolean
>
saveStockPosition4Demonstration
(
ChiefStockPosition
stockPosition
,
String
interferenceStopPosition
,
String
stopLossPosition
);
ChiefStockPosition
queryStockPosition
(
Long
marketId
,
String
code
);
List
<
ChiefStockPosition
>
queryStockPosition
(
List
<
Long
>
marketIds
,
String
codes
);
List
<
ChiefStockPosition
>
queryStockPositionByCode
(
String
code
);
List
<
ChiefStockPosition
>
queryStockPosition
(
Long
marketId
,
List
<
String
>
codes
);
List
<
ChiefStockPosition
>
queryStockPositionsContainIsDeleted
(
Long
marketId
);
//根据marketId 批量查出股票持仓
List
<
ChiefStockPosition
>
queryStockPositions
(
List
<
Long
>
allMarketIds
);
List
<
ChiefTradeOrderVO
>
sendTradeOrder
(
ChiefTradeOrderBO
tradeOrderBO
,
UsAdmin
usAdmin
);
List
<
ChiefTradeOrderVO
>
sendSellingOrder
(
ChiefSellingOrderBO
sellingOrderBO
,
UsAdmin
usAdmin
);
/**
* 止盈止损
*
* @param sellingOrderBO
* @param usAdmin
* @return
*/
List
<
ChiefTradeOrderVO
>
sendSellingOrderTask
(
ChiefSellingOrderBO
sellingOrderBO
,
UsAdmin
usAdmin
,
StockInputLogTrustSource
stockInputLogTrustSource
);
//定时任务自动卖出,当天示范账户买入一只股票后,到第二天24点前客户未录入实盘账户
void
autoSellingOrder
();
List
<
ChiefMemberStockPage
>
pageCustomerPositionList
(
QueryCustomerPositionBO
customerPositionBO
);
/**
* 查询模拟盘详情
*
* @param customerMarketDetailsBO
* @return
*/
ChiefMarketDetailsVO
queryMarketDetails
(
ChiefQueryCustomerMarketDetailsBO
customerMarketDetailsBO
);
List
<
ChiefStockPosition
>
queryStockPositions
(
Long
marketId
);
ChiefStockPosition
queryStockPosition
(
Long
id
);
/**
* 重算持仓
*
* @param stockPosition
*/
void
recalculateStockPosition
(
ChiefStockPosition
stockPosition
);
/**
* 动态清零
*
* @param sendClearOrderBO
* @param usAdmin
* @return
*/
List
<
String
>
sendClearOrder
(
ChiefSendClearOrderBO
sendClearOrderBO
,
UsAdmin
usAdmin
);
/**
* 批量卖出
*
* @param sellingOrderBO
* @param usAdmin
* @return
*/
List
<
String
>
sendSellingOrderOfBatch
(
ChiefBatchSellingOrderBO
sellingOrderBO
,
UsAdmin
usAdmin
);
public
ChiefTradingStrategyParam
createTradingStrategyParam
(
String
pushTime
,
String
reason
,
ChiefAccountProductRelation
accountProductRelation
,
String
interferenceStopPosition
,
String
stopLossPosition
);
/**
* 清仓卖出
*
* @param
* @param usAdmin
* @return
*/
boolean
selling
(
ChiefAccountProductRelation
accountProductRelation
,
ChiefStockPosition
stockPosition
,
String
position
,
BigDecimal
currentPrice
,
ChiefTradingStrategyParam
tradingStrategyParam
,
UsAdmin
usAdmin
,
Boolean
isPresent
,
StockInputLogTrustSource
trustSource
);
ChiefMarketDetailsVO
createMarketDetailsVO
(
MemberBase
memberBase
,
List
<
ChiefStockPosition
>
stockPositions
,
BigDecimal
funding
,
ChiefAccountProductRelation
accountProductRelation
,
Long
marketId
);
ChiefMarketDetailsVO
createMarketDetailsVOTask
(
List
<
ChiefStockPosition
>
stockPositions
,
BigDecimal
funding
,
ChiefAccountProductRelation
accountProductRelation
);
ChiefStockVO
createStockVO
(
ChiefStockPosition
stockPosition
,
Map
<
String
,
Quote
>
codeAndQuoteMapping
);
/**
* 根据产品id获取股票信息
*
* @param id
* @return
*/
List
<
ChiefStockPosition
>
getCode
(
Long
id
);
List
<
StockPositionTask
>
getStockPositionTask
(
Long
productId
);
/**
* 获取持仓 获取一只股票
*
* @param productId 产品id
* @param userId 用户id
* @param code 股票 code
* @return
*/
ChiefStockPosition
getPosition
(
Long
productId
,
Long
userId
,
String
code
);
/**
* 获取持仓 获取多只股票 获取
*
* @param productId 产品id
* @param userId 用户id
* @return
*/
List
<
ChiefStockPosition
>
getPositionList
(
Long
productId
,
Long
userId
,
String
stockCode
,
BigDecimal
stopProfit
,
BigDecimal
stopLoss
);
List
<
FullStockPositionTask
>
getFullStockPositionTask
();
/**
* 同步今日涨跌幅到昨日涨跌幅
*/
void
syncYdayRiseDownRange
(
DateTime
dateTime
);
CurrDayRiseDownGroupDataVO
getCurrDayRiseDownData
(
CurrDayRiseDownDataBO
currDayRiseDownDataBO
);
RealTimeCodeQueryGroupDataVO
getRealTimeCodeQueryData
(
RealTimeCodeQueryDataBO
realTimeCodeQueryDataBO
);
}
src/main/java/com/zfxftech/telmarket/service/business/chief/ChiefStockProfitLogService.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
business
.
chief
;
import
com.zfxftech.telmarket.common.bean.CommonPage
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefStockProfitLog
;
import
com.zfxftech.telmarket.common.pojo.request.chief.ChiefQueryStockProfitLogBO
;
import
com.zfxftech.telmarket.common.pojo.vo.chief.ChiefStockProfitLogVO
;
import
java.util.List
;
public
interface
ChiefStockProfitLogService
{
/**
* 插入记录
*
* @param stockProfitLog
*/
void
add
(
ChiefStockProfitLog
stockProfitLog
);
CommonPage
<
ChiefStockProfitLogVO
>
queryStockProfitLogs4page
(
ChiefQueryStockProfitLogBO
queryStockProfitLogBO
);
List
<
ChiefStockProfitLog
>
queryStockProfitLogs
(
Long
marketId
);
List
<
ChiefStockProfitLog
>
queryStockProfitLogsSort
(
ChiefQueryStockProfitLogBO
queryStockProfitLogsSort
);
List
<
ChiefStockProfitLog
>
queryStockProfitLogs
(
List
<
Long
>
positionIds
);
}
src/main/java/com/zfxftech/telmarket/service/impl/business/chief/ChiefAccountProductRelationServiceImpl.java
0 → 100644
View file @
64c9ace3
This diff is collapsed.
Click to expand it.
src/main/java/com/zfxftech/telmarket/service/impl/business/chief/ChiefFinanceCalculateServiceImpl.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
impl
.
business
.
chief
;
import
com.zfxftech.telmarket.common.pojo.dao.Quote
;
import
com.zfxftech.telmarket.common.pojo.dao.StocksCode
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefStockPosition
;
import
com.zfxftech.telmarket.common.util.BigDecimalUtil
;
import
com.zfxftech.telmarket.service.business.chief.ChiefFinanceCalculateService
;
import
org.apache.commons.lang3.tuple.ImmutablePair
;
import
org.apache.commons.lang3.tuple.Pair
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
static
com
.
zfxftech
.
telmarket
.
common
.
constant
.
AdminConstant
.
CompareTypeEnum
.
LESS
;
import
static
com
.
zfxftech
.
telmarket
.
common
.
constant
.
AdminConstant
.
NumberEnum
.*;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/10 17:* 金融计算类
*/
@Service
public
class
ChiefFinanceCalculateServiceImpl
implements
ChiefFinanceCalculateService
{
@Override
public
BigDecimal
calculateAverageStockPrice
(
BigDecimal
totalPrice
,
Long
count
)
{
return
BigDecimalUtil
.
div
(
totalPrice
,
new
BigDecimal
(
count
),
4
);
}
@Override
public
BigDecimal
calculateAverageStockPrice
(
Long
count1
,
BigDecimal
price1
,
Long
count2
,
BigDecimal
price2
)
{
BigDecimal
mul1
=
BigDecimalUtil
.
mul
(
new
BigDecimal
(
count1
),
price1
);
BigDecimal
mul2
=
BigDecimalUtil
.
mul
(
new
BigDecimal
(
count2
),
price2
);
BigDecimal
totalCost
=
BigDecimalUtil
.
add
(
mul1
,
mul2
);
BigDecimal
totalCount
=
BigDecimalUtil
.
add
(
new
BigDecimal
(
count1
),
new
BigDecimal
(
count2
));
if
(
BigDecimalUtil
.
compare
(
totalCount
,
new
BigDecimal
(
"0"
),
0
))
{
return
price1
;
}
return
BigDecimalUtil
.
div
(
totalCost
,
totalCount
,
4
);
}
@Override
public
BigDecimal
calculateTotalAssets
(
BigDecimal
availableFund
,
List
<
ChiefStockPosition
>
stockPositions
,
Map
<
String
,
Quote
>
stockCodeAndQuoteMapping
)
{
if
(
CollectionUtils
.
isEmpty
(
stockPositions
))
{
return
availableFund
;
}
BigDecimal
totalStock
=
calculateTotalAssets
(
stockPositions
,
stockCodeAndQuoteMapping
);
BigDecimal
totalAssets
=
BigDecimalUtil
.
add
(
availableFund
,
totalStock
);
return
totalAssets
;
}
@Override
public
BigDecimal
calculateTotalAssets
(
List
<
ChiefStockPosition
>
stockPositions
,
Map
<
String
,
Quote
>
stockCodeAndPriceMapping
)
{
BigDecimal
totalAssets
=
new
BigDecimal
(
ZERO
.
getCode
());
for
(
ChiefStockPosition
temStockPosition
:
stockPositions
)
{
Long
count
=
temStockPosition
.
getCount
();
String
code
=
temStockPosition
.
getCode
();
Quote
quote
=
stockCodeAndPriceMapping
.
get
(
code
);
String
price
=
BigDecimalUtil
.
compare
(
quote
.
getNow
(),
new
BigDecimal
(
"0"
),
0
)
?
quote
.
getClose
().
toString
()
:
quote
.
getNow
().
toString
();
totalAssets
=
BigDecimalUtil
.
add
(
BigDecimalUtil
.
mul
(
String
.
valueOf
(
count
),
price
),
totalAssets
);
}
return
totalAssets
;
}
@Override
public
BigDecimal
calculateTotalAssets
(
List
<
ChiefStockPosition
>
stockPositions
)
{
BigDecimal
totalAssets
=
new
BigDecimal
(
ZERO
.
getCode
());
for
(
ChiefStockPosition
stockPosition
:
stockPositions
)
{
Long
count
=
stockPosition
.
getCount
();
BigDecimal
cost
=
stockPosition
.
getCost
();
totalAssets
=
BigDecimalUtil
.
add
(
BigDecimalUtil
.
mul
(
new
BigDecimal
(
count
),
cost
),
totalAssets
);
}
return
totalAssets
;
}
@Override
public
Long
calculateBuyStockCount
(
BigDecimal
totalFund
,
BigDecimal
price
)
{
BigDecimal
total
=
BigDecimalUtil
.
div
(
totalFund
,
price
,
ZERO
.
getCode
());
if
(
BigDecimalUtil
.
compare
(
total
,
new
BigDecimal
(
HUNDRED
.
getCode
().
toString
()),
LESS
.
getCode
()))
{
return
0L
;
}
total
=
BigDecimalUtil
.
roundToHundreds
(
total
);
//除以100
return
total
.
longValue
();
}
@Override
public
BigDecimal
calculateTotalPrice
(
Long
count
,
BigDecimal
price
)
{
return
BigDecimalUtil
.
mul
(
new
BigDecimal
(
count
),
price
);
}
@Override
public
BigDecimal
calculateIndustryShare
(
BigDecimal
totalValue
,
Long
count
,
BigDecimal
price
)
{
//计算股票市值
BigDecimal
value
=
BigDecimalUtil
.
mul
(
new
BigDecimal
(
count
),
price
);
return
BigDecimalUtil
.
div
(
value
,
totalValue
);
}
@Override
public
BigDecimal
calculateProfitRate
(
BigDecimal
value1
,
BigDecimal
value2
)
{
if
(
Objects
.
equals
(
value1
,
value2
))
{
return
new
BigDecimal
(
ZERO
.
getCode
());
}
BigDecimal
value
=
BigDecimalUtil
.
div
(
value1
,
value2
);
return
BigDecimalUtil
.
sub
(
value
.
toString
(),
ONE
.
getCode
().
toString
());
}
@Override
public
BigDecimal
calculateProfitRate2
(
BigDecimal
value1
,
BigDecimal
value2
)
{
if
(
Objects
.
equals
(
value1
,
value2
))
{
return
new
BigDecimal
(
ZERO
.
getCode
());
}
BigDecimal
profitRate
=
BigDecimalUtil
.
div
(
BigDecimalUtil
.
sub
(
value1
,
value2
),
value2
);
return
profitRate
;
}
@Override
public
BigDecimal
riseDownRange
(
BigDecimal
now
,
BigDecimal
close
)
{
return
BigDecimalUtil
.
div
(
BigDecimalUtil
.
sub
(
now
,
close
),
close
);
}
@Override
public
BigDecimal
profitLossRatio
(
BigDecimal
now
,
BigDecimal
cost
)
{
return
BigDecimalUtil
.
div
(
BigDecimalUtil
.
sub
(
now
,
cost
),
cost
);
}
@Override
public
BigDecimal
calculateProfit
(
BigDecimal
value1
,
BigDecimal
value2
)
{
return
BigDecimalUtil
.
sub
(
value1
,
value2
);
}
@Override
public
Pair
<
String
,
String
>
calculatePriceRange
(
String
price
,
String
range
)
{
BigDecimal
upperLimit
=
BigDecimalUtil
.
mul
(
price
,
BigDecimalUtil
.
add
(
"1"
,
range
).
toString
());
BigDecimal
lowerLimit
=
BigDecimalUtil
.
mul
(
price
,
BigDecimalUtil
.
sub
(
"1"
,
range
).
toString
());
ImmutablePair
<
String
,
String
>
rangePair
=
new
ImmutablePair
(
BigDecimalUtil
.
keepDecimal
(
lowerLimit
).
toPlainString
(),
BigDecimalUtil
.
keepDecimal
(
upperLimit
).
toPlainString
());
return
rangePair
;
}
@Override
public
Pair
<
BigDecimal
,
BigDecimal
>
calculatePriceLimit
(
StocksCode
stocksCode
)
{
//300 688 浮动20%
String
code
=
stocksCode
.
getSymbol
();
BigDecimal
up
;
BigDecimal
low
;
if
(
stocksCode
.
getName
().
contains
(
"ST"
)
||
stocksCode
.
getName
().
contains
(
"st"
))
{
low
=
BigDecimalUtil
.
mul
(
stocksCode
.
getRecentClosingPrice
(),
new
BigDecimal
(
"0.95"
));
up
=
BigDecimalUtil
.
mul
(
stocksCode
.
getRecentClosingPrice
(),
new
BigDecimal
(
"1.05"
));
}
else
if
(
code
.
startsWith
(
"300"
)
||
code
.
startsWith
(
"688"
))
{
low
=
BigDecimalUtil
.
mul
(
stocksCode
.
getRecentClosingPrice
(),
new
BigDecimal
(
"0.8"
));
up
=
BigDecimalUtil
.
mul
(
stocksCode
.
getRecentClosingPrice
(),
new
BigDecimal
(
"1.2"
));
}
else
{
//其他 浮动10%
low
=
BigDecimalUtil
.
mul
(
stocksCode
.
getRecentClosingPrice
(),
new
BigDecimal
(
"0.9"
));
up
=
BigDecimalUtil
.
mul
(
stocksCode
.
getRecentClosingPrice
(),
new
BigDecimal
(
"1.1"
));
}
Pair
<
BigDecimal
,
BigDecimal
>
pair
=
new
ImmutablePair
(
BigDecimalUtil
.
keepDecimal
(
low
),
BigDecimalUtil
.
keepDecimal
(
up
));
return
pair
;
}
}
src/main/java/com/zfxftech/telmarket/service/impl/business/chief/ChiefFrozenRecordServiceImpl.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
impl
.
business
.
chief
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefFrozenRecord
;
import
com.zfxftech.telmarket.common.util.BigDecimalUtil
;
import
com.zfxftech.telmarket.common.util.DateUtil
;
import
com.zfxftech.telmarket.mapper.business.chief.ChiefFrozenRecordMapper
;
import
com.zfxftech.telmarket.service.business.chief.ChiefFrozenRecordService
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
static
com
.
zfxftech
.
telmarket
.
common
.
constant
.
AdminConstant
.
FrozenEnum
.
FUND
;
import
static
com
.
zfxftech
.
telmarket
.
common
.
constant
.
AdminConstant
.
FrozenEnum
.
STOCK
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/12/21 14:35
* 冻结记录相关
*/
@Service
public
class
ChiefFrozenRecordServiceImpl
extends
ServiceImpl
<
ChiefFrozenRecordMapper
,
ChiefFrozenRecord
>
implements
ChiefFrozenRecordService
{
@Value
(
"${frozenRecord.clearHour}"
)
private
Integer
clearHour
;
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
)
@Override
public
ChiefFrozenRecord
getStockByMarketIdAndCode
(
Long
marketId
,
String
code
)
{
QueryWrapper
<
ChiefFrozenRecord
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"market_id"
,
marketId
);
queryWrapper
.
eq
(
"code"
,
code
);
queryWrapper
.
eq
(
"frozen_target"
,
STOCK
.
getDesc
());
return
getOne
(
queryWrapper
);
}
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
)
@Override
public
List
<
ChiefFrozenRecord
>
getStockByMarketIdsAndCode
(
List
<
Long
>
marketIds
,
String
code
)
{
QueryWrapper
<
ChiefFrozenRecord
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
in
(
"market_id"
,
marketIds
);
queryWrapper
.
eq
(
"code"
,
code
);
queryWrapper
.
eq
(
"frozen_target"
,
STOCK
.
getDesc
());
return
list
(
queryWrapper
);
}
@Override
public
List
<
ChiefFrozenRecord
>
getStockByMarketIdsAndCode
(
List
<
Long
>
marketIds
,
List
<
String
>
codes
)
{
QueryWrapper
<
ChiefFrozenRecord
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
in
(
"market_id"
,
marketIds
);
queryWrapper
.
in
(
"code"
,
codes
);
queryWrapper
.
eq
(
"frozen_target"
,
STOCK
.
getDesc
());
return
list
(
queryWrapper
);
}
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
)
@Override
public
List
<
ChiefFrozenRecord
>
getStockByMarketId
(
Long
marketId
)
{
QueryWrapper
<
ChiefFrozenRecord
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
in
(
"market_id"
,
marketId
);
queryWrapper
.
eq
(
"frozen_target"
,
STOCK
.
getDesc
());
return
list
(
queryWrapper
);
}
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
)
@Override
public
ChiefFrozenRecord
getFrozenFundByMarketId
(
Long
marketId
)
{
QueryWrapper
<
ChiefFrozenRecord
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"market_id"
,
marketId
);
queryWrapper
.
eq
(
"frozen_target"
,
FUND
.
getDesc
());
return
getOne
(
queryWrapper
);
}
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
@Override
public
void
insertFrozenStock
(
Long
marketId
,
String
code
,
String
count
)
{
//查询当前用户今天是否已经冻结过股票
ChiefFrozenRecord
byMarketIdAndCode
=
getStockByMarketIdAndCode
(
marketId
,
code
);
if
(
byMarketIdAndCode
!=
null
)
{
BigDecimal
count1
=
byMarketIdAndCode
.
getCount
();
byMarketIdAndCode
.
setCount
(
BigDecimalUtil
.
add
(
count1
,
new
BigDecimal
(
count
)));
//zw318 当天多次买入都冻结
updateById
(
byMarketIdAndCode
);
}
else
{
ChiefFrozenRecord
frozenStock
=
createFrozenStock
(
code
,
count
,
marketId
);
save
(
frozenStock
);
}
}
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
@Override
public
void
insertFrozenFund
(
Long
marketId
,
String
fund
)
{
//查询当前用户今天是否已经冻结过资金
ChiefFrozenRecord
byMarketIdAndCode
=
getFrozenFundByMarketId
(
marketId
);
if
(
byMarketIdAndCode
!=
null
)
{
BigDecimal
count1
=
byMarketIdAndCode
.
getCount
();
byMarketIdAndCode
.
setCount
(
BigDecimalUtil
.
add
(
count1
,
new
BigDecimal
(
fund
)));
}
else
{
ChiefFrozenRecord
frozenFund
=
createFrozenFund
(
fund
,
marketId
);
save
(
frozenFund
);
}
}
@Override
public
void
clearFrozenRecords
()
{
//获取当前时间要大于5点后执行
Integer
hour
=
DateUtil
.
getCurrentHour
();
//大于指定时间才能进行冻结股票记录的清理
if
(
hour
<
clearHour
)
{
return
;
}
List
<
ChiefFrozenRecord
>
list
=
list
();
List
<
Long
>
ids
=
list
.
stream
().
map
(
ChiefFrozenRecord:
:
getId
).
collect
(
Collectors
.
toList
());
removeByIds
(
ids
);
}
@Override
public
void
clearFrozenRecordsForSynData
()
{
List
<
ChiefFrozenRecord
>
list
=
list
();
List
<
Long
>
ids
=
list
.
stream
().
map
(
ChiefFrozenRecord:
:
getId
).
collect
(
Collectors
.
toList
());
removeByIds
(
ids
);
}
/**
* 创建冻结股票对象
*
* @param code
* @param count
* @param marketId
* @return
*/
private
ChiefFrozenRecord
createFrozenStock
(
String
code
,
String
count
,
Long
marketId
)
{
ChiefFrozenRecord
frozenRecord
=
new
ChiefFrozenRecord
();
frozenRecord
.
setCode
(
code
);
frozenRecord
.
setCount
(
new
BigDecimal
(
count
));
frozenRecord
.
setFrozenTarget
(
STOCK
.
getDesc
());
frozenRecord
.
setMarketId
(
marketId
);
return
frozenRecord
;
}
/**
* 创建冻结资金对象
*
* @param count
* @param marketId
* @return
*/
private
ChiefFrozenRecord
createFrozenFund
(
String
count
,
Long
marketId
)
{
ChiefFrozenRecord
frozenRecord
=
new
ChiefFrozenRecord
();
frozenRecord
.
setCount
(
new
BigDecimal
(
count
));
frozenRecord
.
setFrozenTarget
(
FUND
.
getDesc
());
frozenRecord
.
setMarketId
(
marketId
);
return
frozenRecord
;
}
}
src/main/java/com/zfxftech/telmarket/service/impl/business/chief/ChiefMarketProfitLogServiceImpl.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
impl
.
business
.
chief
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefMarketProfitLog
;
import
com.zfxftech.telmarket.mapper.business.chief.ChiefMarketProfitLogMapper
;
import
com.zfxftech.telmarket.service.business.chief.ChiefMarketProfitLogService
;
import
lombok.extern.log4j.Log4j2
;
import
org.springframework.stereotype.Service
;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/19 9:47
*/
@Service
@Log4j2
public
class
ChiefMarketProfitLogServiceImpl
extends
ServiceImpl
<
ChiefMarketProfitLogMapper
,
ChiefMarketProfitLog
>
implements
ChiefMarketProfitLogService
{
}
src/main/java/com/zfxftech/telmarket/service/impl/business/chief/ChiefPositionTradeInfoRecordServiceImpl.java
0 → 100644
View file @
64c9ace3
This diff is collapsed.
Click to expand it.
src/main/java/com/zfxftech/telmarket/service/impl/business/chief/ChiefProductServiceImpl.java
0 → 100644
View file @
64c9ace3
This diff is collapsed.
Click to expand it.
src/main/java/com/zfxftech/telmarket/service/impl/business/chief/ChiefStockInputLogServiceImpl.java
0 → 100644
View file @
64c9ace3
This diff is collapsed.
Click to expand it.
src/main/java/com/zfxftech/telmarket/service/impl/business/chief/ChiefStockPositionServiceImpl.java
0 → 100644
View file @
64c9ace3
This diff is collapsed.
Click to expand it.
src/main/java/com/zfxftech/telmarket/service/impl/business/chief/ChiefStockProfitLogServiceImpl.java
0 → 100644
View file @
64c9ace3
package
com
.
zfxftech
.
telmarket
.
service
.
impl
.
business
.
chief
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
com.zfxftech.telmarket.common.bean.CommonPage
;
import
com.zfxftech.telmarket.common.pojo.dao.Quote
;
import
com.zfxftech.telmarket.common.pojo.dao.StockProfitLog
;
import
com.zfxftech.telmarket.common.pojo.dao.chief.ChiefStockProfitLog
;
import
com.zfxftech.telmarket.common.pojo.request.chief.ChiefQueryStockProfitLogBO
;
import
com.zfxftech.telmarket.common.pojo.vo.chief.ChiefStockProfitLogVO
;
import
com.zfxftech.telmarket.common.util.LambdaOrderUtil
;
import
com.zfxftech.telmarket.mapper.business.chief.ChiefStockProfitLogMapper
;
import
com.zfxftech.telmarket.service.business.StockCodeService
;
import
com.zfxftech.telmarket.service.business.chief.ChiefStockProfitLogService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* 个股收益分析
*
* @author jianghua
* @version 1.0
* @date 2021-08-24 15:55
*/
@Service
public
class
ChiefStockProfitLogServiceImpl
extends
ServiceImpl
<
ChiefStockProfitLogMapper
,
ChiefStockProfitLog
>
implements
ChiefStockProfitLogService
{
@Autowired
private
StockCodeService
stockCodeService
;
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
@Override
public
void
add
(
ChiefStockProfitLog
stockProfitLog
)
{
save
(
stockProfitLog
);
}
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
)
@Override
public
CommonPage
<
ChiefStockProfitLogVO
>
queryStockProfitLogs4page
(
ChiefQueryStockProfitLogBO
queryStockProfitLogBO
)
{
PageHelper
.
startPage
(
queryStockProfitLogBO
.
getPageNo
(),
queryStockProfitLogBO
.
getPageSize
());
List
<
ChiefStockProfitLog
>
stockProfitLogs
=
queryStockProfitLogsSort
(
queryStockProfitLogBO
);
PageInfo
<
ChiefStockProfitLog
>
pageInfo
=
new
PageInfo
<
ChiefStockProfitLog
>(
stockProfitLogs
);
CommonPage
<
ChiefStockProfitLogVO
>
commonPage
=
new
CommonPage
();
commonPage
.
setTotalPage
(
pageInfo
.
getPages
());
commonPage
.
setPageNum
(
pageInfo
.
getPageNum
());
commonPage
.
setPageSize
(
pageInfo
.
getPageSize
());
commonPage
.
setTotal
(
pageInfo
.
getTotal
());
List
<
String
>
codes
=
stockProfitLogs
.
stream
().
map
(
ChiefStockProfitLog:
:
getCode
).
collect
(
Collectors
.
toList
());
Map
<
String
,
Quote
>
codeAndPriceMapping
=
stockCodeService
.
batchQueryStockPrice
(
codes
);
for
(
ChiefStockProfitLog
stockProfitLog
:
stockProfitLogs
)
{
String
code
=
stockProfitLog
.
getCode
();
if
(
codeAndPriceMapping
.
containsKey
(
code
))
{
Quote
quote
=
codeAndPriceMapping
.
get
(
code
);
stockProfitLog
.
setName
(
quote
.
getName
());
}
}
commonPage
.
setList
(
createStockProfitLogVO
(
stockProfitLogs
));
// List<String> codes = stockProfitLogs.stream().map(StockProfitLog::getCode).collect(Collectors.toList());
// //批量获取股票当前价格
// Map<String, Quote> codeAndPriceMapping = stockCodeService.batchQueryStockPrice(codes);
// for (StockProfitLog stockProfitLog : stockProfitLogs) {
// String code = stockProfitLog.getCode();
// if (codeAndPriceMapping.containsKey(code)) {
// Quote quote = codeAndPriceMapping.get(code);
// stockProfitLog.setName(quote.getName());
// }
// }
return
commonPage
;
}
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
)
@Override
public
List
<
ChiefStockProfitLog
>
queryStockProfitLogs
(
Long
marketId
)
{
LambdaQueryWrapper
<
ChiefStockProfitLog
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
and
(
i
->
i
.
eq
(
ChiefStockProfitLog:
:
getCode
,
"601005"
).
gt
(
ChiefStockProfitLog:
:
getCreatedTime
,
"2022-04-17 23:59:59"
).
lt
(
ChiefStockProfitLog:
:
getCreatedTime
,
"2022-04-01 00:00:00"
))
.
or
(
i
->
i
.
ne
(
ChiefStockProfitLog:
:
getCode
,
"601005"
))
.
and
(
i
->
i
.
eq
(
ChiefStockProfitLog:
:
getMarketId
,
marketId
));
// QueryWrapper<StockProfitLog> queryWrapper = new QueryWrapper();
// queryWrapper.eq("market_id", marketId);
return
list
(
queryWrapper
);
}
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
)
@Override
public
List
<
ChiefStockProfitLog
>
queryStockProfitLogsSort
(
ChiefQueryStockProfitLogBO
queryStockProfitLogBO
)
{
LambdaQueryWrapper
<
ChiefStockProfitLog
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
and
(
i
->
i
.
eq
(
ChiefStockProfitLog:
:
getCode
,
"601005"
).
gt
(
ChiefStockProfitLog:
:
getCreatedTime
,
"2022-04-17 23:59:59"
).
lt
(
ChiefStockProfitLog:
:
getCreatedTime
,
"2022-04-01 00:00:00"
))
.
or
(
i
->
i
.
ne
(
ChiefStockProfitLog:
:
getCode
,
"601005"
))
.
and
(
i
->
i
.
eq
(
ChiefStockProfitLog:
:
getMarketId
,
queryStockProfitLogBO
.
getMarketId
()));
//.orderBy(true,queryStockProfitLogBO.getSortBoolean(), StringUtils.isEmpty(queryStockProfitLogBO.getBuyingTimeSortName()) ? StockProfitLog::getSellingTime : StockProfitLog::getBuyingTime);
LambdaOrderUtil
.
setOrderBy
(
queryStockProfitLogBO
.
getOrderBy
(),
queryWrapper
,
StockProfitLog
.
class
);
// QueryWrapper<StockProfitLog> queryWrapper = new QueryWrapper();
// queryWrapper.eq("market_id", marketId);
return
list
(
queryWrapper
);
}
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
)
@Override
public
List
<
ChiefStockProfitLog
>
queryStockProfitLogs
(
List
<
Long
>
positionIds
)
{
QueryWrapper
<
ChiefStockProfitLog
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
in
(
"position_id"
,
positionIds
);
return
list
(
queryWrapper
);
}
private
List
<
ChiefStockProfitLogVO
>
createStockProfitLogVO
(
List
<
ChiefStockProfitLog
>
stockProfitLogs
)
{
List
<
ChiefStockProfitLogVO
>
stockProfitLogVOS
=
new
ArrayList
<>();
for
(
ChiefStockProfitLog
stockProfitLog
:
stockProfitLogs
)
{
ChiefStockProfitLogVO
stockProfitLogVO
=
new
ChiefStockProfitLogVO
();
stockProfitLogVO
.
setBuyingTime
(
stockProfitLog
.
getBuyingTime
().
getTime
());
stockProfitLogVO
.
setSellingTime
(
stockProfitLog
.
getSellingTime
().
getTime
());
stockProfitLogVO
.
setCode
(
stockProfitLog
.
getCode
());
stockProfitLogVO
.
setHoldingDays
(
stockProfitLog
.
getHoldingDays
());
stockProfitLogVO
.
setProfitPrice
(
stockProfitLog
.
getProfitPrice
().
toPlainString
());
stockProfitLogVO
.
setProfitRatio
(
stockProfitLog
.
getProfitRatio
().
toPlainString
());
stockProfitLogVO
.
setName
(
stockProfitLog
.
getName
());
stockProfitLogVO
.
setBuyingRoute
(
"未使用"
);
stockProfitLogVO
.
setSellingRoute
(
"未使用"
);
stockProfitLogVOS
.
add
(
stockProfitLogVO
);
}
return
stockProfitLogVOS
;
}
}
src/main/java/com/zfxftech/telmarket/task/followAccount/ChiefStockPriceTask.java
0 → 100644
View file @
64c9ace3
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment