AdvertiserReportController.java 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309
  1. package com.cloudcross.ssp.web.back.main.ad.report;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.text.SimpleDateFormat;
  5. import java.util.ArrayList;
  6. import java.util.Date;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import org.apache.commons.lang.ArrayUtils;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.ui.Model;
  16. import org.springframework.web.bind.annotation.ModelAttribute;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.RequestParam;
  19. import org.springframework.web.bind.annotation.ResponseBody;
  20. import com.cloudcross.ssp.back.model.Account;
  21. import com.cloudcross.ssp.back.model.DeliverAnalysis;
  22. import com.cloudcross.ssp.back.model.Dimension;
  23. import com.cloudcross.ssp.back.service.IAdReportService;
  24. import com.cloudcross.ssp.back.service.IDimensionService;
  25. import com.cloudcross.ssp.base.utils.freemarker.FreemarkerTemplateProcessor;
  26. import com.cloudcross.ssp.base.web.SimpleController;
  27. import com.cloudcross.ssp.common.utils.Pager;
  28. /**
  29. * 统计报表页面。
  30. *
  31. * @author colin
  32. */
  33. @Controller("back.advertiserReportController")
  34. @RequestMapping("/back/main/ad/report/advertiser-report")
  35. public class AdvertiserReportController extends SimpleController {
  36. @Autowired
  37. private IAdReportService adReportService;
  38. @Autowired
  39. private IDimensionService dimensionService;
  40. @Autowired
  41. private FreemarkerTemplateProcessor templateProcessor;
  42. @RequestMapping
  43. public String index(Model model,
  44. @RequestParam HashMap<String, Object> paramMap,
  45. @RequestParam(defaultValue="1") int page)
  46. {
  47. //前端需要传广告主idadvertiser和时间过来dateRangePicker
  48. //判断前端传过来的登录账户id确定权限
  49. Account account = getLoginUser();
  50. paramMap.put("agentId", account.getAgentId());
  51. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  52. String startDate = null;
  53. String endDate = null;
  54. // 广告主Id,订单Id,活动Id,投放Id
  55. Long advertiserId = null;
  56. Long orderId = null;
  57. Long campaignId = null;
  58. Long adGroupId = null;
  59. Long dimensionId = null;
  60. String advertiserName = "全部广告主";
  61. String orderName = "全部订单";
  62. String campaignName = "全部活动";
  63. String adGroupName = "全部投放";
  64. String dimensionName = "请选择维度";
  65. /**
  66. * 前端日期传值为dateRangePicker
  67. * 中间是to分割。
  68. * 默认是昨天的数据
  69. * 需要对这些数据进行处理和判断
  70. * @author Hao
  71. */
  72. if (null == paramMap.get("selectedadvertiserId")
  73. || "".equals(paramMap.get("selectedadvertiserId"))) {
  74. advertiserId = null;
  75. advertiserName = "全部广告主";
  76. } else {
  77. // 如果要查询的是所有广告主则让广告主id为空
  78. if (-1 == Long.parseLong((String) paramMap
  79. .get("selectedadvertiserId"))) {
  80. advertiserId = null;
  81. advertiserName = "全部广告主";
  82. } else {
  83. advertiserId = Long.parseLong((String) paramMap
  84. .get("selectedadvertiserId"));
  85. advertiserName = (String)paramMap.get("selectedadvertiserName");
  86. }
  87. }
  88. //订单选择与否
  89. if (null == paramMap.get("selectedorderId")
  90. || "".equals(paramMap.get("selectedorderId"))) {
  91. orderId = null;
  92. orderName = "全部订单";
  93. } else {
  94. if (-1 == Long.parseLong((String) paramMap
  95. .get("selectedorderId"))) {
  96. orderId = null;
  97. orderName = "全部订单";
  98. } else {
  99. orderId = Long.parseLong((String) paramMap
  100. .get("selectedorderId"));
  101. orderName = (String)paramMap.get("selectedorderName");
  102. }
  103. }
  104. //活动选择与否
  105. if (null == paramMap.get("selectedcampaignId")
  106. || "".equals(paramMap.get("selectedcampaignId"))) {
  107. campaignId = null;
  108. campaignName = "全部活动";
  109. } else {
  110. if (-1 == Long.parseLong((String) paramMap
  111. .get("selectedcampaignId"))) {
  112. campaignId = null;
  113. campaignName = "全部活动";
  114. } else {
  115. campaignId = Long.parseLong((String) paramMap
  116. .get("selectedcampaignId"));
  117. campaignName = (String)paramMap.get("selectedcampaignName");
  118. }
  119. }
  120. //投放选择与否
  121. if (null == paramMap.get("selectedadGroupId")
  122. || "".equals(paramMap.get("selectedadGroupId"))) {
  123. adGroupId = null;
  124. adGroupName = "全部投放";
  125. } else {
  126. if (-1 == Long.parseLong((String) paramMap
  127. .get("selectedadGroupId"))) {
  128. adGroupId = null;
  129. adGroupName = "全部投放";
  130. } else {
  131. adGroupId = Long.parseLong((String) paramMap
  132. .get("selectedadGroupId"));
  133. adGroupName = (String)paramMap.get("selectedadGroupName");
  134. }
  135. }
  136. //判断日期是否为默认值昨天,日期格式与上面相统一,用 to 分割
  137. if (null == paramMap.get("dateRangePicker")
  138. || "".equals(paramMap.get("dateRangePicker"))) {
  139. startDate = endDate = sdf.format(new Date((new Date())
  140. .getTime() - 24 * 60 * 60 * 1000));
  141. } else {
  142. String[] choosedDate = ((String) paramMap
  143. .get("dateRangePicker")).split("to");
  144. startDate = choosedDate[0].trim();
  145. endDate = choosedDate[1].trim();
  146. }
  147. //选择维度
  148. if (null == paramMap.get("selecteddimensionId")
  149. || "".equals(paramMap.get("selecteddimensionId"))) {
  150. dimensionId = null;
  151. dimensionName = "请选择维度";
  152. } else {
  153. // 如果要查询的是所有广告主则让广告主id为空
  154. if (-1 == Long.parseLong((String) paramMap
  155. .get("selecteddimensionId"))) {
  156. dimensionId = Long.parseLong("-1");
  157. dimensionName = "请选择维度";
  158. } else {
  159. dimensionId = Long.parseLong((String) paramMap
  160. .get("selecteddimensionId"));
  161. dimensionName = (String)paramMap.get("selecteddimensionName");
  162. }
  163. }
  164. paramMap.put("advertiserId", advertiserId);
  165. paramMap.put("orderId", orderId);
  166. paramMap.put("campaignId", campaignId);
  167. paramMap.put("adGroupId", adGroupId);
  168. paramMap.put("startDate", startDate);
  169. paramMap.put("endDate", endDate);
  170. paramMap.put("selectedadvertiserName", advertiserName);
  171. paramMap.put("selectedorderName", orderName);
  172. paramMap.put("selectedcampaignName", campaignName);
  173. paramMap.put("selectedadGroupName", adGroupName);
  174. paramMap.put("dimensionId", dimensionId);
  175. paramMap.put("selecteddimensionName", dimensionName);
  176. int totalRow = adReportService.findCountForDeliverEffectAnalysis(paramMap);
  177. Pager pager = new Pager();
  178. pager.setPage(page);
  179. pager.setTotalRow(totalRow);
  180. List<DeliverAnalysis> reportList = adReportService.findByTotalReport(paramMap, pager);
  181. //若是没有符合条件的数据,则对应的选项皆显示为0
  182. if(reportList.size() == 0){
  183. DeliverAnalysis map = new DeliverAnalysis();
  184. DeliverAnalysis deliver = new DeliverAnalysis();
  185. deliver.setImpression(0);
  186. deliver.setClick(0);
  187. deliver.setVisit(0);
  188. deliver.setConversion(0);
  189. deliver.setConsume(0);
  190. deliver.seteCmp(0);
  191. deliver.setClickRate(0);
  192. deliver.setVisitRate(0);
  193. deliver.setConversionRate(0);
  194. map = deliver;
  195. model.addAttribute("reportMap", map);
  196. }
  197. else {
  198. //数据报表中第一栏 全部 的显示
  199. HashMap<String,Double> map = new HashMap<String,Double>();
  200. map.put("impressionSum", reportList.get(0).getImpressionSum());
  201. map.put("clickSum", reportList.get(0).getClickSum());
  202. map.put("visitSum", reportList.get(0).getVisitSum());
  203. map.put("conversionSum", reportList.get(0).getConversionSum());
  204. map.put("consumeSum", reportList.get(0).getConsumeSum());
  205. map.put("eCmpSum", reportList.get(0).geteCmpSum());
  206. map.put("clickRatesum", reportList.get(0).getClickRatesum());
  207. map.put("visitRatesum", reportList.get(0).getVisitRatesum());
  208. map.put("conversionRatesum", reportList.get(0).getConversionRatesum());
  209. model.addAttribute("reportMap", map);
  210. System.out.println("tttttttttt");
  211. }
  212. if(null == paramMap.get("advertiserId")) {
  213. paramMap.put("selectedadvertiserId", "-1");
  214. } else {
  215. paramMap.put("selectedadvertiserId", paramMap.get("advertiserId"));
  216. }
  217. if(null == paramMap.get("orderId")) {
  218. paramMap.put("selectedorderId", "-1");
  219. } else {
  220. paramMap.put("selectedorderId", paramMap.get("orderId"));
  221. }
  222. if(null == paramMap.get("campaignId")) {
  223. paramMap.put("selectedcampaignId", "-1");
  224. } else {
  225. paramMap.put("selectedcampaignId", paramMap.get("campaignId"));
  226. }
  227. if(null == paramMap.get("adgroupId")) {
  228. paramMap.put("selectedadgroupId", "-1");
  229. } else {
  230. paramMap.put("selectedadgroupId", paramMap.get("adgroupId"));
  231. }
  232. //维度更新表格
  233. if(dimensionId == null){
  234. HashMap<String,Object> dimensionmap = dimensionService.selectDimensionIdBydefault();
  235. if(Integer.parseInt(dimensionmap.get("num").toString()) == 0){
  236. model.addAttribute("dimensionLength",null);
  237. model.addAttribute("dimensionTarget",null);
  238. }else{
  239. dimensionId = Long.valueOf(dimensionmap.get("id").toString());
  240. paramMap.put("selecteddimensionName", dimensionmap.get("name"));
  241. paramMap.put("dimensionId", dimensionId);
  242. List<HashMap<String,Object>> list = getDimensionById(dimensionId);
  243. if(list.size() >0 ){
  244. model.addAttribute("dimensionLength",list.size());
  245. model.addAttribute("dimensionTarget",list);
  246. }else{
  247. model.addAttribute("dimensionLength",null);
  248. model.addAttribute("dimensionTarget",null);
  249. }
  250. }
  251. }else if(dimensionId == -1){
  252. model.addAttribute("dimensionLength",null);
  253. model.addAttribute("dimensionTarget",null);
  254. }else{
  255. List<HashMap<String,Object>> list = getDimensionById(dimensionId);
  256. if(list.size() >0 ){
  257. model.addAttribute("dimensionLength",list.size());
  258. model.addAttribute("dimensionTarget",list);
  259. }else{
  260. model.addAttribute("dimensionLength",null);
  261. model.addAttribute("dimensionTarget",null);
  262. }
  263. }
  264. model.addAllAttributes(paramMap);
  265. model.addAttribute("pager", pager);
  266. model.addAttribute("reportList", reportList);
  267. return index;
  268. }
  269. //维度管理
  270. @RequestMapping("/dimension")
  271. public String dimension(Model model,
  272. @RequestParam HashMap<String, Object> paramMap,
  273. @RequestParam(defaultValue="1") int page) {
  274. int totalRow = dimensionService.countByParams(paramMap);
  275. System.out.println("bbbdimension"+totalRow);
  276. Pager pager = new Pager();
  277. pager.setPage(page);
  278. pager.setTotalRow(totalRow);
  279. List<Dimension> dimensionList = dimensionService.findByParams(paramMap, pager);
  280. System.out.println("bbbdimension"+dimensionList);
  281. model.addAllAttributes(paramMap);
  282. model.addAttribute("pager", pager);
  283. model.addAttribute("dimensionList", dimensionList);
  284. return page("dimension");
  285. }
  286. //维度管理
  287. @RequestMapping("/dimensionlist")
  288. public @ResponseBody List<Dimension> dimensionlist(Model model,
  289. @RequestParam HashMap<String, Object> paramMap,
  290. @RequestParam(defaultValue="1") int page) {
  291. List<Dimension> dimensionList = dimensionService.findByParams(paramMap, null);
  292. return dimensionList;
  293. }
  294. //增加维度
  295. @RequestMapping("/create")
  296. public String create() {
  297. return page("create");
  298. }
  299. //编辑维度
  300. @RequestMapping("/edit")
  301. public String edit(Model model,
  302. @RequestParam long id) {
  303. // 根据id从数据库中查询广告主对象。
  304. Dimension dimension = dimensionService.findById(id);
  305. String content = dimension.getContent();
  306. List<String> alllist = new ArrayList<String>();
  307. List<String> list = new ArrayList<String>();
  308. String[] allType = {"广告主","订单","活动","投放","创意","日期"};
  309. for (int i = 0; i < allType.length; i++) {
  310. alllist.add(allType[i]);
  311. }
  312. if(content!=null && !"".equals(content)){
  313. String[] contentArr = content.split("-");
  314. for (int j = 0; j < contentArr.length; j++) {
  315. if(alllist.contains(contentArr[j])){
  316. list.add(contentArr[j]);
  317. alllist.remove(contentArr[j]);
  318. }
  319. }
  320. }
  321. model.addAttribute("dimensionTypeList", list);
  322. model.addAttribute("notdimensionTypeList", alllist);
  323. model.addAttribute("dimension", dimension);
  324. return page("edit");
  325. }
  326. //删除
  327. @RequestMapping("/delete")
  328. public @ResponseBody
  329. String delete(Long[] id) {
  330. HashMap<String, Object> paramMap = new HashMap<String, Object>();
  331. if (ArrayUtils.isNotEmpty(id)) {
  332. paramMap.put("idList", id);
  333. dimensionService.deleteById(paramMap);
  334. }
  335. return OK;
  336. }
  337. //保存
  338. @RequestMapping("/save")
  339. public String save(
  340. @ModelAttribute("form") Dimension dimension) {
  341. // 校验参数
  342. System.out.println("ccc"+dimension.toString());
  343. System.out.println("ccc"+dimension.getId());
  344. if (dimension.getId() == null){
  345. dimensionService.add(dimension);
  346. }else{
  347. dimensionService.edit(dimension);
  348. }
  349. return redirect(page("dimension"));
  350. }
  351. //下面是地域报表
  352. @RequestMapping("/regionReport")
  353. public String regionReport(Model model,
  354. @RequestParam HashMap<String, Object> paramMap,
  355. @RequestParam(defaultValue="1") int page) {
  356. //日期
  357. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  358. String startDate = null;
  359. String endDate = null;
  360. //广告主,订单,活动,投放
  361. Long advertiserId = null;
  362. Long orderId = null;
  363. Long campaignId = null;
  364. Long adGroupId = null;
  365. String advertiserName = "全部广告主";
  366. String orderName = "全部订单";
  367. String campaignName = "全部活动";
  368. String adGroupName = "全部投放";
  369. /**
  370. * 下面对下拉框中传进来的值进行判断,若是未操作,则为空值,前端设置时默认为全部(-1)
  371. * 注意前后层次关系,同时要考虑到登录帐号权限问题,此时暂未考虑
  372. * 下拉框传值Id需要同步
  373. */
  374. //广告主选择与否
  375. if (null == paramMap.get("selectedadvertiserId")
  376. || "".equals(paramMap.get("selectedadvertiserId"))) {
  377. advertiserId = null;
  378. advertiserName = "全部广告主";
  379. } else {
  380. // 如果要查询的是所有广告主则让广告主id为空
  381. if (-1 == Long.parseLong((String) paramMap
  382. .get("selectedadvertiserId"))) {
  383. advertiserId = null;
  384. advertiserName = "全部广告主";
  385. } else {
  386. advertiserId = Long.parseLong((String) paramMap
  387. .get("selectedadvertiserId"));
  388. advertiserName = (String)paramMap.get("selectedadvertiserName");
  389. }
  390. }
  391. //订单选择与否
  392. if (null == paramMap.get("selectedorderId")
  393. || "".equals(paramMap.get("selectedorderId"))) {
  394. orderId = null;
  395. orderName = "全部订单";
  396. } else {
  397. if (-1 == Long.parseLong((String) paramMap
  398. .get("selectedorderId"))) {
  399. orderId = null;
  400. orderName = "全部订单";
  401. } else {
  402. orderId = Long.parseLong((String) paramMap
  403. .get("selectedorderId"));
  404. orderName = (String)paramMap.get("selectedorderName");
  405. }
  406. }
  407. //活动选择与否
  408. if (null == paramMap.get("selectedcampaignId")
  409. || "".equals(paramMap.get("selectedcampaignId"))) {
  410. campaignId = null;
  411. campaignName = "全部活动";
  412. } else {
  413. if (-1 == Long.parseLong((String) paramMap
  414. .get("selectedcampaignId"))) {
  415. campaignId = null;
  416. campaignName = "全部活动";
  417. } else {
  418. campaignId = Long.parseLong((String) paramMap
  419. .get("selectedcampaignId"));
  420. campaignName = (String)paramMap.get("selectedcampaignName");
  421. }
  422. }
  423. //投放选择与否
  424. if (null == paramMap.get("selectedadGroupId")
  425. || "".equals(paramMap.get("selectedadGroupId"))) {
  426. adGroupId = null;
  427. adGroupName = "全部投放";
  428. } else {
  429. if (-1 == Long.parseLong((String) paramMap
  430. .get("selectedadGroupId"))) {
  431. adGroupId = null;
  432. adGroupName = "全部投放";
  433. } else {
  434. adGroupId = Long.parseLong((String) paramMap
  435. .get("selectedadGroupId"));
  436. adGroupName = (String)paramMap.get("selectedadGroupName");
  437. }
  438. }
  439. //判断日期是否为默认值昨天,日期格式与上面相统一,用 to 分割
  440. if (null == paramMap.get("dateRangePicker")
  441. || "".equals(paramMap.get("dateRangePicker"))) {
  442. startDate = endDate = sdf.format(new Date((new Date())
  443. .getTime() - 24 * 60 * 60 * 1000));
  444. } else {
  445. String[] choosedDate = ((String) paramMap
  446. .get("dateRangePicker")).split("to");
  447. startDate = choosedDate[0].trim();
  448. endDate = choosedDate[1].trim();
  449. }
  450. paramMap.put("advertiserId", advertiserId);
  451. paramMap.put("orderId", orderId);
  452. paramMap.put("campaignId", campaignId);
  453. paramMap.put("adGroupId", adGroupId);
  454. paramMap.put("startDate", startDate);
  455. paramMap.put("endDate", endDate);
  456. paramMap.put("selectedadvertiserName", advertiserName);
  457. paramMap.put("selectedorderName", orderName);
  458. paramMap.put("selectedcampaignName", campaignName);
  459. paramMap.put("selectedadGroupName", adGroupName);
  460. /**
  461. * 下面是对应的查询语句,逻辑很重要
  462. */
  463. int totalRow = adReportService.findCountForLocation(paramMap);
  464. System.out.println("aaaareport"+totalRow);
  465. Pager pager = new Pager();
  466. pager.setPage(page);
  467. pager.setTotalRow(totalRow);
  468. List<DeliverAnalysis> reportList = adReportService.findByLocation(paramMap, pager);
  469. System.out.println("aaaareport"+reportList);
  470. model.addAllAttributes(paramMap);
  471. model.addAttribute("pager", pager);
  472. model.addAttribute("reportList", reportList);
  473. return page("regionReport");
  474. }
  475. //下面是系统报表
  476. @RequestMapping("/osReport")
  477. public String osReport(Model model,
  478. @RequestParam HashMap<String, Object> paramMap,
  479. @RequestParam(defaultValue="1") int page) {
  480. //日期
  481. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  482. String startDate = null;
  483. String endDate = null;
  484. //广告主,订单,活动,投放
  485. Long advertiserId = null;
  486. Long orderId = null;
  487. Long campaignId = null;
  488. Long adGroupId = null;
  489. String advertiserName = "全部广告主";
  490. String orderName = "全部订单";
  491. String campaignName = "全部活动";
  492. String adGroupName = "全部投放";
  493. /**
  494. * 下面对下拉框中传进来的值进行判断,若是未操作,则为空值,前端设置时默认为全部(-1)
  495. * 注意前后层次关系,同时要考虑到登录帐号权限问题,此时暂未考虑
  496. * 下拉框传值Id需要同步
  497. */
  498. //广告主选择与否
  499. if (null == paramMap.get("selectedadvertiserId")
  500. || "".equals(paramMap.get("selectedadvertiserId"))) {
  501. advertiserId = null;
  502. advertiserName = "全部广告主";
  503. } else {
  504. // 如果要查询的是所有广告主则让广告主id为空
  505. if (-1 == Long.parseLong((String) paramMap
  506. .get("selectedadvertiserId"))) {
  507. advertiserId = null;
  508. advertiserName = "全部广告主";
  509. } else {
  510. advertiserId = Long.parseLong((String) paramMap
  511. .get("selectedadvertiserId"));
  512. advertiserName = (String)paramMap.get("selectedadvertiserName");
  513. }
  514. }
  515. //订单选择与否
  516. if (null == paramMap.get("selectedorderId")
  517. || "".equals(paramMap.get("selectedorderId"))) {
  518. orderId = null;
  519. orderName = "全部订单";
  520. } else {
  521. if (-1 == Long.parseLong((String) paramMap
  522. .get("selectedorderId"))) {
  523. orderId = null;
  524. orderName = "全部订单";
  525. } else {
  526. orderId = Long.parseLong((String) paramMap
  527. .get("selectedorderId"));
  528. orderName = (String)paramMap.get("selectedorderName");
  529. }
  530. }
  531. //活动选择与否
  532. if (null == paramMap.get("selectedcampaignId")
  533. || "".equals(paramMap.get("selectedcampaignId"))) {
  534. campaignId = null;
  535. campaignName = "全部活动";
  536. } else {
  537. if (-1 == Long.parseLong((String) paramMap
  538. .get("selectedcampaignId"))) {
  539. campaignId = null;
  540. campaignName = "全部活动";
  541. } else {
  542. campaignId = Long.parseLong((String) paramMap
  543. .get("selectedcampaignId"));
  544. campaignName = (String)paramMap.get("selectedcampaignName");
  545. }
  546. }
  547. //投放选择与否
  548. if (null == paramMap.get("selectedadGroupId")
  549. || "".equals(paramMap.get("selectedadGroupId"))) {
  550. adGroupId = null;
  551. adGroupName = "全部投放";
  552. } else {
  553. if (-1 == Long.parseLong((String) paramMap
  554. .get("selectedadGroupId"))) {
  555. adGroupId = null;
  556. adGroupName = "全部投放";
  557. } else {
  558. adGroupId = Long.parseLong((String) paramMap
  559. .get("selectedadGroupId"));
  560. adGroupName = (String)paramMap.get("selectedadGroupName");
  561. }
  562. }
  563. //判断日期是否为默认值昨天,日期格式与上面相统一,用 to 分割
  564. if (null == paramMap.get("dateRangePicker")
  565. || "".equals(paramMap.get("dateRangePicker"))) {
  566. startDate = endDate = sdf.format(new Date((new Date())
  567. .getTime() - 24 * 60 * 60 * 1000));
  568. } else {
  569. String[] choosedDate = ((String) paramMap
  570. .get("dateRangePicker")).split("to");
  571. startDate = choosedDate[0].trim();
  572. endDate = choosedDate[1].trim();
  573. }
  574. paramMap.put("advertiserId", advertiserId);
  575. paramMap.put("orderId", orderId);
  576. paramMap.put("campaignId", campaignId);
  577. paramMap.put("adGroupId", adGroupId);
  578. paramMap.put("selectedadvertiserName", advertiserName);
  579. paramMap.put("selectedorderName", orderName);
  580. paramMap.put("selectedcampaignName", campaignName);
  581. paramMap.put("selectedadGroupName", adGroupName);
  582. paramMap.put("startDate", startDate);
  583. paramMap.put("endDate", endDate);
  584. /**
  585. * 搜索查询对应的数据
  586. */
  587. int totalRow = adReportService.findCountForOs(paramMap);
  588. System.out.println("aaaareport"+totalRow);
  589. Pager pager = new Pager();
  590. pager.setPage(page);
  591. pager.setTotalRow(totalRow);
  592. List<DeliverAnalysis> reportList = adReportService.findByOs(paramMap, pager);
  593. if(reportList.size() == 0){
  594. DeliverAnalysis map = new DeliverAnalysis();
  595. DeliverAnalysis deliver = new DeliverAnalysis();
  596. deliver.setImpression(0);
  597. deliver.setClick(0);
  598. deliver.setVisit(0);
  599. deliver.setConversion(0);
  600. deliver.setConsume(0);
  601. deliver.seteCmp(0);
  602. deliver.setClickRate(0);
  603. deliver.setVisitRate(0);
  604. deliver.setConversionRate(0);
  605. map = deliver;
  606. model.addAttribute("reportMap", map);
  607. }
  608. else {
  609. //数据报表中第一栏 全部 的显示
  610. HashMap<String,Double> map = new HashMap<String,Double>();
  611. map.put("impressionSum", reportList.get(0).getImpressionSum());
  612. map.put("clickSum", reportList.get(0).getClickSum());
  613. map.put("visitSum", reportList.get(0).getVisitSum());
  614. map.put("conversionSum", reportList.get(0).getConversionSum());
  615. map.put("consumeSum", reportList.get(0).getConsumeSum());
  616. map.put("eCmpSum", reportList.get(0).geteCmpSum());
  617. map.put("clickRatesum", reportList.get(0).getClickRatesum());
  618. map.put("visitRatesum", reportList.get(0).getVisitRatesum());
  619. map.put("conversionRatesum", reportList.get(0).getConversionRatesum());
  620. model.addAttribute("reportMap", map);
  621. System.out.println("tttttttttt");
  622. }
  623. model.addAllAttributes(paramMap);
  624. model.addAttribute("pager", pager);
  625. model.addAttribute("reportList", reportList);
  626. return page("osReport");
  627. }
  628. //下面是场景报表
  629. @RequestMapping("/sceneReport")
  630. public String sceneReport(Model model,
  631. @RequestParam HashMap<String, Object> paramMap,
  632. @RequestParam(defaultValue="1") int page) {
  633. //日期
  634. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  635. String startDate = null;
  636. String endDate = null;
  637. //广告主,订单,活动,投放
  638. Long advertiserId = null;
  639. Long orderId = null;
  640. Long campaignId = null;
  641. Long adGroupId = null;
  642. String advertiserName = "全部广告主";
  643. String orderName = "全部订单";
  644. String campaignName = "全部活动";
  645. String adGroupName = "全部投放";
  646. /**
  647. * 下面对下拉框中传进来的值进行判断,若是未操作,则为空值,前端设置时默认为全部(-1)
  648. * 注意前后层次关系,同时要考虑到登录帐号权限问题,此时暂未考虑
  649. * 下拉框传值Id需要同步
  650. */
  651. //广告主选择与否
  652. if (null == paramMap.get("selectedadvertiserId")
  653. || "".equals(paramMap.get("selectedadvertiserId"))) {
  654. advertiserId = null;
  655. advertiserName = "全部广告主";
  656. } else {
  657. // 如果要查询的是所有广告主则让广告主id为空
  658. if (-1 == Long.parseLong((String) paramMap
  659. .get("selectedadvertiserId"))) {
  660. advertiserId = null;
  661. advertiserName = "全部广告主";
  662. } else {
  663. advertiserId = Long.parseLong((String) paramMap
  664. .get("selectedadvertiserId"));
  665. advertiserName = (String)paramMap.get("selectedadvertiserName");
  666. }
  667. }
  668. //订单选择与否
  669. if (null == paramMap.get("selectedorderId")
  670. || "".equals(paramMap.get("selectedorderId"))) {
  671. orderId = null;
  672. orderName = "全部订单";
  673. } else {
  674. if (-1 == Long.parseLong((String) paramMap
  675. .get("selectedorderId"))) {
  676. orderId = null;
  677. orderName = "全部订单";
  678. } else {
  679. orderId = Long.parseLong((String) paramMap
  680. .get("selectedorderId"));
  681. orderName = (String)paramMap.get("selectedorderName");
  682. }
  683. }
  684. //活动选择与否
  685. if (null == paramMap.get("selectedcampaignId")
  686. || "".equals(paramMap.get("selectedcampaignId"))) {
  687. campaignId = null;
  688. campaignName = "全部活动";
  689. } else {
  690. if (-1 == Long.parseLong((String) paramMap
  691. .get("selectedcampaignId"))) {
  692. campaignId = null;
  693. campaignName = "全部活动";
  694. } else {
  695. campaignId = Long.parseLong((String) paramMap
  696. .get("selectedcampaignId"));
  697. campaignName = (String)paramMap.get("selectedcampaignName");
  698. }
  699. }
  700. //投放选择与否
  701. if (null == paramMap.get("selectedadGroupId")
  702. || "".equals(paramMap.get("selectedadGroupId"))) {
  703. adGroupId = null;
  704. adGroupName = "全部投放";
  705. } else {
  706. if (-1 == Long.parseLong((String) paramMap
  707. .get("selectedadGroupId"))) {
  708. adGroupId = null;
  709. adGroupName = "全部投放";
  710. } else {
  711. adGroupId = Long.parseLong((String) paramMap
  712. .get("selectedadGroupId"));
  713. adGroupName = (String)paramMap.get("selectedadGroupName");
  714. }
  715. }
  716. //判断日期是否为默认值昨天,日期格式与上面相统一,用 to 分割
  717. if (null == paramMap.get("dateRangePicker")
  718. || "".equals(paramMap.get("dateRangePicker"))) {
  719. startDate = endDate = sdf.format(new Date((new Date())
  720. .getTime() - 24 * 60 * 60 * 1000));
  721. } else {
  722. String[] choosedDate = ((String) paramMap
  723. .get("dateRangePicker")).split("to");
  724. startDate = choosedDate[0].trim();
  725. endDate = choosedDate[1].trim();
  726. }
  727. paramMap.put("advertiserId", advertiserId);
  728. paramMap.put("orderId", orderId);
  729. paramMap.put("campaignId", campaignId);
  730. paramMap.put("adGroupId", adGroupId);
  731. paramMap.put("selectedadvertiserName", advertiserName);
  732. paramMap.put("selectedorderName", orderName);
  733. paramMap.put("selectedcampaignName", campaignName);
  734. paramMap.put("selectedadGroupName", adGroupName);
  735. paramMap.put("startDate", startDate);
  736. paramMap.put("endDate", endDate);
  737. //查询搜索对应的数据
  738. int totalRow = adReportService.findCountForScene(paramMap);
  739. Pager pager = new Pager();
  740. pager.setPage(page);
  741. pager.setTotalRow(totalRow);
  742. List<DeliverAnalysis> reportList = adReportService.findByPlaceName(paramMap, pager);
  743. if(reportList.size() == 0){
  744. DeliverAnalysis map = new DeliverAnalysis();
  745. DeliverAnalysis deliver = new DeliverAnalysis();
  746. deliver.setImpression(0);
  747. deliver.setClick(0);
  748. deliver.setVisit(0);
  749. deliver.setConversion(0);
  750. deliver.setConsume(0);
  751. deliver.seteCmp(0);
  752. deliver.setClickRate(0);
  753. deliver.setVisitRate(0);
  754. deliver.setConversionRate(0);
  755. map = deliver;
  756. model.addAttribute("reportMap", map);
  757. }
  758. else {
  759. //数据报表中第一栏 全部 的显示
  760. HashMap<String,Double> map = new HashMap<String,Double>();
  761. map.put("impressionSum", reportList.get(0).getImpressionSum());
  762. map.put("clickSum", reportList.get(0).getClickSum());
  763. map.put("visitSum", reportList.get(0).getVisitSum());
  764. map.put("conversionSum", reportList.get(0).getConversionSum());
  765. map.put("consumeSum", reportList.get(0).getConsumeSum());
  766. map.put("eCmpSum", reportList.get(0).geteCmpSum());
  767. map.put("clickRatesum", reportList.get(0).getClickRatesum());
  768. map.put("visitRatesum", reportList.get(0).getVisitRatesum());
  769. map.put("conversionRatesum", reportList.get(0).getConversionRatesum());
  770. model.addAttribute("reportMap", map);
  771. }
  772. model.addAllAttributes(paramMap);
  773. model.addAttribute("pager", pager);
  774. model.addAttribute("reportList", reportList);
  775. return page("sceneReport");
  776. }
  777. @RequestMapping("/exportDataReportExcel")//导出excel
  778. public void exportDataReportExcel(Model model,HttpServletRequest request,HttpServletResponse response,@RequestParam Map<String,Object> paramMap,
  779. @RequestParam(defaultValue="1") int page){
  780. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  781. String startDate = null;
  782. String endDate = null;
  783. Long advertiserId = null;
  784. Long orderId = null;
  785. Long campaignId = null;
  786. Long adGroupId = null;
  787. Long dimensionId = null;
  788. String advertiserName = "";
  789. String orderName = "";
  790. String campaignName = "";
  791. String adGroupName = "";
  792. //广告主选择与否
  793. if (null == paramMap.get("selectedadvertiserId")
  794. || "".equals(paramMap.get("selectedadvertiserId"))) {
  795. advertiserId = null;
  796. advertiserName = null;
  797. } else {
  798. // 如果要查询的是所有广告主则让广告主id为空
  799. if (-1 == Long.parseLong((String) paramMap
  800. .get("selectedadvertiserId"))) {
  801. advertiserId = null;
  802. advertiserName = null;
  803. } else {
  804. advertiserId = Long.parseLong((String) paramMap
  805. .get("selectedadvertiserId"));
  806. advertiserName = (String) paramMap.get("selectedadvertiserName");
  807. }
  808. }
  809. //订单选择与否
  810. if (null == paramMap.get("selectedorderId")
  811. || "".equals(paramMap.get("selectedorderId"))) {
  812. orderId = null;
  813. orderName = null;
  814. } else {
  815. if (-1 == Long.parseLong((String) paramMap
  816. .get("selectedorderId"))) {
  817. orderId = null;
  818. orderName = null;
  819. } else {
  820. orderId = Long.parseLong((String) paramMap
  821. .get("selectedorderId"));
  822. orderName = (String) paramMap.get("selectedorderName");
  823. }
  824. }
  825. //活动选择与否
  826. if (null == paramMap.get("selectedcampaignId")
  827. || "".equals(paramMap.get("selectedcampaignId"))) {
  828. campaignId = null;
  829. campaignName = null;
  830. } else {
  831. if (-1 == Long.parseLong((String) paramMap
  832. .get("selectedcampaignId"))) {
  833. campaignId = null;
  834. campaignName = null;
  835. } else {
  836. campaignId = Long.parseLong((String) paramMap
  837. .get("selectedcampaignId"));
  838. campaignName = (String) paramMap.get("selectedcampaignName");
  839. }
  840. }
  841. //投放选择与否
  842. if (null == paramMap.get("selectedadGroupId")
  843. || "".equals(paramMap.get("selectedadGroupId"))) {
  844. adGroupId = null;
  845. adGroupName = null;
  846. } else {
  847. if (-1 == Long.parseLong((String) paramMap
  848. .get("selectedadGroupId"))) {
  849. adGroupId = null;
  850. adGroupName = null;
  851. } else {
  852. adGroupId = Long.parseLong((String) paramMap
  853. .get("selectedadGroupId"));
  854. adGroupName = (String) paramMap.get("selectedadGroupName");
  855. }
  856. }
  857. //判断日期是否为默认值昨天,日期格式与上面相统一,用 to 分割
  858. if (null == paramMap.get("dateRangePicker")
  859. || "".equals(paramMap.get("dateRangePicker"))) {
  860. startDate = endDate = sdf.format(new Date((new Date())
  861. .getTime() - 24 * 60 * 60 * 1000));
  862. } else {
  863. String[] choosedDate = ((String) paramMap
  864. .get("dateRangePicker")).split("to");
  865. startDate = choosedDate[0].trim();
  866. endDate = choosedDate[1].trim();
  867. }
  868. //选择维度
  869. if (null == paramMap.get("selecteddimensionId")
  870. || "".equals(paramMap.get("selecteddimensionId"))) {
  871. dimensionId = null;
  872. } else {
  873. // 如果要查询的是所有广告主则让广告主id为空
  874. if (-1 == Long.parseLong((String) paramMap
  875. .get("selecteddimensionId"))) {
  876. dimensionId = null;
  877. } else {
  878. dimensionId = Long.parseLong((String) paramMap
  879. .get("selecteddimensionId"));
  880. }
  881. }
  882. paramMap.put("advertiserId", advertiserId);
  883. paramMap.put("orderId", orderId);
  884. paramMap.put("campaignId", campaignId);
  885. paramMap.put("adGroupId", adGroupId);
  886. paramMap.put("advertiserName", advertiserName);
  887. paramMap.put("orderName", orderName);
  888. paramMap.put("campaignName", campaignName);
  889. paramMap.put("adGroupName", adGroupName);
  890. paramMap.put("dimensionId", dimensionId);
  891. paramMap.put("startDate", startDate);
  892. paramMap.put("endDate", endDate);
  893. List<DeliverAnalysis> reportList = adReportService.findByTotalReport(paramMap);
  894. if(reportList.size() == 0){
  895. // List sumList = reportList.get(0).get
  896. paramMap.put("impressionSum", 0);
  897. paramMap.put("clickSum", 0);
  898. paramMap.put("visitSum", 0);
  899. paramMap.put("conversionSum", 0);
  900. paramMap.put("consumeSum", 0);
  901. paramMap.put("eCmpSum", 0);
  902. paramMap.put("clickRatesum", 0);
  903. paramMap.put("visitRatesum", 0);
  904. paramMap.put("conversionRatesum", 0);
  905. }
  906. else {
  907. //数据报表中第一栏 全部 的显示
  908. paramMap.put("impressionSum", reportList.get(0).getImpressionSum());
  909. paramMap.put("clickSum", reportList.get(0).getClickSum());
  910. paramMap.put("visitSum", reportList.get(0).getVisitSum());
  911. paramMap.put("conversionSum", reportList.get(0).getConversionSum());
  912. paramMap.put("consumeSum", reportList.get(0).getConsumeSum());
  913. paramMap.put("eCmpSum", reportList.get(0).geteCmpSum());
  914. paramMap.put("clickRatesum", reportList.get(0).getClickRatesum());
  915. paramMap.put("visitRatesum", reportList.get(0).getVisitRatesum());
  916. paramMap.put("conversionRatesum", reportList.get(0).getConversionRatesum());
  917. }
  918. //维度数据匹配导出
  919. List<HashMap<String,Object>> dimensionlist = new ArrayList<HashMap<String,Object>>();
  920. if(dimensionId != null && !"".equals(dimensionId)){
  921. dimensionlist = getDimensionById(dimensionId);
  922. if(dimensionlist.size() >0 ){
  923. String content = "";
  924. for (int i = 0; i < dimensionlist.size(); i++) {
  925. content += dimensionlist.get(i).get("dimension")+"-";
  926. }
  927. content = content.substring(0,content.length()-1);
  928. paramMap.put("dimension",content);
  929. paramMap.put("dimensionTargetlist",dimensionlist);
  930. }
  931. }
  932. //显示的列
  933. paramMap.put("impression", null);//曝光
  934. paramMap.put("click", null);//点击
  935. paramMap.put("visit", null);//到达
  936. paramMap.put("conversion", null);//转化
  937. paramMap.put("consume", null);//花费
  938. if(null != paramMap.get("checkItems") || !"".equals(paramMap.get("checkItems"))){
  939. String[] checkItems = paramMap.get("checkItems").toString().split(",");
  940. for (int i = 0; i < checkItems.length; i++) {
  941. if(paramMap.containsKey(checkItems[i])){
  942. paramMap.put(checkItems[i], checkItems[i]);
  943. }
  944. }
  945. }
  946. response.reset();
  947. //Content-Type:application/vnd.ms-excel;charset=utf8或者text/xml;charset=utf8
  948. response.setContentType("application/vnd.ms-excel;charset=utf8");
  949. //设置excel文件名称
  950. SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmmss");
  951. String fileName ="report"+df2.format(new Date());
  952. response.setHeader("Content-Disposition", "attachment;filename="+fileName+".xls");
  953. //需要对excel的列和行的总数进行指定
  954. int column = 15;
  955. paramMap.put("reportList", reportList);
  956. paramMap.put("column", column);
  957. String excelTemplate = templateProcessor.processTemplate(
  958. "excel/dataRequestReport.ftl", paramMap);
  959. try {
  960. PrintWriter out =response.getWriter();
  961. out.write(excelTemplate);
  962. out.flush();
  963. out.close();
  964. } catch (IOException e) {
  965. // TODO Auto-generated catch block
  966. e.printStackTrace();
  967. }
  968. }
  969. /**
  970. * 这里搜索数据的条件都还没有都是默认的
  971. * @param request
  972. * @param response
  973. * @param paramMap 如果是地域报表就必须传递一个location的参数,值是location(这个值可以随便)
  974. *其他的类似,依次是系统(system)场景(place)
  975. */
  976. @RequestMapping("/exportOtherReportExcel")
  977. public void exportOtherReportExcel(HttpServletRequest request,HttpServletResponse response,@RequestParam Map<String,Object> paramMap){
  978. /**
  979. * 这里没有数据线测试没有数据的
  980. */
  981. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  982. String startDate = null;
  983. String endDate = null;
  984. Long advertiserId = null;
  985. Long orderId = null;
  986. Long campaignId = null;
  987. Long adGroupId = null;
  988. String advertiserName = "";
  989. String orderName = "";
  990. String campaignName = "";
  991. String adGroupName = "";
  992. //广告主选择与否
  993. if (null == paramMap.get("selectedadvertiserId")
  994. || "".equals(paramMap.get("selectedadvertiserId"))) {
  995. advertiserId = null;
  996. advertiserName = null;
  997. } else {
  998. // 如果要查询的是所有广告主则让广告主id为空
  999. if (-1 == Long.parseLong((String) paramMap
  1000. .get("selectedadvertiserId"))) {
  1001. advertiserId = null;
  1002. advertiserName = null;
  1003. } else {
  1004. advertiserId = Long.parseLong((String) paramMap
  1005. .get("selectedadvertiserId"));
  1006. advertiserName = (String) paramMap.get("selectedadvertiserName");
  1007. }
  1008. }
  1009. //订单选择与否
  1010. if (null == paramMap.get("selectedorderId")
  1011. || "".equals(paramMap.get("selectedorderId"))) {
  1012. orderId = null;
  1013. orderName = null;
  1014. } else {
  1015. if (-1 == Long.parseLong((String) paramMap
  1016. .get("selectedorderId"))) {
  1017. orderId = null;
  1018. orderName = null;
  1019. } else {
  1020. orderId = Long.parseLong((String) paramMap
  1021. .get("selectedorderId"));
  1022. orderName = (String) paramMap.get("selectedorderName");
  1023. }
  1024. }
  1025. //活动选择与否
  1026. if (null == paramMap.get("selectedcampaignId")
  1027. || "".equals(paramMap.get("selectedcampaignId"))) {
  1028. campaignId = null;
  1029. campaignName = null;
  1030. } else {
  1031. if (-1 == Long.parseLong((String) paramMap
  1032. .get("selectedcampaignId"))) {
  1033. campaignId = null;
  1034. campaignName = null;
  1035. } else {
  1036. campaignId = Long.parseLong((String) paramMap
  1037. .get("selectedcampaignId"));
  1038. campaignName = (String) paramMap.get("selectedcampaignName");
  1039. }
  1040. }
  1041. //投放选择与否
  1042. if (null == paramMap.get("selectedadGroupId")
  1043. || "".equals(paramMap.get("selectedadGroupId"))) {
  1044. adGroupId = null;
  1045. adGroupName = null;
  1046. } else {
  1047. if (-1 == Long.parseLong((String) paramMap
  1048. .get("selectedadGroupId"))) {
  1049. adGroupId = null;
  1050. adGroupName = null;
  1051. } else {
  1052. adGroupId = Long.parseLong((String) paramMap
  1053. .get("selectedadGroupId"));
  1054. adGroupName = (String) paramMap.get("selectedadGroupName");
  1055. }
  1056. }
  1057. //判断日期是否为默认值昨天,日期格式与上面相统一,用 to 分割
  1058. if (null == paramMap.get("dateRangePicker")
  1059. || "".equals(paramMap.get("dateRangePicker"))) {
  1060. startDate = endDate = sdf.format(new Date((new Date())
  1061. .getTime() - 24 * 60 * 60 * 1000));
  1062. } else {
  1063. String[] choosedDate = ((String) paramMap
  1064. .get("dateRangePicker")).split("to");
  1065. startDate = choosedDate[0].trim();
  1066. endDate = choosedDate[1].trim();
  1067. }
  1068. paramMap.put("advertiserId", advertiserId);
  1069. paramMap.put("orderId", orderId);
  1070. paramMap.put("campaignId", campaignId);
  1071. paramMap.put("adGroupId", adGroupId);
  1072. paramMap.put("advertiserName", advertiserName);
  1073. paramMap.put("orderName", orderName);
  1074. paramMap.put("campaignName", campaignName);
  1075. paramMap.put("adGroupName", adGroupName);
  1076. paramMap.put("startDate", startDate);
  1077. paramMap.put("endDate", endDate);
  1078. //显示的列
  1079. paramMap.put("impression", null);//曝光
  1080. paramMap.put("click", null);//点击
  1081. paramMap.put("visit", null);//到达
  1082. paramMap.put("conversion", null);//转化
  1083. paramMap.put("consume", null);//花费
  1084. if(null != paramMap.get("checkItems") || !"".equals(paramMap.get("checkItems"))){
  1085. String[] checkItems = paramMap.get("checkItems").toString().split(",");
  1086. for (int i = 0; i < checkItems.length; i++) {
  1087. if(paramMap.containsKey(checkItems[i])){
  1088. paramMap.put(checkItems[i], checkItems[i]);
  1089. }
  1090. }
  1091. }
  1092. List<DeliverAnalysis> reportList = new ArrayList<DeliverAnalysis>();
  1093. /**
  1094. * 判断一下是哪个报表
  1095. */
  1096. if(paramMap.containsKey("location")) {
  1097. paramMap.put("location", "location");
  1098. reportList = adReportService.findByLocation(paramMap);
  1099. }
  1100. if(paramMap.containsKey("system")) {
  1101. paramMap.put("system", "system");
  1102. reportList = adReportService.findByOs(paramMap);
  1103. }
  1104. if(paramMap.containsKey("place")) {
  1105. paramMap.put("place", "place");
  1106. reportList = adReportService.findByPlaceName(paramMap);
  1107. }
  1108. paramMap.put("dataList", reportList);
  1109. response.reset();
  1110. //Content-Type:application/vnd.ms-excel;charset=utf8或者text/xml;charset=utf8
  1111. response.setContentType("application/vnd.ms-excel;charset=utf8");
  1112. //设置excel文件名称
  1113. SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmmss");
  1114. String fileName ="report"+df2.format(new Date());
  1115. response.setHeader("Content-Disposition", "attachment;filename="+fileName+".xls");
  1116. //需要对excel的列的总数进行指定
  1117. int column = 11;
  1118. paramMap.put("dataSize", reportList.size());
  1119. paramMap.put("column", column);
  1120. paramMap.put("startDate", startDate);
  1121. paramMap.put("endDate", endDate);
  1122. String excelTemplate = templateProcessor.processTemplate(
  1123. "excel/otherReport.ftl", paramMap);
  1124. try {
  1125. PrintWriter out =response.getWriter();
  1126. out.write(excelTemplate);
  1127. out.flush();
  1128. out.close();
  1129. } catch (IOException e) {
  1130. // TODO Auto-generated catch block
  1131. e.printStackTrace();
  1132. }
  1133. }
  1134. //维度管理
  1135. public List<HashMap<String,Object>> getDimensionById(
  1136. @RequestParam long dimensionId) {
  1137. List<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>();
  1138. Dimension dimension = dimensionService.findById(dimensionId);
  1139. String content = dimension.getContent();
  1140. if(content != null && !"".equals(content)){
  1141. String[] contentArr = content.split("-");
  1142. for (int i = 0; i < contentArr.length; i++) {
  1143. HashMap<String,Object> map = new HashMap<String,Object>();
  1144. map.put("dimension", contentArr[i]);
  1145. map.put("dimensionTarget", getDimensionType(contentArr[i]));
  1146. list.add(map);
  1147. }
  1148. }
  1149. return list;
  1150. }
  1151. public String getDimensionType(String dimension){
  1152. String type = "";
  1153. if(dimension.equals("广告主")){
  1154. type = "advertiserName";
  1155. }else if(dimension.equals("订单")){
  1156. type = "orderName";
  1157. }else if(dimension.equals("活动")){
  1158. type = "campaignName";
  1159. }else if(dimension.equals("投放")){
  1160. type = "adGroupName";
  1161. }else if(dimension.equals("创意")){
  1162. type = "bannerName";
  1163. }else if(dimension.equals("日期")){
  1164. type = "reportDate";
  1165. }
  1166. return type;
  1167. }
  1168. //修改默认值
  1169. @RequestMapping("/updateDimensionDefault")
  1170. public @ResponseBody String updateDimensionDefault(@RequestParam long dimensionId){
  1171. dimensionService.updateDimensionDefault(dimensionId);
  1172. return OK;
  1173. }
  1174. }