|
@@ -7,25 +7,32 @@ import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.szwl.exception.MyException;
|
|
|
import com.szwl.feign.SzwlFeign;
|
|
|
+import com.szwl.mapper.TCoinOrderMapper;
|
|
|
import com.szwl.mapper.TOrderMapper;
|
|
|
import com.szwl.model.bean.ChartBean;
|
|
|
import com.szwl.model.bean.ChartColumn;
|
|
|
import com.szwl.model.bean.OrderDaoChuDTO;
|
|
|
import com.szwl.model.bo.ChartType;
|
|
|
import com.szwl.model.bo.R;
|
|
|
+import com.szwl.model.bo.ResponseModel;
|
|
|
import com.szwl.model.dto.OrderDto;
|
|
|
import com.szwl.model.entity.*;
|
|
|
import com.szwl.model.excel.NewOrderTarget;
|
|
|
import com.szwl.model.excel.OrderTarget;
|
|
|
+import com.szwl.model.excel.StatisticsAdminTarget;
|
|
|
+import com.szwl.model.excel.StatisticsClientIdTarget;
|
|
|
import com.szwl.model.query.OrderDaoChuParam;
|
|
|
import com.szwl.model.query.OrderStatisticsDTO;
|
|
|
import com.szwl.model.query.StatisticsParam;
|
|
|
import com.szwl.model.utils.DateUtils;
|
|
|
+import com.szwl.service.OrderStatisticsMonthService;
|
|
|
+import com.szwl.service.OrderStatisticsYearService;
|
|
|
import com.szwl.service.RefundSendRecordService;
|
|
|
import com.szwl.service.TOrderService;
|
|
|
import com.szwl.util.YunPianSms;
|
|
@@ -60,6 +67,15 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
TOrderMapper tOrderMapper;
|
|
|
|
|
|
@Autowired
|
|
|
+ private TCoinOrderMapper tCoinOrderMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ OrderStatisticsMonthService orderStatisticsMonthService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ OrderStatisticsYearService orderStatisticsYearService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
SzwlFeign szwlFeign;
|
|
|
|
|
|
@Autowired
|
|
@@ -586,6 +602,883 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
executorService.shutdown();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Page<OrderDaoChuDTO> summaryStatisticsMonth(StatisticsParam param) {
|
|
|
+ Page<OrderDaoChuDTO> result = new Page<>(param.getCurrent(), param.getSize(), true);
|
|
|
+ // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
|
|
|
+ List<Long> adminIds = new ArrayList<>();
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ // 查询下级账户
|
|
|
+ adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
|
|
|
+ if (adminIds.isEmpty()) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ param.setAdminIds(adminIds);
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<OrderStatisticsMonth> query = Wrappers.lambdaQuery();
|
|
|
+ query.eq(OrderStatisticsMonth::getStatisticsDate, param.getStartDate());
|
|
|
+ query.eq(OrderStatisticsMonth::getType, param.getPacketType());
|
|
|
+ if (StringUtils.isNotEmpty(param.getCompanyType())) {
|
|
|
+ query.eq(OrderStatisticsMonth::getCompanyType, param.getCompanyType());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getClientId())) {
|
|
|
+ // 如果type等于1,就查询设备所属商家是否是旗下管理的
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
|
|
|
+ if (equipment == null) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ if (adminIds.contains(equipment.getAdminId())) {
|
|
|
+ query.eq(OrderStatisticsMonth::getAdminId, equipment.getAdminId());
|
|
|
+ adminIds.clear();
|
|
|
+ } else {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ query.eq(OrderStatisticsMonth::getClientId, param.getClientId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getUsername())) {
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
|
|
|
+ if (admin == null) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ if (adminIds.contains(admin.getId())) {
|
|
|
+ query.eq(OrderStatisticsMonth::getAdminId, admin.getId());
|
|
|
+ adminIds.clear();
|
|
|
+ } else {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ } else if (param.getType() == 0) {
|
|
|
+ query.eq(OrderStatisticsMonth::getAdminId, admin.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (param.getAdminIds()!= null && !param.getAdminIds().isEmpty()) {
|
|
|
+ query.in(OrderStatisticsMonth::getAdminId, param.getAdminIds());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getIfForeign())) {
|
|
|
+ query.eq(OrderStatisticsMonth::getIfForeign, param.getIfForeign());
|
|
|
+ }
|
|
|
+ query.orderByDesc(OrderStatisticsMonth::getSalePrice);
|
|
|
+ Page<OrderStatisticsMonth> page = new Page<>(param.getCurrent(), param.getSize(), true);
|
|
|
+ IPage<OrderStatisticsMonth> iPage = orderStatisticsMonthService.page(page, query);
|
|
|
+ List<OrderStatisticsMonth> list = iPage.getRecords();
|
|
|
+ ArrayList<OrderDaoChuDTO> orderDaoChuDTO = new ArrayList<>();
|
|
|
+ for (OrderStatisticsMonth orderStatistics : list) {
|
|
|
+ OrderDaoChuDTO orderDaoChu = new OrderDaoChuDTO();
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatistics.getAdminId())));
|
|
|
+ if (StringUtils.isNotEmpty(param.getPacketType()) && param.getPacketType().equals("0")) {
|
|
|
+ // 按商户分组
|
|
|
+ String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(String.valueOf(orderStatistics.getAdminId())));
|
|
|
+ orderDaoChu.setEquipmentTotal(equipmentTotal);
|
|
|
+ } else {
|
|
|
+ // 按设备分组
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(String.valueOf(orderStatistics.getEquipmentId())));
|
|
|
+ orderDaoChu.setAddress(equipment.getFullName());
|
|
|
+ orderDaoChu.setClientId(equipment.getClientId());
|
|
|
+ orderDaoChu.setEquipmentType(equipment.getEquimentType());
|
|
|
+ }
|
|
|
+ orderDaoChu.setUsername(admin.getUsername());
|
|
|
+ orderDaoChu.setName(admin.getName());
|
|
|
+ orderDaoChu.setPhone(admin.getPhone());
|
|
|
+ orderDaoChu.setAdminId(orderStatistics.getAdminId());
|
|
|
+ orderDaoChu.setPriceTotal(orderStatistics.getSalePrice());
|
|
|
+ orderDaoChuDTO.add(orderDaoChu);
|
|
|
+ }
|
|
|
+ result.setRecords(orderDaoChuDTO);
|
|
|
+ result.setTotal(iPage.getTotal());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<OrderDaoChuDTO> summaryStatisticsYear(StatisticsParam param) {
|
|
|
+ Page<OrderDaoChuDTO> result = new Page<>(param.getCurrent(), param.getSize(), true);
|
|
|
+ // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
|
|
|
+ List<Long> adminIds = new ArrayList<>();
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ // 查询下级账户
|
|
|
+ adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
|
|
|
+ if (adminIds.isEmpty()) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ param.setAdminIds(adminIds);
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<OrderStatisticsYear> query = Wrappers.lambdaQuery();
|
|
|
+ query.eq(OrderStatisticsYear::getStatisticsDate, param.getStartDate());
|
|
|
+ query.eq(OrderStatisticsYear::getType, param.getPacketType());
|
|
|
+ if (StringUtils.isNotEmpty(param.getCompanyType())) {
|
|
|
+ query.eq(OrderStatisticsYear::getCompanyType, param.getCompanyType());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getClientId())) {
|
|
|
+ // 如果type等于1,就查询设备所属商家是否是旗下管理的
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
|
|
|
+ if (equipment == null) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ if (adminIds.contains(equipment.getAdminId())) {
|
|
|
+ query.eq(OrderStatisticsYear::getAdminId, equipment.getAdminId());
|
|
|
+ adminIds.clear();
|
|
|
+ } else {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ query.eq(OrderStatisticsYear::getClientId, param.getClientId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getUsername())) {
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
|
|
|
+ if (admin == null) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ if (adminIds.contains(admin.getId())) {
|
|
|
+ query.eq(OrderStatisticsYear::getAdminId, admin.getId());
|
|
|
+ adminIds.clear();
|
|
|
+ } else {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ } else if (param.getType() == 0) {
|
|
|
+ query.eq(OrderStatisticsYear::getAdminId, admin.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (param.getAdminIds()!= null && !param.getAdminIds().isEmpty()) {
|
|
|
+ query.in(OrderStatisticsYear::getAdminId, param.getAdminIds());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getIfForeign())) {
|
|
|
+ query.eq(OrderStatisticsYear::getIfForeign, param.getIfForeign());
|
|
|
+ }
|
|
|
+ query.orderByDesc(OrderStatisticsYear::getSalePrice);
|
|
|
+ Page<OrderStatisticsYear> page = new Page<>(param.getCurrent(), param.getSize(), true);
|
|
|
+ IPage<OrderStatisticsYear> iPage = orderStatisticsYearService.page(page, query);
|
|
|
+ List<OrderStatisticsYear> list = iPage.getRecords();
|
|
|
+ ArrayList<OrderDaoChuDTO> orderDaoChuDTO = new ArrayList<>();
|
|
|
+ for (OrderStatisticsYear orderStatisticsYear : list) {
|
|
|
+ OrderDaoChuDTO orderDaoChu = new OrderDaoChuDTO();
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatisticsYear.getAdminId())));
|
|
|
+ if (StringUtils.isNotEmpty(param.getPacketType()) && param.getPacketType().equals("0")) {
|
|
|
+ // 按商户分组
|
|
|
+ String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(String.valueOf(orderStatisticsYear.getAdminId())));
|
|
|
+ orderDaoChu.setEquipmentTotal(equipmentTotal);
|
|
|
+ } else {
|
|
|
+ // 按设备分组
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(String.valueOf(orderStatisticsYear.getEquipmentId())));
|
|
|
+ orderDaoChu.setAddress(equipment.getFullName());
|
|
|
+ orderDaoChu.setClientId(equipment.getClientId());
|
|
|
+ orderDaoChu.setEquipmentType(equipment.getEquimentType());
|
|
|
+ }
|
|
|
+ orderDaoChu.setUsername(admin.getUsername());
|
|
|
+ orderDaoChu.setName(admin.getName());
|
|
|
+ orderDaoChu.setPhone(admin.getPhone());
|
|
|
+ orderDaoChu.setAdminId(orderStatisticsYear.getAdminId());
|
|
|
+ orderDaoChu.setPriceTotal(orderStatisticsYear.getSalePrice());
|
|
|
+ orderDaoChuDTO.add(orderDaoChu);
|
|
|
+ }
|
|
|
+ result.setRecords(orderDaoChuDTO);
|
|
|
+ result.setTotal(iPage.getTotal());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<OrderDaoChuDTO> summaryStatistics(StatisticsParam param) {
|
|
|
+ Page<OrderDaoChuDTO> result = new Page<>(param.getCurrent(), param.getSize(), true);
|
|
|
+ // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
|
|
|
+ List<Long> adminIds = new ArrayList<>();
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ // 查询下级账户
|
|
|
+ adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
|
|
|
+ if (adminIds.isEmpty()) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ param.setAdminIds(adminIds);
|
|
|
+ }
|
|
|
+ List<OrderDaoChuDTO> orderDaoChuDTOList;
|
|
|
+ if (StringUtils.isNotEmpty(param.getStartDate()) && StringUtils.isNotEmpty(param.getEndDate())) {
|
|
|
+ if (param.getIfForeign().equals("0")) {
|
|
|
+ // 查国内,即线上订单
|
|
|
+ LambdaQueryWrapper<TOrder> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ if (StringUtils.isNotEmpty(param.getClientId())) {
|
|
|
+ // 如果type等于1,就查询设备所属商家是否是旗下管理的
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
|
|
|
+ if (equipment == null) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ if (adminIds.contains(equipment.getAdminId())) {
|
|
|
+ queryWrapper.eq(TOrder::getAdminId, equipment.getAdminId());
|
|
|
+ adminIds.clear();
|
|
|
+ } else {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ queryWrapper.eq(TOrder::getClientId, param.getClientId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
|
|
|
+ if (StringUtils.isNotEmpty(param.getUsername())) {
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
|
|
|
+ if (admin == null) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ if (param.getAdminIds().contains(admin.getId())) {
|
|
|
+ queryWrapper.eq(TOrder::getAdminId, admin.getId());
|
|
|
+ param.setAdminId(String.valueOf(admin.getId()));
|
|
|
+ param.setAdminIds(null);
|
|
|
+ } else {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ } else if (param.getType() == 0) {
|
|
|
+ queryWrapper.eq(TOrder::getAdminId, admin.getId());
|
|
|
+ param.setAdminId(String.valueOf(admin.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:adminList
|
|
|
+ if (param.getAdminIds() != null && !param.getAdminIds().isEmpty()) {
|
|
|
+ queryWrapper.in(TOrder::getAdminId, param.getAdminIds());
|
|
|
+ }
|
|
|
+ // 条件:companyType
|
|
|
+ if (StringUtils.isNotBlank(param.getCompanyType())) {
|
|
|
+ if ("0".equals(param.getCompanyType())) {
|
|
|
+ queryWrapper.and(i -> i.isNull(TOrder::getCompanyType).or().eq(TOrder::getCompanyType, "0"));
|
|
|
+ } else if ("1".equals(param.getCompanyType())) {
|
|
|
+ queryWrapper.eq(TOrder::getCompanyType, "1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:时间范围
|
|
|
+ queryWrapper.between(TOrder::getCreateDate, param.getStartDate(), param.getEndDate());
|
|
|
+ // 条件:支付状态
|
|
|
+ queryWrapper.eq(TOrder::getStatus, 1);
|
|
|
+ // 条件:type == 2 or type == 1
|
|
|
+ if ("2".equals(param.getPacketType())) {
|
|
|
+ queryWrapper.groupBy(TOrder::getAdminId);
|
|
|
+ } else if ("1".equals(param.getPacketType())) {
|
|
|
+ queryWrapper.groupBy(TOrder::getClientId);
|
|
|
+ }
|
|
|
+ Page<TOrder> tOrderPage = new Page<>(param.getCurrent(), param.getSize(), true);
|
|
|
+ IPage<TOrder> iPage = tOrderMapper.selectPage(tOrderPage, queryWrapper);
|
|
|
+ result.setTotal(iPage.getTotal());
|
|
|
+ param.setCurrent(param.getCurrent() - 1);
|
|
|
+ orderDaoChuDTOList = tOrderMapper.summaryStatistics(param);
|
|
|
+ } else {
|
|
|
+ // 查国外,即线下订单
|
|
|
+ LambdaQueryWrapper<TCoinOrder> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ if (StringUtils.isNotEmpty(param.getClientId())) {
|
|
|
+ // 如果type等于1,就查询设备所属商家是否是旗下管理的
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
|
|
|
+ if (equipment == null) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ if (adminIds.contains(equipment.getAdminId())) {
|
|
|
+ queryWrapper.eq(TCoinOrder::getAdminId, equipment.getAdminId());
|
|
|
+ adminIds.clear();
|
|
|
+ } else {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ queryWrapper.eq(TCoinOrder::getClientId, param.getClientId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
|
|
|
+ if (StringUtils.isNotEmpty(param.getUsername())) {
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
|
|
|
+ if (admin == null) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ if (param.getAdminIds().contains(admin.getId())) {
|
|
|
+ queryWrapper.eq(TCoinOrder::getAdminId, admin.getId());
|
|
|
+ param.setAdminId(String.valueOf(admin.getId()));
|
|
|
+ param.setAdminIds(null);
|
|
|
+ } else {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ } else if (param.getType() == 0) {
|
|
|
+ queryWrapper.eq(TCoinOrder::getAdminId, admin.getId());
|
|
|
+ param.setAdminId(String.valueOf(admin.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:adminList
|
|
|
+ if (param.getAdminIds() != null && !param.getAdminIds().isEmpty()) {
|
|
|
+ queryWrapper.in(TCoinOrder::getAdminId, param.getAdminIds());
|
|
|
+ }
|
|
|
+ // 条件:companyType
|
|
|
+ if (StringUtils.isNotBlank(param.getCompanyType())) {
|
|
|
+ if ("0".equals(param.getCompanyType())) {
|
|
|
+ queryWrapper.and(i -> i.isNull(TCoinOrder::getCompanyType).or().eq(TCoinOrder::getCompanyType, "0"));
|
|
|
+ } else if ("1".equals(param.getCompanyType())) {
|
|
|
+ queryWrapper.eq(TCoinOrder::getCompanyType, "1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:时间范围
|
|
|
+ queryWrapper.between(TCoinOrder::getCreateDate, param.getStartDate(), param.getEndDate());
|
|
|
+ // 条件:支付状态
|
|
|
+ queryWrapper.eq(TCoinOrder::getStatus, 1);
|
|
|
+ // 条件:type == 2 or type == 1
|
|
|
+ if ("2".equals(param.getPacketType())) {
|
|
|
+ queryWrapper.groupBy(TCoinOrder::getAdminId);
|
|
|
+ } else if ("1".equals(param.getPacketType())) {
|
|
|
+ queryWrapper.groupBy(TCoinOrder::getClientId);
|
|
|
+ }
|
|
|
+ Page<TCoinOrder> tOrderPage = new Page<>(param.getCurrent(), param.getSize(), true);
|
|
|
+ IPage<TCoinOrder> iPage = tCoinOrderMapper.selectPage(tOrderPage, queryWrapper);
|
|
|
+ result.setTotal(iPage.getTotal());
|
|
|
+ param.setCurrent(param.getCurrent() - 1);
|
|
|
+ orderDaoChuDTOList = tCoinOrderMapper.summaryStatistics(param);
|
|
|
+ }
|
|
|
+ for (OrderDaoChuDTO orderDaoChuDTO : orderDaoChuDTOList) {
|
|
|
+ String adminId1 = orderDaoChuDTO.getAdminId().toString();
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(adminId1));
|
|
|
+ if (admin == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ orderDaoChuDTO.setPhone(admin.getPhone());
|
|
|
+ orderDaoChuDTO.setUsername(admin.getUsername());
|
|
|
+ orderDaoChuDTO.setName(admin.getName());
|
|
|
+ if (!StringUtils.isEmpty(param.getPacketType()) && param.getPacketType().equals("0")) {
|
|
|
+ //商户为单位
|
|
|
+ String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(adminId1));
|
|
|
+ orderDaoChuDTO.setEquipmentTotal(equipmentTotal);
|
|
|
+ } else {
|
|
|
+ //设备为单位
|
|
|
+ ResponseModel<TEquipment> equipmentByClientId = szwlFeign.findEquipmentByClientId(String.valueOf(orderDaoChuDTO.getClientId()));
|
|
|
+ TEquipment equipment = equipmentByClientId.getData();
|
|
|
+ if (equipment != null && equipment.getId() != null) {
|
|
|
+ if (StringUtils.isNotEmpty(equipment.getFullName())) {
|
|
|
+ orderDaoChuDTO.setAddress(equipment.getFullName());
|
|
|
+ }
|
|
|
+ orderDaoChuDTO.setEquipmentType(equipment.getEquimentType());
|
|
|
+ orderDaoChuDTO.setCreateDate(equipment.getCreateDate());
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ result.setRecords(orderDaoChuDTOList);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public <T> void statisticsYearExport(HttpServletResponse response, Class<T> clazz, StatisticsParam param) throws IOException {
|
|
|
+ // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
|
|
|
+ List<Long> adminIds = new ArrayList<>();
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ // 查询下级账户
|
|
|
+ adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
|
|
|
+ if (adminIds.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ param.setAdminIds(adminIds);
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<OrderStatisticsYear> query = Wrappers.lambdaQuery();
|
|
|
+ query.eq(OrderStatisticsYear::getStatisticsDate, param.getStartDate());
|
|
|
+ query.eq(OrderStatisticsYear::getType, param.getPacketType());
|
|
|
+ if (StringUtils.isNotEmpty(param.getCompanyType())) {
|
|
|
+ query.eq(OrderStatisticsYear::getCompanyType, param.getCompanyType());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getClientId())) {
|
|
|
+ // 如果type等于1,就查询设备所属商家是否是旗下管理的
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
|
|
|
+ if (equipment == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (adminIds.contains(equipment.getAdminId())) {
|
|
|
+ query.eq(OrderStatisticsYear::getAdminId, equipment.getAdminId());
|
|
|
+ adminIds.clear();
|
|
|
+ } else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ query.eq(OrderStatisticsYear::getClientId, param.getClientId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
|
|
|
+ if (StringUtils.isNotEmpty(param.getUsername())) {
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
|
|
|
+ if (admin == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ if (adminIds.contains(admin.getId())) {
|
|
|
+ query.eq(OrderStatisticsYear::getAdminId, admin.getId());
|
|
|
+ adminIds.clear();
|
|
|
+ } else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ } else if (param.getType() == 0) {
|
|
|
+ query.eq(OrderStatisticsYear::getAdminId, admin.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (param.getAdminIds()!= null && !param.getAdminIds().isEmpty()) {
|
|
|
+ query.in(OrderStatisticsYear::getAdminId, param.getAdminIds());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getIfForeign())) {
|
|
|
+ query.eq(OrderStatisticsYear::getIfForeign, param.getIfForeign());
|
|
|
+ }
|
|
|
+ query.orderByDesc(OrderStatisticsYear::getSalePrice);
|
|
|
+ // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
|
|
|
+ response.setContentType("application/octet-stream; charset=UTF-8");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+ // 这里URLEncoder.encode可以防止中文乱码
|
|
|
+ String fileName = URLEncoder.encode("订单统计-" + System.currentTimeMillis(), "UTF-8").replaceAll("\\+", "%20");
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
|
|
|
+ // 每页大小
|
|
|
+ int pageNo = param.getCurrent();
|
|
|
+
|
|
|
+ // 使用 EasyExcel 的流式写入模式
|
|
|
+ try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build()) {
|
|
|
+ WriteSheet writeSheet = EasyExcel.writerSheet("数据").build();
|
|
|
+
|
|
|
+ while (true) {
|
|
|
+ // 分页获取数据
|
|
|
+ param.setCurrent(pageNo);
|
|
|
+ Page<OrderStatisticsYear> orderPage = new Page<>(pageNo, param.getSize());
|
|
|
+ Page<OrderStatisticsYear> pageList = orderStatisticsYearService.page(orderPage, query);
|
|
|
+ List<OrderStatisticsYear> dataList = pageList.getRecords();
|
|
|
+ if (dataList.isEmpty()) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 封装数据
|
|
|
+ if (param.getPacketType().equals("0")) {
|
|
|
+ List<StatisticsAdminTarget> adminTargetList = exportStatisticsYearByAdmin(dataList);
|
|
|
+ // 写入数据到 Excel
|
|
|
+ excelWriter.write(adminTargetList, writeSheet);
|
|
|
+ } else {
|
|
|
+ List<StatisticsClientIdTarget> clientIdTargetList = exportStatisticsYearByClientId(dataList);
|
|
|
+ excelWriter.write(clientIdTargetList, writeSheet);
|
|
|
+ }
|
|
|
+ pageNo++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public <T> void statisticsMonthExport(HttpServletResponse response, Class<T> clazz, StatisticsParam param) throws IOException {
|
|
|
+ // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
|
|
|
+ List<Long> adminIds = new ArrayList<>();
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ // 查询下级账户
|
|
|
+ adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
|
|
|
+ if (adminIds.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ param.setAdminIds(adminIds);
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<OrderStatisticsMonth> query = Wrappers.lambdaQuery();
|
|
|
+ query.eq(OrderStatisticsMonth::getStatisticsDate, param.getStartDate());
|
|
|
+ query.eq(OrderStatisticsMonth::getType, param.getPacketType());
|
|
|
+ if (StringUtils.isNotEmpty(param.getCompanyType())) {
|
|
|
+ query.eq(OrderStatisticsMonth::getCompanyType, param.getCompanyType());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getClientId())) {
|
|
|
+ // 如果type等于1,就查询设备所属商家是否是旗下管理的
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
|
|
|
+ if (equipment == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (adminIds.contains(equipment.getAdminId())) {
|
|
|
+ query.eq(OrderStatisticsMonth::getAdminId, equipment.getAdminId());
|
|
|
+ adminIds.clear();
|
|
|
+ } else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ query.eq(OrderStatisticsMonth::getClientId, param.getClientId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
|
|
|
+ if (StringUtils.isNotEmpty(param.getUsername())) {
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
|
|
|
+ if (admin == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ if (adminIds.contains(admin.getId())) {
|
|
|
+ query.eq(OrderStatisticsMonth::getAdminId, admin.getId());
|
|
|
+ adminIds.clear();
|
|
|
+ } else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ } else if (param.getType() == 0) {
|
|
|
+ query.eq(OrderStatisticsMonth::getAdminId, admin.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (param.getAdminIds()!= null && !param.getAdminIds().isEmpty()) {
|
|
|
+ query.in(OrderStatisticsMonth::getAdminId, param.getAdminIds());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getIfForeign())) {
|
|
|
+ query.eq(OrderStatisticsMonth::getIfForeign, param.getIfForeign());
|
|
|
+ }
|
|
|
+ query.orderByDesc(OrderStatisticsMonth::getSalePrice);
|
|
|
+ // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
|
|
|
+ response.setContentType("application/octet-stream; charset=UTF-8");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+ // 这里URLEncoder.encode可以防止中文乱码
|
|
|
+ String fileName = URLEncoder.encode("订单统计-" + System.currentTimeMillis(), "UTF-8").replaceAll("\\+", "%20");
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
|
|
|
+ // 每页大小
|
|
|
+ int pageNo = param.getCurrent();
|
|
|
+
|
|
|
+ // 使用 EasyExcel 的流式写入模式
|
|
|
+ try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build()) {
|
|
|
+ WriteSheet writeSheet = EasyExcel.writerSheet("数据").build();
|
|
|
+
|
|
|
+ while (true) {
|
|
|
+ // 分页获取数据
|
|
|
+ param.setCurrent(pageNo);
|
|
|
+ Page<OrderStatisticsMonth> orderPage = new Page<>(pageNo, param.getSize());
|
|
|
+ Page<OrderStatisticsMonth> pageList = orderStatisticsMonthService.page(orderPage, query);
|
|
|
+ List<OrderStatisticsMonth> dataList = pageList.getRecords();
|
|
|
+ if (dataList.isEmpty()) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 封装数据
|
|
|
+ if (param.getPacketType().equals("0")) {
|
|
|
+ List<StatisticsAdminTarget> adminTargetList = exportStatisticsMonthByAdmin(dataList);
|
|
|
+ // 写入数据到 Excel
|
|
|
+ excelWriter.write(adminTargetList, writeSheet);
|
|
|
+ } else {
|
|
|
+ List<StatisticsClientIdTarget> clientIdTargetList = exportStatisticsMonthByClientId(dataList);
|
|
|
+ excelWriter.write(clientIdTargetList, writeSheet);
|
|
|
+ }
|
|
|
+ pageNo++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public <T> void statisticsDayWeekExport(HttpServletResponse response, Class<T> clazz, StatisticsParam param) throws IOException {
|
|
|
+ response.setContentType("application/octet-stream; charset=UTF-8");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+ // 这里URLEncoder.encode可以防止中文乱码
|
|
|
+ String fileName = URLEncoder.encode("订单统计-" + System.currentTimeMillis(), "UTF-8").replaceAll("\\+", "%20");
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
|
|
|
+
|
|
|
+ // 每页大小
|
|
|
+ int pageNo = param.getCurrent();
|
|
|
+ // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ // 查询下级账户
|
|
|
+ String adminId = param.getAdminId();
|
|
|
+ List<Long> adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(adminId));
|
|
|
+ if (adminIds.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ param.setAdminIds(adminIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用 EasyExcel 的流式写入模式
|
|
|
+ try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build()) {
|
|
|
+ WriteSheet writeSheet = EasyExcel.writerSheet("数据").build();
|
|
|
+
|
|
|
+ while (true) {
|
|
|
+ // 分页获取数据
|
|
|
+ List<OrderDaoChuDTO> dataList = getPageData(pageNo, param);
|
|
|
+ if (dataList.isEmpty()) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 封装数据
|
|
|
+ if (param.getPacketType().equals("0")) {
|
|
|
+ List<StatisticsAdminTarget> adminTargetList = exportStatisticsByAdmin(dataList);
|
|
|
+ // 写入数据到 Excel
|
|
|
+ excelWriter.write(adminTargetList, writeSheet);
|
|
|
+ } else {
|
|
|
+ List<StatisticsClientIdTarget> clientIdTargetList = exportStatisticsByClientId(dataList);
|
|
|
+ excelWriter.write(clientIdTargetList, writeSheet);
|
|
|
+ }
|
|
|
+ pageNo++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<StatisticsClientIdTarget> exportStatisticsByClientId(List<OrderDaoChuDTO> dataList) {
|
|
|
+ List<StatisticsClientIdTarget> clientIdTargetList = new ArrayList<>();
|
|
|
+ for (OrderDaoChuDTO orderDaoChuDTO : dataList) {
|
|
|
+ StatisticsClientIdTarget target = new StatisticsClientIdTarget();
|
|
|
+ target.setUsername(orderDaoChuDTO.getUsername());
|
|
|
+ target.setName(orderDaoChuDTO.getName());
|
|
|
+ target.setPhone(orderDaoChuDTO.getPhone());
|
|
|
+ target.setAddress(orderDaoChuDTO.getAddress());
|
|
|
+ target.setClientId(orderDaoChuDTO.getClientId());
|
|
|
+ target.setEquipmentType(orderDaoChuDTO.getEquipmentType());
|
|
|
+ target.setPriceTotal(orderDaoChuDTO.getPriceTotal());
|
|
|
+ clientIdTargetList.add(target);
|
|
|
+ }
|
|
|
+ return clientIdTargetList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 封装
|
|
|
+ * @param dataList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<StatisticsAdminTarget> exportStatisticsByAdmin(List<OrderDaoChuDTO> dataList) {
|
|
|
+ List<StatisticsAdminTarget> adminTargetList = new ArrayList<>();
|
|
|
+ for (OrderDaoChuDTO orderDaoChuDTO : dataList) {
|
|
|
+ StatisticsAdminTarget target = new StatisticsAdminTarget();
|
|
|
+ target.setUsername(orderDaoChuDTO.getUsername());
|
|
|
+ target.setName(orderDaoChuDTO.getName());
|
|
|
+ target.setPhone(orderDaoChuDTO.getPhone());
|
|
|
+ target.setEquipmentTotal(orderDaoChuDTO.getEquipmentTotal());
|
|
|
+ target.setPriceTotal(orderDaoChuDTO.getPriceTotal());
|
|
|
+ adminTargetList.add(target);
|
|
|
+ }
|
|
|
+ return adminTargetList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页查询
|
|
|
+ * @param pageNo
|
|
|
+ * @param param
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<OrderDaoChuDTO> getPageData(int pageNo, StatisticsParam param) {
|
|
|
+ List<OrderDaoChuDTO> orderDaoChuDTOList = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotEmpty(param.getStartDate()) && StringUtils.isNotEmpty(param.getEndDate())) {
|
|
|
+ if (param.getIfForeign().equals("0")) {
|
|
|
+ // 查国内,即线上订单
|
|
|
+ LambdaQueryWrapper<TOrder> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ if (StringUtils.isNotEmpty(param.getClientId())) {
|
|
|
+ // 如果type等于1,就查询设备所属商家是否是旗下管理的
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
|
|
|
+ if (equipment == null) {
|
|
|
+ return orderDaoChuDTOList;
|
|
|
+ }
|
|
|
+ if (param.getAdminIds().contains(equipment.getAdminId())) {
|
|
|
+ queryWrapper.eq(TOrder::getAdminId, equipment.getAdminId());
|
|
|
+ param.setAdminIds(null);
|
|
|
+ } else {
|
|
|
+ return orderDaoChuDTOList;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ queryWrapper.eq(TOrder::getClientId, param.getClientId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
|
|
|
+ if (StringUtils.isNotEmpty(param.getUsername())) {
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
|
|
|
+ if (admin == null) {
|
|
|
+ return orderDaoChuDTOList;
|
|
|
+ }
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ if (param.getAdminIds().contains(admin.getId())) {
|
|
|
+ queryWrapper.eq(TOrder::getAdminId, admin.getId());
|
|
|
+ param.setAdminId(String.valueOf(admin.getId()));
|
|
|
+ param.setAdminIds(null);
|
|
|
+ } else {
|
|
|
+ return orderDaoChuDTOList;
|
|
|
+ }
|
|
|
+ } else if (param.getType() == 0) {
|
|
|
+ queryWrapper.eq(TOrder::getAdminId, admin.getId());
|
|
|
+ param.setAdminId(String.valueOf(admin.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:adminList
|
|
|
+ if (param.getAdminIds() != null && !param.getAdminIds().isEmpty()) {
|
|
|
+ queryWrapper.in(TOrder::getAdminId, param.getAdminIds());
|
|
|
+ param.setAdminId(null);
|
|
|
+ }
|
|
|
+ // 条件:companyType
|
|
|
+ if (StringUtils.isNotBlank(param.getCompanyType())) {
|
|
|
+ if ("0".equals(param.getCompanyType())) {
|
|
|
+ queryWrapper.and(i -> i.isNull(TOrder::getCompanyType).or().eq(TOrder::getCompanyType, "0"));
|
|
|
+ } else if ("1".equals(param.getCompanyType())) {
|
|
|
+ queryWrapper.eq(TOrder::getCompanyType, "1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:时间范围
|
|
|
+ queryWrapper.between(TOrder::getCreateDate, param.getStartDate(), param.getEndDate());
|
|
|
+ // 条件:支付状态
|
|
|
+ queryWrapper.eq(TOrder::getStatus, 1);
|
|
|
+ // 条件:type == 2 or type == 1
|
|
|
+ if ("2".equals(param.getPacketType())) {
|
|
|
+ queryWrapper.groupBy(TOrder::getAdminId);
|
|
|
+ } else if ("1".equals(param.getPacketType())) {
|
|
|
+ queryWrapper.groupBy(TOrder::getClientId);
|
|
|
+ }
|
|
|
+ param.setCurrent((pageNo - 1) * param.getSize());
|
|
|
+ orderDaoChuDTOList = tOrderMapper.summaryStatistics(param);
|
|
|
+ } else {
|
|
|
+ // 查国外,即线下订单
|
|
|
+ LambdaQueryWrapper<TCoinOrder> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ if (StringUtils.isNotEmpty(param.getClientId())) {
|
|
|
+ // 如果type等于1,就查询设备所属商家是否是旗下管理的
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
|
|
|
+ if (equipment == null) {
|
|
|
+ return orderDaoChuDTOList;
|
|
|
+ }
|
|
|
+ if (param.getAdminIds().contains(equipment.getAdminId())) {
|
|
|
+ queryWrapper.eq(TCoinOrder::getAdminId, equipment.getAdminId());
|
|
|
+ param.setAdminIds(null);
|
|
|
+ } else {
|
|
|
+ return orderDaoChuDTOList;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ queryWrapper.eq(TCoinOrder::getClientId, param.getClientId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
|
|
|
+ if (StringUtils.isNotEmpty(param.getUsername())) {
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
|
|
|
+ if (admin == null) {
|
|
|
+ return orderDaoChuDTOList;
|
|
|
+ }
|
|
|
+ if (param.getType() == 1) {
|
|
|
+ if (param.getAdminIds().contains(admin.getId())) {
|
|
|
+ queryWrapper.eq(TCoinOrder::getAdminId, admin.getId());
|
|
|
+ param.setAdminId(String.valueOf(admin.getId()));
|
|
|
+ param.setAdminIds(null);
|
|
|
+ } else {
|
|
|
+ return orderDaoChuDTOList;
|
|
|
+ }
|
|
|
+ } else if (param.getType() == 0) {
|
|
|
+ queryWrapper.eq(TCoinOrder::getAdminId, admin.getId());
|
|
|
+ param.setAdminId(String.valueOf(admin.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:adminList
|
|
|
+ if (param.getAdminIds() != null && !param.getAdminIds().isEmpty()) {
|
|
|
+ queryWrapper.in(TCoinOrder::getAdminId, param.getAdminIds());
|
|
|
+ param.setAdminId(null);
|
|
|
+ }
|
|
|
+ // 条件:companyType
|
|
|
+ if (StringUtils.isNotBlank(param.getCompanyType())) {
|
|
|
+ if ("0".equals(param.getCompanyType())) {
|
|
|
+ queryWrapper.and(i -> i.isNull(TCoinOrder::getCompanyType).or().eq(TCoinOrder::getCompanyType, "0"));
|
|
|
+ } else if ("1".equals(param.getCompanyType())) {
|
|
|
+ queryWrapper.eq(TCoinOrder::getCompanyType, "1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 条件:时间范围
|
|
|
+ queryWrapper.between(TCoinOrder::getCreateDate, param.getStartDate(), param.getEndDate());
|
|
|
+ // 条件:支付状态
|
|
|
+ queryWrapper.eq(TCoinOrder::getStatus, 1);
|
|
|
+ // 条件:type == 2 or type == 1
|
|
|
+ if ("2".equals(param.getPacketType())) {
|
|
|
+ queryWrapper.groupBy(TCoinOrder::getAdminId);
|
|
|
+ } else if ("1".equals(param.getPacketType())) {
|
|
|
+ queryWrapper.groupBy(TCoinOrder::getClientId);
|
|
|
+ }
|
|
|
+ param.setCurrent((pageNo - 1) * param.getSize());
|
|
|
+ orderDaoChuDTOList = tCoinOrderMapper.summaryStatistics(param);
|
|
|
+ }
|
|
|
+ for (OrderDaoChuDTO orderDaoChuDTO : orderDaoChuDTOList) {
|
|
|
+ String adminId1 = orderDaoChuDTO.getAdminId().toString();
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(adminId1));
|
|
|
+ if (admin == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ orderDaoChuDTO.setPhone(admin.getPhone());
|
|
|
+ orderDaoChuDTO.setUsername(admin.getUsername());
|
|
|
+ orderDaoChuDTO.setName(admin.getName());
|
|
|
+ if (!StringUtils.isEmpty(param.getPacketType()) && param.getPacketType().equals("0")) {
|
|
|
+ //商户为单位
|
|
|
+ String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(adminId1));
|
|
|
+ orderDaoChuDTO.setEquipmentTotal(equipmentTotal);
|
|
|
+ } else {
|
|
|
+ //设备为单位
|
|
|
+ ResponseModel<TEquipment> equipmentByClientId = szwlFeign.findEquipmentByClientId(String.valueOf(orderDaoChuDTO.getClientId()));
|
|
|
+ TEquipment equipment = equipmentByClientId.getData();
|
|
|
+ if (equipment != null && equipment.getId() != null) {
|
|
|
+ if (StringUtils.isNotEmpty(equipment.getFullName())) {
|
|
|
+ orderDaoChuDTO.setAddress(equipment.getFullName());
|
|
|
+ }
|
|
|
+ orderDaoChuDTO.setEquipmentType(equipment.getEquimentType());
|
|
|
+ orderDaoChuDTO.setCreateDate(equipment.getCreateDate());
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return orderDaoChuDTOList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private List<StatisticsClientIdTarget> exportStatisticsYearByClientId(List<OrderStatisticsYear> list) {
|
|
|
+ List<StatisticsClientIdTarget> clientIdTargetList = new ArrayList<>();
|
|
|
+ for (OrderStatisticsYear orderStatisticsYear : list) {
|
|
|
+ StatisticsClientIdTarget target = new StatisticsClientIdTarget();
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatisticsYear.getAdminId())));
|
|
|
+ // 按设备分组
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(String.valueOf(orderStatisticsYear.getEquipmentId())));
|
|
|
+ target.setUsername(admin.getUsername());
|
|
|
+ target.setName(admin.getName());
|
|
|
+ target.setPhone(admin.getPhone());
|
|
|
+ target.setAddress(equipment.getFullName());
|
|
|
+ target.setClientId(equipment.getClientId());
|
|
|
+ target.setEquipmentType(equipment.getEquimentType());
|
|
|
+ target.setSalesVolume(orderStatisticsYear.getSaleNum());
|
|
|
+ target.setPriceTotal(orderStatisticsYear.getSalePrice());
|
|
|
+ clientIdTargetList.add(target);
|
|
|
+ }
|
|
|
+ return clientIdTargetList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<StatisticsClientIdTarget> exportStatisticsMonthByClientId(List<OrderStatisticsMonth> list) {
|
|
|
+ List<StatisticsClientIdTarget> clientIdTargetList = new ArrayList<>();
|
|
|
+ for (OrderStatisticsMonth orderStatisticsMonth : list) {
|
|
|
+ StatisticsClientIdTarget target = new StatisticsClientIdTarget();
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatisticsMonth.getAdminId())));
|
|
|
+ // 按设备分组
|
|
|
+ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(String.valueOf(orderStatisticsMonth.getEquipmentId())));
|
|
|
+ target.setUsername(admin.getUsername());
|
|
|
+ target.setName(admin.getName());
|
|
|
+ target.setPhone(admin.getPhone());
|
|
|
+ target.setAddress(equipment.getFullName());
|
|
|
+ target.setClientId(equipment.getClientId());
|
|
|
+ target.setEquipmentType(equipment.getEquimentType());
|
|
|
+ target.setSalesVolume(orderStatisticsMonth.getSaleNum());
|
|
|
+ target.setPriceTotal(orderStatisticsMonth.getSalePrice());
|
|
|
+ clientIdTargetList.add(target);
|
|
|
+ }
|
|
|
+ return clientIdTargetList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<StatisticsAdminTarget> exportStatisticsYearByAdmin(List<OrderStatisticsYear> list) {
|
|
|
+ List<StatisticsAdminTarget> adminTargetList = new ArrayList<>();
|
|
|
+ for (OrderStatisticsYear orderStatisticsYear : list) {
|
|
|
+ StatisticsAdminTarget target = new StatisticsAdminTarget();
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatisticsYear.getAdminId())));
|
|
|
+ // 按商户分组
|
|
|
+ String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(String.valueOf(orderStatisticsYear.getAdminId())));
|
|
|
+ target.setUsername(admin.getUsername());
|
|
|
+ target.setName(admin.getName());
|
|
|
+ target.setPhone(admin.getPhone());
|
|
|
+ target.setEquipmentTotal(equipmentTotal);
|
|
|
+ target.setSalesVolume(orderStatisticsYear.getSaleNum());
|
|
|
+ target.setPriceTotal(orderStatisticsYear.getSalePrice());
|
|
|
+ adminTargetList.add(target);
|
|
|
+ }
|
|
|
+ return adminTargetList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<StatisticsAdminTarget> exportStatisticsMonthByAdmin(List<OrderStatisticsMonth> list) {
|
|
|
+ List<StatisticsAdminTarget> adminTargetList = new ArrayList<>();
|
|
|
+ for (OrderStatisticsMonth orderStatisticsMonth : list) {
|
|
|
+ StatisticsAdminTarget target = new StatisticsAdminTarget();
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatisticsMonth.getAdminId())));
|
|
|
+ // 按商户分组
|
|
|
+ String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(String.valueOf(orderStatisticsMonth.getAdminId())));
|
|
|
+ target.setUsername(admin.getUsername());
|
|
|
+ target.setName(admin.getName());
|
|
|
+ target.setPhone(admin.getPhone());
|
|
|
+ target.setEquipmentTotal(equipmentTotal);
|
|
|
+ target.setSalesVolume(orderStatisticsMonth.getSaleNum());
|
|
|
+ target.setPriceTotal(orderStatisticsMonth.getSalePrice());
|
|
|
+ adminTargetList.add(target);
|
|
|
+ }
|
|
|
+ return adminTargetList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private String getSzMessage(String sn, String price, String payTime, String equipmentName, String clientId, String customerPhone) {
|
|
|
String message = "";
|
|
|
if (StringUtils.isNotEmpty(customerPhone) && customerPhone.length() > 3) {
|