From 7454b6532cd2a5c68235a45f1cc540e25f1ffaf4 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 07 四月 2023 18:40:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java |  158 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 158 insertions(+), 0 deletions(-)

diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
index 527f2a5..0b1b322 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
@@ -1,13 +1,22 @@
 package com.supersavedriving.driver.modular.system.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.supersavedriving.driver.modular.system.dao.AccountChangeDetailMapper;
 import com.supersavedriving.driver.modular.system.model.AccountChangeDetail;
+import com.supersavedriving.driver.modular.system.model.Driver;
+import com.supersavedriving.driver.modular.system.model.SystemConfig;
 import com.supersavedriving.driver.modular.system.service.IAccountChangeDetailService;
+import com.supersavedriving.driver.modular.system.service.IDriverService;
+import com.supersavedriving.driver.modular.system.service.ISystemConfigService;
+import com.supersavedriving.driver.modular.system.util.UUIDUtil;
 import com.supersavedriving.driver.modular.system.warpper.BalanceDetailWarpper;
 import com.supersavedriving.driver.modular.system.warpper.CommissionDetailListWarpper;
 import com.supersavedriving.driver.modular.system.warpper.CommissionDetailWarpper;
 import com.supersavedriving.driver.modular.system.warpper.IntegralIncomeAndExpensesWarpper;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
@@ -20,6 +29,15 @@
  */
 @Service
 public class AccountChangeDetailServiceImpl extends ServiceImpl<AccountChangeDetailMapper, AccountChangeDetail> implements IAccountChangeDetailService {
+
+    @Autowired
+    private IDriverService driverService;
+
+    @Autowired
+    private ISystemConfigService systemConfigService;
+
+
+
 
 
     /**
@@ -86,4 +104,144 @@
         List<BalanceDetailWarpper> balanceDetailWarppers = this.baseMapper.queryBalanceDetail(driverId, time, type, pageNum, pageSize);
         return balanceDetailWarppers;
     }
+
+
+    /**
+     * 处理司机保险
+     */
+    @Override
+    public void deductionInsurance() {
+        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 3));
+        if(null == systemConfig){
+            return;
+        }
+        JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
+        Double num1 = jsonObject.getDouble("num1");
+        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("status", 1));
+        for (Driver driver : drivers) {
+            Double couponBalance = driver.getCouponBalance();
+            Double backgroundBalance = driver.getBackgroundBalance();
+            Double balance = driver.getBalance();
+            Double commission = driver.getCommission();
+            double all = couponBalance + backgroundBalance + balance + commission;
+            if(num1 > all){
+                continue;
+            }
+
+            double d = num1.doubleValue();
+            if(backgroundBalance < d){
+                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setUserType(2);
+                accountChangeDetail.setUserId(driver.getId());
+                accountChangeDetail.setType(1);
+                accountChangeDetail.setChangeType(8);
+                accountChangeDetail.setOldData(driver.getBackgroundBalance());
+                accountChangeDetail.setNewData(0D);
+                accountChangeDetail.setExplain("收取保险费");
+                accountChangeDetail.setCreateTime(new Date());
+                this.insert(accountChangeDetail);
+                d -= backgroundBalance;
+                driver.setBackgroundBalance(0D);
+            }else{
+                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setUserType(2);
+                accountChangeDetail.setUserId(driver.getId());
+                accountChangeDetail.setType(1);
+                accountChangeDetail.setChangeType(8);
+                accountChangeDetail.setOldData(driver.getBackgroundBalance());
+                d = 0;
+                driver.setBackgroundBalance(driver.getBackgroundBalance() - d);
+                accountChangeDetail.setNewData(driver.getBackgroundBalance());
+                accountChangeDetail.setExplain("收取保险费");
+                accountChangeDetail.setCreateTime(new Date());
+                this.insert(accountChangeDetail);
+            }
+
+            if(d > 0){
+                if(couponBalance < d){
+                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                    accountChangeDetail.setUserType(2);
+                    accountChangeDetail.setUserId(driver.getId());
+                    accountChangeDetail.setType(1);
+                    accountChangeDetail.setChangeType(8);
+                    accountChangeDetail.setOldData(driver.getCouponBalance());
+                    accountChangeDetail.setNewData(0D);
+                    accountChangeDetail.setExplain("收取保险费");
+                    accountChangeDetail.setCreateTime(new Date());
+                    this.insert(accountChangeDetail);
+                    d -= couponBalance;
+                    driver.setCouponBalance(0D);
+                }else{
+                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                    accountChangeDetail.setUserType(2);
+                    accountChangeDetail.setUserId(driver.getId());
+                    accountChangeDetail.setType(1);
+                    accountChangeDetail.setChangeType(8);
+                    accountChangeDetail.setOldData(driver.getCouponBalance());
+                    d = 0;
+                    driver.setCouponBalance(driver.getCouponBalance() - d);
+                    accountChangeDetail.setNewData(driver.getCouponBalance());
+                    accountChangeDetail.setExplain("收取保险费");
+                    accountChangeDetail.setCreateTime(new Date());
+                    this.insert(accountChangeDetail);
+                }
+            }
+            if(d > 0){
+                if(commission < d){
+                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                    accountChangeDetail.setUserType(2);
+                    accountChangeDetail.setUserId(driver.getId());
+                    accountChangeDetail.setType(1);
+                    accountChangeDetail.setChangeType(8);
+                    accountChangeDetail.setOldData(driver.getCommission());
+                    accountChangeDetail.setNewData(0D);
+                    accountChangeDetail.setExplain("收取保险费");
+                    accountChangeDetail.setCreateTime(new Date());
+                    this.insert(accountChangeDetail);
+                    d -= commission;
+                    driver.setCommission(0D);
+                }else{
+                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                    accountChangeDetail.setUserType(2);
+                    accountChangeDetail.setUserId(driver.getId());
+                    accountChangeDetail.setType(1);
+                    accountChangeDetail.setChangeType(8);
+                    accountChangeDetail.setOldData(driver.getCommission());
+                    d = 0;
+                    driver.setCommission(driver.getCommission() - d);
+                    accountChangeDetail.setNewData(driver.getCommission());
+                    accountChangeDetail.setExplain("收取保险费");
+                    accountChangeDetail.setCreateTime(new Date());
+                    this.insert(accountChangeDetail);
+                }
+            }
+            if(d > 0){
+                if(balance < d){
+                    continue;
+                }else{
+                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                    accountChangeDetail.setUserType(2);
+                    accountChangeDetail.setUserId(driver.getId());
+                    accountChangeDetail.setType(1);
+                    accountChangeDetail.setChangeType(8);
+                    accountChangeDetail.setOldData(driver.getBalance());
+                    d = 0;
+                    driver.setBalance(driver.getBalance() - d);
+                    accountChangeDetail.setNewData(driver.getBalance());
+                    accountChangeDetail.setExplain("收取保险费");
+                    accountChangeDetail.setCreateTime(new Date());
+                    this.insert(accountChangeDetail);
+                }
+            }
+
+            driverService.updateById(driver);
+        }
+    }
 }

--
Gitblit v1.7.1