提交 43353ae4 编写于 作者: O o2sword

流程平台管理员分页查询接口修改,解决数据量大慢的问题

上级 2e7e7e31
......@@ -34,15 +34,10 @@ class ActionManageListFilterPaging extends BaseAction {
ActionResult<List<Wo>> result = new ActionResult<>();
if (business.canManageApplication(effectivePerson, null)) {
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
if (wi == null) {
wi = new Wi();
}
Integer adjustPage = this.adjustPage(page);
Integer adjustPageSize = this.adjustSize(size);
List<Read> os = this.list(effectivePerson, business, adjustPage, adjustPageSize, wi);
List<Wo> wos = Wo.copier.copy(os);
Predicate p = this.toFilterPredicate(effectivePerson, business, wi);
List<Wo> wos = emc.fetchDescPaging(Read.class, Wo.copier, p, page, size, Read.startTime_FIELDNAME);
result.setData(wos);
result.setCount(this.count(effectivePerson, business, wi));
result.setCount(emc.count(Read.class, p));
}else{
result.setData(new ArrayList<Wo>());
result.setCount(0L);
......@@ -51,8 +46,7 @@ class ActionManageListFilterPaging extends BaseAction {
}
}
private List<Read> list(EffectivePerson effectivePerson, Business business, Integer adjustPage,
Integer adjustPageSize, Wi wi) throws Exception {
private Predicate toFilterPredicate(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(Read.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
......@@ -138,98 +132,8 @@ class ActionManageListFilterPaging extends BaseAction {
cb.like(root.get(Read_.creatorUnit), "%" + key + "%")));
}
}
cq.select(root).where(p).orderBy(cb.desc(root.get(Read_.startTime)));
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize)
.getResultList();
}
private Long count(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(Read.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Read> root = cq.from(Read.class);
Predicate p = cb.conjunction();
if (ListTools.isNotEmpty(wi.getApplicationList())) {
p = cb.and(p, root.get(Read_.application).in(wi.getApplicationList()));
}
if (StringUtils.isNotBlank(wi.getPerson())){
p = cb.and(p,cb.equal(root.get(Read_.person), wi.getPerson()));
}
if (StringUtils.isNotBlank(wi.getStringValue01())){
p = cb.and(p,cb.equal(root.get(Read_.stringValue01), wi.getStringValue01()));
}
if (StringUtils.isNotBlank(wi.getStringValue02())){
p = cb.and(p,cb.equal(root.get(Read_.stringValue02), wi.getStringValue02()));
}
if (StringUtils.isNotBlank(wi.getStringValue03())){
p = cb.and(p,cb.equal(root.get(Read_.stringValue03), wi.getStringValue03()));
}
if (StringUtils.isNotBlank(wi.getStringValue04())){
p = cb.and(p,cb.equal(root.get(Read_.stringValue04), wi.getStringValue04()));
}
if (StringUtils.isNotBlank(wi.getStringValue05())){
p = cb.and(p,cb.equal(root.get(Read_.stringValue05), wi.getStringValue05()));
}
if (StringUtils.isNotBlank(wi.getStringValue06())){
p = cb.and(p,cb.equal(root.get(Read_.stringValue06), wi.getStringValue06()));
}
if (StringUtils.isNotBlank(wi.getStringValue07())){
p = cb.and(p,cb.equal(root.get(Read_.stringValue07), wi.getStringValue07()));
}
if (StringUtils.isNotBlank(wi.getStringValue08())){
p = cb.and(p,cb.equal(root.get(Read_.stringValue08), wi.getStringValue08()));
}
if (StringUtils.isNotBlank(wi.getStringValue09())){
p = cb.and(p,cb.equal(root.get(Read_.stringValue09), wi.getStringValue09()));
}
if (StringUtils.isNotBlank(wi.getStringValue10())){
p = cb.and(p,cb.equal(root.get(Read_.stringValue10), wi.getStringValue10()));
}
if (ListTools.isNotEmpty(wi.getProcessList())) {
if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
p = cb.and(p, root.get(Read_.process).in(wi.getProcessList()));
}else{
p = cb.and(p, root.get(Read_.process).in(business.process().listEditionProcess(wi.getProcessList())));
}
}
if(DateTools.isDateTimeOrDate(wi.getStartTime())){
p = cb.and(p, cb.greaterThan(root.get(Read_.startTime), DateTools.parse(wi.getStartTime())));
}
if(DateTools.isDateTimeOrDate(wi.getEndTime())){
p = cb.and(p, cb.lessThan(root.get(Read_.startTime), DateTools.parse(wi.getEndTime())));
}
if (ListTools.isNotEmpty(person_ids)) {
p = cb.and(p, root.get(Read_.person).in(person_ids));
}
if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
p = cb.and(p, root.get(Read_.creatorUnit).in(wi.getCreatorUnitList()));
}
if (ListTools.isNotEmpty(wi.getWorkList())) {
p = cb.and(p, root.get(Read_.work).in(wi.getWorkList()));
}
if (ListTools.isNotEmpty(wi.getJobList())) {
p = cb.and(p, root.get(Read_.job).in(wi.getJobList()));
}
if (ListTools.isNotEmpty(wi.getStartTimeMonthList())) {
p = cb.and(p, root.get(Read_.startTimeMonth).in(wi.getStartTimeMonthList()));
}
if (ListTools.isNotEmpty(wi.getActivityNameList())) {
p = cb.and(p, root.get(Read_.activityName).in(wi.getActivityNameList()));
}
if (StringUtils.isNotEmpty(wi.getKey())) {
String key = StringUtils.trim(StringUtils.replace(wi.getKey(), "\u3000", " "));
if (StringUtils.isNotEmpty(key)) {
key = StringUtils.replaceEach(key, new String[] { "?", "%" }, new String[] { "", "" });
p = cb.and(p,
cb.or(cb.like(root.get(Read_.title), "%" + key + "%"),
cb.like(root.get(Read_.opinion), "%" + key + "%"),
cb.like(root.get(Read_.serial), "%" + key + "%"),
cb.like(root.get(Read_.creatorPerson), "%" + key + "%"),
cb.like(root.get(Read_.creatorUnit), "%" + key + "%")));
}
}
return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult();
return p;
}
public class Wi extends GsonPropertyObject {
......
......@@ -36,15 +36,10 @@ class ActionManageListFilterPaging extends BaseAction {
ActionResult<List<Wo>> result = new ActionResult<>();
if (business.canManageApplication(effectivePerson, null)) {
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
if (wi == null) {
wi = new Wi();
}
Integer adjustPage = this.adjustPage(page);
Integer adjustPageSize = this.adjustSize(size);
List<ReadCompleted> os = this.list(effectivePerson, business, adjustPage, adjustPageSize, wi);
List<Wo> wos = Wo.copier.copy(os);
Predicate p = this.toFilterPredicate(effectivePerson, business, wi);
List<Wo> wos = emc.fetchDescPaging(ReadCompleted.class, Wo.copier, p, page, size, ReadCompleted.startTime_FIELDNAME);
result.setData(wos);
result.setCount(this.count(effectivePerson, business, wi));
result.setCount(emc.count(ReadCompleted.class, p));
}else{
result.setData(new ArrayList<Wo>());
result.setCount(0L);
......@@ -53,8 +48,7 @@ class ActionManageListFilterPaging extends BaseAction {
}
}
private List<ReadCompleted> list(EffectivePerson effectivePerson, Business business, Integer adjustPage,
Integer adjustPageSize, Wi wi) throws Exception {
private Predicate toFilterPredicate(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(ReadCompleted.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
......@@ -142,100 +136,8 @@ class ActionManageListFilterPaging extends BaseAction {
cb.like(root.get(ReadCompleted_.creatorUnit), "%" + key + "%")));
}
}
cq.select(root).where(p).orderBy(cb.desc(root.get(ReadCompleted_.startTime)));
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize)
.getResultList();
}
private Long count(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(ReadCompleted.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<ReadCompleted> root = cq.from(ReadCompleted.class);
Predicate p = cb.conjunction();
if (ListTools.isNotEmpty(wi.getApplicationList())) {
p = cb.and(p, root.get(ReadCompleted_.application).in(wi.getApplicationList()));
}
if (StringUtils.isNotBlank(wi.getPerson())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.person), wi.getPerson()));
}
if (StringUtils.isNotBlank(wi.getStringValue01())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.stringValue01), wi.getStringValue01()));
}
if (StringUtils.isNotBlank(wi.getStringValue02())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.stringValue02), wi.getStringValue02()));
}
if (StringUtils.isNotBlank(wi.getStringValue03())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.stringValue03), wi.getStringValue03()));
}
if (StringUtils.isNotBlank(wi.getStringValue04())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.stringValue04), wi.getStringValue04()));
}
if (StringUtils.isNotBlank(wi.getStringValue05())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.stringValue05), wi.getStringValue05()));
}
if (StringUtils.isNotBlank(wi.getStringValue06())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.stringValue06), wi.getStringValue06()));
}
if (StringUtils.isNotBlank(wi.getStringValue07())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.stringValue07), wi.getStringValue07()));
}
if (StringUtils.isNotBlank(wi.getStringValue08())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.stringValue08), wi.getStringValue08()));
}
if (StringUtils.isNotBlank(wi.getStringValue09())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.stringValue09), wi.getStringValue09()));
}
if (StringUtils.isNotBlank(wi.getStringValue10())){
p = cb.and(p,cb.equal(root.get(ReadCompleted_.stringValue10), wi.getStringValue10()));
}
if (ListTools.isNotEmpty(wi.getProcessList())) {
if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
p = cb.and(p, root.get(ReadCompleted_.process).in(wi.getProcessList()));
}else{
p = cb.and(p, root.get(ReadCompleted_.process).in(business.process().listEditionProcess(wi.getProcessList())));
}
}
if(DateTools.isDateTimeOrDate(wi.getStartTime())){
p = cb.and(p, cb.greaterThan(root.get(ReadCompleted_.startTime), DateTools.parse(wi.getStartTime())));
}
if(DateTools.isDateTimeOrDate(wi.getEndTime())){
p = cb.and(p, cb.lessThan(root.get(ReadCompleted_.startTime), DateTools.parse(wi.getEndTime())));
}
if (ListTools.isNotEmpty(person_ids)) {
p = cb.and(p, root.get(ReadCompleted_.person).in(person_ids));
}
if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
p = cb.and(p, root.get(ReadCompleted_.creatorUnit).in(wi.getCreatorUnitList()));
}
if (ListTools.isNotEmpty(wi.getWorkList())) {
p = cb.and(p, root.get(ReadCompleted_.work).in(wi.getWorkList()));
}
if (ListTools.isNotEmpty(wi.getJobList())) {
p = cb.and(p, root.get(ReadCompleted_.job).in(wi.getJobList()));
}
if (ListTools.isNotEmpty(wi.getStartTimeMonthList())) {
p = cb.and(p, root.get(ReadCompleted_.startTimeMonth).in(wi.getStartTimeMonthList()));
}
if (ListTools.isNotEmpty(wi.getActivityNameList())) {
p = cb.and(p, root.get(ReadCompleted_.activityName).in(wi.getActivityNameList()));
}
if (StringUtils.isNotEmpty(wi.getKey())) {
String key = StringUtils.trim(StringUtils.replace(wi.getKey(), "\u3000", " "));
if (StringUtils.isNotEmpty(key)) {
key = StringUtils.replaceEach(key, new String[] { "?", "%" }, new String[] { "", "" });
p = cb.and(p,
cb.or(cb.like(root.get(ReadCompleted_.title), "%" + key + "%"),
cb.like(root.get(ReadCompleted_.opinion), "%" + key + "%"),
cb.like(root.get(ReadCompleted_.serial), "%" + key + "%"),
cb.like(root.get(ReadCompleted_.creatorPerson), "%" + key + "%"),
cb.like(root.get(ReadCompleted_.creatorUnit), "%" + key + "%")));
}
}
return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult();
return p;
}
public class Wi extends GsonPropertyObject {
......
......@@ -36,15 +36,10 @@ class ActionManageListFilterPaging extends BaseAction {
ActionResult<List<Wo>> result = new ActionResult<>();
if (BooleanUtils.isTrue(business.canManageApplication(effectivePerson, null))) {
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
if (wi == null) {
wi = new Wi();
}
Integer adjustPage = this.adjustPage(page);
Integer adjustPageSize = this.adjustSize(size);
List<Task> os = this.list(effectivePerson, business, adjustPage, adjustPageSize, wi);
List<Wo> wos = Wo.copier.copy(os);
Predicate p = this.toFilterPredicate(effectivePerson, business, wi);
List<Wo> wos = emc.fetchDescPaging(Task.class, Wo.copier, p, page, size, Task.startTime_FIELDNAME);
result.setData(wos);
result.setCount(this.count(effectivePerson, business, wi));
result.setCount(emc.count(Task.class, p));
} else {
result.setData(new ArrayList<Wo>());
result.setCount(0L);
......@@ -53,8 +48,7 @@ class ActionManageListFilterPaging extends BaseAction {
}
}
private List<Task> list(EffectivePerson effectivePerson, Business business, Integer adjustPage,
Integer adjustPageSize, Wi wi) throws Exception {
private Predicate toFilterPredicate(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(Task.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
......@@ -151,109 +145,8 @@ class ActionManageListFilterPaging extends BaseAction {
String key = StringTools.escapeSqlLikeKey(wi.getKey());
p = cb.and(p, cb.like(root.get(Task_.title), "%" + key + "%", StringTools.SQL_ESCAPE_CHAR));
}
cq.select(root).where(p).orderBy(cb.desc(root.get(Task_.startTime)));
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize)
.getResultList();
}
private Long count(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(Task.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Task> root = cq.from(Task.class);
Predicate p = cb.conjunction();
if (ListTools.isNotEmpty(wi.getApplicationList())) {
p = cb.and(p, root.get(Task_.application).in(wi.getApplicationList()));
}
if (StringUtils.isNotBlank(wi.getPerson())) {
p = cb.and(p, cb.equal(root.get(Task_.person), wi.getPerson()));
}
if (StringUtils.isNotBlank(wi.getStringValue01())) {
p = cb.and(p, cb.equal(root.get(Task_.stringValue01), wi.getStringValue01()));
}
if (StringUtils.isNotBlank(wi.getStringValue02())) {
p = cb.and(p, cb.equal(root.get(Task_.stringValue02), wi.getStringValue02()));
}
if (StringUtils.isNotBlank(wi.getStringValue03())) {
p = cb.and(p, cb.equal(root.get(Task_.stringValue03), wi.getStringValue03()));
}
if (StringUtils.isNotBlank(wi.getStringValue04())) {
p = cb.and(p, cb.equal(root.get(Task_.stringValue04), wi.getStringValue04()));
}
if (StringUtils.isNotBlank(wi.getStringValue05())) {
p = cb.and(p, cb.equal(root.get(Task_.stringValue05), wi.getStringValue05()));
}
if (StringUtils.isNotBlank(wi.getStringValue06())) {
p = cb.and(p, cb.equal(root.get(Task_.stringValue06), wi.getStringValue06()));
}
if (StringUtils.isNotBlank(wi.getStringValue07())) {
p = cb.and(p, cb.equal(root.get(Task_.stringValue07), wi.getStringValue07()));
}
if (StringUtils.isNotBlank(wi.getStringValue08())) {
p = cb.and(p, cb.equal(root.get(Task_.stringValue08), wi.getStringValue08()));
}
if (StringUtils.isNotBlank(wi.getStringValue09())) {
p = cb.and(p, cb.equal(root.get(Task_.stringValue09), wi.getStringValue09()));
}
if (StringUtils.isNotBlank(wi.getStringValue10())) {
p = cb.and(p, cb.equal(root.get(Task_.stringValue10), wi.getStringValue10()));
}
if (ListTools.isNotEmpty(wi.getProcessList())) {
if (BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
p = cb.and(p, root.get(Task_.process).in(wi.getProcessList()));
} else {
p = cb.and(p, root.get(Task_.process).in(business.process().listEditionProcess(wi.getProcessList())));
}
}
if (DateTools.isDateTimeOrDate(wi.getStartTime())) {
p = cb.and(p, cb.greaterThan(root.get(Task_.startTime), DateTools.parse(wi.getStartTime())));
}
if (DateTools.isDateTimeOrDate(wi.getEndTime())) {
p = cb.and(p, cb.lessThan(root.get(Task_.startTime), DateTools.parse(wi.getEndTime())));
}
if (ListTools.isNotEmpty(person_ids)) {
p = cb.and(p, root.get(Task_.person).in(person_ids));
}
if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
p = cb.and(p, root.get(Task_.creatorUnit).in(wi.getCreatorUnitList()));
}
if (ListTools.isNotEmpty(wi.getWorkList())) {
p = cb.and(p, root.get(Task_.work).in(wi.getWorkList()));
}
if (ListTools.isNotEmpty(wi.getJobList())) {
p = cb.and(p, root.get(Task_.job).in(wi.getJobList()));
}
if (ListTools.isNotEmpty(wi.getStartTimeMonthList())) {
p = cb.and(p, root.get(Task_.startTimeMonth).in(wi.getStartTimeMonthList()));
}
if (ListTools.isNotEmpty(wi.getActivityNameList())) {
p = cb.and(p, root.get(Task_.activityName).in(wi.getActivityNameList()));
}
if (StringUtils.isNotBlank(wi.getExpireTime())) {
int expireTime = 0;
try {
expireTime = Integer.parseInt(wi.getExpireTime());
} catch (NumberFormatException e) {
}
p = cb.and(p, cb.lessThanOrEqualTo(root.get(Task_.expireTime),
DateTools.getAdjustTimeDay(null, 0, -expireTime, 0, 0)));
}
if (StringUtils.isNotBlank(wi.getUrgeTime())) {
int urgeTime = 0;
try {
urgeTime = Integer.parseInt(wi.getUrgeTime());
} catch (NumberFormatException e) {
}
p = cb.and(p, cb.lessThanOrEqualTo(root.get(Task_.urgeTime),
DateTools.getAdjustTimeDay(null, 0, -urgeTime, 0, 0)));
}
if (StringUtils.isNoneBlank(wi.getKey())) {
String key = StringTools.escapeSqlLikeKey(wi.getKey());
p = cb.and(p, cb.like(root.get(Task_.title), "%" + key + "%", StringTools.SQL_ESCAPE_CHAR));
}
return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult();
return p;
}
public class Wi extends GsonPropertyObject {
......
......@@ -35,15 +35,10 @@ class ActionManageListFilterPaging extends BaseAction {
ActionResult<List<Wo>> result = new ActionResult<>();
if (business.canManageApplication(effectivePerson, null)) {
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
if (wi == null) {
wi = new Wi();
}
Integer adjustPage = this.adjustPage(page);
Integer adjustPageSize = this.adjustSize(size);
List<TaskCompleted> os = this.list(effectivePerson, business, adjustPage, adjustPageSize, wi);
List<Wo> wos = Wo.copier.copy(os);
Predicate p = this.toFilterPredicate(effectivePerson, business, wi);
List<Wo> wos = emc.fetchDescPaging(TaskCompleted.class, Wo.copier, p, page, size, TaskCompleted.startTime_FIELDNAME);
result.setData(wos);
result.setCount(this.count(effectivePerson, business, wi));
result.setCount(emc.count(TaskCompleted.class, p));
}else{
result.setData(new ArrayList<Wo>());
result.setCount(0L);
......@@ -52,79 +47,7 @@ class ActionManageListFilterPaging extends BaseAction {
}
}
private List<TaskCompleted> list(EffectivePerson effectivePerson, Business business, Integer adjustPage,
Integer adjustPageSize, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(TaskCompleted.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<TaskCompleted> cq = cb.createQuery(TaskCompleted.class);
Root<TaskCompleted> root = cq.from(TaskCompleted.class);
Predicate p = cb.conjunction();
if (ListTools.isNotEmpty(wi.getApplicationList())) {
p = cb.and(p, root.get(TaskCompleted_.application).in(wi.getApplicationList()));
}
if (StringUtils.isNotBlank(wi.getPerson())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.person), wi.getPerson()));
}
if (StringUtils.isNotBlank(wi.getStringValue01())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.stringValue01), wi.getStringValue01()));
}
if (StringUtils.isNotBlank(wi.getStringValue02())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.stringValue02), wi.getStringValue02()));
}
if (StringUtils.isNotBlank(wi.getStringValue03())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.stringValue03), wi.getStringValue03()));
}
if (StringUtils.isNotBlank(wi.getStringValue04())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.stringValue04), wi.getStringValue04()));
}
if (StringUtils.isNotBlank(wi.getStringValue05())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.stringValue05), wi.getStringValue05()));
}
if (StringUtils.isNotBlank(wi.getStringValue06())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.stringValue06), wi.getStringValue06()));
}
if (StringUtils.isNotBlank(wi.getStringValue07())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.stringValue07), wi.getStringValue07()));
}
if (StringUtils.isNotBlank(wi.getStringValue08())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.stringValue08), wi.getStringValue08()));
}
if (StringUtils.isNotBlank(wi.getStringValue09())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.stringValue09), wi.getStringValue09()));
}
if (StringUtils.isNotBlank(wi.getStringValue10())){
p = cb.and(p,cb.equal(root.get(TaskCompleted_.stringValue10), wi.getStringValue10()));
}
if (ListTools.isNotEmpty(wi.getProcessList())) {
if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
p = cb.and(p, root.get(TaskCompleted_.process).in(wi.getProcessList()));
}else{
p = cb.and(p, root.get(TaskCompleted_.process).in(business.process().listEditionProcess(wi.getProcessList())));
}
}
if (ListTools.isNotEmpty(wi.getWorkList())) {
p = cb.and(p, root.get(TaskCompleted_.work).in(wi.getWorkList()));
}
if (ListTools.isNotEmpty(wi.getJobList())) {
p = cb.and(p, root.get(TaskCompleted_.job).in(wi.getJobList()));
}
if (ListTools.isNotEmpty(wi.getStartTimeMonthList())) {
p = cb.and(p, root.get(TaskCompleted_.startTimeMonth).in(wi.getStartTimeMonthList()));
}
if (ListTools.isNotEmpty(wi.getActivityNameList())) {
p = cb.and(p, root.get(TaskCompleted_.activityName).in(wi.getActivityNameList()));
}
if (StringUtils.isNoneBlank(wi.getKey())) {
String key = StringTools.escapeSqlLikeKey(wi.getKey());
p = cb.and(p,cb.like(root.get(TaskCompleted_.title), "%" + key + "%", StringTools.SQL_ESCAPE_CHAR));
}
cq.select(root).where(p).orderBy(cb.desc(root.get(TaskCompleted_.startTime)));
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize)
.getResultList();
}
private Long count(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
private Predicate toFilterPredicate(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(TaskCompleted.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
......@@ -202,7 +125,8 @@ class ActionManageListFilterPaging extends BaseAction {
String key = StringTools.escapeSqlLikeKey(wi.getKey());
p = cb.and(p,cb.like(root.get(TaskCompleted_.title), "%" + key + "%", StringTools.SQL_ESCAPE_CHAR));
}
return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult();
return p;
}
public class Wi extends GsonPropertyObject {
......
......@@ -35,15 +35,10 @@ class ActionManageListFilterPaging extends BaseAction {
ActionResult<List<Wo>> result = new ActionResult<>();
if (business.canManageApplication(effectivePerson, null)) {
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
if (wi == null) {
wi = new Wi();
}
Integer adjustPage = this.adjustPage(page);
Integer adjustPageSize = this.adjustSize(size);
List<Work> os = this.list(effectivePerson, business, adjustPage, adjustPageSize, wi);
List<Wo> wos = Wo.copier.copy(os);
Predicate p = this.toFilterPredicate(effectivePerson, business, wi);
List<Wo> wos = emc.fetchDescPaging(Work.class, Wo.copier, p, page, size, Work.startTime_FIELDNAME);
result.setData(wos);
result.setCount(this.count(effectivePerson, business, wi));
result.setCount(emc.count(Work.class, p));
}else{
result.setData(new ArrayList<Wo>());
result.setCount(0L);
......@@ -52,8 +47,7 @@ class ActionManageListFilterPaging extends BaseAction {
}
}
private List<Work> list(EffectivePerson effectivePerson, Business business, Integer adjustPage,
Integer adjustPageSize, Wi wi) throws Exception {
private Predicate toFilterPredicate(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(Work.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
......@@ -136,96 +130,7 @@ class ActionManageListFilterPaging extends BaseAction {
String key = StringTools.escapeSqlLikeKey(wi.getKey());
p = cb.and(p,cb.like(root.get(Work_.title), "%" + key + "%", StringTools.SQL_ESCAPE_CHAR));
}
cq.select(root).where(p).orderBy(cb.desc(root.get(Work_.startTime)));
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize)
.getResultList();
}
private Long count(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(Work.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Work> root = cq.from(Work.class);
Predicate p = cb.conjunction();
if (ListTools.isNotEmpty(wi.getApplicationList())) {
p = cb.and(p, root.get(Work_.application).in(wi.getApplicationList()));
}
if(null != wi.getWorkThroughManual()){
p = cb.and(p, cb.equal(root.get(Work_.workThroughManual), wi.getWorkThroughManual()));
}
if(StringUtils.isNotBlank(wi.getWorkCreateType())){
p = cb.and(p, cb.equal(root.get(Work_.workCreateType), wi.getWorkCreateType()));
}
if (StringUtils.isNotBlank(wi.getStringValue01())){
p = cb.and(p,cb.equal(root.get(Work_.stringValue01), wi.getStringValue01()));
}
if (StringUtils.isNotBlank(wi.getStringValue02())){
p = cb.and(p,cb.equal(root.get(Work_.stringValue02), wi.getStringValue02()));
}
if (StringUtils.isNotBlank(wi.getStringValue03())){
p = cb.and(p,cb.equal(root.get(Work_.stringValue03), wi.getStringValue03()));
}
if (StringUtils.isNotBlank(wi.getStringValue04())){
p = cb.and(p,cb.equal(root.get(Work_.stringValue04), wi.getStringValue04()));
}
if (StringUtils.isNotBlank(wi.getStringValue05())){
p = cb.and(p,cb.equal(root.get(Work_.stringValue05), wi.getStringValue05()));
}
if (StringUtils.isNotBlank(wi.getStringValue06())){
p = cb.and(p,cb.equal(root.get(Work_.stringValue06), wi.getStringValue06()));
}
if (StringUtils.isNotBlank(wi.getStringValue07())){
p = cb.and(p,cb.equal(root.get(Work_.stringValue07), wi.getStringValue07()));
}
if (StringUtils.isNotBlank(wi.getStringValue08())){
p = cb.and(p,cb.equal(root.get(Work_.stringValue08), wi.getStringValue08()));
}
if (StringUtils.isNotBlank(wi.getStringValue09())){
p = cb.and(p,cb.equal(root.get(Work_.stringValue09), wi.getStringValue09()));
}
if (StringUtils.isNotBlank(wi.getStringValue10())){
p = cb.and(p,cb.equal(root.get(Work_.stringValue10), wi.getStringValue10()));
}
if (ListTools.isNotEmpty(wi.getProcessList())) {
if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
p = cb.and(p, root.get(Work_.process).in(wi.getProcessList()));
}else{
p = cb.and(p, root.get(Work_.process).in(business.process().listEditionProcess(wi.getProcessList())));
}
}
if (ListTools.isNotEmpty(wi.getWorkList())) {
p = cb.and(p, root.get(Work_.id).in(wi.getWorkList()));
}
if (ListTools.isNotEmpty(wi.getJobList())) {
p = cb.and(p, root.get(Work_.job).in(wi.getJobList()));
}
if(DateTools.isDateTimeOrDate(wi.getStartTime())){
p = cb.and(p, cb.greaterThan(root.get(Work_.startTime), DateTools.parse(wi.getStartTime())));
}
if(DateTools.isDateTimeOrDate(wi.getEndTime())){
p = cb.and(p, cb.lessThan(root.get(Work_.startTime), DateTools.parse(wi.getEndTime())));
}
if (ListTools.isNotEmpty(person_ids)) {
p = cb.and(p, root.get(Work_.creatorPerson).in(person_ids));
}
if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
p = cb.and(p, root.get(Work_.creatorUnit).in(wi.getCreatorUnitList()));
}
if (ListTools.isNotEmpty(wi.getActivityNameList())) {
p = cb.and(p, root.get(Work_.activityName).in(wi.getActivityNameList()));
}
if (ListTools.isNotEmpty(wi.getWorkStatusList())) {
p = cb.and(p, root.get(Work_.workStatus).in(wi.getWorkStatusList()));
}
if (StringUtils.isNoneBlank(wi.getKey())) {
String key = StringTools.escapeSqlLikeKey(wi.getKey());
p = cb.and(p,cb.like(root.get(Work_.title), "%" + key + "%", StringTools.SQL_ESCAPE_CHAR));
}
return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult();
return p;
}
public class Wi extends GsonPropertyObject {
......
......@@ -35,15 +35,10 @@ class ActionManageListFilterPaging extends BaseAction {
ActionResult<List<Wo>> result = new ActionResult<>();
if (business.canManageApplication(effectivePerson, null)) {
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
if (wi == null) {
wi = new Wi();
}
Integer adjustPage = this.adjustPage(page);
Integer adjustPageSize = this.adjustSize(size);
List<WorkCompleted> os = this.list(effectivePerson, business, adjustPage, adjustPageSize, wi);
List<Wo> wos = Wo.copier.copy(os);
Predicate p = this.toFilterPredicate(effectivePerson, business, wi);
List<Wo> wos = emc.fetchDescPaging(WorkCompleted.class, Wo.copier, p, page, size, WorkCompleted.startTime_FIELDNAME);
result.setData(wos);
result.setCount(this.count(effectivePerson, business, wi));
result.setCount(emc.count(WorkCompleted.class, p));
}else{
result.setData(new ArrayList<Wo>());
result.setCount(0L);
......@@ -52,8 +47,7 @@ class ActionManageListFilterPaging extends BaseAction {
}
}
private List<WorkCompleted> list(EffectivePerson effectivePerson, Business business, Integer adjustPage,
Integer adjustPageSize, Wi wi) throws Exception {
private Predicate toFilterPredicate(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(WorkCompleted.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
......@@ -127,89 +121,7 @@ class ActionManageListFilterPaging extends BaseAction {
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue10), wi.getStringValue10()));
}
cq.select(root).where(p).orderBy(cb.desc(root.get(WorkCompleted_.startTime)));
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize)
.getResultList();
}
private Long count(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(WorkCompleted.class);
List<String> person_ids = business.organization().person().list(wi.getCredentialList());
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<WorkCompleted> root = cq.from(WorkCompleted.class);
Predicate p = cb.conjunction();
if (ListTools.isNotEmpty(wi.getApplicationList())) {
p = cb.and(p, root.get(WorkCompleted_.application).in(wi.getApplicationList()));
}
if (ListTools.isNotEmpty(wi.getProcessList())) {
if(BooleanUtils.isFalse(wi.getRelateEditionProcess())) {
p = cb.and(p, root.get(WorkCompleted_.process).in(wi.getProcessList()));
}else{
p = cb.and(p, root.get(WorkCompleted_.process).in(business.process().listEditionProcess(wi.getProcessList())));
}
}
if(DateTools.isDateTimeOrDate(wi.getStartTime())){
p = cb.and(p, cb.greaterThan(root.get(WorkCompleted_.startTime), DateTools.parse(wi.getStartTime())));
}
if(DateTools.isDateTimeOrDate(wi.getEndTime())){
p = cb.and(p, cb.lessThan(root.get(WorkCompleted_.startTime), DateTools.parse(wi.getEndTime())));
}
if (ListTools.isNotEmpty(person_ids)) {
p = cb.and(p, root.get(WorkCompleted_.creatorPerson).in(person_ids));
}
if (ListTools.isNotEmpty(wi.getCreatorUnitList())) {
p = cb.and(p, root.get(WorkCompleted_.creatorUnit).in(wi.getCreatorUnitList()));
}
if (ListTools.isNotEmpty(wi.getWorkList())) {
p = cb.and(p, root.get(WorkCompleted_.id).in(wi.getWorkList()));
}
if (ListTools.isNotEmpty(wi.getJobList())) {
p = cb.and(p, root.get(WorkCompleted_.job).in(wi.getJobList()));
}
if (ListTools.isNotEmpty(wi.getStartTimeMonthList())) {
p = cb.and(p, root.get(WorkCompleted_.startTimeMonth).in(wi.getStartTimeMonthList()));
}
if (StringUtils.isNoneBlank(wi.getKey())) {
String key = StringTools.escapeSqlLikeKey(wi.getKey());
p = cb.and(p,cb.like(root.get(WorkCompleted_.title), "%" + key + "%", StringTools.SQL_ESCAPE_CHAR));
}
if (StringUtils.isNotBlank(wi.getStringValue01())){
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue01), wi.getStringValue01()));
}
if (StringUtils.isNotBlank(wi.getStringValue02())){
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue02), wi.getStringValue02()));
}
if (StringUtils.isNotBlank(wi.getStringValue03())){
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue03), wi.getStringValue03()));
}
if (StringUtils.isNotBlank(wi.getStringValue04())){
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue04), wi.getStringValue04()));
}
if (StringUtils.isNotBlank(wi.getStringValue05())){
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue05), wi.getStringValue05()));
}
if (StringUtils.isNotBlank(wi.getStringValue06())){
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue06), wi.getStringValue06()));
}
if (StringUtils.isNotBlank(wi.getStringValue07())){
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue07), wi.getStringValue07()));
}
if (StringUtils.isNotBlank(wi.getStringValue08())){
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue08), wi.getStringValue08()));
}
if (StringUtils.isNotBlank(wi.getStringValue09())){
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue09), wi.getStringValue09()));
}
if (StringUtils.isNotBlank(wi.getStringValue10())){
p = cb.and(p,cb.equal(root.get(WorkCompleted_.stringValue10), wi.getStringValue10()));
}
return em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult();
return p;
}
public class Wi extends GsonPropertyObject {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册