Merge branch 'test' of https://git.will-way.cn/zgty/zt-qms into test

This commit is contained in:
2025-11-07 14:27:12 +08:00
13 changed files with 199 additions and 9 deletions

View File

@@ -97,8 +97,7 @@ public class ConfigPermissionController implements BusinessControllerMarker {
@Operation(summary = "导出权限配置,通用权限配置 Excel")
@PreAuthorize("@ss.hasPermission('qms:config-permission:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportConfigPermissionExcel(@Valid ConfigPermissionPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
public void exportConfigPermissionExcel(@Valid ConfigPermissionPageReqVO pageReqVO, HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ConfigPermissionDO> list = configPermissionService.getConfigPermissionPage(pageReqVO).getList();
// 导出 Excel

View File

@@ -21,6 +21,9 @@ public class ConfigPermissionPageReqVO extends PageParam {
@Schema(description = "关联id", example = "20071")
private Long targetId;
@Schema(description = "关联name", example = "1")
private String targetName;
@Schema(description = "关联数据类型", example = "1")
private String targetType;

View File

@@ -27,6 +27,10 @@ public class ConfigPermissionRespVO {
@ExcelProperty("关联id")
private Long targetId;
@Schema(description = "关联name", example = "1")
@ExcelProperty("关联name")
private String targetName;
@Schema(description = "关联数据类型", example = "1")
@ExcelProperty("关联数据类型")
private String targetType;

View File

@@ -19,6 +19,9 @@ public class ConfigPermissionSaveReqVO {
@Schema(description = "关联id", example = "20071")
private Long targetId;
@Schema(description = "关联name", example = "1")
private String targetName;
@Schema(description = "关联数据类型", example = "1")
private String targetType;

View File

@@ -43,6 +43,9 @@ public class ConfigPermissionDO extends BusinessBaseDO {
*/
@TableField("TGT_ID")
private Long targetId;
@TableField("TGT_NAME")
private String targetName;
/**
* 关联数据类型
*/

View File

@@ -16,6 +16,19 @@ import com.zt.plat.framework.common.pojo.PageResult;
*/
public interface ConfigPermissionService {
void savePermissionListWithAutoDelete(List<ConfigPermissionSaveReqVO> list);
void savePermission(List<ConfigPermissionDO> insertList, List<ConfigPermissionDO> updateList, List<Long> deleteList);
void insertPermission(List<ConfigPermissionDO> insertList);
void updatePermission(List<ConfigPermissionDO> updateList);
void deletePermission(List<Long> deleteList);
List<ConfigPermissionDO> getPermissionList(Long sourceId, String sourceType, String permissionType);
/**
* 创建权限配置,通用权限配置
*

View File

@@ -1,11 +1,14 @@
package com.zt.plat.module.qms.business.config.service;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionPageReqVO;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionRespVO;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionSaveReqVO;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated;
import java.util.*;
@@ -17,6 +20,7 @@ import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.module.qms.business.config.dal.mapper.ConfigPermissionMapper;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0;
import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList;
import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*;
@@ -32,6 +36,106 @@ public class ConfigPermissionServiceImpl implements ConfigPermissionService {
@Resource
private ConfigPermissionMapper configPermissionMapper;
//保存权限配置,自动判断删除
@Override
@Transactional(rollbackFor = Exception.class)
public void savePermissionListWithAutoDelete(List<ConfigPermissionSaveReqVO> list) {
//检查数据避免误处理按sourceId、sourceType检查
List<Long> sourceIdList = list.stream().map(ConfigPermissionSaveReqVO::getSourceId).distinct().toList();
List<String> sourceTypeList = list.stream().map(ConfigPermissionSaveReqVO::getSourceType).distinct().toList();
List<String> permissionTypeList = list.stream().map(ConfigPermissionSaveReqVO::getPermissionType).distinct().toList();
if (sourceIdList.size() > 1 || sourceTypeList.size() > 1 || permissionTypeList.size() > 1) {
throw exception0(CONFIG_PERMISSION_DUPLICATE.getCode(), "权限保存失败,提交的权限数据存在不一致的情况,请刷新后重试,或联系管理员处理");
}
LambdaQueryWrapper<ConfigPermissionDO> queryWrapper = new LambdaQueryWrapper<>();
ConfigPermissionSaveReqVO queryDO = list.get(0);
queryWrapper.eq(ConfigPermissionDO::getSourceId, queryDO.getSourceId())
.eq(ConfigPermissionDO::getSourceType, queryDO.getSourceType());
if(!ObjectUtils.isEmpty(queryDO.getPermissionType()))
queryWrapper.eq(ConfigPermissionDO::getPermissionType, queryDO.getPermissionType());
List<ConfigPermissionDO> oldList = configPermissionMapper.selectList(queryWrapper);
List<ConfigPermissionSaveReqVO> insertList = new ArrayList<>();
List<ConfigPermissionSaveReqVO> updateList = new ArrayList<>();
List<Long> deleteIdList = new ArrayList<>();
for (ConfigPermissionSaveReqVO newObj : list) {
boolean exist = false;
for (ConfigPermissionDO old : oldList) {
if (old.getId().equals(newObj.getId())) {
exist = true;
if (!old.equals(newObj)) {
updateList.add(newObj);
}
break;
}
}
if (!exist) {
insertList.add(newObj);
}
}
for (ConfigPermissionDO old : oldList) {
boolean exist = false;
for (ConfigPermissionSaveReqVO newObj : list) {
if (old.getId().equals(newObj.getId())) {
exist = true;
break;
}
}
if (!exist) {
deleteIdList.add(old.getId());
}
}
List<ConfigPermissionDO> list1 = new ArrayList<>();
if(!insertList.isEmpty()){
list1 = BeanUtils.toBean(insertList, ConfigPermissionDO.class);
configPermissionMapper.insertBatch(list1);
}
if(!updateList.isEmpty()){
list1 = BeanUtils.toBean(updateList, ConfigPermissionDO.class);
configPermissionMapper.updateBatch(list1);
}
if(!deleteIdList.isEmpty())
configPermissionMapper.deleteByIds(deleteIdList);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void savePermission(List<ConfigPermissionDO> insertList, List<ConfigPermissionDO> updateList, List<Long> deleteList) {
this.insertPermission(insertList);
this.updatePermission(updateList);
this.deletePermission(deleteList);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void insertPermission(List<ConfigPermissionDO> insertList) {
configPermissionMapper.insertBatch(insertList);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updatePermission(List<ConfigPermissionDO> updateList) {
configPermissionMapper.updateBatch(updateList);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deletePermission(List<Long> deleteList) {
configPermissionMapper.deleteByIds(deleteList);
}
@Override
public List<ConfigPermissionDO> getPermissionList(Long sourceId, String sourceType, String permissionType) {
LambdaQueryWrapper<ConfigPermissionDO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ConfigPermissionDO::getSourceId, sourceId)
.eq(ConfigPermissionDO::getSourceType, sourceType);
if(!ObjectUtils.isEmpty(permissionType))
queryWrapper.eq(ConfigPermissionDO::getPermissionType, permissionType);
return configPermissionMapper.selectList(queryWrapper);
}
@Override
public ConfigPermissionRespVO createConfigPermission(ConfigPermissionSaveReqVO createReqVO) {
// 插入

View File

@@ -8,9 +8,13 @@ import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO;
import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.excel.core.util.ExcelUtils;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionRespVO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigPermissionDO;
import com.zt.plat.module.qms.business.config.service.ConfigPermissionService;
import com.zt.plat.module.qms.business.reportdoc.controller.vo.*;
import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentTypeDO;
import com.zt.plat.module.qms.business.reportdoc.service.ReportDocumentTypeService;
import com.zt.plat.module.qms.enums.QmsPermissionConstant;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -34,8 +38,8 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
public class ReportDocumentTypeController implements BusinessControllerMarker {
@Resource
private ReportDocumentTypeService reportDocumentTypeService;
@Resource private ReportDocumentTypeService reportDocumentTypeService;
@Resource private ConfigPermissionService configPermissionService;
@PostMapping("/save")
@Operation(summary = "更新报告类型配置")
@@ -67,8 +71,13 @@ public class ReportDocumentTypeController implements BusinessControllerMarker {
@Parameter(name = "id", description = "编号", required = true, example = "1024")
//@PreAuthorize("@ss.hasPermission('qms:report-document-type:query')")
public CommonResult<ReportDocumentTypeRespVO> getReportDocumentType(@RequestParam("id") Long id) {
ReportDocumentTypeDO reportDocumentType = reportDocumentTypeService.getReportDocumentType(id);
return success(BeanUtils.toBean(reportDocumentType, ReportDocumentTypeRespVO.class));
ReportDocumentTypeDO reportDocumentTypeDO = reportDocumentTypeService.getReportDocumentType(id);
Long mainId = reportDocumentTypeDO.getMainId();
List<ConfigPermissionDO> permissionList = configPermissionService.getPermissionList(mainId, QmsPermissionConstant.REPORT_DOCUMENT_TYPE_START, "");
List<ConfigPermissionRespVO> permissionRespVOList= BeanUtils.toBean(permissionList, ConfigPermissionRespVO.class);
ReportDocumentTypeRespVO reportDocumentTypeRespVO = BeanUtils.toBean(reportDocumentTypeDO, ReportDocumentTypeRespVO.class);
reportDocumentTypeRespVO.setPermissionList(permissionRespVOList);
return success(reportDocumentTypeRespVO);
}
@GetMapping("/page")

View File

@@ -2,11 +2,14 @@ package com.zt.plat.module.qms.business.reportdoc.controller.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionRespVO;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionSaveReqVO;
import com.zt.plat.module.qms.core.aspect.annotation.Dict;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 报告类型配置 Response VO")
@Data
@@ -89,4 +92,8 @@ public class ReportDocumentTypeRespVO {
@Schema(description = "前端组件(移动端)")
@ExcelProperty("前端组件(移动端)")
private String pageComponentMobile;
//===========扩展字段=======================
@Schema(description = "权限列表")
List<ConfigPermissionRespVO> permissionList;
}

View File

@@ -1,11 +1,14 @@
package com.zt.plat.module.qms.business.reportdoc.controller.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionSaveReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 报告类型配置新增/修改 Request VO")
@Data
public class ReportDocumentTypeSaveReqVO {
@@ -72,4 +75,9 @@ public class ReportDocumentTypeSaveReqVO {
@Schema(description = "前端组件(移动端)")
private String pageComponentMobile;
//===========扩展字段=======================
@Schema(description = "权限列表")
List<ConfigPermissionSaveReqVO> permissionList;
}

View File

@@ -4,12 +4,15 @@ import cn.hutool.core.collection.CollUtil;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionSaveReqVO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigPermissionDO;
import com.zt.plat.module.qms.business.config.service.ConfigPermissionService;
import com.zt.plat.module.qms.business.reportdoc.controller.vo.*;
import com.zt.plat.module.qms.business.reportdoc.dal.mapper.ReportDocumentTypeMapper;
import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentTypeDO;
import com.zt.plat.module.qms.common.data.controller.vo.DataCollectionFieldSaveReqVO;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.util.List;
@@ -26,12 +29,17 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.REPORT_DOCUMENT_TY
@Validated
public class ReportDocumentTypeServiceImpl implements ReportDocumentTypeService {
@Resource
private ReportDocumentTypeMapper reportDocumentTypeMapper;
@Resource private ReportDocumentTypeMapper reportDocumentTypeMapper;
@Resource private ConfigPermissionService configPermissionService;
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult<String> save(ReportDocumentTypeSaveReqVO reqVo) {
String newVersionFlag = reqVo.getNewVersionFlag();
//处理权限
List<ConfigPermissionSaveReqVO> primissionList = reqVo.getPermissionList();
configPermissionService.savePermissionListWithAutoDelete(primissionList);
if("1".equals(newVersionFlag))
return saveWithNewVersion(reqVo);
if(reqVo.getId() == null){
@@ -48,6 +56,7 @@ public class ReportDocumentTypeServiceImpl implements ReportDocumentTypeService
}
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult<String> saveWithNewVersion(ReportDocumentTypeSaveReqVO reqV) {
ReportDocumentTypeDO documentTypeDO = BeanUtils.toBean(reqV, ReportDocumentTypeDO.class);
documentTypeDO.setCurrentFlag(0);
@@ -120,6 +129,10 @@ public class ReportDocumentTypeServiceImpl implements ReportDocumentTypeService
@Override
public PageResult<ReportDocumentTypeDO> getReportDocumentTypePage(ReportDocumentTypePageReqVO pageReqVO) {
//查询权限
return reportDocumentTypeMapper.selectPage(pageReqVO);
}