| | |
| | | import com.stylefeng.guns.core.util.ExcelExportUtil; |
| | | import com.stylefeng.guns.core.util.SinataUtil; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.model.Income; |
| | | import com.stylefeng.guns.modular.system.model.TCompany; |
| | | import com.stylefeng.guns.modular.system.model.TOrderPrivateCar; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
| | |
| | | import javax.servlet.ServletOutputStream; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.net.URLEncoder; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 报表控制器 |
| | |
| | | |
| | | @Autowired |
| | | private ITDriverService driverService; |
| | | @Autowired |
| | | private IIncomeService incomeService; |
| | | @Autowired |
| | | private ITOrderPrivateCarService orderPrivateCarService; |
| | | |
| | | |
| | | |
| | |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "/queryDriverIncomeData", method = RequestMethod.POST) |
| | | public Object queryDriverIncomeData(Integer type, String time, Integer companyId){ |
| | | public Object queryDriverIncomeData(String driverName, String time, Integer companyId){ |
| | | try { |
| | | String start = null; |
| | | String end = null; |
| | |
| | | end = time.split(" - ")[1]; |
| | | } |
| | | Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); |
| | | page.setRecords(driverService.queryDriverIncomeData(page,type,start,end,companyId)); |
| | | List<Map<String, Object>> maps = driverService.queryDriverIncomeData(page, driverName, start, end, companyId); |
| | | EntityWrapper<Income> incomeEntityWrapper = new EntityWrapper<>(); |
| | | incomeEntityWrapper.eq("type",2); |
| | | incomeEntityWrapper.isNotNull("money"); |
| | | if (start!=null){ |
| | | incomeEntityWrapper.ge("insertTime", start); |
| | | incomeEntityWrapper.le("insertTime", end); |
| | | } |
| | | |
| | | List<Income> incomes = incomeService.selectList( |
| | | incomeEntityWrapper |
| | | ); |
| | | EntityWrapper<TOrderPrivateCar> driverEntityWrapper = new EntityWrapper<>(); |
| | | driverEntityWrapper.isNotNull("driverId"); |
| | | if (start!=null){ |
| | | driverEntityWrapper.ge("insertTime", start); |
| | | driverEntityWrapper.le("insertTime", end); |
| | | } |
| | | List<TOrderPrivateCar> tOrderPrivateCars = orderPrivateCarService.selectList(driverEntityWrapper); |
| | | |
| | | for (Map<String, Object> map : maps) { |
| | | Double driverMoney = 0.0; |
| | | Double platformMoney = 0.0; |
| | | |
| | | // 司机跑单收入 |
| | | List<Income> driver = incomes.stream().filter(e -> e.getUserType().equals(2) |
| | | &&map.get("id").toString().equals(e.getObjectId().toString())).collect(Collectors.toList()); |
| | | for (Income income : driver) { |
| | | driverMoney+=income.getMoney(); |
| | | } |
| | | String driverId = map.get("id").toString(); |
| | | // 查询司机订单 |
| | | List<Integer> orderIds = tOrderPrivateCars.stream().filter(e -> e.getDriverId().equals(Integer.parseInt(driverId))) |
| | | .map(TOrderPrivateCar::getId).collect(Collectors.toList()); |
| | | // 平台收入 |
| | | List<Income> platform = incomes.stream().filter(e -> e.getUserType().equals(1) |
| | | && orderIds.contains(e.getObjectId())).collect(Collectors.toList()); |
| | | for (Income income : platform) { |
| | | platformMoney+=income.getMoney(); |
| | | } |
| | | // driverMoney保留两位小数 |
| | | driverMoney = new BigDecimal(driverMoney).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | platformMoney = new BigDecimal(platformMoney).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | map.put("driverMoney", driverMoney); |
| | | map.put("platformMoney", platformMoney); |
| | | } |
| | | page.setRecords(maps); |
| | | return super.packForBT(page); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | |
| | | * 导出司机收益排行 |
| | | * @author yxh |
| | | * @date 2021/4/7 9:32 |
| | | * @param type |
| | | * @param driverName |
| | | * @param time |
| | | * @param companyId |
| | | * @param response |
| | | */ |
| | | @RequestMapping(value = "/downloadDriverIncomeData", method = RequestMethod.GET) |
| | | public void downloadDriverIncomeData(Integer type, String time, Integer companyId, HttpServletRequest request, HttpServletResponse response){ |
| | | public void downloadDriverIncomeData(String driverName, String time, Integer companyId, HttpServletRequest request, HttpServletResponse response){ |
| | | String start = null; |
| | | String end = null; |
| | | if(ToolUtil.isNotEmpty(time)){ |
| | | start = time.split(" - ")[0]; |
| | | end = time.split(" - ")[1]; |
| | | } |
| | | List<Map<String, Object>> list = driverService.queryDriverIncomeDataNoPage(type,start,end,companyId); |
| | | List<Map<String, Object>> list = driverService.queryDriverIncomeDataNoPage(driverName,start,end,companyId); |
| | | EntityWrapper<Income> incomeEntityWrapper = new EntityWrapper<>(); |
| | | incomeEntityWrapper.eq("type",2); |
| | | incomeEntityWrapper.isNotNull("money"); |
| | | if (start!=null){ |
| | | incomeEntityWrapper.ge("insertTime", start); |
| | | incomeEntityWrapper.le("insertTime", end); |
| | | } |
| | | |
| | | List<Income> incomes = incomeService.selectList( |
| | | incomeEntityWrapper |
| | | ); |
| | | EntityWrapper<TOrderPrivateCar> driverEntityWrapper = new EntityWrapper<>(); |
| | | driverEntityWrapper.isNotNull("driverId"); |
| | | |
| | | if (start!=null){ |
| | | driverEntityWrapper.ge("insertTime", start); |
| | | driverEntityWrapper.le("insertTime", end); |
| | | } |
| | | List<TOrderPrivateCar> tOrderPrivateCars = orderPrivateCarService.selectList(driverEntityWrapper); |
| | | |
| | | for (Map<String, Object> map : list) { |
| | | Double driverMoney = 0.0; |
| | | Double platformMoney = 0.0; |
| | | |
| | | // 司机跑单收入 |
| | | List<Income> driver = incomes.stream().filter(e -> e.getUserType().equals(2) |
| | | &&map.get("id").toString().equals(e.getObjectId().toString())).collect(Collectors.toList()); |
| | | for (Income income : driver) { |
| | | driverMoney+=income.getMoney(); |
| | | } |
| | | String driverId = map.get("id").toString(); |
| | | // 查询司机订单 |
| | | List<Integer> orderIds = tOrderPrivateCars.stream().filter(e -> e.getDriverId().equals(Integer.parseInt(driverId))) |
| | | .map(TOrderPrivateCar::getId).collect(Collectors.toList()); |
| | | // 平台收入 |
| | | List<Income> platform = incomes.stream().filter(e -> e.getUserType().equals(1) |
| | | && orderIds.contains(e.getObjectId())).collect(Collectors.toList()); |
| | | for (Income income : platform) { |
| | | platformMoney+=income.getMoney(); |
| | | } |
| | | // driverMoney保留两位小数 |
| | | driverMoney = new BigDecimal(driverMoney).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | platformMoney = new BigDecimal(platformMoney).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | map.put("driverMoney", driverMoney); |
| | | map.put("platformMoney", platformMoney); |
| | | } |
| | | // 表格数据 |
| | | List<List<String>> dataList = new ArrayList<>(); |
| | | // 表头行 |
| | |
| | | shellList.add("姓名"); |
| | | shellList.add("账号/手机号"); |
| | | shellList.add("所属分公司"); |
| | | shellList.add("订单总数"); |
| | | shellList.add("未支付订单数"); |
| | | shellList.add("取消订单数"); |
| | | shellList.add("已完成订单数"); |
| | | shellList.add("订单总金额"); |
| | | shellList.add("未支付订金额"); |
| | | shellList.add("实付金额"); |
| | | shellList.add("司机收入"); |
| | | shellList.add("平台手续费"); |
| | | dataList.add(shellList); |
| | | |
| | | for (Map<String, Object> map : list) { |
| | |
| | | }else{ |
| | | shellList.add("0"); |
| | | } |
| | | if(SinataUtil.isNotEmpty(map.get("privateCarNotPayNum"))){ |
| | | shellList.add(map.get("privateCarNotPayNum").toString()); |
| | | }else{ |
| | | shellList.add("0"); |
| | | } |
| | | if(SinataUtil.isNotEmpty(map.get("privateCarcancelNum"))){ |
| | | shellList.add(map.get("privateCarcancelNum").toString()); |
| | | }else{ |
| | | shellList.add("0"); |
| | | } |
| | | if(SinataUtil.isNotEmpty(map.get("privateCarTotalMoney"))){ |
| | | shellList.add(map.get("privateCarTotalMoney").toString()); |
| | | }else{ |
| | | shellList.add("0"); |
| | | } |
| | | if(SinataUtil.isNotEmpty(map.get("privateCarNotPayMoney"))){ |
| | | shellList.add(map.get("privateCarNotPayMoney").toString()); |
| | | if(SinataUtil.isNotEmpty(map.get("payMoney"))){ |
| | | shellList.add(map.get("payMoney").toString()); |
| | | }else{ |
| | | shellList.add("0"); |
| | | } |
| | | if(SinataUtil.isNotEmpty(map.get("driverMoney"))){ |
| | | shellList.add(map.get("driverMoney").toString()); |
| | | }else{ |
| | | shellList.add("0"); |
| | | } |
| | | if(SinataUtil.isNotEmpty(map.get("platformMoney"))){ |
| | | shellList.add(map.get("platformMoney").toString()); |
| | | }else{ |
| | | shellList.add("0"); |
| | | } |