Kaynağa Gözat

做了审批的角色

hyy 7 ay önce
ebeveyn
işleme
9fa75d0980
10 değiştirilmiş dosya ile 105 ekleme ve 54 silme
  1. 6 1
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/photos/PhotosController.java
  2. 3 3
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/photos/vo/PhotosSaveReqVO.java
  3. 76 18
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/SpecimenOutboundController.java
  4. 0 4
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/mysql/photos/PhotosMapper.java
  5. 0 11
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/photogroup/PhotoGroupServiceImpl.java
  6. 1 3
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/photos/PhotosService.java
  7. 10 1
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/photos/PhotosServiceImpl.java
  8. 1 6
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoServiceImpl.java
  9. 3 2
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundService.java
  10. 5 5
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundServiceImpl.java

+ 6 - 1
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/photos/PhotosController.java

@@ -47,9 +47,14 @@ public class PhotosController {
     @Operation(summary = "创建博物馆照片")
     @PreAuthorize("@ss.hasPermission('museums:photos:create')")
     public CommonResult<Integer> createPhotos(@Valid @RequestBody PhotosSaveReqVO createReqVO) {
-        return success(photosService.createPhotos(createReqVO));
+        List<String> photoUrlList = createReqVO.getPhotoUrl();
+        for (String url :photoUrlList){
+            photosService.TcreatePhotos(url,createReqVO.getGroupId());
+        }
+        return null;
     }
 
+
     @PutMapping("/update")
     @Operation(summary = "更新博物馆照片")
     @PreAuthorize("@ss.hasPermission('museums:photos:update')")

+ 3 - 3
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/photos/vo/PhotosSaveReqVO.java

@@ -20,9 +20,9 @@ public class PhotosSaveReqVO {
 
     @Schema(description = "照片存储路径", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
     @NotEmpty(message = "照片存储路径不能为空")
-    private String photoUrl;
+    private List<String> photoUrl;
 
-    @Schema(description = "上传时间")
-    private LocalDateTime createdAt;
+//    @Schema(description = "上传时间")
+//    private LocalDateTime createdAt;
 
 }

+ 76 - 18
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/SpecimenOutboundController.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.museums.controller.admin.specimenoutbound;
 
+import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -41,6 +42,8 @@ public class SpecimenOutboundController {
 
     @Resource
     private SpecimenOutboundService specimenOutboundService;
+    @Resource
+    private PermissionApi permissionApi;
 
     @PostMapping("/create")
     @Operation(summary = "创建标本出库申请")
@@ -59,14 +62,80 @@ public class SpecimenOutboundController {
     }
 
 
-    @PostMapping("/approveFirst")
-    @Operation(summary = "一审通过")
-    @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:approveFirst')")
-    public CommonResult<Void> approveFirstSpecimenOutbound(@RequestBody SpecimenOutboundApprovalReqVO req) {
-        req.setApproveUsers(getLoginUserId()); // 获取操作员ID
+//    @PostMapping("/approveFirst")
+//    @Operation(summary = "一审通过")
+//    @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:approveFirst')")
+//    public CommonResult<Void> approveFirstSpecimenOutbound(@RequestBody SpecimenOutboundApprovalReqVO req) {
+//        req.setApproveUsers(getLoginUserId()); // 获取操作员ID
+//
+//        req.setApprovalTime(LocalDateTime.now()); // 设置当前时间
+//        req.setStatus(1); // 设置审批状态为一审通过
+//        specimenOutboundService.updateStatus(req);
+//        return success(null);
+//    }
+//    @PostMapping("/approveSecond")
+//    @Operation(summary = "二审通过")
+//    @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:approveSecond')")
+//    public CommonResult<Void> approveSecondSpecimenOutbound(@RequestBody SpecimenOutboundApprovalReqVO req) {
+//        req.setTwoApproveUsers(getLoginUserId()); // 获取二审操作员ID
+//        req.setTwoApprovalTime(LocalDateTime.now()); // 设置当前时间
+//        req.setStatus(5); // 设置审批状态为二审通过
+//        specimenOutboundService.updateStatus(req);
+//        return success(null);
+//    }
 
-        req.setApprovalTime(LocalDateTime.now()); // 设置当前时间
-        req.setStatus(1); // 设置审批状态为一审通过
+//    @PostMapping("/approve")
+//    @Operation(summary = "审批")
+//    @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:approve')")
+//    public CommonResult<Void> approveSpecimenOutbound(@RequestBody SpecimenOutboundApprovalReqVO req) {
+//        // 获取当前操作员ID
+//        Long operatorId = getLoginUserId();
+//        LocalDateTime now = LocalDateTime.now();
+//
+//        // 验证审批类型
+//        if (req.getStatus() == 1 || req.getStatus() == 2) {
+//            // 一审逻辑
+//            req.setApproveUsers(operatorId);
+//            req.setApprovalTime(now);
+//        } else if (req.getStatus() == 5 || req.getStatus() == 6) {
+//            // 二审逻辑
+//            req.setTwoApproveUsers(operatorId);
+//            req.setTwoApprovalTime(now);
+//        } else {
+//            throw new IllegalArgumentException("无效的审批状态");
+//        }
+//
+//        // 调用更新状态方法
+//        specimenOutboundService.updateStatus(req);
+//        return success(null);
+//    }
+
+    @PostMapping("/approve")
+    @Operation(summary = "审批")
+    @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:approve')")
+    public CommonResult<Void> approveSpecimenOutbound(@RequestBody SpecimenOutboundApprovalReqVO req) {
+        Long operatorId = getLoginUserId();
+        LocalDateTime now = LocalDateTime.now();
+
+        // 验证审批类型
+        if (req.getStatus() == 1 || req.getStatus() == 2) {
+            // 一审逻辑
+            if (!permissionApi.hasAnyRoles(operatorId, "deputy_leader")) {
+                throw new IllegalArgumentException("用户没有一审权限");
+            }
+            req.setApproveUsers(operatorId);
+            req.setApprovalTime(now);
+        } else if (req.getStatus() == 5 || req.getStatus() == 6) {
+            // 二审逻辑
+            if (!permissionApi.hasAnyRoles(operatorId, "leadership")) {
+                throw new IllegalArgumentException("用户没有二审权限");
+            }
+            req.setTwoApproveUsers(operatorId);
+            req.setTwoApprovalTime(now);
+        } else {
+            throw new IllegalArgumentException("无效的审批状态");
+        }
+        // 调用更新状态方法
         specimenOutboundService.updateStatus(req);
         return success(null);
     }
@@ -82,17 +151,6 @@ public class SpecimenOutboundController {
         return success(null);
     }
 
-    @PostMapping("/approveSecond")
-    @Operation(summary = "二审通过")
-    @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:approveSecond')")
-    public CommonResult<Void> approveSecondSpecimenOutbound(@RequestBody SpecimenOutboundApprovalReqVO req) {
-        req.setTwoApproveUsers(getLoginUserId()); // 获取二审操作员ID
-        req.setTwoApprovalTime(LocalDateTime.now()); // 设置当前时间
-        req.setStatus(5); // 设置审批状态为二审通过
-        specimenOutboundService.updateStatus(req);
-        return success(null);
-    }
-
     @PostMapping("/rejectSecond")
     @Operation(summary = "二审驳回")
     @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:rejectSecond')")

+ 0 - 4
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/mysql/photos/PhotosMapper.java

@@ -32,10 +32,6 @@ public interface PhotosMapper extends BaseMapperX<PhotosDO> {
     @Select("SELECT * FROM museums_photos WHERE group_id = #{groupId} AND deleted = 0")
     List<PhotosDO> selectByGroupId(Integer groupId);
 
-    @Insert("INSERT INTO museums_photos (group_id, photo_url, created_at, creator, create_time, updater, update_time, deleted) " +
-            "VALUES (#{groupId}, #{photoUrl}, #{createdAt}, #{creator}, #{createTime}, #{updater}, #{updateTime}, #{deleted})")
-    void insertPhoto(PhotosDO photos);
-
     /**
      * 根据照片组ID删除照片
      *

+ 0 - 11
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/photogroup/PhotoGroupServiceImpl.java

@@ -78,10 +78,8 @@ public class PhotoGroupServiceImpl implements PhotoGroupService {
     public void deletePhotoGroup(Integer id) {
         // 校验存在
         validatePhotoGroupExists(id);
-
         // 删除与照片组关联的所有照片
         photosMapper.deletePhotosByGroupId(id); // 假设您有一个相应的方法
-
         // 删除照片组
         photoGroupMapper.deleteById(id);
     }
@@ -147,8 +145,6 @@ public class PhotoGroupServiceImpl implements PhotoGroupService {
                     PhotosDO photoRecord = new PhotosDO();
                     photoRecord.setGroupId(groupId); // 设置照片组ID
                     photoRecord.setPhotoUrl(imagePath); // 设置照片URL
-//                    photoRecord.setCreateTime(LocalDateTime.now());
-//                    photoRecord.setCreator("系统用户"); // 根据实际情况设置创建者
                     photosMapper.insert(photoRecord); // 插入照片记录
                 }
             }
@@ -159,14 +155,7 @@ public class PhotoGroupServiceImpl implements PhotoGroupService {
             // 清理临时文件
             FileUtils.deleteDirectory(tempDir); // 使用 FileUtils 清理
         }
-
         return groupId; // 返回照片组ID
     }
 
-
-
-
-
-
-
 }

+ 1 - 3
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/photos/PhotosService.java

@@ -1,14 +1,11 @@
 package cn.iocoder.yudao.module.museums.service.photos;
 
-import java.time.LocalDateTime;
 import java.util.*;
 import javax.validation.*;
-import javax.validation.constraints.NotEmpty;
 
 import cn.iocoder.yudao.module.museums.controller.admin.photos.vo.*;
 import cn.iocoder.yudao.module.museums.dal.dataobject.photos.PhotosDO;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import org.springframework.web.multipart.MultipartFile;
 
 /**
@@ -26,6 +23,7 @@ public interface PhotosService {
      */
     Integer createPhotos(@Valid PhotosSaveReqVO createReqVO);
 
+     Integer TcreatePhotos(String photoUrl,Integer groupId);
     /**
      * 更新博物馆照片
      *

+ 10 - 1
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/photos/PhotosServiceImpl.java

@@ -40,8 +40,17 @@ public class PhotosServiceImpl implements PhotosService {
 
     @Override
     public Integer createPhotos(PhotosSaveReqVO createReqVO) {
+        for (String url :createReqVO.getPhotoUrl()){
+            TcreatePhotos(url,createReqVO.getGroupId());
+        }
+        return null;
+    }
+
+    public Integer TcreatePhotos(String photoUrl,Integer groupId){
         // 插入
-        PhotosDO photos = BeanUtils.toBean(createReqVO, PhotosDO.class);
+        PhotosDO photos = new PhotosDO();
+        photos.setPhotoUrl(photoUrl);
+        photos.setGroupId(groupId);
         photosMapper.insert(photos);
         // 返回
         return photos.getId();

+ 1 - 6
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoServiceImpl.java

@@ -158,7 +158,7 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
         if (imageNames == null) return false;
         String[] names = imageNames.split(",");
         for (String name : names) {
-            if (!name.matches(".+\\.(jpg|jpeg|png|gif)$")) {
+            if (!name.matches(".+\\.(jpg|jpeg|png)$")) {
                 return false; // 只要有一个格式不正确就返回 false
             }
         }
@@ -242,11 +242,6 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
         return "标本图片导入成功";
     }
 
-
-
-
-
-
     //工作台
     //根据入库的登记情况统计本年标本入库信息
     @Override

+ 3 - 2
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundService.java

@@ -33,10 +33,11 @@ public interface SpecimenOutboundService {
     /**
      * 确认标本出库
      *
-     * @param id 编号
+     * @param id       编号
      * @param operator 出库员ID
+     * @return
      */
-    void confirmOutbound(Long id, Long operator);
+    String confirmOutbound(Long id, Long operator);
 
     /**
      * 删除标本出库回库信息

+ 5 - 5
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundServiceImpl.java

@@ -1,6 +1,5 @@
 package cn.iocoder.yudao.module.museums.service.specimenoutbound;
 
-import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo.SpecimenOutboundFormRespVO;
 import cn.iocoder.yudao.module.museums.dal.dataobject.specimeninfo.SpecimenInfoDO;
 import cn.iocoder.yudao.module.museums.dal.mysql.specimeninfo.SpecimenInfoMapper;
@@ -80,7 +79,6 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
         SpecimenOutboundDO specimenOutbound = BeanUtils.toBean(createReqVO, SpecimenOutboundDO.class);
         specimenOutbound.setInfoId(infoIdString); // 存储逗号分隔的标本ID
         specimenOutboundMapper.insert(specimenOutbound);
-
         // 返回出库记录ID
         return specimenOutbound.getId();
     }
@@ -163,6 +161,7 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
     public void updateStatus(SpecimenOutboundApprovalReqVO req) {
         // 从数据库获取标本出库记录
         SpecimenOutboundDO specimenOutbound = specimenOutboundMapper.selectById(req.getId());
+        System.out.println(specimenOutbound);
 
         // 验证状态
         if (specimenOutbound == null) {
@@ -204,14 +203,14 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
 
     //确认出库,已经简化
     @Override
-    public void confirmOutbound(Long id, Long operator) {
+    public String confirmOutbound(Long id, Long operator) {
         // 校验存在
         validateSpecimenOutboundExists(id);
         // 获取当前标本的状态
         SpecimenOutboundDO existingSpecimen = specimenOutboundMapper.selectById(id);
         // 判断状态是否为审批通过(1)
-        if (existingSpecimen == null || existingSpecimen.getStatus() != 1) {
-            throw new IllegalStateException("只有状态为审批通过的标本才能确认出库");
+        if (existingSpecimen == null || existingSpecimen.getStatus() != 5) {
+            return "只有状态为二审通过的标本才能确认出库";
         }
         // 使用链式调用合并设置
         existingSpecimen.setStatus(3) // 更新状态为已出库(3)
@@ -221,6 +220,7 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
         specimenOutboundMapper.updateById(existingSpecimen);
         // 更新标本信息的馆藏状态为1(借出)
         specimenInfoMapper.updateCollectionStatus(Long.valueOf(existingSpecimen.getInfoId()), 1);
+        return null;
     }