k94314517
2024-09-10 29fc101ccd5165a1c3d762ba3a240b1a0ab4ddfe
代码初始化
已添加3个文件
已修改19个文件
591 ■■■■■ 文件已修改
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/DESUtil.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/request/HkBaseTokenRequest.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/request/WaterByMonthRequest.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformGroupWorkVO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformGroupService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -30,6 +30,7 @@
    public static final String HEADER_USER_TOKEN = "dm_user_token";
    public static final String REDIS_TOKEN_KEY = "token_";
    public static final String REDIS_HK_TOKEN_KEY = "hk_token_";
    public static final String HK_TOKEN_VALIDITY = "HK_TOKEN_VALIDITY";
    public static final String[]  ALL_SPELL_LIST_FIRST = new String[]{"A", "B", "C", "D", "E", "F", "G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    public static final int ZERO = 0 ;
    public static final int ONE = 1 ;
@@ -826,6 +827,7 @@
        AUTHED_LEAVE(9, "已授权离园","已授权离园" ),
        LEAVED(10, "已离园 ","已离园 " ),
        OVER_NUMBER(11, "已过号","已过号" ),
        CANCEL(12, "已取消","已取消" ),
        ;
        // æˆå‘˜å˜é‡
server/system_service/src/main/java/com/doumee/core/utils/DESUtil.java
@@ -1,5 +1,12 @@
package com.doumee.core.utils;
import com.alibaba.fastjson.JSONObject;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
@@ -9,6 +16,7 @@
import java.io.*;
import java.security.Key;
import java.util.Base64;
import java.util.concurrent.TimeUnit;
public class DESUtil {
@@ -169,4 +177,47 @@
        }
        return null;
    }
    /**
     * æµ·åº·åР坆
     * @param userName
     * @param hour
     * @return
     */
    public static  String generateTokenToHk(String userName,Integer hour, RedisTemplate<String,Object> redisTemplate){
         long currentTimeMillis = System.currentTimeMillis() + 1000*60*60*hour;
         String encrypt = DESUtil.encrypt("12345678",currentTimeMillis + "_" + userName );
         redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+encrypt, encrypt,1000*60*60*hour, TimeUnit.MILLISECONDS);
         return encrypt;
    }
    /**
     * æµ·åº·è§£ç 
     * @param token
     * @return
     */
    public static String verifyHkToken(String token){
        String decrypt = DESUtil.decrypt("12345678",token);
        if(StringUtils.isBlank(decrypt)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"token解析失败");
        }
        try{
            Integer index_ = decrypt.indexOf("_");
            long currentTimeMillis = Long.valueOf(decrypt.substring(Constants.ZERO,index_));
            if(currentTimeMillis<=System.currentTimeMillis()){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"token已过期");
            }
            String userName = decrypt.substring(index_+Constants.ONE);
            return userName ;
        }catch (Exception e){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"token解析失败");
        }
    }
}
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -2971,6 +2971,13 @@
        return DateToStr(date, "yyyyMMdd");
    }
    public static String afterDateHourToStr(Integer hour){
        Date date = new Date();
        Long l = date.getTime()+1000*60*60*hour;
        date.setTime(l);
        return DateToStr(date, "yyyyMMdd");
    }
    public static String beforeDateToStr(Integer days){
        Date date = new Date();
        Long l = date.getTime()-1000*60*60*24*days;
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -1,6 +1,7 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.annotation.pr.PreventRepeat;
@@ -13,7 +14,9 @@
import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.dao.business.model.Device;
import com.doumee.service.business.impl.hksync.*;
import io.swagger.annotations.Api;
@@ -22,6 +25,7 @@
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@@ -47,6 +51,14 @@
    private HkSyncPushServiceImpl hkSyncPushService;
    @Autowired
    private HkSyncLoginAuthServiceImpl hkSyncLoginAuthService;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    @PreventRepeat
    @ApiOperation("【海康】全量同步月台信息接口")
    @PostMapping("/syncPlatforms")
@@ -167,9 +179,12 @@
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type",example = "0",value = "菜单类型", required = true),
    })
    public ApiResponse<String> getHkMenuLink(Integer type){
        String token = "";//------------TODO----------康康继续写
        return ApiResponse.success( HKService.getMenuUrl(type,token));
    public ApiResponse<String> getHkMenuLink(Integer type,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        LoginUserInfo loginUserInfo = this.getLoginUser(token);
        String hkToken = DESUtil.generateTokenToHk(loginUserInfo.getUsername(),Integer.valueOf(
          systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_TOKEN_VALIDITY).getCode()
        ),redisTemplate);
        return ApiResponse.success( HKService.getMenuUrl(type,hkToken));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java
@@ -1,21 +1,28 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.PlatformBooks;
import com.doumee.dao.business.model.PlatformReason;
import com.doumee.dao.web.reqeust.PlatformBooksApplyDTO;
import com.doumee.dao.web.reqeust.PlatformBooksCheckNumDTO;
import com.doumee.dao.web.response.DriverHomeVO;
import com.doumee.service.business.PlatformBooksService;
import com.doumee.service.business.PlatformReasonService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@@ -30,18 +37,20 @@
    @Autowired
    private PlatformBooksService platformBooksService;
    @Autowired
    private PlatformReasonService platformReasonService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:platformbooks:create")
    @CloudRequiredPermission("business:platformbooks:create")
    public ApiResponse create(@RequestBody PlatformBooks platformBooks) {
        return ApiResponse.success(platformBooksService.create(platformBooks));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @RequiresPermissions("business:platformbooks:delete")
    @CloudRequiredPermission("business:platformbooks:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        platformBooksService.deleteById(id);
        return ApiResponse.success(null);
@@ -49,7 +58,7 @@
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:platformbooks:delete")
    @CloudRequiredPermission("business:platformbooks:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
@@ -62,7 +71,7 @@
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:platformbooks:update")
    @CloudRequiredPermission("business:platformbooks:update")
    public ApiResponse updateById(@RequestBody PlatformBooks platformBooks) {
        platformBooksService.updateById(platformBooks);
        return ApiResponse.success(null);
@@ -70,22 +79,53 @@
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:platformbooks:query")
    public ApiResponse<PageData<PlatformBooks>> findPage (@RequestBody PageWrap<PlatformBooks> pageWrap) {
    @CloudRequiredPermission("business:platformbooks:query")
    public ApiResponse<PageData<PlatformBooks>> findPage (@RequestBody PageWrap<PlatformBooks> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(platformBooksService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:platformbooks:exportExcel")
    @CloudRequiredPermission("business:platformbooks:exportExcel")
    public void exportExcel (@RequestBody PageWrap<PlatformBooks> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(PlatformBooks.class).export(platformBooksService.findPage(pageWrap).getRecords(), "月台入园预约信息表", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:platformbooks:query")
    @CloudRequiredPermission("business:platformbooks:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(platformBooksService.findById(id));
    }
    @ApiOperation("入园原因")
    @GetMapping("/platformReasonList")
    public ApiResponse<List<PlatformReason>> platformReasonList (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        List<PlatformReason> platformReasons = platformReasonService.findList(null);
        return ApiResponse.success(platformReasons);
    }
    @ApiOperation("查询可预约量")
    @PostMapping("/checkSurplusNum")
    public ApiResponse<BigDecimal> checkSurplusNum (@RequestBody PlatformBooksCheckNumDTO platformBooksCheckNumDTO , @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(platformBooksService.checkNum(platformBooksCheckNumDTO));
    }
    @ApiOperation("物流车预约")
    @PostMapping("/apply")
    public ApiResponse<Integer> apply (@RequestBody PlatformBooksApplyDTO platformBooksApplyDTO , @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo loginUserInfo = getLoginUser(token);
        platformBooksApplyDTO.setUserId(loginUserInfo.getMemberId());
        platformBooksApplyDTO.setDriverId(loginUserInfo.getMemberId());
        return ApiResponse.success(platformBooksService.apply(platformBooksApplyDTO));
    }
    @ApiOperation("物流车预约详情")
    @GetMapping("/getDetail")
    public ApiResponse<PlatformBooks> getDetail (@RequestParam Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        PlatformBooks platformBooks = platformBooksService.getDetail(id,getLoginUser(token).getMemberId());
        return ApiResponse.success(platformBooks);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
@@ -13,6 +13,7 @@
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.web.reqeust.JobOperateDTO;
import com.doumee.dao.web.reqeust.PlatformDataDTO;
import com.doumee.dao.web.response.PlatformGroupWorkVO;
import com.doumee.dao.web.response.PlatformWorkVO;
import com.doumee.service.business.PlatformGroupService;
import com.doumee.service.business.PlatformJobService;
@@ -212,6 +213,19 @@
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("授权离场")
    @PostMapping("/powerLevel")
    public ApiResponse powerLevel (@RequestBody JobOperateDTO jobOperateDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        jobOperateDTO.setLoginUserInfo(getLoginUser(token));
        platformJobService.powerLevel(jobOperateDTO);
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("获取月台组 ç­‰å¾…与异常挂起数据")
    @GetMapping("/getPlatformGroupWork")
    public ApiResponse<PlatformGroupWorkVO> getPlatformGroupWork (@RequestParam Integer platformGroupId, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(platformGroupService.getPlatformGroupWork(platformGroupId));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
@@ -9,6 +9,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.web.reqeust.JobDetailDTO;
import com.doumee.service.business.PlatformJobService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -41,7 +42,7 @@
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:platformjob:delete")
    public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        platformJobService.deleteById(id);
        platformJobService.delete(id);
        return ApiResponse.success(null);
    }
@@ -81,4 +82,11 @@
    public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        return ApiResponse.success(platformJobService.findById(id));
    }
    @ApiOperation("任务详情")
    @PostMapping("/jobDetail")
    @CloudRequiredPermission("business:platformjob:query")
    public ApiResponse<PlatformJob>  jobDetail (@RequestBody JobDetailDTO jobDetailDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        return ApiResponse.success(platformJobService.getDetail(jobDetailDTO));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java
@@ -1,26 +1,32 @@
package com.doumee.cloud.openapi;
import cn.emay.sdk.util.AES;
import com.doumee.api.BaseController;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.config.jwt.JwtTokenUtil;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.dao.openapi.request.*;
import com.doumee.dao.openapi.response.*;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.PlatformJobService;
import com.doumee.service.business.PlatformLogService;
import com.doumee.service.business.PlatformService;
import com.doumee.service.business.PlatformWaterGasService;
import com.doumee.service.system.SystemUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
/**
 * @author æ±Ÿè¹„蹄
@@ -43,75 +49,135 @@
    @Autowired
    private PlatformWaterGasService platformWaterGasService;
    @Autowired
    private SystemUserService systemUserService;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    @LoginNoRequired
    @ApiOperation("token解析")
    @GetMapping("/water/decodeToken")
    public ApiResponse<Map<String,Object>> decodeToken(@RequestParam String token) {
        HkBaseTokenRequest hkBaseTokenRequest = new HkBaseTokenRequest();
        hkBaseTokenRequest.setToken(token);
        return ApiResponse.success(this.decodeTokenForHk(hkBaseTokenRequest));
    }
    public Map<String,Object> decodeTokenForHk(HkBaseTokenRequest hkBaseTokenRequest){
        if(Objects.isNull(hkBaseTokenRequest)||StringUtils.isBlank(hkBaseTokenRequest.getToken())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"token参数为空");
        }
        String redisToken = (String) redisTemplate.opsForValue().get(Constants.REDIS_HK_TOKEN_KEY+hkBaseTokenRequest.getToken());
        if(StringUtils.isBlank(redisToken)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"token解析失败");
        }
        String userName = DESUtil.verifyHkToken(hkBaseTokenRequest.getToken());
        if(StringUtils.isBlank(userName)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"token解析失败");
        }
        //查询用户信息是否存在
        SystemUser systemUser = new SystemUser();
        systemUser.setUsername(userName);
        systemUser.setDeleted(Boolean.FALSE);
        SystemUser queryBean = systemUserService.findOne(systemUser);
        if(Objects.isNull(queryBean)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"token解析失败");
        }
        if(Constants.equalsInteger(queryBean.getStatus(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"用户已禁用");
        }
        redisTemplate.delete(Constants.REDIS_HK_TOKEN_KEY+hkBaseTokenRequest.getToken());
        Map<String,Object> result = new HashMap<>();
        result.put("userId",userName);
        return result;
    }
    @LoginNoRequired
    @PreventRepeat
    @ApiOperation("【用水量】本月、上月和去年同月")
    @PostMapping("/water/dataByMonth")
    @LoginNoRequired
    public ApiResponse<WaterByMonthResponse> waterDataByMonth(@RequestBody WaterByMonthRequest param) {
        return ApiResponse.success(platformWaterGasService.waterDataByMonth(param));
    }
    @LoginNoRequired
    @PreventRepeat
    @ApiOperation("【用气量】本月、上月和去年同月")
    @PostMapping("/gas/dataByMonth")
    @LoginNoRequired
    public ApiResponse<GasByMonthResponse> gasDataByMonth(@RequestBody GasByMonthRequest param) {
        return ApiResponse.success(platformWaterGasService.gasDataByMonth(param));
    }
    @LoginNoRequired
    @PreventRepeat
    @ApiOperation("【月台】按天统计运单请求参数")
    @PostMapping("/platform/orderNumByDate")
    @LoginNoRequired
    public ApiResponse<PlatformOrderNumByDateResponse> orderNumByDate(@RequestBody PlatformOrderNumByDateRequest param) {
        return ApiResponse.success(platformJobService.orderNumByDate(param));
    }
    @LoginNoRequired
    @PreventRepeat
    @ApiOperation("【月台】月台状态数量统计")
    @PostMapping("/platform/totalNumByStatus")
    @LoginNoRequired
    public ApiResponse<PlatformNumByStatusResponse> totalNumByStatus(@RequestBody PlatformNumByStatusRequest param) {
        return ApiResponse.success(platformService.getPlatformNumByStatusResponse());
    }
    @LoginNoRequired
    @PreventRepeat
    @ApiOperation("【月台】月台当前作业信息列表")
    @PostMapping("/platform/workingDataList")
    @LoginNoRequired
    public ApiResponse<List<PlatformDataListResponse>> platformWorkingDataList(@RequestBody PlatformDataListRequest param) {
        return ApiResponse.success(platformJobService.platformWorkingDataList(param));
    }
    @LoginNoRequired
    @PreventRepeat
    @ApiOperation("【月台】月台作业详情信息")
    @PostMapping("/platform/workDataInfo")
    @LoginNoRequired
    public ApiResponse<PlatformDataInfoResponse> platformWorkingDataList(@RequestBody PlatformDataInfoRequest param) {
        return ApiResponse.success(platformJobService.platformWorkingDataList(param));
    }
    @LoginNoRequired
    @PreventRepeat
    @ApiOperation("【月台】当前车辆状态数量统计")
    @PostMapping("/platform/carStatusNum")
    @LoginNoRequired
    public ApiResponse<CarNumByStatusResponse> carStatusNum(@RequestBody CarNumByStatusRequest param) {
        return ApiResponse.success(platformJobService.carStatusNum(param));
    }
    @LoginNoRequired
    @PreventRepeat
    @ApiOperation("【月台】车辆事件列表数据集合(最新N条)")
    @PostMapping("/platform/carLogsList")
    @LoginNoRequired
    public ApiResponse<List<CarLogsListResponse>> carLogsList(@RequestBody CarLogsListRequest param) {
        return ApiResponse.success(platformLogService.getCarLogsListResponse(param));
    }
    @LoginNoRequired
    @PreventRepeat
    @ApiOperation("【月台】排队队列列表集合")
    @PostMapping("/platform/queueList")
    @LoginNoRequired
    public ApiResponse<PlatformQueuingListResponse> queueList(@RequestBody PlatformQueuingListRequest param) {
        return ApiResponse.success(platformJobService.queueList(param));
    }
    @LoginNoRequired
    @PreventRepeat
    @ApiOperation("【月台】预警事件集合列表")
    @PostMapping("/platform/warningEventList")
    @LoginNoRequired
    public ApiResponse<List<PlatformWarnEventListResponse>> warningEventList(@RequestBody PlatformWarnEventListRequest param) {
        return ApiResponse.success(new ArrayList<>());
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
@@ -52,8 +52,11 @@
                .apiInfo(this.getApiInfo()).groupName("default")
                .host(host)
                .select()
                .apis( basePackage("com.doumee.cloud.openapi;com.doumee.api.common"))
//                .apis( basePackage("com.doumee.cloud.openapi;"))
                .apis( basePackage("com.doumee.cloud"))
//                .apis( basePackage("com.doumee.api.common"))
//                .apis( basePackage("com.doumee.cloud.openapi;com.doumee.api.common"))
//                .apis( basePackage("com.doumee.cloud.openapi"))
                // è®¾ç½®éœ€è¦è¢«æ‰«æçš„类,这里设置为添加了@Api注解的类
//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                .paths(PathSelectors.any())
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/PCWorkPlatformDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.doumee.dao.admin.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/2/26 11:02
 */
@Data
@ApiModel("PC端工作台数据")
public class PCWorkPlatformDataVO {
    @ApiModelProperty(value = "今日在园人数")
    private Long todayInParkUserNum;
    @ApiModelProperty(value = "今日入园人数")
    private Long todayInUserNum;
    @ApiModelProperty(value = "今日离园人数")
    private Long todayOutUserNum;
    @ApiModelProperty(value = "在园访客人数")
    private Long inParkVisitUserNum;
    @ApiModelProperty(value = "访客人次")
    private Long visitUserNum;
    @ApiModelProperty(value = "签离人次")
    private Long signLevelNum;
    @ApiModelProperty(value = "在园长期相关方人数")
    private Long inParkLwUserNum;
    @ApiModelProperty(value = "入园人次")
    private Long lwUserInNum;
    @ApiModelProperty(value = "出园人次")
    private Long lwUserOutNum;
    @ApiModelProperty(value = "今日在园车辆")
    private Long todayInParkCarNum;
    @ApiModelProperty(value = "入园车次")
    private Long todayInCarNum;
    @ApiModelProperty(value = "出园车次")
    private Long todayOutCarNum;
    @ApiModelProperty(value = "访客人员")
    private Long visitorCount;
    @ApiModelProperty(value = "劳务人员")
    private Long lwCount;
    @ApiModelProperty(value = "在场车辆")
    private Long presenceCarCount;
    @ApiModelProperty(value = "预约车辆")
    private Long visitorCarCount;
    @ApiModelProperty(value = "长期车辆")
    private Long longCarCount;
    @ApiModelProperty(value = "供应商数量")
    private Long supplierCount;
    @ApiModelProperty(value = "劳务公司人员数")
    private List<Map<String,Object>> companyUsers;
    @ApiModelProperty(value = "滞留人员数据")
    private List<Map<String,Object>> retentionUsers;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java
@@ -69,7 +69,6 @@
    @ApiModelProperty(value = "预计到场时间")
    @ExcelColumn(name="预计到场时间")
    private Date arriveDate;
    @ApiModelProperty(value = "入库类型 0整托盘 1件烟", example = "1")
@@ -140,6 +139,19 @@
    @TableField(exist = false)
    private String prefixUrl;
    @ApiModelProperty(value = "预计到场开始时间")
    @TableField(exist = false)
    private Date arriveDateStart;
    @ApiModelProperty(value = "预计到场结束时间")
    @TableField(exist = false)
    private Date arriveDateEnd;
    @ApiModelProperty(value = "审批人名称")
    @TableField(exist = false)
    private String auditName;
    @ApiModelProperty(value = "审批信息数据")
    @TableField(exist = false)
    private ApproveDataVO approveDateVO;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -59,8 +59,8 @@
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "状态 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 å·²è¿‡å·", example = "1")
    @ExcelColumn(name="状态 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 å·²è¿‡å·")
    @ApiModelProperty(value = "状态 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 å·²è¿‡å·  12取消(WMS)" , example = "1")
    @ExcelColumn(name="状态 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 å·²è¿‡å·  12取消(WMS)")
    private Integer status;
    @ApiModelProperty(value = "排序码", example = "1")
@@ -206,12 +206,17 @@
    @ApiModelProperty(value = "车辆离厂下发时间")
    @ExcelColumn(name="车辆离厂下发时间")
    private Date outHkdate;
    @ApiModelProperty(value = "车辆离厂下发备注")
    @ExcelColumn(name="车辆离厂下发备注")
    private String outHkinfo;
    @ApiModelProperty(value = "离场下发操作人", example = "1")
    @ExcelColumn(name="离场下发操作人")
    private Integer outUserId;
    @ApiModelProperty(value = "车辆进厂下发状态 0待下发 1下发中 2下发成功 3下发失败", example = "1")
    @ExcelColumn(name="车辆进厂下发状态 0待下发 1下发中 2下发成功 3下发失败")
@@ -277,6 +282,11 @@
    @ExcelColumn(name="总运输量")
    private BigDecimal totalNum;
    @ApiModelProperty(value = "确认任务时间")
    @ExcelColumn(name="确认任务时间")
    private Date confirmTaskDate;
    @ApiModelProperty(value = "前方排队数量", example = "1")
    @TableField(exist = false)
    private Integer lineUpNum;
@@ -292,6 +302,11 @@
    @ApiModelProperty(value = "作业月台名称")
    @TableField(exist = false)
    private String platformName ;
    @ApiModelProperty(value = "离场下发操作人名称", example = "1")
    @TableField(exist = false)
    private String outUserName;
    @ApiModelProperty(value = "wms业务主键")
    @TableField(exist = false)
@@ -336,6 +351,26 @@
    @TableField(exist = false)
    private Integer callType;
    @ApiModelProperty(value = "作业类型 0=安泰物流车任务;1=市公司车", example = "1")
    @TableField(exist = false)
    private Integer jobType;
    @ApiModelProperty(value = "开始任务时间起")
    @TableField(exist = false)
    private Date beginWorkDateStart;
    @ApiModelProperty(value = "开始任务时间止")
    @TableField(exist = false)
    private Date beginWorkDateEnd;
    @ApiModelProperty(value = "多状态查询 å¤šä¸ªä»¥,分割")
    @TableField(exist = false)
    private String queryStatus;
    @ApiModelProperty(value = "电子锁状态:0=未上锁 1=不分上锁 2=全部上锁")
    @TableField(exist = false)
    private Integer  lockStatus;
    public void dealTime(){
        if(Constants.equalsInteger(this.getStatus(),Constants.PlatformJobStatus.WAIT_CONFIRM.getKey())
                || Constants.equalsInteger(this.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())
server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/request/HkBaseTokenRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.doumee.dao.openapi.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2023/12/7 11:19
 */
@Data
@ApiModel("海康大屏BaseToken")
public class HkBaseTokenRequest {
    @ApiModelProperty(value = "token")
    private String token;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/request/WaterByMonthRequest.java
@@ -18,8 +18,10 @@
 */
@Data
@ApiModel("本月、上月、去年同月用水量请求参数")
public class WaterByMonthRequest {
public class WaterByMonthRequest extends HkBaseTokenRequest{
    @ApiModelProperty(value = "年月信息,格式:yyyy-MM",example = "2024-08")
    @JsonFormat(pattern = "yyyy-MM")
    private Date timeInfo;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/PlatformGroupWorkVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.doumee.dao.web.response;
import com.doumee.dao.business.model.PlatformJob;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("月台任务数据")
public class PlatformGroupWorkVO {
    @ApiModelProperty(value = "等待数量")
    private Long waitNum ;
    @ApiModelProperty(value = "异常数量")
    private Long exceptionNum ;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
@@ -117,4 +117,13 @@
    ApproveDataVO arrangeApprovedData(Integer businessId, Integer businessType, Integer memberId);
    void approved(ApproveDTO approveDTO);
    /**
     * æ ¹æ®ä¸šåŠ¡ä¸»é”®æŸ¥è¯¢ å®¡æ‰¹äººåç§°
     * @param businessId
     * @param businessType
     * @return
     */
    String getApproveUserName(Integer businessId,Integer businessType);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformGroupService.java
@@ -5,6 +5,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.PlatformGroup;
import com.doumee.dao.web.reqeust.PlatformDataDTO;
import com.doumee.dao.web.response.PlatformGroupWorkVO;
import com.doumee.dao.web.response.PlatformWorkVO;
import java.util.List;
@@ -110,6 +111,11 @@
    List<PlatformGroup> getAllPlatformGroup(PlatformDataDTO platformDataDTO, LoginUserInfo loginUserInfo);
    /**
     * èŽ·å–æœˆå°ç»„ ç­‰å¾…与异常数据
     * @param platformGroupId
     * @return
     */
    PlatformGroupWorkVO getPlatformGroupWork(Integer platformGroupId);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
@@ -36,6 +36,7 @@
     */
    void deleteById(Integer id);
    void delete(Integer id);
    /**
     * åˆ é™¤
     *
@@ -181,6 +182,11 @@
    void finishWork(JobOperateDTO jobOperateDTO);
    /**
     * æ‰‹åŠ¨æŽˆæƒè½¦è¾†ç¦»åœº
     * @param jobOperateDTO
     */
    void powerLevel(JobOperateDTO jobOperateDTO);
    /**
     * èŽ·å–æœˆå°ä¸‹çš„ä»»åŠ¡ä¿¡æ¯
     * @param groupId
     * @param loginUserInfo
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -1050,6 +1050,23 @@
        return Constants.ZERO;
    }
    @Override
    public String getApproveUserName(Integer businessId,Integer businessType){
         List<Approve> approveList = approveJoinMapper.selectJoinList(Approve.class,new MPJLambdaWrapper<Approve>()
                 .selectAll(Approve.class)
                 .selectAs(Member::getName,Approve::getMemberName)
                 .leftJoin(Member.class,Member::getId,Approve::getChekorId)
                .eq(Approve::getObjId,businessId)
                .eq(Approve::getObjType,businessType)
                .eq(Approve::getType,Constants.ZERO)
                .eq(Approve::getStatus,Constants.approveStatus.auditIng)
        );
         if(CollectionUtils.isNotEmpty(approveList)){
             List<String> names = approveList.stream().map(m->m.getMemberName()).collect(Collectors.toList());
             return String.join(",",names);
         }
         return null;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
@@ -18,6 +18,7 @@
import com.doumee.dao.business.join.ApproveJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.ApproveDataVO;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.web.reqeust.ConfirmTaskDTO;
import com.doumee.dao.web.reqeust.PlatformBooksApplyDTO;
import com.doumee.dao.web.reqeust.PlatformBooksCheckNumDTO;
@@ -51,6 +52,9 @@
    @Autowired
    private PlatformBooksMapper platformBooksMapper;
    @Autowired
    private NoticesJoinMapper noticesJoinMapper;
    @Autowired
    private ApproveTemplMapper approveTemplMapper;
@@ -159,10 +163,24 @@
                .eq(pageWrap.getModel().getPlateNum() != null, PlatformBooks::getPlateNum, pageWrap.getModel().getPlateNum())
                .eq(pageWrap.getModel().getDriverPhone() != null, PlatformBooks::getDriverPhone, pageWrap.getModel().getDriverPhone())
                .ge(pageWrap.getModel().getQueryDate() != null, PlatformBooks::getCreateDate, pageWrap.getModel().getQueryDate())
                .ge(pageWrap.getModel().getArriveDateStart() != null, PlatformBooks::getArriveDate, Utils.Date.getStart(pageWrap.getModel().getArriveDateStart()))
                .le(pageWrap.getModel().getArriveDateEnd() != null, PlatformBooks::getArriveDate, Utils.Date.getEnd(pageWrap.getModel().getArriveDateEnd()))
                .orderByDesc(PlatformBooks::getCreateDate)
        ;
        return PageData.from(platformBooksMapper.selectPage(page, queryWrapper));
        PageData<PlatformBooks> pageData = PageData.from(platformBooksMapper.selectPage(page, queryWrapper));
        for (PlatformBooks platformBooks:pageData.getRecords()) {
            if(Constants.equalsInteger(platformBooks.getStatus(),Constants.ONE)){
                String auditName = approveService.getApproveUserName(platformBooks.getId(),Constants.approveObjectType.reason);
                platformBooks.setAuditName(auditName);
    }
        }
        return pageData;
    }
    @Override
    public long count(PlatformBooks platformBooks) {
@@ -236,6 +254,7 @@
        platformBooks.setIsdeleted(Constants.ZERO);
        platformBooks.setStatus(Constants.ZERO);
        platformBooks.setDriverId(platformBooksApplyDTO.getUserId());
        platformBooks.setEditDate(new Date());
        platformBooksMapper.insert(platformBooks);
        //创建审批流信息
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
@@ -17,6 +17,7 @@
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.business.model.PlatformShowParam;
import com.doumee.dao.web.reqeust.PlatformDataDTO;
import com.doumee.dao.web.response.PlatformGroupWorkVO;
import com.doumee.dao.web.response.PlatformWorkVO;
import com.doumee.service.business.PlatformGroupService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -303,5 +304,28 @@
    @Override
    public PlatformGroupWorkVO getPlatformGroupWork(Integer platformGroupId){
        PlatformGroupWorkVO platformGroupWorkVO = new PlatformGroupWorkVO();
        platformGroupWorkVO.setExceptionNum(platformJobJoinMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
                .eq(PlatformJob::getPlatformGroupId,platformGroupId)
                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.EXCEPTION.getKey())
            )
        );
        platformGroupWorkVO.setWaitNum(platformJobJoinMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
                        .eq(PlatformJob::getPlatformGroupId,platformGroupId)
                        .in(PlatformJob::getStatus,
                                Constants.PlatformJobStatus.WAIT_CALL.getKey(),
                                Constants.PlatformJobStatus.IN_WAIT.getKey(),
                                Constants.PlatformJobStatus.CALLED.getKey()
                        )
                )
        );
        return platformGroupWorkVO;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -17,6 +17,7 @@
import com.doumee.dao.business.model.*;
import com.doumee.dao.openapi.request.*;
import com.doumee.dao.openapi.response.*;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.reqeust.*;
import com.doumee.dao.web.response.DriverHomeVO;
import com.doumee.dao.web.response.LineUpVO;
@@ -94,6 +95,15 @@
        platformJobMapper.deleteById(id);
    }
    @Override
    public void delete(Integer id) {
        platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
                        .set(PlatformJob::getIsdeleted,Constants.ONE)
                        .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey())
                .eq(PlatformJob::getId,id));
    }
    @Override
    public void delete(PlatformJob platformJob) {
        UpdateWrapper<PlatformJob> deleteWrapper = new UpdateWrapper<>(platformJob);
@@ -150,8 +160,10 @@
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
                .selectAs(SystemUser::getUsername,PlatformJob::getOutUserName)
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
                .leftJoin(SystemUser.class,SystemUser::getId,PlatformJob::getOutUserId)
                .eq(pageWrap.getModel().getId() != null, PlatformJob::getId, pageWrap.getModel().getId())
                .eq(pageWrap.getModel().getCreator() != null, PlatformJob::getCreator, pageWrap.getModel().getCreator())
                .ge(pageWrap.getModel().getCreateDate() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
@@ -225,6 +237,12 @@
                .eq(pageWrap.getModel().getInType() != null, PlatformJob::getInType, pageWrap.getModel().getInType())
                .eq(pageWrap.getModel().getTotalNum() != null, PlatformJob::getTotalNum, pageWrap.getModel().getTotalNum())
                .eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId())
                .apply(pageWrap.getModel().getQueryStatus() != null, " find_in_set(t.`STATUS`,'"+pageWrap.getModel().getQueryStatus()+"')")
                .ge(pageWrap.getModel().getBeginWorkDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(pageWrap.getModel().getBeginWorkDateStart()))
                .le(pageWrap.getModel().getBeginWorkDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getBeginWorkDateEnd()))
                .eq(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ONE,pageWrap.getModel().getJobType()), PlatformJob::getType, Constants.platformJobType.sgscxh)
                .ne(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ZERO,pageWrap.getModel().getJobType()), PlatformJob::getType, Constants.platformJobType.sgscxh)
        ;
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
@@ -275,7 +293,7 @@
                                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey()).or()
                                .apply(" ( t.status = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and t.PLATFORM_GROUP_ID = "+pageWrap.getModel().getPlatformGroupId()+" ) ")
                )
                .like(PlatformJob::getArriveDate,DateUtil.dateTypeToString(new Date(),"yyyy-MM-dd"))
//                .like(PlatformJob::getArriveDate,DateUtil.dateTypeToString(new Date(),"yyyy-MM-dd"))
                .orderByDesc(PlatformJob::getStatus)
        ;
        IPage<PlatformJob> platformJobIPage = platformJobJoinMapper.selectJoinPage(page,PlatformJob.class,queryWrapper);
@@ -946,6 +964,38 @@
    /**
     * æŽˆæƒç¦»å›­
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void powerLevel(JobOperateDTO jobOperateDTO){
        if(Objects.isNull(jobOperateDTO)
                || Objects.isNull(jobOperateDTO.getJobId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
        if(Objects.isNull(platformJob)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,业务状态已流转!");
        }
        PlatformJob oldPlatformJob = new PlatformJob();
        BeanUtils.copyProperties(platformJob,oldPlatformJob);
        platformJob.setOutUserId(jobOperateDTO.getLoginUserInfo().getId());
        platformJob.setOutHkdate(new Date());
        platformJob.setStatus(Constants.PlatformJobStatus.AUTHED_LEAVE.getKey());
        platformJob.setEditDate(new Date());
        platformJobMapper.updateById(platformJob);
        //存储操作日志
        savePlatformLog(Constants.PlatformJobLogType.AUTHED_LEAVE.getKey(),oldPlatformJob,platformJob ,
                Constants.PlatformJobLogType.AUTHED_LEAVE.getInfo());
        //TODO æŽˆæƒè½¦è¾†ç¦»åœºæƒé™
    }
    /**
     * æœˆå°ç›¸æœºæŽ¨é€ å¼€å§‹ä½œä¸š
     * @param jobOperateDTO
     */