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.modular.system.dao.OrderCancelMapper; import com.stylefeng.guns.modular.system.dao.TOrderTaxiMapper; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.IIncomeService; import com.stylefeng.guns.modular.system.service.ITCompanyService; import com.stylefeng.guns.modular.system.service.ITOrderTaxiService; import com.stylefeng.guns.modular.system.service.ITReassignService; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; /** *

* 订单-出租车 服务实现类 *

* * @author 吕雪 * @since 2020-06-08 */ @Service public class TOrderTaxiServiceImpl extends ServiceImpl implements ITOrderTaxiService { @Resource private OrderCancelMapper orderCancelMapper; @Autowired private ITReassignService reassignService; @Autowired private ITCompanyService companyService; @Autowired private IIncomeService incomeService; @Override public List> getTaxiOrderList(Page> page, String beginTime, String endTime, Integer roleType, Integer nowUserId, String orderNum, Integer orderSource, String userName, String userPhone, String passengers, String passengersPhone, String driver, Integer state,Integer abnormal, Integer promotion, String promotionUser,Integer abnormalStatus, String travelId) { List> taxiOrderList = this.baseMapper.getTaxiOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state, abnormal, promotion, promotionUser, abnormalStatus, travelId); for (Map map : taxiOrderList) { if(null != map.get("companyId")){ TCompany company = companyService.selectById(map.get("companyId").toString()); if(company!=null){ map.put("companyName", company.getName()); } } } return taxiOrderList; } @Override public List> getTaxiOrderListExport(Page> page, String beginTime, String endTime, Integer roleType, Integer nowUserId, String orderNum, Integer orderSource, String userName, String userPhone, String passengers, String passengersPhone, String driver, Integer state,Integer abnormal, Integer promotion, String promotionUser,Integer abnormalStatus, String travelId) { List> taxiOrderListExport = this.baseMapper.getTaxiOrderListExport(beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state, abnormal, promotion, promotionUser, abnormalStatus, travelId); for (Map map : taxiOrderListExport) { if(null != map.get("companyId")){ TCompany company = companyService.selectById(map.get("companyId").toString()); if(company!=null){ map.put("companyName", company.getName()); } } } return taxiOrderListExport; } @Override public Map getTaxiOrderDetailById(Integer orderId) { return this.baseMapper.getTaxiOrderDetailById(orderId); } @Override public List> getCanSelectTaxiDriverList(Page> page,Integer companyId, String name, String phone) { return this.baseMapper.getCanSelectTaxiDriverList(page,companyId, name, phone); } @Override public Integer getAllOrderNum(Integer companyId, String beginTime, String endTime) { return this.baseMapper.getAllOrderNum(companyId, beginTime, endTime); } @Override public Double getAllTradeMoney(Integer companyId, String beginTime, String endTime) { return this.baseMapper.getAllTradeMoney(companyId, beginTime, endTime); } @Override public Double getAllIncomeMoney(Integer companyId, String beginTime, String endTime) { return this.baseMapper.getAllIncomeMoney(companyId, beginTime, endTime); } @Override public List> getOrderList(Page> page, String beginTime, String endTime, String userId, Integer type, String payType,Integer companyId) { return this.baseMapper.getOrderList(page,beginTime,endTime,userId,type,payType,companyId); } @Override public List> getOrderListEx(String beginTime, String endTime, String userId, Integer type, String payType,Integer companyId) { return this.baseMapper.getOrderListEx(beginTime,endTime,userId,type,payType,companyId); } @Override public List> getIncomeOrderList(Page> page, String beginTime, String endTime, String phone, String name, Integer state, Integer type,Integer companyId, Integer income, Integer payType) { List> incomeOrderList = this.baseMapper.getIncomeOrderList(page, beginTime, endTime, phone, name, state, type, companyId, income, payType); for (Map map : incomeOrderList) { if(null != map.get("payType")){ switch (Integer.valueOf(map.get("payType").toString())){ case 1: map.put("payTypeName", "微信"); break; case 2: map.put("payTypeName", "支付宝"); break; case 3: map.put("payTypeName", "余额支付"); break; case 4: map.put("payTypeName","云闪付"); break; case 5: map.put("payTypeName","扫码下单"); break; } } Integer incomeType = Integer.valueOf(map.get("incomeType").toString()); Integer id = null != map.get("id") ? Integer.valueOf(map.get("id").toString()) : null; if(null == id){ continue; } Integer orderType = Integer.valueOf(map.get("orderType").toString()); Double orderMoney = Double.valueOf(null == map.get("orderMoney") ? "0" : map.get("orderMoney").toString()); Integer companyId1 = Integer.valueOf(map.get("companyId").toString()); Income income1 = incomeService.selectOne(new EntityWrapper().eq("userType", 2).eq("type", 2) .eq("incomeId", id).eq("orderType", orderType)); if(null != income1){ map.put("money", income1.getMoney()); } // if(orderType == 3){//跨城计算 // //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。 // //司机收入:10 * 0.8 = 8 // //平台收入:7 - 8 = -1 // Integer lineId = Integer.valueOf(map.get("lineId").toString()); // TLine line = lineService.selectById(lineId); // Double speMoney = Double.valueOf(line.getRakeRate()); // BigDecimal c = new BigDecimal(orderMoney).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);//企业收入 // BigDecimal d = new BigDecimal(orderMoney).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN);//司机收入 // map.put("money", c); // } // // if(orderType == 2){ // TCompany company = companyService.selectById(companyId1); // Double speMoney = company.getTaxiMoney().doubleValue(); // BigDecimal d = null;//企业收入 // BigDecimal c = null;//司机收入 // // TODO: 2022/3/19 抽成按照订单金额计算,优先保证司机的收入,用户支付金额不够,则在平台收入中补贴司机收入 // //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。 // //司机收入:10 * 0.8 = 8 // //平台收入:7 - 8 = -1 // if(company.getIsTaxiFixedOrProportional() == 2){//固定 // d = new BigDecimal(speMoney.compareTo(orderMoney) > 0 ? orderMoney : speMoney); // c = speMoney.compareTo(orderMoney) > 0 ? new BigDecimal(0) : new BigDecimal(orderMoney).subtract(d);//只有出行金额参与抽成,其余归属司机 // } // if(company.getIsTaxiFixedOrProportional() == 1){//比例 // c = new BigDecimal(orderMoney).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN); // d = new BigDecimal(orderMoney).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN); // } // map.put("money", c); // } // // if(orderType == 1){ // TCompany company = companyService.selectById(companyId1); // Double speMoney = company.getSpeMoney().doubleValue(); // BigDecimal d = null;//企业收入 // BigDecimal c = null;//司机收入 // // TODO: 2022/3/19 抽成按照订单金额计算,优先保证司机的收入,用户支付金额不够,则在平台收入中补贴司机收入 // //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。 // //司机收入:10 * 0.8 = 8 // //平台收入:7 - 8 = -1 // if(company.getIsSpeFixedOrProportional() == 2){//固定 // d = new BigDecimal(speMoney.compareTo(orderMoney) > 0 ? orderMoney : speMoney); // c = speMoney.compareTo(orderMoney) > 0 ? new BigDecimal(0) : new BigDecimal(orderMoney).subtract(d);//只有出行金额参与抽成,其余归属司机 // } // if(company.getIsSpeFixedOrProportional() == 1){//比例 // c = new BigDecimal(orderMoney).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN); // d = new BigDecimal(orderMoney).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN); // } // map.put("money", c); // } // // if(orderType == 4){ // TCompany company = companyService.selectById(companyId1); // Double speMoney = company.getSameLogisticsMoney().doubleValue(); // BigDecimal d = null;//企业收入 // BigDecimal c = null;//司机收入 // // TODO: 2022/3/19 抽成按照订单金额计算,优先保证司机的收入,用户支付金额不够,则在平台收入中补贴司机收入 // //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。 // //司机收入:10 * 0.8 = 8 // //平台收入:7 - 8 = -1 // if(company.getIsSameLogisticsFixedOrProportional() == 2){//固定 // d = new BigDecimal(speMoney.compareTo(orderMoney) > 0 ? orderMoney : speMoney); // c = speMoney.compareTo(orderMoney) > 0 ? new BigDecimal(0) : new BigDecimal(orderMoney).subtract(d);//只有出行金额参与抽成,其余归属司机 // } // if(company.getIsSameLogisticsFixedOrProportional() == 1){//比例 // c = new BigDecimal(orderMoney).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN); // d = new BigDecimal(orderMoney).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN); // } // map.put("money", c); // } // if(orderType == 5){ // TCompany company = companyService.selectById(companyId1); // // Double speMoney = company.getCrossLogisticsMoney().doubleValue(); // BigDecimal d = null;//企业收入 // BigDecimal c = null;//司机收入 // // TODO: 2022/3/19 抽成按照订单金额计算,优先保证司机的收入,用户支付金额不够,则在平台收入中补贴司机收入 // //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。 // //司机收入:10 * 0.8 = 8 // //平台收入:7 - 8 = -1 // if(company.getIsCrossLogisticsFixedOrProportional() == 2){//固定 // d = new BigDecimal(speMoney.compareTo(orderMoney) > 0 ? orderMoney : speMoney); // c = speMoney.compareTo(orderMoney) > 0 ? new BigDecimal(0) : new BigDecimal(orderMoney).subtract(d);//只有出行金额参与抽成,其余归属司机 // } // if(company.getIsCrossLogisticsFixedOrProportional() == 1){//比例 // c = new BigDecimal(orderMoney).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN); // d = new BigDecimal(orderMoney).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN); // } // map.put("money", c); // } if(incomeType == 3){ OrderCancel query = orderCancelMapper.query(id, orderType, null, null, 2); if(null != query){ switch (query.getPayType()){ case 1: map.put("payTypeName", "微信"); break; case 2: map.put("payTypeName", "支付宝"); break; case 3: map.put("payTypeName", "余额支付"); break; case 4: map.put("payTypeName", "云闪付"); break; } map.put("other", query.getMoney()); } } if(incomeType == 4){ Integer driverId = Integer.valueOf(map.get("driverId").toString()); TReassign tReassign = reassignService.selectOne(new EntityWrapper().eq("orderType", orderType).eq("orderId", id) .in("state", Arrays.asList(2, 3, 4, 5)).last(" and (originalDriverId = " + driverId + " or nowDriverId = " + driverId + ")")); if(null != tReassign){ switch (Integer.valueOf(map.get("payTypes").toString())){ case 1: map.put("payTypeName", "微信"); break; case 2: map.put("payTypeName", "支付宝"); break; case 3: map.put("payTypeName", "余额支付"); break; case 4: map.put("payTypeName", "云闪付"); break; } map.put("other", tReassign.getMoney()); } } } return incomeOrderList; } @Override public List> getIncomeOrderListEx(String beginTime, String endTime, String phone, String name, Integer state, Integer type,Integer companyId, Integer income, Integer payType) { List> incomeOrderListEx = this.baseMapper.getIncomeOrderListEx(beginTime, endTime, phone, name, state, type, companyId, income, payType); for (Map map : incomeOrderListEx) { if(null != map.get("payType")){ switch (Integer.valueOf(map.get("payType").toString())){ case 1: map.put("payTypeName", "微信"); break; case 2: map.put("payTypeName", "支付宝"); break; case 3: map.put("payTypeName", "余额支付"); break; case 4: map.put("payTypeName", "云闪付"); break; case 5: map.put("payTypeName", "扫码下单"); break; } } Integer incomeType = Integer.valueOf(map.get("incomeType").toString()); Integer id = null != map.get("id") ? Integer.valueOf(map.get("id").toString()) : null; if(null == id){ continue; } Integer orderType = Integer.valueOf(map.get("orderType").toString()); Double orderMoney = Double.valueOf(null == map.get("orderMoney") ? "0" : map.get("orderMoney").toString()); Integer companyId1 = Integer.valueOf(map.get("companyId").toString()); Income income1 = incomeService.selectOne(new EntityWrapper().eq("userType", 2).eq("type", 2) .eq("incomeId", id).eq("orderType", orderType)); if(null != income1){ map.put("money", income1.getMoney()); } // if(orderType == 3){//跨城计算 // //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。 // //司机收入:10 * 0.8 = 8 // //平台收入:7 - 8 = -1 // Integer lineId = Integer.valueOf(map.get("lineId").toString()); // TLine line = lineService.selectById(lineId); // Double speMoney = Double.valueOf(line.getRakeRate()); // BigDecimal c = new BigDecimal(orderMoney).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);//企业收入 // BigDecimal d = new BigDecimal(orderMoney).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN);//司机收入 // map.put("money", c); // } // // if(orderType == 2){ // TCompany company = companyService.selectById(companyId1); // Double speMoney = company.getTaxiMoney().doubleValue(); // BigDecimal d = null;//企业收入 // BigDecimal c = null;//司机收入 // // TODO: 2022/3/19 抽成按照订单金额计算,优先保证司机的收入,用户支付金额不够,则在平台收入中补贴司机收入 // //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。 // //司机收入:10 * 0.8 = 8 // //平台收入:7 - 8 = -1 // if(company.getIsTaxiFixedOrProportional() == 2){//固定 // d = new BigDecimal(speMoney.compareTo(orderMoney) > 0 ? orderMoney : speMoney); // c = speMoney.compareTo(orderMoney) > 0 ? new BigDecimal(0) : new BigDecimal(orderMoney).subtract(d);//只有出行金额参与抽成,其余归属司机 // } // if(company.getIsTaxiFixedOrProportional() == 1){//比例 // c = new BigDecimal(orderMoney).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN); // d = new BigDecimal(orderMoney).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN); // } // map.put("money", c); // } // // if(orderType == 1){ // TCompany company = companyService.selectById(companyId1); // Double speMoney = company.getSpeMoney().doubleValue(); // BigDecimal d = null;//企业收入 // BigDecimal c = null;//司机收入 // // TODO: 2022/3/19 抽成按照订单金额计算,优先保证司机的收入,用户支付金额不够,则在平台收入中补贴司机收入 // //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。 // //司机收入:10 * 0.8 = 8 // //平台收入:7 - 8 = -1 // if(company.getIsSpeFixedOrProportional() == 2){//固定 // d = new BigDecimal(speMoney.compareTo(orderMoney) > 0 ? orderMoney : speMoney); // c = speMoney.compareTo(orderMoney) > 0 ? new BigDecimal(0) : new BigDecimal(orderMoney).subtract(d);//只有出行金额参与抽成,其余归属司机 // } // if(company.getIsSpeFixedOrProportional() == 1){//比例 // c = new BigDecimal(orderMoney).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN); // d = new BigDecimal(orderMoney).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN); // } // map.put("money", c); // } // // if(orderType == 4){ // TCompany company = companyService.selectById(companyId1); // Double speMoney = company.getSameLogisticsMoney().doubleValue(); // BigDecimal d = null;//企业收入 // BigDecimal c = null;//司机收入 // // TODO: 2022/3/19 抽成按照订单金额计算,优先保证司机的收入,用户支付金额不够,则在平台收入中补贴司机收入 // //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。 // //司机收入:10 * 0.8 = 8 // //平台收入:7 - 8 = -1 // if(company.getIsSameLogisticsFixedOrProportional() == 2){//固定 // d = new BigDecimal(speMoney.compareTo(orderMoney) > 0 ? orderMoney : speMoney); // c = speMoney.compareTo(orderMoney) > 0 ? new BigDecimal(0) : new BigDecimal(orderMoney).subtract(d);//只有出行金额参与抽成,其余归属司机 // } // if(company.getIsSameLogisticsFixedOrProportional() == 1){//比例 // c = new BigDecimal(orderMoney).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN); // d = new BigDecimal(orderMoney).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN); // } // map.put("money", c); // } // if(orderType == 5){ // TCompany company = companyService.selectById(companyId1); // // Double speMoney = company.getCrossLogisticsMoney().doubleValue(); // BigDecimal d = null;//企业收入 // BigDecimal c = null;//司机收入 // // TODO: 2022/3/19 抽成按照订单金额计算,优先保证司机的收入,用户支付金额不够,则在平台收入中补贴司机收入 // //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。 // //司机收入:10 * 0.8 = 8 // //平台收入:7 - 8 = -1 // if(company.getIsCrossLogisticsFixedOrProportional() == 2){//固定 // d = new BigDecimal(speMoney.compareTo(orderMoney) > 0 ? orderMoney : speMoney); // c = speMoney.compareTo(orderMoney) > 0 ? new BigDecimal(0) : new BigDecimal(orderMoney).subtract(d);//只有出行金额参与抽成,其余归属司机 // } // if(company.getIsCrossLogisticsFixedOrProportional() == 1){//比例 // c = new BigDecimal(orderMoney).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN); // d = new BigDecimal(orderMoney).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN); // } // map.put("money", c); // } if(incomeType == 3){ OrderCancel query = orderCancelMapper.query(id, orderType, null, null, 2); if(null != query){ switch (query.getPayType()){ case 1: map.put("payTypeName", "微信"); break; case 2: map.put("payTypeName", "支付奥"); break; case 3: map.put("payTypeName", "余额支付"); break; } map.put("other", query.getMoney()); } } if(incomeType == 4){ Integer driverId = Integer.valueOf(map.get("driverId").toString()); TReassign tReassign = reassignService.selectOne(new EntityWrapper().eq("orderType", orderType).eq("orderId", id) .in("state", Arrays.asList(2, 3, 4, 5)).last(" and (originalDriverId = " + driverId + " or nowDriverId = " + driverId + ")")); if(null != tReassign){ switch (tReassign.getPayType()){ case 1: map.put("payTypeName", "微信"); break; case 2: map.put("payTypeName", "支付宝"); break; case 3: map.put("payTypeName", "余额支付"); break; } map.put("other", tReassign.getMoney()); } } } return incomeOrderListEx; } @Override public Map getIncomeOrderSumMoney(String beginTime, String endTime, String phone, String name, Integer state, Integer type,Integer companyId, Integer income, Integer payType) { return this.baseMapper.getIncomeOrderSumMoney(beginTime,endTime,phone,name,state,type,companyId, income, payType); } @Override public List> queryOtherIncomeDetail(Page> page, String beginTime, String endTime, String orderNo, String name, String phone) { Integer objectId = ShiroKit.getUser().getObjectId(); return this.baseMapper.queryOtherIncomeDetail(page, beginTime, endTime, orderNo, name, phone,objectId); } @Override public HSSFWorkbook exportOtherIncomeDetail(String beginTime, String endTime, String orderNo, String name, String phone) { Date date = new Date(); DateFormat format = new SimpleDateFormat("yyyyMMdd"); String time = format.format(date); Integer objectId = ShiroKit.getUser().getObjectId(); List> mapList = this.baseMapper.exportOtherIncomeDetail(beginTime, endTime, orderNo, name, phone, objectId); String[] title = new String[]{"交易时间", "订单号", "下单用户昵称", "下单用户手机号", "感谢费"/*,"附加费"*/}; String[][] values = new String[mapList.size()][]; for (int i = 0; i < mapList.size(); i++) { Map d = mapList.get(i); values[i] = new String[title.length]; values[i][0] = null == d.get("insertTime") ? "" : d.get("insertTime").toString(); values[i][1] = null == d.get("orderNum") ? "" : d.get("orderNum").toString(); values[i][2] = null == d.get("nickName") ? "" : d.get("nickName").toString(); values[i][3] = null == d.get("phone") ? "" : d.get("phone").toString(); values[i][4] = null == d.get("thankYouFee") ? "0" : d.get("thankYouFee").toString(); // values[i][5]=null == d.get("additionalFee") ? "0" : d.get("additionalFee").toString(); } String fileNameTitle="平台其他收入明细"; HSSFWorkbook wb = ExcelUtil.getHSSFWorkbookTime(fileNameTitle+time, title, values, null, ""); return wb; } }