package com.stylefeng.guns.modular.system.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; 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 org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; @Service public class IncomeServiceImpl extends ServiceImpl 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; @Autowired private ITCompanyService companyService; @Autowired private ITLineService lineService; /** * 添加数据 * @param userType * @param objectId * @param type * @param incomeId * @param money * @throws Exception */ @Override public void saveData(Integer userType, Integer objectId, Integer type, Integer incomeId, Integer orderType, Double money) throws Exception { Income income = new Income(); income.setUserType(userType); income.setObjectId(objectId); income.setType(type); income.setIncomeId(incomeId); income.setOrderType(orderType); income.setMoney(money); income.setInsertTime(new Date()); this.insert(income); } // @Override // public Map 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 maps = new HashMap<>(); // // List> list = this.baseMapper.summaryOfIncomeDetailsList(ShiroKit.getUser().getObjectId(), startTime, endTime, offset, limit); // List> datas = new ArrayList<>(); // for (Map map : list) { // String insertTime1 = map.get("insertTime").toString(); // // List> list2 = this.baseMapper.summaryOfIncomeDetailsListGroupSum(1, ShiroKit.getUser().getObjectId(), insertTime1); // List> list1 = new ArrayList<>(); // // for (Map 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 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 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 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 map = this.baseMapper.summaryOfIncomeDetailsListSum(ShiroKit.getUser().getObjectId(), startTime, endTime); // Map data = new HashMap<>(); // data.put("insertTime", "合计"); // List> 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 Map summaryOfIncomeDetailsList(String insertTime, Integer orderType, Integer incomeType, String name, String phone, 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 maps = new HashMap<>(); List> datas = new ArrayList<>(); List> list2 = this.baseMapper.summaryOfIncomeDetailsListGroupSum1(1, ShiroKit.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, offset, limit); for (Map income : list2) { Double orderMoney = Double.valueOf(null != income.get("orderMoney") ? income.get("orderMoney").toString() : "0"); Double payMoney = Double.valueOf(income.get("payMoney").toString()); Double money = Double.valueOf(income.get("money").toString()); money = orderMoney - money; Double overtimeDeduction = Double.valueOf(income.get("overtimeDeduction").toString()); Double complaint = Double.valueOf(income.get("complaint").toString()); String insertTime1 = income.get("insertTime").toString(); Double taxiCardRevenue = Double.valueOf(new BigDecimal(income.get("taxiCardRevenue").toString()).setScale(2, RoundingMode.HALF_UP).toString()); Double other = Double.valueOf(new BigDecimal(income.get("other").toString()).setScale(2, RoundingMode.HALF_UP).toString()); Map row = new HashMap<>(); row.put("insertTime", insertTime1); 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", new BigDecimal(money).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//订单收益 row.put("taxiCardRevenue", taxiCardRevenue);//打车卡收益 row.put("overtimeDeduction", overtimeDeduction);//超时扣款收益 row.put("complaintDeductionProceeds", complaint);//投诉扣款收益 row.put("other", other);//其他 if(null != income.get("orderType")){ Integer orderType1 = Integer.valueOf(income.get("orderType").toString()); if(orderType1 != null){ switch (orderType1){ 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; } datas.add(row); } List> datas1 = new ArrayList<>(); list2 = this.baseMapper.summaryOfIncomeDetailsListGroupSum1(1, ShiroKit.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); for (Map income : list2) { Double orderMoney = Double.valueOf(null != income.get("orderMoney") ? income.get("orderMoney").toString() : "0"); Double payMoney = Double.valueOf(income.get("payMoney").toString()); Double money = Double.valueOf(income.get("money").toString()); money = orderMoney - money; Double overtimeDeduction = Double.valueOf(income.get("overtimeDeduction").toString()); Double complaint = Double.valueOf(income.get("complaint").toString()); String insertTime1 = income.get("insertTime").toString(); Double taxiCardRevenue = Double.valueOf(income.get("taxiCardRevenue").toString()); Double other = Double.valueOf(income.get("other").toString()); Map row = new HashMap<>(); row.put("insertTime", insertTime1); 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", new BigDecimal(money).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//订单收益 row.put("taxiCardRevenue", taxiCardRevenue);//打车卡收益 row.put("overtimeDeduction", overtimeDeduction);//超时扣款收益 row.put("complaintDeductionProceeds", complaint);//投诉扣款收益 row.put("other", other);//其他 if(null != income.get("orderType")){ Integer orderType1 = Integer.valueOf(income.get("orderType").toString()); if(orderType1 != null){ switch (orderType1){ 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; } datas1.add(row); } BigDecimal orderPayMoney1 = new BigDecimal("0"); BigDecimal orderRevenue1 = new BigDecimal("0"); BigDecimal taxiCardRevenue1 = new BigDecimal("0"); BigDecimal overtimeDeduction1 = new BigDecimal("0"); BigDecimal complaintDeductionProceeds1 = new BigDecimal("0"); BigDecimal other1 = new BigDecimal("0"); for (Map income : datas1) { orderPayMoney1 = orderPayMoney1.add(new BigDecimal(null == income.get("orderPayMoney") ? "0" : income.get("orderPayMoney").toString())); orderRevenue1 = orderRevenue1.add(new BigDecimal(null == income.get("orderRevenue") ? "0" : income.get("orderRevenue").toString())); taxiCardRevenue1 = taxiCardRevenue1.add(new BigDecimal(null == income.get("taxiCardRevenue") ? "0" : income.get("taxiCardRevenue").toString())); overtimeDeduction1 = overtimeDeduction1.add(new BigDecimal(null == income.get("overtimeDeduction") ? "0" : income.get("overtimeDeduction").toString())); complaintDeductionProceeds1 = complaintDeductionProceeds1.add(new BigDecimal(null == income.get("complaintDeductionProceeds") ? "0" : income.get("complaintDeductionProceeds").toString())); other1 = other1.add(new BigDecimal(null == income.get("other") ? "0" : income.get("other").toString())); } Map map = new HashMap<>(); map.put("insertTime", "合计"); map.put("orderPayMoney", orderPayMoney1.doubleValue()); map.put("orderRevenue", orderRevenue1.doubleValue()); map.put("taxiCardRevenue", new BigDecimal(taxiCardRevenue1.doubleValue()).setScale(2,RoundingMode.HALF_UP).doubleValue()); map.put("overtimeDeduction", overtimeDeduction1.doubleValue()); map.put("complaintDeductionProceeds", complaintDeductionProceeds1.doubleValue()); map.put("other", other1.doubleValue()); datas.add(map); maps.put("rows", datas); maps.put("total", list2.size()); return maps; } @Override public HSSFWorkbook exportSummaryOfIncomeDetails(String insertTime, Integer orderType, Integer incomeType, String name, String phone) throws Exception { String startTime = ""; String endTime = ""; if (ToolUtil.isNotEmpty(insertTime)) { String[] split = insertTime.split(" - "); startTime = split[0]; endTime = split[1]; } List> list = this.baseMapper.summaryOfIncomeDetailsListGroupSum1(1, ShiroKit.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); List> datas = new ArrayList<>(); Integer num = 0; for (Map income : list) { Double orderMoney = Double.valueOf(null != income.get("orderMoney") ? income.get("orderMoney").toString() : "0"); Double payMoney = Double.valueOf(income.get("payMoney").toString()); Double money = Double.valueOf(income.get("money").toString()); Double overtimeDeduction = Double.valueOf(income.get("overtimeDeduction").toString()); Double complaint = Double.valueOf(income.get("complaint").toString()); String insertTime1 = income.get("insertTime").toString(); Double taxiCardRevenue = Double.valueOf(new BigDecimal(income.get("taxiCardRevenue").toString()).setScale(2, RoundingMode.HALF_UP).toString()); Double other = Double.valueOf(new BigDecimal(income.get("other").toString()).setScale(2,RoundingMode.HALF_UP).toString()); money = orderMoney - money; Map row = new HashMap<>(); row.put("insertTime", insertTime1); 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", new BigDecimal(money).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//订单收益 row.put("taxiCardRevenue", taxiCardRevenue);//打车卡收益 row.put("overtimeDeduction", overtimeDeduction);//超时扣款收益 row.put("complaintDeductionProceeds", complaint);//投诉扣款收益 row.put("other", other);//其他 if (null != income.get("orderType")) { Integer orderType1 = Integer.valueOf(income.get("orderType").toString()); if (orderType1 != null) { switch (orderType1) { 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; } datas.add(row); } String[] title = new String[]{"时间", "订单类型", "收益类型", "用户名称", "用户手机号", "乘客实际支付金额", "平台抽佣金额", "购买打车卡收益", "超时扣款收益", "司机投诉扣款平台收益", "其他收入", "收入合计"}; String[][] values = new String[list.size()][12]; int n = 0; for (int i = 0; i < datas.size(); i++) { Map map = datas.get(i); Object insertTime1 = map.get("insertTime"); values[n][0] = insertTime1.toString(); values[n][1] = null != map.get("orderType") ? map.get("orderType").toString() : ""; values[n][2] = null != map.get("type") ? map.get("type").toString() : ""; values[n][3] = null != map.get("userName") ? map.get("userName").toString() : ""; values[n][4] = null != map.get("userPhone") ? map.get("userPhone").toString() : ""; values[n][5] = null != map.get("orderPayMoney") ? map.get("orderPayMoney").toString() : ""; values[n][6] = null != map.get("orderRevenue") ? map.get("orderRevenue").toString() : ""; values[n][7] = null != map.get("taxiCardRevenue") ? map.get("taxiCardRevenue").toString() : ""; values[n][8] = null != map.get("overtimeDeduction") ? map.get("overtimeDeduction").toString() : ""; values[n][9] = null != map.get("complaintDeductionProceeds") ? map.get("complaintDeductionProceeds").toString() : ""; values[n][10] = null != map.get("other") ? map.get("other").toString() : ""; BigDecimal all = new BigDecimal(ToolUtil.isNotEmpty(map.get("orderRevenue")) ? map.get("orderRevenue").toString() : "0") .add(new BigDecimal(ToolUtil.isNotEmpty(map.get("taxiCardRevenue")) ? map.get("taxiCardRevenue").toString() : "0")) .add(new BigDecimal(ToolUtil.isNotEmpty(map.get("overtimeDeduction")) ? map.get("overtimeDeduction").toString() : "0")) .add(new BigDecimal(ToolUtil.isNotEmpty(map.get("complaintDeductionProceeds")) ? map.get("complaintDeductionProceeds").toString() : "0")) .add(new BigDecimal(ToolUtil.isNotEmpty(map.get("other")) ? map.get("other").toString() : "0")); values[n][11] = all.toPlainString(); n++; } return ExcelUtil.getHSSFWorkbookTime("收入明细汇总", title, values, null,insertTime); } @Override public Map summaryOfSpendingDetailsList(String insertTime, Integer orderType, Integer incomeType, String name, String phone, 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 maps = new HashMap<>(); List> list1 = this.baseMapper.summaryOfSpendingDetailsList1(ShiroKit.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, offset, limit); List> list2 = this.baseMapper.summaryOfSpendingDetailsList1(ShiroKit.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); BigDecimal orderRevenue = new BigDecimal("0"); BigDecimal activityAward = new BigDecimal("0"); BigDecimal other = new BigDecimal("0"); BigDecimal all = new BigDecimal("0"); for (Map map : list2) { orderRevenue = orderRevenue.add(new BigDecimal(null == map.get("orderRevenue") ? "0" : map.get("orderRevenue").toString())); activityAward = activityAward.add(new BigDecimal(null == map.get("activityAward") ? "0" : map.get("activityAward").toString())); other = other.add(new BigDecimal(null == map.get("other") ? "0" : map.get("other").toString())); all = all.add(new BigDecimal(null == map.get("all") ? "0" : map.get("all").toString())); } Map map = new HashMap<>(); map.put("insertTime", "合计"); map.put("orderRevenue", orderRevenue.toString()); map.put("activityAward", activityAward.toString()); map.put("other", other.toString()); map.put("all", all.toString()); list1.add(map); maps.put("rows", list1); System.out.println("支出明细" + list1); list1 = this.baseMapper.summaryOfSpendingDetailsList1(ShiroKit.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); maps.put("total", list1.size()); return maps; } @Override public HSSFWorkbook exportSummaryOfSpendingDetails(String insertTime, Integer orderType, Integer incomeType, String name, String phone) throws Exception { String startTime = ""; String endTime = ""; if (ToolUtil.isNotEmpty(insertTime)) { String[] split = insertTime.split(" - "); startTime = split[0]; endTime = split[1]; } List> list1 = this.baseMapper.summaryOfSpendingDetailsList1(ShiroKit.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); String[] title = new String[]{"时间", "订单类型", "收益类型", "司机名称", "司机手机号", "订单应支付金额", "平台奖励支出", "其他支出", "支出合计"}; String[][] values = new String[list1.size()][9]; int n = 0; for (int j = 0; j < list1.size(); j++) { Map map1 = list1.get(j); Object insertTime1 = map1.get("insertTime"); 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][5] = null != map1.get("orderRevenue") ? map1.get("orderRevenue").toString() : ""; values[n][6] = null != map1.get("activityAward") ? map1.get("activityAward").toString() : ""; values[n][7] = null != map1.get("other") ? map1.get("other").toString() : ""; values[n][8] = null != map1.get("all") ? map1.get("all").toString() : ""; n++; } return ExcelUtil.getHSSFWorkbookTime("支出明细汇总", title, values, null,insertTime); } @Override public void updateState(String s) { this.baseMapper.updateState(s); } @Override public Map saveIncome(Integer orderId, Integer orderType, Double payMoney) throws Exception { TCompany company = null; Integer orderNumber = 0; Integer driverId = null; JSONObject jsonObject = null; JSONArray rules = null; JSONArray time_rules = null; SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); String startTime = sdf1.format(new Date()) + " 00:00:00"; String endTime = sdf1.format(new Date()) + " 23:59:59"; Map map = new HashMap<>(); switch (orderType){ case 1: TOrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); driverId = orderPrivateCar.getDriverId(); company = companyService.selectById(orderPrivateCar.getCompanyId()); jsonObject = JSON.parseObject(company.getSpe()); rules = jsonObject.getJSONArray("rules"); time_rules = jsonObject.getJSONArray("time_rules"); //按天查询当天的订单量 //按时间段 if(time_rules.size() > 0){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (int i = 0; i < time_rules.size(); i++) { JSONArray jsonArray = time_rules.getJSONArray(i); JSONObject jsonObject2 = jsonArray.getJSONObject(0); String time = jsonObject2.getString("time"); if( ToolUtil.isNotEmpty(time)){ String[] split = time.split(" - "); Date start = sdf.parse(split[0] + " 00:00:00"); Date end = sdf.parse(split[1] + " 23:59:59"); if(System.currentTimeMillis() >= start.getTime() && System.currentTimeMillis() < end.getTime()){ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; break; } } } } orderNumber = orderPrivateCarService.selectCount(new EntityWrapper() .eq("driverId", orderPrivateCar.getDriverId()) .eq("isDelete", 1) .in("state", Arrays.asList(7, 8, 9)) .last(" and DATE_FORMAT(insertTime, '%Y-%m-%d %H:%i%m') between '" + startTime + "' and '" + endTime + "'") ); map.put("orderNumber", orderNumber); map.put("disposition", company.getSpe()); break; case 2: TOrderTaxi orderTaxi = orderTaxiService.selectById(orderId); driverId = orderTaxi.getDriverId(); company = companyService.selectById(orderTaxi.getCompanyId()); jsonObject = JSON.parseObject(company.getTaxi()); rules = jsonObject.getJSONArray("rules"); time_rules = jsonObject.getJSONArray("time_rules"); //按天查询当天的订单量 //按时间段 if(time_rules.size() > 0){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (int i = 0; i < time_rules.size(); i++) { JSONArray jsonArray = time_rules.getJSONArray(i); JSONObject jsonObject2 = jsonArray.getJSONObject(0); String time = jsonObject2.getString("time"); if(ToolUtil.isNotEmpty(time)){ String[] split = time.split(" - "); Date start = sdf.parse(split[0] + " 00:00:00"); Date end = sdf.parse(split[1] + " 23:59:59"); if(System.currentTimeMillis() >= start.getTime() && System.currentTimeMillis() < end.getTime()){ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; break; } } } } orderNumber = orderTaxiService.selectCount(new EntityWrapper() .eq("driverId", orderTaxi.getDriverId()) .eq("isDelete", 1) .in("state", Arrays.asList(7, 8, 9)) .last(" and DATE_FORMAT(insertTime, '%Y-%m-%d %H:%i%m') between '" + startTime + "' and '" + endTime + "'") ); map.put("orderNumber", orderNumber); map.put("disposition", company.getTaxi()); break; case 3: TOrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId); TLine line = lineService.selectById(orderCrossCity.getLineId()); driverId = orderCrossCity.getDriverId(); jsonObject = JSON.parseObject(line.getOutSetting()); rules = jsonObject.getJSONArray("rules"); time_rules = jsonObject.getJSONArray("time_rules"); //按天查询当天的订单量 //按时间段 if(time_rules.size() > 0){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (int i = 0; i < time_rules.size(); i++) { JSONArray jsonArray = time_rules.getJSONArray(i); JSONObject jsonObject2 = jsonArray.getJSONObject(0); String time = jsonObject2.getString("time"); if(ToolUtil.isNotEmpty(time)){ String[] split = time.split(" - "); Date start = sdf.parse(split[0] + " 00:00:00"); Date end = sdf.parse(split[1] + " 23:59:59"); if(System.currentTimeMillis() >= start.getTime() && System.currentTimeMillis() < end.getTime()){ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; break; } } } } orderNumber = orderCrossCityService.selectCount(new EntityWrapper() .eq("driverId", orderCrossCity.getDriverId()) .eq("isDelete", 1) .in("state", Arrays.asList(8, 9)) .last(" and DATE_FORMAT(insertTime, '%Y-%m-%d %H:%i%m') between '" + startTime + "' and '" + endTime + "'") ); map.put("orderNumber", orderNumber); map.put("disposition", line.getOutSetting()); break; case 4: TOrderLogistics orderLogistics = orderLogisticsService.selectById(orderId); driverId = orderLogistics.getDriverId(); company = companyService.selectById(orderLogistics.getCompanyId()); jsonObject = JSON.parseObject(company.getSameLogistics()); rules = jsonObject.getJSONArray("rules"); time_rules = jsonObject.getJSONArray("time_rules"); //按天查询当天的订单量 //按时间段 if(time_rules.size() > 0){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (int i = 0; i < time_rules.size(); i++) { JSONArray jsonArray = time_rules.getJSONArray(i); JSONObject jsonObject2 = jsonArray.getJSONObject(0); String time = jsonObject2.getString("time"); if(ToolUtil.isNotEmpty(time)){ String[] split = time.split(" - "); Date start = sdf.parse(split[0] + " 00:00:00"); Date end = sdf.parse(split[1] + " 23:59:59"); if(System.currentTimeMillis() >= start.getTime() && System.currentTimeMillis() < end.getTime()){ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; break; } } } } orderNumber = orderLogisticsService.selectCount(new EntityWrapper() .eq("driverId", orderLogistics.getDriverId()) .eq("type", 4) .eq("isDelete", 1) .in("state", Arrays.asList(6, 9)) .last(" and DATE_FORMAT(insertTime, '%Y-%m-%d %H:%i%m') between '" + startTime + "' and '" + endTime + "'") ); map.put("orderNumber", orderNumber); map.put("disposition", company.getSameLogistics()); break; case 5: TOrderLogistics orderLogistics1 = orderLogisticsService.selectById(orderId); driverId = orderLogistics1.getDriverId(); company = companyService.selectById(orderLogistics1.getCompanyId()); jsonObject = JSON.parseObject(company.getCrossLogistics()); rules = jsonObject.getJSONArray("rules"); time_rules = jsonObject.getJSONArray("time_rules"); //按天查询当天的订单量 //按时间段 if(time_rules.size() > 0){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (int i = 0; i < time_rules.size(); i++) { JSONArray jsonArray = time_rules.getJSONArray(i); JSONObject jsonObject2 = jsonArray.getJSONObject(0); String time = jsonObject2.getString("time"); if(ToolUtil.isNotEmpty(time)){ String[] split = time.split(" - "); Date start = sdf.parse(split[0] + " 00:00:00"); Date end = sdf.parse(split[1] + " 23:59:59"); if(System.currentTimeMillis() >= start.getTime() && System.currentTimeMillis() < end.getTime()){ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; break; } } } } orderNumber = orderLogisticsService.selectCount(new EntityWrapper() .eq("driverId", orderLogistics1.getDriverId()) .eq("type", 5) .eq("isDelete", 1) .in("state", Arrays.asList(6, 9)) .last(" and DATE_FORMAT(insertTime, '%Y-%m-%d %H:%i%m') between '" + startTime + "' and '" + endTime + "'") ); map.put("orderNumber", orderNumber); map.put("disposition", company.getCrossLogistics()); break; case 7: TOrderCall orderCall = orderCallService.selectById(orderId); driverId = orderCall.getDriverId(); company = companyService.selectById(orderCall.getCompanyId()); jsonObject = JSON.parseObject(company.getOnCall()); rules = jsonObject.getJSONArray("rules"); time_rules = jsonObject.getJSONArray("time_rules"); //按天查询当天的订单量 //按时间段 if(time_rules.size() > 0){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (int i = 0; i < time_rules.size(); i++) { JSONArray jsonArray = time_rules.getJSONArray(i); JSONObject jsonObject2 = jsonArray.getJSONObject(0); String time = jsonObject2.getString("time"); if(ToolUtil.isNotEmpty(time)){ String[] split = time.split(" - "); Date start = sdf.parse(split[0] + " 00:00:00"); Date end = sdf.parse(split[1] + " 23:59:59"); if(System.currentTimeMillis() >= start.getTime() && System.currentTimeMillis() < end.getTime()){ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; break; } } } } orderNumber = orderCallService.selectCount(new EntityWrapper() .eq("driverId", orderCall.getDriverId()) .eq("isDelete", 1) .in("state", Arrays.asList(7, 8, 9)) .last(" and DATE_FORMAT(insertTime, '%Y-%m-%d %H:%i%m') between '" + startTime + "' and '" + endTime + "'") ); map.put("orderNumber", orderNumber); map.put("disposition", company.getOnCall()); break; } BigDecimal money = BigDecimal.ZERO; //{"rules":[],"time_rules":[[{"order":"1,3","percent":"20","MemberCoins":"1.1,2"},{"order":"3,10","percent":"40","MemberCoins":"2,5"}]]} //按天 if(rules.size() > 0){ for (int i = 0; i < rules.size(); i++) { JSONObject jsonObject1 = rules.getJSONObject(i); money = getDriverMoney(orderNumber, payMoney, driverId, orderId, orderType, jsonObject1); if(money.compareTo(BigDecimal.ZERO) >= 0){ break; } } } //按时间段 if(time_rules.size() > 0){ boolean b = false; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (int i = 0; i < time_rules.size(); i++) { JSONArray jsonArray = time_rules.getJSONArray(i); JSONObject jsonObject2 = jsonArray.getJSONObject(0); String time = jsonObject2.getString("time"); if(!b && ToolUtil.isNotEmpty(time)){ String[] split = time.split(" - "); Date start = sdf.parse(split[0] + " 00:00:00"); Date end = sdf.parse(split[1] + " 23:59:59"); if(System.currentTimeMillis() >= start.getTime() && System.currentTimeMillis() < end.getTime()){ for (int j = 0; j < jsonArray.size(); j++) { JSONObject jsonObject1 = jsonArray.getJSONObject(j); money = getDriverMoney(orderNumber, payMoney, driverId, orderId, orderType, jsonObject1); if(money.compareTo(BigDecimal.ZERO) < 0){ continue; } b = true; break; } } } if(b){ break; } } if(!b){ JSONArray jsonArray = time_rules.getJSONArray(0); for (int j = 0; j < jsonArray.size(); j++) { JSONObject jsonObject1 = jsonArray.getJSONObject(j); money = getDriverMoney(orderNumber, payMoney, driverId, orderId, orderType, jsonObject1); if(money.compareTo(BigDecimal.ZERO) < 0){ continue; } break; } } } if(money.compareTo(BigDecimal.ZERO) > 0){ TDriver driver = driverService.selectById(driverId); driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(money).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(money).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driver.setBalance((null != driver.getBalance() ? driver.getBalance() : BigDecimal.ZERO).add(money).setScale(2, BigDecimal.ROUND_HALF_EVEN)); driverService.updateById(driver); } return map; } public BigDecimal getDriverMoney(Integer orderNumber, Double payMoney, Integer driverId, Integer orderId, Integer orderType, JSONObject jsonObject1) throws Exception{ String order = jsonObject1.getString("order"); Double percent = jsonObject1.getDouble("percent"); String MemberCoins = jsonObject1.getString("MemberCoins"); String[] split = order.split(","); if(Integer.valueOf(split[0]).compareTo(orderNumber) <= 0 && Integer.valueOf(split[1]).compareTo(orderNumber) > 0){ String[] split1 = MemberCoins.split(","); Double d = Double.valueOf(split1[0]); Double g = Double.valueOf(split1[1]); //平台抽成金额 BigDecimal multiply1 = new BigDecimal(payMoney).multiply(new BigDecimal(percent / 100)); //抽成金额小于最低金额,司机收入为0 if(multiply1.compareTo(new BigDecimal(d)) < 0){ saveData(1, 1, 2, orderId, orderType, d); //司机收入 BigDecimal subtract = new BigDecimal(payMoney).subtract(new BigDecimal(d)); if(subtract.compareTo(BigDecimal.ZERO) > 0){ saveData(2, driverId, 2, orderId, orderType, subtract.doubleValue()); return subtract; } return new BigDecimal(0); } if(multiply1.compareTo(new BigDecimal(d)) >= 0 && multiply1.compareTo(new BigDecimal(g)) < 0){ //司机收入 BigDecimal subtract = new BigDecimal(payMoney).subtract(multiply1); saveData(2, driverId, 2, orderId, orderType, subtract.doubleValue()); saveData(1, 1, 2, orderId, orderType, multiply1.doubleValue()); return subtract; } if(multiply1.compareTo(new BigDecimal(g)) >= 0){ //司机收入 BigDecimal subtract = new BigDecimal(payMoney).subtract(new BigDecimal(g)); saveData(2, driverId, 2, orderId, orderType, subtract.doubleValue()); saveData(1, 1, 2, orderId, orderType, g); return subtract; } } return new BigDecimal(-1); } }