This commit is contained in:
mmm8955405 2024-03-05 11:03:56 +08:00
parent 5855944018
commit b38264a5ed
2 changed files with 54 additions and 32 deletions

View File

@ -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.FromGatherer<SelectModel>, QueryExpressionDSL<SelectModel>.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<ContractInfoStatuScribeStore> list = contractInfoSelectMapper.selectStroeMany(provider);
List<String> ids = list.stream()
.map(ContractInfoStatuScribeStore::getTs_code)
.collect(Collectors.toList());
List<FutDaily> 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);

View File

@ -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;
}
}