提交 8e2e2c07 编写于 作者: O o2sword

内容管理员增加文档是否已阅和已阅记录分页查询接口

上级 c77e832a
package com.x.cms.assemble.control.jaxrs.document;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WrapBoolean;
import com.x.cms.core.entity.DocumentViewRecord;
/**
* @author sword
*/
public class ActionQueryHasViewDocument extends BaseAction {
protected ActionResult<Wo> execute(EffectivePerson effectivePerson, String docId) throws Exception {
ActionResult<Wo> result = new ActionResult<>();
Wo wo = new Wo();
wo.setValue(false);
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Long count = emc.countEqualAndEqual(DocumentViewRecord.class, DocumentViewRecord.documentId_FIELDNAME, docId,
DocumentViewRecord.viewerName_FIELDNAME, effectivePerson.getDistinguishedName());
if(count!=null && count>0){
wo.setValue(true);
}
}
result.setData( wo );
return result;
}
public static class Wo extends WrapBoolean {
}
}
package com.x.cms.assemble.control.jaxrs.document;
import com.google.gson.JsonElement;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.cms.assemble.control.Business;
import com.x.cms.core.entity.DocumentViewRecord;
import com.x.cms.core.entity.DocumentViewRecord_;
import org.apache.commons.lang3.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Tuple;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.List;
class ActionQueryListViewRecordPaging extends BaseAction {
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, Integer page, Integer size, JsonElement jsonElement)
throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
ActionResult<List<Wo>> result = new ActionResult<>();
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
Predicate p = this.toFilterPredicate(effectivePerson, business, wi);
List<Wo> wos = wos = emc.fetchDescPaging(DocumentViewRecord.class, Wo.copier, p, page, size, DocumentViewRecord.createTime_FIELDNAME);
result.setData(wos);
result.setCount(emc.count(DocumentViewRecord.class, p));
return result;
}
}
private Predicate toFilterPredicate(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(DocumentViewRecord.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
Root<DocumentViewRecord> root = cq.from(DocumentViewRecord.class);
Predicate p = cb.conjunction();
if(StringUtils.isNotEmpty(wi.getDocId())){
p = cb.and(p, cb.equal(root.get(DocumentViewRecord_.documentId), wi.getDocId()));
}
String person = wi.getViewerName();
if(StringUtils.isNotEmpty(person)){
person = business.organization().person().get(person);
if(StringUtils.isBlank(person)){
person = wi.getViewerName();
}
p = cb.and(p, cb.equal(root.get(DocumentViewRecord_.viewerName), person));
}
return p;
}
public class Wi extends GsonPropertyObject {
@FieldDescribe("信息文档ID")
private String docId;
@FieldDescribe("阅读人")
private String viewerName;
public String getDocId() {
return docId;
}
public void setDocId(String docId) {
this.docId = docId;
}
public String getViewerName() {
return viewerName;
}
public void setViewerName(String viewerName) {
this.viewerName = viewerName;
}
}
public static class Wo extends DocumentViewRecord {
private static final long serialVersionUID = 236759724445785414L;
static WrapCopier<DocumentViewRecord, Wo> copier = WrapCopierFactory.wo(DocumentViewRecord.class, Wo.class,
JpaObject.singularAttributeField(DocumentViewRecord.class, true, true), null);
}
}
......@@ -109,4 +109,42 @@ public class DocumentViewRecordAction extends StandardJaxrsAction{
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "根据文档ID查询当前用户是否有阅读记录.", action = ActionQueryHasViewDocument.class)
@GET
@Path("document/{docId}/has/view")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void hasViewDocument( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
@JaxrsParameterDescribe("信息文档ID") @PathParam("docId") String docId) {
EffectivePerson effectivePerson = this.effectivePerson( request );
ActionResult<ActionQueryHasViewDocument.Wo> result = null;
try {
result = new ActionQueryHasViewDocument().execute(effectivePerson, docId);
} catch (Exception e) {
result = new ActionResult<>();
result.error( e );
logger.error( e, effectivePerson, request, null);
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "分页查询阅读记录.", action = ActionQueryListViewRecordPaging.class)
@POST
@Path("list/install/log/paging/{page}/size/{size}")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void listPaging(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
@JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
@JaxrsParameterDescribe("每页数量") @PathParam("size") Integer size, JsonElement jsonElement) {
ActionResult<List<ActionQueryListViewRecordPaging.Wo>> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionQueryListViewRecordPaging().execute(effectivePerson, page, size, jsonElement);
} catch (Exception e) {
logger.error(e, effectivePerson, request, jsonElement);
result.error(e);
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result, jsonElement));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册