package com.szwl.controller; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.com.crbank.ommo.bean.ResultMessage; import cn.com.crbank.ommo.esclient.ElasticsearchRunner; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; 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.szwl.feign.SzwlFeign; import com.szwl.feign.bean.TAdminParam; import com.szwl.model.bean.ChartColumn; import com.szwl.model.bean.OrderDaoChuDTO; import com.szwl.model.bean.OrderVo; import com.szwl.model.bo.JsonMessage; import com.szwl.model.bo.R; import com.szwl.model.bo.ResponseModel; import com.szwl.model.entity.*; import com.szwl.model.excel.CoinOrderTarget; import com.szwl.model.excel.OrderByAdminTarget; import com.szwl.model.excel.OrderByClientidTarget; import com.szwl.model.excel.OrderTarget; import com.szwl.model.query.Filter; import com.szwl.model.query.Pageable; import com.szwl.model.query.StatisticsParam; import com.szwl.model.utils.FgObjectUtil; import com.szwl.service.TAreaService; import com.szwl.service.TCoinOrderService; import com.szwl.service.TOrderService; import com.szwl.service.es.EsTEquipmentService; import com.szwl.service.es.EsTOrderService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateUtils; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Optional; /** *

* 前端控制器 *

* * @author wuhs * @since 2022-06-14 */ @Slf4j @RestController @RequestMapping("/tOrder") public class TOrderController { @Autowired TOrderService orderService; @Autowired TAreaService areaService; @Autowired EsTOrderService esTOrderService; @Autowired EsTEquipmentService esTEquipmentService; @Autowired TCoinOrderService coinOrderService; @Autowired SzwlFeign szwlFeign; @GetMapping("/pageOrder") public ResponseModel> pageOrder(String adminId,String adminType,String type,String userName,String payType,String productNo,String clientId,String dateType, Date startDate, Date endDate, long current, long size ) { //判断当前账号状态 TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminId)); //类型 //0,线上 if(type.equals("0")){ LambdaQueryWrapper query = Wrappers.lambdaQuery(); //adminType="all"时,代表查全部下级 子账户没有这个权限 公司人员默认查所有人 if(StringUtils.isNotEmpty(adminType)){ if(admin.getIsAdmined().equals("0")&&admin.getType()>1){ if(admin.getType()>1){ if(adminType.equals("all")){ //查找所有下级 List admidIdList = R.getDataIfSuccess(szwlFeign.getAdminIdList(adminId)); 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,adminId); }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(userName)){ TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdminByUsername(userName)); query.eq(TOrder::getAdminId,admin1.getId()); } if(StringUtils.isNotEmpty(payType)){ query.eq(TOrder::getFrpCode,payType); } if(StringUtils.isNotEmpty(productNo)){ query.eq(TOrder::getProductNo,productNo); } if(StringUtils.isNotEmpty(clientId)){ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId)); //判断机器是否属于这个登陆账号 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(dateType)){ if(dateType.equals("0")){ //创建时间 if(startDate!=null&&endDate!=null){ query.gt(TOrder::getCreateDate,startDate); query.lt(TOrder::getCreateDate,endDate); } } if(dateType.equals("1")){ //退款时间 if(startDate!=null&&endDate!=null){ query.gt(TOrder::getRefundDate,startDate); query.lt(TOrder::getRefundDate,endDate); } } } Page page = new Page<>(current, size, true); IPage iPage = orderService.page(page, query); return R.ok(iPage); }; //1,线下 if(type.equals("1")){ LambdaQueryWrapper query = Wrappers.lambdaQuery(); //adminType="all"时,代表查全部下级 子账户没有这个权限 公司人员默认查所有人 if(StringUtils.isNotEmpty(adminType)){ if(admin.getIsAdmined()&&admin.getType()>1){ if(admin.getType()>1){ if(adminType.equals("all")){ //查找所有下级 List admidIdList = R.getDataIfSuccess(szwlFeign.getAdminIdList(adminId)); query.in(TCoinOrder::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(TCoinOrder::getAdminId,upAdmin.getId()); }else { String equipmentIds = adminEquipment.getEquipmentIds(); List equipmentIdList = JSON.parseArray(equipmentIds, String.class); query.in(TCoinOrder::getClientId,equipmentIdList); } } } }else { //判断当前账号状态 公司还是商家 if(admin.getType()>1){ //商家 判断是否子账户 if(admin.getIsAdmined()){ //商家自己 query.eq(TCoinOrder::getAdminId,adminId); }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(TCoinOrder::getAdminId,upAdmin.getId()); }else { String equipmentIds = adminEquipment.getEquipmentIds(); List equipmentIdList = JSON.parseArray(equipmentIds, String.class); query.in(TCoinOrder::getClientId,equipmentIdList); } } } } if(StringUtils.isNotEmpty(userName)){ TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdminByUsername(userName)); query.eq(TCoinOrder::getAdminId,admin1.getId()); } if(StringUtils.isNotEmpty(payType)){ query.eq(TCoinOrder::getPayType,payType); } if(StringUtils.isNotEmpty(productNo)){ query.eq(TCoinOrder::getProductNo,productNo); } if(StringUtils.isNotEmpty(clientId)){ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId)); //判断机器是否属于这个登陆账号 if(admin.getType()>1){ //商家 if(equipment.getAdminId().toString().equals(admin.getId().toString())){ query.eq(TCoinOrder::getClientId,equipment.getClientId()); } }else { query.eq(TCoinOrder::getClientId,equipment.getClientId()); } } if(startDate!=null&&endDate!=null){ query.gt(TCoinOrder::getPayDate,startDate); query.lt(TCoinOrder::getPayDate,endDate); } Page page = new Page<>(current, size, true); IPage iPage = coinOrderService.page(page, query); return R.ok(iPage); } return R.ok(); } /** * 判断查询用户是否为外国 * @return */ private String isForeignUser(String userId){ if(StringUtils.isNotEmpty(userId)){ try { TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(userId)); return admin.getIfForeign(); } catch (NumberFormatException e) { } } return "0"; } @ApiOperation(value = "获取首页数据统计") @PostMapping("/getStatistics") public ResponseEntity getStatistics(@RequestBody StatisticsParam param) { // 判断是否为外国 param.setIfForeign(isForeignUser(param.getAdminId())); log.info("param:{}", param); TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(param.getAdminId())); if(admin.getType()<2){ param.setAdminId(null); if(param.getEquipmentId()!=null){ //查机器 TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId())); param.setClientId(equipment.getClientId()); } if(StringUtils.isNotEmpty(param.getClientId())){ //补全clientId TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId())); param.setClientId(tEquipment.getClientId()); param.setClientId(tEquipment.getClientId()); } }else { if(admin.getType()==2){ //商家 if(param.getEquipmentId()!=null){ //查机器 TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId())); param.setClientId(equipment.getClientId()); } if(StringUtils.isNotEmpty(param.getClientId())){ param.setAdminId(null); //判断是否是这个商家的 TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId())); if(tEquipment.getAdminId().toString().equals(admin.getId().toString())){ param.setClientId(tEquipment.getClientId()); param.setEquipmentId(String.valueOf(tEquipment.getId())); } } } if(admin.getType()==3){ //子账户只能查相对的机器的订单 //商家子账户 if(param.getEquipmentId()!=null){ //查机器 TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId())); param.setClientId(equipment.getClientId()); }else{ TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getId()))); if(adminEquipment.getType().equals("0")){ TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId()))); param.setAdminId(admin1.getId().toString()); }else { List list = R.getDataIfSuccess(szwlFeign.getClientIds(param.getAdminId())); param.setClientIds(list); } } if(StringUtils.isNotEmpty(param.getClientId())){ param.setAdminId(null); //判断是否是这个子账号的 TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId())); TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getId()))); if(adminEquipment.getType().equals("0")){ TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId()))); if(tEquipment.getAdminId().toString().equals(admin1.getId())){ param.setAdminId(null); param.setClientId(tEquipment.getClientId()); param.setEquipmentId(String.valueOf(tEquipment.getId())); } }else { int i = 0; List list = R.getDataIfSuccess(szwlFeign.getClientIds(param.getAdminId())); if(list.size()>0){ for(String clientID:list){ if(clientID.equals(tEquipment.getClientId())){ i++; } } } if(i>0){ param.setClientId(tEquipment.getClientId()); param.setEquipmentId(String.valueOf(tEquipment.getId())); } } } } } if(StringUtils.isNotEmpty(param.getUsername())){ if(param.getUsername().equals("all")){ //商家查全部 //判断是不是商家账户 if(admin.getType()==3){ //查下级账户id集合 List list = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId())); if(list.size()>0){ param.setAdminIds(list); param.setAdminId(null); } } } } FgObjectUtil.objectNullOrEmptySel(param, "chartType$"); ChartColumn chartColumn = new ChartColumn(); if(StringUtils.isNotEmpty(param.getIfForeign())&¶m.getIfForeign().equals("1")){ if(StringUtils.isNotEmpty(param.getPayType())&¶m.getPayType().equals("all")){ param.setPayType(null); } //国外查MYSQL chartColumn = orderService.getStatistics(param); }else{ //查去年的数据找数据库 String endDate = param.getEndDate(); String toYear = "2022-01-01 00:00:00"; Date date =null; Date year = null; SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { //使用SimpleDateFormat的parse()方法生成Date date = sf.parse(endDate); year = sf.parse(toYear); } catch (ParseException e) { e.printStackTrace(); } if(date.getTime() getEquipmentStatistics(@RequestBody StatisticsParam param) { // 判断是否为外国 param.setIfForeign(isForeignUser(param.getAdminId())); log.info("param:{}", param); FgObjectUtil.objectNullOrEmptySel(param, "chartType$"); ChartColumn chartColumn = new ChartColumn(); if(StringUtils.isNotEmpty(param.getIfForeign())&¶m.getIfForeign().equals("1")){ //国外 // chartColumn = orderService.getEquipmentStatistics(param); chartColumn = esTEquipmentService.getEquipmentStatistics(param); }else{ //查去年的数据找数据库 String endDate = param.getEndDate(); String toYear = "2022-01-01 00:00:00"; Date date = new Date(); Date year = new Date(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { //使用SimpleDateFormat的parse()方法生成Date date = sf.parse(endDate); year = sf.parse(toYear); } catch (ParseException e) { e.printStackTrace(); } if(date.getTime() query = Wrappers.lambdaQuery(); if (StringUtils.isNotEmpty(sn)) { query.like(TOrder::getSn,sn); } if (StringUtils.isNotEmpty(productName)) { query.like(TOrder::getProductName,productName); } if (StringUtils.isNotEmpty(status)) { if(status.equals("unpay")){ query.eq(TOrder::getStatus,0); } if(status.equals("pay")){ query.eq(TOrder::getStatus,1); } if(status.equals("refund")){ query.eq(TOrder::getStatus,3); } } if (begin != null && end != null) { query.gt(TOrder::getCreateDate,begin); query.lt(TOrder::getCreateDate,end); } query.like(TOrder::getClientId,clientId); int size = pageable.getPageSize(); int current = pageable.getPageNumber(); Page page = new Page<>(current, size, true); IPage iPage = orderService.page(page, query); long total = page.getTotal(); List content = iPage.getRecords(); // List content = page.getContent(); ArrayList orderVos = new ArrayList<>(); for (TOrder order : content) { OrderVo orderVo = new OrderVo(); orderVo.setSn(order.getSn()); orderVo.setProductName(order.getProductName()); orderVo.setPrice(order.getPrice()); orderVo.setTrxNo(order.getTrxNo()); orderVo.setRefundTrxNo(order.getRefundTrxNo()); orderVo.setRefundAmount(order.getRefundAmount()); orderVo.setPayDate(order.getPayDate()); orderVo.setRefundDate(order.getRefundDate()); if(order.getStatus()==0){ orderVo.setStatus(OrderVo.Status.unpay); } if(order.getStatus()==1){ orderVo.setStatus(OrderVo.Status.pay); } if(order.getStatus()==3){ orderVo.setStatus(OrderVo.Status.refund); } orderVo.setCreateDate(order.getCreateDate()); orderVo.setFrp_code(order.getFrpCode()); orderVos.add(orderVo); } JSONObject jsonObject = new JSONObject(); jsonObject.put("total", total); jsonObject.put("orders", com.gexin.fastjson.JSON.toJSONString(orderVos)); return jsonObject.toJSONString(); } /** * 订单数据导出 */ @ApiOperation(value = "订单数据导出-查询") @RequestMapping(value = "/orderSelect", method = RequestMethod.GET) public String orderSelect(String type, String clientId, String username, Date startDate, Date endDate, long current, long size) { if(size>50){ return "error"; } JSONObject jsonObject = new JSONObject(); if (startDate!=null&&endDate!=null) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date begin = null; Date end = null; Long adminId = null; begin = startDate; end = endDate; long time = end.getTime() - begin.getTime(); if(time>31*24*60*60*1000l){ return "时间跨度过长"; } if(!StringUtils.isEmpty(username)){ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(username)); adminId = admin.getId(); } List OrderDaoChuDTOList =orderService.orderDaoChu(simpleDateFormat.format(begin),simpleDateFormat.format(end),adminId,clientId,type,current,size); for(OrderDaoChuDTO orderDaoChuDTO: OrderDaoChuDTOList){ String adminId1 = orderDaoChuDTO.getAdminId().toString(); TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminId1)); if(admin==null){ continue; } orderDaoChuDTO.setPhone(admin.getPhone()); orderDaoChuDTO.setUsername(admin.getUsername()); orderDaoChuDTO.setName(admin.getName()); if(!StringUtils.isEmpty(type)&&type.equals("2")){ //商户为单位 TAdmin parent = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId()))); orderDaoChuDTO.setLastUsername(parent.getUsername()); TArea area = areaService.getById(admin.getAreaId()); if(area!=null){ orderDaoChuDTO.setAddress(area.getFullName()); } List stringList = R.getDataIfSuccess(szwlFeign.getClientIds(String.valueOf(admin.getId()))); orderDaoChuDTO.setEquipmentTotal(String.valueOf(stringList.size())); }else { //设备为单位 TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(String.valueOf(orderDaoChuDTO.getClientId()))); if(equipment!=null){ if(StringUtils.isNotEmpty(equipment.getFullName())){ orderDaoChuDTO.setAddress(equipment.getFullName()); } orderDaoChuDTO.setEquipmentType(equipment.getEquimentType()); orderDaoChuDTO.setCreateDate(equipment.getCreateDate()); } } } jsonObject.put("OrderDaoChuDTOList", OrderDaoChuDTOList); } if(!StringUtils.isEmpty(type)&&type.equals("2")){ IPage iPage = R.getDataIfSuccess(szwlFeign.pageAdmin2(current, size)); }else { IPage page = R.getDataIfSuccess(szwlFeign.pageEquipment2(current, size)); jsonObject.put("page", page); } return jsonObject.toJSONString(); } /** * 订单数据导出 */ @ApiOperation(value = "订单数据导出-导出") @RequestMapping(value = "/orderExport", method = RequestMethod.GET) public Object orderExport(HttpServletResponse response, String type, String clientId, String username, Date startDate, Date endDate, long current, long size) { if(size>500){ return JsonMessage.success("页数过大"); } if (startDate!=null&&endDate!=null) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date begin = null; Date end = null; Long adminId = null; begin = startDate; end = endDate; long time = end.getTime() - begin.getTime(); if(time>31*24*60*60*1000l){ return JsonMessage.success("时间跨度过长"); } if(!StringUtils.isEmpty(username)){ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(username)); adminId = admin.getId(); } List OrderDaoChuDTOList =orderService.orderDaoChu(simpleDateFormat.format(begin),simpleDateFormat.format(end),adminId,clientId,type,current,size); for(OrderDaoChuDTO orderDaoChuDTO: OrderDaoChuDTOList){ Long adminId1 = Long.valueOf(orderDaoChuDTO.getAdminId().toString()); TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminId1.toString())); if(admin==null){ continue; } orderDaoChuDTO.setPhone(admin.getPhone()); orderDaoChuDTO.setUsername(admin.getUsername()); orderDaoChuDTO.setName(admin.getName()); if(!StringUtils.isEmpty(type)&&type.equals("2")){ //商户为单位 TAdmin parent = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId()))); orderDaoChuDTO.setLastUsername(parent.getUsername()); TArea area = areaService.getById(admin.getAreaId()); if(area!=null){ orderDaoChuDTO.setAddress(area.getFullName()); } List stringList = R.getDataIfSuccess(szwlFeign.getClientIds(String.valueOf(admin.getId()))); orderDaoChuDTO.setEquipmentTotal(String.valueOf(stringList.size())); }else { //设备为单位 TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(String.valueOf(orderDaoChuDTO.getClientId()))); if(equipment!=null){ if(StringUtils.isNotEmpty(equipment.getFullName())){ orderDaoChuDTO.setAddress(equipment.getFullName()); } orderDaoChuDTO.setEquipmentType(equipment.getEquimentType()); orderDaoChuDTO.setCreateDate(equipment.getCreateDate()); } } } ExportParams exportParams = new ExportParams("订单记录", "sheet1"); Workbook workbook = null; if(!StringUtils.isEmpty(type)&&type.equals("2")){ List orderByAdminTargetList = new ArrayList<>(); for(OrderDaoChuDTO orderDaoChuDTO: OrderDaoChuDTOList){ OrderByAdminTarget orderByAdminTarget = new OrderByAdminTarget(); orderByAdminTarget.setUsername(orderDaoChuDTO.getUsername()); orderByAdminTarget.setAddress(orderDaoChuDTO.getAddress()); orderByAdminTarget.setEquipmentTotal(orderDaoChuDTO.getEquipmentTotal()); orderByAdminTarget.setLastUsername(orderDaoChuDTO.getLastUsername()); orderByAdminTarget.setPhone(orderDaoChuDTO.getPhone()); orderByAdminTarget.setPriceTotal(orderDaoChuDTO.getPriceTotal()); orderByAdminTarget.setName(orderDaoChuDTO.getName()); orderByAdminTargetList.add(orderByAdminTarget); } workbook = ExcelExportUtil.exportExcel(exportParams, OrderByAdminTarget.class, orderByAdminTargetList); }else { List orderByClientidTargetList = new ArrayList<>(); for(OrderDaoChuDTO orderDaoChuDTO: OrderDaoChuDTOList){ OrderByClientidTarget orderByClientidTarget = new OrderByClientidTarget(); orderByClientidTarget.setAddress(orderDaoChuDTO.getAddress()); orderByClientidTarget.setClientId(orderDaoChuDTO.getClientId()); orderByClientidTarget.setCreateDate(orderDaoChuDTO.getCreateDate()); orderByClientidTarget.setEquipmentType(orderDaoChuDTO.getEquipmentType()); orderByClientidTarget.setName(orderDaoChuDTO.getName()); orderByClientidTarget.setPhone(orderDaoChuDTO.getPhone()); orderByClientidTarget.setPriceTotal(orderDaoChuDTO.getPriceTotal()); orderByClientidTarget.setUsername(orderDaoChuDTO.getUsername()); orderByClientidTargetList.add(orderByClientidTarget); } workbook = ExcelExportUtil.exportExcel(exportParams, OrderByClientidTarget.class, orderByClientidTargetList); } if (workbook != null) { OutputStream os = null; try { os = response.getOutputStream(); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("订单记录数据导出" + format.format(new Date()) + ".xls", "UTF-8")); workbook.write(os); return JsonMessage.success("导出成功"); } catch (Exception e) { e.printStackTrace(); return JsonMessage.success("导出错误"); } finally { try { os.close(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } } } } return JsonMessage.success("导出成功"); } @RequestMapping(value = "/onlineExport", method = RequestMethod.GET) public Object onlineExport(HttpServletResponse response, String adminId,String adminType,String type,String userName,String payType,String productNo,String clientId,String dateType, Date stratDate, Date endDate, long current, long size) { //判断当前账号状态 TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminId)); //类型 //0,线上 if(type.equals("0")){ LambdaQueryWrapper query = Wrappers.lambdaQuery(); //adminType="all"时,代表查全部下级 子账户没有这个权限 公司人员默认查所有人 if(StringUtils.isNotEmpty(adminType)){ if(admin.getIsAdmined()&&admin.getType()>1){ if(admin.getType()>1){ if(adminType.equals("all")){ //查找所有下级 List admidIdList = R.getDataIfSuccess(szwlFeign.getAdminIdList(adminId)); 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,adminId); }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(userName)){ TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdminByUsername(userName)); query.eq(TOrder::getAdminId,admin1.getId()); } if(StringUtils.isNotEmpty(payType)){ query.eq(TOrder::getFrpCode,payType); } if(StringUtils.isNotEmpty(productNo)){ query.eq(TOrder::getProductNo,productNo); } if(StringUtils.isNotEmpty(clientId)){ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId)); //判断机器是否属于这个登陆账号 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(dateType)){ if(dateType.equals("0")){ //创建时间 if(stratDate!=null&&endDate!=null){ query.gt(TOrder::getCreateDate,stratDate); query.lt(TOrder::getCreateDate,endDate); } } if(dateType.equals("1")){ //退款时间 if(stratDate!=null&&endDate!=null){ query.gt(TOrder::getRefundDate,stratDate); query.lt(TOrder::getRefundDate,endDate); } } } Page page = new Page<>(current, size, true); IPage iPage = orderService.page(page, query); List list = iPage.getRecords(); List orderTargetList = orderService.findById(admin, list); ExportParams exportParams = new ExportParams("订单记录", "sheet1"); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, OrderTarget.class, orderTargetList); if (workbook != null) { OutputStream os = null; try { os = response.getOutputStream(); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("订单记录数据导出" + format.format(new Date()) + ".xls", "UTF-8")); workbook.write(os); return JsonMessage.success("导出成功"); } catch (Exception e) { e.printStackTrace(); return JsonMessage.success("导出错误"); } finally { try { os.close(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } } } }; //1,线下 if(type.equals("1")){ LambdaQueryWrapper query = Wrappers.lambdaQuery(); //adminType="all"时,代表查全部下级 子账户没有这个权限 公司人员默认查所有人 if(StringUtils.isNotEmpty(adminType)){ if(admin.getIsAdmined()&&admin.getType()>1){ if(admin.getType()>1){ if(adminType.equals("all")){ //查找所有下级 List admidIdList = R.getDataIfSuccess(szwlFeign.getAdminIdList(adminId)); query.in(TCoinOrder::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(TCoinOrder::getAdminId,upAdmin.getId()); }else { String equipmentIds = adminEquipment.getEquipmentIds(); List equipmentIdList = JSON.parseArray(equipmentIds, String.class); query.in(TCoinOrder::getClientId,equipmentIdList); } } } }else { //判断当前账号状态 公司还是商家 if(admin.getType()>1){ //商家 判断是否子账户 if(admin.getIsAdmined()){ //商家自己 query.eq(TCoinOrder::getAdminId,adminId); }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(TCoinOrder::getAdminId,upAdmin.getId()); }else { String equipmentIds = adminEquipment.getEquipmentIds(); List equipmentIdList = JSON.parseArray(equipmentIds, String.class); query.in(TCoinOrder::getClientId,equipmentIdList); } } } } if(StringUtils.isNotEmpty(userName)){ TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdminByUsername(userName)); query.eq(TCoinOrder::getAdminId,admin1.getId()); } if(StringUtils.isNotEmpty(payType)){ query.eq(TCoinOrder::getPayType,payType); } if(StringUtils.isNotEmpty(productNo)){ query.eq(TCoinOrder::getProductNo,productNo); } if(StringUtils.isNotEmpty(clientId)){ TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId)); //判断机器是否属于这个登陆账号 if(admin.getType()>1){ //商家 if(equipment.getAdminId().toString().equals(admin.getId().toString())){ query.eq(TCoinOrder::getClientId,equipment.getClientId()); } }else { query.eq(TCoinOrder::getClientId,equipment.getClientId()); } } if(stratDate!=null&&endDate!=null){ query.gt(TCoinOrder::getPayDate,stratDate); query.lt(TCoinOrder::getPayDate,endDate); } Page page = new Page<>(current, size, true); IPage iPage = coinOrderService.page(page, query); List list = iPage.getRecords(); List coinOrderTargets = coinOrderService.findByCoinOrder(admin,list); ExportParams exportParams = new ExportParams("线下订单记录", "sheet1"); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, CoinOrderTarget.class, coinOrderTargets); if (workbook != null) { OutputStream os = null; try { os = response.getOutputStream(); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("线下订单记录数据导出" + format.format(new Date()) + ".xls", "UTF-8")); workbook.write(os); return JsonMessage.success("导出成功"); } catch (Exception e) { e.printStackTrace(); return JsonMessage.success("导出错误"); } finally { try { os.close(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } } } } return JsonMessage.success("导出错误"); } }