TOrderController.java 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026
  1. package com.szwl.controller;
  2. import cn.afterturn.easypoi.excel.ExcelExportUtil;
  3. import cn.afterturn.easypoi.excel.entity.ExportParams;
  4. import cn.com.crbank.ommo.bean.ResultMessage;
  5. import cn.com.crbank.ommo.esclient.ElasticsearchRunner;
  6. import com.alibaba.fastjson.JSON;
  7. import com.alibaba.fastjson.JSONObject;
  8. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9. import com.baomidou.mybatisplus.core.metadata.IPage;
  10. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  11. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  12. import com.szwl.feign.SzwlFeign;
  13. import com.szwl.feign.bean.TAdminParam;
  14. import com.szwl.model.bean.ChartColumn;
  15. import com.szwl.model.bean.OrderDaoChuDTO;
  16. import com.szwl.model.bean.OrderVo;
  17. import com.szwl.model.bo.JsonMessage;
  18. import com.szwl.model.bo.R;
  19. import com.szwl.model.bo.ResponseModel;
  20. import com.szwl.model.entity.*;
  21. import com.szwl.model.excel.CoinOrderTarget;
  22. import com.szwl.model.excel.OrderByAdminTarget;
  23. import com.szwl.model.excel.OrderByClientidTarget;
  24. import com.szwl.model.excel.OrderTarget;
  25. import com.szwl.model.query.Filter;
  26. import com.szwl.model.query.Pageable;
  27. import com.szwl.model.query.StatisticsParam;
  28. import com.szwl.model.utils.FgObjectUtil;
  29. import com.szwl.service.TAreaService;
  30. import com.szwl.service.TCoinOrderService;
  31. import com.szwl.service.TOrderService;
  32. import com.szwl.service.es.EsTEquipmentService;
  33. import com.szwl.service.es.EsTOrderService;
  34. import io.swagger.annotations.ApiOperation;
  35. import lombok.extern.slf4j.Slf4j;
  36. import org.apache.commons.lang.StringUtils;
  37. import org.apache.commons.lang.time.DateUtils;
  38. import org.apache.poi.ss.usermodel.Workbook;
  39. import org.springframework.beans.factory.annotation.Autowired;
  40. import org.springframework.http.HttpStatus;
  41. import org.springframework.http.ResponseEntity;
  42. import org.springframework.ui.ModelMap;
  43. import org.springframework.web.bind.annotation.*;
  44. import javax.servlet.http.HttpServletResponse;
  45. import javax.servlet.http.HttpSession;
  46. import java.io.IOException;
  47. import java.io.OutputStream;
  48. import java.net.URLEncoder;
  49. import java.text.ParseException;
  50. import java.text.SimpleDateFormat;
  51. import java.util.ArrayList;
  52. import java.util.Date;
  53. import java.util.List;
  54. import java.util.Optional;
  55. /**
  56. * <p>
  57. * 前端控制器
  58. * </p>
  59. *
  60. * @author wuhs
  61. * @since 2022-06-14
  62. */
  63. @Slf4j
  64. @RestController
  65. @RequestMapping("/tOrder")
  66. public class TOrderController {
  67. @Autowired
  68. TOrderService orderService;
  69. @Autowired
  70. TAreaService areaService;
  71. @Autowired
  72. EsTOrderService esTOrderService;
  73. @Autowired
  74. EsTEquipmentService esTEquipmentService;
  75. @Autowired
  76. TCoinOrderService coinOrderService;
  77. @Autowired
  78. SzwlFeign szwlFeign;
  79. @GetMapping("/pageOrder")
  80. public ResponseModel<IPage<?>> 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 ) {
  81. //判断当前账号状态
  82. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminId));
  83. //类型
  84. //0,线上
  85. if(type.equals("0")){
  86. LambdaQueryWrapper<TOrder> query = Wrappers.lambdaQuery();
  87. //adminType="all"时,代表查全部下级 子账户没有这个权限 公司人员默认查所有人
  88. if(StringUtils.isNotEmpty(adminType)){
  89. if(admin.getIsAdmined().equals("0")&&admin.getType()>1){
  90. if(admin.getType()>1){
  91. if(adminType.equals("all")){
  92. //查找所有下级
  93. List<Long> admidIdList = R.getDataIfSuccess(szwlFeign.getAdminIdList(adminId));
  94. query.in(TOrder::getAdminId,admidIdList);
  95. }
  96. }
  97. }else{
  98. if(admin.getType()>1){
  99. //登录账户为子账户 不查下级 只查对应机器的订单
  100. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
  101. if(adminEquipment.getType().equals("0")){
  102. //全部机器
  103. TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  104. query.eq(TOrder::getAdminId,upAdmin.getId());
  105. }else {
  106. String equipmentIds = adminEquipment.getEquipmentIds();
  107. List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  108. query.in(TOrder::getClientId,equipmentIdList);
  109. }
  110. }
  111. }
  112. }else {
  113. //判断当前账号状态 公司还是商家
  114. if(admin.getType()>1){
  115. //商家 判断是否子账户
  116. if(admin.getIsAdmined()){
  117. //商家自己
  118. query.eq(TOrder::getAdminId,adminId);
  119. }else {
  120. //商家 子账户
  121. //登录账户为子账户 不查下级 只查对应机器的订单
  122. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
  123. if(adminEquipment.getType().equals("0")){
  124. //全部机器
  125. TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  126. query.eq(TOrder::getAdminId,upAdmin.getId());
  127. }else {
  128. String equipmentIds = adminEquipment.getEquipmentIds();
  129. List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  130. query.in(TOrder::getClientId,equipmentIdList);
  131. }
  132. }
  133. }
  134. }
  135. if(StringUtils.isNotEmpty(userName)){
  136. TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdminByUsername(userName));
  137. query.eq(TOrder::getAdminId,admin1.getId());
  138. }
  139. if(StringUtils.isNotEmpty(payType)){
  140. query.eq(TOrder::getFrpCode,payType);
  141. }
  142. if(StringUtils.isNotEmpty(productNo)){
  143. query.eq(TOrder::getProductNo,productNo);
  144. }
  145. if(StringUtils.isNotEmpty(clientId)){
  146. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
  147. //判断机器是否属于这个登陆账号
  148. if(admin.getType()>1){
  149. //商家
  150. if(equipment.getAdminId().toString().equals(admin.getId().toString())){
  151. query.eq(TOrder::getEquipmentId,equipment.getId());
  152. }
  153. }else {
  154. query.eq(TOrder::getEquipmentId,equipment.getId());
  155. }
  156. }
  157. if(StringUtils.isNotEmpty(dateType)){
  158. if(dateType.equals("0")){
  159. //创建时间
  160. if(startDate!=null&&endDate!=null){
  161. query.gt(TOrder::getCreateDate,startDate);
  162. query.lt(TOrder::getCreateDate,endDate);
  163. }
  164. }
  165. if(dateType.equals("1")){
  166. //退款时间
  167. if(startDate!=null&&endDate!=null){
  168. query.gt(TOrder::getRefundDate,startDate);
  169. query.lt(TOrder::getRefundDate,endDate);
  170. }
  171. }
  172. }
  173. Page<TOrder> page = new Page<>(current, size, true);
  174. IPage<TOrder> iPage = orderService.page(page, query);
  175. return R.ok(iPage);
  176. };
  177. //1,线下
  178. if(type.equals("1")){
  179. LambdaQueryWrapper<TCoinOrder> query = Wrappers.lambdaQuery();
  180. //adminType="all"时,代表查全部下级 子账户没有这个权限 公司人员默认查所有人
  181. if(StringUtils.isNotEmpty(adminType)){
  182. if(admin.getIsAdmined()&&admin.getType()>1){
  183. if(admin.getType()>1){
  184. if(adminType.equals("all")){
  185. //查找所有下级
  186. List<Long> admidIdList = R.getDataIfSuccess(szwlFeign.getAdminIdList(adminId));
  187. query.in(TCoinOrder::getAdminId,admidIdList);
  188. }
  189. }
  190. }else{
  191. if(admin.getType()>1){
  192. //登录账户为子账户 不查下级 只查对应机器的订单
  193. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
  194. if(adminEquipment.getType().equals("0")){
  195. //全部机器
  196. TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  197. query.eq(TCoinOrder::getAdminId,upAdmin.getId());
  198. }else {
  199. String equipmentIds = adminEquipment.getEquipmentIds();
  200. List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  201. query.in(TCoinOrder::getClientId,equipmentIdList);
  202. }
  203. }
  204. }
  205. }else {
  206. //判断当前账号状态 公司还是商家
  207. if(admin.getType()>1){
  208. //商家 判断是否子账户
  209. if(admin.getIsAdmined()){
  210. //商家自己
  211. query.eq(TCoinOrder::getAdminId,adminId);
  212. }else {
  213. //商家 子账户
  214. //登录账户为子账户 不查下级 只查对应机器的订单
  215. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
  216. if(adminEquipment.getType().equals("0")){
  217. //全部机器
  218. TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  219. query.eq(TCoinOrder::getAdminId,upAdmin.getId());
  220. }else {
  221. String equipmentIds = adminEquipment.getEquipmentIds();
  222. List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  223. query.in(TCoinOrder::getClientId,equipmentIdList);
  224. }
  225. }
  226. }
  227. }
  228. if(StringUtils.isNotEmpty(userName)){
  229. TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdminByUsername(userName));
  230. query.eq(TCoinOrder::getAdminId,admin1.getId());
  231. }
  232. if(StringUtils.isNotEmpty(payType)){
  233. query.eq(TCoinOrder::getPayType,payType);
  234. }
  235. if(StringUtils.isNotEmpty(productNo)){
  236. query.eq(TCoinOrder::getProductNo,productNo);
  237. }
  238. if(StringUtils.isNotEmpty(clientId)){
  239. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
  240. //判断机器是否属于这个登陆账号
  241. if(admin.getType()>1){
  242. //商家
  243. if(equipment.getAdminId().toString().equals(admin.getId().toString())){
  244. query.eq(TCoinOrder::getClientId,equipment.getClientId());
  245. }
  246. }else {
  247. query.eq(TCoinOrder::getClientId,equipment.getClientId());
  248. }
  249. }
  250. if(startDate!=null&&endDate!=null){
  251. query.gt(TCoinOrder::getPayDate,startDate);
  252. query.lt(TCoinOrder::getPayDate,endDate);
  253. }
  254. Page<TCoinOrder> page = new Page<>(current, size, true);
  255. IPage<TCoinOrder> iPage = coinOrderService.page(page, query);
  256. return R.ok(iPage);
  257. }
  258. return R.ok();
  259. }
  260. /**
  261. * 判断查询用户是否为外国
  262. * @return
  263. */
  264. private String isForeignUser(String userId){
  265. if(StringUtils.isNotEmpty(userId)){
  266. try {
  267. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(userId));
  268. return admin.getIfForeign();
  269. } catch (NumberFormatException e) {
  270. }
  271. }
  272. return "0";
  273. }
  274. @ApiOperation(value = "获取首页数据统计")
  275. @PostMapping("/getStatistics")
  276. public ResponseEntity<?> getStatistics(@RequestBody StatisticsParam param) {
  277. // 判断是否为外国
  278. param.setIfForeign(isForeignUser(param.getAdminId()));
  279. log.info("param:{}", param);
  280. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(param.getAdminId()));
  281. if(admin.getType()<2){
  282. param.setAdminId(null);
  283. if(param.getEquipmentId()!=null){
  284. //查机器
  285. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId()));
  286. param.setClientId(equipment.getClientId());
  287. }
  288. if(StringUtils.isNotEmpty(param.getClientId())){
  289. //补全clientId
  290. TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  291. param.setClientId(tEquipment.getClientId());
  292. param.setClientId(tEquipment.getClientId());
  293. }
  294. }else {
  295. if(admin.getType()==2){
  296. //商家
  297. if(param.getEquipmentId()!=null){
  298. //查机器
  299. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId()));
  300. param.setClientId(equipment.getClientId());
  301. }
  302. if(StringUtils.isNotEmpty(param.getClientId())){
  303. param.setAdminId(null);
  304. //判断是否是这个商家的
  305. TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  306. if(tEquipment.getAdminId().toString().equals(admin.getId().toString())){
  307. param.setClientId(tEquipment.getClientId());
  308. param.setEquipmentId(String.valueOf(tEquipment.getId()));
  309. }
  310. }
  311. }
  312. if(admin.getType()==3){
  313. //子账户只能查相对的机器的订单
  314. //商家子账户
  315. if(param.getEquipmentId()!=null){
  316. //查机器
  317. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId()));
  318. param.setClientId(equipment.getClientId());
  319. }else{
  320. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getId())));
  321. if(adminEquipment.getType().equals("0")){
  322. TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  323. param.setAdminId(admin1.getId().toString());
  324. }else {
  325. List<String> list = R.getDataIfSuccess(szwlFeign.getClientIds(param.getAdminId()));
  326. param.setClientIds(list);
  327. }
  328. }
  329. if(StringUtils.isNotEmpty(param.getClientId())){
  330. param.setAdminId(null);
  331. //判断是否是这个子账号的
  332. TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  333. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getId())));
  334. if(adminEquipment.getType().equals("0")){
  335. TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  336. if(tEquipment.getAdminId().toString().equals(admin1.getId())){
  337. param.setAdminId(null);
  338. param.setClientId(tEquipment.getClientId());
  339. param.setEquipmentId(String.valueOf(tEquipment.getId()));
  340. }
  341. }else {
  342. int i = 0;
  343. List<String> list = R.getDataIfSuccess(szwlFeign.getClientIds(param.getAdminId()));
  344. if(list.size()>0){
  345. for(String clientID:list){
  346. if(clientID.equals(tEquipment.getClientId())){
  347. i++;
  348. }
  349. }
  350. }
  351. if(i>0){
  352. param.setClientId(tEquipment.getClientId());
  353. param.setEquipmentId(String.valueOf(tEquipment.getId()));
  354. }
  355. }
  356. }
  357. }
  358. }
  359. if(StringUtils.isNotEmpty(param.getUsername())){
  360. if(param.getUsername().equals("all")){
  361. //商家查全部
  362. //判断是不是商家账户
  363. if(admin.getType()==3){
  364. //查下级账户id集合
  365. List<Long> list = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
  366. if(list.size()>0){
  367. param.setAdminIds(list);
  368. param.setAdminId(null);
  369. }
  370. }
  371. }
  372. }
  373. FgObjectUtil.objectNullOrEmptySel(param, "chartType$");
  374. ChartColumn chartColumn = new ChartColumn();
  375. if(StringUtils.isNotEmpty(param.getIfForeign())&&param.getIfForeign().equals("1")){
  376. if(StringUtils.isNotEmpty(param.getPayType())&&param.getPayType().equals("all")){
  377. param.setPayType(null);
  378. }
  379. //国外查MYSQL
  380. chartColumn = orderService.getStatistics(param);
  381. }else{
  382. //查去年的数据找数据库
  383. String endDate = param.getEndDate();
  384. String toYear = "2022-01-01 00:00:00";
  385. Date date =null;
  386. Date year = null;
  387. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  388. try {
  389. //使用SimpleDateFormat的parse()方法生成Date
  390. date = sf.parse(endDate);
  391. year = sf.parse(toYear);
  392. } catch (ParseException e) {
  393. e.printStackTrace();
  394. }
  395. if(date.getTime()<year.getTime()){
  396. chartColumn = orderService.getStatistics(param);
  397. }else {
  398. if (ElasticsearchRunner.ES_RUNNING) {
  399. try {
  400. // 查es
  401. chartColumn = esTOrderService.getStatistics(param);
  402. }catch (Exception e){
  403. log.error("使用es 查询发生错误:{}",e);
  404. // 查 mysql
  405. // chartColumn = tOrderService.getStatistics(param);
  406. }
  407. }else{
  408. // 查 mysql
  409. // chartColumn = tOrderService.getStatistics(param);
  410. }
  411. }
  412. }
  413. // if (ElasticsearchRunner.ES_RUNNING) {
  414. // try {
  415. // // 查es
  416. // chartColumn = esTOrderService.getStatistics(param);
  417. // }catch (Exception e){
  418. // log.error("使用es 查询发生错误:{}",e);
  419. // // 查 mysql
  420. // chartColumn = tOrderService.getStatistics(param);
  421. // }
  422. // }else{
  423. // // 查 mysql
  424. // chartColumn = tOrderService.getStatistics(param);
  425. // }
  426. return ResponseEntity
  427. .status(HttpStatus.OK)
  428. .body(new ResultMessage()
  429. .setCode(true)
  430. .setData(chartColumn)
  431. .setMessage("SUCCESS"));
  432. }
  433. /**
  434. * 统计 机器销售排行
  435. * @param param
  436. * @return
  437. */
  438. @ApiOperation(value = "机器销售排行统计")
  439. @PostMapping("/getEquipmentStatistics")
  440. public ResponseEntity<?> getEquipmentStatistics(@RequestBody StatisticsParam param) {
  441. // 判断是否为外国
  442. param.setIfForeign(isForeignUser(param.getAdminId()));
  443. log.info("param:{}", param);
  444. FgObjectUtil.objectNullOrEmptySel(param, "chartType$");
  445. ChartColumn chartColumn = new ChartColumn();
  446. if(StringUtils.isNotEmpty(param.getIfForeign())&&param.getIfForeign().equals("1")){
  447. //国外
  448. // chartColumn = orderService.getEquipmentStatistics(param);
  449. chartColumn = esTEquipmentService.getEquipmentStatistics(param);
  450. }else{
  451. //查去年的数据找数据库
  452. String endDate = param.getEndDate();
  453. String toYear = "2022-01-01 00:00:00";
  454. Date date = new Date();
  455. Date year = new Date();
  456. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  457. try {
  458. //使用SimpleDateFormat的parse()方法生成Date
  459. date = sf.parse(endDate);
  460. year = sf.parse(toYear);
  461. } catch (ParseException e) {
  462. e.printStackTrace();
  463. }
  464. if(date.getTime()<year.getTime()){
  465. chartColumn = orderService.getEquipmentStatistics(param);
  466. }else {
  467. if (ElasticsearchRunner.ES_RUNNING) {
  468. try {
  469. // 查es
  470. chartColumn = esTEquipmentService.getEquipmentStatistics(param);
  471. }catch (Exception e){
  472. log.error("使用es 查询发生错误:{}",e);
  473. // 查 mysql
  474. // chartColumn = tOrderService.getStatistics(param);
  475. }
  476. }else{
  477. // 查 mysql
  478. // chartColumn = tOrderService.getStatistics(param);
  479. }
  480. }
  481. // if (ElasticsearchRunner.ES_RUNNING) {
  482. // try {
  483. // // 查es
  484. // chartColumn = esTEquipmentService.getEquipmentStatistics(param);
  485. // }catch (Exception e){
  486. // log.error("使用es 查询发生错误:{}",e);
  487. // // 查 mysql
  488. //// chartColumn = tOrderService.getEquipmentStatistics(param);
  489. // }
  490. // }else{
  491. // // 查 mysql
  492. //// chartColumn = tOrderService.getEquipmentStatistics(param);
  493. // }
  494. }
  495. // try {
  496. // // 查es
  497. // chartColumn = esTEquipmentService.getEquipmentStatistics(param);
  498. // }catch (Exception e){
  499. // log.error("使用es 查询发生错误:{}",e);
  500. // // 查 mysql
  501. //// chartColumn = tOrderService.getEquipmentStatistics(param);
  502. // }
  503. // if (ElasticsearchRunner.ES_RUNNING) {
  504. // try {
  505. // // 查es
  506. // chartColumn = esTEquipmentService.getEquipmentStatistics(param);
  507. // }catch (Exception e){
  508. // log.error("使用es 查询发生错误:{}",e);
  509. // // 查 mysql
  510. // chartColumn = tOrderService.getEquipmentStatistics(param);
  511. // }
  512. // }else{
  513. // // 查 mysql
  514. // chartColumn = tOrderService.getEquipmentStatistics(param);
  515. // }
  516. return ResponseEntity
  517. .status(HttpStatus.OK)
  518. .body(new ResultMessage()
  519. .setCode(true)
  520. .setData(chartColumn)
  521. .setMessage("SUCCESS"));
  522. }
  523. //查询线上订单
  524. @ApiOperation(value = "查询线上订单")
  525. @RequestMapping(value = "/findOrder", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
  526. @ResponseBody
  527. public Object findOrder(String clientId, String sn, String productName, String status, Date begin, Date end, Pageable pageable) {
  528. LambdaQueryWrapper<TOrder> query = Wrappers.lambdaQuery();
  529. if (StringUtils.isNotEmpty(sn)) {
  530. query.like(TOrder::getSn,sn);
  531. }
  532. if (StringUtils.isNotEmpty(productName)) {
  533. query.like(TOrder::getProductName,productName);
  534. }
  535. if (StringUtils.isNotEmpty(status)) {
  536. if(status.equals("unpay")){
  537. query.eq(TOrder::getStatus,0);
  538. }
  539. if(status.equals("pay")){
  540. query.eq(TOrder::getStatus,1);
  541. }
  542. if(status.equals("refund")){
  543. query.eq(TOrder::getStatus,3);
  544. }
  545. }
  546. if (begin != null && end != null) {
  547. query.gt(TOrder::getCreateDate,begin);
  548. query.lt(TOrder::getCreateDate,end);
  549. }
  550. query.like(TOrder::getClientId,clientId);
  551. int size = pageable.getPageSize();
  552. int current = pageable.getPageNumber();
  553. Page<TOrder> page = new Page<>(current, size, true);
  554. IPage<TOrder> iPage = orderService.page(page, query);
  555. long total = page.getTotal();
  556. List<TOrder> content = iPage.getRecords();
  557. // List<Order> content = page.getContent();
  558. ArrayList<OrderVo> orderVos = new ArrayList<>();
  559. for (TOrder order : content) {
  560. OrderVo orderVo = new OrderVo();
  561. orderVo.setSn(order.getSn());
  562. orderVo.setProductName(order.getProductName());
  563. orderVo.setPrice(order.getPrice());
  564. orderVo.setTrxNo(order.getTrxNo());
  565. orderVo.setRefundTrxNo(order.getRefundTrxNo());
  566. orderVo.setRefundAmount(order.getRefundAmount());
  567. orderVo.setPayDate(order.getPayDate());
  568. orderVo.setRefundDate(order.getRefundDate());
  569. if(order.getStatus()==0){
  570. orderVo.setStatus(OrderVo.Status.unpay);
  571. }
  572. if(order.getStatus()==1){
  573. orderVo.setStatus(OrderVo.Status.pay);
  574. }
  575. if(order.getStatus()==3){
  576. orderVo.setStatus(OrderVo.Status.refund);
  577. }
  578. orderVo.setCreateDate(order.getCreateDate());
  579. orderVo.setFrp_code(order.getFrpCode());
  580. orderVos.add(orderVo);
  581. }
  582. JSONObject jsonObject = new JSONObject();
  583. jsonObject.put("total", total);
  584. jsonObject.put("orders", com.gexin.fastjson.JSON.toJSONString(orderVos));
  585. return jsonObject.toJSONString();
  586. }
  587. /**
  588. * 订单数据导出
  589. */
  590. @ApiOperation(value = "订单数据导出-查询")
  591. @RequestMapping(value = "/orderSelect", method = RequestMethod.GET)
  592. public String orderSelect(String type, String clientId, String username, Date startDate, Date endDate, long current, long size) {
  593. if(size>50){
  594. return "error";
  595. }
  596. JSONObject jsonObject = new JSONObject();
  597. if (startDate!=null&&endDate!=null) {
  598. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
  599. Date begin = null;
  600. Date end = null;
  601. Long adminId = null;
  602. begin = startDate;
  603. end = endDate;
  604. long time = end.getTime() - begin.getTime();
  605. if(time>31*24*60*60*1000l){
  606. return "时间跨度过长";
  607. }
  608. if(!StringUtils.isEmpty(username)){
  609. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(username));
  610. adminId = admin.getId();
  611. }
  612. List<OrderDaoChuDTO> OrderDaoChuDTOList =orderService.orderDaoChu(simpleDateFormat.format(begin),simpleDateFormat.format(end),adminId,clientId,type,current,size);
  613. for(OrderDaoChuDTO orderDaoChuDTO: OrderDaoChuDTOList){
  614. String adminId1 = orderDaoChuDTO.getAdminId().toString();
  615. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminId1));
  616. if(admin==null){
  617. continue;
  618. }
  619. orderDaoChuDTO.setPhone(admin.getPhone());
  620. orderDaoChuDTO.setUsername(admin.getUsername());
  621. orderDaoChuDTO.setName(admin.getName());
  622. if(!StringUtils.isEmpty(type)&&type.equals("2")){
  623. //商户为单位
  624. TAdmin parent = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  625. orderDaoChuDTO.setLastUsername(parent.getUsername());
  626. TArea area = areaService.getById(admin.getAreaId());
  627. if(area!=null){
  628. orderDaoChuDTO.setAddress(area.getFullName());
  629. }
  630. List<String> stringList = R.getDataIfSuccess(szwlFeign.getClientIds(String.valueOf(admin.getId())));
  631. orderDaoChuDTO.setEquipmentTotal(String.valueOf(stringList.size()));
  632. }else {
  633. //设备为单位
  634. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(String.valueOf(orderDaoChuDTO.getClientId())));
  635. if(equipment!=null){
  636. if(StringUtils.isNotEmpty(equipment.getFullName())){
  637. orderDaoChuDTO.setAddress(equipment.getFullName());
  638. }
  639. orderDaoChuDTO.setEquipmentType(equipment.getEquimentType());
  640. orderDaoChuDTO.setCreateDate(equipment.getCreateDate());
  641. }
  642. }
  643. }
  644. jsonObject.put("OrderDaoChuDTOList", OrderDaoChuDTOList);
  645. }
  646. if(!StringUtils.isEmpty(type)&&type.equals("2")){
  647. IPage<TAdmin> iPage = R.getDataIfSuccess(szwlFeign.pageAdmin2(current, size));
  648. }else {
  649. IPage<TEquipment> page = R.getDataIfSuccess(szwlFeign.pageEquipment2(current, size));
  650. jsonObject.put("page", page);
  651. }
  652. return jsonObject.toJSONString();
  653. }
  654. /**
  655. * 订单数据导出
  656. */
  657. @ApiOperation(value = "订单数据导出-导出")
  658. @RequestMapping(value = "/orderExport", method = RequestMethod.GET)
  659. public Object orderExport(HttpServletResponse response, String type, String clientId, String username, Date startDate, Date endDate, long current, long size) {
  660. if(size>500){
  661. return JsonMessage.success("页数过大");
  662. }
  663. if (startDate!=null&&endDate!=null) {
  664. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
  665. Date begin = null;
  666. Date end = null;
  667. Long adminId = null;
  668. begin = startDate;
  669. end = endDate;
  670. long time = end.getTime() - begin.getTime();
  671. if(time>31*24*60*60*1000l){
  672. return JsonMessage.success("时间跨度过长");
  673. }
  674. if(!StringUtils.isEmpty(username)){
  675. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(username));
  676. adminId = admin.getId();
  677. }
  678. List<OrderDaoChuDTO> OrderDaoChuDTOList =orderService.orderDaoChu(simpleDateFormat.format(begin),simpleDateFormat.format(end),adminId,clientId,type,current,size);
  679. for(OrderDaoChuDTO orderDaoChuDTO: OrderDaoChuDTOList){
  680. Long adminId1 = Long.valueOf(orderDaoChuDTO.getAdminId().toString());
  681. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminId1.toString()));
  682. if(admin==null){
  683. continue;
  684. }
  685. orderDaoChuDTO.setPhone(admin.getPhone());
  686. orderDaoChuDTO.setUsername(admin.getUsername());
  687. orderDaoChuDTO.setName(admin.getName());
  688. if(!StringUtils.isEmpty(type)&&type.equals("2")){
  689. //商户为单位
  690. TAdmin parent = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  691. orderDaoChuDTO.setLastUsername(parent.getUsername());
  692. TArea area = areaService.getById(admin.getAreaId());
  693. if(area!=null){
  694. orderDaoChuDTO.setAddress(area.getFullName());
  695. }
  696. List<String> stringList = R.getDataIfSuccess(szwlFeign.getClientIds(String.valueOf(admin.getId())));
  697. orderDaoChuDTO.setEquipmentTotal(String.valueOf(stringList.size()));
  698. }else {
  699. //设备为单位
  700. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(String.valueOf(orderDaoChuDTO.getClientId())));
  701. if(equipment!=null){
  702. if(StringUtils.isNotEmpty(equipment.getFullName())){
  703. orderDaoChuDTO.setAddress(equipment.getFullName());
  704. }
  705. orderDaoChuDTO.setEquipmentType(equipment.getEquimentType());
  706. orderDaoChuDTO.setCreateDate(equipment.getCreateDate());
  707. }
  708. }
  709. }
  710. ExportParams exportParams = new ExportParams("订单记录", "sheet1");
  711. Workbook workbook = null;
  712. if(!StringUtils.isEmpty(type)&&type.equals("2")){
  713. List<OrderByAdminTarget> orderByAdminTargetList = new ArrayList<>();
  714. for(OrderDaoChuDTO orderDaoChuDTO: OrderDaoChuDTOList){
  715. OrderByAdminTarget orderByAdminTarget = new OrderByAdminTarget();
  716. orderByAdminTarget.setUsername(orderDaoChuDTO.getUsername());
  717. orderByAdminTarget.setAddress(orderDaoChuDTO.getAddress());
  718. orderByAdminTarget.setEquipmentTotal(orderDaoChuDTO.getEquipmentTotal());
  719. orderByAdminTarget.setLastUsername(orderDaoChuDTO.getLastUsername());
  720. orderByAdminTarget.setPhone(orderDaoChuDTO.getPhone());
  721. orderByAdminTarget.setPriceTotal(orderDaoChuDTO.getPriceTotal());
  722. orderByAdminTarget.setName(orderDaoChuDTO.getName());
  723. orderByAdminTargetList.add(orderByAdminTarget);
  724. }
  725. workbook = ExcelExportUtil.exportExcel(exportParams, OrderByAdminTarget.class, orderByAdminTargetList);
  726. }else {
  727. List<OrderByClientidTarget> orderByClientidTargetList = new ArrayList<>();
  728. for(OrderDaoChuDTO orderDaoChuDTO: OrderDaoChuDTOList){
  729. OrderByClientidTarget orderByClientidTarget = new OrderByClientidTarget();
  730. orderByClientidTarget.setAddress(orderDaoChuDTO.getAddress());
  731. orderByClientidTarget.setClientId(orderDaoChuDTO.getClientId());
  732. orderByClientidTarget.setCreateDate(orderDaoChuDTO.getCreateDate());
  733. orderByClientidTarget.setEquipmentType(orderDaoChuDTO.getEquipmentType());
  734. orderByClientidTarget.setName(orderDaoChuDTO.getName());
  735. orderByClientidTarget.setPhone(orderDaoChuDTO.getPhone());
  736. orderByClientidTarget.setPriceTotal(orderDaoChuDTO.getPriceTotal());
  737. orderByClientidTarget.setUsername(orderDaoChuDTO.getUsername());
  738. orderByClientidTargetList.add(orderByClientidTarget);
  739. }
  740. workbook = ExcelExportUtil.exportExcel(exportParams, OrderByClientidTarget.class, orderByClientidTargetList);
  741. }
  742. if (workbook != null) {
  743. OutputStream os = null;
  744. try {
  745. os = response.getOutputStream();
  746. SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
  747. response.setContentType("application/vnd.ms-excel;charset=utf-8");
  748. response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("订单记录数据导出" + format.format(new Date()) + ".xls", "UTF-8"));
  749. workbook.write(os);
  750. return JsonMessage.success("导出成功");
  751. } catch (Exception e) {
  752. e.printStackTrace();
  753. return JsonMessage.success("导出错误");
  754. } finally {
  755. try {
  756. os.close();
  757. workbook.close();
  758. } catch (IOException e) {
  759. e.printStackTrace();
  760. }
  761. }
  762. }
  763. }
  764. return JsonMessage.success("导出成功");
  765. }
  766. @RequestMapping(value = "/onlineExport", method = RequestMethod.GET)
  767. 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) {
  768. //判断当前账号状态
  769. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminId));
  770. //类型
  771. //0,线上
  772. if(type.equals("0")){
  773. LambdaQueryWrapper<TOrder> query = Wrappers.lambdaQuery();
  774. //adminType="all"时,代表查全部下级 子账户没有这个权限 公司人员默认查所有人
  775. if(StringUtils.isNotEmpty(adminType)){
  776. if(admin.getIsAdmined()&&admin.getType()>1){
  777. if(admin.getType()>1){
  778. if(adminType.equals("all")){
  779. //查找所有下级
  780. List<Long> admidIdList = R.getDataIfSuccess(szwlFeign.getAdminIdList(adminId));
  781. query.in(TOrder::getAdminId,admidIdList);
  782. }
  783. }
  784. }else{
  785. if(admin.getType()>1){
  786. //登录账户为子账户 不查下级 只查对应机器的订单
  787. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
  788. if(adminEquipment.getType().equals("0")){
  789. //全部机器
  790. TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  791. query.eq(TOrder::getAdminId,upAdmin.getId());
  792. }else {
  793. String equipmentIds = adminEquipment.getEquipmentIds();
  794. List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  795. query.in(TOrder::getClientId,equipmentIdList);
  796. }
  797. }
  798. }
  799. }else {
  800. //判断当前账号状态 公司还是商家
  801. if(admin.getType()>1){
  802. //商家 判断是否子账户
  803. if(admin.getIsAdmined()){
  804. //商家自己
  805. query.eq(TOrder::getAdminId,adminId);
  806. }else {
  807. //商家 子账户
  808. //登录账户为子账户 不查下级 只查对应机器的订单
  809. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
  810. if(adminEquipment.getType().equals("0")){
  811. //全部机器
  812. TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  813. query.eq(TOrder::getAdminId,upAdmin.getId());
  814. }else {
  815. String equipmentIds = adminEquipment.getEquipmentIds();
  816. List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  817. query.in(TOrder::getClientId,equipmentIdList);
  818. }
  819. }
  820. }
  821. }
  822. if(StringUtils.isNotEmpty(userName)){
  823. TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdminByUsername(userName));
  824. query.eq(TOrder::getAdminId,admin1.getId());
  825. }
  826. if(StringUtils.isNotEmpty(payType)){
  827. query.eq(TOrder::getFrpCode,payType);
  828. }
  829. if(StringUtils.isNotEmpty(productNo)){
  830. query.eq(TOrder::getProductNo,productNo);
  831. }
  832. if(StringUtils.isNotEmpty(clientId)){
  833. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
  834. //判断机器是否属于这个登陆账号
  835. if(admin.getType()>1){
  836. //商家
  837. if(equipment.getAdminId().toString().equals(admin.getId().toString())){
  838. query.eq(TOrder::getEquipmentId,equipment.getId());
  839. }
  840. }else {
  841. query.eq(TOrder::getEquipmentId,equipment.getId());
  842. }
  843. }
  844. if(StringUtils.isNotEmpty(dateType)){
  845. if(dateType.equals("0")){
  846. //创建时间
  847. if(stratDate!=null&&endDate!=null){
  848. query.gt(TOrder::getCreateDate,stratDate);
  849. query.lt(TOrder::getCreateDate,endDate);
  850. }
  851. }
  852. if(dateType.equals("1")){
  853. //退款时间
  854. if(stratDate!=null&&endDate!=null){
  855. query.gt(TOrder::getRefundDate,stratDate);
  856. query.lt(TOrder::getRefundDate,endDate);
  857. }
  858. }
  859. }
  860. Page<TOrder> page = new Page<>(current, size, true);
  861. IPage<TOrder> iPage = orderService.page(page, query);
  862. List<TOrder> list = iPage.getRecords();
  863. List<OrderTarget> orderTargetList = orderService.findById(admin, list);
  864. ExportParams exportParams = new ExportParams("订单记录", "sheet1");
  865. Workbook workbook = ExcelExportUtil.exportExcel(exportParams, OrderTarget.class, orderTargetList);
  866. if (workbook != null) {
  867. OutputStream os = null;
  868. try {
  869. os = response.getOutputStream();
  870. SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
  871. response.setContentType("application/vnd.ms-excel;charset=utf-8");
  872. response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("订单记录数据导出" + format.format(new Date()) + ".xls", "UTF-8"));
  873. workbook.write(os);
  874. return JsonMessage.success("导出成功");
  875. } catch (Exception e) {
  876. e.printStackTrace();
  877. return JsonMessage.success("导出错误");
  878. } finally {
  879. try {
  880. os.close();
  881. workbook.close();
  882. } catch (IOException e) {
  883. e.printStackTrace();
  884. }
  885. }
  886. }
  887. };
  888. //1,线下
  889. if(type.equals("1")){
  890. LambdaQueryWrapper<TCoinOrder> query = Wrappers.lambdaQuery();
  891. //adminType="all"时,代表查全部下级 子账户没有这个权限 公司人员默认查所有人
  892. if(StringUtils.isNotEmpty(adminType)){
  893. if(admin.getIsAdmined()&&admin.getType()>1){
  894. if(admin.getType()>1){
  895. if(adminType.equals("all")){
  896. //查找所有下级
  897. List<Long> admidIdList = R.getDataIfSuccess(szwlFeign.getAdminIdList(adminId));
  898. query.in(TCoinOrder::getAdminId,admidIdList);
  899. }
  900. }
  901. }else{
  902. if(admin.getType()>1){
  903. //登录账户为子账户 不查下级 只查对应机器的订单
  904. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
  905. if(adminEquipment.getType().equals("0")){
  906. //全部机器
  907. TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  908. query.eq(TCoinOrder::getAdminId,upAdmin.getId());
  909. }else {
  910. String equipmentIds = adminEquipment.getEquipmentIds();
  911. List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  912. query.in(TCoinOrder::getClientId,equipmentIdList);
  913. }
  914. }
  915. }
  916. }else {
  917. //判断当前账号状态 公司还是商家
  918. if(admin.getType()>1){
  919. //商家 判断是否子账户
  920. if(admin.getIsAdmined()){
  921. //商家自己
  922. query.eq(TCoinOrder::getAdminId,adminId);
  923. }else {
  924. //商家 子账户
  925. //登录账户为子账户 不查下级 只查对应机器的订单
  926. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
  927. if(adminEquipment.getType().equals("0")){
  928. //全部机器
  929. TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  930. query.eq(TCoinOrder::getAdminId,upAdmin.getId());
  931. }else {
  932. String equipmentIds = adminEquipment.getEquipmentIds();
  933. List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  934. query.in(TCoinOrder::getClientId,equipmentIdList);
  935. }
  936. }
  937. }
  938. }
  939. if(StringUtils.isNotEmpty(userName)){
  940. TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdminByUsername(userName));
  941. query.eq(TCoinOrder::getAdminId,admin1.getId());
  942. }
  943. if(StringUtils.isNotEmpty(payType)){
  944. query.eq(TCoinOrder::getPayType,payType);
  945. }
  946. if(StringUtils.isNotEmpty(productNo)){
  947. query.eq(TCoinOrder::getProductNo,productNo);
  948. }
  949. if(StringUtils.isNotEmpty(clientId)){
  950. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
  951. //判断机器是否属于这个登陆账号
  952. if(admin.getType()>1){
  953. //商家
  954. if(equipment.getAdminId().toString().equals(admin.getId().toString())){
  955. query.eq(TCoinOrder::getClientId,equipment.getClientId());
  956. }
  957. }else {
  958. query.eq(TCoinOrder::getClientId,equipment.getClientId());
  959. }
  960. }
  961. if(stratDate!=null&&endDate!=null){
  962. query.gt(TCoinOrder::getPayDate,stratDate);
  963. query.lt(TCoinOrder::getPayDate,endDate);
  964. }
  965. Page<TCoinOrder> page = new Page<>(current, size, true);
  966. IPage<TCoinOrder> iPage = coinOrderService.page(page, query);
  967. List<TCoinOrder> list = iPage.getRecords();
  968. List<CoinOrderTarget> coinOrderTargets = coinOrderService.findByCoinOrder(admin,list);
  969. ExportParams exportParams = new ExportParams("线下订单记录", "sheet1");
  970. Workbook workbook = ExcelExportUtil.exportExcel(exportParams, CoinOrderTarget.class, coinOrderTargets);
  971. if (workbook != null) {
  972. OutputStream os = null;
  973. try {
  974. os = response.getOutputStream();
  975. SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
  976. response.setContentType("application/vnd.ms-excel;charset=utf-8");
  977. response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("线下订单记录数据导出" + format.format(new Date()) + ".xls", "UTF-8"));
  978. workbook.write(os);
  979. return JsonMessage.success("导出成功");
  980. } catch (Exception e) {
  981. e.printStackTrace();
  982. return JsonMessage.success("导出错误");
  983. } finally {
  984. try {
  985. os.close();
  986. workbook.close();
  987. } catch (IOException e) {
  988. e.printStackTrace();
  989. }
  990. }
  991. }
  992. }
  993. return JsonMessage.success("导出错误");
  994. }
  995. }