From b38264a5ed9e39dd8d3ec488b2e18ef82fa423b1 Mon Sep 17 00:00:00 2001 From: mmm8955405 Date: Tue, 5 Mar 2024 11:03:56 +0800 Subject: [PATCH] xgg --- .../controller/ContractInfoController.java | 75 +++++++++++-------- .../vo/ContractInfoStatuScribeStore.java | 11 ++- 2 files changed, 54 insertions(+), 32 deletions(-) diff --git a/src/main/java/jj/tech/finance/biz/web/controller/ContractInfoController.java b/src/main/java/jj/tech/finance/biz/web/controller/ContractInfoController.java index 199ccf2..bcf9431 100644 --- a/src/main/java/jj/tech/finance/biz/web/controller/ContractInfoController.java +++ b/src/main/java/jj/tech/finance/biz/web/controller/ContractInfoController.java @@ -7,6 +7,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.function.Function; import java.util.stream.Collectors; import org.apache.commons.beanutils.BeanUtils; @@ -17,6 +18,8 @@ import org.mybatis.dynamic.sql.BasicColumn; import org.mybatis.dynamic.sql.SqlBuilder; import org.mybatis.dynamic.sql.delete.render.DeleteStatementProvider; import org.mybatis.dynamic.sql.render.RenderingStrategies; +import org.mybatis.dynamic.sql.select.QueryExpressionDSL; +import org.mybatis.dynamic.sql.select.SelectModel; import org.mybatis.dynamic.sql.select.render.SelectStatementProvider; import org.mybatis.dynamic.sql.where.WhereApplier; import org.springframework.beans.factory.annotation.Autowired; @@ -44,13 +47,16 @@ import jj.tech.finance.biz.webadmin.vo.parm.P; import jj.tech.finance.repository.mybatis.dao.ContractInfoMapper; import jj.tech.finance.repository.mybatis.dao.ContractInfoStatusScribeMapper; import jj.tech.finance.repository.mybatis.dao.ContractInfoUserMapper; +import jj.tech.finance.repository.mybatis.dao.FutDailyMapper; import jj.tech.finance.repository.mybatis.dao.support.ContractInfoDynamicSqlSupport; import jj.tech.finance.repository.mybatis.dao.support.ContractInfoStatusDynamicSqlSupport; import jj.tech.finance.repository.mybatis.dao.support.ContractInfoStatusScribeDynamicSqlSupport; import jj.tech.finance.repository.mybatis.dao.support.ContractInfoUserDynamicSqlSupport; +import jj.tech.finance.repository.mybatis.dao.support.FutDailyDynamicSqlSupport; import jj.tech.finance.repository.mybatis.entity.ContractInfo; import jj.tech.finance.repository.mybatis.entity.ContractInfoStatusScribe; import jj.tech.finance.repository.mybatis.entity.ContractInfoUser; +import jj.tech.finance.repository.mybatis.entity.FutDaily; import jj.tech.finance.repository.mybatis.entity.UserInfo; import jj.tech.finance.utils.Page; import jj.tech.finance.utils.R; @@ -66,6 +72,7 @@ public class ContractInfoController { @Autowired ContractInfoUserMapper contractInfoUserMapper; @Autowired ContractInfoSelectMapper contractInfoSelectMapper; @Autowired ContractInfoStatusScribeMapper contractInfoStatusScribeMapper; + @Autowired FutDailyMapper futDailyMapper; @Autowired SelectMapper selectMapper; @Operation(summary = "合约信息列表", description = " contract_status=1为禁用,其他是启用,scribe_status=1为禁用,其他是启用, store=null是未收藏,有值为已收藏" @@ -94,9 +101,8 @@ public class ContractInfoController { ContractInfoStatusDynamicSqlSupport.scribe_update_time.qualifiedWith("contract_info_status"), ContractInfoStatusDynamicSqlSupport.scribe_number.qualifiedWith("contract_info_status") ); - - BasicColumn[] basic = ArrayUtils.addAll(allContractInfo,store); + String isLikeTsCode = null; String isLikeSymbol = null; if(StringUtils.isNotBlank(parm.getTs_code())) { @@ -106,16 +112,24 @@ public class ContractInfoController { isLikeSymbol = "%"+parm.getSymbol()+"%"; } + Function, QueryExpressionDSL.JoinSpecificationFinisher> function = + s -> { + + var from = s + .from(ContractInfoDynamicSqlSupport.contractInfo, "contractInfo") + .leftJoin(contractInfoUser,"contractInfoUser") + .on(ContractInfoDynamicSqlSupport.ts_code.qualifiedWith("contractInfo"), + equalTo(ContractInfoUserDynamicSqlSupport.ts_code.qualifiedWith("contractInfoUser"))) + .leftJoin(ContractInfoStatusDynamicSqlSupport.contractInfoStatus) + .on(ContractInfoDynamicSqlSupport.ts_code.qualifiedWith("contractInfo"), + equalTo(ContractInfoStatusDynamicSqlSupport.ts_code.qualifiedWith("contract_info_status"))) + ; + + return from; + }; + + - var from = select(basic) - .from(ContractInfoDynamicSqlSupport.contractInfo, "contractInfo") - .leftJoin(contractInfoUser,"contractInfoUser") - .on(ContractInfoDynamicSqlSupport.ts_code.qualifiedWith("contractInfo"), - equalTo(ContractInfoUserDynamicSqlSupport.ts_code.qualifiedWith("contractInfoUser"))) - .leftJoin(ContractInfoStatusDynamicSqlSupport.contractInfoStatus) - .on(ContractInfoDynamicSqlSupport.ts_code.qualifiedWith("contractInfo"), - equalTo(ContractInfoStatusDynamicSqlSupport.ts_code.qualifiedWith("contract_info_status"))) - ; var where = SqlBuilder.where(); where.and( ContractInfoStatusDynamicSqlSupport.contract_status.qualifiedWith("contract_info_status"), isNull(), @@ -127,34 +141,33 @@ public class ContractInfoController { where.and(ContractInfoDynamicSqlSupport.contractInfo.exchange, isEqualToWhenPresent(parm.getExchange())); WhereApplier applier = where.toWhereApplier(); - SelectStatementProvider provider = from + + SelectStatementProvider provider = function.apply(select(basic)) .applyWhere(applier) - .limit(p.getPageSize()) + .limit(p.getPageSize()) .offset(p.limitStart()) - .build() - .render(RenderingStrategies.MYBATIS3); + .build() + .render(RenderingStrategies.MYBATIS3); List list = contractInfoSelectMapper.selectStroeMany(provider); + List ids = list.stream() + .map(ContractInfoStatuScribeStore::getTs_code) + .collect(Collectors.toList()); + + List futs = + futDailyMapper.select(s-> + s.where(FutDailyDynamicSqlSupport.ts_code,SqlBuilder.isIn(ids)) + .groupBy(FutDailyDynamicSqlSupport.ts_code) + .orderBy(FutDailyDynamicSqlSupport.trade_date.descending()) + ); - var count = select(count()) - .from(ContractInfoDynamicSqlSupport.contractInfo, "contractInfo") - .leftJoin(contractInfoUser,"contractInfoUser") - .on(ContractInfoDynamicSqlSupport.ts_code.qualifiedWith("contractInfo"), - equalTo(ContractInfoUserDynamicSqlSupport.ts_code.qualifiedWith("contractInfoUser"))) - .leftJoin(ContractInfoStatusDynamicSqlSupport.contractInfoStatus) - .on(ContractInfoDynamicSqlSupport.ts_code.qualifiedWith("contractInfo"), - equalTo(ContractInfoStatusDynamicSqlSupport.ts_code.qualifiedWith("contract_info_status"))) - .where( - ContractInfoStatusDynamicSqlSupport.contract_status.qualifiedWith("contract_info_status"), isNull(), - or(ContractInfoStatusDynamicSqlSupport.contract_status.qualifiedWith("contract_info_status"), isEqualTo(0))) - .and(ContractInfoDynamicSqlSupport.contractInfo.ts_code, isLikeWhenPresent(isLikeTsCode), - or(ContractInfoDynamicSqlSupport.contractInfo.symbol, isLikeWhenPresent(isLikeSymbol))) - .and(ContractInfoDynamicSqlSupport.contractInfo.exchange, isEqualToWhenPresent(parm.getExchange())) - .build() - .render(RenderingStrategies.MYBATIS3); + + SelectStatementProvider count = function.apply(select(count())) + .applyWhere(applier) + .build().render(RenderingStrategies.MYBATIS3); long total = selectMapper.count(count); p.setList(list); diff --git a/src/main/java/jj/tech/finance/biz/webadmin/vo/ContractInfoStatuScribeStore.java b/src/main/java/jj/tech/finance/biz/webadmin/vo/ContractInfoStatuScribeStore.java index be8f4fc..9010862 100644 --- a/src/main/java/jj/tech/finance/biz/webadmin/vo/ContractInfoStatuScribeStore.java +++ b/src/main/java/jj/tech/finance/biz/webadmin/vo/ContractInfoStatuScribeStore.java @@ -1,8 +1,11 @@ package jj.tech.finance.biz.webadmin.vo; +import jj.tech.finance.repository.mybatis.entity.FutDaily; + public class ContractInfoStatuScribeStore extends ContractInfoStatuScribe { public Integer store; + public FutDaily futDaily; public Integer getStore() { return store; @@ -10,6 +13,12 @@ public class ContractInfoStatuScribeStore extends ContractInfoStatuScribe { public void setStore(Integer store) { this.store = store; } - + public FutDaily getFutDaily() { + return futDaily; + } + public void setFutDaily(FutDaily futDaily) { + this.futDaily = futDaily; + } + }