提交 e1c815cb authored 作者: 吕本才's avatar 吕本才

增加标识,是否重复出现过预付款,超过数据库最大值的,出先特效,赋值0

2、增加大区分组结果记录
上级 fa56632c
...@@ -71,7 +71,8 @@ public class DealerBigScreenController extends BaseController { ...@@ -71,7 +71,8 @@ public class DealerBigScreenController extends BaseController {
} }
/** /**
* 按照轮次查询轮次结果 * 后台的按照轮次查询轮次结果
*
*/ */
@GetMapping("/result/round/{roundTime}") @GetMapping("/result/round/{roundTime}")
public AjaxResult groupRoundList(@PathVariable("roundTime") Integer roundTime, String phone, String dealerName) { public AjaxResult groupRoundList(@PathVariable("roundTime") Integer roundTime, String phone, String dealerName) {
...@@ -85,7 +86,9 @@ public class DealerBigScreenController extends BaseController { ...@@ -85,7 +86,9 @@ public class DealerBigScreenController extends BaseController {
return success(res); return success(res);
} }
@GetMapping("/zip/download")
@GetMapping("/download/zip")
public void downloadZip(HttpServletResponse response) { public void downloadZip(HttpServletResponse response) {
// 分组导出 写入到多个excel,并合并到zip文件导出 // 分组导出 写入到多个excel,并合并到zip文件导出
try { try {
...@@ -117,6 +120,10 @@ public class DealerBigScreenController extends BaseController { ...@@ -117,6 +120,10 @@ public class DealerBigScreenController extends BaseController {
} }
@GetMapping("/download/excel")
public void downloadexcle(HttpServletResponse response, String group) {
resultService.downloadExcel(response,group);
}
} }
package com.ruoyi.dealer.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 经销商轮次填写结果
* 对应表:dealer_round_result
*/
@Data
@TableName("dealer_result")
public class DealerResult {
/**
* 主键id
*/
@TableId(type = IdType.AUTO)
@Excel(name = "序号")
private Long resultId;
/**
* 当前轮次
*/
@Excel(name = "经销商名称")
private Integer roundTime;
/**
* 增加的预付款万
*/
@Excel(name = "预付款")
private Integer paymentTtl;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 第一轮分组+第二列分组
* 分组名称
*/
// @Excel(name = "经销商分组")
// private String groupName;
@Excel(name = "经销商目标")
private Integer goalTtlAct;
/**
* 预付款达成的百分比
*/
@Excel(name = "经销商达成率")
private String paymentPercentage;
/**
* 销售大区分组名称
* 第二轮分组使用,例如:华东组、华南组、华北一组、华北二组、华中组、西南组、西北组
*
*/
@Excel(name = "经销商大区分组")
private String salesRegionGroupName;
}
...@@ -47,5 +47,12 @@ public class DealerBigScreenDynamicRes { ...@@ -47,5 +47,12 @@ public class DealerBigScreenDynamicRes {
* 轮次id * 轮次id
*/ */
private Long roundId; private Long roundId;
/**
* 是否重复出现特效
* 0 没出现过特效,需要展现特效
* 1 已出现过特效,不需要展现特效
*
*/
private Integer repetition;
} }
// 文件路径:ruoyi-system/src/main/java/com/ruoyi/dealer/mapper/DealerRoundResultMapper.java
package com.ruoyi.dealer.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.dealer.domain.DealerResult;
import org.apache.ibatis.annotations.Mapper;
/**
* 经销商轮次结果 Mapper 接口
*/
@Mapper
public interface DealerResultMapper extends BaseMapper<DealerResult> {
}
...@@ -4,7 +4,6 @@ package com.ruoyi.dealer.mapper; ...@@ -4,7 +4,6 @@ package com.ruoyi.dealer.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.dealer.domain.DealerRoundResult; import com.ruoyi.dealer.domain.DealerRoundResult;
import com.ruoyi.dealer.domain.dto.DealerBigScreenGroupResultDto; import com.ruoyi.dealer.domain.dto.DealerBigScreenGroupResultDto;
import com.ruoyi.dealer.domain.dto.DealerBigScreenGroupResultRes;
import com.ruoyi.dealer.domain.dto.DealerBigScreenTotalResultRes; import com.ruoyi.dealer.domain.dto.DealerBigScreenTotalResultRes;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Result;
...@@ -18,13 +17,7 @@ import java.util.List; ...@@ -18,13 +17,7 @@ import java.util.List;
*/ */
@Mapper @Mapper
public interface DealerRoundResultMapper extends BaseMapper<DealerRoundResult> { public interface DealerRoundResultMapper extends BaseMapper<DealerRoundResult> {
/**
* 查询组内达成率排前四名经销商列表
* @param categoryName
*/
@Select("select * from dealer_round_result where dealer_category = #{categoryName} and round_time = 1 " +
"order by payment_percentage desc limit 4")
List<DealerBigScreenGroupResultRes> getGroupList(String categoryName);
@Select("select result.round_time, result.sales_region_group_name as group_Name , sum(result.payment_ttl) as payment_ttl,sum(result.goal_ttl_act) as goal_ttl_act , 100*sum(result.payment_ttl)/sum(result.goal_ttl_act) as payment_percentage from dealer_round_result result " + @Select("select result.round_time, result.sales_region_group_name as group_Name , sum(result.payment_ttl) as payment_ttl,sum(result.goal_ttl_act) as goal_ttl_act , 100*sum(result.payment_ttl)/sum(result.goal_ttl_act) as payment_percentage from dealer_round_result result " +
"group by round_time ,result.sales_region_group_name order by payment_percentage desc ") "group by round_time ,result.sales_region_group_name order by payment_percentage desc ")
// 手动指定映射:column(数据库字段)→ property(Java属性) // 手动指定映射:column(数据库字段)→ property(Java属性)
......
...@@ -16,8 +16,6 @@ import java.util.List; ...@@ -16,8 +16,6 @@ import java.util.List;
* @date 2025-10-xx * @date 2025-10-xx
*/ */
public interface DealerRoundInfoService extends IService<DealerRoundInfo> { public interface DealerRoundInfoService extends IService<DealerRoundInfo> {
DealerRoundInfo getByDealerId(Long dealerBaseInfoId);
int saveRoundInfo(WechatDealerRoundInfoReq dealerRoundInfoReq); int saveRoundInfo(WechatDealerRoundInfoReq dealerRoundInfoReq);
List<DealerBigScreenDynamicRes> dynamicList(Integer roundId); List<DealerBigScreenDynamicRes> dynamicList(Integer roundId);
......
// 文件路径:ruoyi-system/src/main/java/com/ruoyi/dealer/service/IDealerRoundResultService.java
package com.ruoyi.dealer.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.dealer.domain.DealerResult;
/**
* 经销商轮次结果 Service 接口
*/
public interface IDealerResultService extends IService<DealerResult> {
}
...@@ -8,6 +8,7 @@ import com.ruoyi.dealer.domain.dto.DealerBigScreenGroupResultRes; ...@@ -8,6 +8,7 @@ import com.ruoyi.dealer.domain.dto.DealerBigScreenGroupResultRes;
import com.ruoyi.dealer.domain.dto.DealerBigScreenTotalResultRes; import com.ruoyi.dealer.domain.dto.DealerBigScreenTotalResultRes;
import com.ruoyi.dealer.domain.dto.DealerRoundDetailListRes; import com.ruoyi.dealer.domain.dto.DealerRoundDetailListRes;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
/** /**
...@@ -26,5 +27,7 @@ public interface IDealerRoundResultService extends IService<DealerRoundResult> { ...@@ -26,5 +27,7 @@ public interface IDealerRoundResultService extends IService<DealerRoundResult> {
String downloadZip(); String downloadZip();
DealerBigScreenTotalResultRes totalResult(); DealerBigScreenTotalResultRes totalResult();
void downloadExcel(HttpServletResponse response, String group);
// 自定义业务方法声明(可选) // 自定义业务方法声明(可选)
} }
...@@ -41,25 +41,13 @@ public class DealerBaseInfoImpl extends ServiceImpl<DealerBaseInfoMapper, Dealer ...@@ -41,25 +41,13 @@ public class DealerBaseInfoImpl extends ServiceImpl<DealerBaseInfoMapper, Dealer
@Override @Override
public List<DealerBaseInfo> queryList(DealerBaseInfo sysStudent) { public List<DealerBaseInfo> queryList(DealerBaseInfo sysStudent) {
// 注意:mybatis-plus lambda 模式不支持 eclipse 的编译器 // 注意:mybatis-plus lambda 模式不支持 eclipse 的编译器
// LambdaQueryWrapper<SysStudent> queryWrapper = Wrappers.lambdaQuery();
// queryWrapper.eq(SysStudent::getStudentName, sysStudent.getStudentName());
QueryWrapper<DealerBaseInfo> queryWrapper = Wrappers.query(); QueryWrapper<DealerBaseInfo> queryWrapper = Wrappers.query();
// if (StringUtils.isNotEmpty(sysStudent.getStudentName())) {
// queryWrapper.eq("student_name", sysStudent.getStudentName());
// }
// if (StringUtils.isNotNull(sysStudent.getStudentAge())) {
// queryWrapper.eq("student_age", sysStudent.getStudentAge());
// }
// if (StringUtils.isNotEmpty(sysStudent.getStudentHobby())) {
// queryWrapper.eq("student_hobby", sysStudent.getStudentHobby());
// }
return this.list(queryWrapper); return this.list(queryWrapper);
} }
@Override @Override
public WechatDealerRoundInfoRes getDealerRoundInfoByDealerId(Long dealerId) { public WechatDealerRoundInfoRes getDealerRoundInfoByDealerId(Long dealerId) {
// String config = configService.selectConfigByKeyFromDb(Constants.DEALER_ROUND_OVER);
String roundConfig = configService.selectConfigByKeyFromDb(Constants.DEALER_ROUND); String roundConfig = configService.selectConfigByKeyFromDb(Constants.DEALER_ROUND);
Integer round = Integer.parseInt(roundConfig); Integer round = Integer.parseInt(roundConfig);
......
// 文件路径:ruoyi-system/src/main/java/com/ruoyi/dealer/service/impl/DealerRoundResultServiceImpl.java
package com.ruoyi.dealer.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.dealer.domain.DealerResult;
import com.ruoyi.dealer.mapper.DealerResultMapper;
import com.ruoyi.dealer.service.IDealerResultService;
import org.springframework.stereotype.Service;
/**
* 经销商轮次结果 Service 实现类
*/
@Service
public class DealerResultServiceImpl extends ServiceImpl<DealerResultMapper, DealerResult> implements IDealerResultService {
}
...@@ -8,6 +8,7 @@ import com.ruoyi.common.constant.Constants; ...@@ -8,6 +8,7 @@ import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.dealer.domain.DealerBaseInfo; import com.ruoyi.dealer.domain.DealerBaseInfo;
import com.ruoyi.dealer.domain.DealerResult;
import com.ruoyi.dealer.domain.DealerRoundResult; import com.ruoyi.dealer.domain.DealerRoundResult;
import com.ruoyi.dealer.domain.dto.DealerBigScreenDynamicRes; import com.ruoyi.dealer.domain.dto.DealerBigScreenDynamicRes;
import com.ruoyi.dealer.domain.dto.DealerRoundInfo; import com.ruoyi.dealer.domain.dto.DealerRoundInfo;
...@@ -16,6 +17,7 @@ import com.ruoyi.dealer.domain.dto.WechatDealerRoundInfoReq; ...@@ -16,6 +17,7 @@ import com.ruoyi.dealer.domain.dto.WechatDealerRoundInfoReq;
import com.ruoyi.dealer.mapper.DealerRoundInfoMapper; import com.ruoyi.dealer.mapper.DealerRoundInfoMapper;
import com.ruoyi.dealer.service.DealerRoundInfoService; import com.ruoyi.dealer.service.DealerRoundInfoService;
import com.ruoyi.dealer.service.IDealerBaseInfoService; import com.ruoyi.dealer.service.IDealerBaseInfoService;
import com.ruoyi.dealer.service.IDealerResultService;
import com.ruoyi.dealer.service.IDealerRoundResultService; import com.ruoyi.dealer.service.IDealerRoundResultService;
import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;
...@@ -25,6 +27,7 @@ import org.springframework.stereotype.Service; ...@@ -25,6 +27,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -44,11 +47,9 @@ public class DealerRoundInfoServiceImpl extends ServiceImpl<DealerRoundInfoMappe ...@@ -44,11 +47,9 @@ public class DealerRoundInfoServiceImpl extends ServiceImpl<DealerRoundInfoMappe
@Autowired @Autowired
private IDealerBaseInfoService dealerBaseInfoService; private IDealerBaseInfoService dealerBaseInfoService;
@Override @Autowired
public DealerRoundInfo getByDealerId(Long dealerBaseInfoId) { private IDealerResultService resultService;
//
return null;
}
@Override @Override
public int saveRoundInfo(WechatDealerRoundInfoReq dealerRoundInfoReq) { public int saveRoundInfo(WechatDealerRoundInfoReq dealerRoundInfoReq) {
...@@ -96,8 +97,8 @@ public class DealerRoundInfoServiceImpl extends ServiceImpl<DealerRoundInfoMappe ...@@ -96,8 +97,8 @@ public class DealerRoundInfoServiceImpl extends ServiceImpl<DealerRoundInfoMappe
// 手机号传输 是脱敏手机号 // 手机号传输 是脱敏手机号
resultInfo.setPhone(dealerRoundInfoReq.getPhone()); resultInfo.setPhone(dealerRoundInfoReq.getPhone());
resultInfo.setRoundTime(dealerRoundInfoReq.getRoundTime()); resultInfo.setRoundTime(dealerRoundInfoReq.getRoundTime());
resultInfo.setPaymentTtl(dealerRoundInfoReq.getPaymentTtlNew());
resultInfo.setPaymentTtlPre(dealerRoundInfoReq.getPaymentTtl()); resultInfo.setPaymentTtlPre(dealerRoundInfoReq.getPaymentTtl());
resultInfo.setPaymentTtl(dealerRoundInfoReq.getPaymentTtlNew());
resultInfo.setGoalTtlAct(dealerRoundInfoReq.getGoalTtlAct()); resultInfo.setGoalTtlAct(dealerRoundInfoReq.getGoalTtlAct());
resultInfo.setDealerCategory(dealerRoundInfoReq.getDealerCategory()); resultInfo.setDealerCategory(dealerRoundInfoReq.getDealerCategory());
...@@ -156,6 +157,7 @@ public class DealerRoundInfoServiceImpl extends ServiceImpl<DealerRoundInfoMappe ...@@ -156,6 +157,7 @@ public class DealerRoundInfoServiceImpl extends ServiceImpl<DealerRoundInfoMappe
res.setPaymentPercentage(getPercentage(info.getPaymentTtlNew(), info.getGoalTtlAct(),2) + "%"); res.setPaymentPercentage(getPercentage(info.getPaymentTtlNew(), info.getGoalTtlAct(),2) + "%");
res.setRoundId(info.getRoundId()); res.setRoundId(info.getRoundId());
res.setRepetition(info.getRepetition());
return res; return res;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
...@@ -175,6 +177,25 @@ public class DealerRoundInfoServiceImpl extends ServiceImpl<DealerRoundInfoMappe ...@@ -175,6 +177,25 @@ public class DealerRoundInfoServiceImpl extends ServiceImpl<DealerRoundInfoMappe
List<SysConfig> list = new ArrayList<>(); List<SysConfig> list = new ArrayList<>();
list.add(sysConfigRound); list.add(sysConfigRound);
list.add(sysConfigRoundOver); list.add(sysConfigRoundOver);
// 第1轮结束的时候,更新的下汇总的结果表
if (turnRoundInfoReq.getRoundTime() == 1 && turnRoundInfoReq.getRoundOver()) {
// 查询结果数据
// List<DealerRoundResult> roundResults = roundResultService.groupRoundList();
List<DealerRoundResult> roundResults = new ArrayList<>();
Collection<DealerResult> resultList = roundResults.stream().map(result -> {
DealerResult item = new DealerResult();
item.setResultId(result.getResultId());
item.setRoundTime(result.getRoundTime());
item.setPaymentTtl(result.getPaymentTtl());
item.setGoalTtlAct(result.getGoalTtlAct());
item.setPaymentPercentage(result.getPaymentPercentage());
item.setSalesRegionGroupName(result.getSalesRegionGroupName());
return item;
}).collect(Collectors.toList());
resultService.saveOrUpdateBatch(resultList);
}
return list; return list;
} }
......
...@@ -9,18 +9,23 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -9,18 +9,23 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.dealer.domain.DealerBaseInfo; import com.ruoyi.dealer.domain.DealerBaseInfo;
import com.ruoyi.dealer.domain.DealerResult;
import com.ruoyi.dealer.domain.DealerRoundResult; import com.ruoyi.dealer.domain.DealerRoundResult;
import com.ruoyi.dealer.domain.dto.*; import com.ruoyi.dealer.domain.dto.*;
import com.ruoyi.dealer.mapper.DealerRoundResultMapper; import com.ruoyi.dealer.mapper.DealerRoundResultMapper;
import com.ruoyi.dealer.service.IDealerBaseInfoService; import com.ruoyi.dealer.service.IDealerBaseInfoService;
import com.ruoyi.dealer.service.IDealerResultService;
import com.ruoyi.dealer.service.IDealerRoundResultService; import com.ruoyi.dealer.service.IDealerRoundResultService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.InputStream; import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -31,12 +36,15 @@ import java.util.stream.Collectors; ...@@ -31,12 +36,15 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultMapper, DealerRoundResult> implements IDealerRoundResultService { public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultMapper, DealerRoundResult> implements IDealerRoundResultService {
@Autowired @Autowired
private IDealerBaseInfoService dealerBaseInfoService; private IDealerBaseInfoService dealerBaseInfoService;
@Autowired
private IDealerResultService resultService;
/** /**
* 大屏 个人分组查询 * 大屏 个人分组查询
* 大屏个人分组接口--右侧 鲲鹏组 青龙组 麒麟组 * 大屏个人分组接口--右侧 鲲鹏组 青龙组 麒麟组
*
* @param CategoryName * @param CategoryName
* @return * @return
*/ */
...@@ -61,7 +69,7 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM ...@@ -61,7 +69,7 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM
res.setGoalTtlAct(item.getGoalTtlAct()); res.setGoalTtlAct(item.getGoalTtlAct());
res.setPaymentTtl(item.getPaymentTtl()); res.setPaymentTtl(item.getPaymentTtl());
res.setPaymentPercentage(getPercentage(item.getPaymentTtl(), item.getGoalTtlAct(), 2)+"%"); res.setPaymentPercentage(getPercentage(item.getPaymentTtl(), item.getGoalTtlAct(), 2) + "%");
list.add(res); list.add(res);
}); });
...@@ -86,6 +94,15 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM ...@@ -86,6 +94,15 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM
return list; return list;
} }
/**
*
* 按照轮次查询轮次结果
* @param roundTime
* @param phone
* @param dealerName
* @return
*/
@Override @Override
public List<DealerRoundDetailListRes> groupRoundList(Integer roundTime, String phone, String dealerName) { public List<DealerRoundDetailListRes> groupRoundList(Integer roundTime, String phone, String dealerName) {
List<DealerRoundResult> dealerBigScreenGroupResultRes = this.list(new LambdaQueryWrapper<DealerRoundResult>() List<DealerRoundResult> dealerBigScreenGroupResultRes = this.list(new LambdaQueryWrapper<DealerRoundResult>()
...@@ -121,13 +138,13 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM ...@@ -121,13 +138,13 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM
List<DealerRoundResult> round1Results = this.list(new LambdaQueryWrapper<DealerRoundResult>() List<DealerRoundResult> round1Results = this.list(new LambdaQueryWrapper<DealerRoundResult>()
.eq(DealerRoundResult::getRoundTime, 1) .eq(DealerRoundResult::getRoundTime, 1)
); );
if(round1Results.size()>0){ if (round1Results.size() > 0) {
throw new RuntimeException("轮次数据已存在"); throw new RuntimeException("轮次数据已存在");
} }
// 获取所有经销商信息 // 获取所有经销商信息
List<DealerBaseInfo> resultList = dealerBaseInfoService.list(); List<DealerBaseInfo> resultList = dealerBaseInfoService.list();
// 复制所有数据 // 复制所有数据
List<DealerRoundResult> roundResults = new ArrayList<>(); List<DealerRoundResult> roundResults = new ArrayList<>();
// 先清空id // 先清空id
resultList.forEach(baseInfo -> { resultList.forEach(baseInfo -> {
DealerRoundResult item = new DealerRoundResult(); DealerRoundResult item = new DealerRoundResult();
...@@ -166,9 +183,9 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM ...@@ -166,9 +183,9 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM
List<DealerRoundResult> groupData = entry.getValue(); List<DealerRoundResult> groupData = entry.getValue();
ExcelUtil<DealerRoundResult> util = new ExcelUtil<>(DealerRoundResult.class); ExcelUtil<DealerRoundResult> util = new ExcelUtil<>(DealerRoundResult.class);
String excelFileName = "分组结果_" + groupName ; String excelFileName = "分组结果_" + groupName;
// 创建临时文件 // 创建临时文件
File excelFile = FileUtil.createTempFile(excelFileName,".xlsx",true); File excelFile = FileUtil.createTempFile(excelFileName, ".xlsx", true);
util.init(groupData, "分组结果", groupName, Excel.Type.EXPORT); util.init(groupData, "分组结果", groupName, Excel.Type.EXPORT);
// 导出到excel文件 // 导出到excel文件
util.exportExcelFile(excelFile); util.exportExcelFile(excelFile);
...@@ -178,7 +195,7 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM ...@@ -178,7 +195,7 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM
// 生成 ZIP 文件 // 生成 ZIP 文件
File zipFile = FileUtil.createTempFile(); File zipFile = FileUtil.createTempFile();
InputStream[] inputStreams =new InputStream[excelFilePaths.size()]; InputStream[] inputStreams = new InputStream[excelFilePaths.size()];
for (int i = 0; i < excelFilePaths.size(); i++) { for (int i = 0; i < excelFilePaths.size(); i++) {
inputStreams[i] = FileUtil.getInputStream(excelFilePaths.get(i)); inputStreams[i] = FileUtil.getInputStream(excelFilePaths.get(i));
} }
...@@ -190,19 +207,71 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM ...@@ -190,19 +207,71 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM
@Override @Override
public DealerBigScreenTotalResultRes totalResult() { public DealerBigScreenTotalResultRes totalResult() {
List<DealerBigScreenTotalResultRes> roundResults = this.baseMapper.getTotalResult(); DealerBigScreenTotalResultRes res = null;
DealerBigScreenTotalResultRes res = roundResults.get(0); DealerResult total = resultService.getOne(new LambdaQueryWrapper<DealerResult>()
res.setPaymentPercentage(getPercentage(res.getPaymentTtl(), res.getGoalTtlAct(), 2) + "%"); .eq(DealerResult::getSalesRegionGroupName, "total")
);
if (ObjectUtil.isNotEmpty(total)) {
res = new DealerBigScreenTotalResultRes();
res.setPaymentTtl(total.getPaymentTtl());
res.setGoalTtlAct(total.getGoalTtlAct());
res.setPaymentPercentage(new BigDecimal(res.getPaymentTtl())
.multiply(new BigDecimal(100))
.divide(new BigDecimal(res.getGoalTtlAct()), 2, RoundingMode.HALF_UP)
.toPlainString() + "%");
} else {
List<DealerBigScreenTotalResultRes> roundResults = this.baseMapper.getTotalResult();
res = roundResults.get(0);
res.setPaymentPercentage(new BigDecimal(res.getPaymentTtl())
.multiply(new BigDecimal(100))
.divide(new BigDecimal(res.getGoalTtlAct()), 2, RoundingMode.HALF_UP)
.toPlainString() + "%");
}
return res; return res;
} }
private String getPercentage(Integer paymentTtl, Integer goalTtlAct,Integer scale) { @Override
if(null == paymentTtl || null == goalTtlAct){ public void downloadExcel(HttpServletResponse response, String group) {
if (group.equals("1")) {
// 从数据库查询数据
List<DealerRoundResult> roundResults = this.list(new LambdaQueryWrapper<DealerRoundResult>()
.eq(DealerRoundResult::getRoundTime, 1)
);
// 导出到excel文件
ExcelUtil<DealerRoundResult> util = new ExcelUtil<>(DealerRoundResult.class);
String encodedFileName = null;
try {
encodedFileName = URLEncoder.encode("个人分组明细.exls", "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\"");
util.exportExcel(response, roundResults, "个人分组明细");
} else {
List<DealerResult> roundResults = resultService.list();
// 导出到excel文件
ExcelUtil<DealerResult> util = new ExcelUtil<>(DealerResult.class);
String encodedFileName = null;
try {
encodedFileName = URLEncoder.encode("团队汇总.exls", "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\"");
util.exportExcel(response, roundResults, "团队汇总");
}
}
private String getPercentage(Integer paymentTtl, Integer goalTtlAct, Integer scale) {
if (null == paymentTtl || null == goalTtlAct) {
return "0"; return "0";
} }
return new BigDecimal(paymentTtl) return new BigDecimal(paymentTtl)
.multiply(new BigDecimal(100)) .multiply(new BigDecimal(100))
.divide(new BigDecimal(goalTtlAct),scale, RoundingMode.HALF_UP) .divide(new BigDecimal(goalTtlAct), scale, RoundingMode.HALF_UP)
.stripTrailingZeros() .stripTrailingZeros()
.toPlainString(); .toPlainString();
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论