Pu Zhibing
2025-05-16 4c99ee7028c3fe58a2cd4b8273b22c75c45574fc
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarController.java
@@ -6,19 +6,20 @@
import com.stylefeng.guns.core.base.tips.ErrorTip;
import com.stylefeng.guns.core.common.constant.factory.PageFactory;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.core.util.ExcelExportUtil;
import com.stylefeng.guns.core.util.SinataUtil;
import com.stylefeng.guns.core.util.WoUtil;
import com.stylefeng.guns.core.util.*;
import com.stylefeng.guns.modular.system.dao.CarInsuranceMapper;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.EmailUtil;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import org.apache.commons.lang.time.DateUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@@ -31,6 +32,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -83,8 +85,11 @@
    @Autowired
    private ITCarColorService carColorService;
    @Value("${pushMinistryOfTransport}")
    private boolean pushMinistryOfTransport;
    @Value("${spring.mail.template-path}")
    private String templatePath;
    /**
     * 跳转到车辆管理首页
@@ -93,11 +98,15 @@
    public String index() {
        return PREFIX + "tCar.html";
    }
    @RequestMapping("auth")
    public String auth() {
        return PREFIX + "tCarAuth.html";
    }
    /**
     * 跳转到添加车辆管理
     */
@@ -128,6 +137,8 @@
        model.addAttribute("zcModelList",zcModelList);
        List<TServerCarmodel> kcModelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 2).eq("state", 1));
        model.addAttribute("kcModelList",kcModelList);
        List<TServerCarmodel> xjModelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 4).eq("state", 1));
        model.addAttribute("xjModelList",xjModelList);
        List<TCarColor> state = carColorService.selectList(new EntityWrapper<TCarColor>().eq("state", 1));
        model.addAttribute("color", state);
        return PREFIX + "tCar_add.html";
@@ -190,6 +201,7 @@
        Integer six = 1;
        Integer zcModel = 0;
        Integer kcModel = 0;
        Integer xjModel = 0;
        for (TCarService obj : serviceList){
            if (obj.getType() == 1){
                one = 2;
@@ -203,7 +215,8 @@
                kcModel = obj.getServerCarModelId();
            }
            if (obj.getType() == 4){
                four = 2;
                four = 4;
                xjModel = obj.getServerCarModelId();
            }
            if (obj.getType() == 5){
                five = 2;
@@ -220,11 +233,14 @@
        model.addAttribute("six",six);
        model.addAttribute("zcModel",zcModel);
        model.addAttribute("kcModel",kcModel);
        model.addAttribute("xjModel",xjModel);
        List<TServerCarmodel> zcModelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 1).eq("state", 1));
        model.addAttribute("zcModelList",zcModelList);
        List<TServerCarmodel> kcModelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 2).eq("state", 1));
        model.addAttribute("kcModelList",kcModelList);
        List<TServerCarmodel> xjModelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 4).eq("state", 1));
        model.addAttribute("xjModelList",xjModelList);
        //车辆品牌
        List<TCarBrand> brandList = tCarBrandService.selectList(new EntityWrapper<TCarBrand>().eq("state", 1));
@@ -236,6 +252,8 @@
        model.addAttribute("color", state);
        return PREFIX + "tCar_edit.html";
    }
    @RequestMapping("/tCar_auth/{tCarId}")
    public String tCarAuth(@PathVariable Integer tCarId, Model model) {
        TCar tCar = tCarService.selectById(tCarId);
@@ -250,20 +268,34 @@
        Integer six = 1;
        Integer zcModel = 0;
        Integer kcModel = 0;
        Integer xjModel = 0;
        for (TCarService obj : serviceList){
            if (obj.getType() == 1){
                one = 2;
                zcModel = obj.getServerCarModelId();
            }
            if (obj.getType() == 1){
                four = 2;
                zcModel = obj.getServerCarModelId();
            }
            if (obj.getType() == 4){
                four = 4;
                xjModel = obj.getServerCarModelId();
            }
        }
        model.addAttribute("one",one);
        model.addAttribute("four",four);
        model.addAttribute("zcModel",zcModel);
        model.addAttribute("xjModel",xjModel);
        List<TServerCarmodel> zcModelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 1).eq("state", 1));
        model.addAttribute("zcModelList",zcModelList);
        List<TServerCarmodel> xjModelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 4).eq("state", 1));
        model.addAttribute("xjModelList",xjModelList);
        LogObjectHolder.me().set(tCar);
        return PREFIX + "tCar_auth.html";
    }
    /**
     * 跳转到保险列表页
     * @param carId
@@ -428,7 +460,12 @@
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TCar tCar,@RequestParam String serverBox,Integer roleType,Integer companyType,Integer oneId,Integer twoId,Integer franchiseeId,String zcModel,String kcModel) {
    public Object add(TCar tCar,@RequestParam String serverBox,Integer roleType,Integer companyType,Integer oneId,Integer twoId,Integer franchiseeId,String zcModel,String kcModel,String xjModel) throws Exception {
        TCar tCar1 = tCarService.selectOne(new EntityWrapper<TCar>().eq("state", 1).ne("authState", 4).eq("carLicensePlate", tCar.getCarLicensePlate()));
        if(null != tCar1){
            throw new Exception("车牌号重复");
        }
        if (1 == roleType){  //平台
            if (2 == companyType.intValue()){
                if (SinataUtil.isNotEmpty(oneId)){
@@ -468,6 +505,7 @@
        }
        tCar.setInsertTime(new Date());
        tCar.setState(1);
        tCar.setAuthState(1);
        tCarService.insert(tCar);
        //添加经营业务
@@ -478,8 +516,8 @@
            service.setType(Integer.valueOf(serverArray[i]));
            if (1 == service.getType()){
                service.setServerCarModelId(Integer.valueOf(zcModel));
            }else if (3 == service.getType()){
                service.setServerCarModelId(Integer.valueOf(kcModel));
            }else if (4 == service.getType()){
                service.setServerCarModelId(Integer.valueOf(xjModel));
            }
            tCarServiceService.insert(service);
        }
@@ -510,7 +548,12 @@
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TCar tCar,@RequestParam String serverBox,Integer roleType,Integer companyType,Integer oneId,Integer twoId,Integer franchiseeId,String zcModel,String kcModel) {
    public Object update(TCar tCar,@RequestParam String serverBox,Integer roleType,Integer companyType,Integer oneId,Integer twoId,Integer franchiseeId,String zcModel,String kcModel,String xjModel)throws Exception {
        TCar tCar1 = tCarService.selectOne(new EntityWrapper<TCar>().eq("state", 1).ne("authState", 4).eq("carLicensePlate", tCar.getCarLicensePlate()));
        if(null != tCar1 && tCar.getId().compareTo(tCar1.getId()) != 0){
            throw new Exception("车牌号重复");
        }
        if (1 == roleType){  //平台
            if (2 == companyType.intValue()){
                if (SinataUtil.isNotEmpty(oneId)){
@@ -552,8 +595,8 @@
            service.setType(Integer.valueOf(serverArray[i]));
            if (1 == service.getType()){
                service.setServerCarModelId(Integer.valueOf(zcModel));
            }else if (3 == service.getType()){
                service.setServerCarModelId(Integer.valueOf(kcModel));
            }else if (4 == service.getType()){
                service.setServerCarModelId(Integer.valueOf(xjModel));
            }
            tCarServiceService.insert(service);
        }
@@ -561,11 +604,17 @@
        tCarService.updateById(tCar);
        return SUCCESS_TIP;
    }
    @RequestMapping(value = "/updateAuth")
    @ResponseBody
    public Object updateAuth(TCar tCar,String zcModel,@RequestParam String serverBox) {
    public Object updateAuth(TCar tCar,String zcModel,String xjModel,@RequestParam String serverBox) {
        //添加经营业务
        if(tCar.getAuthState()==2){
            //删除业务
            tCarServiceService.delete(new EntityWrapper<TCarService>().eq("carId",tCar.getId()));
            //添加经营业务
            String[] serverArray = serverBox.split(",");
            for (int i=0;i<serverArray.length;i++){
                TCarService service = new TCarService();
@@ -573,11 +622,102 @@
                service.setType(Integer.valueOf(serverArray[i]));
                if (1 == service.getType()){
                    service.setServerCarModelId(Integer.valueOf(zcModel));
                }else if (4 == service.getType()){
                    service.setServerCarModelId(Integer.valueOf(xjModel));
                }
                tCarServiceService.insert(service);
            }
        }
        tCarService.updateById(tCar);
        tCar = tCarService.selectById(tCar.getId());
        TDriver tDriver = tDriverService.selectById(tCar.getDriverId());
        if(null != tDriver && ToolUtil.isNotEmpty(tDriver.getEmail())){
            TCar finalTCar = tCar;
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Integer language = tDriver.getLanguage();
                        String path = templatePath +  "driver/index.html";
                        Document document = Jsoup.parse(new File(path), "UTF-8");
                        if(1 == language){
                            document.getElementById("english").remove();
                            document.getElementById("french").remove();
                            document.getElementById("invite").remove();
                            document.getElementById("user").remove();
                            document.getElementById("settle").remove();
                            document.getElementById("pass").remove();
                            document.getElementById("email").remove();
                            document.getElementById("bill").remove();
                            document.getElementById("reward").remove();
                            document.getElementById("rewardToday").remove();
                            document.getElementById("driverAudit").remove();
                            document.getElementsByTag("title").get(0).text(2 == finalTCar.getAuthState() ? "车辆审核通过" : "车辆审核不通过");
                            Element car_audit1_user = document.getElementById("car_audit1_user");
                            car_audit1_user.text("Hello " + tDriver.getFirstName() + " " + tDriver.getLastName() + ",");
                            Element car_audit1_content = document.getElementById("car_audit1_content");
                            if(2 == finalTCar.getAuthState()){
                                car_audit1_content.html("您的车辆注册申请已获批准<br>详情请查看I-GO APP");
                            }else{
                                car_audit1_content.html("我们很遗憾地通知您: 您的车辆申请已被拒绝。相关详情,请与我们的客服联系,致电0577777767或发送电子邮件至support@i-go.group");
                            }
                            EmailUtil.send(tDriver.getEmail(), 2 == finalTCar.getAuthState() ? "车辆审核通过" : "车辆审核不通过",  document.html());
                        }
                        if(2 == language){
                            document.getElementById("chinese").remove();
                            document.getElementById("french").remove();
                            document.getElementById("invite1").remove();
                            document.getElementById("user1").remove();
                            document.getElementById("settle1").remove();
                            document.getElementById("pass1").remove();
                            document.getElementById("email1").remove();
                            document.getElementById("bill1").remove();
                            document.getElementById("reward1").remove();
                            document.getElementById("rewardToday1").remove();
                            document.getElementById("driverAudit1").remove();
                            document.getElementsByTag("title").get(0).text(2 == finalTCar.getAuthState() ? "Vehicle is verified and qualified" : "Vehicle is not verified and qualified");
                            Element car_audit2_user = document.getElementById("car_audit2_user");
                            car_audit2_user.text("Hello " + tDriver.getFirstName() + " " + tDriver.getLastName() + ",");
                            Element car_audit2_content = document.getElementById("car_audit2_content");
                            if(2 == finalTCar.getAuthState()){
                                car_audit2_content.html("Your vehicle application has been approved. <br>See the I-GO platform for details.");
                            }else{
                                car_audit2_content.html("We are sorry to inform you that your vehicle application was rejected. Please contact our service for relevant details, call 0577777767 or send e-mail to support@i-go.group");
                            }
                            EmailUtil.send(tDriver.getEmail(), 2 == finalTCar.getAuthState() ? "Vehicle is verified and qualified" : "Vehicle is not verified and qualified",  document.html());
                        }
                        if(3 == language){
                            document.getElementById("chinese").remove();
                            document.getElementById("english").remove();
                            document.getElementById("invite2").remove();
                            document.getElementById("user2").remove();
                            document.getElementById("settle2").remove();
                            document.getElementById("pass2").remove();
                            document.getElementById("email2").remove();
                            document.getElementById("bill2").remove();
                            document.getElementById("reward2").remove();
                            document.getElementById("rewardToday2").remove();
                            document.getElementById("driverAudit2").remove();
                            document.getElementsByTag("title").get(0).text(2 == finalTCar.getAuthState() ? "Le véhicule est vérifié et qualifié" : "Le véhicule n’est pas vérifié et qualifié");
                            Element car_audit3_user = document.getElementById("car_audit3_user");
                            car_audit3_user.text("Bonjour " + tDriver.getFirstName() + " " + tDriver.getLastName() + ",");
                            Element car_audit3_content = document.getElementById("car_audit3_content");
                            if(2 == finalTCar.getAuthState()){
                                car_audit3_content.html("Votre demande de véhicule a été approuvée.<br>Veuillez consulter la plateforme I-GO pour plus de détails.");
                            }else{
                                car_audit3_content.html("Nous avons le regret de vous informer que votre demande de véhicule a été rejetée. Veuillez contacter notre service pour plus de détails, appelez 0577777767 ou envoyez un e-mail à support@i-go.group");
                            }
                            EmailUtil.send(tDriver.getEmail(), 2 == finalTCar.getAuthState() ? "Le véhicule est vérifié et qualifié" : "Le véhicule n’est pas vérifié et qualifié",  document.html());
                        }
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            }).start();
        }
        return SUCCESS_TIP;
    }
@@ -772,7 +912,7 @@
//                    }
                    //判断服务模式【小件同城物流】
                    if (!six.equals("是") && !six.equals("否")){
                        return new ErrorTip(500, "服务模式【小件同城物流】内容不正确");
                        return new ErrorTip(500, "服务模式【小件市内物流】内容不正确");
                    }
//                    //判断服务模式【小件跨城物流】
//                    if (!seven.equals("是") && !seven.equals("否")){
@@ -859,6 +999,7 @@
                    car.setCommercialInsuranceTime(DateUtil.parseDate(fifteen));
                    car.setInsertTime(new Date());
                    car.setState(1);
                    car.setAuthState(2);
                    if (ShiroKit.getUser().getRoleType() == 1){
                        car.setAddType(2);
                    }else if (ShiroKit.getUser().getRoleType() == 2){