| | |
| | | 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.beetl.ShiroExtUtil; |
| | | 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 org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private ITOrderCallService orderCallService; |
| | | |
| | | |
| | | @Autowired |
| | | private ITUserService userService; |
| | | |
| | | |
| | | @Autowired |
| | | private ITOrderCharteredCarService orderCharteredCarService; |
| | | |
| | | |
| | | @Autowired |
| | | private ITDriverService driverService; |
| | | @Autowired |
| | | private ShiroExtUtil shiroExtUtil; |
| | | |
| | | @Autowired |
| | | private ITCompanyService companyService; |
| | | |
| | | @Autowired |
| | | private ITLineService lineService; |
| | | |
| | | |
| | | /** |
| | | * 添加数据 |
| | | * @param userType |
| | |
| | | Map<String, Object> maps = new HashMap<>(); |
| | | |
| | | List<Map<String, Object>> datas = new ArrayList<>(); |
| | | List<Map<String, Object>> list2 = this.baseMapper.summaryOfIncomeDetailsListGroupSum1(1, ShiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, offset, limit); |
| | | List<Map<String, Object>> list2 = this.baseMapper.summaryOfIncomeDetailsListGroupSum1(1, shiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, offset, limit); |
| | | for (Map<String, Object> income : list2) { |
| | | Double orderMoney = Double.valueOf(null != income.get("orderMoney") ? income.get("orderMoney").toString() : "0"); |
| | | Double payMoney = Double.valueOf(income.get("payMoney").toString()); |
| | |
| | | } |
| | | |
| | | List<Map<String, Object>> datas1 = new ArrayList<>(); |
| | | list2 = this.baseMapper.summaryOfIncomeDetailsListGroupSum1(1, ShiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); |
| | | list2 = this.baseMapper.summaryOfIncomeDetailsListGroupSum1(1, shiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); |
| | | for (Map<String, Object> income : list2) { |
| | | Double orderMoney = Double.valueOf(null != income.get("orderMoney") ? income.get("orderMoney").toString() : "0"); |
| | | Double payMoney = Double.valueOf(income.get("payMoney").toString()); |
| | |
| | | public HSSFWorkbook exportSummaryOfIncomeDetails(String insertTime, Integer orderType, Integer incomeType, String name, String phone) throws Exception { |
| | | String startTime = ""; |
| | | String endTime = ""; |
| | | if(ToolUtil.isNotEmpty(insertTime)){ |
| | | if (ToolUtil.isNotEmpty(insertTime)) { |
| | | String[] split = insertTime.split(" - "); |
| | | startTime = split[0]; |
| | | endTime = split[1]; |
| | | } |
| | | |
| | | List<Map<String, Object>> list = this.baseMapper.summaryOfIncomeDetailsListGroupSum1(1, ShiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); |
| | | List<Map<String, Object>> list = this.baseMapper.summaryOfIncomeDetailsListGroupSum1(1, shiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); |
| | | List<Map<String, Object>> datas = new ArrayList<>(); |
| | | Integer num = 0; |
| | | |
| | | |
| | | for (Map<String, Object> income : list) { |
| | | Double orderMoney = Double.valueOf(null != income.get("orderMoney") ? income.get("orderMoney").toString() : "0"); |
| | | Double payMoney = Double.valueOf(income.get("payMoney").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 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<String, Object> maps = new HashMap<>(); |
| | | |
| | | List<Map<String, Object>> list1 = this.baseMapper.summaryOfSpendingDetailsList1(ShiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, offset, limit); |
| | | List<Map<String, Object>> list2 = this.baseMapper.summaryOfSpendingDetailsList1(ShiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); |
| | | List<Map<String, Object>> list1 = this.baseMapper.summaryOfSpendingDetailsList1(shiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, offset, limit); |
| | | List<Map<String, Object>> list2 = this.baseMapper.summaryOfSpendingDetailsList1(shiroExtUtil.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"); |
| | |
| | | map.put("all", all.toString()); |
| | | list1.add(map); |
| | | maps.put("rows", list1); |
| | | System.out.println("支出明细"+list1); |
| | | System.out.println("支出明细" + list1); |
| | | |
| | | list1 = this.baseMapper.summaryOfSpendingDetailsList1(ShiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); |
| | | list1 = this.baseMapper.summaryOfSpendingDetailsList1(shiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); |
| | | maps.put("total", list1.size()); |
| | | return maps; |
| | | } |
| | |
| | | public HSSFWorkbook exportSummaryOfSpendingDetails(String insertTime, Integer orderType, Integer incomeType, String name, String phone) throws Exception { |
| | | String startTime = ""; |
| | | String endTime = ""; |
| | | if(ToolUtil.isNotEmpty(insertTime)){ |
| | | if (ToolUtil.isNotEmpty(insertTime)) { |
| | | String[] split = insertTime.split(" - "); |
| | | startTime = split[0]; |
| | | endTime = split[1]; |
| | | } |
| | | |
| | | List<Map<String, Object>> list1 = this.baseMapper.summaryOfSpendingDetailsList1(ShiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); |
| | | List<Map<String, Object>> list1 = this.baseMapper.summaryOfSpendingDetailsList1(shiroExtUtil.getUser().getObjectId(), startTime, endTime, orderType, incomeType, name, phone, null, null); |
| | | String[] title = new String[]{"时间", "订单类型", "收益类型", "司机名称", "司机手机号", "订单应支付金额", "平台奖励支出", "其他支出", "支出合计"}; |
| | | String[][] values = new String[list1.size()][9]; |
| | | int n = 0; |
| | |
| | | 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())){ |
| | | if (null != map1.get("orderType")) { |
| | | switch (Integer.valueOf(map1.get("orderType").toString())) { |
| | | case 1: |
| | | values[n][1] = "快车"; |
| | | break; |
| | |
| | | public void updateState(String s) { |
| | | this.baseMapper.updateState(s); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> 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<String, Object> 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<TOrderPrivateCar>() |
| | | .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<TOrderTaxi>() |
| | | .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<TOrderCrossCity>() |
| | | .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<TOrderLogistics>() |
| | | .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<TOrderLogistics>() |
| | | .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<TOrderCall>() |
| | | .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); |
| | | } |
| | | |
| | | } |