| | |
| | | </el-image> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:retention:delete']">标记离场</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | |
| | | |
| | | @ApiOperation("分页查询") |
| | | @PostMapping("/page") |
| | | //@RequiresPermissions("business:visitevent:query") |
| | | @RequiresPermissions("business:visitevent:query") |
| | | public ApiResponse<PageData<VisitEvent>> findPage (@RequestBody PageWrap<VisitEvent> pageWrap) { |
| | | return ApiResponse.success(visitEventService.findVisitPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("导出Excel") |
| | | @PostMapping("/exportExcel") |
| | | //@RequiresPermissions("business:visitevent:exportExcel") |
| | | @RequiresPermissions("business:visitevent:exportExcel") |
| | | public void exportExcel (@RequestBody PageWrap<VisitEvent> pageWrap, HttpServletResponse response) { |
| | | ExcelExporter.build(VisitEvent.class).export(visitEventService.findPageExcel(pageWrap), "访客出入事件_" + System.currentTimeMillis(), response); |
| | | } |
| | |
| | | try { |
| | | TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai"); |
| | | //TimeZone tz = TimeZone.getTimeZone("GMT-01"); |
| | | DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'+'z"); |
| | | DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'+'08:00"); |
| | | df.setTimeZone(tz); |
| | | String nowAsISO = df.format(date); |
| | | return nowAsISO; |
| | |
| | | @ExcelColumn(name="海康标识") |
| | | private String hkId; |
| | | |
| | | @ApiModelProperty(value = "海康同步状态 0未同步 1已同步 2同步失败 3不符合下发条件 ", example = "1") |
| | | @ExcelColumn(name="海康同步状态 0未同步 1已同步 2同步失败 3不符合下发条件") |
| | | @ApiModelProperty(value = "海康同步状态 0未同步 1已同步 2同步失败 3不符合下发条件 4等待删除权限 ", example = "1") |
| | | @ExcelColumn(name="海康同步状态 0未同步 1已同步 2同步失败 3不符合下发条件 4等待删除权限") |
| | | private Integer hkStatus; |
| | | |
| | | @ApiModelProperty(value = "海康最近同步时间") |
| | |
| | | VisitEvent::getEventType, |
| | | pageWrap.getModel().getEventType()) |
| | | .ge(StringUtils.isNotBlank(pageWrap.getModel().getStartTime()), |
| | | VisitEvent::getHappenTime, |
| | | VisitEvent::getCreateDate, |
| | | pageWrap.getModel().getStartTime()) |
| | | .le(StringUtils.isNotBlank(pageWrap.getModel().getEndTime()), |
| | | VisitEvent::getHappenTime, |
| | | VisitEvent::getCreateDate, |
| | | pageWrap.getModel().getEndTime()) |
| | | .eq(VisitEvent::getIsdeleted,Constants.ZERO); |
| | | queryWrapper.orderByDesc(VisitEvent::getHappenTime); |
| | |
| | | public class VisitsServiceImpl implements VisitsService { |
| | | |
| | | @Autowired |
| | | private RetentionMapper retentionMapper; |
| | | @Autowired |
| | | private VisitsMapper visitsMapper; |
| | | @Autowired |
| | | private ApproveMapper approveMapper; |
| | |
| | | BaseResponse response = HKService.outVisitAppiontment(request); |
| | | visitsMapper.update(null,new UpdateWrapper<Visits>().lambda().set(Visits::getStatus,Constants.VisitStatus.signout) |
| | | .eq(Visits::getId,visitId)); |
| | | //产出在场人员信息 |
| | | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() |
| | | .eq(Retention::getType,Constants.memberType.visitor) |
| | | .eq(Retention::getMemberId,visits.getMemberId())); |
| | | } |
| | | |
| | | } |
| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | @Autowired |
| | | private DeviceEventJoinMapper deviceEventJoinMapper; |
| | | |
| | | @Value("${debug_model}") |
| | | private Boolean isDebug; |
| | | @Autowired |
| | | private CarEventJoinMapper carEventJoinMapper; |
| | | |
| | |
| | | Date date = new Date(); |
| | | int num =0; |
| | | for(ErpUserListResponse response : list){ |
| | | if(isDebug){ |
| | | response.setPhone("1534569100"+num); |
| | | response.setFaceImg("20223402/DM1005.png"); |
| | | response.setIdNo("34112219880427200"+num); |
| | | } |
| | | num++; |
| | | Company company = new Company(); |
| | | if(StringUtils.isNotBlank(response.getOrgId())){ |
| | |
| | | @Override |
| | | public void userUpdate(UserUpdateRequest param){ |
| | | try{ |
| | | if(param.getIsdeleted() == 1){ |
| | | if( Objects.isNull(param.getId()) ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | memberMapper.update(null,new UpdateWrapper<Member>().lambda() |
| | | .eq(Member::getErpId,param.getId()) |
| | | .eq(Member::getIsdeleted,Constants.ZERO) |
| | | .set(Member::getIsdeleted,Constants.ONE) |
| | | .set(Member::getHkStatus,Constants.ZERO) |
| | | .set(Member::getEditDate,new Date()) |
| | | .set(Member::getRemark,"待同步安防平台") |
| | | ); |
| | | }else { |
| | | if(Objects.isNull(param) |
| | | ||Objects.isNull(param.getId())//编码 |
| | | ||StringUtils.isBlank(param.getName())//名称 |
| | |
| | | //添加人员卡片数据 |
| | | getRoleIdByParam(param.getRoleIds(),member); |
| | | dealMemberCard(member,param); |
| | | } |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }finally { |
| | |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.dao.business.DeviceMapper; |
| | | import com.doumee.dao.business.MemberCardMapper; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.join.EmpowerJoinMapper; |
| | | import com.doumee.dao.business.join.VisitsJoinMapper; |
| | | 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.business.model.Visits; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | |
| | | @Autowired |
| | | private EmpowerJoinMapper empowerMapper; |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | @Autowired |
| | | private DeviceMapper deviceMapper; |
| | | @Autowired |
| | | private MemberCardMapper memberCardMapper; |
| | | |
| | | /** |
| | | * 定时查询权限下发任务进度执行结果 |
| | |
| | | |
| | | } |
| | | } |
| | | checkDelMemberTask(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }finally { |
| | |
| | | } |
| | | |
| | | } |
| | | /** |
| | | * 对海康删除组织信息 |
| | | * @param id |
| | | * @param date |
| | | */ |
| | | private boolean doHkDeleteUser(Integer id,String delHkIds, Date date ) { |
| | | if(StringUtils.isBlank(delHkIds)){ |
| | | return true; |
| | | } |
| | | UserDelRequest request = new UserDelRequest(); |
| | | request.setPersonIds(new String[]{delHkIds}); |
| | | BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request); |
| | | if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ |
| | | List<String> fIds = new ArrayList<>(); |
| | | //标记删除成功的数据(海康对接状态为已同步,,同步失败的仍为待同步,等下一次继续处理,知道全部删除完毕) |
| | | if(result.getData()!=null && result.getData().size()>0){ |
| | | log.info("海康删除用户失败:==============="+result.getData().get(0).getPersonId()); |
| | | memberMapper.update(null,new UpdateWrapper<Member>().lambda() |
| | | .set(Member::getHkStatus,Constants.TWO)//同步失败 |
| | | .set(Member::getHkDate,date) |
| | | .in(Member::getId, id)); |
| | | }else{ |
| | | //标记删除成功的数据(海康对接状态为已同步,,同步失败的仍为待同步,等下一次继续处理,知道全部删除完毕) |
| | | memberMapper.update(null,new UpdateWrapper<Member>().lambda() |
| | | .set(Member::getHkStatus,Constants.ONE)//同步成功 |
| | | .set(Member::getHkDate,date) |
| | | .in(Member::getId, id)); |
| | | //删除所有绑定的卡片信息 |
| | | memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,id)); |
| | | } |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 检查删除人员的权限是否都删除完成,如果权限删除完成, 进行海康人员的删除操作 |
| | | */ |
| | | private void checkDelMemberTask() { |
| | | List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda() |
| | | .eq(Member::getIsdeleted,Constants.ONE) |
| | | .eq(Member::getHkStatus,Constants.FOUR)); |
| | | if(memberList!=null &&memberList.size()>0 ){ |
| | | Date date = new Date(); |
| | | for(Member member : memberList){ |
| | | if(empowerMapper.selectCount(new QueryWrapper<Empower>().lambda() |
| | | .eq(Empower::getMemberId,member.getId()) |
| | | .eq(Empower::getIsdeleted,Constants.ONE) |
| | | .ne(Empower::getSendStatus,Constants.EmpowerStatus.pass)) ==0){ |
| | | //如果权限都已经删除成功,则删除海康人员和卡片数据 |
| | | doHkDeleteUser(member.getId(),member.getHkId(),date); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void syncEmpowerDetailDataOld(){ |
| | | if(Constants.DEALING_HK_EMPOWER_DETAIL){ |
| | | return ; |
| | |
| | | * * 10:邀约中(员工发起邀约,访客还未应邀)、 |
| | | * * 11:邀约失效(员工发起邀约,一直到当前时间超过预计离开时间,访客还未应邀) |
| | | */ |
| | | if (model.getVisitorStatus()!=null && "3,4,11".contains( model.getVisitorStatus()+"" )){ |
| | | if (model.getVisitorStatus()!=null && ",3,4,11,".contains( "," +model.getVisitorStatus()+"," )){ |
| | | //对相应状态下的数据进行【已失效】处理 |
| | | Visits update = new Visits(); |
| | | //已失效 |
| | |
| | | update.setRemark("超时未登记"); |
| | | visitsMapper.updateById(update); |
| | | } |
| | | if (model.getVisitorStatus()!=null && "5,6".contains( model.getVisitorStatus()+"" )){ |
| | | if (model.getVisitorStatus()!=null && ",5,6,".contains( "," +model.getVisitorStatus()+"," )){ |
| | | // 对相应状态下的数据进行【已签离】处理 |
| | | if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signout)){ |
| | | Visits update = new Visits(); |
| | |
| | | .eq(Retention::getMemberId,c.getMemberId())); |
| | | } |
| | | } |
| | | if (model.getVisitorStatus()!=null&& "7,8".contains( model.getVisitorStatus()+"")){ |
| | | if (model.getVisitorStatus()!=null&& ",7,8,".contains( "," +model.getVisitorStatus()+"," )){ |
| | | //如果已登记 |
| | | if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signin)){ |
| | | Visits update = new Visits(); |
| | |
| | | MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.selectAll(Visits.class) |
| | | .selectAs(Member::getType,Visits::getMemberType) |
| | | .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId); |
| | | .leftJoin(Member.class,Member::getId,Visits::getMemberId); |
| | | queryWrapper.in(Visits::getStatus, Arrays.asList(new Integer[]{Constants.VisitStatus.xfSuccess,Constants.VisitStatus.signin}) ); |
| | | List<Visits> list = visitsMapper.selectJoinList(Visits.class,queryWrapper); |
| | | return list; |
| | |
| | | List<Member> list = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>() |
| | | .selectAll(Member.class ) |
| | | .selectAs(Company::getHkId,Member::getHkOrgId) |
| | | .isNotNull(Member::getFaceImg) |
| | | .isNotNull(Member::getFaceId) |
| | | .leftJoin(Company.class,Company::getId,Member::getCompanyId) |
| | | .eq(Member::getHkStatus,Constants.ZERO) |
| | | .eq(Member::getType,Constants.memberType.internal) |
| | |
| | | } |
| | | return false; |
| | | } |
| | | private void dealDelMemberRoleEmpower(Member member ) { |
| | | //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限) |
| | | empowerMapper.update(null,new UpdateWrapper<Empower>().lambda() |
| | | .eq(Empower::getMemberId,member.getId()) |
| | | .set(Empower::getIsdeleted,Constants.ONE) |
| | | .eq(Empower::getIsdeleted,Constants.ZERO) |
| | | .set(Empower::getSendStatus,Constants.ZERO)); |
| | | } |
| | | private void dealMemberRoleEmpower(Member member ) { |
| | | //处理新增的人员卡片数据(与海康同步) |
| | | List<MemberCard> cards = dealMemberHkCard(member); |
| | |
| | | deviceIds.add(deviceRole.getId()); |
| | | list.add(model); |
| | | } |
| | | |
| | | } |
| | | //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限) |
| | | empowerMapper.update(null,new UpdateWrapper<Empower>().lambda() |
| | |
| | | private void dealUserHkEditBiz(Member c, Date date, String path) { |
| | | c.setHkStatus(Constants.ONE); |
| | | if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){ |
| | | //处理删除数据(删除之前下发的海康人员信息) |
| | | boolean r = doHkDeleteUser(c.getId(),c.getHkId(),date); |
| | | //处理删除数据(删除之前下发的海康人员权限信息) |
| | | dealDelMemberRoleEmpower(c); |
| | | c.setHkStatus(Constants.FOUR ); |
| | | c.setRemark( "等待删除授权!"); |
| | | /*boolean r = doHkDeleteUser(c.getId(),c.getHkId(),date); |
| | | c.setHkStatus(r?Constants.ONE:Constants.TWO); |
| | | c.setRemark(r?null:"删除海康人员信息失败!"); |
| | | c.setIsdeleted(r? Constants.ONE: Constants.ZERO);//删除失败,恢复数据 |
| | | //删除所有绑定的卡片信息 |
| | | memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,c.getId())); |
| | | memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,c.getId()));*/ |
| | | }else{ |
| | | //处理修改数据,并且更新人脸 |
| | | UserAddRequest addHkModel = getUserAddModel(c,path,1);//修改 |