k94314517
2024-10-30 47a53d22a025c0ed095c9c4ed2e1ce35ce54184e
代码初始化
已添加34个文件
已修改43个文件
已重命名2个文件
2853 ■■■■■ 文件已修改
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/api/system/SystemController.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/business/dao/SmsEmailMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/resources/mappers/SystemUserMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/FightingAdminController.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/OnSitDispatchController.java 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunController.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/WholeProvinceController.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MenuDataResponse.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmDataVO.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmHandleDataVO.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/ArriveGoodsVO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/CarWorkSituationVO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/DeviceAlarmDataVO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyDataVO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/FightingAdminBoardVO.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/GeneralVO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/JobDataVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OilDataVO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OnSitDispatchBoardVO.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformDurationVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformGroupFinishVO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformJobRunBoardVO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SalesOperationVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityDeviceDataVO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/StockRataVO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportMeasureVO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportTaskVO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WholeProvinceBoardVO.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WorkEfficiencyVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/YearDeviceDataVO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/EmayService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -1209,9 +1209,13 @@
        response.setPrefix(prefix);
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
            String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
            String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH)
                    .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
            String localPath = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_LOCAL_RESOURCE_PATH)
                    .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
            for (Multifile multifile:multifileList) {
                multifile.setFileurlFull(path + multifile.getFileurl());
                multifile.setLocalFileurlFull(localPath + multifile.getFileurl());
            }
            response.setMultifileList(multifileList);
        }
server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java
@@ -10,6 +10,7 @@
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.dto.LoginPhoneDTO;
import com.doumee.service.common.CaptchaService;
import com.doumee.service.system.SystemLoginService;
import com.doumee.service.system.SystemUserService;
@@ -70,6 +71,26 @@
            return ApiResponse.failed(ResponseStatus.SERVER_ERROR);
        }
    }
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("短信验证码登录")
    @PostMapping("/loginByPhone")
    @LoginNoRequired
    public ApiResponse<String> loginByPhone (@Validated @RequestBody LoginPhoneDTO dto, ServerWebExchange serverWebExchange) {
        try {
            ServerHttpRequest request = serverWebExchange.getRequest();
            LoginUserInfo user = systemLoginService.loginByPhone(dto,request);
            String token = jwtTokenUtil.generateToken(user);
            return ApiResponse.success(token);
        }catch (BusinessException e){
            return ApiResponse.failed(e.getCode(),e.getMessage());
        }catch (Exception e){
            e.printStackTrace();
            return ApiResponse.failed(ResponseStatus.SERVER_ERROR);
        }
    }
    @PreventRepeat(limit = 10, lockTime = 10000)
@@ -136,6 +157,9 @@
    public ApiResponse<String> logout(@RequestHeader(Constants.HEADER_USER_TOKEN) String oldToken){
        try {
             jwtTokenUtil.logout(oldToken);
        }catch (BusinessException e){
            return ApiResponse.failed(e.getCode(),e.getMessage());
        }catch (Exception e){
@@ -145,6 +169,8 @@
    }
    /**
     * åˆ·æ–°JWT令牌,用旧的令牌换新的令牌
     */
server/system_service/src/main/java/com/doumee/api/system/SystemController.java
@@ -1,25 +1,45 @@
package com.doumee.api.system;
import com.doumee.api.BaseController;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.biz.system.SystemUserBiz;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.dto.UpdatePwdDto;
import com.doumee.service.system.SystemLoginService;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.util.HttpUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
 * @author Eva.Caesar Liu
@@ -38,6 +58,7 @@
    @Autowired
    private SystemLoginService systemLoginService;
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("登录")
    @PostMapping("/login")
@@ -54,6 +75,8 @@
        return ApiResponse.success(null);
    }
    @Trace(withRequestParameters = false)
    @ApiOperation("修改当前用户密码")
    @PostMapping("/updatePwd")
server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -165,6 +165,16 @@
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号【"+systemUser.getEmpNo()+"】已存在");
            }
        }
       //验证手机号
        if (StringUtils.isNotBlank(systemUser.getMobile())) {
            queryUserDto = new SystemUser();
            queryUserDto.setDeleted(Boolean.FALSE);
            queryUserDto.setMobile(systemUser.getMobile());
            user = systemUserService.findOne(queryUserDto);
            if (user != null) {
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号【"+systemUser.getMobile()+"】已存在");
            }
        }
        // ç”Ÿæˆå¯†ç ç›
        String salt = RandomStringUtils.randomAlphabetic(6);
        // ç”Ÿæˆå¯†ç 
@@ -233,6 +243,16 @@
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号【"+systemUser.getEmpNo()+"】已存在");
            }
        }
        //验证手机号
        if (StringUtils.isNotBlank(systemUser.getMobile())) {
            queryUserDto = new SystemUser();
            queryUserDto.setMobile(systemUser.getMobile());
            queryUserDto.setDeleted(Boolean.FALSE);
            user = systemUserService.findOne(queryUserDto);
            if (user != null && !user.getId().equals(systemUser.getId())) {
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号【"+systemUser.getMobile()+"】已存在");
            }
        }
        // ä¿®æ”¹ç”¨æˆ·
        systemUserService.updateById(systemUser);
        // è®¾ç½®éƒ¨é—¨
server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -1,28 +1,41 @@
package com.doumee.config.jwt;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.HttpsUtil;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Component
@Slf4j
public class JwtTokenUtil {
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    @Resource
    private JwtProperties jwtProperties;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz ;
    /**
     * ç”Ÿæˆtoken令牌
@@ -113,12 +126,50 @@
     */
    public void logout(String token) {
        try {
            //登出海康系统数据
            LoginUserInfo loginUserInfo = this.getUserInfoByToken(token);
            String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HTTPS).getCode() +
                    systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HOST).getCode() +
                    systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LOGIN_OUT_URL).getCode();
            if(StringUtils.isNotBlank(loginUserInfo.getHkMenuToken())){
                log.info("调起海康退出登录=======================>"+url+"?token="+loginUserInfo.getHkMenuToken());
//                this.hkLoginOut(url+"?token="+loginUserInfo.getHkMenuToken());
                HttpsUtil.get(url+"?token="+loginUserInfo.getHkMenuToken(),true);
            }
            redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);//删除老的token
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void hkLoginOut(String url){
        try {
            // åˆ›å»ºHttpClient对象
            HttpClient httpClient = HttpClientBuilder.create().build();
            // åˆ›å»ºHttpGet对象,指定要访问的URL地址
            HttpGet httpGet = new HttpGet(url);
            // å‘送GET请求,获取响应
            HttpResponse response = httpClient.execute(httpGet);
            // èŽ·å–å“åº”çŠ¶æ€ç 
            int statusCode = response.getStatusLine().getStatusCode();
            // åˆ¤æ–­è¯·æ±‚是否成功
            if (statusCode == 200) {
                // èŽ·å–å“åº”å†…å®¹
                HttpEntity entity = response.getEntity();
                String responseContent = EntityUtils.toString(entity, "UTF-8");
                System.out.println(responseContent);
                log.info("调起海康退出登录返回信息=======================>"+responseContent);
            } else {
                System.out.println("请求失败,响应码:" + statusCode);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * éªŒè¯ä»¤ç‰Œ
     *
server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
@@ -40,6 +40,7 @@
    private Integer needChangePwd;
    private String mobile;
    private String sessionId;
    private String hkMenuToken;
    private Date loginDate;
    @ApiModelProperty(value = "账户来源:0=后台添加 ï¼› 2=司机注册")
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -39,6 +39,7 @@
    public static final String LED_CONTENT_SPEED ="LED_CONTENT_SPEED" ;
    public static final String HK_HOST ="HK_HOST" ;
    public static final String HK_APPKEY ="HK_APPKEY" ;
    public static final String LOGIN_OUT_URL ="LOGIN_OUT" ;
    public static final String HK_APPSECRET ="HK_APPSECRET" ;
    public static final String HK_HTTPS ="HK_HTTPS" ;
    public static final String HK_PUSH_URL = "HK_PUSH_URL";
@@ -46,6 +47,8 @@
    public static final String HK_ROOTORG_NAME ="HK_ROOTORG_NAME" ;
    public static final String PLATFORM ="PLATFORM" ;
    public static final String POWER_MINUTE ="POWER_MINUTE" ;
    public static final String SPECIAL_COMPANY_ID ="SPECIAL_COMPANY_ID" ;
    public static final String RESERVATION_TOTAL_NUM ="RESERVATION_TOTAL_NUM" ;
    public static final String SIGN_IN_PLACE_LAT ="SIGN_IN_PLACE_LAT" ;
    public static final String SIGN_IN_PLACE_LNT ="SIGN_IN_PLACE_LNT" ;
@@ -104,6 +107,7 @@
    public static final String FTP_USERNAME ="FTP_USERNAME" ;
    public static final String FTP_PWD ="FTP_PWD" ;
    public static final String FTP_RESOURCE_PATH ="FTP_RESOURCE_PATH" ;
    public static final String FTP_LOCAL_RESOURCE_PATH ="FTP_LOCAL_RESOURCE_PATH" ;
    public static final String ERP_ORGLIST_URL ="ERP_ORGLIST_URL" ;
    public static final String ERP_USERLIST_URL ="ERP_USERLIST_URL" ;
    public static final String ERP_APPROVE_URL ="ERP_APPROVE_URL" ;
@@ -864,7 +868,7 @@
        CALLING(1, "叫号中","${param}请前往${param2}等待作业"),
        DONE(2, "作业完成","${param}作业完成,请尽快驶离" ),
        WRONG_IN(3, "错误停靠","${param}月台停靠错误,请尽快驶离" ),
        TIMEOUT_IN(4, "超时停靠","${param}月台停靠超时,请尽快驶离请尽快驶离" ),
        TIMEOUT_IN(4, "超时停靠","${param}月台停靠超时,请尽快驶离" ),
        TIMEOUT_WORK(5, "作业超时","${param}作业超时" ),
        ;
@@ -879,6 +883,7 @@
            this.info = info;
            this.name = name;
        }
        public static String getName(int index) {
            for (PlatformBroadcastContent c : PlatformBroadcastContent.values()) {
                if (c.getKey() == index) {
server/system_service/src/main/java/com/doumee/dao/business/dao/SmsEmailMapper.java
ÎļþÃû´Ó server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsEmailMapper.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.doumee.dao.business;
package com.doumee.dao.business.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.SmsEmail;
server/system_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.dao.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
 * @author Eva.Caesar Liu
 * @date 2023/02/14 11:14
 */
@Data
@ApiModel("手机号登录参数")
public class LoginPhoneDTO implements Serializable {
    @NotBlank(message = "手机号不能为空")
    @ApiModelProperty(value = "手机号")
    private String phone;
    @NotBlank(message = "验证码不能为空")
    @ApiModelProperty(value = "验证码")
    private String code;
}
server/system_service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
@@ -40,6 +40,7 @@
    @ApiModelProperty(value = "角色ID")
    private Integer roleId;
    @ApiModelProperty(value = "企业编码")
    private Integer companyId;
@@ -52,5 +53,11 @@
    @ApiModelProperty(value = "用户类型:0=相关方;1=内部" ,hidden = true)
    private Integer companyType;
    @ApiModelProperty(value = "是否查询固定人员:0=否;1=是" )
    private Integer querySpecial;
    @ApiModelProperty(value = "是否查询固定人员组织主键" ,hidden = true)
    private String companySpecialId;
}
server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java
@@ -79,4 +79,10 @@
    @TableField(exist = false)
    private String fileurlFull;
    @ApiModelProperty(value = "内网文件地址")
    @TableField(exist = false)
    private String localFileurlFull;
}
server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java
@@ -3,6 +3,7 @@
import com.doumee.core.model.LoginUserInfo;
import com.doumee.dao.system.dto.LoginByOpenidDTO;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.dto.LoginPhoneDTO;
import org.springframework.http.server.reactive.ServerHttpRequest;
import javax.servlet.http.HttpServletRequest;
@@ -23,6 +24,9 @@
    LoginUserInfo loginByPasswordNew (LoginDTO dto, ServerHttpRequest request);
    LoginUserInfo loginByPhone(LoginPhoneDTO dto, ServerHttpRequest request);
    LoginUserInfo driverLogin(LoginDTO dto, ServerHttpRequest request);
    /**
     * æ ¹æ® openId登录
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.system.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.config.jwt.JwtTokenUtil;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
@@ -7,9 +8,12 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.dao.CompanyMapper;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.SmsEmail;
import com.doumee.dao.system.dto.LoginByOpenidDTO;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.dto.LoginPhoneDTO;
import com.doumee.dao.system.model.*;
import com.doumee.service.common.CaptchaService;
import com.doumee.service.system.*;
@@ -43,6 +47,9 @@
    @Lazy
    @Autowired
    private SystemUserService systemUserService;
    @Autowired
    private SmsEmailMapper smsEmailMapper;
    @Lazy
    @Autowired
@@ -172,6 +179,80 @@
    @Override
    public LoginUserInfo loginByPhone(LoginPhoneDTO dto, ServerHttpRequest request) {
        SystemLoginLog loginLog = new SystemLoginLog();
        loginLog.setLoginUsername(dto.getPhone());
        loginLog.setLoginTime(new Date());
        loginLog.setSystemVersion(systemVersion);
        loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp()));
        if(request!=null&&request.getHeaders()!=null && request.getHeaders().size()>0){
            loginLog.setIp(Utils.User_Client.getIP(request));
            loginLog.setPlatform(Utils.User_Client.getPlatform(request));
            loginLog.setClientInfo(Utils.User_Client.getBrowser(request));
            loginLog.setOsInfo(Utils.User_Client.getOS(request));
        }
        loginLog.setServerIp(Utils.Server.getIP());
        // æ ¹æ®ç”¨æˆ·åæŸ¥è¯¢ç”¨æˆ·å¯¹è±¡
        SystemUser queryDto = new SystemUser();
        queryDto.setMobile(dto.getPhone());
        queryDto.setDeleted(Boolean.FALSE);
        SystemUser user = systemUserService.findOne(queryDto);
        if (user == null) {
            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
        }
        if(!Constants.equalsInteger(user.getSource(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN);
        }
        if(isDebug == null  || !isDebug){
            //验证 çŸ­ä¿¡ç 
            SmsEmail model = smsEmailMapper.selectOne(new QueryWrapper<SmsEmail>().lambda()
                    .eq(SmsEmail::getType, Constants.ZERO)
                    .eq(SmsEmail::getPhone, dto.getPhone())
                    .eq(SmsEmail::getRemark, dto.getCode())
                    .eq(SmsEmail::getIsdeleted, Constants.ZERO)
            );
            if(model == null){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码不正确,请重新发送再试!");
            }
            if(!Constants.equalsInteger(model.getStatus(),Constants.ZERO)){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码已失效,请重新发送再试!");
            }
            if(model.getCreateDate() !=null &&
                    System.currentTimeMillis() - model.getCreateDate().getTime() > 3*60*1000){
                model.setStatus(Constants.ONE);
                model.setEditDate(new Date());
                smsEmailMapper.updateById(model);
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码已失效,请重新发送再试~");
            }
            model.setStatus(Constants.ONE);
            model.setEditDate(new Date());
            smsEmailMapper.updateById(model);
        }
        Company company = new Company();
        if(Objects.nonNull(user.getCompanyId())){
            company = companyMapper.selectById(user.getCompanyId());
        }
        // èŽ·å–ç™»å½•ç”¨æˆ·ä¿¡æ¯
        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
        SystemRole rt = new SystemRole();
        rt.setDeleted(Boolean.FALSE);
        //数据部门权限集合
        user.setCompanyIdList(systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user));
        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,company,null);
        return  userInfo;
    }
    @Override
    public LoginUserInfo driverLogin(LoginDTO dto, ServerHttpRequest request) {
        SystemLoginLog loginLog = new SystemLoginLog();
server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
@@ -32,6 +32,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -140,6 +141,15 @@
            List<Integer> collect = list.stream().map(s -> s.getId()).collect(Collectors.toList());
            pageWrap.getModel().setDepartmentIds(collect);
        }*/
        //查询特殊的42人配置
        if(Objects.nonNull(pageWrap.getModel()) && Constants.equalsInteger(pageWrap.getModel().getQuerySpecial(),Constants.ONE)){
            String companySpecialId = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SPECIAL_COMPANY_ID).getCode();
            if(StringUtils.isNotBlank(companySpecialId)){
                pageWrap.getModel().setCompanySpecialId(companySpecialId);
            }
        }
        // æ‰§è¡ŒæŸ¥è¯¢
        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
        List<SystemUserListVO> userList = systemUserMapper.selectManageList(pageWrap.getModel(), pageWrap.getOrderByClause());
server/system_service/src/main/resources/mappers/SystemUserMapper.xml
@@ -75,6 +75,9 @@
      <if test="dto.companyType != null ">
        AND  sd.`type` = #{dto.companyType}
      </if>
      <if test="dto.querySpecial != null and dto.querySpecial = 1 ">
            AND find_in_set(#{dto.companySpecialId},REPLACE(sd.company_path,"/",","))
      </if>
    </where>
    ${orderByClause}
  </select>
server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
@@ -67,12 +67,19 @@
    @ApiOperation("【访客系统】定时更新微信公众号accesstoken")
    @GetMapping("/timer/wxtoken/updateWxAccessToken")
    ApiResponse updateWxAccessToken();
    @ApiOperation("【数字化月台】月台作业报警业务")
    @GetMapping("/timer/platformJob/platformJobTimer")
    ApiResponse platformJobTimer();
    @ApiOperation("【访客系统】访客数据即将超时预警")
    @GetMapping("/timer/visit/visitTimeOut")
    ApiResponse visitTimeOut() ;
    @ApiOperation("【数字化月台】月台停靠超时报警业务")
    @GetMapping("/timer/platformJob/platformJobTimer")
    ApiResponse platformJobTimer();
    @ApiOperation("【数字化月台】月台作业超时报警业务")
    @GetMapping("/timer/platformJob/platformJobWorkTimeOut")
    ApiResponse platformJobWorkTimeOut();
    @ApiOperation("【数字化月台】月台等待作业超时业务")
    @GetMapping("/timer/platformJob/platformJobWaitTimeOut")
    ApiResponse platformJobWaitTimeOut();
}
server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java
@@ -36,14 +36,27 @@
    private PlatformJobService platformJobService;
    @ApiOperation("月台作业报警业务")
    @ApiOperation("月台停靠超时报警业务")
    @GetMapping("/platformJobTimer")
    public ApiResponse platformJobTimer() {
        platformJobService.timeOutReport();
        platformJobService.timeOutCallIn();
        platformJobService.timeOutWork();
        return ApiResponse.success("月台作业报警业务");
        return ApiResponse.success("月台停靠超时报警业务");
    }
    @ApiOperation("月台作业超时报警业务")
    @GetMapping("/platformJobWorkTimeOut")
    public ApiResponse platformJobWorkTimeOut() {
        platformJobService.timeOutWork();
        return ApiResponse.success("月台作业超时报警业务");
    }
    @ApiOperation("月台等待作业超时业务")
    @GetMapping("/platformJobWaitTimeOut")
    public ApiResponse platformJobWaitTimeOut() {
        platformJobService.timeOutCallIn();
        return ApiResponse.success("月台等待作业超时业务");
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java
@@ -4,6 +4,8 @@
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.core.annotation.excel.ExcelExporter;
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.model.LoginUserInfo;
import com.doumee.core.model.PageData;
@@ -19,6 +21,7 @@
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Objects;
/**
 * @author æ±Ÿè¹„蹄
@@ -39,6 +42,9 @@
    public ApiResponse create(@RequestBody CarUseBook carUseBook,@RequestHeader(Constants.HEADER_USER_TOKEN) String token)  throws Exception {
        LoginUserInfo loginUserInfo = getLoginUser(token);
        carUseBook.setCreator(loginUserInfo.getId());
        if(Objects.isNull(loginUserInfo.getMemberId())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非内部人员无法进行该操作");
        }
        carUseBook.setMemberId(loginUserInfo.getMemberId());
        return ApiResponse.success(carUseBookService.create(carUseBook));
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java
@@ -103,6 +103,15 @@
        return ApiResponse.success(companyService.findPage(pageWrap));
    }
    @ApiOperation("组织列表")
    @PostMapping("/list")
    @CloudRequiredPermission("business:company:query")
    public ApiResponse<List<Company>> list (@RequestBody Company company,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        return ApiResponse.success(companyService.findList(company));
    }
    @ApiOperation("组织树查询")
    @GetMapping("/tree")
    @ApiImplicitParams({
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
@@ -4,7 +4,10 @@
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.core.annotation.excel.ExcelExporter;
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.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
@@ -16,6 +19,7 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Objects;
/**
 * @author æ±Ÿè¹„蹄
@@ -34,7 +38,11 @@
    @PostMapping("/create")
    @CloudRequiredPermission("business:hiddendanger:create")
    public ApiResponse create(@RequestBody HiddenDanger hiddenDanger,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        hiddenDanger.setLoginUserInfo(this.getLoginUser(token));
        LoginUserInfo loginUserInfo = this.getLoginUser(token);
        if(Objects.isNull(loginUserInfo.getMemberId())||Objects.isNull(loginUserInfo)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前账户无法进行该操作");
        }
        hiddenDanger.setLoginUserInfo(loginUserInfo);
        return ApiResponse.success(hiddenDangerService.create(hiddenDanger));
    }
@@ -58,7 +66,11 @@
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:hiddendanger:update")
    public ApiResponse updateById(@RequestBody HiddenDanger hiddenDanger,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        hiddenDanger.setLoginUserInfo(this.getLoginUser(token));
        LoginUserInfo loginUserInfo = this.getLoginUser(token);
        if(Objects.isNull(loginUserInfo.getMemberId())||Objects.isNull(loginUserInfo)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前账户无法进行该操作");
        }
        hiddenDanger.setLoginUserInfo(loginUserInfo);
        hiddenDangerService.updateById(hiddenDanger);
        return ApiResponse.success(null);
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -1,9 +1,11 @@
package com.doumee.cloud.admin;
import com.alibaba.fastjson.JSONObject;
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.config.jwt.JwtProperties;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.*;
@@ -35,10 +37,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
 * @author æ±Ÿè¹„蹄
@@ -71,6 +71,8 @@
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    @Autowired
    private JwtProperties jwtProperties;
    @PreventRepeat
    @ApiOperation("【海康】全量同步月台信息接口")
@@ -241,9 +243,34 @@
        String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HTTPS).getCode() +
        systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HOST).getCode()
                 + HKService.getMenuUrl(type,hkToken);
        try {
            if(redisTemplate!=null&& jwtProperties!=null){
                loginUserInfo.setHkMenuToken(hkToken);
                redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token, JSONObject.toJSONString(loginUserInfo),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return ApiResponse.success( url);
    }
    @ApiOperation(value = "获取安防平台系统免密菜单配置" )
    @GetMapping("/getHkMenuConfig")
    public ApiResponse<List<Integer>> getHkMenuConfig(@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        LoginUserInfo loginUserInfo = getLoginUser(token);
        List<Integer> menuConfigList = new ArrayList<>();
        if(Objects.nonNull(loginUserInfo) && StringUtils.isNotBlank(loginUserInfo.getUsername())){
            menuConfigList = hkSyncPlatformsService.getMenuConfig(loginUserInfo.getUsername());
        }
        return ApiResponse.success(menuConfigList);
    }
    @ApiOperation("【海康】设置LED屏文案")
    @PostMapping("/setLedContent")
    public ApiResponse<List<Map<String,Object>>> setLedContent(@RequestBody TransparentChannelSingleRequest body  , HttpServletResponse response) {
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java
@@ -4,6 +4,8 @@
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.core.annotation.excel.ExcelExporter;
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.model.LoginUserInfo;
import com.doumee.core.model.PageWrap;
@@ -25,6 +27,7 @@
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
 * @author æ±Ÿè¹„蹄
@@ -118,6 +121,9 @@
    @PostMapping("/apply")
    public ApiResponse<Integer> apply (@RequestBody PlatformBooksApplyDTO platformBooksApplyDTO , @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo loginUserInfo = getLoginUser(token);
        if(Objects.isNull(loginUserInfo.getMemberId())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非内部人员无法进行该操作");
        }
        platformBooksApplyDTO.setUserId(loginUserInfo.getMemberId());
        platformBooksApplyDTO.setDriverId(loginUserInfo.getMemberId());
        return ApiResponse.success(platformBooksService.apply(platformBooksApplyDTO));
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
package com.doumee.cloud.board;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.dao.web.response.platformReport.*;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/10/28 13:42
 */
@Api(tags = "能耗看板")
@RestController
@Slf4j
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/energy")
public class EnergyController extends BaseController {
    @LoginNoRequired
    @ApiOperation("中心数据")
    @GetMapping("/centerData")
    public ApiResponse<EnergyBoardVO> centerData() {
        EnergyBoardVO data = new EnergyBoardVO();
        Random random = new Random();
        data.setSmokeBoxTotal(random.nextInt(20000));
        data.setCarbon(new BigDecimal(random.nextInt(1000)));
        data.setElectricityQuantity(random.nextInt(1000));
        data.setElectricityYear(new BigDecimal(random.nextInt(10)));
        data.setElectricityMonth(new BigDecimal(random.nextInt(10)));
        data.setWaterQuantity(new BigDecimal(random.nextInt(1000)));
        data.setWaterYear(new BigDecimal(random.nextInt(10)));
        data.setWaterMonth(new BigDecimal(random.nextInt(10)));
        data.setGasQuantity(new BigDecimal(random.nextInt(1000)));
        data.setGasYear(new BigDecimal(random.nextInt(10)));
        data.setGasMonth(new BigDecimal(random.nextInt(10)));
        data.setOfficeQuantity(random.nextInt(20));
        data.setPowerQuantity(random.nextInt(20));
        data.setWorkHouseQuantity(random.nextInt(20));
        data.setParkQuantity(random.nextInt(20));
        data.setTodayElectricity(random.nextInt(20));
        data.setMonthElectricity(random.nextInt(20));
        data.setYesterdayElectricity(random.nextInt(20));
        return ApiResponse.success(data);
    }
    @LoginNoRequired
    @ApiOperation("实时负荷曲线")
    @GetMapping("/loadCurve")
    public ApiResponse<List<EnergyDataVO>> loadCurve() {
        List<EnergyDataVO> loadCurveList = new ArrayList<>();
        Random random = new Random();
        for (int i = 1; i <= 23; i++) {
            EnergyDataVO data = new EnergyDataVO();
            data.setTimeData(StringUtils.leftPad(i+"",2,"0") +":00");
            data.setEnergy(new BigDecimal(random.nextInt(200)));
            loadCurveList.add(data);
        }
        return ApiResponse.success(loadCurveList);
    }
    @LoginNoRequired
    @ApiOperation("月能耗、油耗分析")
    @GetMapping("/energyDataList")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "查询类型:0=水;1=气;2=电;3=油耗", required = true),
    })
    public ApiResponse<List<EnergyDataVO>> energyDataList(@RequestParam Integer type) {
        List<EnergyDataVO> energyDataVOList = new ArrayList<>();
        Random random = new Random();
        for (int i = 1; i <= 12; i++) {
            EnergyDataVO data = new EnergyDataVO();
            data.setTimeData(i +"月");
            data.setEnergy(new BigDecimal(random.nextInt(200)));
            energyDataVOList.add(data);
        }
        return ApiResponse.success(energyDataVOList);
    }
    @LoginNoRequired
    @ApiOperation("上月油耗排行")
    @GetMapping("/lastMonthOil")
    public ApiResponse<List<OilDataVO>> lastMonthOil() {
        List<OilDataVO> oilDataVOList = new ArrayList<>();
        Random random = new Random();
        BigDecimal maxOil = BigDecimal.ZERO;
        BigDecimal lastOil = BigDecimal.ZERO;
        for (int i = 1; i <= 7; i++) {
            OilDataVO oilDataVO = new OilDataVO();
            oilDataVO.setCarNo("皖A8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
            if(i==1){
                oilDataVO.setQuantity(new BigDecimal(random.nextInt(100)));
                maxOil = oilDataVO.getQuantity();
            }else{
                oilDataVO.setQuantity(new BigDecimal(random.nextInt(lastOil.intValue())));
            }
            lastOil = oilDataVO.getQuantity();
            oilDataVO.setMaxOil(maxOil);
            oilDataVOList.add(oilDataVO);
        }
        return ApiResponse.success(oilDataVOList);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/FightingAdminController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,126 @@
package com.doumee.cloud.board;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.PlatformLogMapper;
import com.doumee.dao.business.model.PlatformLog;
import com.doumee.dao.web.response.platformReport.*;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/10/28 13:42
 */
@Api(tags = "消防管控大屏")
@RestController
@Slf4j
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/fightingAdmin")
public class FightingAdminController extends BaseController {
    @LoginNoRequired
    @ApiOperation("中心数据")
    @GetMapping("/centerData")
    public ApiResponse<FightingAdminBoardVO> centerData() {
        FightingAdminBoardVO data = new FightingAdminBoardVO();
        Random random = new Random();
        data.setOfflineDeviceNum(random.nextInt(20));
        data.setOnlineDeviceNum(random.nextInt(20));
        data.setErrDeviceNum(random.nextInt(20));
        data.setShieldDeviceNum(random.nextInt(20));
        data.setTodayDangerNum(random.nextInt(20));
        data.setDealDangerNum(random.nextInt(20));
        return ApiResponse.success(data);
    }
    @LoginNoRequired
    @ApiOperation("今日各系统设备状态及告警数量")
    @GetMapping("/deviceAlarmData")
    public ApiResponse<List<DeviceAlarmDataVO>> deviceAlarmData() {
        List<DeviceAlarmDataVO> deviceAlarmDataVOList = new ArrayList<>();
        Random random = new Random();
        for (int i = 1; i <= 5; i++) {
            DeviceAlarmDataVO deviceAlarmDataVO = new DeviceAlarmDataVO();
            deviceAlarmDataVO.setDeviceTypeName("设备名称_"+i);
            deviceAlarmDataVO.setAlarmNum(random.nextInt(20));
            deviceAlarmDataVO.setErrNum(random.nextInt(20));
            deviceAlarmDataVO.setOfflineNum(random.nextInt(20));
            deviceAlarmDataVO.setShieldNum(random.nextInt(20));
            deviceAlarmDataVO.setStatusTotal(deviceAlarmDataVO.getAlarmNum() + deviceAlarmDataVO.getErrNum() + deviceAlarmDataVO.getOfflineNum() + deviceAlarmDataVO.getShieldNum());
            deviceAlarmDataVOList.add(deviceAlarmDataVO);
        }
        return ApiResponse.success(deviceAlarmDataVOList);
    }
    @LoginNoRequired
    @ApiOperation("报警信息")
    @GetMapping("/alarmData")
    public ApiResponse<AlarmDataVO> alarmData() {
        AlarmDataVO alarmDataVO = new AlarmDataVO();
        Random random = new Random();
        alarmDataVO.setTotalNum(random.nextInt(30));
        alarmDataVO.setRealNum(random.nextInt(alarmDataVO.getTotalNum()));
        alarmDataVO.setErrNum(random.nextInt(alarmDataVO.getRealNum()));
        alarmDataVO.setLiftNum(random.nextInt(alarmDataVO.getErrNum()));
        alarmDataVO.setProcessingNum(random.nextInt(alarmDataVO.getErrNum()));
        return ApiResponse.success(alarmDataVO);
    }
    @LoginNoRequired
    @ApiOperation("告警处理分析")
    @GetMapping("/alarmHandleData")
    public ApiResponse<List<AlarmHandleDataVO>> alarmHandleData(@RequestParam Integer type) {
        List<AlarmHandleDataVO> alarmHandleDataVOList = new ArrayList<>();
        Random random = new Random();
        for (int i = 1; i <= 12; i++) {
            AlarmHandleDataVO alarmHandleDataVO = new AlarmHandleDataVO();
            alarmHandleDataVO.setMonthStr(i+"月");
            alarmHandleDataVO.setAlarmNum(random.nextInt(20));
            alarmHandleDataVO.setErrNum(random.nextInt(20));
            alarmHandleDataVO.setLiftNum(random.nextInt(20));
            alarmHandleDataVO.setProcessingNum(random.nextInt(20));
            alarmHandleDataVOList.add(alarmHandleDataVO);
        }
        return ApiResponse.success(alarmHandleDataVOList);
    }
    @LoginNoRequired
    @ApiOperation("本年消防设备/设施维护情况")
    @GetMapping("/yearDeviceData")
    public ApiResponse<YearDeviceDataVO> yearDeviceData() {
        Random random = new Random();
        YearDeviceDataVO yearDeviceDataVO = new YearDeviceDataVO();
        yearDeviceDataVO.setMonthAddNum(random.nextInt(100));
        yearDeviceDataVO.setPlanProtectTotal(random.nextInt(1000));
        yearDeviceDataVO.setProtectNum(yearDeviceDataVO.getPlanProtectTotal());
        return ApiResponse.success(yearDeviceDataVO);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/OnSitDispatchController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,170 @@
package com.doumee.cloud.board;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.PlatformLogMapper;
import com.doumee.dao.business.model.Platform;
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.business.model.PlatformLog;
import com.doumee.dao.openapi.request.HkBaseTokenRequest;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.web.response.platformReport.*;
import com.doumee.service.business.PlatformJobService;
import com.doumee.service.business.PlatformLogService;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/10/28 13:42
 */
@Api(tags = "场内调度看板")
@RestController
@Slf4j
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/onSitDispatch")
public class OnSitDispatchController extends BaseController {
    @Autowired
    private PlatformLogMapper platformLogMapper;
    @LoginNoRequired
    @ApiOperation("中心数据")
    @GetMapping("/centerData")
    public ApiResponse<OnSitDispatchBoardVO> centerData() {
        OnSitDispatchBoardVO data = new OnSitDispatchBoardVO();
        data.setPlatformTotal(100);
        data.setFreePlatform(8);
        data.setReservationCar(97);
        data.setWorkingCar(56);
        data.setLineUpCar(35);
        return ApiResponse.success(data);
    }
    @LoginNoRequired
    @ApiOperation("今日月台完成订单统计")
    @GetMapping("/platformGroupFinish")
    public ApiResponse<List<PlatformGroupFinishVO>> platformGroupFinish() {
        List<PlatformGroupFinishVO> platformGroupFinishVOList = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < 3; i++) {
            PlatformGroupFinishVO platformGroupFinishVO = new PlatformGroupFinishVO();
            platformGroupFinishVO.setPlatformGroupName(i+"_月台组名称");
            platformGroupFinishVO.setPlatformId(i);
            platformGroupFinishVO.setFinishData(300+random.nextInt(100));
            platformGroupFinishVOList.add(platformGroupFinishVO);
        }
        return ApiResponse.success(platformGroupFinishVOList);
    }
    @LoginNoRequired
    @ApiOperation("今日月台工作时长趋势")
    @GetMapping("/platformDuration")
    public ApiResponse<List<PlatformDurationVO>> platformDuration() {
        List<PlatformDurationVO> platformDurationList = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < 3; i++) {
            PlatformDurationVO platformDurationVO = new PlatformDurationVO();
            platformDurationVO.setPlatformName(i+"_月台名称");
            platformDurationVO.setPlatformId(i);
            platformDurationVO.setWorkTotalTime(100+random.nextInt(100));
            platformDurationVO.setOpenTotalTime(200+random.nextInt(100));
            platformDurationList.add(platformDurationVO);
        }
        return ApiResponse.success(platformDurationList);
    }
    @LoginNoRequired
    @ApiOperation("今日月台工作时长趋势")
    @GetMapping("/workEfficiency")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "查询类型:0=入库;1=出库", required = true),
    })
    public ApiResponse<List<WorkEfficiencyVO>> workEfficiency(@RequestParam Integer type) {
        List<WorkEfficiencyVO> workEfficiencyVOList = new ArrayList<>();
        Random random = new Random();
        Integer totalWorkNum = 0;
        for (int i = 8; i <= 20; i++) {
            if(i%2==0){
                WorkEfficiencyVO workEfficiencyVO = new WorkEfficiencyVO();
                workEfficiencyVO.setWorkNum(200+random.nextInt(100));
                totalWorkNum = totalWorkNum + workEfficiencyVO.getWorkNum();
                workEfficiencyVO.setTotalWorkNum(totalWorkNum);
                workEfficiencyVO.setWorkTime(StringUtils.leftPad(i+"",2,"0") +":00");
                workEfficiencyVOList.add(workEfficiencyVO);
            }
        }
        return ApiResponse.success(workEfficiencyVOList);
    }
    @LoginNoRequired
    @ApiOperation("今日车辆作业情况")
    @GetMapping("/carWorkSituation")
    public ApiResponse<CarWorkSituationVO> carWorkSituation() {
        Random random = new Random();
        CarWorkSituationVO carWorkSituationVO = new CarWorkSituationVO();
        carWorkSituationVO.setCallNum(200+random.nextInt(100));
        carWorkSituationVO.setFinishNum(100+random.nextInt(100));
        carWorkSituationVO.setCallNum(100+random.nextInt(100));
        carWorkSituationVO.setWorkingNum(100+random.nextInt(100));
        carWorkSituationVO.setFinishNum(100+random.nextInt(100));
        carWorkSituationVO.setInNum(100+random.nextInt(100));
        List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>().lambda()
                .orderByDesc(PlatformLog::getCreateDate)
                .last(" limit 7 ")
        );
        carWorkSituationVO.setPlatformLogList(platformLogList);
        return ApiResponse.success(carWorkSituationVO);
    }
    @LoginNoRequired
    @ApiOperation("实时月台作业信息")
    @GetMapping("/platformWorkData")
    public ApiResponse<List<PlatformWorkDataVO>> platformWorkData() {
        List<PlatformWorkDataVO> platformWorkDataVOList = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < 3; i++) {
            PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO();
            platformDurationVO.setPlatformName(i+"_月台名称");
            platformDurationVO.setCarNo("皖A8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
            platformDurationVO.setWorkType(random.nextInt(1));
            platformDurationVO.setWorkNum(100+random.nextInt(100));
            platformDurationVO.setFinishTime(Long.valueOf(System.currentTimeMillis()/1000 + 200+random.nextInt(100)));
            platformDurationVO.setStatus(random.nextInt(2));
            platformWorkDataVOList.add(platformDurationVO);
        }
        return ApiResponse.success(platformWorkDataVOList);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,180 @@
package com.doumee.cloud.board;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.PlatformJobMapper;
import com.doumee.dao.business.join.PlatformJobJoinMapper;
import com.doumee.dao.business.model.Platform;
import com.doumee.dao.business.model.PlatformBooks;
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.business.model.PlatformWmsJob;
import com.doumee.dao.web.response.platformReport.*;
import com.doumee.service.business.PlatformJobService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/10/28 13:42
 */
@Api(tags = "园区物流运行调度看板")
@RestController
@Slf4j
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/platformJobRun")
public class PlatformJobRunController extends BaseController {
    @ApiModelProperty
    private PlatformJobJoinMapper platformJobJoinMapper;
    @LoginNoRequired
    @ApiOperation("中心数据")
    @GetMapping("/centerData")
    public ApiResponse<PlatformJobRunBoardVO> centerData() {
        PlatformJobRunBoardVO data = new PlatformJobRunBoardVO();
        Random random = new Random();
        data.setMonthOutTotal(BigDecimal.valueOf(random.nextInt(100)).multiply(new BigDecimal(10000)));
        data.setMonthOutTotalOnYear(BigDecimal.valueOf(random.nextInt(10)));
        data.setMonthOutTimes(random.nextInt(1000));
        data.setYearOutTotal(data.getMonthOutTotal().multiply(new BigDecimal(11)));
        data.setYearOutTotalOnYear(BigDecimal.valueOf(random.nextInt(10)));
        data.setYearOutTimes(random.nextInt(1000) * 11);
        data.setTodayInRata(new BigDecimal(random.nextInt(100)));
        data.setMonthInRata(data.getTodayInRata().multiply(new BigDecimal(30)));
        data.setTodayOutRata(new BigDecimal(random.nextInt(100)));
        data.setMonthOutRata(data.getTodayOutRata().multiply(new BigDecimal(30)));
        return ApiResponse.success(data);
    }
    @LoginNoRequired
    @ApiOperation("运输任务分析")
    @GetMapping("/transportMeasure")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "queryType", value = "查询类型:0=周;1=月;2=年;", required = true),
    })
    public ApiResponse<List<TransportMeasureVO>> transportMeasure(@RequestParam Integer queryType) {
        List<TransportMeasureVO> list = new ArrayList<>();
        Random random = new Random();
        List<String> dayList = DateUtil.getBeforDays(new Date(),7);
        if(Constants.equalsInteger(queryType,Constants.ONE)){
            dayList = DateUtil.getBeforDays(new Date(),30);
        }else if(Constants.equalsInteger(queryType,Constants.TWO)){
            dayList = DateUtil.getBeforMonth(new Date(),12);
        }
        for (String str:dayList) {
            TransportMeasureVO data = new TransportMeasureVO();
            data.setPlanTimes(str);
            data.setPlanTaskNum(new BigDecimal(random.nextInt(1000)));
            data.setFinishTaskNum(new BigDecimal(data.getPlanTaskNum().intValue()));
            list.add(data);
        }
        return ApiResponse.success(list);
    }
    @LoginNoRequired
    @ApiOperation("当日运输任务")
    @GetMapping("/platformJobList")
    public ApiResponse<List<PlatformJob>> platformJobList() {
        List<PlatformJob> list =  platformJobJoinMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAll(PlatformJob.class)
                        .selectAs(PlatformBooks::getId,PlatformJob::getBookId)
                        .selectAs(Platform::getName,PlatformJob::getPlatformName)
                        .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                        .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
                        .selectAs(PlatformWmsJob::getRepertotyAddress,PlatformJob::getRepertotyAddress)
                        .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                        .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
                        .leftJoin(PlatformBooks.class,PlatformBooks::getJobId,PlatformJob::getId)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getStatus
                                ,Constants.PlatformJobStatus.WAIT_CALL.getKey()
                                ,Constants.PlatformJobStatus.CALLED.getKey()
                                ,Constants.PlatformJobStatus.IN_WAIT.getKey()
                                ,Constants.PlatformJobStatus.WORKING.getKey()
                                ,Constants.PlatformJobStatus.TRANSFERING.getKey()
                                ,Constants.PlatformJobStatus.EXCEPTION.getKey()
                                ,Constants.PlatformJobStatus.DONE.getKey()
                        )
                        .orderByDesc(PlatformJob::getSignNum)
                        .last(" limit 20 ")
        );
        return ApiResponse.success(list);
    }
    @LoginNoRequired
    @ApiOperation("出入库任务量")
    @GetMapping("/jobData")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "queryType", value = "查询类型:0=出库;1=入库;", required = true),
    })
    public ApiResponse<JobDataVO> jobData(@RequestParam Integer queryType) {
        Random random = new Random();
        JobDataVO jobDataVO = new JobDataVO();
        jobDataVO.setPlanTaskNum(BigDecimal.valueOf(random.nextInt(1000)));
        jobDataVO.setFinishTaskNum(BigDecimal.valueOf(jobDataVO.getPlanTaskNum().intValue()));
        return ApiResponse.success(jobDataVO);
    }
    @LoginNoRequired
    @ApiOperation("今日入库量统计")
    @GetMapping("/totalInList")
    public ApiResponse<List<GeneralVO>> totalInList() {
        List<GeneralVO> list = new ArrayList<>();
        for (int i = 1; i < 4; i++) {
            Random random = new Random();
            GeneralVO data = new GeneralVO();
            data.setName("厂区名称_"+i);
            data.setNum(BigDecimal.valueOf(random.nextInt(1000)));
            list.add(data);
        }
        return ApiResponse.success(list);
    }
    @LoginNoRequired
    @ApiOperation("库存情况")
    @GetMapping("/stockList")
    public ApiResponse<List<GeneralVO>> stockList() {
        List<GeneralVO> list = new ArrayList<>();
        for (int i = 1; i < 10; i++) {
            Random random = new Random();
            GeneralVO data = new GeneralVO();
            data.setName("名称"+i);
            data.setNum(BigDecimal.valueOf(random.nextInt(1000)));
            list.add(data);
        }
        return ApiResponse.success(list);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package com.doumee.cloud.board;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.dao.web.response.platformReport.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/10/28 13:42
 */
@Api(tags = "安防管控大屏")
@RestController
@Slf4j
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/security")
public class SecurityController extends BaseController {
    @LoginNoRequired
    @ApiOperation("中心数据")
    @GetMapping("/centerData")
    public ApiResponse<SecurityBoardVO> centerData() {
        SecurityBoardVO data = new SecurityBoardVO();
        Random random = new Random();
        data.setParkingLotTotal(random.nextInt(200));
        data.setFreeParkingLot(random.nextInt(data.getParkingLotTotal()));
        data.setInternalCarTotal(random.nextInt(100));
        data.setRelatedCarTotal(random.nextInt(100));
        data.setVisitCarTotal(random.nextInt(100));
        data.setInParkCarTotal(data.getInternalCarTotal() + data.getRelatedCarTotal() + data.getVisitCarTotal());
        data.setInternalTotal(random.nextInt(100));
        data.setRelatedTotal(random.nextInt(100));
        data.setVisitTotal(random.nextInt(100));
        data.setInParkTotal(data.getInternalTotal() + data.getRelatedTotal() + data.getVisitTotal());
        data.setDeviceTotal(random.nextInt(20));
        data.setErrTotal(random.nextInt(20));
        data.setInternalJobCarTotal(random.nextInt(20));
        data.setVisitJobCarTotal(random.nextInt(20));
        data.setRelatedJobCarTotal(random.nextInt(20));
        return ApiResponse.success(data);
    }
    @LoginNoRequired
    @ApiOperation("园区安防设备")
    @GetMapping("/securityDeviceData")
    public ApiResponse<List<SecurityDeviceDataVO>> securityDeviceData() {
        List<SecurityDeviceDataVO> list = new ArrayList<>();
        Random random = new Random();
        for (int i = 1; i <= 3; i++) {
            SecurityDeviceDataVO data = new SecurityDeviceDataVO();
            data.setDeviceType("设备类型_"+i);
            data.setOnlineNum(random.nextInt(10));
            data.setOfflineDeviceNum(random.nextInt(10));
            data.setTotalNum(data.getOnlineNum() + data.getOfflineDeviceNum() );
            list.add(data);
        }
        return ApiResponse.success(list);
    }
    @LoginNoRequired
    @ApiOperation("访客滞留情况")
    @GetMapping("/visitRetentionData")
    public ApiResponse<List<VisitRetentionDataVO>> visitRetentionData() {
        List<VisitRetentionDataVO> list = new ArrayList<>();
        Random random = new Random();
        for (int i = 1; i <= 3; i++) {
            VisitRetentionDataVO data = new VisitRetentionDataVO();
            data.setName("小明_"+i);
            data.setCompanyName("运维组_"+i);
            data.setTimeOutMinute(Long.valueOf(random.nextInt(200)));
            list.add(data);
        }
        return ApiResponse.success(list);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/WholeProvinceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,171 @@
package com.doumee.cloud.board;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.web.response.platformReport.*;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/10/28 13:42
 */
@Api(tags = "全省一库制管理看板")
@RestController
@Slf4j
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/wholeProvince")
public class WholeProvinceController extends BaseController {
    @LoginNoRequired
    @ApiOperation("中心数据")
    @GetMapping("/centerData")
    public ApiResponse<WholeProvinceBoardVO> centerData() {
        WholeProvinceBoardVO data = new WholeProvinceBoardVO();
        Random random = new Random();
        data.setYearOutTotal(BigDecimal.valueOf(random.nextInt(200)));
        data.setYearOutTotalOnYear(BigDecimal.valueOf(random.nextInt(10)));
        data.setYearOutTimes(random.nextInt(200));
        data.setYearProvinceRata(BigDecimal.valueOf(random.nextInt(100)).divide(new BigDecimal(100),2,BigDecimal.ROUND_HALF_UP));
        data.setYearInPlanTotal(BigDecimal.valueOf(random.nextInt(200)));
        data.setYearInTotal(BigDecimal.valueOf(random.nextInt(data.getYearInPlanTotal().intValue())));
        data.setYearInTotalOnYear(BigDecimal.valueOf(random.nextInt(10)));
        data.setYearInTimes(random.nextInt(200));
        data.setOutPlanTotal(BigDecimal.valueOf(random.nextInt(200)));
        data.setOutPlanTimes(random.nextInt(200));
        data.setOutTotal(BigDecimal.valueOf(random.nextInt(data.getOutPlanTotal().intValue())));
        data.setOutTimes(random.nextInt(data.getOutPlanTimes()));
        data.setOutRata(BigDecimal.valueOf(random.nextInt(100)));
        return ApiResponse.success(data);
    }
    @LoginNoRequired
    @ApiOperation("近七日到货情况")
    @GetMapping("/arriveGoodsList")
    public ApiResponse<List<ArriveGoodsVO>> arriveGoodsList() {
        List<ArriveGoodsVO> list = new ArrayList<>();
        Random random = new Random();
        List<String> dayList = DateUtil.getBeforDays(new Date(),7);
        for (String str:dayList) {
            ArriveGoodsVO data = new ArriveGoodsVO();
            data.setDateStr(str);
            data.setArriveNum(new BigDecimal(random.nextInt(1000)));
            data.setInTransitNum(new BigDecimal(random.nextInt(1000)));
            list.add(data);
        }
        return ApiResponse.success(list);
    }
    @LoginNoRequired
    @ApiOperation("当前运输任务")
    @GetMapping("/transportTaskList")
    public ApiResponse<List<TransportTaskVO>> transportTaskList() {
        List<TransportTaskVO> list = new ArrayList<>();
        Random random = new Random();
        for (int i = 1; i < 11; i++) {
            TransportTaskVO data = new TransportTaskVO();
            data.setCarNo("皖A8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
            data.setStatusStr("到达卸货地");
            data.setAddress("安徽合肥");
            data.setTaskDate(new Date());
            list.add(data);
        }
        return ApiResponse.success(list);
    }
    @LoginNoRequired
    @ApiOperation("进销存运营")
    @GetMapping("/salesOperationList")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "queryType", value = "查询类型:0=周;1=月;2=年;", required = true),
    })
    public ApiResponse<List<SalesOperationVO>> salesOperationList(@RequestParam Integer queryType) {
        List<SalesOperationVO> list = new ArrayList<>();
        Random random = new Random();
        List<String> dayList = DateUtil.getBeforDays(new Date(),7);
        if(Constants.equalsInteger(queryType,Constants.ONE)){
            dayList = DateUtil.getBeforDays(new Date(),30);
        }else if(Constants.equalsInteger(queryType,Constants.TWO)){
            dayList = DateUtil.getBeforMonth(new Date(),12);
        }
        for (String str:dayList) {
            SalesOperationVO data = new SalesOperationVO();
            data.setDateStr(str);
            data.setStockNum(new BigDecimal(random.nextInt(1000)));
            data.setTotalInNum(new BigDecimal(random.nextInt(1000)));
            data.setTotalOutNum(new BigDecimal(random.nextInt(1000)));
            list.add(data);
        }
        return ApiResponse.success(list);
    }
    @LoginNoRequired
    @ApiOperation("库存利用率")
    @GetMapping("/energyDataList")
    public ApiResponse<List<StockRataVO>> energyDataList() {
        List<StockRataVO> energyDataVOList = new ArrayList<>();
        Random random = new Random();
        for (int i = 1; i <= 5; i++) {
            StockRataVO data = new StockRataVO();
            data.setPlaceName("地点_"+i);
            data.setNowStockNum(new BigDecimal(random.nextInt(200)));
            data.setStockRataNum(new BigDecimal(random.nextInt(200)));
            data.setTotalStockNum(new BigDecimal(random.nextInt(100)));
            energyDataVOList.add(data);
        }
        return ApiResponse.success(energyDataVOList);
    }
    @LoginNoRequired
    @ApiOperation("上月油耗排行")
    @GetMapping("/lastMonthOil")
    public ApiResponse<List<OilDataVO>> lastMonthOil() {
        List<OilDataVO> oilDataVOList = new ArrayList<>();
        Random random = new Random();
        BigDecimal maxOil = BigDecimal.ZERO;
        BigDecimal lastOil = BigDecimal.ZERO;
        for (int i = 1; i <= 7; i++) {
            OilDataVO oilDataVO = new OilDataVO();
            oilDataVO.setCarNo("皖A8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
            if(i==1){
                oilDataVO.setQuantity(new BigDecimal(random.nextInt(100)));
                maxOil = oilDataVO.getQuantity();
            }else{
                oilDataVO.setQuantity(new BigDecimal(random.nextInt(lastOil.intValue())));
            }
            lastOil = oilDataVO.getQuantity();
            oilDataVO.setMaxOil(maxOil);
            oilDataVOList.add(oilDataVO);
        }
        return ApiResponse.success(oilDataVOList);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -39,8 +39,11 @@
     * 3、能管中心:ngzx
     */
    public interface MenuPageId{
        String afzx = "afzx";//安防中心
        String xkzx = "xkzx";//消控中心
        String ngzx = "ngzx";//能管中心
        String jsc = "jsc";//物业后勤
        String kqgzt = "attendance_workstand";//考勤管理
    }
    /**
@@ -133,6 +136,9 @@
        String[] fireDeviceStatusSearch= new String[]{"/api/fpnms/v2/device/status/search","查询消防设备部件状态"};//查询消防设备部件状态
        String[] findDeviceAlarmPage= new String[]{"/api/v1/alarm/findDeviceAlarmPage","分页查询设备下的所有报警记录"};//分页查询设备下的所有报警记录
        String[] getTodoListPage= new String[]{"/api/v3/todo/getTodoListPage","分页获取待办列表"};//1.10.1分页获取待办列表
        String[] loginOut= new String[]{"/xauthplus-plugin/logout","退出登录"};//退出登录
        String[] sendSms= new String[]{"/api/smsps/v1/smsService/sms","短信验证码"};//短信验证码
        String[] getMenus= new String[]{"/api/privilegeService/v1/menus/list","获取用户有权限的菜单功能项"};//获取用户有权限的菜单功能项
    }
    /**
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -753,6 +753,11 @@
            return startDoPostStringArtemis(HKConstants.InterfacePath.platformStatus,null);
        }
    }
    public static String getHkMenu(Map<String,String> body) {
        return startDoGetStringArtemis(HKConstants.InterfacePath.getMenus,body);
    }
    /**
     * èŽ·å–æœˆå°ç»„ä»¶é…ç½®çš„LED设备清单
     * @param body
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/MenuDataResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.doumee.core.haikang.model.param.respose;
import lombok.Data;
import java.util.List;
@Data
public class MenuDataResponse {
    private Integer    total;
    private List<String> list;
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -1,7 +1,10 @@
package com.doumee.core.haikang.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.HKTools;
import com.doumee.core.haikang.model.param.BaseListPageResponse;
@@ -10,6 +13,7 @@
import com.doumee.core.haikang.model.param.request.*;
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.HttpsUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -21,6 +25,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Slf4j
public class HKService {
@@ -1320,6 +1325,10 @@
        }
        return  null;
    }
    /**
     *获取月台组件配置的LED设备清单
     * @return
@@ -1457,6 +1466,42 @@
        }
        return  null;
    }
    public static BaseResponse sendSmsByHk(Map<String,Object> param,String url){
        log.info("【海康发送短信】================开始===="+JSONObject.toJSONString(param));
        try {
            TypeReference typeReference =
                    new TypeReference<BaseResponse>(){};
            String res = HttpsUtil.postJson(url, JSONObject.toJSONString(param));
            BaseResponse result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康发送短信");
            return  result;
        }catch (Exception e){
            log.error("【海康发送短信】================失败====:\n"+ e.getMessage());
            e.printStackTrace();
        }
       return null;
    }
    public static BaseResponse<MenuDataResponse> getMenuConfig(Map<String,String> param){
        log.info("【获取菜单功能配置项】================开始===="+ JSONObject.toJSONString(param));
        try {
            String res = HKTools.getHkMenu(param);
            TypeReference typeReference =
                    new TypeReference<BaseResponse<MenuDataResponse>>(){};
            BaseResponse<MenuDataResponse>   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"获取菜单功能配置项");
            return  result;
        }catch (Exception e){
            log.error("【获取菜单功能配置项】================失败====:\n"+ e.getMessage());
            e.printStackTrace();
        }
        return null;
    }
    private static void logResult(BaseResponse res,String name) {
        if(StringUtils.equals(res.getCode(),HKConstants.RESPONSE_SUCCEE)){
            log.info("【"+name+"】================成功====\n"+res);
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java
@@ -87,9 +87,10 @@
    @ApiModelProperty(value = "责任部门编码(关联company)", example = "1")
//    @ExcelColumn(name="提报人编码(关联member)")
    private Integer companyId;
    @ApiModelProperty(value = "责任部门编码", example = "1")
//    @ExcelColumn(name="提报人编码(关联member)")
    @TableField(exist = false)
    private Integer companyName;
    private String companyName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -276,4 +276,9 @@
    @TableField(exist = false)
    private List<String> roleNames;
    @ApiModelProperty(value = "是否查询固定人员:0=否;1=是" )
    @TableField(exist = false)
    private Integer querySpecial;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -292,6 +292,7 @@
    @TableField(exist = false)
    private String carrierName ;
    @ApiModelProperty(value = "距离签到点距离")
    @TableField(exist = false)
    private BigDecimal getDistance;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * æŠ¥è­¦ä¿¡æ¯
 *
 * @Author : Rk
 * @create 2024/10/25 14:26
 */
@Data
public class AlarmDataVO {
    @ApiModelProperty(value = "总数")
    private Integer totalNum;
    @ApiModelProperty(value = "真实报警数量")
    private Integer realNum;
    @ApiModelProperty(value = "误报警数")
    private Integer errNum;
    @ApiModelProperty(value = "已解除数量")
    private Integer liftNum;
    @ApiModelProperty(value = "处理中数量")
    private Integer processingNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/AlarmHandleDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å‘Šè­¦å¤„理分析
 *
 * @Author : Rk
 * @create 2024/10/25 14:26
 */
@Data
public class AlarmHandleDataVO {
    @ApiModelProperty(value = "月份")
    private String monthStr;
    @ApiModelProperty(value = "报警数量")
    private Integer alarmNum;
    @ApiModelProperty(value = "误报警数")
    private Integer errNum;
    @ApiModelProperty(value = "已处理数量")
    private Integer liftNum;
    @ApiModelProperty(value = "进行中数量")
    private Integer processingNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/ArriveGoodsVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * é€šç”¨
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class ArriveGoodsVO {
    @ApiModelProperty(value = "日期")
    private String dateStr;
    @ApiModelProperty(value = "在途数量")
    private BigDecimal inTransitNum;
    @ApiModelProperty(value = "到货数量")
    private BigDecimal arriveNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/CarWorkSituationVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.doumee.dao.web.response.platformReport;
import com.doumee.dao.business.model.PlatformLog;
import com.doumee.dao.system.model.Notices;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * è½¦è¾†ä½œä¸šæƒ…况
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class CarWorkSituationVO {
    @ApiModelProperty(value = "预约数量")
    private Integer reservationNum;
    @ApiModelProperty(value = "进场数量")
    private Integer inNum;
    @ApiModelProperty(value = "已叫号数量")
    private Integer callNum;
    @ApiModelProperty(value = "已作业数量")
    private Integer workingNum;
    @ApiModelProperty(value = "已完成数量")
    private Integer finishNum;
    @ApiModelProperty(value = "已离场数量")
    private Integer leaveNum;
    @ApiModelProperty(value = "作业日志")
    private List<PlatformLog> platformLogList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/DeviceAlarmDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * ä»Šæ—¥å„系统设备状态及告警数
 *
 * @Author : Rk
 * @create 2024/10/25 14:26
 */
@Data
public class DeviceAlarmDataVO {
    @ApiModelProperty(value = "设备类型名称")
    private String deviceTypeName;
    @ApiModelProperty(value = "总数")
    private Integer statusTotal;
    @ApiModelProperty(value = "报警数量")
    private Integer alarmNum;
    @ApiModelProperty(value = "故障数量")
    private Integer errNum;
    @ApiModelProperty(value = "故障数量")
    private Integer offlineNum;
    @ApiModelProperty(value = "屏蔽数量")
    private Integer shieldNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyBoardVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * èƒ½è€—看板
 *
 * @Author : Rk
 * @create 2024/10/25 13:53
 */
@Data
public class EnergyBoardVO {
    @ApiModelProperty(value = "本年度循环烟箱")
    private Integer smokeBoxTotal;
    @ApiModelProperty(value = "碳排放 å•位 å¨")
    private BigDecimal carbon;
    @ApiModelProperty(value = "上月用电 å•位 kw·h")
    private Integer electricityQuantity;
    @ApiModelProperty(value = "用电环比")
    private BigDecimal electricityYear;
    @ApiModelProperty(value = "用电同比")
    private BigDecimal electricityMonth;
    @ApiModelProperty(value = "上月用水 å•位 t")
    private BigDecimal waterQuantity;
    @ApiModelProperty(value = "用水环比")
    private BigDecimal waterYear;
    @ApiModelProperty(value = "用水同比")
    private BigDecimal waterMonth;
    @ApiModelProperty(value = "上月用气 å•位 ")
    private BigDecimal gasQuantity;
    @ApiModelProperty(value = "用气环比")
    private BigDecimal gasYear;
    @ApiModelProperty(value = "用气同比")
    private BigDecimal gasMonth;
    @ApiModelProperty(value = "办公楼用电 å•位 kw·h")
    private Integer officeQuantity;
    @ApiModelProperty(value = "成品库用电 å•位 kw·h")
    private Integer productHouseQuantity;
    @ApiModelProperty(value = "联合工房用电 å•位 kw·h")
    private Integer workHouseQuantity;
    @ApiModelProperty(value = "物流园区用电 å•位 kw·h")
    private Integer parkQuantity;
    @ApiModelProperty(value = "动力站房用电 å•位 kw·h")
    private Integer powerQuantity;
    @ApiModelProperty(value = "今日用电 å•位 kw·h")
    private Integer todayElectricity;
    @ApiModelProperty(value = "本月用电 å•位 kw·h")
    private Integer monthElectricity;
    @ApiModelProperty(value = "昨日用电 å•位 kw·h")
    private Integer yesterdayElectricity;
    @ApiModelProperty(value = "实时负荷曲线",hidden = true)
    private List<EnergyDataVO> loadCurveList;
    @ApiModelProperty(value = "月能耗分析 - æ°´",hidden = true)
    private List<EnergyDataVO> energyDataWaterList;
    @ApiModelProperty(value = "月能耗分析 - æ°”",hidden = true)
    private List<EnergyDataVO> energyDataGasList;
    @ApiModelProperty(value = "月能耗分析 - ç”µ",hidden = true)
    private List<EnergyDataVO> energyDataElectricityList;
    @ApiModelProperty(value = "月油耗分析",hidden = true)
    private List<EnergyDataVO> oilList;
    @ApiModelProperty(value = "上月油耗排行",hidden = true)
    private List<OilDataVO> lastMonthOilList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/10/25 16:25
 */
@Data
public class EnergyDataVO {
    @ApiModelProperty(value = "时间")
    private String timeData;
    @ApiModelProperty(value = "能耗")
    private BigDecimal energy;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/FightingAdminBoardVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * æ¶ˆé˜²ç®¡æŽ§å¤§å±
 *
 * @Author : Rk
 * @create 2024/10/25 13:53
 */
@Data
public class FightingAdminBoardVO {
    @ApiModelProperty(value = "在线设备数量")
    private Integer onlineDeviceNum;
    @ApiModelProperty(value = "报警设备数量")
    private Integer alarmDeviceNum;
    @ApiModelProperty(value = "故障设备数量")
    private Integer errDeviceNum;
    @ApiModelProperty(value = "离线设备数量")
    private Integer offlineDeviceNum;
    @ApiModelProperty(value = "屏蔽设备数量")
    private Integer shieldDeviceNum;
    @ApiModelProperty(value = "提报隐患数量")
    private Integer todayDangerNum;
    @ApiModelProperty(value = "处理隐患数量")
    private Integer dealDangerNum;
    @ApiModelProperty(value = "今日各系统设备状态及告警数量" , hidden = true)
    private List<DeviceAlarmDataVO> deviceAlarmDataList;
    @ApiModelProperty(value = "报警信息" , hidden = true)
    private AlarmDataVO alarmData;
    @ApiModelProperty(value = "告警处理分析" , hidden = true)
    private List<AlarmHandleDataVO> alarmHandleDataList;
    //TODO æ¸©åº¦ä¼ æ„Ÿå™¨
    //TODO æ¹¿åº¦ä¼ æ„Ÿå™¨
    @ApiModelProperty(value = "本年消防设备/设施维护情况" , hidden = true)
    private YearDeviceDataVO yearDeviceData;
    //TODO å‘Šè­¦ä¿¡æ¯
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/GeneralVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * é€šç”¨
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class GeneralVO {
    @ApiModelProperty(value = "名称")
    private String name;
    @ApiModelProperty(value = "数量")
    private BigDecimal num;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/JobDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * å½“日任务信息
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class JobDataVO {
    @ApiModelProperty(value = "当日任务总量 ä¸‡æ”¯")
    private BigDecimal planTaskNum;
    @ApiModelProperty(value = "当日完成任务总量 ä¸‡æ”¯")
    private BigDecimal finishTaskNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OilDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/10/25 16:31
 */
@Data
public class OilDataVO {
    @ApiModelProperty(value = "最高油耗")
    private BigDecimal maxOil;
    @ApiModelProperty(value = "油耗")
    private BigDecimal quantity;
    @ApiModelProperty(value = "车牌照")
    private String carNo;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OnSitDispatchBoardVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * åœºå†…调度看板
 *
 * @Author : Rk
 * @create 2024/10/25 9:54
 */
@Data
public class OnSitDispatchBoardVO {
    @ApiModelProperty(value = "月台数量")
    private Integer platformTotal;
    @ApiModelProperty(value = "空闲月台数量")
    private Integer freePlatform;
    @ApiModelProperty(value = "预约车辆")
    private Integer reservationCar;
    @ApiModelProperty(value = "作业车辆")
    private Integer workingCar;
    @ApiModelProperty(value = "排队车辆")
    private Integer lineUpCar;
    @ApiModelProperty(value = "今日月台完成订单统计" , hidden = true)
    private List<PlatformGroupFinishVO> platformGroupFinishList;
    @ApiModelProperty(value = "今日月台工作时长趋势" , hidden = true)
    private List<PlatformDurationVO> platformDurationList;
    @ApiModelProperty(value = "实时作业效率 - å…¥åº“" , hidden = true)
    private List<WorkEfficiencyVO> workEfficiencyInList;
    @ApiModelProperty(value = "实时作业效率 - å‡ºåº“" , hidden = true)
    private List<WorkEfficiencyVO> workEfficiencyOutList;
    @ApiModelProperty(value = "今日车辆作业情况" , hidden = true)
    private CarWorkSituationVO carWorkSituation;
    @ApiModelProperty(value = "实时月台作业信息" , hidden = true)
    private List<PlatformWorkDataVO> platformWorkDataList;
    //TODO å®žæ—¶å‘Šè­¦ä¿¡æ¯
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformDurationVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * æœˆå°å·¥ä½œæ—¶é•¿è¶‹åŠ¿
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class PlatformDurationVO {
    @ApiModelProperty(value = "作业时长信息  å•位分钟")
    private Integer workTotalTime;
    @ApiModelProperty(value = "开放总时长 å•位分钟")
    private Integer openTotalTime;
    @ApiModelProperty(value = "月台主键")
    private Integer platformId;
    @ApiModelProperty(value = "月台名称")
    private String platformName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformGroupFinishVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * ä»Šæ—¥æœˆå°å®Œæˆè®¢å•统计
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class PlatformGroupFinishVO {
    @ApiModelProperty(value = "完成量 ä¸‡æ”¯")
    private Integer finishData;
    @ApiModelProperty(value = "月台主键")
    private Integer platformId;
    @ApiModelProperty(value = "月台组名称")
    private String platformGroupName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformJobRunBoardVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.doumee.dao.web.response.platformReport;
import com.doumee.dao.business.model.PlatformJob;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * å›­åŒºç‰©æµè¿è¡Œè°ƒåº¦çœ‹æ¿
 *
 * @Author : Rk
 * @create 2024/10/25 9:54
 */
@Data
public class PlatformJobRunBoardVO {
    @ApiModelProperty(value = "累计出库量 - æœˆåº¦")
    private BigDecimal monthOutTotal;
    @ApiModelProperty(value = "累计出库量月度 - åŒæ¯”")
    private BigDecimal monthOutTotalOnYear;
    @ApiModelProperty(value = "累计出库量 - å¹´åº¦")
    private BigDecimal yearOutTotal;
    @ApiModelProperty(value = "累计出库量年度 - åŒæ¯”")
    private BigDecimal yearOutTotalOnYear;
    @ApiModelProperty(value = "累计出库车次 - æœˆåº¦")
    private Integer monthOutTimes;
    @ApiModelProperty(value = "累计出库车次 - å¹´åº¦")
    private Integer yearOutTimes;
    @ApiModelProperty(value = "今日出库效率")
    private BigDecimal todayOutRata;
    @ApiModelProperty(value = "本月出库效率")
    private BigDecimal monthOutRata;
    @ApiModelProperty(value = "今日入库效率")
    private BigDecimal todayInRata;
    @ApiModelProperty(value = "本月入库效率")
    private BigDecimal monthInRata;
    @ApiModelProperty(value = "运输任务分析 - 7日" , hidden = true)
    private List<TransportMeasureVO> transportMeasureWeekList;
    @ApiModelProperty(value = "运输任务分析 - æœˆåº¦", hidden = true)
    private List<TransportMeasureVO> transportMeasureMonthList;
    @ApiModelProperty(value = "运输任务分析 - å¹´åº¦", hidden = true)
    private List<TransportMeasureVO> transportMeasureYearList;
    @ApiModelProperty(value = "当日运输任务")
    private List<PlatformJob> platformJobList;
    @ApiModelProperty(value = "出库任务")
    private JobDataVO outJob;
    @ApiModelProperty(value = "入库任务")
    private JobDataVO inJob;
    @ApiModelProperty(value = "今日入库量统计")
    private List<GeneralVO> totalInList;
    @ApiModelProperty(value = "库存情况")
    private List<GeneralVO> stockList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.doumee.dao.web.response.platformReport;
import com.doumee.dao.system.model.Notices;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * æœˆå°å½“前作业情况
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class PlatformWorkDataVO {
    @ApiModelProperty(value = "月台名称")
    private String platformName;
    @ApiModelProperty(value = "车牌号")
    private String carNo;
    @ApiModelProperty(value = "作业量")
    private Integer workNum;
    @ApiModelProperty(value = "作业类型:0=卸货;1=装货")
    private Integer workType;
    @ApiModelProperty(value = "作业时长 å•位 åˆ†é’Ÿ")
    private Integer workTime;
    @ApiModelProperty(value = "预计完成时间 å•位:时间戳")
    private Long finishTime;
    @ApiModelProperty(value = "月台状态:0=作业中;1=空闲中;2=作业超时")
    private Integer status;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SalesOperationVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * è¿›é”€å­˜åº“å­˜
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class SalesOperationVO {
    @ApiModelProperty(value = "日期")
    private String dateStr;
    @ApiModelProperty(value = "总入库数 ä¸‡æ”¯")
    private BigDecimal totalInNum;
    @ApiModelProperty(value = "总出库数 ä¸‡æ”¯")
    private BigDecimal totalOutNum;
    @ApiModelProperty(value = "库存值 ä¸‡æ”¯")
    private BigDecimal stockNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityBoardVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * å®‰é˜²ç®¡æŽ§å¤§å±
 *
 * @Author : Rk
 * @create 2024/10/25 13:53
 */
@Data
public class SecurityBoardVO {
    @ApiModelProperty(value = "总车位数量")
    private Integer parkingLotTotal;
    @ApiModelProperty(value = "剩余车位数量")
    private Integer freeParkingLot;
    @ApiModelProperty(value = "员工车辆")
    private Integer internalCarTotal;
    @ApiModelProperty(value = "相关方车辆")
    private Integer relatedCarTotal;
    @ApiModelProperty(value = "访客车辆")
    private Integer visitCarTotal;
    @ApiModelProperty(value = "当前在园人数")
    private Integer inParkTotal;
    @ApiModelProperty(value = "在园内部人员数量")
    private Integer internalTotal;
    @ApiModelProperty(value = "在园相关方数量")
    private Integer relatedTotal;
    @ApiModelProperty(value = "在园访客数量")
    private Integer visitTotal;
    @ApiModelProperty(value = "当前在园车辆总数")
    private Integer inParkCarTotal;
    @ApiModelProperty(value = "当前设备总数")
    private Integer deviceTotal;
    @ApiModelProperty(value = "当前报警总数")
    private Integer errTotal;
    @ApiModelProperty(value = "内运车(安泰自有车)")
    private Integer internalJobCarTotal;
    @ApiModelProperty(value = "外协运输车辆")
    private Integer relatedJobCarTotal;
    @ApiModelProperty(value = "市公司车辆")
    private Integer visitJobCarTotal;
    //TODO å®‰é˜²å‘Šè­¦
    @ApiModelProperty(value = "园区安防设备", hidden = true)
    private List<SecurityDeviceDataVO> securityDeviceDataList;
    @ApiModelProperty(value = "访客滞留情况", hidden = true)
    private List<VisitRetentionDataVO> visitRetentionDataList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/SecurityDeviceDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å›­åŒºå®‰é˜²è®¾å¤‡
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class SecurityDeviceDataVO {
    @ApiModelProperty(value = "设备类型")
    private String deviceType;
    @ApiModelProperty(value = "总数")
    private Integer totalNum;
    @ApiModelProperty(value = "在线数量")
    private Integer onlineNum;
    @ApiModelProperty(value = "离线数量")
    private Integer offlineDeviceNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/StockRataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * åº“存利用率
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class StockRataVO {
    @ApiModelProperty(value = "地点")
    private String placeName;
    @ApiModelProperty(value = "总库数 ä¸‡æ”¯")
    private BigDecimal totalStockNum;
    @ApiModelProperty(value = "当前库数 ä¸‡æ”¯")
    private BigDecimal nowStockNum;
    @ApiModelProperty(value = "库存利用率 ä¸‡æ”¯")
    private BigDecimal stockRataNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportMeasureVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * è¿è¾“量
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class TransportMeasureVO {
    @ApiModelProperty(value = "计划任务量 ä¸‡æ”¯")
    private BigDecimal planTaskNum;
    @ApiModelProperty(value = "任务完成量 ä¸‡æ”¯")
    private BigDecimal finishTaskNum;
    @ApiModelProperty(value = "计划任务数")
    private String planTimes;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportTaskVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * è¿è¾“任务
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class TransportTaskVO {
    @ApiModelProperty(value = "车牌号")
    private String carNo;
    @ApiModelProperty(value = "状态")
    private String statusStr;
    @ApiModelProperty(value = "位置")
    private String address;
    @ApiModelProperty(value = "任务下达时间")
    private Date taskDate;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/VisitRetentionDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * è®¿å®¢æ»žç•™ä¿¡æ¯
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class VisitRetentionDataVO {
    @ApiModelProperty(value = "访客姓名")
    private String name;
    @ApiModelProperty(value = "拜访部门")
    private String companyName;
    @ApiModelProperty(value = "超时时长 å•位:分钟")
    private Long timeOutMinute;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WholeProvinceBoardVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package com.doumee.dao.web.response.platformReport;
import com.doumee.dao.business.model.PlatformJob;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * å…¨çœä¸€åº“制管理看板
 *
 * @Author : Rk
 * @create 2024/10/25 9:54
 */
@Data
public class WholeProvinceBoardVO {
    @ApiModelProperty(value = "累计出库量  - å¹´åº¦")
    private BigDecimal yearOutTotal;
    @ApiModelProperty(value = "累计出库量  - å¹´åº¦åŒæ¯”")
    private BigDecimal yearOutTotalOnYear;
    @ApiModelProperty(value = "累计出库车次 - å¹´åº¦")
    private Integer yearOutTimes;
    @ApiModelProperty(value = "省内占比")
    private BigDecimal yearProvinceRata;
    @ApiModelProperty(value = "累计入库量  - å¹´åº¦")
    private BigDecimal yearInTotal;
    @ApiModelProperty(value = "累计入库量  - å¹´åº¦åŒæ¯”")
    private BigDecimal yearInTotalOnYear;
    @ApiModelProperty(value = "累计入库车次 - å¹´åº¦")
    private Integer yearInTimes;
    @ApiModelProperty(value = "计划入库量 - å¹´åº¦")
    private BigDecimal yearInPlanTotal;
    @ApiModelProperty(value = "今日计划出库量")
    private BigDecimal outPlanTotal;
    @ApiModelProperty(value = "今日计划出库次数")
    private Integer outPlanTimes;
    @ApiModelProperty(value = "今日出库量")
    private BigDecimal outTotal;
    @ApiModelProperty(value = "今日出库次数")
    private Integer outTimes;
    @ApiModelProperty(value = "出库能力占比")
    private BigDecimal outRata;
    @ApiModelProperty(value = "近七日到货情况" , hidden = true)
    private List<ArriveGoodsVO> arriveGoodsList;
    @ApiModelProperty(value = "当前运输任务" , hidden = true)
    private List<TransportTaskVO> transportTaskList;
    @ApiModelProperty(value = "进销存运营 - 7日" , hidden = true)
    private List<SalesOperationVO> salesOperationWeekList;
    @ApiModelProperty(value = "进销存运营 - æœˆåº¦" , hidden = true)
    private List<SalesOperationVO> salesOperationMonthList;
    @ApiModelProperty(value = "进销存运营 - å¹´åº¦" , hidden = true)
    private List<SalesOperationVO> salesOperationYearList;
    @ApiModelProperty(value = "库存利用率" , hidden = true)
    private List<StockRataVO> stockRataVOListList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/WorkEfficiencyVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å®žæ—¶ä½œä¸šæ•ˆçއ
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class WorkEfficiencyVO {
    @ApiModelProperty(value = "作业时段时间 HH-mm  ")
    private String workTime;
    @ApiModelProperty(value = "分时作业量 å•位 ä¸‡æ”¯")
    private Integer workNum;
    @ApiModelProperty(value = "累计作业量 å•位 ä¸‡æ”¯")
    private Integer totalWorkNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/YearDeviceDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * æœ¬å¹´æ¶ˆé˜²è®¾å¤‡/设施维护情况
 *
 * @Author : Rk
 * @create 2024/10/25 14:26
 */
@Data
public class YearDeviceDataVO {
    @ApiModelProperty(value = "已维保数量")
    private Integer protectNum;
    @ApiModelProperty(value = "计划维保数")
    private Integer planProtectTotal;
    @ApiModelProperty(value = "本月新增维保")
    private Integer monthAddNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java
@@ -96,4 +96,5 @@
     * @return long
     */
    long count(SmsEmail smsEmail);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -17,6 +17,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.CompanyMapper;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.dto.ApproveDTO;
import com.doumee.dao.business.join.ApproveJoinMapper;
import com.doumee.dao.business.join.CarUseBookJoinMapper;
@@ -40,7 +41,6 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -8,13 +8,14 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.*;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.join.ApproveJoinMapper;
import com.doumee.dao.business.join.CarUseBookJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.ApproveDataVO;
import com.doumee.dao.business.vo.DateIntervalVO;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.ApproveService;
import com.doumee.service.business.CarUseBookService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -23,7 +24,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.third.EmayService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -33,10 +33,8 @@
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.Date;
import java.util.stream.Collectors;
/**
 * è½¦è¾†_用车申请信息表Service实现
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -355,8 +355,111 @@
    @Override
    public List<Company> findList(Company company) {
        QueryWrapper<Company> wrapper = new QueryWrapper<>(company);
        return companyMapper.selectList(wrapper);
        MPJLambdaWrapper<Company> queryWrapper = new MPJLambdaWrapper<>();
        company.setIsdeleted(Constants.ZERO);
        if (company.getId() != null) {
            queryWrapper.eq(Company::getId, company.getId());
        }
        if (company.getCreator() != null) {
            queryWrapper.eq(Company::getCreator, company.getCreator());
        }
        if (company.getCreateDate() != null) {
            queryWrapper.ge(Company::getCreateDate, Utils.Date.getStart(company.getCreateDate()));
            queryWrapper.le(Company::getCreateDate, Utils.Date.getEnd(company.getCreateDate()));
        }
        if (company.getEditor() != null) {
            queryWrapper.eq(Company::getEditor, company.getEditor());
        }
        if (company.getEditDate() != null) {
            queryWrapper.ge(Company::getEditDate, Utils.Date.getStart(company.getEditDate()));
            queryWrapper.le(Company::getEditDate, Utils.Date.getEnd(company.getEditDate()));
        }
        if (company.getIsdeleted() != null) {
            queryWrapper.eq(Company::getIsdeleted, company.getIsdeleted());
        }
        if (company.getName() != null) {
            queryWrapper.like(Company::getName, company.getName());
        }
        if (company.getRemark() != null) {
            queryWrapper.eq(Company::getRemark, company.getRemark());
        }
        if (company.getStatus() != null) {
            queryWrapper.eq(Company::getStatus, company.getStatus());
        }
        if (company.getSortnum() != null) {
            queryWrapper.eq(Company::getSortnum, company.getSortnum());
        }
        if (company.getImgurl() != null) {
            queryWrapper.eq(Company::getImgurl, company.getImgurl());
        }
        if (company.getType() != null) {
            queryWrapper.eq(Company::getType, company.getType());
        }
        if (company.getCategoryId() != null) {
            queryWrapper.eq(Company::getCategoryId, company.getCategoryId());
        }
        if (company.getCode() != null) {
            queryWrapper.eq(Company::getCode, company.getCode());
        }
        if (company.getParentId() != null) {
            queryWrapper.eq(Company::getParentId, company.getParentId());
        }
        if (company.getLinkName() != null) {
            queryWrapper.eq(Company::getLinkName, company.getLinkName());
        }
        if (company.getLinkPhone() != null) {
            queryWrapper.eq(Company::getLinkPhone, company.getLinkPhone());
        }
        if (company.getHkId() != null) {
            queryWrapper.eq(Company::getHkId, company.getHkId());
        }
        if (company.getHkStatus() != null) {
            queryWrapper.eq(Company::getHkStatus, company.getHkStatus());
        }
        if (company.getHkDate() != null) {
            queryWrapper.ge(Company::getHkDate, Utils.Date.getStart(company.getHkDate()));
            queryWrapper.le(Company::getHkDate, Utils.Date.getEnd(company.getHkDate()));
        }
        if (company.getErpId() != null) {
            queryWrapper.eq(Company::getErpId, company.getErpId());
        }
        if (company.getErpDate() != null) {
            queryWrapper.ge(Company::getErpDate, Utils.Date.getStart(company.getErpDate()));
            queryWrapper.le(Company::getErpDate, Utils.Date.getEnd(company.getErpDate()));
        }
        if (company.getErpStatus() != null) {
            queryWrapper.eq(Company::getErpStatus, company.getErpStatus());
        }
        if (company.getDdId() != null) {
            queryWrapper.eq(Company::getDdId, company.getDdId());
        }
        if (company.getDdDate() != null) {
            queryWrapper.ge(Company::getDdDate, Utils.Date.getStart(company.getDdDate()));
            queryWrapper.le(Company::getDdDate, Utils.Date.getEnd(company.getDdDate()));
        }
        if (company.getDdStatus() != null) {
            queryWrapper.eq(Company::getDdStatus, company.getDdStatus());
        }
        if (company.getFsId() != null) {
            queryWrapper.eq(Company::getFsId, company.getFsId());
        }
        if (company.getFsStatus() != null) {
            queryWrapper.eq(Company::getFsStatus, company.getFsStatus());
        }
        if (company.getFsDate() != null) {
            queryWrapper.ge(Company::getFsDate, Utils.Date.getStart(company.getFsDate()));
            queryWrapper.le(Company::getFsDate, Utils.Date.getEnd(company.getFsDate()));
        }
        queryWrapper.orderByDesc(Company::getCreateDate);
        queryWrapper.leftJoin(Company.class,Company::getId,Company::getParentId);
        queryWrapper.select(" t.* ")
                .select("(select count(m.id) from member m where m.COMPANY_ID=t.id and m.ISDELETED=0) as countNum") ;
        queryWrapper.select("t1.name",Company::getParentName);
        queryWrapper.select("t1.company_path",Company::getParentCompanyPath);
        queryWrapper.eq(Objects.nonNull(company.getStatus()),Company::getStatus,Constants.ZERO);
        queryWrapper.like(StringUtils.isNotBlank(company.getName()),Company::getName,company.getName());
        queryWrapper.like(StringUtils.isNotBlank(company.getParentName()),"c.name",company.getParentName());
        return companyMapper.selectList(queryWrapper);
    }
    @Override
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
@@ -1,30 +1,23 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.SmsConstants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.HiddenDangerParamMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.SmsConfigMapper;
import com.doumee.dao.business.SmsEmailMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.HiddenDangerParamService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.third.EmayService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -67,7 +60,7 @@
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,安全员信息不正确,请按要求填写内容!");
            }
           List<Member>  memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                    .eq(Member::getType,Constants.TWO)
//                    .eq(Member::getType,Constants.TWO)
                    .eq(Member::getCompanyId,model.getCompanyId())
                    .in(Member::getId,ids)
                    .eq(Member::getIsdeleted,Constants.ZERO));
@@ -227,6 +220,7 @@
                .eq(pageWrap.getModel().getEditor() != null, HiddenDangerParam::getEditor, pageWrap.getModel().getEditor())
                .eq(pageWrap.getModel().getIsdeleted() != null, HiddenDangerParam::getIsdeleted, pageWrap.getModel().getIsdeleted())
                .like(pageWrap.getModel().getName() != null, HiddenDangerParam::getName, pageWrap.getModel().getName())
                .like(pageWrap.getModel().getCompanyName() != null, Company::getName, pageWrap.getModel().getCompanyName())
                .eq(pageWrap.getModel().getRemark() != null, HiddenDangerParam::getRemark, pageWrap.getModel().getRemark())
                .eq(pageWrap.getModel().getStatus() != null, HiddenDangerParam::getStatus, pageWrap.getModel().getStatus())
                .eq(pageWrap.getModel().getSortnum() != null, HiddenDangerParam::getSortnum, pageWrap.getModel().getSortnum())
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -16,20 +16,19 @@
import com.doumee.core.utils.SmsConstants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.MultifileMapper;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.system.model.Multifile;
import com.doumee.dao.system.model.Notices;
import com.doumee.service.business.HiddenDangerLogService;
import com.doumee.service.business.HiddenDangerService;
import com.doumee.service.business.third.EmayService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1125,6 +1125,7 @@
                .selectAs(Company::getName,Member::getCompanyName) ;
        queryWrapper.selectAs(Position::getName,Member::getPositionName);
        queryWrapper.leftJoin(Position.class,Position::getId,Member::getPositionId);
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
        if(StringUtils.isNotBlank(member.getName())){
            queryWrapper.like(Member::getName,member.getName());
        }
@@ -1139,6 +1140,12 @@
        }
        if(null != member.getCompanyId()) {
            queryWrapper.eq(Member::getCompanyId,member.getCompanyId());
        }
        if(null != member.getQuerySpecial() && Constants.equalsInteger(member.getQuerySpecial(),Constants.ONE)){
            String companySpecialId = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SPECIAL_COMPANY_ID).getCode();
            if(StringUtils.isNotBlank(companySpecialId)){
                queryWrapper.apply(" find_in_set('"+companySpecialId+"',REPLACE(t2.company_path,'/','')) ");
            }
        }
        queryWrapper.eq(Member::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(Member::getWorkStatus,Constants.ZERO);
@@ -1375,6 +1382,8 @@
        queryWrapper.selectAs(Company::getCompanyNamePath,Member::getCompanyNamePath);
        queryWrapper.selectAs(Company::getCompanyPath,Member::getCompanyPath);
        queryWrapper.select(" ( select count(1) from member_card mc where mc.isdeleted = 0 and  mc.member_id = t.id ) as  memberCardCount ");
        queryWrapper.select(" ( select max(tt.END_TIME) from train_time tt where tt.isdeleted = 0 and  tt.member_id = t.id ) as  trainEndTime ");
        queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,Member::getEditor);
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
        queryWrapper.selectAs(Position::getName,Member::getPositionName);
@@ -1629,9 +1638,11 @@
        }catch (Exception e){
        }
        List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>()
                .lambda().eq(Member::getIsdeleted,Constants.ZERO)
                .eq(Member::getType,Constants.memberType.internal)
        List<Member> memberList = memberJoinMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
                .selectAll(Member.class)
                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                .eq(Member::getIsdeleted,Constants.ZERO)
                .eq(Company::getType,Constants.ZERO)
                .eq(Member::getStatus,Constants.ZERO)
                .isNotNull(Member::getHkId)
                .apply("to_days(LAST_VISIT_DATE)+ "+days+" < to_days(now())" ));
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
@@ -1,7 +1,5 @@
package com.doumee.service.business.impl;
import cn.emay.sdk.util.StringUtil;
import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -13,11 +11,12 @@
import com.doumee.core.utils.SmsConstants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.SmsEmailMapper;
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;
import com.doumee.dao.web.reqeust.RevokeDTO;
@@ -29,7 +28,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.third.EmayService;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.bcel.Const;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
@@ -304,18 +304,6 @@
                platformWorkVO.setCallNum(
                        platformJobs.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),platform.getId())  && Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())).collect(Collectors.toList()).size()
                );
                System.out.printf(String.valueOf(platformJobs.stream().filter(i->
                        Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
                ).collect(Collectors.toList()).size())
                );
                System.out.printf(String.valueOf(platformJobList.stream().filter(i->
                                Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey()) ||
                                        ( Constants.equalsInteger(platform.getId(),i.getPlatformId()) &&
                                                Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.TRANSFERING.getKey())
                                        )
                        ).collect(Collectors.toList()).size())
                );
                platformWorkVO.setWaitNum(
                        platformJobs.stream().filter(i->
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -18,12 +18,14 @@
import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse;
import com.doumee.core.utils.*;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.join.PlatformJobJoinMapper;
import com.doumee.dao.business.join.PlatformJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.LargeScreenDataVO;
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;
@@ -35,10 +37,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.impl.hksync.HkSyncPushServiceImpl;
import com.doumee.service.business.impl.thrid.WmsServiceImpl;
import com.doumee.service.business.third.EmayService;
import com.doumee.service.business.third.TmsService;
import com.doumee.service.business.third.WmsService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -418,22 +418,28 @@
    public void queryWaitNum(PlatformJob platformJob){
        if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
            //查询前方排队数量
            List<PlatformJob> lineUpNum =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
            //查询当前所有排队数量
            List<PlatformJob> lineUpAllList =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
                    .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                    .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
                            ,Constants.PlatformJobStatus.IN_WAIT.getKey()
                            ,Constants.PlatformJobStatus.TRANSFERING.getKey())
                    .gt(PlatformJob::getSignDate,platformJob.getSignDate())
//                    .lt(PlatformJob::getSignDate,platformJob.getSignDate())
                    .eq(PlatformJob::getPlatformGroupId,platformJob.getPlatformGroupId())
                    .like(PlatformJob::getArriveDate,DateUtil.dateTypeToString(platformJob.getArriveDate(),"yyyy-MM-dd")));
            platformJob.setLineUpNum(lineUpNum.size());
            BigDecimal sumWorkRate = platformJob.getTotalNum();
            for (PlatformJob linePlatformJob:lineUpNum) {
//                    .like(PlatformJob::getArriveDate,DateUtil.dateTypeToString(platformJob.getArriveDate(),"yyyy-MM-dd"))
            );
            for (PlatformJob linePlatformJob:lineUpAllList) {
                this.getWmsJobData(linePlatformJob);
                sumWorkRate = sumWorkRate.add(linePlatformJob.getTotalNum());
            }
            if(lineUpNum.size()>Constants.ZERO){
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(lineUpAllList)){
                //查询排队在我前面的数据
                List<PlatformJob> lineUpNum = lineUpAllList.stream().filter(i->Objects.nonNull(i.getSignDate())&&i.getSignDate().getTime()<platformJob.getSignDate().getTime()).collect(Collectors.toList());
                platformJob.setLineUpNum(lineUpNum.size());
                BigDecimal sumWorkRate = platformJob.getTotalNum();
                for (PlatformJob linePlatformJob:lineUpNum) {
                    sumWorkRate = sumWorkRate.add(linePlatformJob.getTotalNum());
                }
                //计算预计等待时间
                List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>().lambda().eq(Platform::getIsdeleted,Constants.ZERO).eq(Platform::getGroupId,platformJob.getPlatformGroupId()));
                BigDecimal workRate = platformList.stream().map(m->m.getWorkRate()).reduce(BigDecimal.ZERO,BigDecimal::add);
@@ -497,7 +503,6 @@
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .eq(PlatformJob::getDrivierPhone,loginUserInfo.getMobile())
//                .like(PlatformJob::getArriveDate,DateUtil.getCurrDate())
                .orderByDesc(PlatformJob::getId)
        );
        for (PlatformJob platformJob:platformJobList) {
@@ -743,12 +748,12 @@
                            .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                            .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                            .eq(PlatformJob::getPlatformGroupId,platformGroup.getId())
                            .le(Objects.nonNull(platformJob),PlatformJob::getSignDate,DateUtil.dateTypeToString(platformJob.getSignDate(),"yyyy-MM-dd HH:mm:ss"))
                            .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey(),
                                    Constants.PlatformJobStatus.IN_WAIT.getKey(),
                                    Constants.PlatformJobStatus.CALLED.getKey())
                            .orderByDesc(PlatformJob::getStatus)
                            .orderByDesc(PlatformJob::getSignDate));
                            .orderByAsc(PlatformJob::getSignDate)
                            .orderByAsc(PlatformJob::getSignNum)
            );
            platformGroup.setSignJobList(platformJobSignInList);
            //查询当前月台组下
            List<PlatformJob> platformJobWorkList = platformJobJoinMapper.selectJoinList(PlatformJob.class,
@@ -1181,7 +1186,8 @@
                SmsConstants.platformJobContent.platformJobMove,oldPlatform.getName(),platform.getName()
        );
        platformJob.setPlatformName(platform.getName());
        platformJob.setPlatformName(oldPlatform.getName());
        platformJob.setPlatformId(oldPlatform.getId());
        this.broadcastAndLEed(platformJob, StringUtils.isBlank(oldPlatform.getLedContent())?Constants.PlatformLedContent.IDEL_CONTNET.getName():oldPlatform.getLedContent(),
                null
        );
@@ -1391,8 +1397,6 @@
            //TODO å¤–协车卸货 æˆ–者 å¸‚公司车卸货 åˆ™æ ¹æ®ä»»åŠ¡æƒ…å†µ
        }
        //发送短信信息
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java
@@ -119,10 +119,10 @@
                                    wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getLockStatus()
                            );
                        }
                        wmsJobContractVO.setStatus(
                                wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getStatus()
                        );
                    }
                    wmsJobContractVO.setStatus(
                            wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getStatus()
                    );
                }
                wmsJobContractVOList.add(wmsJobContractVO);
            }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -1,6 +1,7 @@
package com.doumee.service.business.impl;
import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -8,29 +9,27 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.SmsConstants;
import com.doumee.core.utils.Utils;
import com.doumee.core.utils.*;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.SmsEmailService;
import com.doumee.service.business.third.EmayService;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.net.URLEncoder;
import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * çŸ­ä¿¡é‚®ä»¶ä¿¡æ¯è¡¨Service实现
@@ -51,7 +50,7 @@
    @Value("${debug_model}")
    private boolean debugModel;
    public static void isCaptcheValide(SmsEmailMapper smsEmailMapper, String phone, String captche) {
    public static void isCaptcheValide(com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper, String phone, String captche) {
        SmsEmail model = smsEmailMapper.selectOne(new QueryWrapper<SmsEmail>().lambda()
                .eq(SmsEmail::getType, Constants.ZERO)
                .eq(SmsEmail::getPhone, phone)
@@ -75,6 +74,8 @@
        model.setEditDate(new Date());
        smsEmailMapper.updateById(model);
    }
    @Override
    public Integer create(SmsEmail smsEmail) {
@@ -100,10 +101,11 @@
        String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode()+"验证码为:"+code+",此验证码有效为3分钟。请勿泄露";
        boolean result=   emayService.sendSingleSms(smsEmail.getPhone(),content);
        if(!result){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,短信验证码发送失败,请稍后重试!");
        }
//        boolean result=   emayService.sendSingleSms(smsEmail.getPhone(),content);
        emayService.sendSmsByHk(smsEmail.getPhone(),content);
//        if(!result){
//            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,短信验证码发送失败,请稍后重试!");
//        }
        smsEmail.setRemark(code);
        smsEmail.setIsdeleted(Constants.ZERO);
@@ -265,7 +267,7 @@
     * @param msg
     * @param auditUser
     */
    public static void sendVisitSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
    public static void sendVisitSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                    VisitsMapper visitsMapper, Integer objId, String objCode, String msg, List<String> auditUser){
        try{
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
@@ -319,8 +321,8 @@
     * @param msg
     * @param auditUser
     */
    public static void sendVisitReportSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                    VisitsMapper visitsMapper, Integer objId, String objCode, String msg, List<String> auditUser){
    public static void sendVisitReportSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                          VisitsMapper visitsMapper, Integer objId, String objCode, String msg, List<String> auditUser){
        try{
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
                    objCode).last(" limit 1 "));
@@ -373,8 +375,8 @@
     * @param objCode
     * @param auditUser
     */
    public static void sendHiddenDangerSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                    HiddenDangerMapper hiddenDangerMapper, Integer objId, String objCode,List<String> auditUser){
    public static void sendHiddenDangerSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                           HiddenDangerMapper hiddenDangerMapper, Integer objId, String objCode, List<String> auditUser){
        try{
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
                    objCode).last(" limit 1 "));
@@ -407,8 +409,8 @@
     * @param msg
     * @param userList
     */
    public static void sendCarUseSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                           CarUseBookMapper carUseBookMapper, Integer objId, String objCode, String msg, List<String> userList){
    public static void sendCarUseSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                     CarUseBookMapper carUseBookMapper, Integer objId, String objCode, String msg, List<String> userList){
        //您有一条【用车申请】需要处理,详细信息请前往微信公众号查看。
        try{
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
@@ -448,8 +450,8 @@
     * @param msg
     * @param auditUser
     */
    public static void sendPlatformBookSms(SystemDictDataBiz systemDictDataBiz,EmayService emayService ,SmsEmailMapper smsEmailMapper ,SmsConfigMapper smsConfigMapper,
            PlatformBooksMapper platformBooksMapper,Integer objId,String objCode,String msg,List<String> auditUser){
    public static void sendPlatformBookSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                           PlatformBooksMapper platformBooksMapper, Integer objId, String objCode, String msg, List<String> auditUser){
        try{
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
                    objCode).last(" limit 1 "));
@@ -493,8 +495,8 @@
     * @param objCode
     * @param platformName
     */
    public static void sendPlatformJobSms(SystemDictDataBiz systemDictDataBiz,EmayService emayService , SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                          PlatformJobMapper platformJobMapper, Integer objId, String objCode, String platformName,String newPlatformName){
    public static void sendPlatformJobSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper,
                                          PlatformJobMapper platformJobMapper, Integer objId, String objCode, String platformName, String newPlatformName){
        //platformJobNewJob    {车牌号}车主您好,您有一个新的运输任务,详细信息请前往微信公众号查看。
        //platformJobStopJob    {车牌号}车主您好,您的运输任务已被取消,详细信息请前往微信公众号查看。
        //platformJobCallIn    {车牌号}车主您好,请在10分钟内,前往园区等待区等待叫号作业。
@@ -542,7 +544,8 @@
            smsEmail.setObjType(objType);
            smsEmail.setObjId(objId);
            smsEmailMapper.insert(smsEmail);
            emayService.sendSingleSms(phone,content);
            emayService.sendSmsByHk(phone,content);
        }
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -12,12 +12,10 @@
import com.doumee.core.erp.model.openapi.response.erp.ApproveInfoResponse;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseListPageResponse;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.FacePictureCheckRequest;
import com.doumee.core.haikang.model.param.request.VisitAppointmentOutRequest;
import com.doumee.core.haikang.model.param.request.VisitAppointmentRequest;
import com.doumee.core.haikang.model.param.respose.AscDeviceStatusInfoResponse;
import com.doumee.core.haikang.model.param.respose.FacePictureCheckResponse;
import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse;
import com.doumee.core.haikang.service.HKService;
@@ -30,12 +28,13 @@
import com.doumee.dao.admin.response.PCWorkPlatformDataVO;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.CompanyMapper;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.dto.ResetPasswordDTO;
import com.doumee.dao.business.join.DeviceJoinMapper;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.dto.NoticesDTO;
import com.doumee.dao.system.dto.ResetSystemUserPwdDTO;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.system.model.Notices;
@@ -58,23 +57,13 @@
import com.doumee.service.business.third.EmayService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import sun.misc.BASE64Encoder;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.Date;
import java.util.stream.Collectors;
@@ -1551,7 +1540,7 @@
            //今日在园人数
            pcWorkPlatformDataVO.setTodayInParkUserNum(
                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).count()
                    retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count()
            );
            pcWorkPlatformDataVO.setTodayInUserNum(Constants.ZERO);
@@ -1567,7 +1556,7 @@
            //在园访客数量
            pcWorkPlatformDataVO.setInParkVisitUserNum(
                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)&&Objects.isNull(i.getCompanyType())).count()
                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count()
            );
            pcWorkPlatformDataVO.setVisitUserNum(Constants.ZERO);
            pcWorkPlatformDataVO.setSignLevelNum(Constants.ZERO);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
@@ -20,14 +21,15 @@
import com.doumee.dao.business.model.Platform;
import com.doumee.dao.business.model.PlatformDevice;
import com.doumee.dao.business.model.PlatformJob;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * è®¾å¤‡ä¿¡æ¯è¡¨Service实现
@@ -42,6 +44,10 @@
    private PlatformJobMapper platformJobMapper;
    @Autowired
    private PlatformDeviceMapper platformDeviceMapper;
    @Autowired
    @Lazy
    private SystemDictDataBiz systemDictDataBiz;
    /**
     * åŒæ­¥æµ·åº·æœˆå°æ•°æ®
@@ -276,4 +282,46 @@
        return  true;
    }
    public  List<Integer> getMenuConfig(String userId){
        try {
            List<Integer> resultList= new ArrayList<>();
            Map<String,String> param = new HashMap<>();
            param.put("userId",userId);
            BaseResponse<MenuDataResponse> result = HKService.getMenuConfig(param);
            if(result !=null){
                if(!StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),result.getMsg());
                }
                MenuDataResponse menuDataResponse = result.getData();
                List<String> list = menuDataResponse.getList();
                if(CollectionUtils.isNotEmpty(list)){
                    //分别判断4个菜单
                    if(list.stream().filter(i->i.equals("Infovision iPark Platform_"+HKConstants.MenuPageId.afzx)).collect(Collectors.toList()).size()>Constants.ZERO){
                        resultList.add(0);
                    }
                    if(list.stream().filter(i->i.equals("Infovision iPark Platform_"+HKConstants.MenuPageId.xkzx)).collect(Collectors.toList()).size()>Constants.ZERO){
                        resultList.add(1);
                    }
                    if(list.stream().filter(i->i.equals("Infovision iPark Platform_"+HKConstants.MenuPageId.ngzx)).collect(Collectors.toList()).size()>Constants.ZERO){
                        resultList.add(2);
                    }
                    if(list.stream().filter(i->i.equals("Infovision iPark Platform_"+HKConstants.MenuPageId.jsc)).collect(Collectors.toList()).size()>Constants.ZERO){
                        resultList.add(3);
                    }
                    if(list.stream().filter(i->i.equals("Infovision iPark Platform_"+HKConstants.MenuPageId.kqgzt)).collect(Collectors.toList()).size()>Constants.ZERO){
                        resultList.add(4);
                    }
                }
                return resultList;
            }else{
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,获取菜单失败!");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,获取菜单失败,请稍后重试!");
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -27,6 +27,12 @@
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -34,6 +40,7 @@
import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
@@ -88,6 +95,13 @@
    private PlatformLogMapper platformLogMapper;
    @Autowired
    private PlatformWarnEventServiceImpl platformWarnEventService;
    /**
     * æµ·åº·é—¨ç¦äº‹ä»¶æŽ¨é€
     * @param param
@@ -840,10 +854,8 @@
                                    Constants.PlatformJobStatus.IN_WAIT.getKey(),
                                    Constants.PlatformJobStatus.CALLED.getKey(),
                                    Constants.PlatformJobStatus.WORKING.getKey(),
                                    Constants.PlatformJobStatus.DONE.getKey(),
                                    Constants.PlatformJobStatus.TRANSFERING.getKey(),
                                    Constants.PlatformJobStatus.EXCEPTION.getKey(),
                                    Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                                    Constants.PlatformJobStatus.EXCEPTION.getKey()
                            )
                    )==Constants.ZERO){
                        PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
@@ -1263,12 +1275,12 @@
            if(StringUtils.isBlank(device.getHkId())){
                continue;
            }
            if(Constants.equalsInteger(device.getType(),Constants.ZERO)){
            /*if(Constants.equalsInteger(device.getType(),Constants.ZERO)){
                //如果是LED
                PlatformBroadcastLog log = dealLedContentBiz(model.getId(),device.getHkNo(),device.getName(),content,speed,1);
                logList.add(log);
                ledList.add(device.getHkId());
            }else  if(Constants.equalsInteger(device.getType(),Constants.TWO)){
            }else  */if(Constants.equalsInteger(device.getType(),Constants.TWO)){
                //如果是广播点
                bNames += device.getName()+";";
                broadcastList.add(device.getHkId());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
@@ -13,11 +13,14 @@
import com.doumee.core.wms.model.response.WmsBaseResponse;
import com.doumee.core.wms.model.response.WmsInventoryDataResponse;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.impl.SmsEmailServiceImpl;
import com.doumee.service.business.third.EmayService;
import com.doumee.service.business.third.WmsService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -85,10 +88,22 @@
        }
        WmsOrderPlatformRequest  param  = new WmsOrderPlatformRequest();
         param.setData(new ArrayList<>());
         WmsOrderPlatformInfoRequest o = new WmsOrderPlatformInfoRequest();
         o.setCarrierBillCode(job.getBillCode());
         o.setRailwayNo(job.getPlatformWmsCode());
         param.getData().add(o);
        List<PlatformWmsDetail> platformWmsDetailList = platformWmsDetailMapper.selectList(new QueryWrapper<PlatformWmsDetail>().lambda()
                .eq(PlatformWmsDetail::getJobId,job.getId())
                .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO)
        );
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsDetailList)){
            for (PlatformWmsDetail platformWmsDetail:platformWmsDetailList) {
                if(StringUtils.isNotBlank(platformWmsDetail.getIocode())){
                    WmsOrderPlatformInfoRequest o = new WmsOrderPlatformInfoRequest();
                    o.setCarrierBillCode(platformWmsDetail.getIocode());
                    o.setRailwayNo(job.getPlatformWmsCode());
                    param.getData().add(o);
                }
            }
        }
         String url = type == 0?systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_INBOUND_PLATFROM_URL).getCode():
                 systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_OUTBOUND_PLATFROM_URL).getCode();;
         String name = type ==0?"【WMS】入库作业单分配月台":"【WMS】出库作业的分配月台";
@@ -503,6 +518,35 @@
                    .set(PlatformWmsDetail::getStatus,Constants.TWO)
                    .in(PlatformWmsDetail::getIocode,iocodeList)
                    .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO));
            platformWmsJobMapper.update(null,new UpdateWrapper<PlatformWmsJob>().lambda()
                    .set(PlatformWmsJob::getStatus,Constants.TWO)
                    .in(PlatformWmsJob::getIocode,iocodeList)
                    .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO));
            List<PlatformWmsJob> platformWmsJob = platformWmsJobMapper.selectList(new QueryWrapper<PlatformWmsJob>().lambda()
                    .in(PlatformWmsJob::getIocode,iocodeList)
                    .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO)
            );
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsJob)){
                List<Integer> jobIds = platformWmsJob.stream().filter(i->Objects.nonNull(i.getJobId())).map(i->i.getJobId()).collect(Collectors.toList());
                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jobIds)){
                    Set<Integer> setJobIds = new HashSet<>(jobIds);
                    platformJobMapper.update(null,new UpdateWrapper<PlatformJob>()
                            .lambda()
                            .set(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey())
                            .in(PlatformJob::getId,setJobIds)
                    );
                    for (Integer jobId:setJobIds
                    ) {
                        SmsEmailServiceImpl.sendPlatformJobSms(systemDictDataBiz,
                                emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,jobId,
                                SmsConstants.platformJobContent.platformJobStopJob,null,null
                        );
                    }
                }
            }
        }catch (Exception e){
            log.error("【WMS】处理入库取消通知业务===============业务处理异常"+e.getMessage());
            return returnFailReuslt("业务处理异常");
@@ -534,6 +578,36 @@
                    .set(PlatformWmsDetail::getStatus,Constants.TWO)
                    .in(PlatformWmsDetail::getIocode,iocodeList)
                    .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO));
            platformWmsJobMapper.update(null,new UpdateWrapper<PlatformWmsJob>().lambda()
                    .set(PlatformWmsJob::getStatus,Constants.TWO)
                    .in(PlatformWmsJob::getIocode,iocodeList)
                    .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO));
            List<PlatformWmsJob> platformWmsJob = platformWmsJobMapper.selectList(new QueryWrapper<PlatformWmsJob>().lambda()
                    .in(PlatformWmsJob::getIocode,iocodeList)
                    .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO)
            );
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsJob)){
                List<Integer> jobIds = platformWmsJob.stream().filter(i->Objects.nonNull(i.getJobId())).map(i->i.getJobId()).collect(Collectors.toList());
                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jobIds)){
                    Set<Integer> setJobIds = new HashSet<>(jobIds);
                    platformJobMapper.update(null,new UpdateWrapper<PlatformJob>()
                            .lambda()
                            .set(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey())
                            .in(PlatformJob::getId,setJobIds)
                    );
                    for (Integer jobId:setJobIds
                         ) {
                        SmsEmailServiceImpl.sendPlatformJobSms(systemDictDataBiz,
                                emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,jobId,
                                SmsConstants.platformJobContent.platformJobStopJob,null,null
                        );
                    }
                }
            }
        }catch (Exception e){
            log.error("【WMS】出库取消通知任务业务处理===============业务处理异常"+e.getMessage());
            return returnFailReuslt("业务处理异常");
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/EmayService.java
@@ -6,15 +6,23 @@
import cn.emay.sdk.core.dto.sms.response.SmsResponse;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.service.business.InterfaceLogService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Service
public class EmayService {
@@ -89,4 +97,28 @@
    }
    public  void sendSmsByHk(String phone,String content){
        try {
            String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HTTPS).getCode() +
                    systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HOST).getCode() +
                    HKConstants.ARTEMIS_PATH +
                    HKConstants.InterfacePath.sendSms[0];
            Map<String,Object> map = new HashMap<>();
            map.put("phoneNo",phone.split(","));
            map.put("content",content);
            BaseResponse result = HKService.sendSmsByHk(map,url);
            if(result !=null){
                if(!StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),result.getMsg());
                }
            }else{
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,短信发送失败,请稍后重试!");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,短信发送失败,请稍后重试!");
    }
}