|
@@ -39,6 +39,8 @@ import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
import org.springblade.core.mp.support.Condition;
|
|
|
import org.springblade.core.mp.support.Query;
|
|
|
import org.springblade.core.oss.model.BladeFile;
|
|
|
+import org.springblade.core.secure.BladeUser;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.core.tool.utils.StringUtil;
|
|
|
import org.springblade.manager.entity.ArchiveTreeContract;
|
|
@@ -82,7 +84,6 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
private final NewIOSSClient iossClient;
|
|
|
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public IPage<ArchivesAutoVO> selectArchivesAutoPage(IPage<ArchivesAutoVO> page, ArchivesAutoVO archivesAuto) {
|
|
|
return page.setRecords(baseMapper.selectArchivesAutoPage(page, archivesAuto));
|
|
@@ -965,19 +966,29 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 刷新项目档号
|
|
|
+ * 不重组的情况下刷新档号
|
|
|
+ * projectId 为当前项目
|
|
|
+ * contractId 为客户端当前选定的合同段
|
|
|
+ * nodeId 为左侧树选定的节点i
|
|
|
+ * 规则,1. 合同段ID为空,则不过滤
|
|
|
+ * 2. 业主或者管理员,treeCode为空,则按照nodeid过滤,nodeid为空,则不过滤
|
|
|
+ * 3. 合同段用户,安装找contractId过滤,过滤该合同段所有节点。
|
|
|
* @param projectId
|
|
|
+ * @param contractId
|
|
|
+ * @param nodeId
|
|
|
*/
|
|
|
- public void refreshFileNumberNoSlipt(Long projectId) {
|
|
|
+ public void refreshFileNumberNoSlipt(Long projectId,Long contractId,Long nodeId) {
|
|
|
List<ArchiveTreeContract> list = archiveTreeContractClient.getListByProjectId(projectId);
|
|
|
- this.refreshFileNumberNoSlipt(list);
|
|
|
+ this.refreshFileNumberNoSlipt(list,contractId,nodeId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 不重组的情况下刷新档号
|
|
|
+ *
|
|
|
* @param archiveTreeContracts
|
|
|
+ * @param contractId
|
|
|
+ * @param nodeId
|
|
|
*/
|
|
|
- public void refreshFileNumberNoSlipt(List<ArchiveTreeContract> archiveTreeContracts) {
|
|
|
+ public void refreshFileNumberNoSlipt(List<ArchiveTreeContract> archiveTreeContracts,Long contractId,Long nodeId) {
|
|
|
|
|
|
List<ArchiveTreeContractVO2> subTreeList = new ArrayList<>();
|
|
|
List<List<ArchiveTreeContract>> subGroupedList = new ArrayList<>();
|
|
@@ -992,6 +1003,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
.map(ArchiveTreeContract::getId)
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
+ //todo 后续根据 authFilter函数过滤
|
|
|
+
|
|
|
+ subList = authFilter(subList,contractId,nodeId);
|
|
|
+
|
|
|
index =1;
|
|
|
List<ArchivesAuto> archivesAutos = findArchivesAutosByIds(ids);
|
|
|
if (archivesAutos == null || archivesAutos.size() == 0) {
|
|
@@ -1123,5 +1138,88 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 施工则返回“C”,监理则返回“S”,其他返回“”
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getAuthCode(Long contractId) {
|
|
|
+ String code ="";
|
|
|
+ BladeUser bladeUser = AuthUtil.getUser();
|
|
|
+ if (AuthUtil.isAdministrator() || contractId == null) {
|
|
|
+ return code;
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询合同段信息
|
|
|
+ ContractInfo contractInfo = contractClient.getContractById(contractId);
|
|
|
+ switch (contractInfo.getContractType()){
|
|
|
+ case 2:
|
|
|
+ code = "S";
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ code = "";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ code = "C";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return code;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 带权限筛选的档案列表筛选函数
|
|
|
+ * 规则,1. 合同段ID为空,则不过滤
|
|
|
+ * 2. 业主或者管理员,treeCode为空,则按照nodeid过滤,nodeid为空,则不过滤
|
|
|
+ * 3. 合同段用户,安装找contractId过滤,过滤该合同段所有节点。
|
|
|
+ * @param archiveTreeContracts 档案列表archiveTreeContracts
|
|
|
+ * @param contractId 合同编号,用于获取权限码
|
|
|
+ * @param nodeId 筛选条件:节点编号
|
|
|
+ * @return 符合条件的档案列表
|
|
|
+ */
|
|
|
+ public List<ArchiveTreeContract> authFilter(List<ArchiveTreeContract> archiveTreeContracts, Long contractId, Long nodeId) {
|
|
|
+ //合同段ID为空则全部返回
|
|
|
+ if (contractId == null) {
|
|
|
+ return archiveTreeContracts;
|
|
|
+ }
|
|
|
+
|
|
|
+ String treeCode = getAuthCode(contractId);
|
|
|
+ String strNodeId = "";
|
|
|
+ if (nodeId!= null) {
|
|
|
+ strNodeId = nodeId.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ return archiveTreeContractFilter(archiveTreeContracts, treeCode, strNodeId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 对档案列表进行筛选
|
|
|
+ * @param archiveTreeContracts 档案列表
|
|
|
+ * @param treeCode 筛选条件:权限码
|
|
|
+ * @param nodeId 筛选条件:节点编号
|
|
|
+ * @return 符合条件的档案列表
|
|
|
+ */
|
|
|
+ public List<ArchiveTreeContract> archiveTreeContractFilter(List<ArchiveTreeContract> archiveTreeContracts, String treeCode, String nodeId) {
|
|
|
+ List<ArchiveTreeContract> result = new ArrayList<>();
|
|
|
+
|
|
|
+ if (StringUtils.isEmpty(treeCode) && StringUtils.isEmpty(nodeId)) {
|
|
|
+ return archiveTreeContracts;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (ArchiveTreeContract contract : archiveTreeContracts) {
|
|
|
+ if (StringUtils.isEmpty(treeCode)) {
|
|
|
+ if (StringUtils.isNotEmpty(contract.getAncestors()) && contract.getAncestors().contains(nodeId)) {
|
|
|
+ result.add(contract);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (treeCode.equals(contract.getTreeCode())) {
|
|
|
+ result.add(contract);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|