diff --git a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/fileinfo/ActionListByDocId.java b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/fileinfo/ActionListByDocId.java index e9c0bbe1a4c14fc7b73cad0a793b6d1973df5e34..3cea109c2e5514e92bb66652260002c0da3a916b 100644 --- a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/fileinfo/ActionListByDocId.java +++ b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/fileinfo/ActionListByDocId.java @@ -35,7 +35,7 @@ public class ActionListByDocId extends BaseAction { List wos = null; Boolean check = true; - Cache.CacheKey cacheKey = new Cache.CacheKey( this.getClass(), docId); + Cache.CacheKey cacheKey = new Cache.CacheKey( this.getClass(), docId, effectivePerson.getDistinguishedName()); Optional optional = CacheManager.get(cacheCategory, cacheKey ); if (optional.isPresent()) { @@ -56,10 +56,13 @@ public class ActionListByDocId extends BaseAction { if( ListTools.isNotEmpty( fileInfoList )) { for ( FileInfo fileInfo : fileInfoList ) { wo = Wo.copier.copy(fileInfo); - if (this.read(wo, effectivePerson, identities, units )) { + boolean canControl = this.control(wo, effectivePerson, identities, units, business); + boolean canEdit = this.edit(wo, effectivePerson, identities, units, business); + boolean canRead = this.read(wo, effectivePerson, identities, units, business); + if (canRead) { wo.getControl().setAllowRead(true); - wo.getControl().setAllowEdit(this.edit(wo, effectivePerson, identities, units)); - wo.getControl().setAllowControl(this.control(wo, effectivePerson, identities, units)); + wo.getControl().setAllowEdit(canEdit); + wo.getControl().setAllowControl(canControl); wos.add(wo); } } @@ -131,43 +134,40 @@ public class ActionListByDocId extends BaseAction { } } - private boolean read(Wo woFileInfo, EffectivePerson effectivePerson, List identities, List units) throws Exception { + private boolean read(Wo woFileInfo, EffectivePerson effectivePerson, List identities, List units, Business business) throws Exception { boolean value = false; if (effectivePerson.isPerson(woFileInfo.getCreatorUid())) { value = true; } else if (ListTools.isEmpty(woFileInfo.getReadIdentityList()) && ListTools.isEmpty(woFileInfo.getReadUnitList())) { value = true; } else if (ListTools.containsAny(identities, woFileInfo.getReadIdentityList()) || ListTools.containsAny(units, woFileInfo.getReadUnitList())) { - - value = true; - } else if (ListTools.containsAny(identities, woFileInfo.getEditIdentityList()) || ListTools.containsAny(units, woFileInfo.getEditUnitList())) { value = true; } else { - if (ListTools.containsAny(identities, woFileInfo.getControllerIdentityList()) || ListTools.containsAny(units, woFileInfo.getControllerUnitList())) { - value = true; - } + value = this.edit(woFileInfo, effectivePerson, identities, units, business); } return value; } - private boolean edit(Wo wo, EffectivePerson effectivePerson, List identities, List units) throws Exception { + private boolean edit(Wo wo, EffectivePerson effectivePerson, List identities, List units, Business business) throws Exception { boolean value = false; if (effectivePerson.isPerson(wo.getCreatorUid())) { value = true; } else if (ListTools.isEmpty(wo.getEditIdentityList()) && ListTools.isEmpty(wo.getEditUnitList())) { value = true; - } else { - if (ListTools.containsAny(identities, wo.getEditIdentityList()) || ListTools.containsAny(units, wo.getEditUnitList())) { + } else if (ListTools.containsAny(identities, wo.getEditIdentityList()) || ListTools.containsAny(units, wo.getEditUnitList())) { value = true; - } + } else { + value = this.control(wo, effectivePerson, identities, units, business); } return value; } - private boolean control(Wo wo, EffectivePerson effectivePerson, List identities, List units) + private boolean control(Wo wo, EffectivePerson effectivePerson, List identities, List units, Business business) throws Exception { boolean value = false; - if (effectivePerson.isPerson(wo.getCreatorUid())) { + if (business.isManager(effectivePerson)) { + value = true; + } else if (effectivePerson.isPerson(wo.getCreatorUid())) { value = true; } else if (ListTools.isEmpty(wo.getControllerUnitList()) && ListTools.isEmpty(wo.getControllerIdentityList())) { value = true;