Commit 2e648a0b784b095e81b632952f9dab3eba413a8c

Authored by atao
1 parent fb8b7f91

提交代码

src/main/java/com/zteits/irain/portal/web/parkinglotcloudplatform/datastatistic/OrderManageController.java
1 1 package com.zteits.irain.portal.web.parkinglotcloudplatform.datastatistic;
2 2  
  3 +import java.math.BigDecimal;
  4 +import java.util.ArrayList;
  5 +import java.util.Arrays;
  6 +import java.util.Date;
  7 +import java.util.List;
  8 +
  9 +import javax.servlet.http.HttpServletRequest;
  10 +import javax.servlet.http.HttpServletResponse;
  11 +
3 12 import com.alibaba.dubbo.common.utils.CollectionUtils;
4 13  
  14 +import com.clouds.common.utils.excle.ExcelUtil;
  15 +import com.clouds.common.utils.excle.ExcleFillDateManager;
  16 +import com.clouds.common.utils.excle.Layouter;
5 17 import com.clouds.common.web.BizController;
6 18 import com.clouds.common.web.vo.BizResultVO;
7 19 import com.clouds.common.web.vo.EasyUIDataGridVO;
  20 +import com.xiaoleilu.hutool.date.DatePattern;
  21 +import com.xiaoleilu.hutool.date.DateUtil;
8 22 import com.zteits.clouds.api.apibase.bean.BizResult;
9 23 import com.zteits.clouds.api.apibase.bean.PageBean;
10 24 import com.zteits.clouds.api.apibase.constants.ErrorType;
... ... @@ -14,11 +28,16 @@ import com.zteits.clouds.api.dto.pay.param.ParkOrderByConditionQueryRequest;
14 28 import com.zteits.clouds.api.service.pay.TdBOrderService;
15 29 import io.swagger.annotations.Api;
16 30 import io.swagger.annotations.ApiOperation;
  31 +import org.apache.commons.lang3.StringUtils;
  32 +import org.apache.poi.xssf.usermodel.XSSFSheet;
17 33 import org.springframework.beans.factory.annotation.Autowired;
  34 +import org.springframework.format.annotation.DateTimeFormat;
  35 +import org.springframework.stereotype.Controller;
18 36 import org.springframework.web.bind.annotation.PostMapping;
19 37 import org.springframework.web.bind.annotation.RequestBody;
20 38 import org.springframework.web.bind.annotation.RequestMapping;
21   -import org.springframework.web.bind.annotation.RestController;
  39 +import org.springframework.web.bind.annotation.RequestParam;
  40 +import org.springframework.web.bind.annotation.ResponseBody;
22 41  
23 42 /**
24 43 * Copyright: Copyright (c) 2017 zteits
... ... @@ -33,8 +52,8 @@ import org.springframework.web.bind.annotation.RestController;
33 52 * ---------------------------------------------------------*
34 53 * 2017/8/24 atao v1.0.0 创建
35 54 */
36   -@Api(value = "订单管理",description = "订单管理")
37   -@RestController
  55 +@Api(value = "订单管理", description = "订单管理")
  56 +@Controller
38 57 @RequestMapping("/order")
39 58 public class OrderManageController extends BizController {
40 59  
... ... @@ -43,8 +62,9 @@ public class OrderManageController extends BizController {
43 62  
44 63 @ApiOperation("根据查询条件查询停车订单")
45 64 @PostMapping("/queryParkOrderByCondition")
  65 + @ResponseBody
46 66 public BizResultVO<EasyUIDataGridVO<ParkOrderDTO>> queryParkOrderByCondition(
47   - @RequestBody ParkOrderByConditionQueryRequest request) throws Exception{
  67 + @RequestBody ParkOrderByConditionQueryRequest request) throws Exception {
48 68 if (CollectionUtils.isEmpty(request.getPlNos())) {
49 69 throw new BizException(ErrorType.PARAMM_NULL, "停车场编码");
50 70 }
... ... @@ -56,7 +76,362 @@ public class OrderManageController extends BizController {
56 76 request.getBaseRequest().setPageSize(10);
57 77 }
58 78 BizResult<PageBean<ParkOrderDTO>> bizResult = tdBOrderService.queryParkOrderByCondition(request);
59   - return returnJqGridData(bizResult,ParkOrderDTO.class);
  79 + return returnJqGridData(bizResult, ParkOrderDTO.class);
  80 + }
  81 +
  82 + /**
  83 + * 根据查询条件导出所有记录
  84 + */
  85 + @RequestMapping("/exportAllParkOrderByCondition")
  86 + public void exportAllParkOrderByCondition(@RequestParam String plNos, @RequestParam(required = false) String parkStatus,
  87 + @RequestParam(required = false) String payType, @RequestParam(required = false) String parkType,
  88 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date beginInTime,
  89 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endInTime,
  90 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date beginOutTime,
  91 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endOutTime,
  92 + @RequestParam(required = false) String carNum, HttpServletRequest request,
  93 + HttpServletResponse response) {
  94 +
  95 + ParkOrderByConditionQueryRequest dubboReq = new ParkOrderByConditionQueryRequest();
  96 + if (StringUtils.isNotEmpty(plNos)) {
  97 + dubboReq.setPlNos(Arrays.asList(plNos.split(",")));
  98 + }
  99 + if (StringUtils.isNotEmpty(parkStatus)) {
  100 + String[] tempStr = parkStatus.split(",");
  101 + List<Integer> nums = new ArrayList<>();
  102 + for (String str : tempStr) {
  103 + nums.add(Integer.valueOf(str));
  104 + }
  105 +
  106 + dubboReq.setParkStatus(nums);
  107 +
  108 + }
  109 + if (StringUtils.isNotEmpty(payType)) {
  110 + String[] tempStr = payType.split(",");
  111 + List<Integer> nums = new ArrayList<>();
  112 + for (String str : tempStr) {
  113 + nums.add(Integer.valueOf(str));
  114 + }
  115 + dubboReq.setPayType(nums);
  116 +
  117 + }
  118 +
  119 + if (StringUtils.isNotEmpty(parkType)) {
  120 + String[] tempStr = parkType.split(",");
  121 + List<Integer> nums = new ArrayList<>();
  122 + for (String str : tempStr) {
  123 + nums.add(Integer.valueOf(str));
  124 + }
  125 + dubboReq.setParkType(nums);
  126 + }
  127 + dubboReq.setBeginInTime(beginInTime);
  128 + dubboReq.setEndInTime(endInTime);
  129 + dubboReq.setBeginOutTime(beginOutTime);
  130 + dubboReq.setEndOutTime(endOutTime);
  131 + dubboReq.setCarNum(carNum);
  132 + dubboReq.setSysCode("10001");
  133 + dubboReq.getBaseRequest().setPageNum(1);
  134 + dubboReq.getBaseRequest().setPageSize(0);
  135 + BizResult<PageBean<ParkOrderDTO>> bizResult = tdBOrderService.queryParkOrderByCondition(dubboReq);
  136 +
  137 + String[] title = new String[] {"停车场", "车牌号", "车辆类型", "状态", "进场时间", "出场时间", "进口", "出口", "停车时长", "应收", "实收",
  138 + "优惠券", "支付方式", "收费员", "免费理由", "总金额"};
  139 + String sheetName = "停车记录";
  140 + String fileName = "停车记录";
  141 + // 1.创建excel信息
  142 + XSSFSheet workSheet = ExcelUtil.createExcel(sheetName);
  143 + // 2.设置excel表头和表体
  144 + Layouter.buildReport(workSheet, title, 0, 0);
  145 + //3.填充数据
  146 + List<Object[]> contentList = new ArrayList<Object[]>();
  147 + if (bizResult != null && !CollectionUtils.isEmpty(bizResult.getData().getDataList())) {
  148 + List<ParkOrderDTO> list = bizResult.getData().getDataList();
  149 + for (ParkOrderDTO e : list) {
  150 + if (e != null) {
  151 + Object[] obj = new Object[title.length];
  152 + int index = 0;
  153 + obj[index++] = e.getParkName() != null ? e.getParkName() : "";
  154 + obj[index++] = e.getCarNumber() != null ? e.getCarNumber() : "";
  155 + obj[index++] = getParkTypeStr(e.getParkType());
  156 + obj[index++] = getParkStatusStr(e.getOrderState());
  157 + obj[index++] = e.getParkInTime() != null ? DateUtil.format(e.getParkInTime(),
  158 + DatePattern.NORM_DATETIME_PATTERN) : "";
  159 + obj[index++] = e.getParkOutTime() != null ? DateUtil.format(e.getParkOutTime(),
  160 + DatePattern.NORM_DATETIME_FORMAT) : "";
  161 + //进口
  162 + obj[index++] = getParkInSouceCodeStr(e.getParkInSourceCode());
  163 + //出口
  164 + obj[index++] = getParkOutSourceCodeStr(e.getParkOutSourceCode());
  165 + //停车时长
  166 + obj[index++] = getParkingDurationStr(e.getParkingDuration());
  167 + //应收
  168 + obj[index++] = e.getOrderTotalFee() != null ? e.getOrderTotalFee().divide(new BigDecimal("100"),
  169 + 2, BigDecimal.ROUND_HALF_UP) : "";
  170 + //实收
  171 + obj[index++] = e.getOrderActFee() != null ? e.getOrderActFee().divide(new BigDecimal("100"),
  172 + 2, BigDecimal.ROUND_HALF_UP) : "";
  173 + //优惠券
  174 + obj[index++] = "";
  175 + obj[index++] = getPayTypeStr(e.getPayType());
  176 + //收费员
  177 + obj[index++] = "";
  178 + obj[index++] = getFreeReasonStr(e.getOrderType());
  179 + //总金额
  180 + obj[index++] = e.getOrderTotalFee() != null ? e.getOrderTotalFee().divide(new BigDecimal("100"),
  181 + 2, BigDecimal.ROUND_HALF_UP) : "";
  182 + contentList.add(obj);
  183 + }
  184 + }
  185 + }
  186 + ExcleFillDateManager fillUserManager = new ExcleFillDateManager();
  187 + fillUserManager.fillSalesOrga(workSheet, title, contentList, 2);
  188 + // 4.excel输出配置
  189 + ExcelUtil.write(response, workSheet, fileName);
  190 +
  191 + }
  192 +
  193 + /**
  194 + * 根据查询条件导出欠费记录
  195 + */
  196 +
  197 + @RequestMapping("/exportArrearageParkOrderByCondition")
  198 + public void exportArrearageParkOrderByCondition(@RequestParam String plNos, @RequestParam(required = false) String parkStatus,
  199 + @RequestParam(required = false) String payType, @RequestParam(required = false) String parkType,
  200 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date beginInTime,
  201 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endInTime,
  202 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date beginOutTime,
  203 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endOutTime,
  204 + @RequestParam(required = false) String carNum, HttpServletRequest request,
  205 + HttpServletResponse response) {
  206 +
  207 + ParkOrderByConditionQueryRequest dubboReq = new ParkOrderByConditionQueryRequest();
  208 + if (StringUtils.isNotEmpty(plNos)) {
  209 + dubboReq.setPlNos(Arrays.asList(plNos.split(",")));
  210 + }
  211 + if (StringUtils.isNotEmpty(parkStatus)) {
  212 + String[] tempStr = parkStatus.split(",");
  213 + List<Integer> nums = new ArrayList<>();
  214 + for (String str : tempStr) {
  215 + nums.add(Integer.valueOf(str));
  216 + }
  217 + dubboReq.setParkStatus(nums);
  218 + }
  219 + if (StringUtils.isNotEmpty(payType)) {
  220 + String[] tempStr = payType.split(",");
  221 + List<Integer> nums = new ArrayList<>();
  222 + for (String str : tempStr) {
  223 + nums.add(Integer.valueOf(str));
  224 + }
  225 + dubboReq.setPayType(nums);
  226 + }
  227 +
  228 + if (StringUtils.isNotEmpty(parkType)) {
  229 + String[] tempStr = parkType.split(",");
  230 + List<Integer> nums = new ArrayList<>();
  231 + for (String str : tempStr) {
  232 + nums.add(Integer.valueOf(str));
  233 + }
  234 + dubboReq.setParkType(nums);
  235 + }
  236 + dubboReq.setBeginInTime(beginInTime);
  237 + dubboReq.setEndInTime(endInTime);
  238 + dubboReq.setBeginOutTime(beginOutTime);
  239 + dubboReq.setEndOutTime(endOutTime);
  240 + dubboReq.setCarNum(carNum);
  241 + dubboReq.setSysCode("10001");
  242 + dubboReq.getBaseRequest().setPageNum(1);
  243 + dubboReq.getBaseRequest().setPageSize(0);
  244 + BizResult<PageBean<ParkOrderDTO>> bizResult = tdBOrderService.queryParkOrderByCondition(dubboReq);
  245 +
  246 + String[] title = new String[] {"停车场", "车牌号", "进场时间", "出场时间", "进口", "出口", "停车时长", "应收", "收费员"};
  247 + String sheetName = "停车欠费记录";
  248 + String fileName = "停车欠费记录";
  249 + // 1.创建excel信息
  250 + XSSFSheet workSheet = ExcelUtil.createExcel(sheetName);
  251 + // 2.设置excel表头和表体
  252 + Layouter.buildReport(workSheet, title, 0, 0);
  253 + //3.填充数据
  254 + List<Object[]> contentList = new ArrayList<Object[]>();
  255 + if (bizResult != null && !CollectionUtils.isEmpty(bizResult.getData().getDataList())) {
  256 + List<ParkOrderDTO> list = bizResult.getData().getDataList();
  257 + for (ParkOrderDTO e : list) {
  258 + if (e != null) {
  259 + Object[] obj = new Object[title.length];
  260 + int index = 0;
  261 + obj[index++] = e.getParkName() != null ? e.getParkName() : "";
  262 + obj[index++] = e.getCarNumber() != null ? e.getCarNumber() : "";
  263 + obj[index++] = e.getParkInTime() != null ? DateUtil.format(e.getParkInTime(),
  264 + DatePattern.NORM_DATETIME_PATTERN) : "";
  265 + obj[index++] = e.getParkOutTime() != null ? DateUtil.format(e.getParkOutTime(),
  266 + DatePattern.NORM_DATETIME_FORMAT) : "";
  267 + //进口
  268 + obj[index++] = getParkInSouceCodeStr(e.getParkInSourceCode());
  269 + //出口
  270 + obj[index++] = getParkOutSourceCodeStr(e.getParkOutSourceCode());
  271 + //停车时长
  272 + obj[index++] = getParkingDurationStr(e.getParkingDuration());
  273 + //应收
  274 + obj[index++] = e.getOrderTotalFee() != null ? e.getOrderTotalFee().divide(new BigDecimal("100"),
  275 + 2, BigDecimal.ROUND_HALF_UP) : "";
  276 + //收费员
  277 + obj[index++] = "";
  278 + contentList.add(obj);
  279 + }
  280 + }
  281 + }
  282 + ExcleFillDateManager fillUserManager = new ExcleFillDateManager();
  283 + fillUserManager.fillSalesOrga(workSheet, title, contentList, 2);
  284 + // 4.excel输出配置
  285 + ExcelUtil.write(response, workSheet, fileName);
  286 +
  287 + }
  288 +
  289 + /**
  290 + * 根据code 获取支付方式文本
  291 + *
  292 + * @param payTypeCode
  293 + * @return
  294 + */
  295 + private String getPayTypeStr(Integer payTypeCode) {
  296 + if (payTypeCode == null) {
  297 + return "未知";
  298 + }
  299 +
  300 + String payTypeStr;
  301 + switch (payTypeCode) {
  302 + case 1:
  303 + payTypeStr = "支付宝";
  304 + break;
  305 + case 2:
  306 + payTypeStr = "微信";
  307 + break;
  308 + case 3:
  309 + payTypeStr = "银联";
  310 + break;
  311 + case 4:
  312 + payTypeStr = "微信公众号";
  313 + break;
  314 + case 6:
  315 + payTypeStr = "现金";
  316 + break;
  317 + case 7:
  318 + payTypeStr = "IC卡";
  319 + break;
  320 + default:
  321 + payTypeStr = "其他";
  322 + }
  323 + return payTypeStr;
  324 + }
  325 +
  326 + private String getParkTypeStr(Integer parkTypeCode) {
  327 + if (parkTypeCode == null) {
  328 + return "";
  329 + }
  330 + String parkTypeStr;
  331 + switch (parkTypeCode) {
  332 + case 0:
  333 + parkTypeStr = "临时车";
  334 + break;
  335 + case 1:
  336 + parkTypeStr = "固定车";
  337 + break;
  338 +
  339 + default:
  340 + parkTypeStr = "其他";
  341 + }
  342 + return parkTypeStr;
  343 + }
  344 +
  345 + private String getParkStatusStr(Integer parkStatusCode) {
  346 + if (parkStatusCode == null) {
  347 + return "";
  348 + }
  349 + String parkStatusStr;
  350 + switch (parkStatusCode) {
  351 + case 1:
  352 + parkStatusStr = "在场";
  353 + break;
  354 + case 2:
  355 + parkStatusStr = "在场";
  356 + break;
  357 + case 3:
  358 + parkStatusStr = "在场";
  359 + break;
  360 + default:
  361 + parkStatusStr = "离场";
  362 + break;
  363 +
  364 + }
  365 + return parkStatusStr;
  366 + }
  367 +
  368 + private String getFreeReasonStr(Integer freeReasonCode) {
  369 + if (freeReasonCode == null) {
  370 + return "";
  371 + }
  372 +
  373 + String reason;
  374 + switch (freeReasonCode) {
  375 + case 0:
  376 + reason = "短时停车免费";
  377 + break;
  378 + case 5:
  379 + reason = "逃逸";
  380 + break;
  381 + case 7:
  382 + reason = "授权车免费";
  383 + break;
  384 + case 8:
  385 + reason = "手动免费开闸";
  386 + break;
  387 + default:
  388 + reason = "未知";
  389 + }
  390 + return reason;
  391 + }
  392 +
  393 + //进口
  394 + private String getParkInSouceCodeStr(String parkInSourceCode) {
  395 + if (null == parkInSourceCode) {
  396 + return "";
  397 + }
  398 + return "";
60 399 }
61 400  
  401 + //出口
  402 + private String getParkOutSourceCodeStr(String parkOutSrouceCode) {
  403 + if (null == parkOutSrouceCode) {
  404 + return "";
  405 + }
  406 + return "";
  407 + }
  408 +
  409 + //停车时长
  410 + private String getParkingDurationStr(Long parkingDuration) {
  411 + if (null == parkingDuration) {
  412 + return "";
  413 + }
  414 + // 分
  415 + Long theTime1 = 0L;
  416 + // 小时Integer
  417 + Long theTime2 = 0L;
  418 + // alert(theTime);
  419 + if (parkingDuration > 60) {
  420 + theTime1 = parkingDuration / 60;
  421 + // alert(theTime1+"-"+theTime);
  422 + if (theTime1 > 60) {
  423 + theTime2 = (theTime1 / 60);
  424 + theTime1 = theTime1 % 60;
  425 + }
  426 + }
  427 + String result = "";
  428 + if (theTime1 > 0) {
  429 + result = "" + theTime1 + "分钟" + result;
  430 + }
  431 + if (theTime2 > 0) {
  432 + result = "" + theTime2 + "小时" + result;
  433 + }
  434 + return result;
  435 +
  436 + }
62 437 }
... ...