package com.stylefeng.guns.modular.system.service.impl;
|
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.stylefeng.guns.core.util.DateUtil;
|
import com.stylefeng.guns.modular.system.dao.DriverActivityEachReturnMapper;
|
import com.stylefeng.guns.modular.system.dao.DriverActivityHistoryMapper;
|
import com.stylefeng.guns.modular.system.dao.TDriverMapper;
|
import com.stylefeng.guns.modular.system.dao.TOrderPrivateCarMapper;
|
import com.stylefeng.guns.modular.system.model.DriverActivityEachReturn;
|
import com.stylefeng.guns.modular.system.model.DriverActivityHistory;
|
import com.stylefeng.guns.modular.system.service.IDriverActivityEachReturnService;
|
import com.stylefeng.guns.modular.system.service.IIncomeService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* <p>
|
* 司机活动-单单返 服务实现类
|
* </p>
|
*
|
* @author stylefeng
|
* @since 2021-04-29
|
*/
|
@Service
|
public class DriverActivityEachReturnServiceImpl extends ServiceImpl<DriverActivityEachReturnMapper, DriverActivityEachReturn> implements IDriverActivityEachReturnService {
|
|
@Autowired
|
private TOrderPrivateCarMapper tOrderPrivateCarMapper;
|
|
@Autowired
|
private DriverActivityHistoryMapper driverActivityHistoryMapper;
|
|
@Autowired
|
private IIncomeService incomeService;
|
|
@Autowired
|
private TDriverMapper driverMapper;
|
|
@Override
|
public List<Map<String, Object>> findPage(Page<Map<String, Object>> page, String name) {
|
return this.baseMapper.findPage(page,name);
|
}
|
|
@Override
|
public void startActivity(Integer driverActivityEachReturnId,Integer state) {
|
this.baseMapper.updateStateById(driverActivityEachReturnId,state);
|
}
|
|
@Override
|
public void settlement() {
|
Calendar cal=Calendar.getInstance();
|
cal.add(Calendar.DATE,-1);
|
Date yesterday=cal.getTime();
|
SimpleDateFormat sp=new SimpleDateFormat("yyyy-MM-dd");
|
String yesterdayStr=sp.format(yesterday);
|
//查询要结算的单单返活动
|
List<DriverActivityEachReturn> list=this.baseMapper.selectSettlementActivity();
|
for (DriverActivityEachReturn driverActivityEachReturn : list) {
|
//活动结束时间
|
Date endTime = driverActivityEachReturn.getEndTime();
|
//要查询的订单起始时间
|
String orderBeginTimeStr=yesterdayStr+" "+driverActivityEachReturn.getStart();
|
//要查询得订单结束时间
|
String orderEndTimeStr=yesterdayStr+" "+driverActivityEachReturn.getEnd();
|
//查询昨天满足活动的司机信息 订单状态8:待评价9:已完成 且 未删除
|
//开始服务时间 between [orderBeginTimeStr,orderEndTimeStr]
|
List<Map<String, Object>> drivers = tOrderPrivateCarMapper.selectDriverOrderNumByTime(orderBeginTimeStr, orderEndTimeStr);
|
if(null!=drivers && drivers.size()>0){
|
for (Map<String, Object> driver : drivers) {
|
Integer driverId=(Integer) driver.get("driverId");
|
Integer orderNum=((Number) driver.get("orderNum")).intValue();
|
Double money=new BigDecimal(orderNum).multiply(new BigDecimal(driverActivityEachReturn.getMoney())).setScale(1, BigDecimal.ROUND_HALF_DOWN).doubleValue();
|
DriverActivityHistory driverActivityHistory=new DriverActivityHistory();
|
driverActivityHistory.setInsertTime(new Date());
|
driverActivityHistory.setDay(yesterday);
|
driverActivityHistory.setDriverId(driverId);
|
driverActivityHistory.setType(5);
|
driverActivityHistory.setCarryOut(2);
|
driverActivityHistory.setMoney(money);
|
driverActivityHistoryMapper.insert(driverActivityHistory);
|
//添加司机收入明细
|
incomeService.saveData(2,driverId,1,driverActivityEachReturn.getId(),null,money);
|
//修改司机活动收入
|
BigDecimal changeMoney=new BigDecimal(money);
|
driverMapper.updateBalanceAndActivityMoney(driverId,changeMoney);
|
|
}
|
}
|
//如果是最后一次结算,修改活动状态为已结束
|
if(DateUtil.getDay(new Date()).equals(DateUtil.getDay(endTime))){
|
this.baseMapper.updateStateById(driverActivityEachReturn.getId(),2);
|
}
|
}
|
|
}
|
|
}
|