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