package com.stylefeng.guns.modular.system.controller.general; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.util.DateUtil; import com.stylefeng.guns.core.util.ExcelExportUtil; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.modular.system.model.TDriver; import com.stylefeng.guns.modular.system.service.ITDriverService; import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** * 司机提现、充值、扣除明细 * * @author fengshuonan * @Date 2020-06-04 17:35:28 */ @Controller @RequestMapping("/tDriverDetail") public class TDriverDetailController extends BaseController { private String PREFIX = "/system/tDriverDetail/"; @Autowired private ITDriverService tDriverService; /** * 跳转到司机审核列表首页 */ @RequestMapping("") public String index() { return PREFIX + "tDriverDetail.html"; } /** * 获取司机审核列表列表 */ @RequestMapping(value = "/list") @ResponseBody public Object list(String insertTime, Integer orderType, String driverName, String phone) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)){ String[] timeArray = insertTime.split(" - "); beginTime = timeArray[0]; endTime = timeArray[1]; } Page> page = new PageFactory>().defaultPage(); page.setRecords(tDriverService.exportList(page, ShiroKit.getUser().getRoleType(), ShiroKit.getUser().getObjectId(), beginTime, endTime, orderType, driverName,phone)); return super.packForBT(page); } @RequestMapping(value = "/getCount") @ResponseBody public Object getCount(String insertTime, Integer orderType, String driverName, String phone) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)){ String[] timeArray = insertTime.split(" - "); beginTime = timeArray[0]; endTime = timeArray[1]; } Map res = new HashMap<>(); List> maps = tDriverService.exportListNolimit( ShiroKit.getUser().getRoleType(), ShiroKit.getUser().getObjectId(), beginTime, endTime, orderType, driverName, phone); BigDecimal charge = new BigDecimal("0"); BigDecimal withdraw = new BigDecimal("0"); BigDecimal use = new BigDecimal("0"); BigDecimal refund = new BigDecimal("0"); BigDecimal total = new BigDecimal("0"); List driverIds = new ArrayList<>(); for (Map map : maps) { if (map.get("orderType").equals("充值")){ charge = charge.add(new BigDecimal(map.get("money").toString())); } if (map.get("orderType").equals("提现")){ withdraw = withdraw.add(new BigDecimal(map.get("money").toString())); } if (map.get("orderType").equals("扣除")){ use = use.add(new BigDecimal(map.get("money").toString())); } if (map.get("orderType").equals("申诉退款")){ refund = refund.add(new BigDecimal(map.get("money").toString())); } driverIds.add(Integer.parseInt(map.get("id").toString())); } if (!driverIds.isEmpty()){ List tDrivers = tDriverService.selectList(new EntityWrapper() .in("id", driverIds.stream().distinct().collect(Collectors.toList()))); for (TDriver tDriver : tDrivers) { total = total.add(tDriver.getBalance()); } } res.put("chargeMoney",charge.subtract(withdraw).subtract(use)); res.put("withdrawMoney",withdraw); res.put("useMoney",use.subtract(refund)); res.put("refundMoney",refund); res.put("total",total); return res; } /** * 导出司机信息 */ @GetMapping(value = "/exportList") public void outDriver(String insertTime, Integer orderType, String driverName, String phone, HttpServletRequest request, HttpServletResponse response) { // List> listMap = tDriverService.getDriverListNoPage(ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId()); String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)){ String[] timeArray = insertTime.split(" - "); beginTime = timeArray[0]; endTime = timeArray[1]; } List driverIds = new ArrayList<>(); List> listMap = tDriverService.exportListNolimit( ShiroKit.getUser().getRoleType(), ShiroKit.getUser().getObjectId(), beginTime, endTime, orderType, driverName,phone); BigDecimal charge = new BigDecimal("0"); BigDecimal withdraw = new BigDecimal("0"); BigDecimal use = new BigDecimal("0"); BigDecimal refund = new BigDecimal("0"); BigDecimal total = new BigDecimal("0"); for (Map map : listMap) { if (map.get("orderType").equals("充值")){ charge = charge.add(new BigDecimal(map.get("money").toString())); } if (map.get("orderType").equals("提现")){ withdraw = withdraw.add(new BigDecimal(map.get("money").toString())); } if (map.get("orderType").equals("扣除")){ use = use.add(new BigDecimal(map.get("money").toString())); } if (map.get("orderType").equals("申诉退款")){ refund = refund.add(new BigDecimal(map.get("money").toString())); } driverIds.add(Integer.parseInt(map.get("id").toString())); } if (!driverIds.isEmpty()){ List tDrivers = tDriverService.selectList(new EntityWrapper() .in("id", driverIds.stream().distinct().collect(Collectors.toList()))); for (TDriver tDriver : tDrivers) { total = total.add(tDriver.getBalance()); } } // 表格数据【封装】 List> dataList = new ArrayList<>(); //第一行显示【封装】 List twoList = new ArrayList(); twoList.add("总计:"); twoList.add(String.valueOf(listMap.size())+"条"); twoList.add("总余额:"+total); twoList.add("总充值金额:"+charge); twoList.add("提现:"+withdraw); twoList.add("扣除:"+use.subtract(refund)); twoList.add("申诉退款:"+refund); dataList.add(twoList); // 列【封装】 List shellList = new ArrayList(); shellList.add("操作时间"); shellList.add("订单来源"); shellList.add("司机"); shellList.add("司机手机号"); shellList.add("金额"); dataList.add(shellList); for (Map object : listMap){ // 详细数据列【封装】 shellList = new ArrayList(); if(SinataUtil.isNotEmpty(object.get("insertTime"))){ shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("insertTime").toString(),"YYYY-MM-dd HH:mm:ss"), "YYYY-MM-dd HH:mm:ss")); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("orderType"))){ shellList.add(object.get("orderType").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("driverName"))){ shellList.add(object.get("driverName").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("phone"))){ shellList.add(object.get("phone").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("money"))){ shellList.add(new BigDecimal(object.get("money").toString()).setScale(2, BigDecimal.ROUND_HALF_UP).toString()); }else{ shellList.add("-"); } dataList.add(shellList); } try { // 调用工具类进行导出 ExcelExportUtil.easySheet("财务报表信息导出记录"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "财务报表信息", dataList,request, response); } catch (Exception e) { e.printStackTrace(); } } }