nidapeng
2024-03-26 87ec373c158f7fa4c65fb037822fe7142a6fd5e7
整理
已修改13个文件
128 ■■■■ 文件已修改
server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/InterfaceLogService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/InterfaceLogServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
@@ -68,21 +68,21 @@
        String result = hkSyncPrivilegeService.syncPrivilege(param);
        return ApiResponse.success(result);
    }
    @PreventRepeat
//    @PreventRepeat
    @ApiOperation("【海康】门禁事件订阅推送对接处理接口")
    @PostMapping("/push/acs")
    public ApiResponse pushAcs(  HttpServletRequest request,@RequestBody EventAcsRequest param, HttpServletResponse response) {
        String result = hkSyncPushService.dealAcsEvent(param,response);
        return ApiResponse.success(result);
    }
    @PreventRepeat
//    @PreventRepeat
    @ApiOperation("【海康】访客事件订阅推送对接处理接口")
    @PostMapping("/push/visit")
    public ApiResponse pushVisit(@RequestBody EventVisitRequest param, HttpServletResponse response) {
        String result = hkSyncPushService.dealVisitEvent(param,response);
        return ApiResponse.success(result);
    }
    @PreventRepeat
//    @PreventRepeat
    @ApiOperation("【海康】停车场事件订阅推送对接处理接口")
    @PostMapping("/push/parks")
    public ApiResponse pushParks(@RequestBody EventParkRequest param, HttpServletResponse response) {
server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
@@ -5,6 +5,7 @@
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.Constants;
import com.doumee.service.business.InterfaceLogService;
import com.doumee.service.business.MemberService;
import com.doumee.service.business.impl.hksync.HkSyncEmpowerServiceImpl;
import com.doumee.service.business.impl.hksync.HkSyncImgServiceImpl;
@@ -26,8 +27,8 @@
 * @date 2021-10-10 14:40:35
 * https://www.bejson.com/othertools/cron/  cron 表达式生成地址
 */
//@Component
//@EnableScheduling
@Component
@EnableScheduling
public class ScheduleTool {
    @Autowired
@@ -46,6 +47,8 @@
    private HkSyncVisitServiceImpl hkSyncVisitService;
    @Autowired
    private MemberService memberService;
    @Autowired
    private InterfaceLogService interfaceLogService;
    /**
     * 是否开发者
     */
@@ -143,7 +146,8 @@
    public void syncEmpowerResultData()  {
        hkSyncEmpowerService.syncEmpowerResultData();
    }
    *//**
    */
    /**
     * 定时查询人员实际下发权限结果,是否已经下载成功
     * @throws Exception
     *//*
@@ -160,7 +164,6 @@
        hkSyncParkService.syncParkBookData();
    }
    /**
     * 定时冻结内部人员
     */
@@ -168,5 +171,12 @@
    public void memberFreeze()  {
        memberService.memberFreeze();
    }
    /**
     * 每天清理超过一周的接口日志数据(清除和安防平台对接的接口数据)
     * @throws Exception
     */
    @Scheduled(cron= "0 0 23 * * ?")
    public void clearThreeMonthLog() throws Exception {
        interfaceLogService.clearThreeMonthLog();
    }
}
server/dmvisit_admin/src/main/resources/application.yml
@@ -10,7 +10,7 @@
  #  application:
  #    name: doumeemes
  profiles:
    active: testHS
    active: proHS
  # JSON返回配置
  jackson:
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -16,6 +16,7 @@
    private Logger logger = LoggerFactory.getLogger(HKConstants.class);
    //海康平台根据现场环境配置http还是https
    public static final String RESPONSE_SUCCEE = "0";
    public static final String RESPONSE_DOWNLOAD_ERROR= "0x15406001";
    public static String https ;
    /**
     * 能力开放平台的网站路径   路径不用修改,就是/artemis
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java
@@ -92,6 +92,8 @@
    @ApiModelProperty(value = "人员组织公司")
    @ExcelColumn(name="公司/部门",index = 9,width = 16)
    private String personCompanyName;
    @ApiModelProperty(value = "访客公司1")
    private String visitCompanyName;
    @ApiModelProperty(value = "姓名")
    @ExcelColumn(name="姓名",index = 7,width = 16)
server/dmvisit_service/src/main/java/com/doumee/service/business/InterfaceLogService.java
@@ -94,4 +94,6 @@
     * @return long
     */
    long count(InterfaceLog interfaceLog);
    void clearThreeMonthLog();
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java
@@ -305,7 +305,10 @@
                vo.setPlateNos(obj.getPlateNos());
                vo.setPersonName(obj.getPersonName());
                vo.setPersonPhone(obj.getPersonPhone());
                vo.setPersonCompanyName(obj.getPersonCompanyName());
                if(!Constants.equalsInteger(obj.getPersonType(),Constants.TWO)){
                    //如果不是内部人员,显示访客企业名称
                    vo.setPersonCompanyName(obj.getVisitCompanyName());
                }
                vo.setParkName(obj.getParkName());
                vo.setGateName(obj.getGateName());
                vo.setInoutType(obj.getInoutType());
@@ -330,6 +333,7 @@
                .selectAs(Member::getPhone,CarEventDTO::getPersonPhone)
                .selectAs(Member::getIdcardDecode,CarEventDTO::getPersonIdcardDecode)
                .selectAs(Member::getName,CarEventDTO::getPersonName)
                .selectAs(Member::getVisitCompanyName,CarEventDTO::getVisitCompanyName)
                .selectAs(Company::getName,CarEventDTO::getPersonCompanyName);
        queryWrapper
@@ -377,6 +381,10 @@
                        +dataMap.get(Constants.CAR_EVENT_IMG).getCode()
                        +obj.getPlatePicUrl());
            }
            if(!Constants.equalsInteger(obj.getPersonType(),Constants.TWO)){
                //如果不是内部人员,显示访客企业名称
                obj.setPersonCompanyName(obj.getVisitCompanyName());
            }
             obj.setEventTypeName(HKConstants.EventTypes.getName(obj.getEventType()) );
            newDataList.add(obj);
        });
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/InterfaceLogServiceImpl.java
@@ -155,4 +155,10 @@
        QueryWrapper<InterfaceLog> wrapper = new QueryWrapper<>(interfaceLog);
        return interfaceLogMapper.selectCount(wrapper);
    }
    @Override
    public void clearThreeMonthLog() {
          interfaceLogMapper.delete(new UpdateWrapper<InterfaceLog>().lambda()
                  .apply("to_days(create_date)+15 < to_days(now())")
                  .like(InterfaceLog::getUrl,"/artemis/api/"));
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -291,7 +291,7 @@
                 update.setId(m.getId());
                 update.setFaceId(faceId);
                 update.setRemark("人脸已同步最新");
                 update.setFaceStatus(Constants.ZERO);
                 update.setFaceStatus(Constants.ONE);
                 memberMapper.updateById(update);
             }
           }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -402,7 +402,7 @@
        member.setErpDate(date);
        member.setErpId(param.getId());
        member.setIdcardType(param.getIdType());
        member.setFsStatus(Constants.ZERO);
        member.setFaceStatus(Constants.ZERO);
        member.setStatus(param.getStatus());
        member.setType(Constants.memberType.internal);
        String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo());
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -81,7 +81,7 @@
                        BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);
                        if(response!=null
                                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) && response.getData()!=null
                        ) {
                        ){
                            if (response.getData().getList() != null
                                    && response.getData().getList().size() > 0) {
                                TaskPersonDetailResponse model = response.getData().getList().get(0);
@@ -108,6 +108,10 @@
                                            .set(Empower::getRemark, remark)
                                            .set(Empower::getSendInfo, remark)
                                            .set(Empower::getSendStatus, Constants.EmpowerStatus.pass));
                                    if(Constants.equalsInteger(c.getMemberDeleted(), Constants.ONE)&& Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){
                                        //如果是删除权限成功,检查是否删除人员
                                        checkDelMemberTask(c.getMemberId(),c.getMemberHkId());
                                    }
                                } else {
                                    empowerMapper.update(null, new UpdateWrapper<Empower>()
                                            .lambda()
@@ -119,14 +123,6 @@
                            } else {
                                //如果是已删除的数据,下发失败(防止设备离线),则尝试重新下发任务
                                if(Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){
//                               && Constants.formatIntegerNum(c.getTryNum())+1 < tryNum ){
                              /*      empowerMapper.update(null, new UpdateWrapper<Empower>()
                                            .lambda()
                                            .eq(Empower::getId, c.getId())
                                            .set(Empower::getRemark,  "下发失败,等待重新删除权限")
                                            .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1)
                                            .set(Empower::getSendInfo, "下发失败,等待重新删除权限")
                                            .set(Empower::getSendStatus, Constants.EmpowerStatus.wait));*/
                                    empowerMapper.update(null, new UpdateWrapper<Empower>()
                                            .lambda()
                                            .eq(Empower::getId, c.getId())
@@ -144,7 +140,15 @@
                                            .set(Empower::getSendStatus, Constants.EmpowerStatus.fail));
                                }
                            }
                            checkDelMemberTask(c.getMemberId());
                        }else if(response!=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_DOWNLOAD_ERROR)                        ){
                            empowerMapper.update(null, new UpdateWrapper<Empower>()
                                    .lambda()
                                    .eq(Empower::getId, c.getId())
                                    .set(Empower::getRemark, "下发失败")
//                                    .set(Empower::getFailFlag, Constants.ONE)//无需重发(下载任务不存在)
                                    .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1)
                                    .set(Empower::getSendInfo, "下发失败")
                                    .set(Empower::getSendStatus, Constants.EmpowerStatus.fail));
                        }
                    }
                }catch (Exception e){
@@ -186,7 +190,7 @@
                //标记删除成功的数据(海康对接状态为已同步,,同步失败的仍为待同步,等下一次继续处理,知道全部删除完毕)
                memberMapper.update(null,new UpdateWrapper<Member>().lambda()
                        .set(Member::getHkStatus,Constants.ONE)//同步成功
                        .set(Member::getRemark,"同步海康删除失败")//同步失败
                        .set(Member::getRemark,"已同步")//同步失败
                        .set(Member::getHkDate,date)
                        .in(Member::getId, id));
                //删除所有绑定的卡片信息
@@ -200,17 +204,18 @@
    /**
     * 检查删除人员的权限是否都删除完成,如果权限删除完成, 进行海康人员的删除操作
     */
    private void checkDelMemberTask(Integer memberId) {
    private void checkDelMemberTask(Integer memberId,String memberHkid) {
            Date date = new Date();
            Member member = memberMapper.selectById(memberId);
            if(member!=null && Constants.equalsInteger(member.getIsdeleted(),Constants.ONE) ){
//            Member member = memberMapper.selectById(memberId);
//            if(member!=null && Constants.equalsInteger(member.getIsdeleted(),Constants.ONE) ){
                if(empowerMapper.selectCount(new QueryWrapper<Empower>().lambda()
                        .eq(Empower::getMemberId,member.getId())
                        .eq(Empower::getMemberId,memberId)
                        .eq(Empower::getIsdeleted,Constants.ONE)
                        .ne(Empower::getFailFlag,Constants.ONE)
                        .ne(Empower::getSendStatus,Constants.EmpowerStatus.pass)) ==0){
                    //如果权限都已经删除成功,则删除海康人员和卡片数据
                     doHkDeleteUser(member.getId(),member.getHkId(),date);
            }
                     doHkDeleteUser(memberId,memberHkid,date);
//            }
        }
    }
@@ -336,9 +341,9 @@
//                        .gt(Empower::getId,empower.getId())
//                        .last("limit 1"));
                    if(empower.getTempCouunt() ==0){
                        //如果之后时间内又重新下发记录,则跳过不做处理
                        retryIds.add(empower.getId());
                    }else{
                        //如果之后时间内又重新下发记录,则跳过不做处理
                        noIds.add(empower.getId());
                    }
            }
@@ -355,6 +360,8 @@
            if(noIds.size()>0){
                empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                        .set(Empower::getEditDate,date)
                        .set(Empower::getRemark,"下发失败,已失效~")
                        .set(Empower::getSendInfo,"下发失败,已失效~")
                        .set(Empower::getFailFlag,Constants.ONE)
                        .in(Empower::getId,noIds));
            }
@@ -680,6 +687,7 @@
        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Empower.class);
        queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
        queryWrapper.selectAs(Member::getIsdeleted,Empower::getMemberDeleted);
        queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId);
        queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);
        queryWrapper.selectAs(Device::getResourceType,Empower::getDeviceType);
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -541,14 +541,25 @@
            event.setPlatePicUrl(getHkImgUrl(request.getData().getPicUrl().getPlatePicUrl()));
        }
        if(StringUtils.isNotBlank(event.getPlateNos())){
                ParkBook cars = parkBookMapper.selectOne(new QueryWrapper<ParkBook>().lambda()
                        .eq(ParkBook::getCarCode,event.getPlateNos())
                                .eq(ParkBook::getIsdeleted,Constants.ZERO )
            ParkBook cars = parkBookMapper.selectOne(new QueryWrapper<ParkBook>().lambda()
                    .eq(ParkBook::getCarCode,event.getPlateNos())
                            .eq(ParkBook::getIsdeleted,Constants.ZERO )
                    .last("limit 1" ));
            if(cars!=null){
                event.setMemberId(cars.getMemberId());
            }else{
                Visits visits =  visitsMapper.selectOne(new QueryWrapper<Visits>().lambda()
                        .eq(Visits::getCarNos,event.getPlateNos())
                        .eq(Visits::getIsdeleted,Constants.ZERO )
                        .in(Visits::getStatus,Constants.VisitStatus.signin,Constants.VisitStatus.signout)//最近一个已到达或者已签离
                        .isNull(Visits::getParentId)
                        .orderByDesc(Visits::getId)
                        .last("limit 1" ));
                if(cars!=null){
                    event.setMemberId(cars.getMemberId());
                if(visits!=null){
                    //最近使用该车的申请人(已到达)
                    event.setMemberId(visits.getMemberId());
                }
            }
            if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){
                //如果是入厂放行
                delRetentionList.add(event.getPlateNos());
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
@@ -587,7 +587,6 @@
                //删除所有绑定的卡片信息
                memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,c.getId()));
            }
        }else{
            //处理修改数据,并且更新人脸
            UserAddRequest  addHkModel = getUserAddModel(c,path,1);//修改
@@ -606,6 +605,7 @@
                        c.setFaceId(faceid);
                        c.setFaceStatus(Constants.ONE);
                        //如果人脸跟你,重新下发权限数据
                        c.setRemark("人员和人脸信息同步成功"+result.getMsg());
                         dealMemberRoleEmpower(c);
                    }
                }
@@ -642,6 +642,7 @@
            //如果人脸数据不正确,下载失败等原因
            noticeErpFail(c,Constants.ZERO,"人脸照片不存在,获取失败!");
            c.setHkStatus(Constants.TWO);
            c.setFaceStatus(Constants.TWO);
            c.setRemark("人脸照片不存在,获取失败!");
            c.setHkDate(new Date());
            memberMapper.updateById(c);
@@ -651,6 +652,11 @@
        BaseResponse<UserAddResponse> result =  HKService.addUser(addHkModel);
        if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
            c.setFaceId(result.getData().getFaceId());
            if(StringUtils.isNotBlank(c.getFaceId())){
                c.setFaceStatus(Constants.ONE);
            }else{
                c.setFaceStatus(Constants.ZERO);
            }
            c.setHkStatus(Constants.ONE);
            c.setHkId(addHkModel.getPersonId());
            c.setHkDate(new Date());