| | |
| | | package com.stylefeng.guns.modular.system.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import com.stylefeng.guns.core.util.ExcelUtil; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.dao.IncomeMapper; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import com.stylefeng.guns.modular.system.model.Income; |
| | | import com.stylefeng.guns.modular.system.service.IIncomeService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.Date; |
| | | |
| | | |
| | | @Service |
| | | public class IncomeServiceImpl extends ServiceImpl<IncomeMapper, Income> implements IIncomeService { |
| | | |
| | | @Autowired |
| | | private ITOrderPrivateCarService orderPrivateCarService; |
| | | |
| | | @Autowired |
| | | private ITOrderTaxiService orderTaxiService; |
| | | |
| | | @Autowired |
| | | private ITOrderCrossCityService orderCrossCityService; |
| | | |
| | | @Autowired |
| | | private ITOrderLogisticsService orderLogisticsService; |
| | | |
| | | @Autowired |
| | | private ITOrderCallService orderCallService; |
| | | |
| | | @Autowired |
| | | private ITUserService userService; |
| | | |
| | | @Autowired |
| | | private ITOrderCharteredCarService orderCharteredCarService; |
| | | |
| | | @Autowired |
| | | private ITDriverService driverService; |
| | | |
| | | |
| | | /** |
| | |
| | | income.setMoney(money); |
| | | income.setInsertTime(new Date()); |
| | | this.insert(income); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public Map<String, Object> summaryOfIncomeDetailsList(String insertTime, Integer offset, Integer limit) throws Exception { |
| | | String startTime = ""; |
| | | String endTime = ""; |
| | | if(ToolUtil.isNotEmpty(insertTime)){ |
| | | String[] split = insertTime.split(" - "); |
| | | startTime = split[0]; |
| | | endTime = split[1]; |
| | | } |
| | | Map<String, Object> maps = new HashMap<>(); |
| | | |
| | | List<Map<String, Object>> list = this.baseMapper.summaryOfIncomeDetailsList(ShiroKit.getUser().getObjectId(), startTime, endTime, offset, limit); |
| | | List<Map<String, Object>> datas = new ArrayList<>(); |
| | | for (Map<String, Object> map : list) { |
| | | String insertTime1 = map.get("insertTime").toString(); |
| | | |
| | | List<Map<String, Object>> list2 = this.baseMapper.summaryOfIncomeDetailsListGroupSum(1, ShiroKit.getUser().getObjectId(), insertTime1); |
| | | List<Map<String, Object>> list1 = new ArrayList<>(); |
| | | |
| | | for (Map<String, Object> income : list2) { |
| | | Double money = Double.valueOf(income.get("money").toString()); |
| | | Double overtimeDeduction = Double.valueOf(income.get("overtimeDeduction").toString()); |
| | | Double complaint = Double.valueOf(income.get("complaint").toString()); |
| | | Double payMoney = Double.valueOf(income.get("payMoney").toString()); |
| | | |
| | | Map<String, Object> row = new HashMap<>(); |
| | | row.put("orderType", "");//订单类型 |
| | | row.put("type", "");//收益类型 |
| | | row.put("userName", null == income.get("nickName") ? "" : income.get("nickName").toString());//用户姓名 |
| | | row.put("userPhone", null == income.get("phone") ? "" : income.get("phone").toString());//用户电话 |
| | | row.put("orderPayMoney", payMoney);//订单支付金额 |
| | | row.put("orderRevenue", money);//订单收益 |
| | | row.put("taxiCardRevenue", 0);//打车卡收益 |
| | | row.put("overtimeDeduction", overtimeDeduction);//超时扣款收益 |
| | | row.put("complaintDeductionProceeds", complaint);//投诉扣款收益 |
| | | row.put("other", 0);//其他 |
| | | if(null != income.get("orderType")){ |
| | | Integer orderType = Integer.valueOf(income.get("orderType").toString()); |
| | | if(orderType != null){ |
| | | switch (orderType){ |
| | | case 1: |
| | | row.put("orderType", "快车"); |
| | | break; |
| | | case 2: |
| | | row.put("orderType", "出租车"); |
| | | break; |
| | | case 3: |
| | | row.put("orderType", "跨城出行"); |
| | | break; |
| | | case 4: |
| | | row.put("orderType", "同城小件物流"); |
| | | break; |
| | | case 5: |
| | | row.put("orderType", "跨城小件物流"); |
| | | break; |
| | | case 6: |
| | | row.put("orderType", "包车"); |
| | | break; |
| | | case 7: |
| | | row.put("orderType", "95128"); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | Integer type = Integer.valueOf(income.get("type").toString()); |
| | | switch (type){ |
| | | case 1: |
| | | row.put("type", "活动收入"); |
| | | break; |
| | | case 2: |
| | | row.put("type", "跑单收入"); |
| | | break; |
| | | case 3: |
| | | row.put("type", "取消订单收入"); |
| | | break; |
| | | case 4: |
| | | row.put("type", "改派订单收入"); |
| | | break; |
| | | case 5: |
| | | row.put("type", "购买出行卡"); |
| | | break; |
| | | case 6: |
| | | row.put("type", "感谢费"); |
| | | break; |
| | | case 7: |
| | | row.put("type", "超时扣款"); |
| | | break; |
| | | case 8: |
| | | row.put("type", "投诉扣款"); |
| | | break; |
| | | case 9: |
| | | row.put("type", "小件物流超时退款"); |
| | | break; |
| | | } |
| | | list1.add(row); |
| | | } |
| | | |
| | | Double sumData = this.baseMapper.getSumData(1, ShiroKit.getUser().getObjectId(), insertTime1, Arrays.asList(5)); |
| | | Map<String, Object> row = new HashMap<>(); |
| | | row.put("orderType", "");//订单类型 |
| | | row.put("type", "购买出行卡");//收益类型 |
| | | row.put("userName", "");//用户姓名 |
| | | row.put("userPhone", "");//用户电话 |
| | | row.put("orderPayMoney", 0);//订单支付金额 |
| | | row.put("orderRevenue", 0);//订单收益 |
| | | row.put("taxiCardRevenue", null == sumData ? 0 : sumData);//打车卡收益 |
| | | row.put("overtimeDeduction", 0);//超时扣款收益 |
| | | row.put("complaintDeductionProceeds", 0);//投诉扣款收益 |
| | | row.put("other", 0);//其他 |
| | | list1.add(row); |
| | | |
| | | sumData = this.baseMapper.getSumData(1, ShiroKit.getUser().getObjectId(), insertTime1, Arrays.asList(1, 3, 4, 6, 9)); |
| | | row = new HashMap<>(); |
| | | row.put("orderType", "");//订单类型 |
| | | row.put("type", "其他");//收益类型 |
| | | row.put("userName", "");//用户姓名 |
| | | row.put("userPhone", "");//用户电话 |
| | | row.put("orderPayMoney", 0);//订单支付金额 |
| | | row.put("orderRevenue", 0);//订单收益 |
| | | row.put("taxiCardRevenue", 0);//打车卡收益 |
| | | row.put("overtimeDeduction", 0);//超时扣款收益 |
| | | row.put("complaintDeductionProceeds", 0);//投诉扣款收益 |
| | | row.put("other", sumData);//其他 |
| | | list1.add(row); |
| | | |
| | | if(list1.size() > 0){ |
| | | Map<String, Object> data = new HashMap<>(); |
| | | data.put("insertTime", insertTime1); |
| | | data.put("list", list1); |
| | | datas.add(data); |
| | | } |
| | | } |
| | | int count = this.baseMapper.summaryOfIncomeDetailsListCount(ShiroKit.getUser().getObjectId(), startTime, endTime); |
| | | Map<String, Object> map = this.baseMapper.summaryOfIncomeDetailsListSum(ShiroKit.getUser().getObjectId(), startTime, endTime); |
| | | Map<String, Object> data = new HashMap<>(); |
| | | data.put("insertTime", "合计"); |
| | | List<Map<String, Object>> list1 = new ArrayList<>(); |
| | | list1.add(map); |
| | | data.put("list", list1); |
| | | datas.add(data); |
| | | |
| | | maps.put("rows", datas); |
| | | maps.put("total", count); |
| | | return maps; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public HSSFWorkbook exportSummaryOfIncomeDetails(String insertTime) throws Exception { |
| | | String startTime = ""; |
| | | String endTime = ""; |
| | | if(ToolUtil.isNotEmpty(insertTime)){ |
| | | String[] split = insertTime.split(" - "); |
| | | startTime = split[0]; |
| | | endTime = split[1]; |
| | | } |
| | | |
| | | List<Map<String, Object>> list = this.baseMapper.summaryOfIncomeDetailsList(ShiroKit.getUser().getObjectId(), startTime, endTime, null, null); |
| | | List<Map<String, Object>> datas = new ArrayList<>(); |
| | | Integer num = 0; |
| | | for (Map<String, Object> map : list) { |
| | | String insertTime1 = map.get("insertTime").toString(); |
| | | |
| | | List<Map<String, Object>> list2 = this.baseMapper.summaryOfIncomeDetailsListGroupSum(1, ShiroKit.getUser().getObjectId(), insertTime1); |
| | | List<Map<String, Object>> list1 = new ArrayList<>(); |
| | | |
| | | for (Map<String, Object> income : list2) { |
| | | Double money = Double.valueOf(income.get("money").toString()); |
| | | Double overtimeDeduction = Double.valueOf(income.get("overtimeDeduction").toString()); |
| | | Double complaint = Double.valueOf(income.get("complaint").toString()); |
| | | Double payMoney = Double.valueOf(income.get("payMoney").toString()); |
| | | |
| | | Map<String, Object> row = new HashMap<>(); |
| | | row.put("orderType", "");//订单类型 |
| | | row.put("type", "");//收益类型 |
| | | row.put("userName", null == income.get("nickName") ? "" : income.get("nickName").toString());//用户姓名 |
| | | row.put("userPhone", null == income.get("phone") ? "" : income.get("phone").toString());//用户电话 |
| | | row.put("orderPayMoney", payMoney);//订单支付金额 |
| | | row.put("orderRevenue", money);//订单收益 |
| | | row.put("taxiCardRevenue", 0);//打车卡收益 |
| | | row.put("overtimeDeduction", overtimeDeduction);//超时扣款收益 |
| | | row.put("complaintDeductionProceeds", complaint);//投诉扣款收益 |
| | | row.put("other", 0);//其他 |
| | | if(null != income.get("orderType")){ |
| | | Integer orderType = Integer.valueOf(income.get("orderType").toString()); |
| | | if(orderType != null){ |
| | | switch (orderType){ |
| | | case 1: |
| | | row.put("orderType", "快车"); |
| | | break; |
| | | case 2: |
| | | row.put("orderType", "出租车"); |
| | | break; |
| | | case 3: |
| | | row.put("orderType", "跨城出行"); |
| | | break; |
| | | case 4: |
| | | row.put("orderType", "同城小件物流"); |
| | | break; |
| | | case 5: |
| | | row.put("orderType", "跨城小件物流"); |
| | | break; |
| | | case 6: |
| | | row.put("orderType", "包车"); |
| | | break; |
| | | case 7: |
| | | row.put("orderType", "95128"); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | Integer type = Integer.valueOf(income.get("type").toString()); |
| | | switch (type){ |
| | | case 1: |
| | | row.put("type", "活动收入"); |
| | | break; |
| | | case 2: |
| | | row.put("type", "跑单收入"); |
| | | break; |
| | | case 3: |
| | | row.put("type", "取消订单收入"); |
| | | break; |
| | | case 4: |
| | | row.put("type", "改派订单收入"); |
| | | break; |
| | | case 5: |
| | | row.put("type", "购买出行卡"); |
| | | break; |
| | | case 6: |
| | | row.put("type", "感谢费"); |
| | | break; |
| | | case 7: |
| | | row.put("type", "超时扣款"); |
| | | break; |
| | | case 8: |
| | | row.put("type", "投诉扣款"); |
| | | break; |
| | | case 9: |
| | | row.put("type", "小件物流超时退款"); |
| | | break; |
| | | } |
| | | list1.add(row); |
| | | } |
| | | |
| | | Double sumData = this.baseMapper.getSumData(1, ShiroKit.getUser().getObjectId(), insertTime1, Arrays.asList(5)); |
| | | Map<String, Object> row = new HashMap<>(); |
| | | row.put("orderType", "");//订单类型 |
| | | row.put("type", "购买出行卡");//收益类型 |
| | | row.put("userName", "");//用户姓名 |
| | | row.put("userPhone", "");//用户电话 |
| | | row.put("orderPayMoney", 0);//订单支付金额 |
| | | row.put("orderRevenue", 0);//订单收益 |
| | | row.put("taxiCardRevenue", sumData);//打车卡收益 |
| | | row.put("overtimeDeduction", 0);//超时扣款收益 |
| | | row.put("complaintDeductionProceeds", 0);//投诉扣款收益 |
| | | row.put("other", 0);//其他 |
| | | list1.add(row); |
| | | |
| | | sumData = this.baseMapper.getSumData(1, ShiroKit.getUser().getObjectId(), insertTime1, Arrays.asList(1, 3, 4, 6, 9)); |
| | | row = new HashMap<>(); |
| | | row.put("orderType", "");//订单类型 |
| | | row.put("type", "其他");//收益类型 |
| | | row.put("userName", "");//用户姓名 |
| | | row.put("userPhone", "");//用户电话 |
| | | row.put("orderPayMoney", 0);//订单支付金额 |
| | | row.put("orderRevenue", 0);//订单收益 |
| | | row.put("taxiCardRevenue", 0);//打车卡收益 |
| | | row.put("overtimeDeduction", 0);//超时扣款收益 |
| | | row.put("complaintDeductionProceeds", 0);//投诉扣款收益 |
| | | row.put("other", sumData);//其他 |
| | | list1.add(row); |
| | | |
| | | if(list1.size() > 0){ |
| | | Map<String, Object> data = new HashMap<>(); |
| | | data.put("insertTime", insertTime1); |
| | | data.put("list", list1); |
| | | datas.add(data); |
| | | } |
| | | num += list1.size(); |
| | | } |
| | | |
| | | String[] title = new String[]{"时间", "订单", "收益类型", "用户名称", "用户手机号", "订单支付金额", "平台订单收益", "打车卡收益", "超时扣款收益", "司机投诉扣款平台收益", "其他收入", "收入合计"}; |
| | | String[][] values = new String[num][12]; |
| | | int n = 0; |
| | | for (int i = 0; i < datas.size(); i++) { |
| | | Map<String, Object> map = datas.get(i); |
| | | Object insertTime1 = map.get("insertTime"); |
| | | List<Map<String, Object>> list1 = (List<Map<String, Object>>)map.get("list"); |
| | | for (int j = 0; j < list1.size(); j++) { |
| | | Map<String, Object> map1 = list1.get(j); |
| | | values[n][0] = insertTime1.toString(); |
| | | values[n][1] = null != map1.get("orderType") ? map1.get("orderType").toString() : ""; |
| | | values[n][2] = null != map1.get("type") ? map1.get("type").toString() : ""; |
| | | values[n][3] = null != map1.get("userName") ? map1.get("userName").toString() : ""; |
| | | values[n][4] = null != map1.get("userPhone") ? map1.get("userPhone").toString() : ""; |
| | | values[n][5] = null != map1.get("orderPayMoney") ? map1.get("orderPayMoney").toString() : ""; |
| | | values[n][6] = null != map1.get("orderRevenue") ? map1.get("orderRevenue").toString() : ""; |
| | | values[n][7] = null != map1.get("taxiCardRevenue") ? map1.get("taxiCardRevenue").toString() : ""; |
| | | values[n][8] = null != map1.get("overtimeDeduction") ? map1.get("overtimeDeduction").toString() : ""; |
| | | values[n][9] = null != map1.get("complaintDeductionProceeds") ? map1.get("complaintDeductionProceeds").toString() : ""; |
| | | values[n][10] = null != map1.get("other") ? map1.get("other").toString() : ""; |
| | | BigDecimal all = new BigDecimal(ToolUtil.isNotEmpty(map1.get("orderRevenue")) ? map1.get("orderRevenue").toString() : "0") |
| | | .add(new BigDecimal(ToolUtil.isNotEmpty(map1.get("taxiCardRevenue")) ? map1.get("taxiCardRevenue").toString() : "0")) |
| | | .add(new BigDecimal(ToolUtil.isNotEmpty(map1.get("overtimeDeduction")) ? map1.get("overtimeDeduction").toString() : "0")) |
| | | .add(new BigDecimal(ToolUtil.isNotEmpty(map1.get("complaintDeductionProceeds")) ? map1.get("complaintDeductionProceeds").toString() : "0")) |
| | | .add(new BigDecimal(ToolUtil.isNotEmpty(map1.get("other")) ? map1.get("other").toString() : "0")); |
| | | values[n][11] = all.toPlainString(); |
| | | n++; |
| | | } |
| | | } |
| | | return ExcelUtil.getHSSFWorkbookTime("收入明细汇总", title, values, null,insertTime); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> summaryOfSpendingDetailsList(String insertTime, Integer offset, Integer limit) throws Exception { |
| | | String startTime = ""; |
| | | String endTime = ""; |
| | | if(ToolUtil.isNotEmpty(insertTime)){ |
| | | String[] split = insertTime.split(" - "); |
| | | startTime = split[0]; |
| | | endTime = split[1]; |
| | | } |
| | | Map<String, Object> maps = new HashMap<>(); |
| | | |
| | | List<Map<String, Object>> list = this.baseMapper.summaryOfSpendingDetailsList(ShiroKit.getUser().getObjectId(), startTime, endTime, offset, limit); |
| | | List<Map<String, Object>> datas = new ArrayList<>(); |
| | | for (Map<String, Object> map : list) { |
| | | String insertTime1 = map.get("insertTime").toString(); |
| | | List<Map<String, Object>> list1 = this.baseMapper.summaryOfSpendingDetailsList1(insertTime1); |
| | | Map<String, Object> data = new HashMap<>(); |
| | | data.put("insertTime", insertTime1); |
| | | data.put("list", list1); |
| | | datas.add(data); |
| | | } |
| | | int count = this.baseMapper.summaryOfSpendingDetailsListCount(ShiroKit.getUser().getObjectId(), startTime, endTime); |
| | | Map<String, Object> map = this.baseMapper.summaryOfSpendingDetailsListSum(ShiroKit.getUser().getObjectId(), startTime, endTime); |
| | | Map<String, Object> data = new HashMap<>(); |
| | | data.put("insertTime", "合计"); |
| | | List<Map<String, Object>> list1 = new ArrayList<>(); |
| | | list1.add(map); |
| | | data.put("list", list1); |
| | | datas.add(data); |
| | | |
| | | maps.put("rows", datas); |
| | | maps.put("total", count); |
| | | return maps; |
| | | } |
| | | |
| | | @Override |
| | | public HSSFWorkbook exportSummaryOfSpendingDetails(String insertTime) throws Exception { |
| | | String startTime = ""; |
| | | String endTime = ""; |
| | | if(ToolUtil.isNotEmpty(insertTime)){ |
| | | String[] split = insertTime.split(" - "); |
| | | startTime = split[0]; |
| | | endTime = split[1]; |
| | | } |
| | | |
| | | int num = 0; |
| | | List<Map<String, Object>> list = this.baseMapper.summaryOfSpendingDetailsList(ShiroKit.getUser().getObjectId(), startTime, endTime, null, null); |
| | | List<Map<String, Object>> datas = new ArrayList<>(); |
| | | for (Map<String, Object> map : list) { |
| | | String insertTime1 = map.get("insertTime").toString(); |
| | | List<Map<String, Object>> list1 = this.baseMapper.summaryOfSpendingDetailsList1(insertTime1); |
| | | Map<String, Object> data = new HashMap<>(); |
| | | data.put("insertTime", insertTime1); |
| | | data.put("list", list1); |
| | | datas.add(data); |
| | | num += list1.size(); |
| | | } |
| | | |
| | | String[] title = new String[]{"时间", "订单类型", "收益类型", "司机名称", "司机手机号", "应支付金额", "平台奖励", "其他支出", "支出合计"}; |
| | | String[][] values = new String[num][12]; |
| | | int n = 0; |
| | | for (int i = 0; i < datas.size(); i++) { |
| | | Map<String, Object> map = datas.get(i); |
| | | Object insertTime1 = map.get("insertTime"); |
| | | List<Map<String, Object>> list1 = (List<Map<String, Object>>)map.get("list"); |
| | | for (int j = 0; j < list1.size(); j++) { |
| | | Map<String, Object> map1 = list1.get(j); |
| | | values[n][0] = insertTime1.toString(); |
| | | values[n][1] = ""; |
| | | if(null != map1.get("orderType")){ |
| | | switch (Integer.valueOf(map1.get("orderType").toString())){ |
| | | case 1: |
| | | values[n][1] = "快车"; |
| | | break; |
| | | case 2: |
| | | values[n][1] = "出租车"; |
| | | break; |
| | | case 3: |
| | | values[n][1] = "跨城跨城出行小件物流"; |
| | | break; |
| | | case 4: |
| | | values[n][1] = "同城小件物流"; |
| | | break; |
| | | case 5: |
| | | values[n][1] = "跨城小件物流"; |
| | | break; |
| | | case 6: |
| | | values[n][1] = "包车"; |
| | | break; |
| | | case 7: |
| | | values[n][1] = "95128"; |
| | | break; |
| | | } |
| | | } |
| | | values[n][2] = null != map1.get("type") ? map1.get("type").toString() : ""; |
| | | values[n][3] = null != map1.get("name") ? map1.get("name").toString() : ""; |
| | | values[n][4] = null != map1.get("phone") ? map1.get("phone").toString() : ""; |
| | | values[n][6] = null != map1.get("orderRevenue") ? map1.get("orderRevenue").toString() : ""; |
| | | values[n][7] = null != map1.get("activityAward") ? map1.get("activityAward").toString() : ""; |
| | | values[n][10] = null != map1.get("other") ? map1.get("other").toString() : ""; |
| | | values[n][11] = null != map1.get("all") ? map1.get("all").toString() : ""; |
| | | n++; |
| | | } |
| | | } |
| | | return ExcelUtil.getHSSFWorkbookTime("支出明细汇总", title, values, null,insertTime); |
| | | } |
| | | } |