package com.stylefeng.guns.modular.system.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; 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.TDriverMapper; import com.stylefeng.guns.modular.system.model.TDriver; import com.stylefeng.guns.modular.system.model.TDriverLine; import com.stylefeng.guns.modular.system.model.TLine; import com.stylefeng.guns.modular.system.service.ITDriverLineService; import com.stylefeng.guns.modular.system.service.ITDriverService; import com.stylefeng.guns.modular.system.service.ITLineService; 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.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 司机表 服务实现类 *

* * @author 吕雪 * @since 2020-06-04 */ @Service public class TDriverServiceImpl extends ServiceImpl implements ITDriverService { @Autowired private ITDriverLineService iTDriverLineService; @Autowired private ITLineService iTLineService; @Override public List> getAuthDriverList(Page> page, String beginTime, String endTime, String companyName, String phone, String account, Integer addType, Integer authState, Integer companyId) { return this.baseMapper.getAuthDriverList(page, beginTime, endTime, companyName, phone, account, addType, authState, companyId); } @Override public Map getDriverById(Integer driverId) { return this.baseMapper.getDriverById(driverId); } @Override public List> getDriverList(Page> page, Integer roleType,Integer nowUserId,String beginTime, String endTime, String companyName, String phone, String name, Integer addType, Integer authState) { List> driverList = this.baseMapper.getDriverList(page, roleType, nowUserId, beginTime, endTime, companyName, phone, name, addType, authState); for (Map map : driverList) { String id = map.get("id").toString(); String lineStr = ""; List driverLineList = iTDriverLineService.selectList(new EntityWrapper().eq("driverId", id)); if(!driverLineList.isEmpty()){ List collect = driverLineList.stream().map(TDriverLine::getLineId).collect(Collectors.toList()); List tLines = iTLineService.selectBatchIds(collect); lineStr = tLines.stream().map(TLine::getName).collect(Collectors.joining("
")); } map.put("lineStr", lineStr); } return driverList; } @Override public String getUseCarIdStr(Integer carId) { return this.baseMapper.getUseCarIdStr(carId); } @Override public List> getCanSelectCarList(Page> page, Integer roleType, Integer nowUserId, String carIdStr, String carLicensePlate, String brandName, String modelName, String color, String serverStr) { return this.baseMapper.getCanSelectCarList(page, roleType, nowUserId, carIdStr, carLicensePlate, brandName, modelName, color, serverStr); } @Override public void updateCompanyDriverState(Integer authState, Integer companyId) { this.baseMapper.updateCompanyDriverState(authState, companyId); } @Override public void updateFranchiseeDriverState(Integer authState, Integer franchiseeId) { this.baseMapper.updateFranchiseeDriverState(authState, franchiseeId); } @Override public List> getDriverListNoPage(Integer roleType, Integer nowUserId) { return this.baseMapper.getDriverListNoPage(roleType, nowUserId); } @Override public List> orderRevenueDetailsList(Page> page, String driverName, String driverPhone, String createTime, Integer orderType) { String startTime = ""; String endTime = ""; if (ToolUtil.isNotEmpty(createTime)) { startTime = createTime.split(" - ")[0]; endTime = createTime.split(" - ")[1]; } List> list = this.baseMapper.orderRevenueDetailsList(page, driverName, driverPhone, startTime, endTime, ShiroKit.getUser().getObjectId(), orderType); page = new Page<>(0, 100000000); List> list1 = this.baseMapper.orderRevenueDetailsList(page, driverName, driverPhone, startTime, endTime, ShiroKit.getUser().getObjectId(), orderType); BigDecimal orderMoney = new BigDecimal("0"); BigDecimal money = new BigDecimal("0"); BigDecimal payMoney = new BigDecimal("0"); for (Map map : list1) { orderMoney = orderMoney.add(new BigDecimal(null == map.get("orderMoney") ? "0" : map.get("orderMoney").toString())); money = money.add(new BigDecimal(null == map.get("money") ? "0" : map.get("money").toString())); payMoney = payMoney.add(new BigDecimal(null == map.get("payMoney") ? "0" : map.get("payMoney").toString())); } Map map = new HashMap<>(); map.put("insertTime", "合计"); map.put("orderMoney", orderMoney.toString()); map.put("money", money.toString()); map.put("payMoney", payMoney.toString()); list.add(map); return list; } @Override public HSSFWorkbook exportOrderRevenueDetails(String driverName, String driverPhone, String createTime, Integer orderType) throws Exception { String startTime = ""; String endTime = ""; if (ToolUtil.isNotEmpty(createTime)) { startTime = createTime.split(" - ")[0]; endTime = createTime.split(" - ")[1]; } Page> page = new Page<>(0, 100000000); List> list = this.baseMapper.orderRevenueDetailsList(page, driverName, driverPhone, startTime, endTime, ShiroKit.getUser().getObjectId(), orderType); String[] title = new String[]{"交易时间", "收益类型", "订单类型", "订单ID", "下单用户昵称", "下单用户手机", "乘车用户姓名" , "乘车用户手机", "起点", "终点", "司机名称", "司机手机号", "接单车辆", "支付类型", "订单原始金额", "平台抽佣金额", "司机订单收益支出"}; String[][] values = new String[list.size()][17]; for (int i = 0; i < list.size(); i++) { Map d = list.get(i); values[i][0] = null != d.get("insertTime") ? d.get("insertTime").toString() : ""; values[i][1] = d.get("incomeType") == null ? "" : d.get("incomeType").toString().equals("1") ? "活动收入" : d.get("incomeType").toString().equals("2") ? "跑单收入" : d.get("incomeType").toString().equals("3") ? "取消订单收入" : d.get("incomeType").toString().equals("4") ? "改派订单收入" : d.get("incomeType").toString().equals("6") ? "感谢费" : d.get("incomeType").toString().equals("7")?"超时扣款": d.get("incomeType").toString().equals("8")?"投诉扣款": d.get("incomeType").toString().equals("9")?"小件物流超时退款":""; values[i][2]=null != d.get("orderType") ? d.get("orderType").toString().equals("1")?"快车": d.get("orderType").toString().equals("2")?"出租车": d.get("orderType").toString().equals("3")?"城际": d.get("orderType").toString().equals("4")?"同城物流":"跨城物流" : ""; values[i][3]=d.get("orderNum") == null ? "" : d.get("orderNum").toString(); values[i][4]=null != d.get("nickName") ? d.get("nickName").toString() : ""; values[i][5]=null != d.get("userPhone") ? d.get("userPhone").toString() : ""; values[i][6]=null != d.get("passengers") ? d.get("passengers").toString() : ""; values[i][7]=null != d.get("passengersPhone") ? d.get("passengersPhone").toString() : ""; values[i][8]=null != d.get("startAddress") ? d.get("startAddress").toString() : ""; values[i][9]=null != d.get("endAddress") ? d.get("endAddress").toString() : ""; values[i][10]=null != d.get("name") ? d.get("name").toString() : ""; values[i][11]=null != d.get("driverPhone") ? d.get("driverPhone").toString() : ""; values[i][12]=null != d.get("carLicensePlate") ? d.get("carLicensePlate").toString() : ""; values[i][13]=null != d.get("payTypeName") ? d.get("payTypeName").toString() : ""; values[i][14]=null != d.get("orderMoney") ? d.get("orderMoney").toString() : ""; values[i][15]= new BigDecimal((null != d.get("orderMoney") ? Double.valueOf(d.get("orderMoney").toString()) : 0D) - (d.get("money")==null?0d:Double.valueOf(d.get("money").toString()))).setScale(2, BigDecimal.ROUND_HALF_EVEN).toPlainString(); values[i][16]=null != d.get("money") ? d.get("money").toString() : ""; } return ExcelUtil.getHSSFWorkbook("司机订单收益明细", title, values, null); } @Override public Map otherSpendingDetailList(String driverName, String driverPhone, String createTime, Integer offset, Integer limit) { String startTime = ""; String endTime = ""; if(ToolUtil.isNotEmpty(createTime)){ startTime = createTime.split(" - ")[0]; endTime = createTime.split(" - ")[1]; } List> list = this.baseMapper.otherSpendingDetailList(driverName, driverPhone, startTime, endTime, offset, limit); Integer integer = this.baseMapper.otherSpendingDetailListCount(driverName, driverPhone, startTime, endTime); Map maps = this.baseMapper.otherSpendingDetailListSum(driverName, driverPhone, startTime, endTime); list.add(maps); Map map = new HashMap<>(); map.put("rows", list); map.put("total", integer); return map; } @Override public HSSFWorkbook exportOtherSpendingDetailList(String driverName, String driverPhone, String createTime) throws Exception { String startTime = ""; String endTime = ""; if(ToolUtil.isNotEmpty(createTime)){ startTime = createTime.split(" - ")[0]; endTime = createTime.split(" - ")[1]; } List> list = this.baseMapper.otherSpendingDetailList(driverName, driverPhone, startTime, endTime, null, null); String[] title = new String[]{"时间", "司机名称", "手机号", "订单类型", "感谢费"}; String[][] values = new String[list.size()][5]; for (int i = 0; i < list.size(); i++) { Map map = list.get(i); values[i][0] = null != map.get("travelTime") ? map.get("travelTime").toString() : ""; values[i][1] = null != map.get("name") ? map.get("name").toString() : ""; values[i][2] = null != map.get("phone") ? map.get("phone").toString() : ""; if(null != map.get("type")){ switch (Integer.valueOf(map.get("type").toString())){ case 1: values[i][3] = "快车"; break; case 2: values[i][3] = "出租车"; break; case 3: values[i][3] = "跨城出行"; break; case 4: values[i][3] = "同城小件物流"; break; case 5: values[i][3] = "跨城小件物流"; break; case 6: values[i][3] = "包车出行"; break; case 7: values[i][3] = "95128"; break; } } values[i][4] = null != map.get("thankYouFee") ? map.get("thankYouFee").toString() : ""; } return ExcelUtil.getHSSFWorkbook("平台其他支出明细", title, values, null); } @Override public Double getAllBalance(String driverName, String driverPhone, Integer type) throws Exception { return this.baseMapper.getAllBalance(driverName, driverPhone, type); } }