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.

108 lines
4.4 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 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;
//访客数据接口
@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) {
long count = mongoTemplate.count(new Query(), entityClass());
Page<Visitor> page = new Page<>(count, visitorQuery.getCurrentPage(), pageSize);
List<Visitor> visitorList = mongoTemplate.find(new 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("_id").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;
}
}