| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.dao.CarModelMapper; |
| | | import com.stylefeng.guns.modular.system.dao.SettlementRecordMapper; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import com.stylefeng.guns.modular.system.util.DateUtil; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.util.*; |
| | | import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil; |
| | | import com.stylefeng.guns.modular.system.util.Tingg.TinggPayUtil; |
| | | import com.stylefeng.guns.modular.system.util.Tingg.model.CheckoutRequest; |
| | | import com.stylefeng.guns.modular.system.warpper.QueryHistoricalSettlement; |
| | | import com.stylefeng.guns.modular.system.warpper.QuerySettlementAmount; |
| | | import com.stylefeng.guns.modular.system.warpper.QuerySettlementAmountDetails; |
| | | import org.apache.shiro.util.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | |
| | | |
| | | @Value("${callbackPath}") |
| | | private String callbackPath;//支付回调网关地址 |
| | | |
| | | @Resource |
| | | private IBalanceUsageRecordService balanceUsageRecordService; |
| | | |
| | | @Resource |
| | | private IDriverWorkService driverWorkService; |
| | | |
| | | @Autowired |
| | | private PushUtil pushUtil; |
| | | |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | |
| | | @Autowired |
| | | private ICarService carService; |
| | | |
| | | @Autowired |
| | | private FleetEngineUtil fleetEngineUtil; |
| | | |
| | | @Resource |
| | | private CarModelMapper carModelMapper; |
| | | |
| | | @Resource |
| | | private IIncomeService incomeService; |
| | | |
| | | |
| | | |
| | |
| | | @Override |
| | | public QuerySettlementAmount querySettlementAmount(Integer language, Integer driverId) { |
| | | QuerySettlementAmount querySettlementAmount = new QuerySettlementAmount(); |
| | | SettlementRecord settlementRecord = this.selectOne(new EntityWrapper<SettlementRecord>().eq("driverId", driverId).eq("paymentStatus", 1)); |
| | | if(null != settlementRecord){ |
| | | querySettlementAmount.setType(settlementRecord.getType()); |
| | | querySettlementAmount.setAmount(settlementRecord.getPayMoney()); |
| | | List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("settlementRecordId", settlementRecord.getId()).orderBy("createTime desc")); |
| | | SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null); |
| | | if(null != settlementAllocation) { |
| | | JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent()); |
| | | Integer type = jsonObject.getInteger("type"); |
| | | querySettlementAmount.setType(type); |
| | | //所有未支付的主表数据 |
| | | List<SettlementRecord> settlementRecords = this.selectList(new EntityWrapper<SettlementRecord>().eq("driverId", driverId) |
| | | .eq("paymentStatus", 1)); |
| | | double sum = settlementRecords.stream().mapToDouble(SettlementRecord::getPayMoney).sum(); |
| | | |
| | | //所有未生成主表数据的明细 |
| | | List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driverId) |
| | | .isNull("settlementRecordId")); |
| | | double sum1 = settlementDetailList.stream().mapToDouble(SettlementDetail::getPrice).sum(); |
| | | //显示的金额 |
| | | querySettlementAmount.setAmount(new BigDecimal(sum).add(new BigDecimal(sum1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); |
| | | |
| | | List<Integer> collect = settlementRecords.stream().map(SettlementRecord::getId).collect(Collectors.toList()); |
| | | Wrapper<SettlementDetail> wrapper = new EntityWrapper<SettlementDetail>(); |
| | | if(collect.size() > 0){ |
| | | wrapper.eq("driverId", driverId).in("settlementRecordId", collect).or().eq("driverId", driverId).isNull("settlementRecordId"); |
| | | }else{ |
| | | wrapper.eq("driverId", driverId).isNull("settlementRecordId"); |
| | | } |
| | | settlementDetailList = settlementDetailService.selectList(wrapper.orderBy("createTime desc")); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | List<QuerySettlementAmountDetails> list = new ArrayList<>(); |
| | | settlementDetailList.forEach(s -> { |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public ResultUtil paymentSettlementAmount(Integer driverId, Integer payType, Integer bankCardId, Integer language) throws Exception { |
| | | Driver driver1 = driverService.selectById(driverId); |
| | | SettlementRecord settlementRecord = this.selectOne(new EntityWrapper<SettlementRecord>().eq("driverId", driverId).eq("paymentStatus", 1)); |
| | | if(null == settlementRecord){ |
| | | return ResultUtil.error(language == 1 ? "暂无需支付" : language == 2 ? "No need to make payments for the time being" : "Pas besoin d’effectuer de paiements pour le moment"); |
| | | QuerySettlementAmount querySettlementAmount = querySettlementAmount(language, driverId); |
| | | if(querySettlementAmount.getAmount() == 0){ |
| | | return ResultUtil.error(language == 1 ? "暂无需支付" : language == 2 ? "No payment is required" : "Aucun paiement n’est requis"); |
| | | } |
| | | Double payMoney = settlementRecord.getPayMoney(); |
| | | |
| | | Double payMoney = 0D; |
| | | //主动生成结算主数据 |
| | | SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null); |
| | | if(null == settlementAllocation){ |
| | | JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent()); |
| | | Integer type = jsonObject.getInteger("type"); |
| | | |
| | | //所以未生成主表的明细数据 |
| | | List<SettlementDetail> settlementDetails = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driverId) |
| | | .isNull("settlementRecordId")); |
| | | double sum = settlementDetails.stream().mapToDouble(SettlementDetail::getPrice).sum(); |
| | | if(sum > 0){ |
| | | SettlementRecord settlementRecord = new SettlementRecord(); |
| | | settlementRecord.setDay(new Date()); |
| | | settlementRecord.setDriverId(driverId); |
| | | settlementRecord.setType(type); |
| | | settlementRecord.setPaymentStatus(1); |
| | | settlementRecord.setPayMoney(new BigDecimal(sum).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); |
| | | settlementRecord.setInsertTime(new Date()); |
| | | this.insert(settlementRecord); |
| | | |
| | | settlementDetails.forEach(s -> { |
| | | s.setSettlementRecordId(settlementRecord.getId()); |
| | | }); |
| | | settlementDetailService.updateBatchById(settlementDetails); |
| | | } |
| | | } |
| | | List<SettlementRecord> settlementRecords = this.selectList(new EntityWrapper<SettlementRecord>().eq("driverId", driverId).eq("paymentStatus", 1)); |
| | | payMoney = settlementRecords.stream().mapToDouble(SettlementRecord::getPayMoney).sum(); |
| | | if(payMoney == 0){ |
| | | return ResultUtil.error(language == 1 ? "暂无需支付" : language == 2 ? "No payment is required" : "Aucun paiement n’est requis"); |
| | | } |
| | | ResultUtil resultUtil = ResultUtil.success(""); |
| | | if(payType == 1){//手机支付 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
| | | String merchantTransactionId = sdf.format(new Date()) + language + settlementRecord.getId(); |
| | | String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1.getId(); |
| | | CheckoutRequest checkoutRequest = new CheckoutRequest(); |
| | | checkoutRequest.setMsisdn(Long.valueOf(driver1.getPhone())); |
| | | checkoutRequest.setCustomerEmail(driver1.getEmail()); |
| | |
| | | checkoutRequest.setRequestAmount(payMoney); |
| | | checkoutRequest.setMerchantTransactionId(merchantTransactionId); |
| | | checkoutRequest.setRequestDescription("Settlement cost"); |
| | | checkoutRequest.setCallbackUrl(callbackPath + "/base/settlementRecord/querySettlementAmount"); |
| | | checkoutRequest.setCallbackUrl(callbackPath + "/base/settlementRecord/paymentSettlementAmountCallback"); |
| | | checkoutRequest.setPendingRedirectUrl(""); |
| | | checkoutRequest.setSuccessRedirectUrl("http://182.160.16.251:81/payMoney/pages/success.html"); |
| | | checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html"); |
| | | checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html"); |
| | | checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html"); |
| | | resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest); |
| | | |
| | | if(resultUtil.getCode()!=200){ |
| | |
| | | if(payType == 2){//银行卡支付 |
| | | BankCard bankCard = bankCardService.selectById(bankCardId); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
| | | String merchantTransactionId = sdf.format(new Date()) + language + settlementRecord.getId(); |
| | | String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1.getId(); |
| | | CheckoutRequest checkoutRequest = new CheckoutRequest(); |
| | | checkoutRequest.setMsisdn(Long.valueOf(bankCard.getCode())); |
| | | checkoutRequest.setCustomerEmail(driver1.getEmail()); |
| | |
| | | checkoutRequest.setRequestAmount(payMoney); |
| | | checkoutRequest.setMerchantTransactionId(merchantTransactionId); |
| | | checkoutRequest.setRequestDescription("Settlement cost"); |
| | | checkoutRequest.setCallbackUrl(callbackPath + "/base/settlementRecord/querySettlementAmount"); |
| | | checkoutRequest.setCallbackUrl(callbackPath + "/base/settlementRecord/paymentSettlementAmountCallback"); |
| | | checkoutRequest.setPendingRedirectUrl(""); |
| | | checkoutRequest.setSuccessRedirectUrl("http://182.160.16.251:81/payMoney/pages/success.html"); |
| | | checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html"); |
| | | checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html"); |
| | | checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html"); |
| | | resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest); |
| | | |
| | | if(resultUtil.getCode()!=200){ |
| | |
| | | |
| | | Double laveActivityMoney = driver1.getLaveActivityMoney(); |
| | | Double laveBusinessMoney = driver1.getLaveBusinessMoney(); |
| | | if(laveBusinessMoney.compareTo(payMoney) < 0){ |
| | | driver1.setLaveBusinessMoney(0D); |
| | | BigDecimal m = new BigDecimal(payMoney).subtract(new BigDecimal(laveBusinessMoney)); |
| | | driver1.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(m).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | }else{ |
| | | driver1.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | |
| | | for (SettlementRecord settlementRecord : settlementRecords) { |
| | | Double payMoney1 = settlementRecord.getPayMoney(); |
| | | if(laveActivityMoney >= payMoney1){ |
| | | settlementRecord.setPayMoney(payMoney1); |
| | | settlementRecord.setPaymentStatus(2); |
| | | settlementRecord.setPayType(payType); |
| | | settlementRecord.setBalanceType(1); |
| | | settlementRecord.setPayTime(new Date()); |
| | | this.updateById(settlementRecord); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, payMoney1, settlementRecord.getType() + 2); |
| | | laveActivityMoney = new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney1)).doubleValue(); |
| | | }else{ |
| | | if(laveActivityMoney > 0){ |
| | | settlementRecord.setPayMoney(laveActivityMoney); |
| | | settlementRecord.setPaymentStatus(2); |
| | | settlementRecord.setPayType(payType); |
| | | settlementRecord.setBalanceType(1); |
| | | settlementRecord.setPayTime(new Date()); |
| | | this.updateById(settlementRecord); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, laveActivityMoney, settlementRecord.getType() + 2); |
| | | laveActivityMoney = 0D; |
| | | payMoney1 = new BigDecimal(payMoney1).subtract(new BigDecimal(laveActivityMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); |
| | | |
| | | SettlementRecord settlementRecord1 = new SettlementRecord(); |
| | | BeanUtils.copyProperties(settlementRecord, settlementRecord1); |
| | | settlementRecord1.setId(null); |
| | | settlementRecord1.setPayMoney(payMoney1); |
| | | settlementRecord1.setPaymentStatus(2); |
| | | settlementRecord1.setPayType(payType); |
| | | settlementRecord1.setBalanceType(1); |
| | | settlementRecord1.setPayTime(new Date()); |
| | | this.insert(settlementRecord1); |
| | | |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, payMoney1, settlementRecord.getType() + 2); |
| | | laveBusinessMoney = new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | }else{ |
| | | settlementRecord.setPaymentStatus(2); |
| | | settlementRecord.setPayType(payType); |
| | | settlementRecord.setPayMoney(payMoney1); |
| | | settlementRecord.setBalanceType(2); |
| | | settlementRecord.setPayTime(new Date()); |
| | | this.updateById(settlementRecord); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, payMoney1, settlementRecord.getType() + 2); |
| | | laveBusinessMoney = new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } |
| | | } |
| | | } |
| | | driver1.setBalance(new BigDecimal(driver1.getBalance()).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(driverId, "线下结算", payMoney, 2, 1, 2, null, null); |
| | | driver1.setLaveBusinessMoney(laveBusinessMoney); |
| | | driver1.setLaveActivityMoney(laveActivityMoney); |
| | | driver1.setBalance(new BigDecimal(laveBusinessMoney).add(new BigDecimal(laveActivityMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driverService.updateById(driver1); |
| | | |
| | | settlementRecord.setPaymentStatus(2); |
| | | settlementRecord.setPayType(payType); |
| | | settlementRecord.setPayTime(new Date()); |
| | | this.updateById(settlementRecord); |
| | | //添加司机结算的平台收入记录 |
| | | incomeService.saveData(1, 1, 8, driver1.getId(), null, payMoney); |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(driverId, "支付结算费用", payMoney, 2, 1, 2, null, null); |
| | | |
| | | return ResultUtil.success(""); |
| | | } |
| | | return resultUtil; |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<QueryHistoricalSettlement> queryHistoricalSettlement(Integer driverId, Integer pageNum, Integer size) { |
| | | public List<QueryHistoricalSettlement> queryHistoricalSettlement(Integer language, Integer driverId, Integer pageNum, Integer size) { |
| | | pageNum = (pageNum - 1) * size; |
| | | return this.baseMapper.queryHistoricalSettlement(driverId, pageNum, size); |
| | | List<Map<String, Object>> list = this.baseMapper.queryHistoricalSettlement(driverId, pageNum, size); |
| | | Double aDouble = this.baseMapper.queryHistoricalSettlementTotal(driverId); |
| | | List<QueryHistoricalSettlement> datas = new ArrayList<>(); |
| | | for (Map<String, Object> map : list) { |
| | | QueryHistoricalSettlement queryHistoricalSettlement = new QueryHistoricalSettlement(); |
| | | if(null != map.get("createTime")){ |
| | | queryHistoricalSettlement.setCreateTime(DateUtil.conversionFormat(language, map.get("createTime").toString())); |
| | | } |
| | | if(null != map.get("price")){ |
| | | queryHistoricalSettlement.setPrice(Double.valueOf(map.get("price").toString())); |
| | | } |
| | | if(null != map.get("type")){ |
| | | queryHistoricalSettlement.setType(Integer.valueOf(map.get("type").toString())); |
| | | } |
| | | if(null != map.get("payType")){ |
| | | switch (map.get("payType").toString()){ |
| | | case "1": |
| | | queryHistoricalSettlement.setPayType(language == 1 ? "手机支付" : language == 2 ? "Mobile Money" : "Paiement mobile"); |
| | | break; |
| | | case "2": |
| | | queryHistoricalSettlement.setPayType(language == 1 ? "线上支付" : language == 2 ? "Bank Card" : "Carte bancaire"); |
| | | break; |
| | | default: |
| | | Integer balanceType = Integer.valueOf(map.get("balanceType").toString()); |
| | | queryHistoricalSettlement.setPayType(language == 1 ? "余额支付(" + (balanceType == 1 ? "奖励" : "收入") + ")" : language == 2 ? "Wallet (" + (balanceType == 1 ? "Reward" : "Income") + ")" : "Portefeuille (" + (balanceType == 1 ? "Récompense" : "Revenu") + ")"); |
| | | break; |
| | | } |
| | | } |
| | | queryHistoricalSettlement.setTotalPrice(aDouble); |
| | | datas.add(queryHistoricalSettlement); |
| | | } |
| | | return datas; |
| | | } |
| | | |
| | | |
| | |
| | | w = w == 1 ? 7 : w - 1; |
| | | int d = today.get(Calendar.DAY_OF_MONTH); |
| | | if(null != settlementAllocation){ |
| | | List<Map<String, Object>> list = settlementDetailService.queryGroupDriver(); |
| | | JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent()); |
| | | Integer type = jsonObject.getInteger("type"); |
| | | Integer day = jsonObject.getInteger("day"); |
| | | if(type == 1){//日结算 |
| | | List<Map<String, Object>> list = settlementDetailService.queryGroupDriver(); |
| | | for (Map<String, Object> map : list) { |
| | | Integer driverId = Integer.valueOf(map.get("driverId").toString()); |
| | | Double price = Double.valueOf(map.get("price").toString()); |
| | | |
| | | SettlementRecord settlementRecord = new SettlementRecord(); |
| | | settlementRecord.setDay(new Date()); |
| | | settlementRecord.setDriverId(driverId); |
| | | settlementRecord.setType(1); |
| | | settlementRecord.setPaymentStatus(1); |
| | | settlementRecord.setPayMoney(price); |
| | | settlementRecord.setInsertTime(new Date()); |
| | | this.insert(settlementRecord); |
| | | |
| | | List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driverId).isNull("settlementRecordId")); |
| | | settlementDetailList.forEach(s -> { |
| | | s.setSettlementRecordId(settlementRecord.getId()); |
| | | }); |
| | | if(settlementDetailList.size() > 0){ |
| | | settlementDetailService.updateBatchById(settlementDetailList); |
| | | } |
| | | |
| | | //强制司机下班 |
| | | DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>() |
| | | .eq("driverId", driverId).eq("state", 1)); |
| | | if(null != driverWork){ |
| | | driverWork.setEndTime(new Date()); |
| | | driverWork.setState(2); |
| | | driverWorkService.updateById(driverWork); |
| | | Driver driver = driverService.selectById(driverId); |
| | | driver.setState(1); |
| | | driverService.updateById(driver); |
| | | Car car = carService.selectById(driver.getCarId()); |
| | | if(!StringUtils.hasLength(car.getVehicleId())){ |
| | | car.setVehicleId(UUIDUtil.getRandomCode()); |
| | | carService.updateById(car); |
| | | } |
| | | |
| | | //司机下班,修改谷歌上的车辆信息 |
| | | new Thread(()->{ |
| | | try { |
| | | CarModel carModel = carModelMapper.selectById(car.getCarModelId()); |
| | | String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId()); |
| | | if(ToolUtil.isEmpty(vehicles)){ |
| | | boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(!createVehicles){ |
| | | for (int i = 0; i < 5; i++) { |
| | | createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(createVehicles){ |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(5000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(!updateVehicles){ |
| | | for (int i = 0; i < 5; i++) { |
| | | updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(updateVehicles){ |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(5000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | } |
| | | }else{ |
| | | boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(!updateVehicles){ |
| | | for (int i = 0; i < 5; i++) { |
| | | updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(updateVehicles){ |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(5000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | }).start(); |
| | | |
| | | } |
| | | } |
| | | } |
| | | if(type == 2 && w == day){//周结算 |
| | | List<Map<String, Object>> list = settlementDetailService.queryGroupDriver(); |
| | | for (Map<String, Object> map : list) { |
| | | Integer driverId = Integer.valueOf(map.get("driverId").toString()); |
| | | Double price = Double.valueOf(map.get("price").toString()); |
| | |
| | | if(settlementDetailList.size() > 0){ |
| | | settlementDetailService.updateBatchById(settlementDetailList); |
| | | } |
| | | |
| | | //强制司机下班 |
| | | DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>() |
| | | .eq("driverId", driverId).eq("state", 1)); |
| | | if(null != driverWork){ |
| | | driverWork.setEndTime(new Date()); |
| | | driverWork.setState(2); |
| | | driverWorkService.updateById(driverWork); |
| | | Driver driver = driverService.selectById(driverId); |
| | | driver.setState(1); |
| | | driverService.updateById(driver); |
| | | Car car = carService.selectById(driver.getCarId()); |
| | | if(!StringUtils.hasLength(car.getVehicleId())){ |
| | | car.setVehicleId(UUIDUtil.getRandomCode()); |
| | | carService.updateById(car); |
| | | } |
| | | |
| | | //司机下班,修改谷歌上的车辆信息 |
| | | new Thread(()->{ |
| | | try { |
| | | CarModel carModel = carModelMapper.selectById(car.getCarModelId()); |
| | | String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId()); |
| | | if(ToolUtil.isEmpty(vehicles)){ |
| | | boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(!createVehicles){ |
| | | for (int i = 0; i < 5; i++) { |
| | | createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(createVehicles){ |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(5000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(!updateVehicles){ |
| | | for (int i = 0; i < 5; i++) { |
| | | updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(updateVehicles){ |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(5000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | } |
| | | }else{ |
| | | boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(!updateVehicles){ |
| | | for (int i = 0; i < 5; i++) { |
| | | updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(updateVehicles){ |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(5000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | }).start(); |
| | | } |
| | | } |
| | | } |
| | | if(type == 3 && d == day){//月结算 |
| | | List<Map<String, Object>> list = settlementDetailService.queryGroupDriver(); |
| | | for (Map<String, Object> map : list) { |
| | | Integer driverId = Integer.valueOf(map.get("driverId").toString()); |
| | | Double price = Double.valueOf(map.get("price").toString()); |
| | |
| | | if(settlementDetailList.size() > 0){ |
| | | settlementDetailService.updateBatchById(settlementDetailList); |
| | | } |
| | | |
| | | //强制司机下班 |
| | | DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>() |
| | | .eq("driverId", driverId).eq("state", 1)); |
| | | if(null != driverWork){ |
| | | driverWork.setEndTime(new Date()); |
| | | driverWork.setState(2); |
| | | driverWorkService.updateById(driverWork); |
| | | Driver driver = driverService.selectById(driverId); |
| | | driver.setState(1); |
| | | driverService.updateById(driver); |
| | | Car car = carService.selectById(driver.getCarId()); |
| | | if(!StringUtils.hasLength(car.getVehicleId())){ |
| | | car.setVehicleId(UUIDUtil.getRandomCode()); |
| | | carService.updateById(car); |
| | | } |
| | | |
| | | //司机下班,修改谷歌上的车辆信息 |
| | | new Thread(()->{ |
| | | try { |
| | | CarModel carModel = carModelMapper.selectById(car.getCarModelId()); |
| | | String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId()); |
| | | if(ToolUtil.isEmpty(vehicles)){ |
| | | boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(!createVehicles){ |
| | | for (int i = 0; i < 5; i++) { |
| | | createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(createVehicles){ |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(5000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(!updateVehicles){ |
| | | for (int i = 0; i < 5; i++) { |
| | | updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(updateVehicles){ |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(5000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | } |
| | | }else{ |
| | | boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(!updateVehicles){ |
| | | for (int i = 0; i < 5; i++) { |
| | | updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); |
| | | if(updateVehicles){ |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(5000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | }).start(); |
| | | } |
| | | } |
| | | } |
| | | } |