package com.szwl.service.impl;
import cn.hutool.core.util.RandomUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
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;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
*
* 服务实现类
*
*
* @author wuhs
* @since 2022-06-14
*/
@Service
public class TOrderServiceImpl extends ServiceImpl implements TOrderService {
@Resource
TOrderMapper tOrderMapper;
@Autowired
private TCoinOrderMapper tCoinOrderMapper;
@Autowired
OrderStatisticsMonthService orderStatisticsMonthService;
@Autowired
OrderStatisticsYearService orderStatisticsYearService;
@Autowired
SzwlFeign szwlFeign;
@Autowired
private RefundSendRecordService refundSendRecordService;
private static final String appid = "07784f5fedb508046c841b391005b7de";
private static final String CALLBACK_URL = "https://sz.sunzee.com.cn/ORDER-SERVER/refundSendRecord/callBack";
//首页统计
@Override
public ChartColumn getStatistics(StatisticsParam param) {
List list = new ArrayList<>();
String msg = "";
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
//使用SimpleDateFormat的parse()方法生成Date
Date start = sf.parse(param.getStartDate());
Date end = sf.parse(param.getEndDate());
SimpleDateFormat endsf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
param.setStartDate(endsf.format(start));
param.setEndDate(endsf.format(end));
} catch (ParseException e) {
e.printStackTrace();
}
if (ChartType.day.toString().equals(param.getChartType())) {
list = tOrderMapper.getDayStatistics(param);
msg = "日统计";
}
if (ChartType.week.toString().equals(param.getChartType())) {
list = tOrderMapper.getWeekStatistics(param);
msg = "周统计";
}
if (ChartType.month.toString().equals(param.getChartType())) {
list = tOrderMapper.getMonthStatistics(param);
msg = "月统计";
}
if (ChartType.year.toString().equals(param.getChartType())) {
list = tOrderMapper.getYearStatistics(param);
msg = "年统计";
}
// if (CollectionUtils.isEmpty(list)) {
// throw new MyException("获取" + msg + "数据为空");
// }
ChartColumn chartColumn = new ChartColumn(list);
return chartColumn;
}
//机器排行统计
@Override
public ChartColumn getEquipmentStatistics(StatisticsParam param) {
List list = new ArrayList<>();
String msg = "";
if (ChartType.day.toString().equals(param.getChartType())) {
msg = "日统计";
}
if (ChartType.week.toString().equals(param.getChartType())) {
msg = "周统计";
}
if (ChartType.month.toString().equals(param.getChartType())) {
msg = "月统计";
}
if (ChartType.year.toString().equals(param.getChartType())) {
msg = "年统计";
}
if ("1".equals(param.getChangeType())) {
// 花型统计
list = tOrderMapper.getProductNameStatistics(param);
} else {
list = tOrderMapper.getEquipmentStatistics(param);
if (list.size() > 0) {
for (ChartBean chartBean : list) {
String categorie = chartBean.getCategorie();
TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
if (StringUtils.isNotEmpty(tEquipment.getName())) {
chartBean.setCategorie(tEquipment.getName());
} else {
chartBean.setCategorie(categorie.substring(categorie.length() - 6, categorie.length()));
}
}
}
}
if (CollectionUtils.isEmpty(list)) {
throw new MyException("获取" + msg + "数据为空");
}
ChartColumn chartColumn = new ChartColumn(list);
return chartColumn;
}
@Override
public List orderDaoChu(String begin, String end, Long adminId, String clientId, String type, String companyType, long current, long size) {
OrderDaoChuParam daoChuParam = new OrderDaoChuParam();
daoChuParam.setAdminId(adminId);
daoChuParam.setBegin(begin);
daoChuParam.setEnd(end);
daoChuParam.setClientId(clientId);
daoChuParam.setType(type);
daoChuParam.setCurrent(current - 1);
daoChuParam.setSize(size);
daoChuParam.setCompanyType(companyType);
return tOrderMapper.getOrderDaoCu(daoChuParam);
}
@Override
public List findById(TAdmin admin, List list) throws ParseException {
List list1 = new ArrayList<>();
for (TOrder order : list) {
if (!order.getProductName().equals("优惠码")) {
OrderTarget orderTarget = new OrderTarget();
orderTarget.setSn(order.getSn());
orderTarget.setProductName(order.getProductName());
if (order.getRefundAmount() != null) {
orderTarget.setPrice(order.getPrice().subtract(order.getRefundAmount()).setScale(2));
} else {
orderTarget.setPrice(order.getPrice());
}
orderTarget.setClientId(order.getClientId());
orderTarget.setName(admin.getUsername());
// 格式化时间
if (order.getPayDate() != null) {
String formatPayDate = DateUtils.formatDate(order.getPayDate(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss);
orderTarget.setPayDate(formatPayDate);
}
if (order.getRefundDate() != null) {
String formatRefundDate = DateUtils.formatDate(order.getRefundDate(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss);
orderTarget.setRefundDate(formatRefundDate);
}
Integer status = order.getStatus();
if (status == 0) {
orderTarget.setStatus("未支付");
} else if (status == 1) {
orderTarget.setStatus("已支付");
} else if (status == 3) {
orderTarget.setStatus("已退款");
} else {
orderTarget.setStatus(String.valueOf(status));
}
if (order.getAgencyProportion() != null) {
orderTarget.setAgencyProportion(String.valueOf(order.getAgencyProportion()));
}
if (order.getMerchantProportion() != null) {
orderTarget.setMerchantProportion(String.valueOf(order.getMerchantProportion()));
}
if (order.getPersonageProportion() != null) {
orderTarget.setPersonageProportion(String.valueOf(order.getPersonageProportion()));
}
if ("WEIXIN_NATIVE".equals(order.getFrpCode())) {
orderTarget.setFrp_code("微信主扫支付");
} else if ("ALIPAY_NATIVE".equals(order.getFrpCode())) {
orderTarget.setFrp_code("支付宝主扫支付");
} else if ("WEIXIN_CARD".equals(order.getFrpCode())) {
orderTarget.setFrp_code("微信被扫支付");
} else if ("ALIPAY_CARD".equals(order.getFrpCode())) {
orderTarget.setFrp_code("支付宝被扫支付");
} else {
orderTarget.setFrp_code(order.getFrpCode());
}
if (StringUtils.isEmpty(orderTarget.getFrp_code())) {
orderTarget.setFrp_code(order.getFrpCode());
}
list1.add(orderTarget);
}
}
return list1;
}
@Override
public List findByTime(String clientId, Date startTime, Date endTime, Integer unit) {
return tOrderMapper.findByTime(clientId, startTime, endTime, unit);
}
@Override
public String setMessage(Long id, String customerPhone, Long adminId) {
TOrder order = tOrderMapper.selectById(id);
String result = "";
RefundSendRecord refundSendRecord = new RefundSendRecord();
String uid = RandomUtil.randomNumbers(18);
refundSendRecord.setId(Long.valueOf(uid));
refundSendRecord.setCreateDate(new Date());
refundSendRecord.setSendAdminId(adminId);
if (order != null) {
String companyType = order.getCompanyType();
String clientId = order.getClientId();
String sn = order.getSn();
// 添加发送记录
refundSendRecord.setSn(sn);
refundSendRecord.setClientId(clientId);
TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(order.getClientId()));
if (equipment == null) {
result = "设备不存在";
return result;
}
String operationalPhone = equipment.getOperationalPhone();
String phone = null;
//判断是否有机器运营者,作为短信接收通知人
if (!StringUtils.isEmpty(operationalPhone)) {
//直接发送到机器运营者
phone = operationalPhone;
} else {
//直接发送到账户拥有者手机
TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(equipment.getAdminId())));
if (admin != null) {
if (!StringUtils.isEmpty(admin.getPhone())) {
phone = admin.getPhone();
}
} else {
result = "账户不存在";
return result;
}
}
if (!StringUtils.isEmpty(phone)) {
//发短信
try {
String price = String.valueOf(order.getPrice());
Date payDate = order.getPayDate();
String pattern = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String payTime = simpleDateFormat.format(payDate);
String clientId6 = clientId.substring(clientId.length() - 6);
if (StringUtils.isNotEmpty(companyType) && companyType.equals("1")) {
// 如果是七云科技的用户
result = YunPianSms.sendSms(appid, getScMessage(sn, price, payTime,
equipment.getName(), clientId6, customerPhone), phone, uid, CALLBACK_URL);
} else {
// 如果是申泽智能的用户
result = YunPianSms.sendSms(appid, getSzMessage(sn, price, payTime,
equipment.getName(), clientId6, customerPhone), phone, uid, CALLBACK_URL);
}
refundSendRecord.setPhone(phone);
} catch (Exception e) {
e.printStackTrace();
}
} else {
result = "设备运营者手机号为空";
return result;
}
refundSendRecord.setStatus(0);
refundSendRecordService.save(refundSendRecord);
}
return result;
}
@Override
public List exportOrderData(TAdmin admin, List list) {
List orderTargets = new ArrayList<>();
Map nameMap = new HashMap<>();
for (TOrder order : list) {
if (!order.getProductName().equals("优惠码")) {
NewOrderTarget orderTarget = new NewOrderTarget();
orderTarget.setSn(order.getSn());
orderTarget.setProductName(order.getProductName());
if (order.getRefundAmount() != null) {
orderTarget.setPrice(order.getPrice().subtract(order.getRefundAmount()).setScale(2));
} else {
orderTarget.setPrice(order.getPrice());
}
orderTarget.setClientId(order.getClientId());
String name = "";
name = nameMap.get(order.getClientId());
if (order.getEquipmentId() != null && StringUtils.isEmpty(name)) {
TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(String.valueOf(order.getEquipmentId())));
if (StringUtils.isNotEmpty(equipment.getName())) {
name = equipment.getName();
} else {
name = "暂未设置名称";
}
nameMap.put(order.getClientId(), name);
}
orderTarget.setMachineName(name);
orderTarget.setName(admin.getUsername());
// 格式化时间
if (order.getPayDate() != null) {
String formatPayDate = DateUtils.formatDate(order.getPayDate(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss);
orderTarget.setPayDate(formatPayDate);
}
if (order.getRefundDate() != null) {
String formatRefundDate = DateUtils.formatDate(order.getRefundDate(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss);
orderTarget.setRefundDate(formatRefundDate);
}
Integer status = order.getStatus();
if (status == 0) {
orderTarget.setStatus("未支付");
} else if (status == 1) {
orderTarget.setStatus("已支付");
} else if (status == 3) {
orderTarget.setStatus("已退款");
} else {
orderTarget.setStatus(String.valueOf(status));
}
if (order.getAgencyProportion() != null) {
orderTarget.setAgencyProportion(String.valueOf(order.getAgencyProportion()));
}
if (order.getMerchantProportion() != null) {
orderTarget.setMerchantProportion(String.valueOf(order.getMerchantProportion()));
}
if (order.getPersonageProportion() != null) {
orderTarget.setPersonageProportion(String.valueOf(order.getPersonageProportion()));
}
if ("WEIXIN_NATIVE".equals(order.getFrpCode())) {
orderTarget.setFrp_code("微信主扫支付");
} else if ("ALIPAY_NATIVE".equals(order.getFrpCode())) {
orderTarget.setFrp_code("支付宝主扫支付");
} else if ("WEIXIN_CARD".equals(order.getFrpCode())) {
orderTarget.setFrp_code("微信被扫支付");
} else if ("ALIPAY_CARD".equals(order.getFrpCode())) {
orderTarget.setFrp_code("支付宝被扫支付");
} else {
orderTarget.setFrp_code(order.getFrpCode());
}
if (StringUtils.isEmpty(orderTarget.getFrp_code())) {
orderTarget.setFrp_code(order.getFrpCode());
}
orderTargets.add(orderTarget);
}
}
return orderTargets;
}
@Override
public void dataExport(OrderDto orderDto, Date begin, Date end, HttpServletResponse response) throws IOException {
//判断当前账号状态
TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(orderDto.getAdminId()));
LambdaQueryWrapper query = Wrappers.lambdaQuery();
if (!orderDto.getUserName().equals("sysMgtAcc")) {
if (StringUtils.isNotEmpty(orderDto.getUserName())) {
TAdmin data = R.getDataIfSuccess(szwlFeign.getAdminByUsername(orderDto.getUserName()));
if (data == null || data.getId() == null) {
return;
}
if (data.getIsAdmined()) {
query.eq(TOrder::getAdminId, data.getId());
} else {
if (data.getParentId() != 1) {
query.eq(TOrder::getAdminId, data.getParentId());
//查找子账户所管理的机器
TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(orderDto.getAdminId()));
if (!adminEquipment.getType().equals("0")) {
List list = R.getDataIfSuccess(szwlFeign.getClientIds(orderDto.getAdminId()));
if (list == null || list.size() == 0) {
return;
}
query.in(TOrder::getClientId, list);
}
}
}
} else {
//adminType="all"时,代表查全部下级 子账户没有这个权限 公司人员默认查所有人
if (StringUtils.isNotEmpty(orderDto.getAdminType())) {
if (admin.getIsAdmined() && admin.getType() > 1) {
if (admin.getType() > 1) {
if (orderDto.getAdminType().equals("all")) {
//查找所有下级
List admidIdList = R.getDataIfSuccess(szwlFeign.getAdminIdList(orderDto.getAdminId()));
query.in(TOrder::getAdminId, admidIdList);
}
}
} else {
if (admin.getType() > 1) {
//登录账户为子账户 不查下级 只查对应机器的订单
TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
if (adminEquipment.getType().equals("0")) {
//全部机器
TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
query.eq(TOrder::getAdminId, upAdmin.getId());
} else {
String equipmentIds = adminEquipment.getEquipmentIds();
List equipmentIdList = JSON.parseArray(equipmentIds, String.class);
query.in(TOrder::getClientId, equipmentIdList);
}
}
}
} else {
//判断当前账号状态 公司还是商家
if (admin.getType() > 1) {
//商家 判断是否子账户
if (admin.getIsAdmined()) {
//商家自己
query.eq(TOrder::getAdminId, orderDto.getAdminId());
} else {
//商家 子账户
//登录账户为子账户 不查下级 只查对应机器的订单
TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
if (adminEquipment.getType().equals("0")) {
//全部机器
TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
query.eq(TOrder::getAdminId, upAdmin.getId());
} else {
String equipmentIds = adminEquipment.getEquipmentIds();
List equipmentIdList = JSON.parseArray(equipmentIds, String.class);
query.in(TOrder::getClientId, equipmentIdList);
}
}
}
}
}
}
if (StringUtils.isNotEmpty(orderDto.getPayType())) {
query.eq(TOrder::getFrpCode, orderDto.getPayType());
}
if (StringUtils.isNotEmpty(orderDto.getClientId())) {
TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(orderDto.getClientId()));
//判断机器是否属于这个登陆账号
if (admin.getType() > 1) {
//商家
if (equipment.getAdminId().toString().equals(admin.getId().toString())) {
query.eq(TOrder::getEquipmentId, equipment.getId());
}
} else {
query.eq(TOrder::getEquipmentId, equipment.getId());
}
}
if (StringUtils.isNotEmpty(orderDto.getEquipmentId())) {
query.eq(TOrder::getEquipmentId, orderDto.getEquipmentId());
}
if (StringUtils.isNotEmpty(orderDto.getStatus())) {
query.eq(TOrder::getStatus, orderDto.getStatus());
}
if (StringUtils.isNotEmpty(orderDto.getDateType())) {
if (orderDto.getDateType().equals("0")) {
//创建时间
if (begin != null && end != null) {
query.gt(TOrder::getCreateDate, begin);
query.lt(TOrder::getCreateDate, end);
}
}
if (orderDto.getDateType().equals("1")) {
//退款时间
if (begin != null && end != null) {
query.gt(TOrder::getRefundDate, begin);
query.lt(TOrder::getRefundDate, end);
}
}
}
// 公司平台
// 申泽平台管理员
String companyType = orderDto.getCompanyType();
if (admin.getId() == 2738) {
companyType = "0";
}
// 七云平台管理员
if (admin.getId() == 2739) {
companyType = "1";
}
if (StringUtils.isNotEmpty(companyType)) {
if (companyType.equals("0")) {
String finalCompanyType = companyType;
query.nested(q -> q.isNull(TOrder::getCompanyType).or()
.eq(TOrder::getCompanyType, finalCompanyType));
} else {
query.eq(TOrder::getCompanyType, companyType);
}
}
String machineType = orderDto.getMachineType();
if (StringUtils.isNotEmpty(machineType)) {
if (machineType.equals("0")) {
query.nested(q -> q.isNull(TOrder::getMachineType).or()
.eq(TOrder::getMachineType, machineType));
} else {
query.eq(TOrder::getMachineType, machineType);
}
}
// 查询总数
int pageSize = 1000;
int total = count(query);
// 总页数
int totalPages = (total + pageSize - 1) / pageSize;
// 这里注意 有同学反应使用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");
// 创建ExcelWriter对象
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), NewOrderTarget.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
// 创建 Sheet 对象
WriteSheet writeSheet = EasyExcel.writerSheet(0, "订单").build();
// 创建 CountDownLatch 对象
CountDownLatch countDownLatch = new CountDownLatch(totalPages);
// 创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(totalPages);
// 循环写入数据
for (int i = 1; i <= totalPages; i++) {
int page = i;
executorService.submit(() -> {
try {
Page orderPage = new Page<>(page, pageSize);
Page pageList = page(orderPage, query);
List list = pageList.getRecords();
// 写入数据
List orderTargetList = exportOrderData(admin, list);
synchronized (excelWriter) {
excelWriter.write(orderTargetList, writeSheet);
}
} catch (Exception e) {
// 异常处理
e.printStackTrace();
} finally {
// 计数器减一
countDownLatch.countDown();
}
});
}
// 等待所有线程执行完毕
try {
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 关闭 ExcelWriter 对象
excelWriter.finish();
// 关闭线程池
executorService.shutdown();
}
@Override
public Page summaryStatisticsMonth(StatisticsParam param) {
Page result = new Page<>(param.getCurrent(), param.getSize(), true);
// 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
List adminIds = new ArrayList<>();
if (param.getType() == 1) {
// 查询下级账户
adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
if (adminIds.isEmpty()) {
return result;
}
param.setAdminIds(adminIds);
}
LambdaQueryWrapper 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 page = new Page<>(param.getCurrent(), param.getSize(), true);
IPage iPage = orderStatisticsMonthService.page(page, query);
List list = iPage.getRecords();
ArrayList 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 summaryStatisticsYear(StatisticsParam param) {
Page result = new Page<>(param.getCurrent(), param.getSize(), true);
// 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
List adminIds = new ArrayList<>();
if (param.getType() == 1) {
// 查询下级账户
adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
if (adminIds.isEmpty()) {
return result;
}
param.setAdminIds(adminIds);
}
LambdaQueryWrapper 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 page = new Page<>(param.getCurrent(), param.getSize(), true);
IPage iPage = orderStatisticsYearService.page(page, query);
List list = iPage.getRecords();
ArrayList 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 summaryStatistics(StatisticsParam param) {
Page result = new Page<>(param.getCurrent(), param.getSize(), true);
// 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
List adminIds = new ArrayList<>();
if (param.getType() == 1) {
// 查询下级账户
adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
if (adminIds.isEmpty()) {
return result;
}
param.setAdminIds(adminIds);
}
List orderDaoChuDTOList;
if (StringUtils.isNotEmpty(param.getStartDate()) && StringUtils.isNotEmpty(param.getEndDate())) {
if (param.getIfForeign().equals("0")) {
// 查国内,即线上订单
LambdaQueryWrapper 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 tOrderPage = new Page<>(param.getCurrent(), param.getSize(), true);
IPage iPage = tOrderMapper.selectPage(tOrderPage, queryWrapper);
result.setTotal(iPage.getTotal());
param.setCurrent(param.getCurrent() - 1);
orderDaoChuDTOList = tOrderMapper.summaryStatistics(param);
} else {
// 查国外,即线下订单
LambdaQueryWrapper 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 tOrderPage = new Page<>(param.getCurrent(), param.getSize(), true);
IPage 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 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 void statisticsYearExport(HttpServletResponse response, Class clazz, StatisticsParam param) throws IOException {
// 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
List adminIds = new ArrayList<>();
if (param.getType() == 1) {
// 查询下级账户
adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
if (adminIds.isEmpty()) {
return;
}
param.setAdminIds(adminIds);
}
LambdaQueryWrapper 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 orderPage = new Page<>(pageNo, param.getSize());
Page pageList = orderStatisticsYearService.page(orderPage, query);
List dataList = pageList.getRecords();
if (dataList.isEmpty()) {
break;
}
// 封装数据
if (param.getPacketType().equals("0")) {
List adminTargetList = exportStatisticsYearByAdmin(dataList);
// 写入数据到 Excel
excelWriter.write(adminTargetList, writeSheet);
} else {
List clientIdTargetList = exportStatisticsYearByClientId(dataList);
excelWriter.write(clientIdTargetList, writeSheet);
}
pageNo++;
}
}
}
@Override
public void statisticsMonthExport(HttpServletResponse response, Class clazz, StatisticsParam param) throws IOException {
// 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
List adminIds = new ArrayList<>();
if (param.getType() == 1) {
// 查询下级账户
adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
if (adminIds.isEmpty()) {
return;
}
param.setAdminIds(adminIds);
}
LambdaQueryWrapper 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 orderPage = new Page<>(pageNo, param.getSize());
Page pageList = orderStatisticsMonthService.page(orderPage, query);
List dataList = pageList.getRecords();
if (dataList.isEmpty()) {
break;
}
// 封装数据
if (param.getPacketType().equals("0")) {
List adminTargetList = exportStatisticsMonthByAdmin(dataList);
// 写入数据到 Excel
excelWriter.write(adminTargetList, writeSheet);
} else {
List clientIdTargetList = exportStatisticsMonthByClientId(dataList);
excelWriter.write(clientIdTargetList, writeSheet);
}
pageNo++;
}
}
}
@Override
public void statisticsDayWeekExport(HttpServletResponse response, Class 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 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 dataList = getPageData(pageNo, param);
if (dataList.isEmpty()) {
break;
}
// 封装数据
if (param.getPacketType().equals("0")) {
List adminTargetList = exportStatisticsByAdmin(dataList);
// 写入数据到 Excel
excelWriter.write(adminTargetList, writeSheet);
} else {
List clientIdTargetList = exportStatisticsByClientId(dataList);
excelWriter.write(clientIdTargetList, writeSheet);
}
pageNo++;
}
}
}
private List exportStatisticsByClientId(List dataList) {
List 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 exportStatisticsByAdmin(List dataList) {
List 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 getPageData(int pageNo, StatisticsParam param) {
List orderDaoChuDTOList = new ArrayList<>();
if (StringUtils.isNotEmpty(param.getStartDate()) && StringUtils.isNotEmpty(param.getEndDate())) {
if (param.getIfForeign().equals("0")) {
// 查国内,即线上订单
LambdaQueryWrapper 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 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 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 exportStatisticsYearByClientId(List list) {
List 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 exportStatisticsMonthByClientId(List list) {
List 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 exportStatisticsYearByAdmin(List list) {
List 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 exportStatisticsMonthByAdmin(List list) {
List 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) {
message = "【申泽智能】您好,接到消费者投诉:机器售卖出现问题,需要您退款。订单号:"
+ sn + ",机器名称:" + equipmentName + ",设备编号:" + clientId +
",价格:" + price + "元,订单支付时间:" + payTime + ",消费者联系方式:" + customerPhone +
"。如已通过私下退款,请提供退款截屏到群里,务必24小时内将此订单进行退款处理,否则我司将自动执行退款流程,以保障您的银行账户不被冻结,谢谢。";
} else {
message = "【申泽智能】您好,接到消费者投诉:机器售卖出现问题,需要您退款。订单号:"
+ sn + ",机器名称:" + equipmentName + ",设备编号:" + clientId +
",价格:" + price + "元,订单支付时间:" + payTime + ",该投诉消费者没有留联系方式,如需核实,请把你的联系方式反馈给我们,我们会把你的联系方式通知到消费者手上,让消费者联系您。" +
"如已通过私下退款,请提供退款截屏到群里,务必24小时内将此订单进行退款处理,否则我司将自动执行退款流程,以保障您的银行账户不被冻结,谢谢。";
}
return message;
}
private String getScMessage(String sn, String price, String payTime, String equipmentName, String clientId, String customerPhone) {
String message = "";
if (StringUtils.isNotEmpty(customerPhone) && customerPhone.length() > 3) {
message = "【七云科技】您好,接到消费者投诉:机器售卖出现问题,需要您退款。订单号:"
+ sn + ",机器名称:" + equipmentName + ",设备编号:" + clientId +
",价格:" + price + "元,订单支付时间:" + payTime + ",消费者联系方式:" + customerPhone +
"。如已通过私下退款,请提供退款截屏到群里,务必24小时内将此订单进行退款处理,否则我司将自动执行退款流程,以保障您的银行账户不被冻结,谢谢。";
} else {
message = "【七云科技】您好,接到消费者投诉:机器售卖出现问题,需要您退款。订单号:"
+ sn + ",机器名称:" + equipmentName + ",设备编号:" + clientId +
",价格:" + price + "元,订单支付时间:" + payTime + ",该投诉消费者没有留联系方式,如需核实,请把你的联系方式反馈给我们,我们会把你的联系方式通知到消费者手上,让消费者联系您。" +
"如已通过私下退款,请提供退款截屏到群里,务必24小时内将此订单进行退款处理,否则我司将自动执行退款流程,以保障您的银行账户不被冻结,谢谢。";
}
return message;
}
}