提交 137e6d83 编写于 作者: O o2null

Merge branch 'fix/readCompletedV2' into 'master'

readCompletedV2代码错误,指向read

See merge request o2oa/o2oa!1869
...@@ -25,8 +25,8 @@ import com.x.base.core.project.gson.GsonPropertyObject; ...@@ -25,8 +25,8 @@ import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
import com.x.processplatform.assemble.surface.Business; import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Task; import com.x.processplatform.core.entity.content.ReadCompleted;
import com.x.processplatform.core.entity.content.Task_; import com.x.processplatform.core.entity.content.ReadCompleted_;
class V2Count extends V2Base { class V2Count extends V2Base {
...@@ -59,16 +59,16 @@ class V2Count extends V2Base { ...@@ -59,16 +59,16 @@ class V2Count extends V2Base {
} }
private Long count(Business business, Predicate predicate) throws Exception { private Long count(Business business, Predicate predicate) throws Exception {
return business.entityManagerContainer().count(Task.class, predicate); return business.entityManagerContainer().count(ReadCompleted.class, predicate);
} }
private List<NameValueCountPair> groupByApplication(Business business, Predicate predicate) throws Exception { private List<NameValueCountPair> groupByApplication(Business business, Predicate predicate) throws Exception {
EntityManager em = business.entityManagerContainer().get(Task.class); EntityManager em = business.entityManagerContainer().get(ReadCompleted.class);
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class); CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
Root<Task> root = cq.from(Task.class); Root<ReadCompleted> root = cq.from(ReadCompleted.class);
Path<String> pathApplication = root.get(Task_.application); Path<String> pathApplication = root.get(ReadCompleted_.application);
Path<String> pathApplicationName = root.get(Task_.applicationName); Path<String> pathApplicationName = root.get(ReadCompleted_.applicationName);
cq.multiselect(pathApplication, pathApplicationName, cb.count(root)).where(predicate).groupBy(pathApplication); cq.multiselect(pathApplication, pathApplicationName, cb.count(root)).where(predicate).groupBy(pathApplication);
List<Tuple> os = em.createQuery(cq).getResultList(); List<Tuple> os = em.createQuery(cq).getResultList();
List<NameValueCountPair> list = new ArrayList<>(); List<NameValueCountPair> list = new ArrayList<>();
...@@ -85,12 +85,12 @@ class V2Count extends V2Base { ...@@ -85,12 +85,12 @@ class V2Count extends V2Base {
} }
private List<NameValueCountPair> groupByProcess(Business business, Predicate predicate) throws Exception { private List<NameValueCountPair> groupByProcess(Business business, Predicate predicate) throws Exception {
EntityManager em = business.entityManagerContainer().get(Task.class); EntityManager em = business.entityManagerContainer().get(ReadCompleted.class);
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class); CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
Root<Task> root = cq.from(Task.class); Root<ReadCompleted> root = cq.from(ReadCompleted.class);
Path<String> pathProcess = root.get(Task_.process); Path<String> pathProcess = root.get(ReadCompleted_.process);
Path<String> pathProcessName = root.get(Task_.processName); Path<String> pathProcessName = root.get(ReadCompleted_.processName);
cq.multiselect(pathProcess, pathProcessName, cb.count(root)).where(predicate).groupBy(pathProcess); cq.multiselect(pathProcess, pathProcessName, cb.count(root)).where(predicate).groupBy(pathProcess);
List<Tuple> os = em.createQuery(cq).getResultList(); List<Tuple> os = em.createQuery(cq).getResultList();
List<NameValueCountPair> list = new ArrayList<>(); List<NameValueCountPair> list = new ArrayList<>();
...@@ -107,11 +107,11 @@ class V2Count extends V2Base { ...@@ -107,11 +107,11 @@ class V2Count extends V2Base {
} }
private List<NameValueCountPair> groupByCreatorPerson(Business business, Predicate predicate) throws Exception { private List<NameValueCountPair> groupByCreatorPerson(Business business, Predicate predicate) throws Exception {
EntityManager em = business.entityManagerContainer().get(Task.class); EntityManager em = business.entityManagerContainer().get(ReadCompleted.class);
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class); CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
Root<Task> root = cq.from(Task.class); Root<ReadCompleted> root = cq.from(ReadCompleted.class);
Path<String> pathCreatorPerson = root.get(Task_.creatorPerson); Path<String> pathCreatorPerson = root.get(ReadCompleted_.creatorPerson);
cq.multiselect(pathCreatorPerson, cb.count(root)).where(predicate).groupBy(pathCreatorPerson); cq.multiselect(pathCreatorPerson, cb.count(root)).where(predicate).groupBy(pathCreatorPerson);
List<Tuple> os = em.createQuery(cq).getResultList(); List<Tuple> os = em.createQuery(cq).getResultList();
List<NameValueCountPair> list = new ArrayList<>(); List<NameValueCountPair> list = new ArrayList<>();
...@@ -128,11 +128,11 @@ class V2Count extends V2Base { ...@@ -128,11 +128,11 @@ class V2Count extends V2Base {
} }
private List<NameValueCountPair> groupByCreatorUnit(Business business, Predicate predicate) throws Exception { private List<NameValueCountPair> groupByCreatorUnit(Business business, Predicate predicate) throws Exception {
EntityManager em = business.entityManagerContainer().get(Task.class); EntityManager em = business.entityManagerContainer().get(ReadCompleted.class);
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class); CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
Root<Task> root = cq.from(Task.class); Root<ReadCompleted> root = cq.from(ReadCompleted.class);
Path<String> pathCreatorUnit = root.get(Task_.creatorUnit); Path<String> pathCreatorUnit = root.get(ReadCompleted_.creatorUnit);
cq.multiselect(pathCreatorUnit, cb.count(root)).where(predicate).groupBy(pathCreatorUnit); cq.multiselect(pathCreatorUnit, cb.count(root)).where(predicate).groupBy(pathCreatorUnit);
List<Tuple> os = em.createQuery(cq).getResultList(); List<Tuple> os = em.createQuery(cq).getResultList();
List<NameValueCountPair> list = new ArrayList<>(); List<NameValueCountPair> list = new ArrayList<>();
...@@ -149,11 +149,11 @@ class V2Count extends V2Base { ...@@ -149,11 +149,11 @@ class V2Count extends V2Base {
} }
private List<NameValueCountPair> groupByStartTimeMonth(Business business, Predicate predicate) throws Exception { private List<NameValueCountPair> groupByStartTimeMonth(Business business, Predicate predicate) throws Exception {
EntityManager em = business.entityManagerContainer().get(Task.class); EntityManager em = business.entityManagerContainer().get(ReadCompleted.class);
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class); CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
Root<Task> root = cq.from(Task.class); Root<ReadCompleted> root = cq.from(ReadCompleted.class);
Path<String> pathStartTimeMonth = root.get(Task_.startTimeMonth); Path<String> pathStartTimeMonth = root.get(ReadCompleted_.startTimeMonth);
cq.multiselect(pathStartTimeMonth, cb.count(root)).where(predicate).groupBy(pathStartTimeMonth); cq.multiselect(pathStartTimeMonth, cb.count(root)).where(predicate).groupBy(pathStartTimeMonth);
List<Tuple> os = em.createQuery(cq).getResultList(); List<Tuple> os = em.createQuery(cq).getResultList();
List<NameValueCountPair> list = new ArrayList<>(); List<NameValueCountPair> list = new ArrayList<>();
......
...@@ -21,8 +21,8 @@ import com.x.base.core.project.http.ActionResult; ...@@ -21,8 +21,8 @@ import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.tools.ListTools; import com.x.base.core.project.tools.ListTools;
import com.x.processplatform.assemble.surface.Business; import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Read; import com.x.processplatform.core.entity.content.ReadCompleted;
import com.x.processplatform.core.entity.content.Read_; import com.x.processplatform.core.entity.content.ReadCompleted_;
class V2List extends V2Base { class V2List extends V2Base {
...@@ -33,18 +33,18 @@ class V2List extends V2Base { ...@@ -33,18 +33,18 @@ class V2List extends V2Base {
if ((!wi.isEmptyFilter()) || ListTools.isNotEmpty(wi.getJobList()) || ListTools.isNotEmpty(wi.getIdList())) { if ((!wi.isEmptyFilter()) || ListTools.isNotEmpty(wi.getJobList()) || ListTools.isNotEmpty(wi.getIdList())) {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc); Business business = new Business(emc);
EntityManager em = emc.get(Read.class); EntityManager em = emc.get(ReadCompleted.class);
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class); CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
Root<Read> root = cq.from(Read.class); Root<ReadCompleted> root = cq.from(ReadCompleted.class);
Predicate p = this.toFilterPredicate(effectivePerson, business, wi); Predicate p = this.toFilterPredicate(effectivePerson, business, wi);
if (ListTools.isNotEmpty(wi.getJobList())) { if (ListTools.isNotEmpty(wi.getJobList())) {
p = cb.and(p, root.get(Read_.job).in(wi.getJobList())); p = cb.and(p, root.get(ReadCompleted_.job).in(wi.getJobList()));
} }
if (ListTools.isNotEmpty(wi.getIdList())) { if (ListTools.isNotEmpty(wi.getIdList())) {
p = cb.and(p, root.get(Read_.id).in(wi.getIdList())); p = cb.and(p, root.get(ReadCompleted_.id).in(wi.getIdList()));
} }
wos = emc.fetch(Read.class, Wo.copier, p); wos = emc.fetch(ReadCompleted.class, Wo.copier, p);
this.relate(business, wos, wi); this.relate(business, wos, wi);
} }
} }
...@@ -80,7 +80,7 @@ class V2List extends V2Base { ...@@ -80,7 +80,7 @@ class V2List extends V2Base {
public static class Wo extends AbstractWo { public static class Wo extends AbstractWo {
private static final long serialVersionUID = -4773789253221941109L; private static final long serialVersionUID = -4773789253221941109L;
static WrapCopier<Read, Wo> copier = WrapCopierFactory.wo(Read.class, Wo.class, static WrapCopier<ReadCompleted, Wo> copier = WrapCopierFactory.wo(ReadCompleted.class, Wo.class,
JpaObject.singularAttributeField(Read.class, true, false), JpaObject.FieldsInvisible); JpaObject.singularAttributeField(ReadCompleted.class, true, false), JpaObject.FieldsInvisible);
} }
} }
...@@ -18,8 +18,8 @@ import com.x.base.core.project.bean.WrapCopierFactory; ...@@ -18,8 +18,8 @@ import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
import com.x.processplatform.assemble.surface.Business; import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Read; import com.x.processplatform.core.entity.content.ReadCompleted;
import com.x.processplatform.core.entity.content.Read_; import com.x.processplatform.core.entity.content.ReadCompleted_;
class V2ListCreateNext extends V2Base { class V2ListCreateNext extends V2Base {
...@@ -28,11 +28,11 @@ class V2ListCreateNext extends V2Base { ...@@ -28,11 +28,11 @@ class V2ListCreateNext extends V2Base {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Wi wi = this.convertToWrapIn(jsonElement, Wi.class); Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
Business business = new Business(emc); Business business = new Business(emc);
EntityManager em = emc.get(Read.class); EntityManager em = emc.get(ReadCompleted.class);
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class); CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
Root<Read> root = cq.from(Read.class); Root<ReadCompleted> root = cq.from(ReadCompleted.class);
Predicate p = cb.equal(root.get(Read_.creatorPerson), effectivePerson.getDistinguishedName()); Predicate p = cb.equal(root.get(ReadCompleted_.creatorPerson), effectivePerson.getDistinguishedName());
p = cb.and(p, this.toFilterPredicate(effectivePerson, business, wi)); p = cb.and(p, this.toFilterPredicate(effectivePerson, business, wi));
ActionResult<List<Wo>> result = this.standardListNext(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, ActionResult<List<Wo>> result = this.standardListNext(Wo.copier, id, count, JpaObject.sequence_FIELDNAME,
DESC, p); DESC, p);
...@@ -47,7 +47,7 @@ class V2ListCreateNext extends V2Base { ...@@ -47,7 +47,7 @@ class V2ListCreateNext extends V2Base {
public static class Wo extends AbstractWo { public static class Wo extends AbstractWo {
private static final long serialVersionUID = -4773789253221941109L; private static final long serialVersionUID = -4773789253221941109L;
static WrapCopier<Read, Wo> copier = WrapCopierFactory.wo(Read.class, Wo.class, static WrapCopier<ReadCompleted, Wo> copier = WrapCopierFactory.wo(ReadCompleted.class, Wo.class,
JpaObject.singularAttributeField(Read.class, true, false), JpaObject.FieldsInvisible); JpaObject.singularAttributeField(ReadCompleted.class, true, false), JpaObject.FieldsInvisible);
} }
} }
...@@ -18,8 +18,8 @@ import com.x.base.core.project.bean.WrapCopierFactory; ...@@ -18,8 +18,8 @@ import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
import com.x.processplatform.assemble.surface.Business; import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Read; import com.x.processplatform.core.entity.content.ReadCompleted;
import com.x.processplatform.core.entity.content.Read_; import com.x.processplatform.core.entity.content.ReadCompleted_;
class V2ListCreatePrev extends V2Base { class V2ListCreatePrev extends V2Base {
...@@ -28,11 +28,11 @@ class V2ListCreatePrev extends V2Base { ...@@ -28,11 +28,11 @@ class V2ListCreatePrev extends V2Base {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Wi wi = this.convertToWrapIn(jsonElement, Wi.class); Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
Business business = new Business(emc); Business business = new Business(emc);
EntityManager em = emc.get(Read.class); EntityManager em = emc.get(ReadCompleted.class);
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class); CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
Root<Read> root = cq.from(Read.class); Root<ReadCompleted> root = cq.from(ReadCompleted.class);
Predicate p = cb.equal(root.get(Read_.creatorPerson), effectivePerson.getDistinguishedName()); Predicate p = cb.equal(root.get(ReadCompleted_.creatorPerson), effectivePerson.getDistinguishedName());
p = cb.and(p, this.toFilterPredicate(effectivePerson, business, wi)); p = cb.and(p, this.toFilterPredicate(effectivePerson, business, wi));
ActionResult<List<Wo>> result = this.standardListPrev(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, ActionResult<List<Wo>> result = this.standardListPrev(Wo.copier, id, count, JpaObject.sequence_FIELDNAME,
DESC, p); DESC, p);
...@@ -47,7 +47,7 @@ class V2ListCreatePrev extends V2Base { ...@@ -47,7 +47,7 @@ class V2ListCreatePrev extends V2Base {
public static class Wo extends AbstractWo { public static class Wo extends AbstractWo {
private static final long serialVersionUID = -4773789253221941109L; private static final long serialVersionUID = -4773789253221941109L;
static WrapCopier<Read, Wo> copier = WrapCopierFactory.wo(Read.class, Wo.class, static WrapCopier<ReadCompleted, Wo> copier = WrapCopierFactory.wo(ReadCompleted.class, Wo.class,
JpaObject.singularAttributeField(Read.class, true, false), JpaObject.FieldsInvisible); JpaObject.singularAttributeField(ReadCompleted.class, true, false), JpaObject.FieldsInvisible);
} }
} }
...@@ -13,7 +13,7 @@ import com.x.base.core.project.bean.WrapCopierFactory; ...@@ -13,7 +13,7 @@ import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
import com.x.processplatform.assemble.surface.Business; import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Read; import com.x.processplatform.core.entity.content.ReadCompleted;
class V2ListNext extends V2Base { class V2ListNext extends V2Base {
...@@ -36,7 +36,7 @@ class V2ListNext extends V2Base { ...@@ -36,7 +36,7 @@ class V2ListNext extends V2Base {
public static class Wo extends AbstractWo { public static class Wo extends AbstractWo {
private static final long serialVersionUID = -4773789253221941109L; private static final long serialVersionUID = -4773789253221941109L;
static WrapCopier<Read, Wo> copier = WrapCopierFactory.wo(Read.class, Wo.class, static WrapCopier<ReadCompleted, Wo> copier = WrapCopierFactory.wo(ReadCompleted.class, Wo.class,
JpaObject.singularAttributeField(Read.class, true, false), JpaObject.FieldsInvisible); JpaObject.singularAttributeField(ReadCompleted.class, true, false), JpaObject.FieldsInvisible);
} }
} }
\ No newline at end of file
...@@ -13,7 +13,7 @@ import com.x.base.core.project.bean.WrapCopierFactory; ...@@ -13,7 +13,7 @@ import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
import com.x.processplatform.assemble.surface.Business; import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Read; import com.x.processplatform.core.entity.content.ReadCompleted;
class V2ListPaging extends V2Base { class V2ListPaging extends V2Base {
...@@ -24,9 +24,9 @@ class V2ListPaging extends V2Base { ...@@ -24,9 +24,9 @@ class V2ListPaging extends V2Base {
ActionResult<List<Wo>> result = new ActionResult<>(); ActionResult<List<Wo>> result = new ActionResult<>();
Wi wi = this.convertToWrapIn(jsonElement, Wi.class); Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
Predicate p = this.toFilterPredicate(effectivePerson, business, wi); Predicate p = this.toFilterPredicate(effectivePerson, business, wi);
List<Wo> wos = emc.fetchDescPaging(Read.class, Wo.copier, p, page, size, Read.sequence_FIELDNAME); List<Wo> wos = emc.fetchDescPaging(ReadCompleted.class, Wo.copier, p, page, size, ReadCompleted.sequence_FIELDNAME);
result.setData(wos); result.setData(wos);
result.setCount(emc.count(Read.class, p)); result.setCount(emc.count(ReadCompleted.class, p));
this.relate(business, result.getData(), wi); this.relate(business, result.getData(), wi);
return result; return result;
} }
...@@ -38,7 +38,7 @@ class V2ListPaging extends V2Base { ...@@ -38,7 +38,7 @@ class V2ListPaging extends V2Base {
public static class Wo extends AbstractWo { public static class Wo extends AbstractWo {
private static final long serialVersionUID = -4773789253221941109L; private static final long serialVersionUID = -4773789253221941109L;
static WrapCopier<Read, Wo> copier = WrapCopierFactory.wo(Read.class, Wo.class, static WrapCopier<ReadCompleted, Wo> copier = WrapCopierFactory.wo(ReadCompleted.class, Wo.class,
JpaObject.singularAttributeField(Read.class, true, false), JpaObject.FieldsInvisible); JpaObject.singularAttributeField(ReadCompleted.class, true, false), JpaObject.FieldsInvisible);
} }
} }
...@@ -13,7 +13,7 @@ import com.x.base.core.project.bean.WrapCopierFactory; ...@@ -13,7 +13,7 @@ import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
import com.x.processplatform.assemble.surface.Business; import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Read; import com.x.processplatform.core.entity.content.ReadCompleted;
class V2ListPrev extends V2Base { class V2ListPrev extends V2Base {
...@@ -36,7 +36,7 @@ class V2ListPrev extends V2Base { ...@@ -36,7 +36,7 @@ class V2ListPrev extends V2Base {
public static class Wo extends AbstractWo { public static class Wo extends AbstractWo {
private static final long serialVersionUID = -4773789253221941109L; private static final long serialVersionUID = -4773789253221941109L;
static WrapCopier<Read, Wo> copier = WrapCopierFactory.wo(Read.class, Wo.class, static WrapCopier<ReadCompleted, Wo> copier = WrapCopierFactory.wo(ReadCompleted.class, Wo.class,
JpaObject.singularAttributeField(Read.class, true, false), JpaObject.FieldsInvisible); JpaObject.singularAttributeField(ReadCompleted.class, true, false), JpaObject.FieldsInvisible);
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册