ChannelAnalyseServiceImpl.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528
  1. package com.ruoyi.demo.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.github.pagehelper.PageHelper;
  4. import com.github.pagehelper.PageInfo;
  5. import com.ruoyi.demo.constant.RedisContant;
  6. import com.ruoyi.demo.entity.Brand;
  7. import com.ruoyi.demo.entity.ManageType;
  8. import com.ruoyi.demo.entity.StoreWd;
  9. import com.ruoyi.demo.entity.WdInfo;
  10. import com.ruoyi.demo.entity.bo.Histogram;
  11. import com.ruoyi.demo.entity.bo.StoreWdCategoryCount;
  12. import com.ruoyi.demo.entity.bo.StoreWdCategoryCountBody;
  13. import com.ruoyi.demo.entity.vo.ChannelAnalyseAceeptVo;
  14. import com.ruoyi.demo.entity.vo.ChannelMapAceeptVo;
  15. import com.ruoyi.demo.entity.vo.TagAnalyse;
  16. import com.ruoyi.demo.mapper.BrandMapper;
  17. import com.ruoyi.demo.mapper.StoreWdDao;
  18. import com.ruoyi.demo.mapper.WdInfoDao;
  19. import com.ruoyi.demo.mapper.WdTopologicalInfoDao;
  20. import com.ruoyi.demo.service.ChannelAnalyseService;
  21. import com.ruoyi.demo.utils.InitMapUtil;
  22. import com.ruoyi.demo.utils.WdRedisStoreage;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.beans.factory.annotation.Qualifier;
  25. import org.springframework.data.geo.Circle;
  26. import org.springframework.data.geo.Distance;
  27. import org.springframework.data.geo.GeoResults;
  28. import org.springframework.data.geo.Point;
  29. import org.springframework.data.redis.connection.RedisGeoCommands;
  30. import org.springframework.data.redis.core.RedisTemplate;
  31. import org.springframework.stereotype.Service;
  32. import org.springframework.transaction.annotation.Transactional;
  33. import org.springframework.web.client.RestTemplate;
  34. import java.math.BigDecimal;
  35. import java.util.*;
  36. import java.util.concurrent.CompletableFuture;
  37. import java.util.concurrent.ExecutionException;
  38. import java.util.concurrent.ExecutorService;
  39. import java.util.stream.Collectors;
  40. @Service
  41. @Transactional
  42. public class ChannelAnalyseServiceImpl implements ChannelAnalyseService {
  43. @Autowired
  44. WdInfoDao wdInfoDao;
  45. @Autowired
  46. InitMapUtil initMapUtil;
  47. @Autowired
  48. BrandMapper brandMapper;
  49. @Autowired
  50. WdTopologicalInfoDao wdTopologicalInfoDao;
  51. @Autowired
  52. private WdRedisStoreage wdRedisStoreage;
  53. @Autowired
  54. private StoreWdDao storeWdDao;
  55. @Autowired
  56. @Qualifier("executor")
  57. ExecutorService executor;
  58. @Override
  59. public HashMap cityTier(ChannelMapAceeptVo channelMapAceeptVo) {
  60. //1.统计结果
  61. HashMap<String, Long> result = new HashMap<>();
  62. result.put("一线", 0L);
  63. result.put("新一线", 0L);
  64. result.put("二线", 0L);
  65. result.put("三线", 0L);
  66. result.put("四线", 0L);
  67. result.put("五线", 0L);
  68. result.put("其他", 0L);
  69. //1.获取所有符合条件的网点信息
  70. QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
  71. queryWrapper.select("addr_code","count(*) as audit");
  72. assembleQueryWrapper(queryWrapper,channelMapAceeptVo);
  73. queryWrapper.groupBy("addr_code");
  74. List<WdInfo> wdInfos = wdInfoDao.selectList(queryWrapper);
  75. for (WdInfo wdInfo : wdInfos) {
  76. String initCityTierMap = initMapUtil.getInitCityTierMap(wdInfo.getAddrCode());
  77. if (initCityTierMap != null) {
  78. result.put(initCityTierMap, result.get(initCityTierMap) + wdInfo.getAudit());
  79. } else
  80. result.put("其他", result.get("其他") + wdInfo.getAudit());
  81. }
  82. return result;
  83. }
  84. @Override
  85. public PageInfo<Brand> brandList(ChannelAnalyseAceeptVo channelAnalyseAceeptVo) {
  86. String text = "";
  87. if (channelAnalyseAceeptVo.getSearchText() != null)
  88. text = channelAnalyseAceeptVo.getSearchText();
  89. PageHelper.startPage(channelAnalyseAceeptVo.getPageNum(), channelAnalyseAceeptVo.getPageSize());
  90. List<Brand> brands = brandMapper.searchList(text);
  91. PageInfo<Brand> pageInfo = new PageInfo<>(brands);
  92. return pageInfo;
  93. }
  94. //TODO 待测试(redis版本)
  95. @Override
  96. public HashMap<String, Object> tagAnalyse(ChannelMapAceeptVo channelMapAceeptVo) {
  97. //1.根据条件的到位网点信息
  98. QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
  99. queryWrapper.select("wd_id");
  100. assembleQueryWrapper(queryWrapper,channelMapAceeptVo);
  101. queryWrapper.and(queryWrapper2 ->{
  102. queryWrapper2.eq("show_delete",0);
  103. });
  104. List<WdInfo> queryWd = wdInfoDao.selectList(queryWrapper);
  105. //2.获取周边标签
  106. List<String> collect = queryWd.stream().map(item -> {
  107. return RedisContant.WD_TAG + "_" + item.getWdId();
  108. }).collect(Collectors.toList());
  109. //切割获取redis数据
  110. int split = 60000;
  111. int splitCount = collect.size()/split;
  112. int p1 = 0,p2 = split;
  113. ArrayList<CompletableFuture<List<List<String>>>> splitList = new ArrayList<>();
  114. for (int i=1;i<=splitCount;i++){
  115. if (p2 > collect.size())
  116. p2 = collect.size();
  117. List<String> list2 = collect.subList(p1, p2);
  118. CompletableFuture<List<List<String>>> future = CompletableFuture.supplyAsync(()->{
  119. return wdRedisStoreage.getWdTagList(list2);
  120. },executor);
  121. splitList.add(future);
  122. p1 = p2;
  123. p2+=split;
  124. }
  125. //3.统计
  126. Hashtable<String, Integer> hashtable = new Hashtable<>();
  127. hashtable.put("total",0);
  128. ArrayList<CompletableFuture<Void>> list1 = new ArrayList<>();
  129. for (CompletableFuture<List<List<String>>> listCompletableFuture : splitList) {
  130. try {
  131. List<List<String>> lists = listCompletableFuture.get();
  132. for (List<String> list : lists) {
  133. if (list != null && !list.isEmpty()){
  134. CompletableFuture<Void> future = CompletableFuture.runAsync(()->{
  135. for (String s : list) {
  136. s += "边";
  137. Integer integer = hashtable.get(s);
  138. if (integer == null)
  139. hashtable.put(s,1);
  140. else
  141. hashtable.put(s,integer+1);
  142. }
  143. hashtable.put("total",hashtable.get("total")+1);
  144. },executor);
  145. list1.add(future);
  146. }
  147. }
  148. CompletableFuture.allOf(list1.toArray(new CompletableFuture[list1.size()])).join();
  149. lists = null;
  150. } catch (InterruptedException e) {
  151. throw new RuntimeException(e);
  152. } catch (ExecutionException e) {
  153. throw new RuntimeException(e);
  154. }
  155. }
  156. collect = null;
  157. queryWd = null;
  158. //4.封装统计值
  159. HashMap<String, Object> result = new HashMap<>();
  160. List<TagAnalyse> list = new ArrayList<>();
  161. Integer total = hashtable.get("total");
  162. for (String s : hashtable.keySet()) {
  163. if (s.equals("total"))
  164. continue;
  165. TagAnalyse tagAnalyse = new TagAnalyse();
  166. tagAnalyse.setName(s);
  167. tagAnalyse.setCount(hashtable.get(s));
  168. BigDecimal bigDecimal = new BigDecimal((double) tagAnalyse.getCount() / total);
  169. double v = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
  170. tagAnalyse.setRadio(v);
  171. list.add(tagAnalyse);
  172. }
  173. //5.对结果集进行排序
  174. Collections.sort(list, new Comparator<TagAnalyse>() {
  175. @Override
  176. public int compare(TagAnalyse o1, TagAnalyse o2) {
  177. return o2.getCount() - o1.getCount();
  178. }
  179. });
  180. //5.分页返回结果集
  181. int i = 1;
  182. int start = 0,end = 6;
  183. while(start<list.size()){
  184. if(end>=list.size())
  185. end = list.size();
  186. result.put(""+i++,new ArrayList(list.subList(start,end)));
  187. start=end;
  188. end+=6;
  189. }
  190. result.put("pages",i-1);
  191. result.put("total",total);
  192. return result;
  193. }
  194. @Override
  195. public List<StoreWdCategoryCount> category(ChannelMapAceeptVo channelMapAceeptVo) {
  196. //2.组装条件构造器找到网点信息网点
  197. QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
  198. queryWrapper.select("wd_id");
  199. assembleQueryWrapper(queryWrapper,channelMapAceeptVo);
  200. queryWrapper.and(queryWrapper2 ->{
  201. queryWrapper2.eq("show_delete",0);
  202. });
  203. //门店
  204. queryWrapper.and(queryWrapper1 -> {
  205. queryWrapper1.eq("wd_type_code","1");
  206. });
  207. //5.查询周边网点结果,并统计
  208. List<StoreWd> storeWds = storeWdDao.category(queryWrapper);
  209. HashMap<String,StoreWdCategoryCount> hashMap = new HashMap<>();
  210. for (StoreWd wdInfo : storeWds) {
  211. if(wdInfo.getManageTypeCode() == null || wdInfo.getManageTypeCode().equals(""))
  212. continue;
  213. String s = wdInfo.getManageTypeCode().substring(0, 4) + "00";
  214. StoreWdCategoryCount storeWdCategoryCount = hashMap.get(s);
  215. ManageType initManageType = initMapUtil.getInitManageType(wdInfo.getManageTypeCode());
  216. if (storeWdCategoryCount == null){
  217. StoreWdCategoryCountBody storeWdCategoryCountBody = new StoreWdCategoryCountBody();
  218. if(initManageType.getSubCategory() != null && !initManageType.getSubCategory().equals("")){
  219. storeWdCategoryCountBody.setName(initManageType.getSubCategory());
  220. }else if(initManageType.getMidCategory() != null && !initManageType.getMidCategory().equals("")){
  221. storeWdCategoryCountBody.setName(initManageType.getMidCategory());
  222. }else if (initManageType.getBigCategory() != null && !initManageType.getBigCategory().equals("")){
  223. storeWdCategoryCountBody.setName(initManageType.getBigCategory());
  224. }
  225. storeWdCategoryCountBody.setManageTypeCode(wdInfo.getManageTypeCode());
  226. storeWdCategoryCountBody.setCount(wdInfo.getCommentCount());
  227. StoreWdCategoryCount storeWdCategoryCount1 = new StoreWdCategoryCount();
  228. storeWdCategoryCount1.setManageTypeCode(s);
  229. storeWdCategoryCount1.setName(initMapUtil.getInitManageType(s).getMidCategory());
  230. storeWdCategoryCount1.setCount(wdInfo.getCommentCount());
  231. ArrayList<StoreWdCategoryCountBody> list = new ArrayList<>();
  232. list.add(storeWdCategoryCountBody);
  233. storeWdCategoryCount1.setStoreWdCategoryCountBodyList(list);
  234. hashMap.put(s,storeWdCategoryCount1);
  235. }else {
  236. StoreWdCategoryCountBody storeWdCategoryCountBody = new StoreWdCategoryCountBody();
  237. if(initManageType.getSubCategory() != null && !initManageType.getSubCategory().equals("")){
  238. storeWdCategoryCountBody.setName(initManageType.getSubCategory());
  239. }else if(initManageType.getMidCategory() != null && !initManageType.getMidCategory().equals("")){
  240. storeWdCategoryCountBody.setName(initManageType.getMidCategory());
  241. }else if (initManageType.getBigCategory() != null && !initManageType.getBigCategory().equals("")){
  242. storeWdCategoryCountBody.setName(initManageType.getBigCategory());
  243. }
  244. storeWdCategoryCountBody.setManageTypeCode(wdInfo.getManageTypeCode());
  245. storeWdCategoryCountBody.setCount(wdInfo.getCommentCount());
  246. storeWdCategoryCount.getStoreWdCategoryCountBodyList().add(storeWdCategoryCountBody);
  247. storeWdCategoryCount.setCount(storeWdCategoryCountBody.getCount()+storeWdCategoryCount.getCount());
  248. //hashMap.put(s,storeWdCategoryCount);
  249. }
  250. }
  251. //6.组装结果集
  252. List<StoreWdCategoryCount> storeWdCategoryCounts = new ArrayList<>();
  253. for (String s : hashMap.keySet()) {
  254. storeWdCategoryCounts.add(hashMap.get(s));
  255. }
  256. return storeWdCategoryCounts;
  257. }
  258. @Override
  259. public HashMap businessStatusAnalyse(ChannelMapAceeptVo channelMapAceeptVo) {
  260. QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
  261. queryWrapper.select("wd_id");
  262. assembleQueryWrapper(queryWrapper,channelMapAceeptVo);
  263. queryWrapper.and(queryWrapper1 -> {
  264. queryWrapper1.eq("wd_type_code","1");
  265. });
  266. queryWrapper.and(queryWrapper2 ->{
  267. queryWrapper2.eq("show_delete",0);
  268. });
  269. List<StoreWd> storeWds = storeWdDao.businessStatusAnalyse(queryWrapper);
  270. HashMap<String,Integer> hashMap = new HashMap<>();
  271. int total = 0;
  272. for (StoreWd storeWd : storeWds) {
  273. total+=storeWd.getCommentCount();
  274. hashMap.put(storeWd.getBusinessStatus(),storeWd.getCommentCount());
  275. }
  276. ArrayList<Histogram> list = new ArrayList<>();
  277. for (String s : hashMap.keySet()) {
  278. Histogram histogram = new Histogram();
  279. histogram.setName(s);
  280. histogram.setCount(hashMap.get(s));
  281. list.add(histogram);
  282. }
  283. HashMap<String, Object> result = new HashMap<>();
  284. result.put("total",total);
  285. result.put("data",list);
  286. return result;
  287. }
  288. @Override
  289. public ArrayList<Histogram> aroundBuildAnalyse(ChannelMapAceeptVo channelMapAceeptVo) {
  290. QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
  291. queryWrapper.select("type_code_by","count(*) as audit");
  292. assembleQueryWrapper(queryWrapper,channelMapAceeptVo);
  293. queryWrapper.and(queryWrapper1 -> {
  294. queryWrapper1.eq("wd_type_code","3");
  295. });
  296. queryWrapper.and(queryWrapper1 -> {
  297. queryWrapper1.isNotNull("type_code_by");
  298. });
  299. queryWrapper.groupBy("type_code_by");
  300. List<WdInfo> wdInfos = wdInfoDao.selectList(queryWrapper);
  301. int total = 0;
  302. HashMap<String,Integer> hashMap = new HashMap<>();
  303. for (WdInfo wdInfo : wdInfos) {
  304. String typeCodeBy = wdInfo.getTypeCodeBy().substring(0,2);
  305. Integer integer = hashMap.get(typeCodeBy);
  306. if (integer == null){
  307. hashMap.put(typeCodeBy,wdInfo.getAudit());
  308. }else {
  309. hashMap.put(typeCodeBy,hashMap.get(typeCodeBy)+wdInfo.getAudit());
  310. }
  311. total+=wdInfo.getAudit();
  312. }
  313. ArrayList<Histogram> list = new ArrayList<>();
  314. for (String s : hashMap.keySet()) {
  315. Integer integer = hashMap.get(s);
  316. String initTypeByMap = initMapUtil.getInitTypeByMap(s + "0000").replace(":","");
  317. Histogram histogram = new Histogram();
  318. histogram.setName(initTypeByMap);
  319. histogram.setCount(integer);
  320. list.add(histogram);
  321. }
  322. return list;
  323. }
  324. @Override
  325. public ArrayList<Histogram> perCapitaConsumpAnalyse(ChannelMapAceeptVo channelMapAceeptVo) {
  326. QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
  327. queryWrapper.select("wd_id");
  328. assembleQueryWrapper(queryWrapper,channelMapAceeptVo);
  329. queryWrapper.and(queryWrapper1 -> {
  330. queryWrapper1.eq("wd_type_code","1");
  331. });
  332. queryWrapper.and(queryWrapper2 ->{
  333. queryWrapper2.eq("show_delete",0);
  334. });
  335. List<StoreWd> storeWds = storeWdDao.perCapitaConsumpAnalyse(queryWrapper);
  336. LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();
  337. linkedHashMap.put("0~20",0);
  338. linkedHashMap.put("20~50",0);
  339. linkedHashMap.put("50~100",0);
  340. linkedHashMap.put("100~200",0);
  341. linkedHashMap.put("200以上",0);
  342. for (StoreWd storeWd : storeWds) {
  343. if (storeWd.getPerCapitaConsumption() != null){
  344. if (storeWd.getPerCapitaConsumption() >= 0 && storeWd.getPerCapitaConsumption()<20){
  345. linkedHashMap.put("0~20",linkedHashMap.get("0~20")+1);
  346. }else if(storeWd.getPerCapitaConsumption() >= 20 && storeWd.getPerCapitaConsumption()<50){
  347. linkedHashMap.put("20~50",linkedHashMap.get("20~50")+1);
  348. }else if(storeWd.getPerCapitaConsumption() >= 50 && storeWd.getPerCapitaConsumption()< 100){
  349. linkedHashMap.put("50~100",linkedHashMap.get("50~100")+1);
  350. }else if(storeWd.getPerCapitaConsumption() >= 100 && storeWd.getPerCapitaConsumption()< 200){
  351. linkedHashMap.put("100~200",linkedHashMap.get("100~200")+1);
  352. }else {
  353. linkedHashMap.put("200以上",linkedHashMap.get("200以上")+1);
  354. }
  355. }
  356. }
  357. ArrayList<Histogram> list = new ArrayList<>();
  358. for (String s : linkedHashMap.keySet()) {
  359. Histogram histogram1 = new Histogram(s,linkedHashMap.get(s));
  360. list.add(histogram1);
  361. }
  362. return list;
  363. }
  364. @Override
  365. public ArrayList<Histogram> operateTimeAnalyse(ChannelMapAceeptVo channelMapAceeptVo) {
  366. QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
  367. queryWrapper.select("wd_id");
  368. assembleQueryWrapper(queryWrapper,channelMapAceeptVo);
  369. queryWrapper.and(queryWrapper1 -> {
  370. queryWrapper1.eq("wd_type_code","1");
  371. });
  372. queryWrapper.and(queryWrapper2 ->{
  373. queryWrapper2.eq("show_delete",0);
  374. });
  375. List<StoreWd> storeWds = storeWdDao.operateTimeAnalyse(queryWrapper);
  376. HashMap<Integer,Integer> hashMap = new HashMap<>();
  377. for (StoreWd storeWd : storeWds) {
  378. Integer opentime = Integer.valueOf(storeWd.getOpentime().substring(0,2));
  379. Integer closetime = Integer.valueOf(storeWd.getClosetime().substring(0,2));
  380. int i = closetime - opentime;
  381. Integer integer = hashMap.get(i);
  382. if (integer == null)
  383. hashMap.put(i,1);
  384. else
  385. hashMap.put(i,integer+1);
  386. }
  387. ArrayList<Histogram> list = new ArrayList<>();
  388. for (Integer s : hashMap.keySet()) {
  389. Histogram histogram = new Histogram();
  390. histogram.setName(s+"");
  391. histogram.setCount(hashMap.get(s));
  392. list.add(histogram);
  393. }
  394. return list;
  395. }
  396. public void assembleQueryWrapper(QueryWrapper<WdInfo> queryWrapper,ChannelMapAceeptVo channelMapAceeptVo){
  397. //1.根据不同级别得到需要查询的 地区码
  398. List<String> addrCodeList = new ArrayList<>();
  399. if ("province".equals(channelMapAceeptVo.getRankType())) {
  400. //省码
  401. for (String s : channelMapAceeptVo.getAddrCode()) {
  402. String substring = s.substring(0, 2);
  403. addrCodeList.add(substring);
  404. }
  405. } else if ("city".equals(channelMapAceeptVo.getRankType())) {
  406. //省的所有市
  407. for (String s : channelMapAceeptVo.getAddrCode()) {
  408. String substring = s.substring(0, 2);
  409. addrCodeList.add(substring);
  410. }
  411. } else if ("zone".equals(channelMapAceeptVo.getRankType())) {
  412. //市的所有区
  413. for (String s : channelMapAceeptVo.getAddrCode()) {
  414. String substring = s.substring(0, 4);
  415. addrCodeList.add(substring);
  416. }
  417. } else if ("district".equals(channelMapAceeptVo.getRankType())){
  418. //区的所有街道
  419. for (String s : channelMapAceeptVo.getAddrCode()) {
  420. String substring = s.substring(0, 6);
  421. addrCodeList.add(substring);
  422. }
  423. }else {
  424. //省码
  425. for (String s : channelMapAceeptVo.getAddrCode()) {
  426. String substring = s.substring(0, 2);
  427. addrCodeList.add(substring);
  428. }
  429. }
  430. queryWrapper.in("wd_type_code", channelMapAceeptVo.getChannel()).and(originWdInfoQueryWrapper -> {
  431. for (String s : addrCodeList) {
  432. originWdInfoQueryWrapper.likeRight("addr_code", s).or();
  433. }
  434. });
  435. //搜索字段
  436. if (channelMapAceeptVo.getSearchText() != null && !channelMapAceeptVo.getSearchText() .trim().equals("")) {
  437. queryWrapper.and(originWdInfoQueryWrapper -> {
  438. originWdInfoQueryWrapper.like("wd_name", channelMapAceeptVo.getSearchText() );
  439. });
  440. }
  441. //城市等级分类
  442. if(channelMapAceeptVo.getCityTier() != null && channelMapAceeptVo.getCityTier().length > 0){
  443. List<String> tierCode = new ArrayList<>();
  444. for (String s : channelMapAceeptVo.getCityTier()) {
  445. List<String> list = initMapUtil.getInitCityTierListMap(s);
  446. if (list != null){
  447. tierCode.addAll(list);
  448. }
  449. }
  450. queryWrapper.and(wdInfoQueryWrapper -> {
  451. for (String s : tierCode) {
  452. wdInfoQueryWrapper.likeRight("addr_code", s).or();
  453. }
  454. });
  455. }
  456. //排序字段查询
  457. if (channelMapAceeptVo.getOrderby() != null && !channelMapAceeptVo.getOrderby().trim().equals("")) {
  458. PageHelper.orderBy(channelMapAceeptVo.getOrderby());
  459. }
  460. }
  461. }