浏览代码

1、用印印章管理接口

dongpo 1 年之前
父节点
当前提交
ecd6e3e783

+ 102 - 3
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/stamp/stampseal/OaStampSealController.java

@@ -11,6 +11,10 @@ import cn.iocoder.yudao.module.bpm.controller.admin.stamp.stampseal.vo.OaStampSe
 import cn.iocoder.yudao.module.bpm.controller.admin.stamp.stampseal.vo.OaStampSealSaveReqVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.stamp.stampseal.OaStampSealDO;
 import cn.iocoder.yudao.module.bpm.service.stamp.stampseal.OaStampSealService;
+import cn.iocoder.yudao.module.infra.api.file.FileApi;
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -22,6 +26,9 @@ import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -35,6 +42,12 @@ public class OaStampSealController {
     @Resource
     private OaStampSealService oaStampSealService;
 
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private FileApi fileApi;
+
     @PostMapping("/create")
     @Operation(summary = "创建用印印章信息")
     // @PreAuthorize("@ss.hasPermission('bpm:oa-stamp-seal:create')")
@@ -59,13 +72,55 @@ public class OaStampSealController {
         return success(true);
     }
 
+    @PutMapping("/open")
+    @Operation(summary = "打开用印印章信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-stamp-seal:open')")
+    public CommonResult<Boolean> openOaStampSeal(@RequestParam("id") Long id) {
+        oaStampSealService.openOaStampSeal(id);
+        return success(true);
+    }
+
+    @PutMapping("/close")
+    @Operation(summary = "关闭用印印章信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-stamp-seal:close')")
+    public CommonResult<Boolean> closeOaStampSeal(@RequestParam("id") Long id) {
+        oaStampSealService.closeOaStampSeal(id);
+        return success(true);
+    }
+
     @GetMapping("/get")
     @Operation(summary = "获得用印印章信息")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     // @PreAuthorize("@ss.hasPermission('bpm:oa-stamp-seal:query')")
     public CommonResult<OaStampSealRespVO> getOaStampSeal(@RequestParam("id") Long id) {
         OaStampSealDO oaStampSeal = oaStampSealService.getOaStampSeal(id);
-        return success(BeanUtils.toBean(oaStampSeal, OaStampSealRespVO.class));
+        OaStampSealRespVO oaStampSealRespVO = BeanUtils.toBean(oaStampSeal, OaStampSealRespVO.class);
+        // 状态描述
+        String status = oaStampSealRespVO.getStatus();
+        switch (status) {
+            case "1":
+                oaStampSealRespVO.setStatusDesc("打开");
+                break;
+            case "2":
+                oaStampSealRespVO.setStatusDesc("关闭");
+                break;
+            default:
+                oaStampSealRespVO.setStatusDesc("未知");
+                break;
+        }
+        // 创建者姓名
+        Long creator = oaStampSealRespVO.getCreator();
+        AdminUserRespDTO user = adminUserApi.getUser(creator);
+        if (user != null) {
+            oaStampSealRespVO.setCreateEmployeeName(user.getNickname());
+        }
+        // 附件列表
+        List<FileDTO> fileList = fileApi.getFileDTOListByBiz(oaStampSeal.getSealUuid());
+        oaStampSealRespVO.setFileList(fileList);
+
+        return success(oaStampSealRespVO);
     }
 
     @GetMapping("/page")
@@ -73,7 +128,30 @@ public class OaStampSealController {
     // @PreAuthorize("@ss.hasPermission('bpm:oa-stamp-seal:query')")
     public CommonResult<PageResult<OaStampSealRespVO>> getOaStampSealPage(@Valid OaStampSealPageReqVO pageReqVO) {
         PageResult<OaStampSealDO> pageResult = oaStampSealService.getOaStampSealPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, OaStampSealRespVO.class));
+        PageResult<OaStampSealRespVO> voPageResult = BeanUtils.toBean(pageResult, OaStampSealRespVO.class);
+
+        List<OaStampSealRespVO> voPageResultList = voPageResult.getList();
+        List<Long> creatorList = voPageResultList.stream().map(OaStampSealRespVO::getCreator).collect(Collectors.toList());
+        List<AdminUserRespDTO> adminUserList = adminUserApi.getUserList(creatorList);
+        Map<Long, AdminUserRespDTO> adminUserMap = adminUserList.stream().collect(Collectors.toMap(AdminUserRespDTO::getId, Function.identity()));
+
+        for (OaStampSealRespVO oaStampSealRespVO : voPageResultList) {
+            String status = oaStampSealRespVO.getStatus();
+            switch (status) {
+                case "1":
+                    oaStampSealRespVO.setStatusDesc("打开");
+                    break;
+                case "2":
+                    oaStampSealRespVO.setStatusDesc("关闭");
+                    break;
+                default:
+                    oaStampSealRespVO.setStatusDesc("未知");
+                    break;
+            }
+
+            oaStampSealRespVO.setCreateEmployeeName(adminUserMap.get(oaStampSealRespVO.getCreator()).getNickname());
+        }
+        return success(voPageResult);
     }
     @GetMapping("/list")
     @Operation(summary = "获得用印印章信息列表")
@@ -91,9 +169,30 @@ public class OaStampSealController {
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
         List<OaStampSealDO> list = oaStampSealService.getOaStampSealPage(pageReqVO).getList();
+        List<OaStampSealRespVO> stampSealRespVOList = BeanUtils.toBean(list, OaStampSealRespVO.class);
+
+        List<Long> creatorList = stampSealRespVOList.stream().map(OaStampSealRespVO::getCreator).collect(Collectors.toList());
+        List<AdminUserRespDTO> adminUserList = adminUserApi.getUserList(creatorList);
+        Map<Long, AdminUserRespDTO> adminUserMap = adminUserList.stream().collect(Collectors.toMap(AdminUserRespDTO::getId, Function.identity()));
+
+        for (OaStampSealRespVO oaStampSealRespVO : stampSealRespVOList) {
+            String status = oaStampSealRespVO.getStatus();
+            switch (status) {
+                case "1":
+                    oaStampSealRespVO.setStatusDesc("打开");
+                    break;
+                case "2":
+                    oaStampSealRespVO.setStatusDesc("关闭");
+                    break;
+                default:
+                    oaStampSealRespVO.setStatusDesc("未知");
+            }
+
+            oaStampSealRespVO.setCreateEmployeeName(adminUserMap.get(oaStampSealRespVO.getCreator()).getNickname());
+        }
         // 导出 Excel
         ExcelUtils.write(response, "用印印章信息.xls", "数据", OaStampSealRespVO.class,
-                        BeanUtils.toBean(list, OaStampSealRespVO.class));
+                stampSealRespVOList);
     }
 
 }

+ 0 - 17
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/stamp/stampseal/vo/OaStampSealPageReqVO.java

@@ -17,29 +17,12 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
 @ToString(callSuper = true)
 public class OaStampSealPageReqVO extends PageParam {
 
-    @Schema(description = "uuid", example = "2717")
-    private String sealUuid;
-
-    @Schema(description = "类型:1印章,目前只有印章", example = "2")
-    private String type;
-
     @Schema(description = "印章名称", example = "李四")
     private String sealName;
 
     @Schema(description = "状态,1打开 2关闭", example = "1")
     private String status;
 
-    @Schema(description = "有效期起")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private String[] startDate;
-
-    @Schema(description = "有效期止")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private String[] endDate;
-
-    @Schema(description = "备注")
-    private String remarks;
-
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;

+ 17 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/stamp/stampseal/vo/OaStampSealRespVO.java

@@ -1,11 +1,13 @@
 package cn.iocoder.yudao.module.bpm.controller.admin.stamp.stampseal.vo;
 
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Schema(description = "管理后台 - 用印印章信息 Response VO")
 @Data
@@ -28,6 +30,10 @@ public class OaStampSealRespVO {
     @ExcelProperty("状态,1打开 2关闭")
     private String status;
 
+    @Schema(description = "状态描述,1打开 2关闭")
+    @ExcelProperty("状态描述,1打开 2关闭")
+    private String statusDesc;
+
     @Schema(description = "有效期起")
     @ExcelProperty("有效期起")
     private String startDate;
@@ -40,8 +46,19 @@ public class OaStampSealRespVO {
     @ExcelProperty("备注")
     private String remarks;
 
+    @Schema(description = "创建员工姓名", example = "创建员工姓名")
+    @ExcelProperty("创建员工姓名")
+    private String createEmployeeName;
+
+    @Schema(description = "创建员工id", example = "创建员工id")
+    @ExcelProperty("创建员工id")
+    private Long creator;
+
     @Schema(description = "创建时间")
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    @Schema(description = "附件列表")
+    private List<FileDTO> fileList;
+
 }

+ 5 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/stamp/stampseal/vo/OaStampSealSaveReqVO.java

@@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.bpm.controller.admin.stamp.stampseal.vo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.List;
+
 @Schema(description = "管理后台 - 用印印章信息新增/修改 Request VO")
 @Data
 public class OaStampSealSaveReqVO {
@@ -22,4 +24,7 @@ public class OaStampSealSaveReqVO {
     @Schema(description = "备注")
     private String remarks;
 
+    @Schema(description = "附件", example = "[1, 2]")
+    private List<Long> fileIdList;
+
 }

+ 0 - 5
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/stamp/stampseal/OaStampSealMapper.java

@@ -17,13 +17,8 @@ public interface OaStampSealMapper extends BaseMapperX<OaStampSealDO> {
 
     default PageResult<OaStampSealDO> selectPage(OaStampSealPageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<OaStampSealDO>()
-                .eqIfPresent(OaStampSealDO::getSealUuid, reqVO.getSealUuid())
-                .eqIfPresent(OaStampSealDO::getType, reqVO.getType())
                 .likeIfPresent(OaStampSealDO::getSealName, reqVO.getSealName())
                 .eqIfPresent(OaStampSealDO::getStatus, reqVO.getStatus())
-                .betweenIfPresent(OaStampSealDO::getStartDate, reqVO.getStartDate())
-                .betweenIfPresent(OaStampSealDO::getEndDate, reqVO.getEndDate())
-                .eqIfPresent(OaStampSealDO::getRemarks, reqVO.getRemarks())
                 .betweenIfPresent(OaStampSealDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(OaStampSealDO::getId));
     }

+ 4 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/stamp/stampseal/OaStampSealService.java

@@ -37,6 +37,10 @@ public interface OaStampSealService {
      */
     void deleteOaStampSeal(Long id);
 
+    void openOaStampSeal(Long id);
+
+    void closeOaStampSeal(Long id);
+
     /**
      * 获得用印印章信息
      *

+ 54 - 3
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/stamp/stampseal/OaStampSealServiceImpl.java

@@ -1,14 +1,20 @@
 package cn.iocoder.yudao.module.bpm.service.stamp.stampseal;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.security.core.LoginUser;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.controller.admin.stamp.stampseal.vo.OaStampSealPageReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.stamp.stampseal.vo.OaStampSealSaveReqVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.stamp.stampseal.OaStampSealDO;
 import cn.iocoder.yudao.module.bpm.dal.mysql.stamp.stampseal.OaStampSealMapper;
+import cn.iocoder.yudao.module.infra.api.file.FileApi;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
@@ -29,23 +35,35 @@ public class OaStampSealServiceImpl implements OaStampSealService {
     @Resource
     private OaStampSealMapper oaStampSealMapper;
 
+    @Resource
+    private FileApi fileApi;
+
     @Override
+    @Transactional
     public Long createOaStampSeal(OaStampSealSaveReqVO createReqVO) {
         // 插入
         OaStampSealDO oaStampSeal = BeanUtils.toBean(createReqVO, OaStampSealDO.class);
         oaStampSeal.setSealUuid(IdUtil.fastSimpleUUID());
         oaStampSealMapper.insert(oaStampSeal);
+
+        // 保存业务uuid到附件中
+        saveFileList(createReqVO.getFileIdList(), oaStampSeal.getSealUuid());
+
         // 返回
         return oaStampSeal.getId();
     }
 
     @Override
+    @Transactional
     public void updateOaStampSeal(OaStampSealSaveReqVO updateReqVO) {
         // 校验存在
-        validateOaStampSealExists(updateReqVO.getId());
+        OaStampSealDO oaStampSealDO = validateOaStampSealExists(updateReqVO.getId());
         // 更新
         OaStampSealDO updateObj = BeanUtils.toBean(updateReqVO, OaStampSealDO.class);
         oaStampSealMapper.updateById(updateObj);
+
+        // 保存业务uuid到附件中
+        saveFileList(updateReqVO.getFileIdList(), oaStampSealDO.getSealUuid());
     }
 
     @Override
@@ -56,10 +74,33 @@ public class OaStampSealServiceImpl implements OaStampSealService {
         oaStampSealMapper.deleteById(id);
     }
 
-    private void validateOaStampSealExists(Long id) {
-        if (oaStampSealMapper.selectById(id) == null) {
+    @Override
+    public void openOaStampSeal(Long id) {
+        validateOaStampSealExists(id);
+        OaStampSealDO build = OaStampSealDO.builder()
+                .id(id)
+                .status("1")
+                .build();
+        oaStampSealMapper.updateById(build);
+    }
+
+    @Override
+    public void closeOaStampSeal(Long id) {
+        validateOaStampSealExists(id);
+        OaStampSealDO build = OaStampSealDO.builder()
+                .id(id)
+                .status("2")
+                .build();
+        oaStampSealMapper.updateById(build);
+
+    }
+
+    private OaStampSealDO validateOaStampSealExists(Long id) {
+        OaStampSealDO oaStampSealDO = oaStampSealMapper.selectById(id);
+        if (oaStampSealDO == null) {
             throw exception(OA_STAMP_SEAL_NOT_EXISTS);
         }
+        return oaStampSealDO;
     }
 
     @Override
@@ -81,4 +122,14 @@ public class OaStampSealServiceImpl implements OaStampSealService {
         return oaStampSealMapper.selectList(lambdaQueryWrapper);
     }
 
+    /**
+     * 保存业务uuid到附件中
+     */
+    private void saveFileList(List<Long> fileIdList, String serviceId) {
+        if (CollectionUtil.isNotEmpty(fileIdList) && StrUtil.isNotEmpty(serviceId)) {
+            fileApi.updateFileBiz(fileIdList, serviceId);
+        }
+    }
+
+
 }