You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.7 KiB
112 lines
4.7 KiB
package com.community.pocket.repository.android;
|
|
|
|
import com.community.pocket.entity.po.Visitor;
|
|
import com.community.pocket.entity.vo.Page;
|
|
import com.community.pocket.entity.vo.android.VisitorForm;
|
|
import com.community.pocket.entity.vo.web.VisitorQuery;
|
|
import com.community.pocket.entity.vo.web.VisitorStatus;
|
|
import com.community.pocket.repository.BaseDao;
|
|
import com.community.pocket.util.LookupOperationUtil;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.data.domain.Sort;
|
|
import org.springframework.data.mongodb.core.query.Criteria;
|
|
import org.springframework.data.mongodb.core.query.Query;
|
|
import org.springframework.data.mongodb.core.query.Update;
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.List;
|
|
import java.util.regex.Pattern;
|
|
|
|
//访客数据接口
|
|
@Repository
|
|
public class VisitorDao extends BaseDao<Visitor> {
|
|
|
|
private static final Logger LOG = LoggerFactory.getLogger(VisitorDao.class);
|
|
|
|
@Value("${visitor.dateformat}")
|
|
private String dateformat;
|
|
|
|
//保存访客信息
|
|
public Visitor save(VisitorForm visitorForm) {
|
|
Visitor visitor = new Visitor();
|
|
visitor.setAppointment(visitorForm.getAppointment());
|
|
visitor.setUsername(visitorForm.getUsername());
|
|
visitor.setChooseDate(visitorForm.getChooseDate());
|
|
visitor.setChooseTime(visitorForm.getChooseTime());
|
|
visitor.setNotes(visitorForm.getNotes());
|
|
try {
|
|
visitor.setTime(new SimpleDateFormat(dateformat).parse(visitor.getChooseDate() + " " + visitor.getChooseTime()).getTime());
|
|
visitor.setStatus(VisitorStatus.uncheck);
|
|
return save(visitor);
|
|
} catch (ParseException e) {
|
|
e.printStackTrace();
|
|
LOG.error(e.toString());
|
|
}
|
|
return null;
|
|
}
|
|
|
|
//加载所有访客信息
|
|
public Page<Visitor> loadAllVisitor(VisitorQuery visitorQuery) {
|
|
Criteria criteria = Criteria.where("appointment").regex(Pattern.compile(".*") + visitorQuery.getAppointment() + ".*");
|
|
Query query = new Query(criteria);
|
|
long count = mongoTemplate.count(query, entityClass());
|
|
Page<Visitor> page = new Page<>(count, visitorQuery.getCurrentPage(), pageSize);
|
|
List<Visitor> visitorList = mongoTemplate.find(query.with(PageRequest.of(visitorQuery.getCurrentPage().intValue() - 1, pageSize)), entityClass());
|
|
page.setList(visitorList);
|
|
return page;
|
|
}
|
|
|
|
//访客预约放行
|
|
public boolean updateVisitor(com.community.pocket.entity.vo.web.VisitorForm visitorForm) {
|
|
return mongoTemplate.updateFirst(new Query(Criteria.where(LookupOperationUtil.idKey).is(visitorForm.getId())), Update.update("status", visitorForm.getStatus()).set("managerName", visitorForm.getManagerName()), entityClass()).wasAcknowledged();
|
|
}
|
|
|
|
//用户加载访客信息
|
|
private List<Visitor> load(com.community.pocket.entity.vo.android.VisitorQuery visitorQuery, Criteria criteria) {
|
|
if (visitorQuery.getStartDate() != null && visitorQuery.getEndDate() != null) {
|
|
criteria = criteria.andOperator(Criteria.where("time").gte(visitorQuery.getStartDate().getTime()), Criteria.where("time").lte(visitorQuery.getEndDate().getTime()));
|
|
} else {
|
|
if (visitorQuery.getStartDate() != null) {
|
|
criteria = criteria.and("time").gte(visitorQuery.getStartDate().getTime());
|
|
}
|
|
if (visitorQuery.getEndDate() != null) {
|
|
criteria = criteria.and("time").lte(visitorQuery.getEndDate().getTime());
|
|
}
|
|
}
|
|
return mongoTemplate.find(new Query(criteria).with(Sort.by("time").ascending()), entityClass());
|
|
}
|
|
|
|
//加载我的访客信息
|
|
public List<Visitor> loadMyVisitor(com.community.pocket.entity.vo.android.VisitorQuery visitorQuery) {
|
|
Criteria criteria = Criteria.where("appointment").is(visitorQuery.getUsername());
|
|
return load(visitorQuery, criteria);
|
|
}
|
|
|
|
|
|
//加载我的预约
|
|
public List<Visitor> loadMyReservation(com.community.pocket.entity.vo.android.VisitorQuery visitorQuery) {
|
|
Criteria criteria = Criteria.where("username").is(visitorQuery.getUsername());
|
|
return load(visitorQuery, criteria);
|
|
}
|
|
|
|
@Override
|
|
public Visitor save(Visitor visitor) {
|
|
try {
|
|
return mongoTemplate.save(visitor);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
LOG.error(e.toString());
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Class<Visitor> entityClass() {
|
|
return Visitor.class;
|
|
}
|
|
}
|
|
|