package com.doumee.service.business.impl; import cn.hutool.core.util.IdcardUtil; 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.HKTools; import com.doumee.core.haikang.model.param.BaseResponse; import com.doumee.core.haikang.model.param.request.VisitAppointmentCancelRequest; import com.doumee.core.haikang.model.param.request.VisitAppointmentRequest; import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse; 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.DESUtil; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.DeviceRoleMapper; import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.ProblemLogMapper; import com.doumee.dao.business.VisitsMapper; import com.doumee.dao.business.model.DeviceRole; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.model.ProblemLog; import com.doumee.dao.business.model.Visits; import com.doumee.service.business.VisitsService; 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 org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.DigestUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; /** * 访客申请信息表Service实现 * @author 江蹄蹄 * @date 2023/11/30 15:33 */ @Service public class VisitsServiceImpl implements VisitsService { @Autowired private VisitsMapper visitsMapper; @Autowired private DeviceRoleMapper deviceRoleMapper; @Autowired private ProblemLogMapper problemLogMapper ; @Autowired private MemberMapper memberMapper ; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override public Integer create(Visits visits) { visitsMapper.insert(visits); return visits.getId(); } /** * 普通访客申请 * @param visits * @return */ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public Integer createFk(Visits visits) { isValidBaseParam(visits); //检查是否必须答题,并且符合答题要求 ProblemLog problemLog = isValidProblemLog(visits); //获取申请的海康访问门禁组信息 String[] hkIds = getHkDeviceRoles(visits); //检验拜访人是否合法 isValideVisitedUser(visits.getReceptMemberId()); if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType()) &&!IdcardUtil.isValidCard(visits.getIdcardNo())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,身份证号码有误,请核实后重试!"); } Date date = new Date(); //访客信息(使用身份证号查询是否已存在改普通访客,没有则新增,存在则更新openid等信息),包括随访人员校验和处理 Member member =dealMemberAndVisits(visits); //初始化访客信息 initVisitInfo(visits,date); //发起ERP审批申请 String erpid = startSendErpCheck(visits); if(StringUtils.isNotBlank(erpid)){ visits.setErpId(erpid); }else{ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,发起拜访审批申请失败!"); } visitsMapper.insert(visits); initWithVisitInfo(visits); updateProblemLog(visits,problemLog,member); return visits.getId(); } /** * 校验必填项数据是否合法 * @param visits */ private void isValidBaseParam(Visits visits) { if(visits.getStarttime() == null || visits.getEndtime() == null || StringUtils.isBlank(visits.getReason()) || StringUtils.isBlank( visits.getName()) || StringUtils.isBlank( visits.getPhone()) || visits.getIdcardType() == null || StringUtils.isBlank( visits.getFaceImg() ) || StringUtils.isBlank( visits.getIdcardNo() ) || visits.getReceptMemberId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,信息填写不正确!"); } if(visits.getStarttime().getTime() < System.currentTimeMillis()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,预约开始时间必须大于当前时间!");// } if(visits.getEndtime().getTime() <= visits.getStarttime().getTime()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,预约结束时间必须大于开始时间!");// } } private void isValidWithVisitParam(Visits visits, List addList, List updateList) { if( StringUtils.isBlank( visits.getName()) || StringUtils.isBlank( visits.getPhone()) || visits.getIdcardType() == null || StringUtils.isBlank( visits.getFaceImg() ) || StringUtils.isBlank( visits.getIdcardNo() ) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,信息填写不正确!"); } if(visits.getStarttime().getTime() < System.currentTimeMillis()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,预约开始时间必须大于当前时间!");// } if(visits.getEndtime().getTime() <= visits.getStarttime().getTime()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,预约结束时间必须大于开始时间!");// } if(isRepeatedMember(visits,addList,updateList)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,手机号或身份证号出现重复数据,请修改后重新提交!");// } } private boolean isRepeatedMember(Visits visits, List addList, List updateList) { if(addList.size()>0){ for(Member m :addList){ if(StringUtils.equals(visits.getPhone(), m.getPhone()) || StringUtils.equals(visits.getIdcardNo(), m.getIdcardDecode())){ return true; } } } if(updateList.size()>0){ for(Member m :updateList){ if(StringUtils.equals(visits.getPhone(), m.getPhone()) || StringUtils.equals(visits.getIdcardNo(), m.getIdcardDecode())){ return true; } } } return false; } private void initWithVisitInfo(Visits visits) { if(visits.getWithUserList()!=null && visits.getLwWithUserList().size()>0){ for(Visits v :visits.getWithUserList()){ v.setParentId(visits.getId()); v.setStarttime(visits.getStarttime()); v.setEndtime(visits.getEndtime()); v.setIsdeleted(Constants.ZERO); v.setCreateDate(visits.getCreateDate()); v.setErpId(visits.getErpId()); v.setHkStatus(Constants.ZERO); v.setStatus(Constants.ZERO); } //批量插入数据 visitsMapper.insertBatchSomeColumn(visits.getWithUserList()); } } private void initVisitInfo(Visits visits,Date date) { visits.setHkStatus(Constants.ZERO);//未同步 visits.setBirthday(Constants.getBirthdyByCardNo(visits.getIdcardNo())); visits.setStatus(Constants.ZERO);//待审批 visits.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, visits.getIdcardNo()));//身份证号加密 //身份证号存储密文 visits.setIdcardDecode(Constants.getTuominStr(visits.getIdcardNo()));//脱敏手机号 visits.setCreateDate(date); } private String startSendErpCheck(Visits visits) { return null; } private String visitAppiontment(Visits visits) { VisitAppointmentRequest param = new VisitAppointmentRequest(); param.setVisitStartTime(DateUtil.getISO8601Timestamp(visits.getStarttime())); param.setVisitEndTime(DateUtil.getISO8601Timestamp(visits.getStarttime())); BaseResponse res = HKService.visitAppiontment(param); if(res==null || !StringUtils.equals(res.getCode(), HKConstants.RESPONSE_SUCCEE) || res.getData()==null){ //如果发起预约失败 visits.setStatus(Constants.VisitStatus.xfFail); }else{ visits.setStatus(Constants.VisitStatus.xfSuccess); visits.setHkStatus(Constants.ONE); visits.setHkId(res.getData().getAppointRecordId()); } visits.setHkDate(visits.getCheckDate()); return res.getData().getAppointRecordId(); } /** * 访客信息(使用身份证号查询是否已存在改普通访客,没有则新增,存在则更新openid等信息),包括随访人员校验和处理 * @param visits * @return */ private Member dealMemberAndVisits(Visits visits ) { if(StringUtils.isNotBlank(visits.getOpenid())){ //先清空原有访客的openid绑定关系 memberMapper.update(null, new UpdateWrapper().lambda() .eq(Member::getType,Constants.memberType.visitor) .eq(Member::getOpenid,visits.getOpenid()) .set(Member::getOpenid,null) ); } List addList = new ArrayList<>(); List editList = new ArrayList<>(); //申请人信息 Member m = getMemberListParam(visits.getIdcardNo(),visits,addList,editList); //随访人员信息处理 if(visits.getWithUserList()!= null && visits.getWithUserList().size()>0){ for(Visits model:visits.getWithUserList()){ //校验随访人员填报数据合法性 isValidWithVisitParam(model,addList,editList); model.setCreateDate(visits.getCreateDate()); getMemberListParam(model.getIdcardNo(),visits,addList,editList); } } return m; } private Member getMemberListParam(String cardno, Visits visits, List addList, List editList) { if(!Constants.checkCarNo(visits.getCarNos())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,车牌号【"+visits.getCarNos()+"】不合法,请核实后重试~"); } Member member = memberMapper.selectOne(new QueryWrapper().lambda() .eq(Member::getType,Constants.memberType.visitor) .eq(Member::getIdcardType,visits.getIdcardType()) .eq(Member::getIdcardNo,visits.getIdcardNo()).last("limit 1" ) ); if(member == null){ //如果用户不存在,则新增 member.setCreateDate(visits.getCreateDate()); member.setIsdeleted(Constants.ZERO); member.setIdcardNo(visits.getIdcardNo()); member.setIdcardDecode(visits.getIdcardDecode()); member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, cardno));//身份证号加密 member.setIdcardDecode(Constants.getTuominStr(cardno));//脱敏手机号 member.setName(visits.getName()); member.setPhone(visits.getPhone()); member.setOpenid(visits.getOpenid()); member.setType(Constants.memberType.visitor); member.setStatus(Constants.ZERO); member.setSex(visits.getSex()); // 新增访客记录 addList.add(member); }else{ if(!Constants.equalsInteger(Constants.ZERO,member.getStatus() )){ //如果用户状态异常,则提示 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,该身份证号被禁止访问申请,如有疑问,请联系您的拜访人进行核实"); } //核查预约用户是否存在未签离的预约记录 isExsitNoOutVisisRecord(member); member.setEditDate(visits.getCreateDate()); member.setIsdeleted(Constants.ZERO); member.setIdcardNo(visits.getIdcardNo()); member.setIdcardDecode(visits.getIdcardDecode()); member.setName(visits.getName()); member.setPhone(visits.getPhone()); member.setOpenid(visits.getOpenid()); member.setSex(visits.getSex()); // 更新访客信息, editList.add(member); } return member; } /** * 核查预约用户是否存在未签离的预约记录 * @param member */ private void isExsitNoOutVisisRecord(Member member) { Visits v = visitsMapper.selectOne(new QueryWrapper().lambda() .eq(Visits::getPhone, member.getPhone()) .eq(Visits::getStatus,Constants.VisitStatus.xfSuccess) .last(" limit 1" ) ); if(v !=null){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,手机号【"+member.getPhone()+"】存在未签离预约申请,不能重复申请哦!"); } } private List isValideWithUsers(List withUserList) { if(withUserList!= null && withUserList .size()>0){ for(Visits model:withUserList){ } } return null; } /** * 如果有答题记录,更新答题记录关联数据 * @param visits * @param problemLog * @param member */ private void updateProblemLog(Visits visits, ProblemLog problemLog,Member member) { if(problemLog!=null){ problemLog.setEditDate(visits.getCreateDate()); problemLog.setName(visits.getName()); problemLog.setUserId(member.getId()); problemLog.setPhone(member.getPhone()); problemLog.setLogId(visits.getId()); problemLogMapper.updateById(problemLog); } } /** * 检查访人是否合法 * @param receptMemberId */ private Member isValideVisitedUser(Integer receptMemberId) { Member member = memberMapper.selectById(receptMemberId); if(member == null || Constants.equalsInteger(Constants.ZERO,member.getIsdeleted())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,该拜访人暂时不能接受您的拜访申请!"); } if(!Constants.equalsInteger(member.getStatus(), Constants.ZERO)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,该拜访人暂时不能接受您的拜访申请."); } if(!Constants.equalsInteger(Constants.ONE, member.getCanVisit())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,该拜访人暂时不能接受您的拜访申请~"); } return member; } private ProblemLog isValidProblemLog(Visits visits) { String required = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROBLEM_VISIT_REQUIRED).getCode(); if(StringUtils.equals(required,Constants.ONE+"")){ //如果必须答题,查找答题记录 if(visits.getUserAnswerId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请先按要求进行安全知识答题!"); } ProblemLog log = problemLogMapper.selectById(visits.getUserAnswerId()); if(log == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请先按要求进行安全知识答题."); } if(log.getLogId() !=null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请先按要求进行安全知识答题~"); } return log; } return null; } /** * 获取申请的海康访问门禁组信息 * @param visits * @return */ private String[] getHkDeviceRoles(Visits visits) { String mustSelectDoors = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SELECT_DOORS_VISIT_REQUIRED).getCode(); List roles = null; if(StringUtils.equals(mustSelectDoors,Constants.ZERO+"")){ //如果必须选择门禁,但未选择 if(StringUtils.isBlank(visits.getDoors())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请选择访问门禁!"); } //校验门禁组信息是否正确 String[] dIds = visits.getDoors().split(","); roles = deviceRoleMapper.selectList(new QueryWrapper().lambda() .eq(DeviceRole::getIsdeleted,Constants.ZERO) .eq(DeviceRole::getType,Constants.DeviceRoleType.fk) .in(DeviceRole::getId, Arrays.asList(dIds))); if(roles == null || roles.size()==0 || roles.size() != dIds.length){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请选择有效访问门禁!"); } }else{ //如果设置不选择门禁,则提供默认门禁组信息 String[] dIds = visits.getDoors().split(","); roles = deviceRoleMapper.selectList(new QueryWrapper().lambda() .eq(DeviceRole::getIsdeleted,Constants.ZERO) .eq(DeviceRole::getIsDefault,Constants.ZERO) .eq(DeviceRole::getType,Constants.DeviceRoleType.fk)); if(roles.size() ==0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,暂不存在可访问的访客门禁,无法进行申请操作!"); } } String[] ids =new String[roles.size()]; for (int i = 0; i < roles.size(); i++) { ids[i] = roles.get(i).getHkId(); } return ids; } @Override public void deleteById(Integer id) { visitsMapper.deleteById(id); } @Override public void delete(Visits visits) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(visits); visitsMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } visitsMapper.deleteBatchIds(ids); } @Override public void updateById(Visits visits) { visitsMapper.updateById(visits); } @Override public void updateByIdInBatch(List visitss) { if (CollectionUtils.isEmpty(visitss)) { return; } for (Visits visits: visitss) { this.updateById(visits); } } @Override public Visits findById(Integer id) { return visitsMapper.selectById(id); } @Override public Visits findOne(Visits visits) { QueryWrapper wrapper = new QueryWrapper<>(visits); return visitsMapper.selectOne(wrapper); } @Override public List findList(Visits visits) { QueryWrapper wrapper = new QueryWrapper<>(visits); return visitsMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().eq(Visits::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.lambda().eq(Visits::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.lambda().ge(Visits::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(Visits::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.lambda().eq(Visits::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.lambda().ge(Visits::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(Visits::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { queryWrapper.lambda().eq(Visits::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.lambda().eq(Visits::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getMemberId() != null) { queryWrapper.lambda().eq(Visits::getMemberId, pageWrap.getModel().getMemberId()); } if (pageWrap.getModel().getCompanyId() != null) { queryWrapper.lambda().eq(Visits::getCompanyId, pageWrap.getModel().getCompanyId()); } if (pageWrap.getModel().getFaceImg() != null) { queryWrapper.lambda().eq(Visits::getFaceImg, pageWrap.getModel().getFaceImg()); } if (pageWrap.getModel().getImgurl() != null) { queryWrapper.lambda().eq(Visits::getImgurl, pageWrap.getModel().getImgurl()); } if (pageWrap.getModel().getType() != null) { queryWrapper.lambda().eq(Visits::getType, pageWrap.getModel().getType()); } if (pageWrap.getModel().getName() != null) { queryWrapper.lambda().eq(Visits::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getBirthday() != null) { queryWrapper.lambda().ge(Visits::getBirthday, Utils.Date.getStart(pageWrap.getModel().getBirthday())); queryWrapper.lambda().le(Visits::getBirthday, Utils.Date.getEnd(pageWrap.getModel().getBirthday())); } if (pageWrap.getModel().getPhone() != null) { queryWrapper.lambda().eq(Visits::getPhone, pageWrap.getModel().getPhone()); } if (pageWrap.getModel().getCompanyName() != null) { queryWrapper.lambda().eq(Visits::getCompanyName, pageWrap.getModel().getCompanyName()); } if (pageWrap.getModel().getIdcardNo() != null) { queryWrapper.lambda().eq(Visits::getIdcardNo, pageWrap.getModel().getIdcardNo()); } if (pageWrap.getModel().getCode() != null) { queryWrapper.lambda().eq(Visits::getCode, pageWrap.getModel().getCode()); } if (pageWrap.getModel().getClasses() != null) { queryWrapper.lambda().eq(Visits::getClasses, pageWrap.getModel().getClasses()); } if (pageWrap.getModel().getMemberNum() != null) { queryWrapper.lambda().eq(Visits::getMemberNum, pageWrap.getModel().getMemberNum()); } if (pageWrap.getModel().getStarttime() != null) { queryWrapper.lambda().ge(Visits::getStarttime, Utils.Date.getStart(pageWrap.getModel().getStarttime())); queryWrapper.lambda().le(Visits::getStarttime, Utils.Date.getEnd(pageWrap.getModel().getStarttime())); } if (pageWrap.getModel().getEndtime() != null) { queryWrapper.lambda().ge(Visits::getEndtime, Utils.Date.getStart(pageWrap.getModel().getEndtime())); queryWrapper.lambda().le(Visits::getEndtime, Utils.Date.getEnd(pageWrap.getModel().getEndtime())); } if (pageWrap.getModel().getReason() != null) { queryWrapper.lambda().eq(Visits::getReason, pageWrap.getModel().getReason()); } if (pageWrap.getModel().getDoorSelect() != null) { queryWrapper.lambda().eq(Visits::getDoorSelect, pageWrap.getModel().getDoorSelect()); } if (pageWrap.getModel().getDoors() != null) { queryWrapper.lambda().eq(Visits::getDoors, pageWrap.getModel().getDoors()); } if (pageWrap.getModel().getReceptMemberId() != null) { queryWrapper.lambda().eq(Visits::getReceptMemberId, pageWrap.getModel().getReceptMemberId()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.lambda().eq(Visits::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getCheckorId() != null) { queryWrapper.lambda().eq(Visits::getCheckorId, pageWrap.getModel().getCheckorId()); } if (pageWrap.getModel().getCheckDate() != null) { queryWrapper.lambda().ge(Visits::getCheckDate, Utils.Date.getStart(pageWrap.getModel().getCheckDate())); queryWrapper.lambda().le(Visits::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate())); } if (pageWrap.getModel().getCheckInfo() != null) { queryWrapper.lambda().eq(Visits::getCheckInfo, pageWrap.getModel().getCheckInfo()); } if (pageWrap.getModel().getEndCheckorId() != null) { queryWrapper.lambda().eq(Visits::getEndCheckorId, pageWrap.getModel().getEndCheckorId()); } if (pageWrap.getModel().getEndCheckDate() != null) { queryWrapper.lambda().ge(Visits::getEndCheckDate, Utils.Date.getStart(pageWrap.getModel().getEndCheckDate())); queryWrapper.lambda().le(Visits::getEndCheckDate, Utils.Date.getEnd(pageWrap.getModel().getEndCheckDate())); } if (pageWrap.getModel().getEndCheckInfo() != null) { queryWrapper.lambda().eq(Visits::getEndCheckInfo, pageWrap.getModel().getEndCheckInfo()); } if (pageWrap.getModel().getIdcardType() != null) { queryWrapper.lambda().eq(Visits::getIdcardType, pageWrap.getModel().getIdcardType()); } if (pageWrap.getModel().getCarNos() != null) { queryWrapper.lambda().eq(Visits::getCarNos, pageWrap.getModel().getCarNos()); } if (pageWrap.getModel().getParentId() != null) { queryWrapper.lambda().eq(Visits::getParentId, pageWrap.getModel().getParentId()); } if (pageWrap.getModel().getUserAnswerId() != null) { queryWrapper.lambda().eq(Visits::getUserAnswerId, pageWrap.getModel().getUserAnswerId()); } if (pageWrap.getModel().getHkId() != null) { queryWrapper.lambda().eq(Visits::getHkId, pageWrap.getModel().getHkId()); } if (pageWrap.getModel().getHkStatus() != null) { queryWrapper.lambda().eq(Visits::getHkStatus, pageWrap.getModel().getHkStatus()); } if (pageWrap.getModel().getHkDate() != null) { queryWrapper.lambda().ge(Visits::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate())); queryWrapper.lambda().le(Visits::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate())); } if (pageWrap.getModel().getErpId() != null) { queryWrapper.lambda().eq(Visits::getErpId, pageWrap.getModel().getErpId()); } for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } return PageData.from(visitsMapper.selectPage(page, queryWrapper)); } @Override public long count(Visits visits) { QueryWrapper wrapper = new QueryWrapper<>(visits); return visitsMapper.selectCount(wrapper); } }