xuhy
2023-05-11 9c0566b86975f112a7f0cf044bab322b7ffe4f0a
超省后台BUG修改
15个文件已修改
284 ■■■■ 已修改文件
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java 118 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TOrderServerResp.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEdition/tEdition.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/user/user_chpwd.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tEdition/tEdition.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
@@ -13,6 +13,7 @@
import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@@ -58,6 +59,10 @@
    @Autowired
    private ITDriverService tDriverService;
    @Autowired
    private ITDriverWorkService tDriverWorkService;
    @Autowired
    private RedisUtil redisUtil;
    /**
@@ -208,6 +213,19 @@
        for (TDriver tDriver : list) {
            if(1 == status){
                tDriver.setStatus(2);
                String value = redisUtil.getValue("DRIVER_" + tDriver.getPhone());
                redisUtil.remove(value);
                redisUtil.remove("DRIVER_" + tDriver.getPhone());
                TDriverWork tDriverWork = tDriverWorkService.selectOne(new EntityWrapper<TDriverWork>()
                        .eq("driverId", tDriver.getId())
                        .eq("status", 1)
                        .orderBy("workTime", false)
                        .last("LIMIT 1"));
                if(Objects.nonNull(tDriverWork)){
                    tDriverWork.setStatus(2);
                    tDriverWork.setOffWorkTime(new Date());
                    tDriverWorkService.updateById(tDriverWork);
                }
            }
            if(2 == status){
                tDriver.setStatus(1);
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java
@@ -9,8 +9,8 @@
import com.stylefeng.guns.modular.system.controller.resp.TDriverResp;
import com.stylefeng.guns.modular.system.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITRegionService;
import com.stylefeng.guns.modular.system.service.ITSystemConfigService;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
@@ -23,8 +23,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import com.stylefeng.guns.core.log.LogObjectHolder;
import org.springframework.web.bind.annotation.RequestParam;
import com.stylefeng.guns.modular.system.service.ITBranchOfficeService;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -48,6 +48,12 @@
    @Autowired
    private ITRegionService tRegionService;
    @Autowired
    private ITDriverService tDriverService;
    @Autowired
    private ITDriverWorkService tDriverWorkService;
    @Autowired
    private RedisUtil redisUtil;
    /**
     * 跳转到首页
@@ -246,6 +252,23 @@
        TBranchOffice tBranchOffice = tBranchOfficeService.selectById(id);
        tBranchOffice.setStatus(StatusEnum.FREEZE.getCode());
        tBranchOfficeService.updateById(tBranchOffice);
        List<TDriver> list = tDriverService.selectList(new EntityWrapper<TDriver>()
                .eq("branchOfficeId", tBranchOffice.getId()));
        for (TDriver tDriver : list) {
            String value = redisUtil.getValue("DRIVER_" + tDriver.getPhone());
            redisUtil.remove(value);
            redisUtil.remove("DRIVER_" + tDriver.getPhone());
            TDriverWork tDriverWork = tDriverWorkService.selectOne(new EntityWrapper<TDriverWork>()
                    .eq("driverId", tDriver.getId())
                    .eq("status", 1)
                    .orderBy("workTime", false)
                    .last("LIMIT 1"));
            if(Objects.nonNull(tDriverWork)){
                tDriverWork.setStatus(2);
                tDriverWork.setOffWorkTime(new Date());
                tDriverWorkService.updateById(tDriverWork);
            }
        }
        return SUCCESS_TIP;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
@@ -15,9 +15,11 @@
import com.stylefeng.guns.modular.system.controller.util.UUIDUtil;
import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TDriverWork;
import com.stylefeng.guns.modular.system.model.TRechargeRecord;
import com.stylefeng.guns.modular.system.model.TRegion;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@@ -79,6 +81,10 @@
    private HttpUtils httpUtils;
    @Autowired
    private TokenUtils tokenUtils;
    @Autowired
    private ITDriverWorkService tDriverWorkService;
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private ITRechargeRecordService tRechargeRecordService;
@@ -459,6 +465,19 @@
        TDriver tDriver = tDriverService.selectById(id);
        if(1 == status){
            tDriver.setStatus(2);
            String value = redisUtil.getValue("DRIVER_" + tDriver.getPhone());
            redisUtil.remove(value);
            redisUtil.remove("DRIVER_" + tDriver.getPhone());
            TDriverWork tDriverWork = tDriverWorkService.selectOne(new EntityWrapper<TDriverWork>()
                    .eq("driverId", tDriver.getId())
                    .eq("status", 1)
                    .orderBy("workTime", false)
                    .last("LIMIT 1"));
            if(Objects.nonNull(tDriverWork)){
                tDriverWork.setStatus(2);
                tDriverWork.setOffWorkTime(new Date());
                tDriverWorkService.updateById(tDriverWork);
            }
        }
        if(2 == status){
            tDriver.setStatus(1);
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
@@ -10,6 +10,7 @@
import com.stylefeng.guns.modular.system.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.TAgent;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TDriverWork;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.DateUtil;
@@ -23,7 +24,9 @@
import org.springframework.web.bind.annotation.ResponseBody;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDate;
import java.time.Period;
import java.util.*;
import java.util.stream.Collectors;
@@ -77,18 +80,42 @@
        List<Integer> ids = tAgentList.stream().map(TAgent::getId).collect(Collectors.toList());
        // 查询统计在线司机,待接单,服务中,已完成,已取消
        List<TDriver> onLineDriver = tDriverService.selectList(new EntityWrapper<TDriver>()
                .in("agentId", ids)
                .eq("serverStatus", 2));
                .in("agentId", ids));
        List<TAgent> tAgentAllList = tAgentService.selectList(new EntityWrapper<TAgent>());
        List<Integer> allIds = tAgentAllList.stream().map(TAgent::getId).collect(Collectors.toList());
        tOrderService.getDataStatisticsCountByIds(allIds,model);
        model.addAttribute("onLineDriverCount",onLineDriver.size());
        tOrderService.getDataStatisticsCountByIds(ids,model);
        // 查询服务中的订单列表
        List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(ids);
        List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(allIds);
        List<TOrder> orderList = tOrderService.selectList(new EntityWrapper<TOrder>());
        // 查询司机
        for (TOrderServerResp tOrderServerResp : orderServerRespList) {
            TDriver tDriver = tDriverService.selectById(tOrderServerResp.getDriverId());
            tOrderServerResp.setAvatar(tDriver.getAvatar());
            tOrderServerResp.setDriverName(tDriver.getName());
            List<TOrder> collect = orderList.stream().filter(order -> tDriver.getId().equals(order.getDriverId()) &&
                    (order.getState().equals(OrderStateEnum.WAIT_PAY.getCode())
                            || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())
                            || order.getState().equals(OrderStateEnum.FINISH.getCode()))).collect(Collectors.toList());
            // 驾龄
            Period period = Period.between(LocalDate.now(), DateUtil.dateToLocalDate(tDriver.getFirstCertificateTime()));
            tOrderServerResp.setDrivingExperience(Math.max(Math.abs(period.getYears()), 1));
            // 代驾次数
            tOrderServerResp.setValetDrivingCount(collect.size());
            // 行驶时间
            long goTime = 0;
            for (TOrder tOrder : collect) {
                // 下车时间
                Date getoffTime = tOrder.getGetoffTime();
                // 上车时间
                Date boardingTime = tOrder.getBoardingTime();
                long minutes = Duration.between(DateUtil.dateToLocalDate(getoffTime), DateUtil.dateToLocalDate(boardingTime)).toMinutes();
                goTime += Math.abs(minutes);
            }
            tOrderServerResp.setGoTime(Long.valueOf(goTime).intValue());
            // 行驶里程
            int sum = collect.stream().mapToInt(TOrder::getActualMileage).sum();
            tOrderServerResp.setMileageTraveled(sum/1000);
        }
        model.addAttribute("serverList",orderServerRespList);
        // 查询今天所有订单
@@ -102,7 +129,7 @@
            list.add(obj);
        }
        model.addAttribute("allList",list);
        List<List<String>> list1 = new ArrayList<>(allList.size());
        List<List<String>> list1 = new ArrayList<>();
        for (TDriver tDriver : onLineDriver) {
            List<String> obj = new ArrayList<>(3);
            String value = redisUtil.getValue("DRIVER" + tDriver.getId());
@@ -114,6 +141,7 @@
            obj.add(String.valueOf(tDriver.getServerStatus()));// 服务状态
            list1.add(obj);
        }
        model.addAttribute("onLineDriverCount",list1.size());
        // 拿到所有在线司机地址
        model.addAttribute("onLineDriver",list1);
        return PREFIX + "tHomePageMap.html";
@@ -137,30 +165,42 @@
        if(Objects.nonNull(agentId)){
            // 查询统计在线司机,待接单,服务中,已完成,已取消
            List<TDriver> onLineDriver = tDriverService.selectList(new EntityWrapper<TDriver>()
                    .eq("agentId", agentId)
                    .eq("serverStatus", 2));
            map.put("onLineDriverCount",onLineDriver.size());
//            tOrderService.getDataStatisticsCountGetMap(agentId,map);
//            // 查询服务中的订单列表
//            List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerList(agentId);
//            // 查询司机
//            for (TOrderServerResp tOrderServerResp : orderServerRespList) {
//                TDriver tDriver = tDriverService.selectById(tOrderServerResp.getDriverId());
//                tOrderServerResp.setAvatar(tDriver.getAvatar());
//                tOrderServerResp.setDriverName(tDriver.getName());
//            }
//            map.put("serverList",orderServerRespList);
                    .eq("agentId", agentId));
            List<TAgent> tAgentAllList = tAgentService.selectList(new EntityWrapper<TAgent>());
            List<Integer> allIds = tAgentAllList.stream().map(TAgent::getId).collect(Collectors.toList());
            tOrderService.getDataStatisticsCountByIdsGetMap(allIds,map);
            // 查询服务中的订单列表
            List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(allIds);
            List<TOrder> orderList = tOrderService.selectList(new EntityWrapper<TOrder>());
            // 查询司机
            for (TOrderServerResp tOrderServerResp : orderServerRespList) {
                TDriver tDriver = tDriverService.selectById(tOrderServerResp.getDriverId());
                tOrderServerResp.setAvatar(tDriver.getAvatar());
                tOrderServerResp.setDriverName(tDriver.getName());
                List<TOrder> collect = orderList.stream().filter(order -> tDriver.getId().equals(order.getDriverId()) &&
                        (order.getState().equals(OrderStateEnum.WAIT_PAY.getCode())
                                || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())
                                || order.getState().equals(OrderStateEnum.FINISH.getCode()))).collect(Collectors.toList());
                // 驾龄
                Period period = Period.between(LocalDate.now(), DateUtil.dateToLocalDate(tDriver.getFirstCertificateTime()));
                tOrderServerResp.setDrivingExperience(Math.max(Math.abs(period.getYears()), 1));
                // 代驾次数
                tOrderServerResp.setValetDrivingCount(collect.size());
                // 行驶时间
                long goTime = 0;
                for (TOrder tOrder : collect) {
                    // 下车时间
                    Date getoffTime = tOrder.getGetoffTime();
                    // 上车时间
                    Date boardingTime = tOrder.getBoardingTime();
                    long minutes = Duration.between(DateUtil.dateToLocalDateTime(getoffTime), DateUtil.dateToLocalDateTime(boardingTime)).toMinutes();
                    goTime += Math.abs(minutes);
                }
                tOrderServerResp.setGoTime(Long.valueOf(goTime).intValue());
                // 行驶里程
                int sum = collect.stream().mapToInt(TOrder::getActualMileage).sum();
                tOrderServerResp.setMileageTraveled(sum/1000);
            }
            map.put("serverList",orderServerRespList);
            // 查询今天所有订单
@@ -174,7 +214,7 @@
                list.add(obj);
            }
            map.put("allList",list);
            List<List<String>> list1 = new ArrayList<>(allList.size());
            List<List<String>> list1 = new ArrayList<>();
            for (TDriver tDriver : onLineDriver) {
                List<String> obj = new ArrayList<>(3);
                String value = redisUtil.getValue("DRIVER" + tDriver.getId());
@@ -186,6 +226,7 @@
                obj.add(String.valueOf(tDriver.getServerStatus()));// 服务状态
                list1.add(obj);
            }
            map.put("onLineDriverCount",list1.size());
            // 拿到所有在线司机地址
            map.put("onLineDriver",list1);
        }else {
@@ -194,10 +235,7 @@
            List<Integer> ids = tAgentList.stream().map(TAgent::getId).collect(Collectors.toList());
            // 查询统计在线司机,待接单,服务中,已完成,已取消
            List<TDriver> onLineDriver = tDriverService.selectList(new EntityWrapper<TDriver>()
                    .in("agentId", ids)
                    .eq("serverStatus", 2));
            map.put("onLineDriverCount",onLineDriver.size());
                    .in("agentId", ids));
            List<TAgent> tAgentAllList = tAgentService.selectList(new EntityWrapper<TAgent>());
            List<Integer> allIds = tAgentAllList.stream().map(TAgent::getId).collect(Collectors.toList());
@@ -205,13 +243,38 @@
            // 查询服务中的订单列表
            List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(allIds);
            List<TOrder> orderList = tOrderService.selectList(new EntityWrapper<TOrder>());
            // 查询司机
            for (TOrderServerResp tOrderServerResp : orderServerRespList) {
                TDriver tDriver = tDriverService.selectById(tOrderServerResp.getDriverId());
                tOrderServerResp.setAvatar(tDriver.getAvatar());
                tOrderServerResp.setDriverName(tDriver.getName());
                List<TOrder> collect = orderList.stream().filter(order -> tDriver.getId().equals(order.getDriverId()) &&
                        (order.getState().equals(OrderStateEnum.WAIT_PAY.getCode())
                                || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())
                                || order.getState().equals(OrderStateEnum.FINISH.getCode()))).collect(Collectors.toList());
                // 驾龄
                Period period = Period.between(LocalDate.now(), DateUtil.dateToLocalDate(tDriver.getFirstCertificateTime()));
                tOrderServerResp.setDrivingExperience(Math.max(Math.abs(period.getYears()), 1));
                // 代驾次数
                tOrderServerResp.setValetDrivingCount(collect.size());
                // 行驶时间
                long goTime = 0;
                for (TOrder tOrder : collect) {
                    // 下车时间
                    Date getoffTime = tOrder.getGetoffTime();
                    // 上车时间
                    Date boardingTime = tOrder.getBoardingTime();
                    long minutes = Duration.between(DateUtil.dateToLocalDateTime(getoffTime), DateUtil.dateToLocalDateTime(boardingTime)).toMinutes();
                    goTime += Math.abs(minutes);
                }
                tOrderServerResp.setGoTime(Long.valueOf(goTime).intValue());
                // 行驶里程
                int sum = collect.stream().mapToInt(TOrder::getActualMileage).sum();
                tOrderServerResp.setMileageTraveled(sum/1000);
            }
            map.put("serverList",orderServerRespList);
            // 查询今天所有订单
            List<TOrder> allList = tOrderService.getDataStatisticsAllListByIds(allIds,type);
            List<List<String>> list = new ArrayList<>(allList.size());
@@ -223,7 +286,7 @@
                list.add(obj);
            }
            map.put("allList",list);
            List<List<String>> list1 = new ArrayList<>(allList.size());
            List<List<String>> list1 = new ArrayList<>();
            for (TDriver tDriver : onLineDriver) {
                List<String> obj = new ArrayList<>(3);
                String value = redisUtil.getValue("DRIVER" + tDriver.getId());
@@ -235,6 +298,7 @@
                obj.add(String.valueOf(tDriver.getServerStatus()));// 服务状态
                list1.add(obj);
            }
            map.put("onLineDriverCount",list1.size());
            // 拿到所有在线司机地址
            map.put("onLineDriver",list1);
        }
@@ -251,8 +315,10 @@
        }
        HashMap<String, Object> map = new HashMap<>();
        if(Objects.nonNull(agentId)){
            List<TAgent> tAgentList = tAgentService.selectList(new EntityWrapper<TAgent>());
            List<Integer> ids = tAgentList.stream().map(TAgent::getId).collect(Collectors.toList());
            // 查询服务中的订单列表
            List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerList(agentId);
            List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(ids);
            // 查询司机
            for (TOrderServerResp tOrderServerResp : orderServerRespList) {
                TDriver tDriver = tDriverService.selectById(tOrderServerResp.getDriverId());
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
@@ -14,6 +14,7 @@
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.stylefeng.guns.modular.system.service.ITAppUserService;
import com.stylefeng.guns.modular.system.service.ITCancelOrderService;
import com.stylefeng.guns.modular.system.service.ITOrderService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -54,6 +55,8 @@
    private ITOrderService tOrderService;
    @Autowired
    private ITAppUserService tAppUserService;
    @Autowired
    private ITCancelOrderService tCancelOrderService;
    /**
     * 跳转到首页
@@ -183,7 +186,8 @@
                            String userPhone,
                            Integer state,
                            String driverName) {
        return tOrderService.getOrderList(createTime, code, source, userName, userPhone, state, driverName,2);
//        return tOrderService.getOrderList(createTime, code, source, userName, userPhone, state, driverName,2);
        return tCancelOrderService.getCancelOrderList(createTime, code, source, userName, userPhone, state, driverName);
    }
    /**
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TOrderServerResp.java
@@ -10,14 +10,14 @@
    @ApiModelProperty(value = "司机头像")
    private String avatar;
    @ApiModelProperty(value = "驾龄")
    private Integer drivingExperience = 105;
    private Integer drivingExperience;
    @ApiModelProperty(value = "代驾次数")
    private Integer valetDrivingCount = 105;
    private Integer valetDrivingCount ;
    @ApiModelProperty(value = "行驶时间")
    private Integer goTime = 105;
    private Integer goTime ;
    @ApiModelProperty(value = "行驶里程")
    private Integer mileageTraveled = 105;
    private Integer mileageTraveled ;
    public Integer getMileageTraveled() {
        return mileageTraveled;
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml
@@ -236,8 +236,16 @@
                    #{id}
                </foreach>
            </if>
            <if test="type != null">
                AND `state` = #{type}
            <if test="type == 1">
                AND `state` = 101
            </if>
            <if test="type == 2">
                AND (`state` = 107
                OR `state` = 108
                OR `state` = 109)
            </if>
            <if test="type == 3">
                AND `state` = 301
            </if>
            <if test="localDate != null">
                AND date_format(createTime, '%Y-%m-%d') LIKE concat('',#{localDate},'%')
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
@@ -288,7 +288,11 @@
                    .eq("userId", tDriver.getId()));
            Optional<BigDecimal> reduce = tRevenues.stream().map(TRevenue::getAmount).reduce(BigDecimal::add);
            // 减去充值金额
            reduce.ifPresent(bigDecimal -> model.addAttribute("cumulativeIncome", bigDecimal));
            if(reduce.isPresent()){
                model.addAttribute("cumulativeIncome", reduce.get());
            }else {
                model.addAttribute("cumulativeIncome",0);
            }
        }else {
            model.addAttribute("cumulativeOrderCount",0);
            model.addAttribute("monthOrderCount",0);
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
@@ -204,9 +204,9 @@
    @Override
    public void getDataStatisticsCountByIds(List<Integer> ids, Model model) {
        Integer pendingOrderCount = tOrderMapper.getDataStatisticsCountByIds(ids, OrderStateEnum.PENDING_ORDER.getCode(), LocalDate.now());
        Integer finishCount = tOrderMapper.getDataStatisticsCountByIds(ids, OrderStateEnum.FINISH.getCode(),LocalDate.now());
        Integer cancelCount = tOrderMapper.getDataStatisticsCountByIds(ids, OrderStateEnum.CANCELED.getCode(),LocalDate.now());
        Integer pendingOrderCount = tOrderMapper.getDataStatisticsCountByIds(ids, 1, LocalDate.now());
        Integer finishCount = tOrderMapper.getDataStatisticsCountByIds(ids, 2,LocalDate.now());
        Integer cancelCount = tOrderMapper.getDataStatisticsCountByIds(ids, 3,LocalDate.now());
        Integer serverCount = tOrderMapper.getDataStatisticsServerCountByIds(ids, LocalDate.now());
        model.addAttribute("pendingOrderCount",pendingOrderCount);
@@ -241,9 +241,9 @@
    @Override
    public void getDataStatisticsCountByIdsGetMap(List<Integer> ids, HashMap<String, Object> map) {
        Integer pendingOrderCount = tOrderMapper.getDataStatisticsCountByIds(ids, OrderStateEnum.PENDING_ORDER.getCode(), LocalDate.now());
        Integer finishCount = tOrderMapper.getDataStatisticsCountByIds(ids, OrderStateEnum.FINISH.getCode(),LocalDate.now());
        Integer cancelCount = tOrderMapper.getDataStatisticsCountByIds(ids, OrderStateEnum.CANCELED.getCode(),LocalDate.now());
        Integer pendingOrderCount = tOrderMapper.getDataStatisticsCountByIds(ids, 1, LocalDate.now());
        Integer finishCount = tOrderMapper.getDataStatisticsCountByIds(ids, 2,LocalDate.now());
        Integer cancelCount = tOrderMapper.getDataStatisticsCountByIds(ids, 3,LocalDate.now());
        Integer serverCount = tOrderMapper.getDataStatisticsServerCountByIds(ids, LocalDate.now());
        map.put("pendingOrderCount",pendingOrderCount);
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java
@@ -5,6 +5,10 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -1168,6 +1172,28 @@
        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    }
    /**
     * date转localdate
     * @param date
     * @return
     */
    public static LocalDate dateToLocalDate(Date date){
        ZoneId zoneId = ZoneId.systemDefault();
        Instant instant = date.toInstant();
        return instant.atZone(zoneId).toLocalDate();
    }
    /**
     * date转localdatetime
     * @param date
     * @return
     */
    public static LocalDateTime dateToLocalDateTime(Date date){
        ZoneId zoneId = ZoneId.systemDefault();
        Instant instant = date.toInstant();
        return instant.atZone(zoneId).toLocalDateTime();
    }
    
    
    public static void main(String[] args) throws ParseException {
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEdition/tEdition.html
@@ -22,7 +22,7 @@
                        </div>
                        <div class="hidden-xs" id="TEditionTableToolbar" role="group">
                            @if(shiro.hasPermission("/tEdition/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TEdition.openAddTEdition()"/>
                                <#button name="添加版本" icon="fa-plus" clickFun="TEdition.openAddTEdition()"/>
                            @}
                            @if(shiro.hasPermission("/tEdition/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TEdition.openTEditionDetail()" space="true"/>
management/guns-admin/src/main/webapp/WEB-INF/view/system/user/user_chpwd.html
@@ -12,14 +12,14 @@
                            <div class="form-horizontal">
                                <div class="row">
                                    <div class="col-sm-12">
                                        <#input id="oldPwd" name="原密码" underline="true" type="password"/>
                                        <#input id="oldPwd" name="原始密码" underline="true" type="password"/>
                                        <#input id="newPwd" name="新密码" underline="true" type="password"/>
                                        <#input id="rePwd" name="新密码验证" type="password"/>
                                        <#input id="rePwd" name="确认新密码" type="password"/>
                                    </div>
                                </div>
                                <div class="row btn-group-m-t">
                                    <div class="col-sm-10 col-sm-offset-5">
                                        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="UserInfoDlg.chPwd()"/>
                                        <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="UserInfoDlg.chPwd()"/>
                                    </div>
                                </div>
                            </div>
management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial.js
@@ -26,7 +26,11 @@
                }
            }
        },
        {title: '广告图图片', field: 'url', visible: true, align: 'center', valign: 'middle'},
        {title: '广告图图片', field: 'url', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                return '<img src="'+row.url+'" style="height: 60px;width: 60px"/>'
            }
        },
        {title: '端口(设备)', field: 'device', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if (row.device === 1){
management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js
@@ -59,6 +59,10 @@
            validators: {
                notEmpty: {
                    message: '身份证号码不能为空'
                },
                regexp: {
                    regexp: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
                    message: '请输入合法身份证号码'
                }
            }
        },
management/guns-admin/src/main/webapp/static/modular/system/tEdition/tEdition.js
@@ -14,16 +14,16 @@
TEdition.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
            {title: '版本编号', field: 'editionNo', visible: true, align: 'center', valign: 'middle'},
            {title: '版本文件', field: 'editionFile', visible: true, align: 'center', valign: 'middle',
        {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
        {title: '更新时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '版本编号', field: 'editionNo', visible: true, align: 'center', valign: 'middle'},
        {title: '版本文件', field: 'editionFile', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    return row.editionFile.substr(47,row.editionFile.length)
                }
            },
            {title: '版本公告', field: 'editionAnnouncement', visible: true, align: 'center', valign: 'middle'},
            {title: '端口', field: 'editionPort', visible: false, align: 'center', valign: 'middle'},
            {title: '创建时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '版本公告', field: 'editionAnnouncement', visible: true, align: 'center', valign: 'middle'},
        {title: '端口', field: 'editionPort', visible: false, align: 'center', valign: 'middle'},
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                return '<a href="#" onclick="TEdition.delete('+row.id+')" style="color:red">删除</a>'