diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 7cdbef2e6..3318622e7 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -60,10 +60,7 @@ import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.UfaceDevMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerAttendanceMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; -import com.zhgd.xmgl.modules.worker.service.ITeamInfoService; -import com.zhgd.xmgl.modules.worker.service.IUfaceDevService; -import com.zhgd.xmgl.modules.worker.service.IWorkerAttendancePresenceService; -import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService; +import com.zhgd.xmgl.modules.worker.service.*; import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl; import com.zhgd.xmgl.modules.worker.service.impl.WorkerAttendanceServiceImpl; import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync; @@ -248,6 +245,9 @@ public class HikvisionCall { @Lazy @Resource private RedissonClient redissonClient; + @Lazy + @Autowired + private IDepartmentInfoService departmentInfoService; /** * 获取图片 @@ -1187,28 +1187,35 @@ public class HikvisionCall { } } - private void saveIfNotExistDepartment(WorkerInfo workerInfo, Project project) { -// boolean existOrg = hikvisionCall.existOrg(project, workerInfo.getTeamId() + "", StringsUtils.getUniqueEnterpriseId(workerInfo.getEnterpriseId(), workerInfo.getProjectSn())); -// if (!existOrg) { -// RLock lock = null; -// try { -// String lockKey = "isc_org_team_add:" + workerInfo.getTeamId(); -// lock = redissonClient.getLock(lockKey); -// lock.tryLock( 100L, TimeUnit.SECONDS); -// existOrg = hikvisionCall.existOrg(project, workerInfo.getTeamId() + "", StringsUtils.getUniqueEnterpriseId(workerInfo.getEnterpriseId(), workerInfo.getProjectSn())); -// if (!existOrg) { -// TeamInfo teamInfo = teamInfoService.getById(workerInfo.getTeamId()); -// HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo, project); -// addOrgNoticeFromHttp(project, hikvisionOrganization); -// } -// } catch (Exception e) { -// log.error("", e); -// } finally { -// if (lock != null) { -// lock.unlock(); -// } -// } -// } + /** + * isc部门不存在就保存部门 + * + * @param workerInfo + * @param project + * @throws Exception + */ + private void saveIfNotExistDepartment(WorkerInfo workerInfo, Project project) throws Exception { + DepartmentInfo departmentInfo = departmentInfoService.getOne(new LambdaQueryWrapper() + .eq(DepartmentInfo::getId, workerInfo.getDepartmentId()).last(Cts.IGNORE_DATA_SCOPE_CONDITION)); + HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(departmentInfo, project); + if (!existOrg(project, String.valueOf(departmentInfo.getId()), hikvisionOrganization.getParentIndexCode())) { + RLock lock = null; + try { + String lockKey = "isc_org_department_add:" + departmentInfo.getId(); + lock = redissonClient.getLock(lockKey); + lock.tryLock(100L, TimeUnit.SECONDS); + boolean existOrg = existOrg(project, String.valueOf(departmentInfo.getId()), hikvisionOrganization.getParentIndexCode()); + if (!existOrg) { + addDepartmentInfoForHikvision(departmentInfo); + } + } catch (Exception e) { + log.error("", e); + } finally { + if (lock != null) { + lock.unlock(); + } + } + } } /** @@ -1229,8 +1236,7 @@ public class HikvisionCall { existOrg = hikvisionCall.existOrg(project, workerInfo.getTeamId() + "", StringsUtils.getUniqueEnterpriseId(workerInfo.getEnterpriseId(), workerInfo.getProjectSn())); if (!existOrg) { TeamInfo teamInfo = teamInfoService.getById(workerInfo.getTeamId()); - HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo, project); - addOrgNoticeFromHttp(project, hikvisionOrganization); + addTeamInfoForHikvision(teamInfo); } } catch (Exception e) { log.error("", e); @@ -2316,7 +2322,7 @@ public class HikvisionCall { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } - String orgIndexCode = StringsUtils.getUniqueEnterpriseId(enterpriseInfo.getId(), enterpriseInfo.getProjectSn()); + String orgIndexCode = StringsUtils.getUniqueEnterpriseId(enterpriseInfo.getId(), project.getProjectSn()); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(enterpriseInfo, orgIndexCode); JSONArray orgList = getOrgList(project, orgIndexCode, project.getProjectSn()); if (CollUtil.isNotEmpty(orgList)) { @@ -2403,6 +2409,7 @@ public class HikvisionCall { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } + saveEnterpriseIfNotExist(project, teamInfo.getEnterpriseId()); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo, project); addOrgNoticeFromHttp(project, hikvisionOrganization); } @@ -2421,7 +2428,6 @@ public class HikvisionCall { hikvisionOrganization.setOrgIndexCode(String.valueOf(teamInfo.getId())); hikvisionOrganization.setOrgName(teamInfo.getTeamName()); hikvisionOrganization.setParentIndexCode(StringsUtils.getUniqueEnterpriseId(teamInfo.getEnterpriseId(), project.getProjectSn())); - return hikvisionOrganization; } @@ -2435,6 +2441,7 @@ public class HikvisionCall { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } + saveEnterpriseIfNotExist(project, teamInfo.getEnterpriseId()); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(teamInfo, project); if (existOrg(project, String.valueOf(teamInfo.getId()), hikvisionOrganization.getParentIndexCode())) { editOrgFromHttp(project, hikvisionOrganization); @@ -2504,6 +2511,7 @@ public class HikvisionCall { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } + saveEnterpriseIfNotExist(project, departmentInfo.getEnterpriseId()); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(departmentInfo, project); addOrgNoticeFromHttp(project, hikvisionOrganization); } @@ -2516,7 +2524,7 @@ public class HikvisionCall { * @return * @throws Exception */ - private HikvisionOrganization getHikvisionOrganization(DepartmentInfo departmentInfo, Project project) throws Exception { + private HikvisionOrganization getHikvisionOrganization(DepartmentInfo departmentInfo, Project project) { HikvisionOrganization hikvisionOrganization = new HikvisionOrganization(); hikvisionOrganization.setClientId(null); hikvisionOrganization.setOrgIndexCode(String.valueOf(departmentInfo.getId())); @@ -2535,6 +2543,7 @@ public class HikvisionCall { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } + saveEnterpriseIfNotExist(project, departmentInfo.getEnterpriseId()); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(departmentInfo, project); if (existOrg(project, String.valueOf(departmentInfo.getId()), hikvisionOrganization.getParentIndexCode())) { editOrgFromHttp(project, hikvisionOrganization); @@ -2544,6 +2553,40 @@ public class HikvisionCall { } + /** + * isc企业不存在就保存企业 + * + * @param project + * @param enterpriseId + * @throws Exception + */ + private void saveEnterpriseIfNotExist(Project project, Long enterpriseId) throws Exception { + //保存企业 + EnterpriseInfo enterpriseInfo = enterpriseInfoService.getOne(new LambdaQueryWrapper() + .eq(EnterpriseInfo::getId, enterpriseId).last(Cts.IGNORE_DATA_SCOPE_CONDITION)); + String orgIndexCode = StringsUtils.getUniqueEnterpriseId(enterpriseInfo.getId(), project.getProjectSn()); + JSONArray orgList = getOrgList(project, orgIndexCode, project.getProjectSn()); + if (CollUtil.isEmpty(orgList)) { + RLock lock = null; + try { + String lockKey = "isc_org_enterprise_add:" + enterpriseInfo.getId(); + lock = redissonClient.getLock(lockKey); + lock.tryLock(100L, TimeUnit.SECONDS); + orgList = getOrgList(project, orgIndexCode, project.getProjectSn()); + if (CollUtil.isEmpty(orgList)) { + enterpriseInfo.setProjectSn(project.getProjectSn()); + this.addEnterpriseInfoForHikvision(enterpriseInfo); + } + } catch (Exception e) { + log.error("", e); + } finally { + if (lock != null) { + lock.unlock(); + } + } + } + } + /** * 删除组织 * diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ProjectFileAuthController.java b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ProjectFileAuthController.java index 32562b4d3..01aec680d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ProjectFileAuthController.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ProjectFileAuthController.java @@ -1,6 +1,9 @@ package com.zhgd.xmgl.modules.baotou.controller; -import com.alibaba.fastjson.JSONObject; +import com.gexin.fastjson.JSON; +import com.gexin.fastjson.TypeReference; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.zhgd.annotation.OperLog; import com.zhgd.xmgl.modules.baotou.entity.ConstructionPlanLedgerSet; import io.swagger.annotations.Api; @@ -10,6 +13,7 @@ import io.swagger.annotations.ApiImplicitParams; import java.io.Serializable; import java.util.HashMap; + import springfox.documentation.annotations.ApiIgnore; import java.util.Arrays; import java.util.List; @@ -43,10 +47,9 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; -import com.alibaba.fastjson.JSON; - /** +/** * @Title: Controller * @Description: 项目文件档案权限 * @author: pds @@ -136,14 +139,28 @@ public class ProjectFileAuthController { @ApiImplicitParam(name = "id", value = "项目文件档案权限ID", paramType = "query", required = true, dataType = "Integer") @GetMapping(value = "/queryById") public Result queryById(@RequestParam(name="id",required=true) String id) { - return Result.success(projectFileAuthService.queryById(id)); - } + return Result.success(projectFileAuthService.queryById(id)); + } - @OperLog(operModul = "项目文件档案权限管理", operType = "保存", operDesc = "保存项目文件档案权限信息") - @ApiOperation(value = "保存项目文件档案权限信息", notes = "保存项目文件档案权限信息" , httpMethod="POST") - @PostMapping(value = "/saveList") - public Result saveList(@RequestBody List auths) { - projectFileAuthService.saveList(auths); - return Result.ok(); - } + @OperLog(operModul = "项目文件档案权限管理", operType = "保存", operDesc = "保存项目文件档案权限信息") + @ApiOperation(value = "保存项目文件档案权限信息", notes = "保存项目文件档案权限信息", httpMethod = "POST") + @PostMapping(value = "/saveList") + public Result saveList(@RequestBody List auths) { + projectFileAuthService.saveList(auths); + return Result.ok(); + } + + @OperLog(operModul = "项目文件档案权限管理", operType = "保存", operDesc = "保存项目文件档案权限信息v2") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "fileId", value = "项目文件ID", paramType = "body", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "auths", value = "权限对象列表", paramType = "body", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "isUpdateChildAuth", value = "0只更新本文件夹权限1更新本文件夹和下面所有文件(夹)", paramType = "body", required = true, dataType = "Integer"), + }) + @ApiOperation(value = "保存项目文件档案权限信息v2", notes = "保存项目文件档案权限信息v2", httpMethod = "POST") + @PostMapping(value = "/saveListV2") + public Result saveListV2(@RequestBody Map param) { + projectFileAuthService.saveListV2(param); + return Result.ok(); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ConstructionDeclarationData.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ConstructionDeclarationData.java index 4967b3091..e49ed6a3a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ConstructionDeclarationData.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ConstructionDeclarationData.java @@ -46,14 +46,22 @@ public class ConstructionDeclarationData implements Serializable { */ @ApiModelProperty(value = "所属项目SN") private java.lang.String projectSn; - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private java.util.Date createDate; - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - private java.util.Date updateDate; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + private java.util.Date createDate; + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + private java.util.Date updateDate; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "资质有效期开始 yyyy-MM-dd") + private java.util.Date validDateBegin; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "资质有效期结束 yyyy-MM-dd") + private java.util.Date validDateEnd; } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ProjectHomeManage.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ProjectHomeManage.java index a91bdf026..a0a9873ea 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ProjectHomeManage.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ProjectHomeManage.java @@ -42,14 +42,25 @@ public class ProjectHomeManage implements Serializable { /**图标*/ @ApiModelProperty(value="图标") private java.lang.String icon ; - /**附件url或内容或链接*/ - @ApiModelProperty(value="附件url或内容或链接") - private java.lang.String fileUrl ; - /**创建时间*/ - @ApiModelProperty(value="创建时间") - private java.util.Date createTime ; - /**更新时间*/ - @ApiModelProperty(value="更新时间") - private java.util.Date updateTime ; - private java.lang.Integer sort ; + /** + * 附件url或内容或链接 + */ + @ApiModelProperty(value = "附件url或内容或链接") + private java.lang.String fileUrl; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + private java.util.Date createTime; + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + private java.util.Date updateTime; + private java.lang.Integer sort; + /** + * 1展示栏目1 2展示栏目2 3管理制度 + */ + @ApiModelProperty(value = "1展示栏目1 2展示栏目2 3管理制度") + private java.lang.Integer type; } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ProjectHomeShow.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ProjectHomeShow.java index d0e553359..1a96bb421 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ProjectHomeShow.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ProjectHomeShow.java @@ -44,14 +44,32 @@ public class ProjectHomeShow implements Serializable { private java.lang.Integer whichModule ; /**1展示栏目12展示栏目2*/ @ApiModelProperty(value="1展示栏目12展示栏目2") - private java.lang.Integer type ; - /**所属项目SN*/ - @ApiModelProperty(value="所属项目SN") - private java.lang.String projectSn ; - /**创建时间*/ - @ApiModelProperty(value="创建时间") - private java.util.Date createDate ; - /**更新时间*/ - @ApiModelProperty(value="更新时间") - private java.util.Date updateDate ; + private java.lang.Integer type; + /** + * 所属项目SN + */ + @ApiModelProperty(value = "所属项目SN") + private java.lang.String projectSn; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + private java.util.Date createDate; + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + private java.util.Date updateDate; + /** + * 1附件2内容3链接 + */ + @ApiModelProperty(value = "1附件2内容3链接") + private java.lang.Integer contentType; + + /** + * 附件url或内容或链接 + */ + @ApiModelProperty(value = "附件url或内容或链接") + private java.lang.String fileUrl; + } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/IProjectFileAuthService.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/IProjectFileAuthService.java index 526fc4ee0..b2543540f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/IProjectFileAuthService.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/IProjectFileAuthService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @Description: 项目文件档案权限 @@ -43,12 +44,16 @@ public interface IProjectFileAuthService extends IService { * @return */ void delete(String id); + /** * 根据id查询项目文件档案权限信息 + * * @param id 项目文件档案权限的id * @return */ ProjectFileAuth queryById(String id); void saveList(List auths); + + void saveListV2(Map param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ProjectFileAuthServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ProjectFileAuthServiceImpl.java index 7538f156d..34c0eda5f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ProjectFileAuthServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ProjectFileAuthServiceImpl.java @@ -1,43 +1,51 @@ package com.zhgd.xmgl.modules.baotou.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.zhgd.jeecg.common.execption.OpenAlertException; -import com.zhgd.xmgl.modules.baotou.entity.ProjectFileAuth; -import com.zhgd.xmgl.modules.baotou.entity.ProjectFileAuth; -import com.zhgd.xmgl.modules.baotou.mapper.ProjectFileAuthMapper; -import com.zhgd.xmgl.modules.baotou.service.IProjectFileAuthService; -import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.zhgd.jeecg.common.system.query.QueryGenerator; -import com.zhgd.xmgl.util.PageUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - +import com.gexin.fastjson.JSON; +import com.gexin.fastjson.TypeReference; +import com.zhgd.jeecg.common.execption.OpenAlertException; +import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.modules.baotou.entity.ProjectFileAuth; +import com.zhgd.xmgl.modules.baotou.mapper.ProjectFileAuthMapper; +import com.zhgd.xmgl.modules.baotou.service.IProjectFileAuthService; +import com.zhgd.xmgl.modules.file.entity.ProjectFile; +import com.zhgd.xmgl.modules.project.service.IProjectFileService; +import com.zhgd.xmgl.util.PageUtil; import com.zhgd.xmgl.util.RefUtil; -import org.springframework.transaction.annotation.Transactional; +import org.apache.commons.collections.MapUtils; +import org.apache.commons.collections.list.PredicatedList; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; /** * @Description: 项目文件档案权限 * @author: pds - * @date: 2024-08-26 + * @date: 2024-08-26 * @version: V1.0 */ @Service public class ProjectFileAuthServiceImpl extends ServiceImpl implements IProjectFileAuthService { @Autowired private ProjectFileAuthMapper projectFileAuthMapper; + @Lazy + @Autowired + private IProjectFileService projectFileService; + @Override public IPage queryPageList(HashMap param) { QueryWrapper queryWrapper = this.getQueryWrapper(param); Page page = PageUtil.getPage(param); - IPage pageList = baseMapper.queryList(page, queryWrapper,param); + IPage pageList = baseMapper.queryList(page, queryWrapper, param); pageList.setRecords(this.dealList(pageList.getRecords())); return pageList; } @@ -67,7 +75,7 @@ public class ProjectFileAuthServiceImpl extends ServiceImpl param) { + //fileId + //auths + //isUpdateChildAuth + String projectSn = MapUtils.getString(param, "projectSn"); + String fileId = MapUtils.getString(param, "fileId"); + ProjectFile file = projectFileService.getById(fileId); + //所有下级保存相同权限 + List auths = JSON.parseObject(JSON.toJSONString(param.get("auths")), new TypeReference>() { + }); + if (CollUtil.isNotEmpty(auths)) { + List userIds = auths.stream().map(ProjectFileAuth::getUserId).collect(Collectors.toList()); + baseMapper.delete(new LambdaQueryWrapper() + .eq(ProjectFileAuth::getProjectFileId, fileId) + .in(ProjectFileAuth::getUserId, userIds) + ); + this.saveBatch(auths); + //更新下面文件夹权限 + if (file.getIsDir() == 1) { + List childAuths = new ArrayList<>(); + if (Objects.equals(MapUtils.getInteger(param, "isUpdateChildAuth"), 1)) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(ProjectFile::getProjectSn, projectSn) + .likeRight(ProjectFile::getFilePath, file.getFilePath() + file.getFileName() + "/"); + List children = projectFileService.list(queryWrapper); + if (CollUtil.isNotEmpty(children)) { + List fileIds = children.stream().map(ProjectFile::getFileId).collect(Collectors.toList()); + baseMapper.delete(new LambdaQueryWrapper() + .in(ProjectFileAuth::getProjectFileId, fileIds) + .in(ProjectFileAuth::getUserId, userIds) + ); + children.forEach(o -> { + for (ProjectFileAuth auth : auths) { + ProjectFileAuth auth1 = ObjectUtil.cloneByStream(auth); + auth1.setId(null); + auth1.setProjectFileId(o.getFileId()); + childAuths.add(auth1); + } + }); + } + if (CollUtil.isNotEmpty(childAuths)) { + this.saveBatch(childAuths); + } + } + } + } + } + } diff --git a/src/main/java/com/zhgd/xmgl/modules/file/service/impl/FiletransferServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/file/service/impl/FiletransferServiceImpl.java index e81dbe442..78905cf72 100644 --- a/src/main/java/com/zhgd/xmgl/modules/file/service/impl/FiletransferServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/file/service/impl/FiletransferServiceImpl.java @@ -7,25 +7,26 @@ import com.zhgd.jeecg.upload.domain.UploadFile; import com.zhgd.jeecg.upload.factory.ChunkUploaderFactory; import com.zhgd.jeecg.upload.util.DateUtil; import com.zhgd.xmgl.base.UploadFileDTO; -import com.zhgd.xmgl.modules.baotou.entity.ProjectFileAuth; import com.zhgd.xmgl.modules.baotou.mapper.ProjectFileAuthMapper; -import com.zhgd.xmgl.modules.basicdata.enums.SystemUserAccountTypeEnum; +import com.zhgd.xmgl.modules.baotou.service.IProjectFileAuthService; import com.zhgd.xmgl.modules.file.entity.ProjectFile; import com.zhgd.xmgl.modules.file.mapper.ProjectFileMapper; import com.zhgd.xmgl.modules.file.service.IFiletransferService; -import com.zhgd.xmgl.security.util.SecurityUtils; +import com.zhgd.xmgl.modules.project.service.IProjectFileService; import com.zhgd.xmgl.util.MinioUtils; import com.zhgd.xmgl.util.PathUtil; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.util.List; -import java.util.Objects; @Service +@Transactional(rollbackFor = Exception.class) public class FiletransferServiceImpl implements IFiletransferService { // @Value("${basePath}") // private String basePath; @@ -35,6 +36,12 @@ public class FiletransferServiceImpl implements IFiletransferService { private ProjectFileMapper projectFileMapper; @Autowired private ProjectFileAuthMapper projectFileAuthMapper; + @Lazy + @Autowired + private IProjectFileService projectFileService; + @Lazy + @Autowired + private IProjectFileAuthService projectFileAuthService; @Override public void uploadFile(HttpServletRequest request, UploadFileDTO uploadFileDTO) { @@ -62,29 +69,13 @@ public class FiletransferServiceImpl implements IFiletransferService { userFile.setFileSize(uploadFile.getFileSize() + ""); userFile.setUploadTime(DateUtil.getCurrentTime()); projectFileMapper.insert(userFile); - if (SecurityUtils.getUser() != null) { - if (Objects.equals(SystemUserAccountTypeEnum.PROJECT_SUB_ACCOUNT.getValue(), SecurityUtils.getUser().getAccountType())) { - Long userId = SecurityUtils.getUser().getUserId(); - ProjectFileAuth auth = new ProjectFileAuth(); - auth.setIsUpload(1); - auth.setIsCreateNewFolder(1); - auth.setIsPreview(1); - auth.setIsSetPermission(1); - auth.setIsDelete(1); - auth.setIsMove(1); - auth.setIsRename(1); - auth.setIsDownload(1); - auth.setIsView(1); - auth.setProjectFileId(userFile.getFileId()); - auth.setUserId(userId); - auth.setProjectSn(uploadFileDTO.getProjectSn()); - projectFileAuthMapper.insert(auth); - } - } + + projectFileService.setAuth(userFile); } } } + private void checkParams(UploadFileDTO uploadFileDTO, UploadFile uploadFile) { List projectFiles = projectFileMapper.selectList(new LambdaQueryWrapper() .eq(ProjectFile::getProjectSn, uploadFileDTO.getProjectSn()) diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectFileService.java b/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectFileService.java index 19888bbfa..9c4724367 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectFileService.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectFileService.java @@ -10,18 +10,22 @@ import java.util.List; /** * @Description: 项目文件档案 * @author: pds - * @date: 2021-01-11 + * @date: 2021-01-11 * @version: V1.0 */ public interface IProjectFileService extends IService { /** * 添加项目文件档案信息 + * * @param projectFile */ void addProjectFile(ProjectFile projectFile); + void setAuth(ProjectFile userFile); + /** * 文件重命名 + * * @param projectFile */ void renamefile(ProjectFile projectFile); diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectFileServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectFileServiceImpl.java index aef54c9f5..14b1acadf 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectFileServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectFileServiceImpl.java @@ -1,6 +1,8 @@ package com.zhgd.xmgl.modules.project.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.api.vo.Result; @@ -8,6 +10,7 @@ import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.system.query.QueryGenerator; import com.zhgd.xmgl.modules.baotou.entity.ProjectFileAuth; import com.zhgd.xmgl.modules.baotou.mapper.ProjectFileAuthMapper; +import com.zhgd.xmgl.modules.baotou.service.IProjectFileAuthService; import com.zhgd.xmgl.modules.basicdata.enums.SystemUserAccountTypeEnum; import com.zhgd.xmgl.modules.file.entity.ProjectFile; import com.zhgd.xmgl.modules.file.mapper.ProjectFileMapper; @@ -17,15 +20,14 @@ import com.zhgd.xmgl.util.MessageUtil; import com.zhgd.xmgl.util.RefUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; /** * @Description: 项目文件档案 @@ -40,6 +42,9 @@ public class ProjectFileServiceImpl extends ServiceImpl auths = new LinkedList<>(); + if (!userFile.getFilePath().equals("/")) { + //上传文件分配上级文件夹的权限 + String[] splitPath = userFile.getFilePath().split("/"); + ProjectFile parent = this.getOne(new LambdaQueryWrapper() + .eq(ProjectFile::getFilePath, StringUtils.substringBeforeLast(StringUtils.substringBeforeLast(userFile.getFilePath(), "/"), "/") + "/") + .eq(ProjectFile::getFileName, splitPath[splitPath.length - 1]) + .eq(ProjectFile::getProjectSn, userFile.getProjectSn()) + .eq(ProjectFile::getIsDir, 1) + ); + if (parent != null) { + List parentAuths = projectFileAuthService.list(new LambdaQueryWrapper() + .eq(ProjectFileAuth::getProjectFileId, parent.getFileId())); + parentAuths.forEach(o -> { + o.setId(null); + o.setProjectFileId(userFile.getFileId()); + }); + auths.addAll(parentAuths); + } + } else if (SecurityUtils.getUser() != null) { + //上传顶级的文件 if (Objects.equals(SystemUserAccountTypeEnum.PROJECT_SUB_ACCOUNT.getValue(), SecurityUtils.getUser().getAccountType())) { Long userId = SecurityUtils.getUser().getUserId(); ProjectFileAuth auth = new ProjectFileAuth(); @@ -73,12 +108,15 @@ public class ProjectFileServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(ProjectFile::getProjectSn, oldProjectFile.getProjectSn()) .likeRight(ProjectFile::getFilePath, filePath); + List fileIds = projectFileMapper.selectList(queryWrapper).stream().map(ProjectFile::getFileId).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(fileIds)) { + projectFileAuthService.remove(new LambdaQueryWrapper() + .in(ProjectFileAuth::getProjectFileId, fileIds)); + } projectFileMapper.delete(queryWrapper); - projectFileMapper.deleteById(projectFile.getFileId()); + projectFileMapper.deleteById(fileId); } else { - projectFileMapper.deleteById(projectFile.getFileId()); + projectFileAuthService.remove(new LambdaQueryWrapper() + .eq(ProjectFileAuth::getProjectFileId, fileId)); + projectFileMapper.deleteById(fileId); } } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index 177b5245c..d3db4ccd9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -647,9 +647,13 @@ public class WorkerInfoServiceImpl extends ServiceImpl() + .set(WorkerInfo::getProjectGroup, workerInfo.getProjectGroup()) + .eq(WorkerInfo::getId, workerInfo.getId()) + ); workerInfoMapper.updateById(workerInfo); workerAdmissionDetailService.update(new LambdaUpdateWrapper() + .set(WorkerAdmissionDetail::getProjectGroup, workerInfo.getProjectGroup()) .set(WorkerAdmissionDetail::getIdCard, workerInfo.getIdCard()) .set(WorkerAdmissionDetail::getWorkerName, workerInfo.getWorkerName()) .eq(WorkerAdmissionDetail::getId, workerInfo.getWorkerAdmissionDetailId())