包头bug修改

This commit is contained in:
guoshengxiong 2025-03-10 21:11:04 +08:00
parent fbc32c5693
commit 55b80d5c31
11 changed files with 331 additions and 127 deletions

View File

@ -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<DepartmentInfo>()
.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<EnterpriseInfo>()
.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();
}
}
}
}
/**
* 删除组织
*

View File

@ -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<ProjectFileAuth> 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<ProjectFileAuth> auths) {
projectFileAuthService.saveList(auths);
return Result.ok();
}
@OperLog(operModul = "项目文件档案权限管理", operType = "保存", operDesc = "保存项目文件档案权限信息")
@ApiOperation(value = "保存项目文件档案权限信息", notes = "保存项目文件档案权限信息", httpMethod = "POST")
@PostMapping(value = "/saveList")
public Result saveList(@RequestBody List<ProjectFileAuth> 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<String, Object> param) {
projectFileAuthService.saveListV2(param);
return Result.ok();
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<ProjectFileAuth> {
* @return
*/
void delete(String id);
/**
* 根据id查询项目文件档案权限信息
*
* @param id 项目文件档案权限的id
* @return
*/
ProjectFileAuth queryById(String id);
void saveList(List<ProjectFileAuth> auths);
void saveListV2(Map<String, Object> param);
}

View File

@ -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<ProjectFileAuthMapper, ProjectFileAuth> implements IProjectFileAuthService {
@Autowired
private ProjectFileAuthMapper projectFileAuthMapper;
@Lazy
@Autowired
private IProjectFileService projectFileService;
@Override
public IPage<ProjectFileAuth> queryPageList(HashMap<String, Object> param) {
QueryWrapper<ProjectFileAuth> queryWrapper = this.getQueryWrapper(param);
Page<ProjectFileAuth> page = PageUtil.getPage(param);
IPage<ProjectFileAuth> pageList = baseMapper.queryList(page, queryWrapper,param);
IPage<ProjectFileAuth> pageList = baseMapper.queryList(page, queryWrapper, param);
pageList.setRecords(this.dealList(pageList.getRecords()));
return pageList;
}
@ -67,7 +75,7 @@ public class ProjectFileAuthServiceImpl extends ServiceImpl<ProjectFileAuthMappe
@Override
public void edit(ProjectFileAuth projectFileAuth) {
ProjectFileAuth oldProjectFileAuth = baseMapper.selectById(projectFileAuth.getId());
if(oldProjectFileAuth==null) {
if (oldProjectFileAuth == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.updateById(projectFileAuth);
@ -76,7 +84,7 @@ public class ProjectFileAuthServiceImpl extends ServiceImpl<ProjectFileAuthMappe
@Override
public void delete(String id) {
ProjectFileAuth projectFileAuth = baseMapper.selectById(id);
if(projectFileAuth==null) {
if (projectFileAuth == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.deleteById(id);
@ -116,4 +124,53 @@ public class ProjectFileAuthServiceImpl extends ServiceImpl<ProjectFileAuthMappe
}
}
@Override
public void saveListV2(Map<String, Object> param) {
//fileId
//auths
//isUpdateChildAuth
String projectSn = MapUtils.getString(param, "projectSn");
String fileId = MapUtils.getString(param, "fileId");
ProjectFile file = projectFileService.getById(fileId);
//所有下级保存相同权限
List<ProjectFileAuth> auths = JSON.parseObject(JSON.toJSONString(param.get("auths")), new TypeReference<List<ProjectFileAuth>>() {
});
if (CollUtil.isNotEmpty(auths)) {
List<Long> userIds = auths.stream().map(ProjectFileAuth::getUserId).collect(Collectors.toList());
baseMapper.delete(new LambdaQueryWrapper<ProjectFileAuth>()
.eq(ProjectFileAuth::getProjectFileId, fileId)
.in(ProjectFileAuth::getUserId, userIds)
);
this.saveBatch(auths);
//更新下面文件夹权限
if (file.getIsDir() == 1) {
List<ProjectFileAuth> childAuths = new ArrayList<>();
if (Objects.equals(MapUtils.getInteger(param, "isUpdateChildAuth"), 1)) {
QueryWrapper<ProjectFile> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ProjectFile::getProjectSn, projectSn)
.likeRight(ProjectFile::getFilePath, file.getFilePath() + file.getFileName() + "/");
List<ProjectFile> children = projectFileService.list(queryWrapper);
if (CollUtil.isNotEmpty(children)) {
List<Long> fileIds = children.stream().map(ProjectFile::getFileId).collect(Collectors.toList());
baseMapper.delete(new LambdaQueryWrapper<ProjectFileAuth>()
.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);
}
}
}
}
}
}

View File

@ -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<ProjectFile> projectFiles = projectFileMapper.selectList(new LambdaQueryWrapper<ProjectFile>()
.eq(ProjectFile::getProjectSn, uploadFileDTO.getProjectSn())

View File

@ -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<ProjectFile> {
/**
* 添加项目文件档案信息
*
* @param projectFile
*/
void addProjectFile(ProjectFile projectFile);
void setAuth(ProjectFile userFile);
/**
* 文件重命名
*
* @param projectFile
*/
void renamefile(ProjectFile projectFile);

View File

@ -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<ProjectFileMapper, Proje
private ProjectFileMapper projectFileMapper;
@Autowired
private ProjectFileAuthMapper projectFileAuthMapper;
@Lazy
@Autowired
private IProjectFileAuthService projectFileAuthService;
@Override
public void addProjectFile(ProjectFile projectFile) {
@ -60,7 +65,37 @@ public class ProjectFileServiceImpl extends ServiceImpl<ProjectFileMapper, Proje
projectFile.setUploadTime(df.format(new Date()));
projectFileMapper.insert(projectFile);
if (SecurityUtils.getUser() != null) {
setAuth(projectFile);
}
/**
* 上传文件设置相关权限
*
* @param userFile
*/
@Override
public void setAuth(ProjectFile userFile) {
List<ProjectFileAuth> auths = new LinkedList<>();
if (!userFile.getFilePath().equals("/")) {
//上传文件分配上级文件夹的权限
String[] splitPath = userFile.getFilePath().split("/");
ProjectFile parent = this.getOne(new LambdaQueryWrapper<ProjectFile>()
.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<ProjectFileAuth> parentAuths = projectFileAuthService.list(new LambdaQueryWrapper<ProjectFileAuth>()
.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<ProjectFileMapper, Proje
auth.setIsRename(1);
auth.setIsDownload(1);
auth.setIsView(1);
auth.setProjectFileId(projectFile.getFileId());
auth.setProjectFileId(userFile.getFileId());
auth.setUserId(userId);
auth.setProjectSn(projectFile.getProjectSn());
projectFileAuthMapper.insert(auth);
auth.setProjectSn(userFile.getProjectSn());
auths.add(auth);
}
}
if (CollUtil.isNotEmpty(auths)) {
projectFileAuthService.saveBatch(auths);
}
}
@Override
@ -125,16 +163,24 @@ public class ProjectFileServiceImpl extends ServiceImpl<ProjectFileMapper, Proje
@Override
public void deleteFile(ProjectFile projectFile) {
ProjectFile oldProjectFile = projectFileMapper.selectById(projectFile.getFileId());
Long fileId = projectFile.getFileId();
ProjectFile oldProjectFile = projectFileMapper.selectById(fileId);
if (1 == oldProjectFile.getIsDir()) {
String filePath = oldProjectFile.getFilePath() + oldProjectFile.getFileName() + "/";
QueryWrapper<ProjectFile> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ProjectFile::getProjectSn, oldProjectFile.getProjectSn())
.likeRight(ProjectFile::getFilePath, filePath);
List<Long> fileIds = projectFileMapper.selectList(queryWrapper).stream().map(ProjectFile::getFileId).collect(Collectors.toList());
if (CollUtil.isNotEmpty(fileIds)) {
projectFileAuthService.remove(new LambdaQueryWrapper<ProjectFileAuth>()
.in(ProjectFileAuth::getProjectFileId, fileIds));
}
projectFileMapper.delete(queryWrapper);
projectFileMapper.deleteById(projectFile.getFileId());
projectFileMapper.deleteById(fileId);
} else {
projectFileMapper.deleteById(projectFile.getFileId());
projectFileAuthService.remove(new LambdaQueryWrapper<ProjectFileAuth>()
.eq(ProjectFileAuth::getProjectFileId, fileId));
projectFileMapper.deleteById(fileId);
}
}

View File

@ -647,9 +647,13 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
}
}
}
workerInfoMapper.update(null, new LambdaUpdateWrapper<WorkerInfo>()
.set(WorkerInfo::getProjectGroup, workerInfo.getProjectGroup())
.eq(WorkerInfo::getId, workerInfo.getId())
);
workerInfoMapper.updateById(workerInfo);
workerAdmissionDetailService.update(new LambdaUpdateWrapper<WorkerAdmissionDetail>()
.set(WorkerAdmissionDetail::getProjectGroup, workerInfo.getProjectGroup())
.set(WorkerAdmissionDetail::getIdCard, workerInfo.getIdCard())
.set(WorkerAdmissionDetail::getWorkerName, workerInfo.getWorkerName())
.eq(WorkerAdmissionDetail::getId, workerInfo.getWorkerAdmissionDetailId())