TOrderServiceImpl.java 74 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493
  1. package com.szwl.service.impl;
  2. import cn.hutool.core.util.RandomUtil;
  3. import com.alibaba.excel.EasyExcel;
  4. import com.alibaba.excel.ExcelWriter;
  5. import com.alibaba.excel.write.metadata.WriteSheet;
  6. import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
  7. import com.alibaba.fastjson.JSON;
  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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  13. import com.szwl.exception.MyException;
  14. import com.szwl.feign.SzwlFeign;
  15. import com.szwl.mapper.TCoinOrderMapper;
  16. import com.szwl.mapper.TOrderMapper;
  17. import com.szwl.model.bean.ChartBean;
  18. import com.szwl.model.bean.ChartColumn;
  19. import com.szwl.model.bean.OrderDaoChuDTO;
  20. import com.szwl.model.bo.ChartType;
  21. import com.szwl.model.bo.R;
  22. import com.szwl.model.bo.ResponseModel;
  23. import com.szwl.model.dto.OrderDto;
  24. import com.szwl.model.entity.*;
  25. import com.szwl.model.excel.NewOrderTarget;
  26. import com.szwl.model.excel.OrderTarget;
  27. import com.szwl.model.excel.StatisticsAdminTarget;
  28. import com.szwl.model.excel.StatisticsClientIdTarget;
  29. import com.szwl.model.query.OrderDaoChuParam;
  30. import com.szwl.model.query.OrderStatisticsDTO;
  31. import com.szwl.model.query.StatisticsParam;
  32. import com.szwl.model.utils.DateUtils;
  33. import com.szwl.service.OrderStatisticsMonthService;
  34. import com.szwl.service.OrderStatisticsYearService;
  35. import com.szwl.service.RefundSendRecordService;
  36. import com.szwl.service.TOrderService;
  37. import com.szwl.util.YunPianSms;
  38. import org.apache.commons.collections4.CollectionUtils;
  39. import org.apache.commons.lang.StringUtils;
  40. import org.springframework.beans.factory.annotation.Autowired;
  41. import org.springframework.stereotype.Service;
  42. import javax.annotation.Resource;
  43. import javax.servlet.http.HttpServletResponse;
  44. import java.io.IOException;
  45. import java.net.URLEncoder;
  46. import java.text.ParseException;
  47. import java.text.SimpleDateFormat;
  48. import java.util.*;
  49. import java.util.concurrent.CountDownLatch;
  50. import java.util.concurrent.ExecutorService;
  51. import java.util.concurrent.Executors;
  52. /**
  53. * <p>
  54. * 服务实现类
  55. * </p>
  56. *
  57. * @author wuhs
  58. * @since 2022-06-14
  59. */
  60. @Service
  61. public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements TOrderService {
  62. @Resource
  63. TOrderMapper tOrderMapper;
  64. @Autowired
  65. private TCoinOrderMapper tCoinOrderMapper;
  66. @Autowired
  67. OrderStatisticsMonthService orderStatisticsMonthService;
  68. @Autowired
  69. OrderStatisticsYearService orderStatisticsYearService;
  70. @Autowired
  71. TAreaServiceImpl areaService;
  72. @Autowired
  73. SzwlFeign szwlFeign;
  74. @Autowired
  75. private RefundSendRecordService refundSendRecordService;
  76. private static final String appid = "07784f5fedb508046c841b391005b7de";
  77. private static final String CALLBACK_URL = "https://sz.sunzee.com.cn/ORDER-SERVER/refundSendRecord/callBack";
  78. //首页统计
  79. @Override
  80. public ChartColumn getStatistics(StatisticsParam param) {
  81. List<ChartBean> list = new ArrayList<>();
  82. String msg = "";
  83. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  84. try {
  85. //使用SimpleDateFormat的parse()方法生成Date
  86. Date start = sf.parse(param.getStartDate());
  87. Date end = sf.parse(param.getEndDate());
  88. SimpleDateFormat endsf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
  89. param.setStartDate(endsf.format(start));
  90. param.setEndDate(endsf.format(end));
  91. } catch (ParseException e) {
  92. e.printStackTrace();
  93. }
  94. if (ChartType.day.toString().equals(param.getChartType())) {
  95. list = tOrderMapper.getDayStatistics(param);
  96. msg = "日统计";
  97. }
  98. if (ChartType.week.toString().equals(param.getChartType())) {
  99. list = tOrderMapper.getWeekStatistics(param);
  100. msg = "周统计";
  101. }
  102. if (ChartType.month.toString().equals(param.getChartType())) {
  103. list = tOrderMapper.getMonthStatistics(param);
  104. msg = "月统计";
  105. }
  106. if (ChartType.year.toString().equals(param.getChartType())) {
  107. list = tOrderMapper.getYearStatistics(param);
  108. msg = "年统计";
  109. }
  110. // if (CollectionUtils.isEmpty(list)) {
  111. // throw new MyException("获取" + msg + "数据为空");
  112. // }
  113. ChartColumn chartColumn = new ChartColumn(list);
  114. return chartColumn;
  115. }
  116. //机器排行统计
  117. @Override
  118. public ChartColumn getEquipmentStatistics(StatisticsParam param) {
  119. List<ChartBean> list = new ArrayList<>();
  120. String msg = "";
  121. if (ChartType.day.toString().equals(param.getChartType())) {
  122. msg = "日统计";
  123. }
  124. if (ChartType.week.toString().equals(param.getChartType())) {
  125. msg = "周统计";
  126. }
  127. if (ChartType.month.toString().equals(param.getChartType())) {
  128. msg = "月统计";
  129. }
  130. if (ChartType.year.toString().equals(param.getChartType())) {
  131. msg = "年统计";
  132. }
  133. if ("1".equals(param.getChangeType())) {
  134. // 花型统计
  135. list = tOrderMapper.getProductNameStatistics(param);
  136. } else {
  137. list = tOrderMapper.getEquipmentStatistics(param);
  138. if (list.size() > 0) {
  139. for (ChartBean chartBean : list) {
  140. String categorie = chartBean.getCategorie();
  141. TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  142. if (StringUtils.isNotEmpty(tEquipment.getName())) {
  143. chartBean.setCategorie(tEquipment.getName());
  144. } else {
  145. chartBean.setCategorie(categorie.substring(categorie.length() - 6, categorie.length()));
  146. }
  147. }
  148. }
  149. }
  150. if (CollectionUtils.isEmpty(list)) {
  151. throw new MyException("获取" + msg + "数据为空");
  152. }
  153. ChartColumn chartColumn = new ChartColumn(list);
  154. return chartColumn;
  155. }
  156. @Override
  157. public List<OrderDaoChuDTO> orderDaoChu(String begin, String end, Long adminId, String clientId, String type, String companyType, long current, long size) {
  158. OrderDaoChuParam daoChuParam = new OrderDaoChuParam();
  159. daoChuParam.setAdminId(adminId);
  160. daoChuParam.setBegin(begin);
  161. daoChuParam.setEnd(end);
  162. daoChuParam.setClientId(clientId);
  163. daoChuParam.setType(type);
  164. daoChuParam.setCurrent(current - 1);
  165. daoChuParam.setSize(size);
  166. daoChuParam.setCompanyType(companyType);
  167. return tOrderMapper.getOrderDaoCu(daoChuParam);
  168. }
  169. @Override
  170. public List<OrderTarget> findById(TAdmin admin, List<TOrder> list) throws ParseException {
  171. List<OrderTarget> list1 = new ArrayList<>();
  172. for (TOrder order : list) {
  173. if (!order.getProductName().equals("优惠码")) {
  174. OrderTarget orderTarget = new OrderTarget();
  175. orderTarget.setSn(order.getSn());
  176. orderTarget.setProductName(order.getProductName());
  177. if (order.getRefundAmount() != null) {
  178. orderTarget.setPrice(order.getPrice().subtract(order.getRefundAmount()).setScale(2));
  179. } else {
  180. orderTarget.setPrice(order.getPrice());
  181. }
  182. orderTarget.setClientId(order.getClientId());
  183. orderTarget.setName(admin.getUsername());
  184. // 格式化时间
  185. if (order.getPayDate() != null) {
  186. String formatPayDate = DateUtils.formatDate(order.getPayDate(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss);
  187. orderTarget.setPayDate(formatPayDate);
  188. }
  189. if (order.getRefundDate() != null) {
  190. String formatRefundDate = DateUtils.formatDate(order.getRefundDate(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss);
  191. orderTarget.setRefundDate(formatRefundDate);
  192. }
  193. Integer status = order.getStatus();
  194. if (status == 0) {
  195. orderTarget.setStatus("未支付");
  196. } else if (status == 1) {
  197. orderTarget.setStatus("已支付");
  198. } else if (status == 3) {
  199. orderTarget.setStatus("已退款");
  200. } else {
  201. orderTarget.setStatus(String.valueOf(status));
  202. }
  203. if (order.getAgencyProportion() != null) {
  204. orderTarget.setAgencyProportion(String.valueOf(order.getAgencyProportion()));
  205. }
  206. if (order.getMerchantProportion() != null) {
  207. orderTarget.setMerchantProportion(String.valueOf(order.getMerchantProportion()));
  208. }
  209. if (order.getPersonageProportion() != null) {
  210. orderTarget.setPersonageProportion(String.valueOf(order.getPersonageProportion()));
  211. }
  212. if ("WEIXIN_NATIVE".equals(order.getFrpCode())) {
  213. orderTarget.setFrp_code("微信主扫支付");
  214. } else if ("ALIPAY_NATIVE".equals(order.getFrpCode())) {
  215. orderTarget.setFrp_code("支付宝主扫支付");
  216. } else if ("WEIXIN_CARD".equals(order.getFrpCode())) {
  217. orderTarget.setFrp_code("微信被扫支付");
  218. } else if ("ALIPAY_CARD".equals(order.getFrpCode())) {
  219. orderTarget.setFrp_code("支付宝被扫支付");
  220. } else {
  221. orderTarget.setFrp_code(order.getFrpCode());
  222. }
  223. if (StringUtils.isEmpty(orderTarget.getFrp_code())) {
  224. orderTarget.setFrp_code(order.getFrpCode());
  225. }
  226. list1.add(orderTarget);
  227. }
  228. }
  229. return list1;
  230. }
  231. @Override
  232. public List<OrderStatisticsDTO> findByTime(String clientId, Date startTime, Date endTime, Integer unit) {
  233. return tOrderMapper.findByTime(clientId, startTime, endTime, unit);
  234. }
  235. @Override
  236. public String setMessage(Long id, String customerPhone, Long adminId) {
  237. TOrder order = tOrderMapper.selectById(id);
  238. String result = "";
  239. RefundSendRecord refundSendRecord = new RefundSendRecord();
  240. String uid = RandomUtil.randomNumbers(18);
  241. refundSendRecord.setId(Long.valueOf(uid));
  242. refundSendRecord.setCreateDate(new Date());
  243. refundSendRecord.setSendAdminId(adminId);
  244. if (order != null) {
  245. String companyType = order.getCompanyType();
  246. String clientId = order.getClientId();
  247. String sn = order.getSn();
  248. // 添加发送记录
  249. refundSendRecord.setSn(sn);
  250. refundSendRecord.setClientId(clientId);
  251. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(order.getClientId()));
  252. if (equipment == null) {
  253. result = "设备不存在";
  254. return result;
  255. }
  256. String contactPhone = equipment.getContactPhone();
  257. String phone = null;
  258. //判断是否有机器运营者,作为短信接收通知人
  259. if (!StringUtils.isEmpty(contactPhone)) {
  260. //直接发送到机器运营者
  261. phone = contactPhone;
  262. } else {
  263. //直接发送到账户拥有者手机
  264. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(equipment.getAdminId())));
  265. if (admin != null) {
  266. if (!StringUtils.isEmpty(admin.getPhone())) {
  267. phone = admin.getPhone();
  268. }
  269. } else {
  270. result = "账户不存在";
  271. return result;
  272. }
  273. }
  274. if (!StringUtils.isEmpty(phone)) {
  275. //发短信
  276. try {
  277. String price = String.valueOf(order.getPrice());
  278. Date payDate = order.getPayDate();
  279. String pattern = "yyyy-MM-dd HH:mm:ss";
  280. SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
  281. String payTime = simpleDateFormat.format(payDate);
  282. String clientId6 = clientId.substring(clientId.length() - 6);
  283. if (StringUtils.isNotEmpty(companyType) && companyType.equals("1")) {
  284. // 如果是七云科技的用户
  285. result = YunPianSms.sendSms(appid, getScMessage(sn, price, payTime,
  286. equipment.getName(), clientId6, customerPhone), phone, uid, CALLBACK_URL);
  287. } else {
  288. // 如果是申泽智能的用户
  289. result = YunPianSms.sendSms(appid, getSzMessage(sn, price, payTime,
  290. equipment.getName(), clientId6, customerPhone), phone, uid, CALLBACK_URL);
  291. }
  292. refundSendRecord.setPhone(phone);
  293. } catch (Exception e) {
  294. e.printStackTrace();
  295. }
  296. } else {
  297. result = "设备运营者手机号为空";
  298. return result;
  299. }
  300. refundSendRecord.setStatus(0);
  301. refundSendRecordService.save(refundSendRecord);
  302. }
  303. return result;
  304. }
  305. @Override
  306. public List<NewOrderTarget> exportOrderData(TAdmin admin, List<TOrder> list) {
  307. List<NewOrderTarget> orderTargets = new ArrayList<>();
  308. Map<String, String> nameMap = new HashMap<>();
  309. for (TOrder order : list) {
  310. if (!order.getProductName().equals("优惠码")) {
  311. NewOrderTarget orderTarget = new NewOrderTarget();
  312. orderTarget.setSn(order.getSn());
  313. orderTarget.setProductName(order.getProductName());
  314. if (order.getRefundAmount() != null) {
  315. orderTarget.setPrice(order.getPrice().subtract(order.getRefundAmount()).setScale(2));
  316. } else {
  317. orderTarget.setPrice(order.getPrice());
  318. }
  319. orderTarget.setClientId(order.getClientId());
  320. String name = "";
  321. name = nameMap.get(order.getClientId());
  322. if (order.getEquipmentId() != null && StringUtils.isEmpty(name)) {
  323. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(String.valueOf(order.getEquipmentId())));
  324. if (StringUtils.isNotEmpty(equipment.getName())) {
  325. name = equipment.getName();
  326. } else {
  327. name = "暂未设置名称";
  328. }
  329. nameMap.put(order.getClientId(), name);
  330. }
  331. orderTarget.setMachineName(name);
  332. orderTarget.setName(admin.getUsername());
  333. // 格式化时间
  334. if (order.getPayDate() != null) {
  335. String formatPayDate = DateUtils.formatDate(order.getPayDate(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss);
  336. orderTarget.setPayDate(formatPayDate);
  337. }
  338. if (order.getRefundDate() != null) {
  339. String formatRefundDate = DateUtils.formatDate(order.getRefundDate(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss);
  340. orderTarget.setRefundDate(formatRefundDate);
  341. }
  342. Integer status = order.getStatus();
  343. if (status == 0) {
  344. orderTarget.setStatus("未支付");
  345. } else if (status == 1) {
  346. orderTarget.setStatus("已支付");
  347. } else if (status == 3) {
  348. orderTarget.setStatus("已退款");
  349. } else {
  350. orderTarget.setStatus(String.valueOf(status));
  351. }
  352. if (order.getAgencyProportion() != null) {
  353. orderTarget.setAgencyProportion(String.valueOf(order.getAgencyProportion()));
  354. }
  355. if (order.getMerchantProportion() != null) {
  356. orderTarget.setMerchantProportion(String.valueOf(order.getMerchantProportion()));
  357. }
  358. if (order.getPersonageProportion() != null) {
  359. orderTarget.setPersonageProportion(String.valueOf(order.getPersonageProportion()));
  360. }
  361. if ("WEIXIN_NATIVE".equals(order.getFrpCode())) {
  362. orderTarget.setFrp_code("微信主扫支付");
  363. } else if ("ALIPAY_NATIVE".equals(order.getFrpCode())) {
  364. orderTarget.setFrp_code("支付宝主扫支付");
  365. } else if ("WEIXIN_CARD".equals(order.getFrpCode())) {
  366. orderTarget.setFrp_code("微信被扫支付");
  367. } else if ("ALIPAY_CARD".equals(order.getFrpCode())) {
  368. orderTarget.setFrp_code("支付宝被扫支付");
  369. } else {
  370. orderTarget.setFrp_code(order.getFrpCode());
  371. }
  372. if (StringUtils.isEmpty(orderTarget.getFrp_code())) {
  373. orderTarget.setFrp_code(order.getFrpCode());
  374. }
  375. orderTargets.add(orderTarget);
  376. }
  377. }
  378. return orderTargets;
  379. }
  380. @Override
  381. public void dataExport(OrderDto orderDto, Date begin, Date end, HttpServletResponse response) throws IOException {
  382. //判断当前账号状态
  383. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(orderDto.getAdminId()));
  384. LambdaQueryWrapper<TOrder> query = Wrappers.lambdaQuery();
  385. if (!orderDto.getUserName().equals("sysMgtAcc")) {
  386. if (StringUtils.isNotEmpty(orderDto.getUserName())) {
  387. TAdmin data = R.getDataIfSuccess(szwlFeign.getAdminByUsername(orderDto.getUserName()));
  388. if (data == null || data.getId() == null) {
  389. return;
  390. }
  391. if (data.getIsAdmined()) {
  392. query.eq(TOrder::getAdminId, data.getId());
  393. } else {
  394. if (data.getParentId() != 1) {
  395. query.eq(TOrder::getAdminId, data.getParentId());
  396. //查找子账户所管理的机器
  397. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(orderDto.getAdminId()));
  398. if (!adminEquipment.getType().equals("0")) {
  399. List<String> list = R.getDataIfSuccess(szwlFeign.getClientIds(orderDto.getAdminId()));
  400. if (list == null || list.size() == 0) {
  401. return;
  402. }
  403. query.in(TOrder::getClientId, list);
  404. }
  405. }
  406. }
  407. } else {
  408. //adminType="all"时,代表查全部下级 子账户没有这个权限 公司人员默认查所有人
  409. if (StringUtils.isNotEmpty(orderDto.getAdminType())) {
  410. if (admin.getIsAdmined() && admin.getType() > 1) {
  411. if (admin.getType() > 1) {
  412. if (orderDto.getAdminType().equals("all")) {
  413. //查找所有下级
  414. List<Long> admidIdList = R.getDataIfSuccess(szwlFeign.getAdminIdList(orderDto.getAdminId()));
  415. query.in(TOrder::getAdminId, admidIdList);
  416. }
  417. }
  418. } else {
  419. if (admin.getType() > 1) {
  420. //登录账户为子账户 不查下级 只查对应机器的订单
  421. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
  422. if (adminEquipment.getType().equals("0")) {
  423. //全部机器
  424. TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  425. query.eq(TOrder::getAdminId, upAdmin.getId());
  426. } else {
  427. String equipmentIds = adminEquipment.getEquipmentIds();
  428. List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  429. query.in(TOrder::getClientId, equipmentIdList);
  430. }
  431. }
  432. }
  433. } else {
  434. //判断当前账号状态 公司还是商家
  435. if (admin.getType() > 1) {
  436. //商家 判断是否子账户
  437. if (admin.getIsAdmined()) {
  438. //商家自己
  439. query.eq(TOrder::getAdminId, orderDto.getAdminId());
  440. } else {
  441. //商家 子账户
  442. //登录账户为子账户 不查下级 只查对应机器的订单
  443. TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getParentId())));
  444. if (adminEquipment.getType().equals("0")) {
  445. //全部机器
  446. TAdmin upAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
  447. query.eq(TOrder::getAdminId, upAdmin.getId());
  448. } else {
  449. String equipmentIds = adminEquipment.getEquipmentIds();
  450. List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  451. query.in(TOrder::getClientId, equipmentIdList);
  452. }
  453. }
  454. }
  455. }
  456. }
  457. }
  458. if (StringUtils.isNotEmpty(orderDto.getPayType())) {
  459. query.eq(TOrder::getFrpCode, orderDto.getPayType());
  460. }
  461. if (StringUtils.isNotEmpty(orderDto.getClientId())) {
  462. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(orderDto.getClientId()));
  463. //判断机器是否属于这个登陆账号
  464. if (admin.getType() > 1) {
  465. //商家
  466. if (equipment.getAdminId().toString().equals(admin.getId().toString())) {
  467. query.eq(TOrder::getEquipmentId, equipment.getId());
  468. }
  469. } else {
  470. query.eq(TOrder::getEquipmentId, equipment.getId());
  471. }
  472. }
  473. if (StringUtils.isNotEmpty(orderDto.getEquipmentId())) {
  474. query.eq(TOrder::getEquipmentId, orderDto.getEquipmentId());
  475. }
  476. if (StringUtils.isNotEmpty(orderDto.getStatus())) {
  477. query.eq(TOrder::getStatus, orderDto.getStatus());
  478. }
  479. if (StringUtils.isNotEmpty(orderDto.getDateType())) {
  480. if (orderDto.getDateType().equals("0")) {
  481. //创建时间
  482. if (begin != null && end != null) {
  483. query.gt(TOrder::getCreateDate, begin);
  484. query.lt(TOrder::getCreateDate, end);
  485. }
  486. }
  487. if (orderDto.getDateType().equals("1")) {
  488. //退款时间
  489. if (begin != null && end != null) {
  490. query.gt(TOrder::getRefundDate, begin);
  491. query.lt(TOrder::getRefundDate, end);
  492. }
  493. }
  494. }
  495. // 公司平台
  496. // 申泽平台管理员
  497. String companyType = orderDto.getCompanyType();
  498. if (admin.getId() == 2738) {
  499. companyType = "0";
  500. }
  501. // 七云平台管理员
  502. if (admin.getId() == 2739) {
  503. companyType = "1";
  504. }
  505. if (StringUtils.isNotEmpty(companyType)) {
  506. if (companyType.equals("0")) {
  507. String finalCompanyType = companyType;
  508. query.nested(q -> q.isNull(TOrder::getCompanyType).or()
  509. .eq(TOrder::getCompanyType, finalCompanyType));
  510. } else {
  511. query.eq(TOrder::getCompanyType, companyType);
  512. }
  513. }
  514. String machineType = orderDto.getMachineType();
  515. if (StringUtils.isNotEmpty(machineType)) {
  516. if (machineType.equals("0")) {
  517. query.nested(q -> q.isNull(TOrder::getMachineType).or()
  518. .eq(TOrder::getMachineType, machineType));
  519. } else {
  520. query.eq(TOrder::getMachineType, machineType);
  521. }
  522. }
  523. // 查询总数
  524. int pageSize = 1000;
  525. int total = count(query);
  526. // 总页数
  527. int totalPages = (total + pageSize - 1) / pageSize;
  528. // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
  529. response.setContentType("application/octet-stream; charset=UTF-8");
  530. response.setCharacterEncoding("utf-8");
  531. // 这里URLEncoder.encode可以防止中文乱码
  532. String fileName = URLEncoder.encode("订单记录-" + System.currentTimeMillis(), "UTF-8").replaceAll("\\+", "%20");
  533. response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
  534. // 创建ExcelWriter对象
  535. ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), NewOrderTarget.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
  536. // 创建 Sheet 对象
  537. WriteSheet writeSheet = EasyExcel.writerSheet(0, "订单").build();
  538. // 创建 CountDownLatch 对象
  539. CountDownLatch countDownLatch = new CountDownLatch(totalPages);
  540. // 创建线程池
  541. ExecutorService executorService = Executors.newFixedThreadPool(totalPages);
  542. // 循环写入数据
  543. for (int i = 1; i <= totalPages; i++) {
  544. int page = i;
  545. executorService.submit(() -> {
  546. try {
  547. Page<TOrder> orderPage = new Page<>(page, pageSize);
  548. Page<TOrder> pageList = page(orderPage, query);
  549. List<TOrder> list = pageList.getRecords();
  550. // 写入数据
  551. List<NewOrderTarget> orderTargetList = exportOrderData(admin, list);
  552. synchronized (excelWriter) {
  553. excelWriter.write(orderTargetList, writeSheet);
  554. }
  555. } catch (Exception e) {
  556. // 异常处理
  557. e.printStackTrace();
  558. } finally {
  559. // 计数器减一
  560. countDownLatch.countDown();
  561. }
  562. });
  563. }
  564. // 等待所有线程执行完毕
  565. try {
  566. countDownLatch.await();
  567. } catch (InterruptedException e) {
  568. e.printStackTrace();
  569. }
  570. // 关闭 ExcelWriter 对象
  571. excelWriter.finish();
  572. // 关闭线程池
  573. executorService.shutdown();
  574. }
  575. @Override
  576. public Page<OrderDaoChuDTO> summaryStatisticsMonth(StatisticsParam param) {
  577. Page<OrderDaoChuDTO> result = new Page<>(param.getCurrent(), param.getSize(), true);
  578. // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
  579. List<Long> adminIds = new ArrayList<>();
  580. if (param.getType() == 4) {
  581. // 查询下级账户
  582. adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
  583. if (adminIds.isEmpty()) {
  584. return result;
  585. }
  586. param.setAdminIds(adminIds);
  587. }
  588. LambdaQueryWrapper<OrderStatisticsMonth> query = Wrappers.lambdaQuery();
  589. query.eq(OrderStatisticsMonth::getStatisticsDate, param.getStartDate());
  590. query.eq(OrderStatisticsMonth::getType, param.getPacketType());
  591. if (StringUtils.isNotEmpty(param.getCompanyType())) {
  592. query.eq(OrderStatisticsMonth::getCompanyType, param.getCompanyType());
  593. }
  594. if (StringUtils.isNotEmpty(param.getClientId())) {
  595. // 如果type等于1,就查询设备所属商家是否是旗下管理的
  596. if (param.getType() == 4) {
  597. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  598. if (equipment == null) {
  599. return result;
  600. }
  601. if (adminIds.contains(equipment.getAdminId())) {
  602. query.eq(OrderStatisticsMonth::getClientId, param.getClientId());
  603. adminIds.clear();
  604. } else {
  605. return result;
  606. }
  607. } else {
  608. query.eq(OrderStatisticsMonth::getClientId, param.getClientId());
  609. }
  610. }
  611. if (StringUtils.isNotEmpty(param.getUsername())) {
  612. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
  613. if (admin == null) {
  614. return result;
  615. }
  616. if (param.getType() == 4) {
  617. if (adminIds.contains(admin.getId())) {
  618. query.eq(OrderStatisticsMonth::getAdminId, admin.getId());
  619. adminIds.clear();
  620. } else {
  621. return result;
  622. }
  623. } else if (param.getType() == 0) {
  624. query.eq(OrderStatisticsMonth::getAdminId, admin.getId());
  625. }
  626. }
  627. if (param.getAdminIds()!= null && !param.getAdminIds().isEmpty()) {
  628. query.in(OrderStatisticsMonth::getAdminId, param.getAdminIds());
  629. }
  630. if (StringUtils.isNotEmpty(param.getIfForeign())) {
  631. query.eq(OrderStatisticsMonth::getIfForeign, param.getIfForeign());
  632. }
  633. query.orderByDesc(OrderStatisticsMonth::getSalePrice);
  634. Page<OrderStatisticsMonth> page = new Page<>(param.getCurrent(), param.getSize(), true);
  635. IPage<OrderStatisticsMonth> iPage = orderStatisticsMonthService.page(page, query);
  636. List<OrderStatisticsMonth> list = iPage.getRecords();
  637. ArrayList<OrderDaoChuDTO> orderDaoChuDTO = new ArrayList<>();
  638. for (OrderStatisticsMonth orderStatistics : list) {
  639. OrderDaoChuDTO orderDaoChu = new OrderDaoChuDTO();
  640. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatistics.getAdminId())));
  641. if (StringUtils.isNotEmpty(param.getPacketType()) && param.getPacketType().equals("0")) {
  642. // 按商户分组
  643. TArea area = areaService.getById(admin.getAreaId());
  644. if (area != null) {
  645. orderDaoChu.setAddress(area.getFullName());
  646. }
  647. String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(String.valueOf(orderStatistics.getAdminId())));
  648. orderDaoChu.setEquipmentTotal(equipmentTotal);
  649. } else {
  650. // 按设备分组
  651. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(String.valueOf(orderStatistics.getEquipmentId())));
  652. orderDaoChu.setAddress(equipment.getFullName());
  653. orderDaoChu.setClientId(equipment.getClientId());
  654. orderDaoChu.setEquipmentType(equipment.getEquimentType());
  655. }
  656. orderDaoChu.setUsername(admin.getUsername());
  657. orderDaoChu.setName(admin.getName());
  658. orderDaoChu.setPhone(admin.getPhone());
  659. orderDaoChu.setAdminId(orderStatistics.getAdminId());
  660. orderDaoChu.setPriceTotal(orderStatistics.getSalePrice());
  661. orderDaoChuDTO.add(orderDaoChu);
  662. }
  663. result.setRecords(orderDaoChuDTO);
  664. result.setTotal(iPage.getTotal());
  665. return result;
  666. }
  667. @Override
  668. public Page<OrderDaoChuDTO> summaryStatisticsYear(StatisticsParam param) {
  669. Page<OrderDaoChuDTO> result = new Page<>(param.getCurrent(), param.getSize(), true);
  670. // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
  671. List<Long> adminIds = new ArrayList<>();
  672. if (param.getType() == 4) {
  673. // 查询下级账户
  674. adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
  675. if (adminIds.isEmpty()) {
  676. return result;
  677. }
  678. param.setAdminIds(adminIds);
  679. }
  680. LambdaQueryWrapper<OrderStatisticsYear> query = Wrappers.lambdaQuery();
  681. query.eq(OrderStatisticsYear::getStatisticsDate, param.getStartDate());
  682. query.eq(OrderStatisticsYear::getType, param.getPacketType());
  683. if (StringUtils.isNotEmpty(param.getCompanyType())) {
  684. query.eq(OrderStatisticsYear::getCompanyType, param.getCompanyType());
  685. }
  686. if (StringUtils.isNotEmpty(param.getClientId())) {
  687. // 如果type等于4,就查询设备所属商家是否是旗下管理的
  688. if (param.getType() == 4) {
  689. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  690. if (equipment == null) {
  691. return result;
  692. }
  693. if (adminIds.contains(equipment.getAdminId())) {
  694. query.eq(OrderStatisticsYear::getClientId, param.getClientId());
  695. adminIds.clear();
  696. } else {
  697. return result;
  698. }
  699. } else {
  700. query.eq(OrderStatisticsYear::getClientId, param.getClientId());
  701. }
  702. }
  703. if (StringUtils.isNotEmpty(param.getUsername())) {
  704. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
  705. if (admin == null) {
  706. return result;
  707. }
  708. if (param.getType() == 4) {
  709. if (adminIds.contains(admin.getId())) {
  710. query.eq(OrderStatisticsYear::getAdminId, admin.getId());
  711. adminIds.clear();
  712. } else {
  713. return result;
  714. }
  715. } else if (param.getType() == 0) {
  716. query.eq(OrderStatisticsYear::getAdminId, admin.getId());
  717. }
  718. }
  719. if (param.getAdminIds()!= null && !param.getAdminIds().isEmpty()) {
  720. query.in(OrderStatisticsYear::getAdminId, param.getAdminIds());
  721. }
  722. if (StringUtils.isNotEmpty(param.getIfForeign())) {
  723. query.eq(OrderStatisticsYear::getIfForeign, param.getIfForeign());
  724. }
  725. query.orderByDesc(OrderStatisticsYear::getSalePrice);
  726. Page<OrderStatisticsYear> page = new Page<>(param.getCurrent(), param.getSize(), true);
  727. IPage<OrderStatisticsYear> iPage = orderStatisticsYearService.page(page, query);
  728. List<OrderStatisticsYear> list = iPage.getRecords();
  729. ArrayList<OrderDaoChuDTO> orderDaoChuDTO = new ArrayList<>();
  730. for (OrderStatisticsYear orderStatisticsYear : list) {
  731. OrderDaoChuDTO orderDaoChu = new OrderDaoChuDTO();
  732. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatisticsYear.getAdminId())));
  733. if (StringUtils.isNotEmpty(param.getPacketType()) && param.getPacketType().equals("0")) {
  734. // 按商户分组
  735. TArea area = areaService.getById(admin.getAreaId());
  736. if (area != null) {
  737. orderDaoChu.setAddress(area.getFullName());
  738. }
  739. String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(String.valueOf(orderStatisticsYear.getAdminId())));
  740. orderDaoChu.setEquipmentTotal(equipmentTotal);
  741. } else {
  742. // 按设备分组
  743. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(String.valueOf(orderStatisticsYear.getEquipmentId())));
  744. orderDaoChu.setAddress(equipment.getFullName());
  745. orderDaoChu.setClientId(equipment.getClientId());
  746. orderDaoChu.setEquipmentType(equipment.getEquimentType());
  747. }
  748. orderDaoChu.setUsername(admin.getUsername());
  749. orderDaoChu.setName(admin.getName());
  750. orderDaoChu.setPhone(admin.getPhone());
  751. orderDaoChu.setAdminId(orderStatisticsYear.getAdminId());
  752. orderDaoChu.setPriceTotal(orderStatisticsYear.getSalePrice());
  753. orderDaoChuDTO.add(orderDaoChu);
  754. }
  755. result.setRecords(orderDaoChuDTO);
  756. result.setTotal(iPage.getTotal());
  757. return result;
  758. }
  759. @Override
  760. public Page<OrderDaoChuDTO> summaryStatistics(StatisticsParam param) {
  761. Page<OrderDaoChuDTO> result = new Page<>(param.getCurrent(), param.getSize(), true);
  762. // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
  763. List<Long> adminIds = new ArrayList<>();
  764. if (param.getType() == 4) {
  765. // 查询下级账户
  766. adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
  767. if (adminIds.isEmpty()) {
  768. return result;
  769. }
  770. param.setAdminIds(adminIds);
  771. }
  772. List<OrderDaoChuDTO> orderDaoChuDTOList;
  773. if (StringUtils.isNotEmpty(param.getStartDate()) && StringUtils.isNotEmpty(param.getEndDate())) {
  774. if (param.getIfForeign().equals("0")) {
  775. // 查国内,即线上订单
  776. LambdaQueryWrapper<TOrder> queryWrapper = new LambdaQueryWrapper<>();
  777. if (StringUtils.isNotEmpty(param.getClientId())) {
  778. // 如果type等于1,就查询设备所属商家是否是旗下管理的
  779. if (param.getType() == 4) {
  780. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  781. if (equipment == null) {
  782. return result;
  783. }
  784. if (adminIds.contains(equipment.getAdminId())) {
  785. queryWrapper.eq(TOrder::getClientId, param.getClientId());
  786. adminIds.clear();
  787. } else {
  788. return result;
  789. }
  790. } else {
  791. queryWrapper.eq(TOrder::getClientId, param.getClientId());
  792. }
  793. }
  794. // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
  795. if (StringUtils.isNotEmpty(param.getUsername())) {
  796. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
  797. if (admin == null) {
  798. return result;
  799. }
  800. if (param.getType() == 4) {
  801. if (param.getAdminIds().contains(admin.getId())) {
  802. queryWrapper.eq(TOrder::getAdminId, admin.getId());
  803. param.setAdminId(String.valueOf(admin.getId()));
  804. param.setAdminIds(null);
  805. } else {
  806. return result;
  807. }
  808. } else if (param.getType() == 0) {
  809. queryWrapper.eq(TOrder::getAdminId, admin.getId());
  810. param.setAdminId(String.valueOf(admin.getId()));
  811. }
  812. }
  813. // 条件:adminList
  814. if (param.getAdminIds() != null && !param.getAdminIds().isEmpty()) {
  815. queryWrapper.in(TOrder::getAdminId, param.getAdminIds());
  816. param.setAdminId(null);
  817. }
  818. // 条件:companyType
  819. if (StringUtils.isNotBlank(param.getCompanyType())) {
  820. if ("0".equals(param.getCompanyType())) {
  821. queryWrapper.and(i -> i.isNull(TOrder::getCompanyType).or().eq(TOrder::getCompanyType, "0"));
  822. } else if ("1".equals(param.getCompanyType())) {
  823. queryWrapper.eq(TOrder::getCompanyType, "1");
  824. }
  825. }
  826. // 条件:时间范围
  827. queryWrapper.between(TOrder::getCreateDate, param.getStartDate(), param.getEndDate());
  828. // 条件:支付状态
  829. queryWrapper.eq(TOrder::getStatus, 1);
  830. // 条件:type == 2 or type == 1
  831. if ("0".equals(param.getPacketType())) {
  832. queryWrapper.groupBy(TOrder::getAdminId);
  833. } else if ("1".equals(param.getPacketType())) {
  834. queryWrapper.groupBy(TOrder::getClientId);
  835. }
  836. Page<TOrder> tOrderPage = new Page<>(param.getCurrent(), param.getSize(), true);
  837. IPage<TOrder> iPage = tOrderMapper.selectPage(tOrderPage, queryWrapper);
  838. result.setTotal(iPage.getTotal());
  839. param.setCurrent(param.getCurrent() - 1);
  840. orderDaoChuDTOList = tOrderMapper.summaryStatistics(param);
  841. } else {
  842. // 查国外,即线下订单
  843. LambdaQueryWrapper<TCoinOrder> queryWrapper = new LambdaQueryWrapper<>();
  844. if (StringUtils.isNotEmpty(param.getClientId())) {
  845. // 如果type等于1,就查询设备所属商家是否是旗下管理的
  846. if (param.getType() == 4) {
  847. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  848. if (equipment == null) {
  849. return result;
  850. }
  851. if (adminIds.contains(equipment.getAdminId())) {
  852. queryWrapper.eq(TCoinOrder::getClientId, param.getClientId());
  853. adminIds.clear();
  854. } else {
  855. return result;
  856. }
  857. } else {
  858. queryWrapper.eq(TCoinOrder::getClientId, param.getClientId());
  859. }
  860. }
  861. // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
  862. if (StringUtils.isNotEmpty(param.getUsername())) {
  863. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
  864. if (admin == null) {
  865. return result;
  866. }
  867. if (param.getType() == 4) {
  868. if (param.getAdminIds().contains(admin.getId())) {
  869. queryWrapper.eq(TCoinOrder::getAdminId, admin.getId());
  870. param.setAdminId(String.valueOf(admin.getId()));
  871. param.setAdminIds(null);
  872. } else {
  873. return result;
  874. }
  875. } else if (param.getType() == 0) {
  876. queryWrapper.eq(TCoinOrder::getAdminId, admin.getId());
  877. param.setAdminId(String.valueOf(admin.getId()));
  878. }
  879. }
  880. // 条件:adminList
  881. if (param.getAdminIds() != null && !param.getAdminIds().isEmpty()) {
  882. queryWrapper.in(TCoinOrder::getAdminId, param.getAdminIds());
  883. param.setAdminId(null);
  884. }
  885. // 条件:companyType
  886. if (StringUtils.isNotBlank(param.getCompanyType())) {
  887. if ("0".equals(param.getCompanyType())) {
  888. queryWrapper.and(i -> i.isNull(TCoinOrder::getCompanyType).or().eq(TCoinOrder::getCompanyType, "0"));
  889. } else if ("1".equals(param.getCompanyType())) {
  890. queryWrapper.eq(TCoinOrder::getCompanyType, "1");
  891. }
  892. }
  893. // 条件:时间范围
  894. queryWrapper.between(TCoinOrder::getCreateDate, param.getStartDate(), param.getEndDate());
  895. // 条件:支付状态
  896. queryWrapper.eq(TCoinOrder::getStatus, 1);
  897. // 条件:type == 2 or type == 1
  898. if ("0".equals(param.getPacketType())) {
  899. queryWrapper.groupBy(TCoinOrder::getAdminId);
  900. } else if ("1".equals(param.getPacketType())) {
  901. queryWrapper.groupBy(TCoinOrder::getClientId);
  902. }
  903. Page<TCoinOrder> tOrderPage = new Page<>(param.getCurrent(), param.getSize(), true);
  904. IPage<TCoinOrder> iPage = tCoinOrderMapper.selectPage(tOrderPage, queryWrapper);
  905. result.setTotal(iPage.getTotal());
  906. param.setCurrent(param.getCurrent() - 1);
  907. orderDaoChuDTOList = tCoinOrderMapper.summaryStatistics(param);
  908. }
  909. for (OrderDaoChuDTO orderDaoChuDTO : orderDaoChuDTOList) {
  910. String adminId1 = orderDaoChuDTO.getAdminId().toString();
  911. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(adminId1));
  912. if (admin == null) {
  913. continue;
  914. }
  915. orderDaoChuDTO.setPhone(admin.getPhone());
  916. orderDaoChuDTO.setUsername(admin.getUsername());
  917. orderDaoChuDTO.setName(admin.getName());
  918. if (!StringUtils.isEmpty(param.getPacketType()) && param.getPacketType().equals("0")) {
  919. //商户为单位
  920. TArea area = areaService.getById(admin.getAreaId());
  921. if (area != null) {
  922. orderDaoChuDTO.setAddress(area.getFullName());
  923. }
  924. String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(adminId1));
  925. orderDaoChuDTO.setEquipmentTotal(equipmentTotal);
  926. } else {
  927. //设备为单位
  928. ResponseModel<TEquipment> equipmentByClientId = szwlFeign.findEquipmentByClientId(String.valueOf(orderDaoChuDTO.getClientId()));
  929. TEquipment equipment = equipmentByClientId.getData();
  930. if (equipment != null && equipment.getId() != null) {
  931. if (StringUtils.isNotEmpty(equipment.getFullName())) {
  932. orderDaoChuDTO.setAddress(equipment.getFullName());
  933. }
  934. orderDaoChuDTO.setEquipmentType(equipment.getEquimentType());
  935. orderDaoChuDTO.setCreateDate(equipment.getCreateDate());
  936. }
  937. }
  938. }
  939. result.setRecords(orderDaoChuDTOList);
  940. }
  941. return result;
  942. }
  943. @Override
  944. public <T> void statisticsYearExport(HttpServletResponse response, Class<T> clazz, StatisticsParam param) throws IOException {
  945. // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
  946. List<Long> adminIds = new ArrayList<>();
  947. if (param.getType() == 4) {
  948. // 查询下级账户
  949. adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
  950. if (adminIds.isEmpty()) {
  951. return;
  952. }
  953. param.setAdminIds(adminIds);
  954. }
  955. LambdaQueryWrapper<OrderStatisticsYear> query = Wrappers.lambdaQuery();
  956. query.eq(OrderStatisticsYear::getStatisticsDate, param.getStartDate());
  957. query.eq(OrderStatisticsYear::getType, param.getPacketType());
  958. if (StringUtils.isNotEmpty(param.getCompanyType())) {
  959. query.eq(OrderStatisticsYear::getCompanyType, param.getCompanyType());
  960. }
  961. if (StringUtils.isNotEmpty(param.getClientId())) {
  962. // 如果type等于1,就查询设备所属商家是否是旗下管理的
  963. if (param.getType() == 4) {
  964. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  965. if (equipment == null) {
  966. return;
  967. }
  968. if (adminIds.contains(equipment.getAdminId())) {
  969. query.eq(OrderStatisticsYear::getClientId, param.getClientId());
  970. adminIds.clear();
  971. } else {
  972. return;
  973. }
  974. } else {
  975. query.eq(OrderStatisticsYear::getClientId, param.getClientId());
  976. }
  977. }
  978. // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
  979. if (StringUtils.isNotEmpty(param.getUsername())) {
  980. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
  981. if (admin == null) {
  982. return;
  983. }
  984. if (param.getType() == 4) {
  985. if (adminIds.contains(admin.getId())) {
  986. query.eq(OrderStatisticsYear::getAdminId, admin.getId());
  987. adminIds.clear();
  988. } else {
  989. return;
  990. }
  991. } else if (param.getType() == 0) {
  992. query.eq(OrderStatisticsYear::getAdminId, admin.getId());
  993. }
  994. }
  995. if (param.getAdminIds()!= null && !param.getAdminIds().isEmpty()) {
  996. query.in(OrderStatisticsYear::getAdminId, param.getAdminIds());
  997. }
  998. if (StringUtils.isNotEmpty(param.getIfForeign())) {
  999. query.eq(OrderStatisticsYear::getIfForeign, param.getIfForeign());
  1000. }
  1001. query.orderByDesc(OrderStatisticsYear::getSalePrice);
  1002. // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
  1003. response.setContentType("application/octet-stream; charset=UTF-8");
  1004. response.setCharacterEncoding("utf-8");
  1005. // 这里URLEncoder.encode可以防止中文乱码
  1006. String fileName = URLEncoder.encode("订单统计-" + System.currentTimeMillis(), "UTF-8").replaceAll("\\+", "%20");
  1007. response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
  1008. // 每页大小
  1009. int pageNo = param.getCurrent();
  1010. // 使用 EasyExcel 的流式写入模式
  1011. try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build()) {
  1012. WriteSheet writeSheet = EasyExcel.writerSheet("数据").build();
  1013. while (true) {
  1014. // 分页获取数据
  1015. param.setCurrent(pageNo);
  1016. Page<OrderStatisticsYear> orderPage = new Page<>(pageNo, param.getSize());
  1017. Page<OrderStatisticsYear> pageList = orderStatisticsYearService.page(orderPage, query);
  1018. List<OrderStatisticsYear> dataList = pageList.getRecords();
  1019. if (dataList.isEmpty()) {
  1020. break;
  1021. }
  1022. // 封装数据
  1023. if (param.getPacketType().equals("0")) {
  1024. List<StatisticsAdminTarget> adminTargetList = exportStatisticsYearByAdmin(dataList);
  1025. // 写入数据到 Excel
  1026. excelWriter.write(adminTargetList, writeSheet);
  1027. } else {
  1028. List<StatisticsClientIdTarget> clientIdTargetList = exportStatisticsYearByClientId(dataList);
  1029. excelWriter.write(clientIdTargetList, writeSheet);
  1030. }
  1031. pageNo++;
  1032. }
  1033. }
  1034. }
  1035. @Override
  1036. public <T> void statisticsMonthExport(HttpServletResponse response, Class<T> clazz, StatisticsParam param) throws IOException {
  1037. // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
  1038. List<Long> adminIds = new ArrayList<>();
  1039. if (param.getType() == 4) {
  1040. // 查询下级账户
  1041. adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
  1042. if (adminIds.isEmpty()) {
  1043. return;
  1044. }
  1045. param.setAdminIds(adminIds);
  1046. }
  1047. LambdaQueryWrapper<OrderStatisticsMonth> query = Wrappers.lambdaQuery();
  1048. query.eq(OrderStatisticsMonth::getStatisticsDate, param.getStartDate());
  1049. query.eq(OrderStatisticsMonth::getType, param.getPacketType());
  1050. if (StringUtils.isNotEmpty(param.getCompanyType())) {
  1051. query.eq(OrderStatisticsMonth::getCompanyType, param.getCompanyType());
  1052. }
  1053. if (StringUtils.isNotEmpty(param.getClientId())) {
  1054. // 如果type等于1,就查询设备所属商家是否是旗下管理的
  1055. if (param.getType() == 4) {
  1056. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  1057. if (equipment == null) {
  1058. return;
  1059. }
  1060. if (adminIds.contains(equipment.getAdminId())) {
  1061. query.eq(OrderStatisticsMonth::getClientId, param.getClientId());
  1062. adminIds.clear();
  1063. } else {
  1064. return;
  1065. }
  1066. } else {
  1067. query.eq(OrderStatisticsMonth::getClientId, param.getClientId());
  1068. }
  1069. }
  1070. // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
  1071. if (StringUtils.isNotEmpty(param.getUsername())) {
  1072. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
  1073. if (admin == null) {
  1074. return;
  1075. }
  1076. if (param.getType() == 4) {
  1077. if (adminIds.contains(admin.getId())) {
  1078. query.eq(OrderStatisticsMonth::getAdminId, admin.getId());
  1079. adminIds.clear();
  1080. } else {
  1081. return;
  1082. }
  1083. } else if (param.getType() == 0) {
  1084. query.eq(OrderStatisticsMonth::getAdminId, admin.getId());
  1085. }
  1086. }
  1087. if (param.getAdminIds()!= null && !param.getAdminIds().isEmpty()) {
  1088. query.in(OrderStatisticsMonth::getAdminId, param.getAdminIds());
  1089. }
  1090. if (StringUtils.isNotEmpty(param.getIfForeign())) {
  1091. query.eq(OrderStatisticsMonth::getIfForeign, param.getIfForeign());
  1092. }
  1093. query.orderByDesc(OrderStatisticsMonth::getSalePrice);
  1094. // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
  1095. response.setContentType("application/octet-stream; charset=UTF-8");
  1096. response.setCharacterEncoding("utf-8");
  1097. // 这里URLEncoder.encode可以防止中文乱码
  1098. String fileName = URLEncoder.encode("订单统计-" + System.currentTimeMillis(), "UTF-8").replaceAll("\\+", "%20");
  1099. response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
  1100. // 每页大小
  1101. int pageNo = param.getCurrent();
  1102. // 使用 EasyExcel 的流式写入模式
  1103. try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build()) {
  1104. WriteSheet writeSheet = EasyExcel.writerSheet("数据").build();
  1105. while (true) {
  1106. // 分页获取数据
  1107. param.setCurrent(pageNo);
  1108. Page<OrderStatisticsMonth> orderPage = new Page<>(pageNo, param.getSize());
  1109. Page<OrderStatisticsMonth> pageList = orderStatisticsMonthService.page(orderPage, query);
  1110. List<OrderStatisticsMonth> dataList = pageList.getRecords();
  1111. if (dataList.isEmpty()) {
  1112. break;
  1113. }
  1114. // 封装数据
  1115. if (param.getPacketType().equals("0")) {
  1116. List<StatisticsAdminTarget> adminTargetList = exportStatisticsMonthByAdmin(dataList);
  1117. // 写入数据到 Excel
  1118. excelWriter.write(adminTargetList, writeSheet);
  1119. } else {
  1120. List<StatisticsClientIdTarget> clientIdTargetList = exportStatisticsMonthByClientId(dataList);
  1121. excelWriter.write(clientIdTargetList, writeSheet);
  1122. }
  1123. pageNo++;
  1124. }
  1125. }
  1126. }
  1127. @Override
  1128. public <T> void statisticsDayWeekExport(HttpServletResponse response, Class<T> clazz, StatisticsParam param) throws IOException {
  1129. response.setContentType("application/octet-stream; charset=UTF-8");
  1130. response.setCharacterEncoding("utf-8");
  1131. // 这里URLEncoder.encode可以防止中文乱码
  1132. String fileName = URLEncoder.encode("订单统计-" + System.currentTimeMillis(), "UTF-8").replaceAll("\\+", "%20");
  1133. response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
  1134. // 每页大小
  1135. int pageNo = param.getCurrent();
  1136. // 如果类型是公司人员,就查下级管理的账户,如果是超管,查全部,默认查全部
  1137. if (param.getType() == 4) {
  1138. // 查询下级账户
  1139. String adminId = param.getAdminId();
  1140. List<Long> adminIds = R.getDataIfSuccess(szwlFeign.getAdminIdList(adminId));
  1141. if (adminIds.isEmpty()) {
  1142. return;
  1143. }
  1144. param.setAdminIds(adminIds);
  1145. }
  1146. // 使用 EasyExcel 的流式写入模式
  1147. try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build()) {
  1148. WriteSheet writeSheet = EasyExcel.writerSheet("数据").build();
  1149. while (true) {
  1150. // 分页获取数据
  1151. List<OrderDaoChuDTO> dataList = getPageData(pageNo, param);
  1152. if (dataList.isEmpty()) {
  1153. break;
  1154. }
  1155. // 封装数据
  1156. if (param.getPacketType().equals("0")) {
  1157. List<StatisticsAdminTarget> adminTargetList = exportStatisticsByAdmin(dataList);
  1158. // 写入数据到 Excel
  1159. excelWriter.write(adminTargetList, writeSheet);
  1160. } else {
  1161. List<StatisticsClientIdTarget> clientIdTargetList = exportStatisticsByClientId(dataList);
  1162. excelWriter.write(clientIdTargetList, writeSheet);
  1163. }
  1164. pageNo++;
  1165. }
  1166. }
  1167. }
  1168. private List<StatisticsClientIdTarget> exportStatisticsByClientId(List<OrderDaoChuDTO> dataList) {
  1169. List<StatisticsClientIdTarget> clientIdTargetList = new ArrayList<>();
  1170. for (OrderDaoChuDTO orderDaoChuDTO : dataList) {
  1171. StatisticsClientIdTarget target = new StatisticsClientIdTarget();
  1172. target.setUsername(orderDaoChuDTO.getUsername());
  1173. target.setName(orderDaoChuDTO.getName());
  1174. target.setPhone(orderDaoChuDTO.getPhone());
  1175. target.setAddress(orderDaoChuDTO.getAddress());
  1176. target.setClientId(orderDaoChuDTO.getClientId());
  1177. target.setEquipmentType(orderDaoChuDTO.getEquipmentType());
  1178. target.setPriceTotal(orderDaoChuDTO.getPriceTotal());
  1179. clientIdTargetList.add(target);
  1180. }
  1181. return clientIdTargetList;
  1182. }
  1183. /**
  1184. * 封装
  1185. * @param dataList
  1186. * @return
  1187. */
  1188. private List<StatisticsAdminTarget> exportStatisticsByAdmin(List<OrderDaoChuDTO> dataList) {
  1189. List<StatisticsAdminTarget> adminTargetList = new ArrayList<>();
  1190. for (OrderDaoChuDTO orderDaoChuDTO : dataList) {
  1191. StatisticsAdminTarget target = new StatisticsAdminTarget();
  1192. target.setUsername(orderDaoChuDTO.getUsername());
  1193. target.setName(orderDaoChuDTO.getName());
  1194. target.setPhone(orderDaoChuDTO.getPhone());
  1195. target.setEquipmentTotal(orderDaoChuDTO.getEquipmentTotal());
  1196. target.setPriceTotal(orderDaoChuDTO.getPriceTotal());
  1197. adminTargetList.add(target);
  1198. }
  1199. return adminTargetList;
  1200. }
  1201. /**
  1202. * 分页查询
  1203. * @param pageNo
  1204. * @param param
  1205. * @return
  1206. */
  1207. private List<OrderDaoChuDTO> getPageData(int pageNo, StatisticsParam param) {
  1208. List<OrderDaoChuDTO> orderDaoChuDTOList = new ArrayList<>();
  1209. if (StringUtils.isNotEmpty(param.getStartDate()) && StringUtils.isNotEmpty(param.getEndDate())) {
  1210. if (param.getIfForeign().equals("0")) {
  1211. // 查国内,即线上订单
  1212. if (StringUtils.isNotEmpty(param.getClientId())) {
  1213. // 如果type等于1,就查询设备所属商家是否是旗下管理的
  1214. if (param.getType() == 4) {
  1215. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  1216. if (equipment == null) {
  1217. return orderDaoChuDTOList;
  1218. }
  1219. if (param.getAdminIds().contains(equipment.getAdminId())) {
  1220. param.setAdminIds(null);
  1221. } else {
  1222. return orderDaoChuDTOList;
  1223. }
  1224. }
  1225. }
  1226. // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
  1227. if (StringUtils.isNotEmpty(param.getUsername())) {
  1228. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
  1229. if (admin == null) {
  1230. return orderDaoChuDTOList;
  1231. }
  1232. if (param.getType() == 4) {
  1233. if (param.getAdminIds().contains(admin.getId())) {
  1234. param.setAdminId(String.valueOf(admin.getId()));
  1235. param.setAdminIds(null);
  1236. } else {
  1237. return orderDaoChuDTOList;
  1238. }
  1239. } else if (param.getType() == 0) {
  1240. param.setAdminId(String.valueOf(admin.getId()));
  1241. }
  1242. }
  1243. // 条件:adminList
  1244. if (param.getAdminIds() != null && !param.getAdminIds().isEmpty()) {
  1245. param.setAdminId(null);
  1246. }
  1247. param.setCurrent((pageNo - 1) * param.getSize());
  1248. orderDaoChuDTOList = tOrderMapper.summaryStatistics(param);
  1249. } else {
  1250. // 查国外,即线下订单
  1251. if (StringUtils.isNotEmpty(param.getClientId())) {
  1252. // 如果type等于1,就查询设备所属商家是否是旗下管理的
  1253. if (param.getType() == 4) {
  1254. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
  1255. if (equipment == null) {
  1256. return orderDaoChuDTOList;
  1257. }
  1258. if (param.getAdminIds().contains(equipment.getAdminId())) {
  1259. param.setAdminIds(null);
  1260. } else {
  1261. return orderDaoChuDTOList;
  1262. }
  1263. }
  1264. }
  1265. // 条件:adminId,如果type等于1,就查询账号是否是旗下管理的
  1266. if (StringUtils.isNotEmpty(param.getUsername())) {
  1267. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminByUsername(param.getUsername()));
  1268. if (admin == null) {
  1269. return orderDaoChuDTOList;
  1270. }
  1271. if (param.getType() == 4) {
  1272. if (param.getAdminIds().contains(admin.getId())) {
  1273. param.setAdminId(String.valueOf(admin.getId()));
  1274. param.setAdminIds(null);
  1275. } else {
  1276. return orderDaoChuDTOList;
  1277. }
  1278. } else if (param.getType() == 0) {
  1279. param.setAdminId(String.valueOf(admin.getId()));
  1280. }
  1281. }
  1282. // 条件:adminList
  1283. if (param.getAdminIds() != null && !param.getAdminIds().isEmpty()) {
  1284. param.setAdminId(null);
  1285. }
  1286. param.setCurrent((pageNo - 1) * param.getSize());
  1287. orderDaoChuDTOList = tCoinOrderMapper.summaryStatistics(param);
  1288. }
  1289. for (OrderDaoChuDTO orderDaoChuDTO : orderDaoChuDTOList) {
  1290. String adminId1 = orderDaoChuDTO.getAdminId().toString();
  1291. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(adminId1));
  1292. if (admin == null) {
  1293. continue;
  1294. }
  1295. orderDaoChuDTO.setPhone(admin.getPhone());
  1296. orderDaoChuDTO.setUsername(admin.getUsername());
  1297. orderDaoChuDTO.setName(admin.getName());
  1298. if (!StringUtils.isEmpty(param.getPacketType()) && param.getPacketType().equals("0")) {
  1299. //商户为单位
  1300. TArea area = areaService.getById(admin.getAreaId());
  1301. if (area != null) {
  1302. orderDaoChuDTO.setAddress(area.getFullName());
  1303. }
  1304. String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(adminId1));
  1305. orderDaoChuDTO.setEquipmentTotal(equipmentTotal);
  1306. } else {
  1307. //设备为单位
  1308. ResponseModel<TEquipment> equipmentByClientId = szwlFeign.findEquipmentByClientId(String.valueOf(orderDaoChuDTO.getClientId()));
  1309. TEquipment equipment = equipmentByClientId.getData();
  1310. if (equipment != null && equipment.getId() != null) {
  1311. if (StringUtils.isNotEmpty(equipment.getFullName())) {
  1312. orderDaoChuDTO.setAddress(equipment.getFullName());
  1313. }
  1314. orderDaoChuDTO.setEquipmentType(equipment.getEquimentType());
  1315. orderDaoChuDTO.setCreateDate(equipment.getCreateDate());
  1316. }
  1317. }
  1318. }
  1319. }
  1320. return orderDaoChuDTOList;
  1321. }
  1322. private List<StatisticsClientIdTarget> exportStatisticsYearByClientId(List<OrderStatisticsYear> list) {
  1323. List<StatisticsClientIdTarget> clientIdTargetList = new ArrayList<>();
  1324. for (OrderStatisticsYear orderStatisticsYear : list) {
  1325. StatisticsClientIdTarget target = new StatisticsClientIdTarget();
  1326. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatisticsYear.getAdminId())));
  1327. // 按设备分组
  1328. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(String.valueOf(orderStatisticsYear.getEquipmentId())));
  1329. target.setUsername(admin.getUsername());
  1330. target.setName(admin.getName());
  1331. target.setPhone(admin.getPhone());
  1332. target.setAddress(equipment.getFullName());
  1333. target.setClientId(equipment.getClientId());
  1334. target.setEquipmentType(equipment.getEquimentType());
  1335. target.setSalesVolume(orderStatisticsYear.getSaleNum());
  1336. target.setPriceTotal(orderStatisticsYear.getSalePrice());
  1337. clientIdTargetList.add(target);
  1338. }
  1339. return clientIdTargetList;
  1340. }
  1341. private List<StatisticsClientIdTarget> exportStatisticsMonthByClientId(List<OrderStatisticsMonth> list) {
  1342. List<StatisticsClientIdTarget> clientIdTargetList = new ArrayList<>();
  1343. for (OrderStatisticsMonth orderStatisticsMonth : list) {
  1344. StatisticsClientIdTarget target = new StatisticsClientIdTarget();
  1345. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatisticsMonth.getAdminId())));
  1346. // 按设备分组
  1347. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(String.valueOf(orderStatisticsMonth.getEquipmentId())));
  1348. target.setUsername(admin.getUsername());
  1349. target.setName(admin.getName());
  1350. target.setPhone(admin.getPhone());
  1351. target.setAddress(equipment.getFullName());
  1352. target.setClientId(equipment.getClientId());
  1353. target.setEquipmentType(equipment.getEquimentType());
  1354. target.setSalesVolume(orderStatisticsMonth.getSaleNum());
  1355. target.setPriceTotal(orderStatisticsMonth.getSalePrice());
  1356. clientIdTargetList.add(target);
  1357. }
  1358. return clientIdTargetList;
  1359. }
  1360. private List<StatisticsAdminTarget> exportStatisticsYearByAdmin(List<OrderStatisticsYear> list) {
  1361. List<StatisticsAdminTarget> adminTargetList = new ArrayList<>();
  1362. for (OrderStatisticsYear orderStatisticsYear : list) {
  1363. StatisticsAdminTarget target = new StatisticsAdminTarget();
  1364. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatisticsYear.getAdminId())));
  1365. // 按商户分组
  1366. String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(String.valueOf(orderStatisticsYear.getAdminId())));
  1367. TArea area = areaService.getById(admin.getAreaId());
  1368. if (area != null) {
  1369. target.setAddress(area.getFullName());
  1370. }
  1371. target.setUsername(admin.getUsername());
  1372. target.setName(admin.getName());
  1373. target.setPhone(admin.getPhone());
  1374. target.setEquipmentTotal(equipmentTotal);
  1375. target.setSalesVolume(orderStatisticsYear.getSaleNum());
  1376. target.setPriceTotal(orderStatisticsYear.getSalePrice());
  1377. adminTargetList.add(target);
  1378. }
  1379. return adminTargetList;
  1380. }
  1381. private List<StatisticsAdminTarget> exportStatisticsMonthByAdmin(List<OrderStatisticsMonth> list) {
  1382. List<StatisticsAdminTarget> adminTargetList = new ArrayList<>();
  1383. for (OrderStatisticsMonth orderStatisticsMonth : list) {
  1384. StatisticsAdminTarget target = new StatisticsAdminTarget();
  1385. TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminVo(String.valueOf(orderStatisticsMonth.getAdminId())));
  1386. // 按商户分组
  1387. TArea area = areaService.getById(admin.getAreaId());
  1388. if (area != null) {
  1389. target.setAddress(area.getFullName());
  1390. }
  1391. String equipmentTotal = R.getDataIfSuccess(szwlFeign.getEquipmentTotal(String.valueOf(orderStatisticsMonth.getAdminId())));
  1392. target.setUsername(admin.getUsername());
  1393. target.setName(admin.getName());
  1394. target.setPhone(admin.getPhone());
  1395. target.setEquipmentTotal(equipmentTotal);
  1396. target.setSalesVolume(orderStatisticsMonth.getSaleNum());
  1397. target.setPriceTotal(orderStatisticsMonth.getSalePrice());
  1398. adminTargetList.add(target);
  1399. }
  1400. return adminTargetList;
  1401. }
  1402. private String getSzMessage(String sn, String price, String payTime, String equipmentName, String clientId, String customerPhone) {
  1403. String message = "";
  1404. if (StringUtils.isNotEmpty(customerPhone) && customerPhone.length() > 3) {
  1405. message = "【申泽智能】您好,接到消费者投诉:机器售卖出现问题,需要您退款。订单号:"
  1406. + sn + ",机器名称:" + equipmentName + ",设备编号:" + clientId +
  1407. ",价格:" + price + "元,订单支付时间:" + payTime + ",消费者联系方式:" + customerPhone +
  1408. "。如已通过私下退款,请提供退款截屏到群里,务必24小时内将此订单进行退款处理,否则我司将自动执行退款流程,以保障您的银行账户不被冻结,谢谢。";
  1409. } else {
  1410. message = "【申泽智能】您好,接到消费者投诉:机器售卖出现问题,需要您退款。订单号:"
  1411. + sn + ",机器名称:" + equipmentName + ",设备编号:" + clientId +
  1412. ",价格:" + price + "元,订单支付时间:" + payTime + ",该投诉消费者没有留联系方式,如需核实,请把你的联系方式反馈给我们,我们会把你的联系方式通知到消费者手上,让消费者联系您。" +
  1413. "如已通过私下退款,请提供退款截屏到群里,务必24小时内将此订单进行退款处理,否则我司将自动执行退款流程,以保障您的银行账户不被冻结,谢谢。";
  1414. }
  1415. return message;
  1416. }
  1417. private String getScMessage(String sn, String price, String payTime, String equipmentName, String clientId, String customerPhone) {
  1418. String message = "";
  1419. if (StringUtils.isNotEmpty(customerPhone) && customerPhone.length() > 3) {
  1420. message = "【七云科技】您好,接到消费者投诉:机器售卖出现问题,需要您退款。订单号:"
  1421. + sn + ",机器名称:" + equipmentName + ",设备编号:" + clientId +
  1422. ",价格:" + price + "元,订单支付时间:" + payTime + ",消费者联系方式:" + customerPhone +
  1423. "。如已通过私下退款,请提供退款截屏到群里,务必24小时内将此订单进行退款处理,否则我司将自动执行退款流程,以保障您的银行账户不被冻结,谢谢。";
  1424. } else {
  1425. message = "【七云科技】您好,接到消费者投诉:机器售卖出现问题,需要您退款。订单号:"
  1426. + sn + ",机器名称:" + equipmentName + ",设备编号:" + clientId +
  1427. ",价格:" + price + "元,订单支付时间:" + payTime + ",该投诉消费者没有留联系方式,如需核实,请把你的联系方式反馈给我们,我们会把你的联系方式通知到消费者手上,让消费者联系您。" +
  1428. "如已通过私下退款,请提供退款截屏到群里,务必24小时内将此订单进行退款处理,否则我司将自动执行退款流程,以保障您的银行账户不被冻结,谢谢。";
  1429. }
  1430. return message;
  1431. }
  1432. }