Browse Source

8月18日(新)历史数据查询完善

lijianlin/feature-20250728171217-三期金豆消费相关
sunjiabei 3 days ago
parent
commit
eb5d956250
  1. 6
      src/main/java/com/example/demo/config/SqlServer1DataSourceConfig.java
  2. 17
      src/main/java/com/example/demo/controller/coin/HistoryRecordController.java
  3. 8
      src/main/java/com/example/demo/domain/vo/coin/HistoryRecord.java
  4. 6
      src/main/java/com/example/demo/mapper/sqlserver/HistoryRecordMapper.java
  5. 30
      src/main/java/com/example/demo/serviceImpl/coin/HistoryRecordServiceImpl.java
  6. 49
      src/main/resources/sqlServiceMapper/HistoryRecordMapper.xml
  7. 51
      src/main/resources/sqlserverMapper/HistoryRecordMapper.xml

6
src/main/java/com/example/demo/config/SqlServer1DataSourceConfig.java

@ -34,11 +34,11 @@ public class SqlServer1DataSourceConfig {
*/ */
@Bean(name = "sqlserver1SqlSessionFactory") @Bean(name = "sqlserver1SqlSessionFactory")
public SqlSessionFactory sqlserver1SqlSessionFactory(@Qualifier("sqlserver1DataSource") DataSource dataSource, public SqlSessionFactory sqlserver1SqlSessionFactory(@Qualifier("sqlserver1DataSource") DataSource dataSource,
@Qualifier("globalConfiguration1") org.apache.ibatis.session.Configuration globalConfiguration) throws Exception {
@Qualifier("globalConfiguration6") org.apache.ibatis.session.Configuration globalConfiguration) throws Exception {
log.info("Initializing SQL Server SqlSessionFactory..."); log.info("Initializing SQL Server SqlSessionFactory...");
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource); sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:sqlServiceMapper/*.xml"));
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:sqlserverMapper/*.xml"));
sessionFactory.setConfiguration(globalConfiguration); sessionFactory.setConfiguration(globalConfiguration);
return sessionFactory.getObject(); return sessionFactory.getObject();
} }
@ -57,7 +57,7 @@ public class SqlServer1DataSourceConfig {
*/ */
@Bean @Bean
@ConfigurationProperties(prefix = "mybatis.configuration.sqlserver1") @ConfigurationProperties(prefix = "mybatis.configuration.sqlserver1")
public org.apache.ibatis.session.Configuration globalConfiguration() {
public org.apache.ibatis.session.Configuration globalConfiguration6() {
log.info("Initializing SQL Server MyBatis global configuration..."); log.info("Initializing SQL Server MyBatis global configuration...");
return new org.apache.ibatis.session.Configuration(); return new org.apache.ibatis.session.Configuration();
} }

17
src/main/java/com/example/demo/controller/coin/HistoryRecordController.java

@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
@ -40,7 +41,7 @@ public class HistoryRecordController {
//获取旧的历史记录 //获取旧的历史记录
@RequestMapping("/getOldHistoryRecord") @RequestMapping("/getOldHistoryRecord")
public Result getOldHistoryRecord(Page page){
public Result getOldHistoryRecord(@RequestBody Page page){
try { try {
//页码校验 //页码校验
if (ObjectUtils.isEmpty(page.getPageNum())) { if (ObjectUtils.isEmpty(page.getPageNum())) {
@ -59,17 +60,21 @@ public class HistoryRecordController {
} }
//获取新的历史记录 //获取新的历史记录
@RequestMapping("/getNewHistoryRecord") @RequestMapping("/getNewHistoryRecord")
public Result getNewHistoryRecord(Page page){
public Result getNewHistoryRecord(@RequestBody HistoryRecord historyRecord){
try { try {
//页码校验 //页码校验
if (ObjectUtils.isEmpty(page.getPageNum())) {
if (ObjectUtils.isEmpty(historyRecord.getPageNum())) {
return Result.error("页码数为空!"); return Result.error("页码数为空!");
} }
//页面大小校验 //页面大小校验
if (ObjectUtils.isEmpty(page.getPageSize())) {
if (ObjectUtils.isEmpty(historyRecord.getPageSize())) {
return Result.error("页大小为空!"); return Result.error("页大小为空!");
} else {
return Result.success(historyRecordService.getNewHistoryRecord(page.getPageNum(), page.getPageSize(),page.getHistoryRecord()));
}
if((historyRecord.getJwcode()==null|| historyRecord.getJwcode().isEmpty())&&(historyRecord.getName()==null|| historyRecord.getName().isEmpty())){
return Result.error("姓名,精网号不能都为空");
}
else {
return Result.success(historyRecordService.getNewHistoryRecord(historyRecord.getPageNum(), historyRecord.getPageSize(),historyRecord));
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

8
src/main/java/com/example/demo/domain/vo/coin/HistoryRecord.java

@ -31,7 +31,7 @@ public class HistoryRecord implements Serializable {
@ExcelProperty("客户姓名") @ExcelProperty("客户姓名")
private String name; // 客户姓名 private String name; // 客户姓名
@ExcelProperty("精网号") @ExcelProperty("精网号")
private Integer jwcode; // 精网号
private String jwcode; // 精网号
@ExcelProperty("数量") @ExcelProperty("数量")
private BigDecimal num; // 数量 private BigDecimal num; // 数量
@ExcelProperty("更新类型") @ExcelProperty("更新类型")
@ -58,4 +58,10 @@ public class HistoryRecord implements Serializable {
@ExcelIgnore @ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间 private Date endTime; // 结束时间
@ExcelIgnore
private Integer pageNum; // 页码
@ExcelIgnore
private Integer pageSize; // 每页条数
@ExcelIgnore
private Integer offset; // 偏移量
} }

6
src/main/java/com/example/demo/mapper/sqlserver/HistoryRecordMapper.java

@ -3,6 +3,7 @@ package com.example.demo.mapper.sqlserver;
import com.example.demo.domain.vo.coin.HistoryRecord; import com.example.demo.domain.vo.coin.HistoryRecord;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -19,6 +20,9 @@ import java.util.List;
public interface HistoryRecordMapper { public interface HistoryRecordMapper {
//获取旧的历史记录 //获取旧的历史记录
List<HistoryRecord> getOldHistoryRecord(HistoryRecord historyRecord); List<HistoryRecord> getOldHistoryRecord(HistoryRecord historyRecord);
//获取新的历史记录
// 分页查询新历史数据
List<HistoryRecord> getNewHistoryRecord(HistoryRecord historyRecord); List<HistoryRecord> getNewHistoryRecord(HistoryRecord historyRecord);
// 统计总条数
long countNewHistoryRecord(HistoryRecord historyRecord);
} }

30
src/main/java/com/example/demo/serviceImpl/coin/HistoryRecordServiceImpl.java

@ -33,9 +33,33 @@ public class HistoryRecordServiceImpl implements HistoryRecordService {
@Override @Override
public PageInfo<HistoryRecord> getNewHistoryRecord(Integer pageNum, Integer pageSize, HistoryRecord historyRecord) { public PageInfo<HistoryRecord> getNewHistoryRecord(Integer pageNum, Integer pageSize, HistoryRecord historyRecord) {
PageHelper.startPage(pageNum, pageSize);
List<HistoryRecord> historyRecords = historyRecordMapper.getNewHistoryRecord(historyRecord);
return new PageInfo<>(historyRecords);
// 1. 校验分页参数避免pageNum为0或负数
if (pageNum == null || pageNum < 1) {
pageNum = 1;
}
if (pageSize == null || pageSize < 1) {
pageSize = 10; // 默认每页10条
}
// 2. 计算偏移量 (SQL Server的OFFSET从0开始)
int offset = (pageNum - 1) * pageSize;
historyRecord.setOffset(offset);
// 3. 查询当前页数据
List<HistoryRecord> records = historyRecordMapper.getNewHistoryRecord(historyRecord);
// 4. 查询总记录数
long total = historyRecordMapper.countNewHistoryRecord(historyRecord);
// 5. 手动构建PageInfo对象
PageInfo<HistoryRecord> pageInfo = new PageInfo<>(records);
pageInfo.setPageNum(pageNum); // 当前页码
pageInfo.setPageSize(pageSize); // 每页条数
pageInfo.setTotal(total); // 总记录数
pageInfo.setPages((int) (total + pageSize - 1) / pageSize); // 总页数
return pageInfo;
} }
} }

49
src/main/resources/sqlServiceMapper/HistoryRecordMapper.xml

@ -1,49 +0,0 @@
<?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.example.demo.mapper.sqlserver.HistoryRecordMapper">
<select id="getOldHistoryRecord" resultType="com.example.demo.domain.vo.coin.HistoryRecord">
</select>
<select id="getNewHistoryRecord" resultType="com.example.demo.domain.vo.coin.HistoryRecord">
SELECT
-- 主表字段(hwhcGold库)
ui.Name AS name,
ugr.jwcode AS jwcode,
(ugr.buy_jb + ugr.free + ugr.core_jb) AS num,
-- 关联表字段(其他库,例如db2库的user_info表)
ugt.remark_cn AS updateType, -- 假设从其他库获取更新类型
ugr.buy_jb AS permanentGold,
ugr.free AS freeGold,
ugr.core_jb AS taskGold,
ugr.cz_user AS operator,
ugr.cz_time AS createTime,
ugr.cz_bz AS remark
FROM
-- 主表:hwhcGold库的user_gold_records
[hwhcGold].[dbo].[user_gold_records] ugr
LEFT JOIN
-- 关联表:user_info
[hwerp].[dbo].[UserInfo] ui
ON ugr.jwcode = ui.Jwcode -- 关联条件:精网号
LEFT JOIN
-- 关联表
[hwhcGold].[dbo].[user_gold_typeInfo] ugt
ON ugr.gtype = ugt.id -- 关联条件:精网号
<where>
<if test="startTime != null">
AND ugr.cz_time &gt;= #{startTime}
</if>
<if test="endTime != null">
AND ugr.cz_time &lt;= #{endTime}
</if>
<if test="jwcode != null">
AND ugr.jwcode = #{jwcode} -- 支持按精网号筛选
</if>
<if test="name != null">
AND ugr.name = #{name} -- 支持按姓名筛选
</if>
</where>
ORDER BY ugr.cz_time DESC
</select>
</mapper>

51
src/main/resources/sqlserverMapper/HistoryRecordMapper.xml

@ -0,0 +1,51 @@
<?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.example.demo.mapper.sqlserver.HistoryRecordMapper">
<select id="getOldHistoryRecord" resultType="com.example.demo.domain.vo.coin.HistoryRecord">
</select>
<!-- 新增分页查询方法 -->
<select id="getNewHistoryRecord" resultType="com.example.demo.domain.vo.coin.HistoryRecord">
SELECT
ui.Name AS name,
ugr.jwcode AS jwcode,
(ugr.buy_jb + ugr.free + ugr.core_jb) AS num,
ugt.remark_cn AS updateType,
ugr.buy_jb AS permanentGold,
ugr.free AS freeGold,
ugr.core_jb AS taskGold,
ugr.cz_user AS operator,
ugr.cz_time AS createTime,
ugr.cz_bz AS remark
FROM [hwhcGold].[dbo].[user_gold_records] ugr
LEFT JOIN [hwerp].[dbo].[UserInfo] ui ON ugr.jwcode = ui.Jwcode
LEFT JOIN [hwhcGold].[dbo].[user_gold_typeInfo] ugt ON ugr.gtype = ugt.id
<where>
<if test="startTime != null">AND ugr.cz_time &gt;= #{startTime}</if>
<if test="endTime != null">AND ugr.cz_time &lt;= #{endTime}</if>
<if test="jwcode != null and jwcode!=''">AND ugr.jwcode = #{jwcode}</if>
<if test="name != null and name!=''">AND ui.Name = #{name}</if> <!-- 修复姓名关联字段 -->
</where>
ORDER BY ugr.cz_time DESC
-- SQL Server 手动分页语法
OFFSET #{offset} ROWS FETCH NEXT #{pageSize} ROWS ONLY
</select>
<!-- 新增统计总条数的方法 -->
<select id="countNewHistoryRecord" resultType="java.lang.Long">
SELECT COUNT(0)
FROM [hwhcGold].[dbo].[user_gold_records] ugr
LEFT JOIN [hwerp].[dbo].[UserInfo] ui ON ugr.jwcode = ui.Jwcode
LEFT JOIN [hwhcGold].[dbo].[user_gold_typeInfo] ugt ON ugr.gtype = ugt.id
<where>
<if test="startTime != null">AND ugr.cz_time &gt;= #{startTime}</if>
<if test="endTime != null">
<!-- 给 endTime 加 1 秒,语法:DATEADD(second, 1, 时间值) -->
AND ugr.cz_time &lt;= DATEADD(second, 1, #{endTime})
</if>
<if test="jwcode != null and jwcode!=''">AND ugr.jwcode = #{jwcode}</if>
<if test="name != null and name!=''">AND ui.Name = #{name}</if> <!-- 修复姓名关联字段 -->
</where>
</select>
</mapper>
Loading…
Cancel
Save