k94314517
2024-03-07 cc80794e556bbe1e43f9c1369e1dfc9c61318fda
ERP接口
已修改20个文件
254 ■■■■ 文件已修改
server/dmvisit_service/src/main/java/com/doumee/core/utils/DateUtil.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/VisitConfigDTO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/web/response/WxAuthorizeVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceRoleServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/EmpowerServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/common/tree/CompanyTree.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_web/src/main/java/com/doumee/api/ScheduleTool.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_web/src/main/java/com/doumee/api/web/PublicController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_web/src/main/java/com/doumee/api/web/VisitorController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -439,6 +439,19 @@
        }
        return "";
    }
    public static String getShortTimeToNull(Date date) {
        if (date == null)
            return null;
        try {
            String nowDate = sdfLong.format(date);
            return nowDate;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
    /**
     * Descrption:取得当前日期,格式为:yyyy-MM-dd HH:mm:ss
     *
server/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java
@@ -38,7 +38,7 @@
        WxMpTemplateMessage templateMessage =  WxMpTemplateMessage.builder()
                .toUser(visits.getOpenid())
                .templateId(tempId)
                .url(prefix + "pages/appointmentDetails/appointmentDetails?id="+visits.getId())
                .url(prefix + visits.getId())
                .build();
        String thing1 = "待审批";
        if(visits.getStatus()==2){
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/VisitConfigDTO.java
@@ -38,4 +38,9 @@
    @ApiModelProperty(value = "入厂须知")
    private String visitNotice;
    @ApiModelProperty(value = "自选门禁配置")
    private Integer doorsVisitRequired;
}
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java
@@ -36,7 +36,7 @@
    @ApiModelProperty(value = "公司名称")
    private String companyName;
    @ApiModelProperty(value = "海康状态 0待下发 1成功2失败")
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步 2同步失败 3不符合下发条件 4等待删除权限  ", example = "1")
    private Integer hkStatus;
    @ApiModelProperty(value = "公司负责人")
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
@@ -71,6 +71,10 @@
    @ApiModelProperty(value = "取消备注")
    private String cancelInfo;
    @ApiModelProperty(value = "设备名称")
    @TableField(exist = false)
    private String deviceName;
    @ApiModelProperty(value = "所属公司编码")
    @TableField(exist = false)
    private String companyId;
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -99,9 +99,11 @@
    @ApiModelProperty(value = "证件显示信息")
    @ExcelColumn(name="证件显示信息")
    private String idcardDecode;
    @ApiModelProperty(value = "证件类型 0身份证 1港澳证件 2护照", example = "1")
    @ExcelColumn(name="证件类型 0身份证 1港澳证件 2护照")
    private Integer idcardType;
    @ApiModelProperty(value = "工号")
    @ExcelColumn(name="工号")
    private String code;
@@ -215,6 +217,10 @@
    @TableField(exist = false)
    private String roleIdParam;
    @ApiModelProperty(value = "前缀地址")
    @TableField(exist = false)
    private String prefixUrl;
    @ApiModelProperty(value = "授权门禁组编码集合,【访客端】唯一标识",hidden = true )
    @TableField(exist = false)
    private Integer[] roleIds;
server/dmvisit_service/src/main/java/com/doumee/dao/web/response/WxAuthorizeVO.java
@@ -1,5 +1,6 @@
package com.doumee.dao.web.response;
import com.doumee.dao.business.model.Member;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -18,4 +19,6 @@
    @ApiModelProperty(value = "用户token")
    private String token;
    @ApiModelProperty(value = "用户信息")
    private Member member;
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceRoleServiceImpl.java
@@ -52,14 +52,20 @@
    @Override
    public Integer create(DeviceRole deviceRole) {
        if(Objects.isNull(deviceRole)
            || StringUtils.isBlank(deviceRole.getName())
            || Objects.isNull(deviceRole.getType())
            || Objects.isNull(deviceRole.getIsDefault())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        // 获取之前是否存在默认门禁组
        DeviceRole newDeviceRole = null;
        if(null != deviceRole.getType()) {
            newDeviceRole = getDeviceRole(deviceRole.getType());
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
        if(null != newDeviceRole) {
        if(null != newDeviceRole && deviceRole.getIsDefault().equals(Constants.ZERO)) {
            DeviceRole updateDeviceRole = new DeviceRole();
            // 若现在新增数据设置默认门禁组;那么先把之前的默认门禁组状态改为不是默认的
            updateDeviceRole.setId(newDeviceRole.getId());
@@ -117,7 +123,7 @@
            newDeviceRole = getDeviceRole(deviceRole.getType());
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
        if(null != newDeviceRole) {
        if(null != newDeviceRole  && deviceRole.getIsDefault().equals(Constants.ZERO)) {
            DeviceRole update = new DeviceRole();
            update.setEdirot(loginUserInfo.getId().toString());
            update.setEditDate(new Date());
@@ -163,7 +169,8 @@
        LambdaQueryWrapper<DeviceRole> query = new LambdaQueryWrapper<>();
        query.eq(DeviceRole::getIsdeleted,Constants.ZERO)
                .eq(DeviceRole::getIsDefault,Constants.ZERO)
                .eq(DeviceRole::getType,type);
                .eq(DeviceRole::getType,type)
                .last(" limit 1");
        // 查询是否有默认门禁组,只能有一组默认门禁组
        DeviceRole getDeviceRole = deviceRoleMapper.selectOne(query);
        return getDeviceRole;
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/EmpowerServiceImpl.java
@@ -9,6 +9,7 @@
import com.doumee.dao.business.EmpowerMapper;
import com.doumee.dao.business.join.EmpowerJoinMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.Device;
import com.doumee.dao.business.model.Empower;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.system.model.SystemUser;
@@ -109,11 +110,13 @@
        queryWrapper.selectAs(Member::getName,Empower::getMemberName);
        queryWrapper.selectAs(Member::getPhone,Empower::getMemberPhone);
        queryWrapper.selectAs(Member::getIdcardDecode,Empower::getMemberidCard);
        queryWrapper.selectAs(Device::getName,Empower::getDeviceName);
        queryWrapper.selectAs(Company::getName,Empower::getCompanyName);
        queryWrapper.selectAs(SystemUser::getUsername,Empower::getCreaterName);
        queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
        queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,Empower::getCreator);
        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
        queryWrapper
               /* .eq(Empower::getIsdeleted, Constants.ZERO)*/
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java
@@ -296,7 +296,8 @@
                    .selectAs(Member::getName,MemberCard::getMemberName)
                    .selectAs(Member::getPhone,MemberCard::getMemberPhone)
                    .selectAs(Member::getType,MemberCard::getMemberType)
                    .selectAs(Company::getName,MemberCard::getCompanyName);
                    .selectAs(Company::getName,MemberCard::getCompanyName)
                    .eq(MemberCard::getIsdeleted,Constants.ZERO);
        queryWrapper.like(Objects.nonNull(pageWrap.getModel().getCode()),MemberCard::getCode,pageWrap.getModel().getCode())
                    .eq(Objects.nonNull(pageWrap.getModel().getStatus()),MemberCard::getStatus,pageWrap.getModel().getStatus())
                    .eq(Objects.nonNull(pageWrap.getModel().getStatus()),MemberCard::getStatus,pageWrap.getModel().getStatus())
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -603,6 +603,7 @@
        queryWrapper.selectAll(Member.class);
        queryWrapper.selectAs(Company::getName,Member::getCompanyName);
        queryWrapper.select(" ( select count(1) from member_card mc where mc.member_id = t.id ) as  memberCardCount ");
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
        queryWrapper.in(Objects.nonNull(pageWrap.getModel().getCompanyIds())&&pageWrap.getModel().getCompanyIds().size()>0,
                        Member::getCompanyId,pageWrap.getModel().getCompanyIds())
@@ -714,8 +715,8 @@
                .selectAs(Company::getName,MemberInfoDTO::getCompanyName)
                .select(" (select ua.CREATE_DATE from user_action ua where ua.MEMBER_ID=t.id and ua.ISDELETED=0  order by ua.CREATE_DATE desc  limit 1) as optTime")
                .select(" (select s.REALNAME from user_action uac left join system_user s on uac.CREATOR = s.ID    where uac.MEMBER_ID=t.id and uac.ISDELETED=0 order by uac.CREATE_DATE desc  limit 1) as creatorName")
                .select(" (select STARTTIME from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0 order by CREATE_DATE desc  limit 1) as visitsLastDate");
                .select(" (select STARTTIME from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0 order by CREATE_DATE desc  limit 1) as visitsLastDate")
                .eq(Member::getIsdeleted,Constants.ZERO);
                queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getCreaterId()),Member::getEditor,pageWrap.getModel().getCreaterId());
                queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Member::getType,pageWrap.getModel().getType());
                queryWrapper
@@ -878,24 +879,35 @@
        WxAuthorizeVO wxAuthorizeVO = new WxAuthorizeVO();
        wxAuthorizeVO.setOpenid(openId);
        //根据openId 查询用户信息
        Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
        Member member = memberJoinMapper.selectJoinOne(Member.class,new MPJLambdaWrapper<Member>()
                .selectAll(Member.class)
                .selectAs(Company::getName,Member::getCompanyName)
                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                .eq(Member::getOpenid,openId)
                .eq(Member::getIsdeleted,Constants.ZERO)
                .ne(Member::getType,Constants.memberType.visitor)
                .orderByDesc(Member::getCreateDate)
                .last(" limit 1 ")
        );
        //非访客用户 进行判断是否存在用户
        if(!Objects.isNull(member)&&!member.getType().equals(Constants.memberType.visitor)){
        if(!Objects.isNull(member)){
            if(member.getIsdeleted() == Constants.ONE){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已删除,请联系管理员");
            }
            if(member.getStatus() != Constants.ZERO){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已禁用,请联系管理员");
            }
            if(StringUtils.isNotBlank(member.getIdcardNo())){
               member.setIdcardDecode(DESUtil.decrypt(Constants.EDS_PWD, member.getIdcardNo()));
            }
            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
            member.setPrefixUrl(prefixUrl);
            JwtPayLoad payLoad = new JwtPayLoad(Integer.toString(member.getId()));
            String token = JwtTokenUtil.generateToken(payLoad);
            //存储token至redis
            RedisUtil.addObject(redisTemplate,Constants.RedisKeys.INTERNAL_TOKEN+"_"+member.getId(),token,Constants.RedisKeys.EXPIRE_TIME);
            wxAuthorizeVO.setToken(token);
            wxAuthorizeVO.setMember(member);
        }
        return wxAuthorizeVO;
    }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -54,6 +54,7 @@
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 org.springframework.util.DigestUtils;
@@ -114,6 +115,7 @@
            if (Objects.isNull(erpVisitDTO)
                    || StringUtils.isBlank(erpVisitDTO.getName())
                    || StringUtils.isBlank(erpVisitDTO.getPhone())
                    || StringUtils.isBlank(erpVisitDTO.getCompanyName())
                    || Objects.isNull(erpVisitDTO.getIdcardType())
                    || StringUtils.isBlank(erpVisitDTO.getIdcardNo())
                    || Objects.isNull(erpVisitDTO.getStarttime())
@@ -155,6 +157,8 @@
                for (ErpWithVisitDTO erpWithVisitDTO : erpWithVisitDTOList) {
                    Visits withVisits = new Visits();
                    BeanUtils.copyProperties(erpWithVisitDTO, withVisits);
                    withVisits.setCompanyName(visits.getCompanyName());
                    withVisits.setReason(visits.getReason());
                    visitsList.add(withVisits);
                }
                visits.setWithUserList(visitsList);
@@ -163,11 +167,12 @@
        }catch (BusinessException e){
            throw e;
        }finally {
            saveInterfaceLog(erpVisitDTO,"/visitBiz/resource/crateVisit",null,Constants.ZERO);
            saveInterfaceLog(erpVisitDTO,"/visitBiz/resource/createVisit",null,Constants.ZERO);
        }
    }
    private void saveInterfaceLog(Object param, String path,String result,Integer type) {
    @Transactional(propagation = Propagation.NOT_SUPPORTED)
    void saveInterfaceLog(Object param, String path, String result, Integer type) {
        InterfaceLog interfaceLog=new InterfaceLog();
        interfaceLog.setType(type);
        interfaceLog.setCreateDate(new Date());
@@ -568,9 +573,10 @@
    private void isValidBaseParam(Visits visits) {
        if(visits.getEndtime() == null
                || visits.getStarttime() == null
//                ||  StringUtils.isBlank(visits.getReason())
                ||  StringUtils.isBlank(visits.getReason())
                ||  StringUtils.isBlank( visits.getName())
                ||  StringUtils.isBlank( visits.getPhone())
                ||  StringUtils.isBlank( visits.getCompanyName())
                ||  visits.getIdcardType() == null
//                ||  StringUtils.isBlank( visits.getFaceImg() )
                ||  StringUtils.isBlank( visits.getIdcardNo() )
@@ -917,6 +923,9 @@
        if(!Constants.equalsInteger(Constants.ONE, member.getCanVisit())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,该拜访人暂时不能接受您的拜访申请~");
        }
        if(StringUtils.isBlank(member.getHkId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,该拜访人未下发暂时不能接受您的拜访申请~");
        }
        return  member;
    }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -44,6 +44,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
@@ -524,7 +525,7 @@
                   for (DeviceRole deviceRole:deviceRoleList) {
                       RoleListResponse roleListResponse = new RoleListResponse();
                       BeanUtils.copyProperties(deviceRole,roleListResponse);
                       if(deviceRole.getType().equals(Constants.TWO)){
                       if(deviceRole.getType().equals("2")){
                           roleListResponse.setType(Constants.ONE);
                       }else{
                           roleListResponse.setType(Constants.ZERO);
@@ -877,6 +878,7 @@
                    member.setFsStatus(Constants.ZERO);
                    member.setCompanyId(company.getId());
                    member.setType(Constants.memberType.internal);
                    member.setCanVisit(Constants.ONE);
                    String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo());
                    member.setIdcardNo(encryptIdNo);
                    member.setStartTime(param.getValidStartTime());
@@ -1008,6 +1010,30 @@
    @Override
    public void roleUserAuthor(UserAuthorRequest param){
        try{
//            if(Objects.isNull(param)
//                    ||StringUtils.isBlank(param.getUserId())){
//                throw new BusinessException(ResponseStatus.BAD_REQUEST);
//            }
//            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getErpId,param.getUserId()).last("limit 1"));
//            if(Objects.isNull(member)){
//                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,用户信息不存在!");
//            }
//            List<Integer> doorIds = getRoleIdByParam(param.getRoleIds(),member);
//            if(StringUtils.isBlank(member.getRoleId())){
//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到门禁组数据");
//            }
//            //更新授权有效期
//            Member update = new Member();
//            update.setId(member.getId());
//            update.setEditDate(new Date());
//            update.setStartTime(param.getValidStartTime());
//            update.setEndTime(param.getValidEndTime());
//            update.setRoleId(StringUtils.isNotBlank(member.getRoleId())?member.getRoleId():null);
//            update.setHkStatus(Constants.ZERO);//做一遍更新逻辑
//            update.setRemark("待同步安防平台");
//            memberMapper.updateById(update);
        if(Objects.isNull(param)
                ||StringUtils.isBlank(param.getUserId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -1042,61 +1068,68 @@
                .set(Member::getEndTime,param.getValidEndTime())
                .set(Member::getEditDate,new Date())
                .set(Member::getHkStatus,Constants.ZERO ));
        }catch (BusinessException e){
            throw e;
        }finally {
            saveInterfaceLog(param,"/event/role/userAuthor",null,Constants.ZERO);
        }
    }
    @Override
    public void parkCarAuthor(CarAuthorRequest param){
        if(Objects.isNull(param)
                ||StringUtils.isBlank(param.getCarCode())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(Objects.nonNull(param.getValidStartTime())&&Objects.nonNull(param.getValidEndTime())){
            if(param.getValidStartTime().getTime()> param.getValidEndTime().getTime()){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,有效期时间不合法!");
        try{
            if(Objects.isNull(param)
                    ||StringUtils.isBlank(param.getCarCode())){
                throw new BusinessException(ResponseStatus.BAD_REQUEST);
            }
        }
        Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getErpId,param.getUserId()).last("limit 1"));
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,用户信息不存在!");
        }
        //删除车量库记录数据
        parkBookMapper.update(null,new UpdateWrapper<ParkBook>().lambda()
                .eq(ParkBook::getCarCode,param.getCarCode())
                .set(ParkBook::getIsdeleted,Constants.ONE)
                .set(ParkBook::getHkStatus,Constants.ZERO)
        );
        //查询车库信息
        List<Parks> parksList = new ArrayList<>();
        if(CollectionUtils.isNotEmpty(param.getParkIdList())){
             parksList  = parksMapper.selectList(new QueryWrapper<Parks>().lambda()
                    .in(Parks::getId,param.getParkIdList())
            if(Objects.nonNull(param.getValidStartTime())&&Objects.nonNull(param.getValidEndTime())){
                if(param.getValidStartTime().getTime()> param.getValidEndTime().getTime()){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,有效期时间不合法!");
                }
            }
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getErpId,param.getUserId()).last("limit 1"));
            if(Objects.isNull(member)){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,用户信息不存在!");
            }
            //删除车量库记录数据
            parkBookMapper.update(null,new UpdateWrapper<ParkBook>().lambda()
                    .eq(ParkBook::getCarCode,param.getCarCode())
                    .set(ParkBook::getIsdeleted,Constants.ONE)
                    .set(ParkBook::getHkStatus,Constants.ZERO)
            );
        }else{
            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,停车库信息不存在,授权失败");
        }
        if(CollectionUtils.isNotEmpty(parksList)){
            List<ParkBook> parkBookList = new ArrayList<>();
            for (Parks parks:parksList) {
                ParkBook parkBook = new ParkBook();
                parkBook.setIsdeleted(Constants.ZERO);
                parkBook.setCreateDate(new Date());
                parkBook.setCarCode(param.getCarCode());
                parkBook.setParkId(parks.getId());
                parkBook.setOrigin(Constants.ZERO);
                parkBook.setStartTime(Objects.isNull(param.getValidStartTime())?new Date():param.getValidStartTime());
                parkBook.setEndTime(Objects.isNull(param.getValidEndTime())?null:param.getValidEndTime());
                parkBook.setTimeType(Objects.isNull(param.getValidEndTime())?Constants.ZERO:Constants.ONE);
                parkBook.setMemberId(member.getId());
                parkBook.setHkStatus(Constants.ZERO);
                parkBook.setRemark("待同步安防平台");
                parkBookList.add(parkBook);
            //查询车库信息
            if(CollectionUtils.isNotEmpty(param.getParkIdList())){
                List<Parks>  parksList  = parksMapper.selectList(new QueryWrapper<Parks>().lambda()
                        .in(Parks::getId,param.getParkIdList())
                );
                if(CollectionUtils.isNotEmpty(parksList)){
                    List<ParkBook> parkBookList = new ArrayList<>();
                    for (Parks parks:parksList) {
                        ParkBook parkBook = new ParkBook();
                        parkBook.setIsdeleted(Constants.ZERO);
                        parkBook.setCreateDate(new Date());
                        parkBook.setCarCode(param.getCarCode());
                        parkBook.setParkId(parks.getId());
                        parkBook.setOrigin(Constants.ZERO);
                        parkBook.setStartTime(Objects.isNull(param.getValidStartTime())?null:param.getValidStartTime());
                        parkBook.setEndTime(Objects.isNull(param.getValidEndTime())?null:param.getValidEndTime());
                        parkBook.setTimeType(Objects.isNull(param.getValidEndTime())?Constants.ZERO:Constants.ONE);
                        parkBook.setMemberId(member.getId());
                        parkBook.setHkStatus(Constants.ZERO);
                        parkBook.setRemark("待同步安防平台");
                        parkBookList.add(parkBook);
                    }
                    parkBookMapper.insertBatchSomeColumn(parkBookList);
                }else{
                    throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,停车库信息不存在,授权失败");
                }
            }
            parkBookMapper.insertBatchSomeColumn(parkBookList);
        }else{
            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,停车库信息不存在,授权失败");
        }catch (BusinessException e){
            throw e;
        }finally {
            saveInterfaceLog(param,"/event/park/carAuthor",null,Constants.ZERO);
        }
    }
@@ -1142,8 +1175,8 @@
    }
    private void saveInterfaceLog(Object param, String path,String result,Integer type) {
    @Transactional(propagation = Propagation.NOT_SUPPORTED)
    public void saveInterfaceLog(Object param, String path, String result, Integer type) {
        InterfaceLog interfaceLog=new InterfaceLog();
        interfaceLog.setType(type);
        interfaceLog.setCreateDate(new Date());
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
@@ -30,6 +30,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * 海康停车库同步Service实现
@@ -138,8 +139,8 @@
        CarChargeAddRequest param = new CarChargeAddRequest();
        param.setPlateNo(c.getCarCode());
        param.setParkSyscode(c.getParkHkId());
        param.setStartTime(DateUtil.getShortTime(c.getStartTime()));
        param.setEndTime(DateUtil.getShortTime(c.getEndTime()));
        param.setStartTime(Objects.isNull(c.getStartTime())?DateUtil.getDate(new Date(),"yyyy-MM-dd"):DateUtil.getShortTimeToNull(c.getStartTime()));
        param.setEndTime(Objects.isNull(c.getEndTime())?"2999-12-31":DateUtil.getShortTimeToNull(c.getEndTime()));
        BaseResponse response = HKService.carChargeAddtion(param);
        if(response!=null
                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -379,6 +379,13 @@
        request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime()));
        request.setReceptionistId(c.getReceptMemberHkId());//被访人海康编码
        request.setVisitPurpose(c.getReason());
        if(StringUtils.isNotBlank(c.getReason())){
            char[] charArray = c.getReason().toCharArray();
            int length = charArray.length;
            if(length>32){
                request.setVisitPurpose(c.getReason().substring(32));
            }
        }
        //获取权限组集合
        request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c));
        List<VisitAppointmentVistorRequest> infolist = new ArrayList<>();
server/dmvisit_service/src/main/java/com/doumee/service/common/tree/CompanyTree.java
@@ -43,12 +43,12 @@
        for (Company treeNode : nodeList){
            // 判断当前节点是否为根节点,此处注意:若parentId类型是String,则要采用equals()方法判断。
            if(origin== DataSyncConfig.origin.hk){
                if (Objects.isNull(treeNode.getHkParentId())) {
                if (StringUtils.isBlank(treeNode.getHkParentId())) {
                    // 是,添加
                    rootNodeList.add(treeNode);
                }
            }else if(origin== DataSyncConfig.origin.erp){
                if (Objects.isNull(treeNode.getErpParentId())) {
                if (StringUtils.isBlank(treeNode.getErpParentId())) {
                    // 是,添加
                    rootNodeList.add(treeNode);
                }
server/dmvisit_service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java
@@ -179,6 +179,11 @@
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"入厂须知 字典不存在");
        }
        visitConfigDTO.setVisitNotice(visitNotice.getCode());
        SystemDictData doorsVisitRequired = systemDictList.stream().filter(m->m.getLabel().equals(Constants.SELECT_DOORS_VISIT_REQUIRED)).findFirst().get();
        if(Objects.isNull(doorsVisitRequired)){
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"自选门禁配置 字典不存在");
        }
        visitConfigDTO.setDoorsVisitRequired(Integer.valueOf(doorsVisitRequired.getCode()));
        return visitConfigDTO;
    }
@@ -243,6 +248,11 @@
        }
        visitNotice.setCode(visitConfigDTO.getVisitNotice());
        SystemDictData doorsVisitRequired = systemDictList.stream().filter(m->m.getLabel().equals(Constants.SELECT_DOORS_VISIT_REQUIRED)).findFirst().get();
        if(Objects.isNull(doorsVisitRequired)){
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"自选门禁配置 字典不存在");
        }
        doorsVisitRequired.setCode(visitConfigDTO.getDoorsVisitRequired().toString());
        systemDictDataMapper.updateById(reservationWay);
        systemDictDataMapper.updateById(checkVisit);
@@ -251,6 +261,7 @@
        systemDictDataMapper.updateById(theme);
        systemDictDataMapper.updateById(description);
        systemDictDataMapper.updateById(visitNotice);
        systemDictDataMapper.updateById(doorsVisitRequired);
    }
server/dmvisit_web/src/main/java/com/doumee/api/ScheduleTool.java
@@ -66,6 +66,7 @@
        String url = WXConstant.GET_ACCESS_TOKEN_URL.replace("APPID",appId).replace("APPSECRET",appSecret);
        String response = HttpsUtil.get(url,false);
        JSONObject json = JSONObject.parseObject(response);
        System.out.println(json);
        SystemDictData systemDictData =  systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN);
        if(!Objects.isNull(systemDictData)){
            systemDictData.setCode(json.getString("access_token"));
server/dmvisit_web/src/main/java/com/doumee/api/web/PublicController.java
@@ -95,6 +95,7 @@
    @RequestMapping(method= RequestMethod.POST,value="api/uploadFtp.do")
    @ResponseBody
    public void uploadFtp(HttpServletRequest request, HttpServletResponse response, String folderCode) throws Exception {
        System.out.println("上传中");
        String folder = systemDictDataBiz.queryByCode(Constants.FTP,folderCode).getCode();
        String prefixPath = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode();
        InputStream is = null;
server/dmvisit_web/src/main/java/com/doumee/api/web/VisitorController.java
@@ -1,5 +1,6 @@
package com.doumee.api.web;
import com.doumee.config.annotation.LoginRequired;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;