Pārlūkot izejas kodu

完善了标本操作日志的代码

lwh 1 mēnesi atpakaļ
vecāks
revīzija
691c151a15

+ 46 - 0
yudao-module-museum/yudao-module-museum-api/src/main/java/cn/iocoder/yudao/module/museum/enums/social/LogRecordConstants.java

@@ -0,0 +1,46 @@
+package cn.iocoder.yudao.module.museum.enums.social;
+
+/**
+ * Museum 操作日志枚举
+ * 目的:统一管理,也减少 Service 里各种“复杂”字符串
+ *
+ * @author 芋道源码
+ */
+public interface LogRecordConstants {
+
+    // ======================= SYSTEM_USER 用户 =======================
+
+    String SYSTEM_USER_TYPE = "SYSTEM 用户";
+    String SYSTEM_USER_CREATE_SUB_TYPE = "创建用户";
+    String SYSTEM_USER_CREATE_SUCCESS = "创建了用户【{{#user.nickname}}】";
+    String SYSTEM_USER_UPDATE_SUB_TYPE = "更新用户";
+    String SYSTEM_USER_UPDATE_SUCCESS = "更新了用户【{{#user.nickname}}】: {_DIFF{#updateReqVO}}";
+    String SYSTEM_USER_DELETE_SUB_TYPE = "删除用户";
+    String SYSTEM_USER_DELETE_SUCCESS = "删除了用户【{{#user.nickname}}】";
+    String SYSTEM_USER_UPDATE_PASSWORD_SUB_TYPE = "重置用户密码";
+    String SYSTEM_USER_UPDATE_PASSWORD_SUCCESS = "将用户【{{#user.nickname}}】的密码从【{{#user.password}}】重置为【{{#newPassword}}】";
+
+    // ======================= SYSTEM_ROLE 角色 =======================
+
+    String SYSTEM_ROLE_TYPE = "SYSTEM 角色";
+    String SYSTEM_ROLE_CREATE_SUB_TYPE = "创建角色";
+    String SYSTEM_ROLE_CREATE_SUCCESS = "创建了角色【{{#role.name}}】";
+    String SYSTEM_ROLE_UPDATE_SUB_TYPE = "更新角色";
+    String SYSTEM_ROLE_UPDATE_SUCCESS = "更新了角色【{{#role.name}}】: {_DIFF{#updateReqVO}}";
+    String SYSTEM_ROLE_DELETE_SUB_TYPE = "删除角色";
+    String SYSTEM_ROLE_DELETE_SUCCESS = "删除了角色【{{#role.name}}】";
+
+    // 操作类型常量
+    String MUSEUM_TYPE = "MUSEUM 标本";
+    String CREATE_SUB_TYPE = "入库记录";
+    String CREATE_SUB_TYPE_SUCCESS = "标本【{{#sampleId.chineseName}}】入库成功";
+    String UPDATE_SUB_TYPE = "更新记录";
+    String UPDATE_SUB_TYPE_SUCCESS = "更新了标本【{{#sampleId.chineseName}}】: {_DIFF{#MuseumInfoSaveVO}}";
+    String DELETE_SUB_TYPE = "删除记录";
+    String DELETE_SUB_TYPE_SUCCESS = "删除了标本【{{#sampleId.chineseName}}】";
+    String OUT_MUSEUM_SUB_TYPE = "出库记录";
+    String OUT_MUSEUM_SUB_TYPE_SUCCESS = "标本【{{#sampleId.chineseName}}】出库成功 : {_DIFF{#MuseumInfoSaveVO}}";
+    String BACK_MUSEUM_SUB_TYPE = "回库记录";
+    String BACK_MUSEUM_SUB_TYPE_SUCCESS = "标本【{{#sampleId.chineseName}}】回库成功";
+
+}

+ 6 - 0
yudao-module-museum/yudao-module-museum-biz/pom.xml

@@ -75,6 +75,12 @@
             <artifactId>commons-io</artifactId>
             <version>2.11.0</version>
         </dependency>
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-module-museum-api</artifactId>
+            <version>2.3.0-jdk8-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 

+ 38 - 23
yudao-module-museum/yudao-module-museum-biz/src/main/java/cn/iocoder/yudao/module/museum/controller/admin/museuminfo/MuseumInfoController.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.museum.controller.admin.museuminfo;
 
+import cn.hutool.json.JSONArray;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@@ -12,6 +13,7 @@ import org.apache.ibatis.annotations.Param;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.time.LocalDate;
@@ -19,7 +21,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
 @Tag(name = "博物馆-标本库")
@@ -34,22 +35,32 @@ public class MuseumInfoController {
     //TODO 判断标本编号是否重复
     @PostMapping("/create")
     @Operation(summary = "新增标本")
-    public CommonResult<Integer> createMuseumInfo(@RequestBody MuseumInfoSaveVO saveVO) {
+    public CommonResult<Long> createMuseumInfo(@RequestBody MuseumInfoSaveVO saveVO) {
         String sampleId = saveVO.getSampleId();
-        List<MuseumInfoDO> result = museumInfoService.getMuseumInfoBySampleId(sampleId);
+        String result = museumInfoService.getMuseumInfoBySampleId(sampleId);
         if (result != null) {
-            return CommonResult.error(1, "标本编号已存在");
+            return CommonResult.error(200, "标本编号已存在");
         } else {
             return CommonResult.success(museumInfoService.createMuseumInfo(saveVO));
         }
     }
-    @PostMapping("/update")
+    @PutMapping("/update")
     @Operation(summary = "更新标本")
-    public CommonResult<Boolean> updateMuseumInfo(@RequestBody MuseumInfoSaveVO saveVO){
-        museumInfoService.updateMuseumInfo(saveVO);
-        return CommonResult.success(true);
-
-
+    public CommonResult<Boolean> updateSampleMuseumInfo(@Valid @RequestBody MuseumInfoSaveVO saveVO){
+        museumInfoService.updateSampleMuseumInfo(saveVO);
+        return success(true);
+    }
+    @PutMapping("/outSample")
+    @Operation(summary = "标本出库")
+    public CommonResult<Boolean> outSampleMuseumInfo(@RequestParam("id")Integer id){
+        museumInfoService.outSampleMuseumInfo(id);
+        return success(true);
+    }
+    @PutMapping("/backSample")
+    @Operation(summary = "标本出库")
+    public CommonResult<Boolean> backSampleMuseumInfo(@RequestParam("id")Integer id){
+        museumInfoService.backSampleMuseumInfo(id);
+        return success(true);
     }
 
     //TODO 需要提供原因,调用更新方法
@@ -57,11 +68,9 @@ public class MuseumInfoController {
     @Operation(summary = "删除标本")
     public CommonResult<Boolean> deleteMuseumInfo(@RequestParam("id") Integer id,@RequestParam("reason") String reason){
         museumInfoService.deleteMuseumInfo(id,reason);
-//        result.put("删除原因:",);
         return CommonResult.success(true);
     }
 
-
     @GetMapping("/get")
     @Operation(summary = "id查找")
     public CommonResult<MuseumInfoRespVO> selectMuseumInfo(@RequestParam("id") Integer id){
@@ -72,15 +81,15 @@ public class MuseumInfoController {
 
     @GetMapping("/getSampleId")
     @Operation(summary = "标本编号查寻")
-    public CommonResult<List<MuseumInfoRespVO>> getMuseumInfoList(@RequestParam("sampleId") String sampleId){
-        List<MuseumInfoDO> result = museumInfoService.getMuseumInfoBySampleId(sampleId);
-        List<MuseumInfoRespVO> result1 = BeanUtils.toBean(result,MuseumInfoRespVO.class);
+    public CommonResult<MuseumInfoRespVO>selectMuseumInfoBySampleId(@RequestParam("sampleId") String sampleId){
+        MuseumInfoDO result = museumInfoService.selectMuseumInfoBySampleId(sampleId);
+        MuseumInfoRespVO result1 = BeanUtils.toBean(result,MuseumInfoRespVO.class);
         return CommonResult.success(result1);
     }
 
     @GetMapping("/getSampleType")
     @Operation(summary = "标本类型查寻")
-    public CommonResult<List<MuseumInfoRespVO>> getMuseumInfoList(@RequestParam("sampleType") Integer sampleType){
+    public CommonResult<List<MuseumInfoRespVO>> selectMuseumInfoBySampleType(@RequestParam("sampleType") Integer sampleType){
         List<MuseumInfoDO> result = museumInfoService.selectMuseumInfoListBySampleType(sampleType);
         List<MuseumInfoRespVO> result1 = BeanUtils.toBean(result,MuseumInfoRespVO.class);
         return CommonResult.success(result1);
@@ -115,10 +124,6 @@ public class MuseumInfoController {
         map.put("陨石", count4);
         return CommonResult.success(map);
     }
-
-
-
-
     @GetMapping("/joinSaveCount")
     @Operation(summary = "标本出入库状态计数(每月)(入库)")
     public CommonResult<List<MuseuminfoMonthSaveVO>> getJoinSave() {
@@ -147,16 +152,26 @@ public class MuseumInfoController {
     public CommonResult<List<MuseuminfoMonthSaveVO>> getOutSave() {
         LocalDate date = LocalDate.now();
         int currentYear =date.getYear();
+
         List<MuseuminfoMonthSaveVO> result = new ArrayList<>();
         for (int month = 1 ; month <= 12 ; month++) {
-
-            Integer number =museumInfoService.MuseumInfoBySaveOut(month,currentYear);
+            int sample_number =0;
+            List<String> number =museumInfoService.MuseumInfoBySaveOut(month,currentYear);
             MuseuminfoMonthSaveVO  re = new MuseuminfoMonthSaveVO();
             re.setMonth(month);
+
             if (number == null) {
                 re.setCount(0);
             }else {
-                re.setCount(number);
+                for (String numberStr : number) {
+                    // 去除方括号
+                    String processedStr = numberStr.replaceAll("\\[|\\]","");
+                    // 按逗号分割元素
+                    String[] groupElements = processedStr.split(",");
+                    // 累加元素数量(每个元素为一组)
+                    sample_number += groupElements.length;
+                }
+                re.setCount(sample_number);
             }
             result.add(re);
         }

+ 3 - 2
yudao-module-museum/yudao-module-museum-biz/src/main/java/cn/iocoder/yudao/module/museum/controller/admin/museuminfo/vo/MuseumInfoRespVO.java

@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Schema(description = "博物馆-标本信息 Resp VO")
 @Data
@@ -13,7 +14,7 @@ public class MuseumInfoRespVO {
 //private Integer Ynumber;
 
     @Schema(description = "标本id")
-    private Integer id;
+    private Long id;
 
     @Schema(description = "标本编号")
     private String sampleId;
@@ -79,7 +80,7 @@ public class MuseumInfoRespVO {
     private String reason;
 
     @Schema(description = "标本图片")
-    private String picture;
+    private List<String> picture;
 
     @Schema(description = "备注")
     private String sampleTip;

+ 2 - 1
yudao-module-museum/yudao-module-museum-biz/src/main/java/cn/iocoder/yudao/module/museum/controller/admin/museuminfo/vo/MuseumInfoSaveVO.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.museum.controller.admin.museuminfo.vo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import javax.swing.*;
 import java.time.LocalDateTime;
 
 @Schema(description = "博物馆-标本信息 save VO")
@@ -10,7 +11,7 @@ import java.time.LocalDateTime;
 public class MuseumInfoSaveVO {
 
     @Schema(description = "标本id")
-    private Integer id;
+    private Long id;
 
     @Schema(description = "标本编号")
     private String sampleId;

+ 28 - 8
yudao-module-museum/yudao-module-museum-biz/src/main/java/cn/iocoder/yudao/module/museum/dal/mysql/museuminfo/MuseumInfoMapper.java

@@ -21,15 +21,23 @@ public interface MuseumInfoMapper extends BaseMapperX<MuseumInfoDO> {
     /**
      * 更新标本
      */
-    @Update("UPDATE museum_info SET sample_type=#{sampleType}, place=#{place},chinese_name=#{chineseName} WHERE id =#{id}")
+    @Update("UPDATE museum_info SET sample_id=#{sampleId},chinese_name=#{chineseName} WHERE id =#{id}")
     void updateMuseumInfo(MuseumInfoDO museumInfoDO);
-
+    /**
+     * 标本出库
+     */
+    @Update("UPDATE museum_info SET save=0  WHERE id =#{id}")
+    void outSampleMuseumInfo(@Param("id")Integer id);
+    /**
+     * 标本回库
+     */
+    @Update("UPDATE museum_info SET save=1  WHERE id =#{id}")
+    void backSampleMuseumInfo(@Param("id")Integer id);
     /**
      * 删除标本
      */
     @Update("UPDATE museum_info SET deleted=1,reason=#{reason}  WHERE id =#{id}")
-    void deleteMuseumInfo(Integer id, String reason);
-
+    void deleteMuseumInfo(@Param("id")Integer id,@Param("reason")String reason);
     /**
      * 查询标本
      */
@@ -40,7 +48,8 @@ public interface MuseumInfoMapper extends BaseMapperX<MuseumInfoDO> {
      * 查询标本编号
      */
     @Select("SELECT * FROM museum_info WHERE sample_id =#{sampleId} AND deleted =0")
-    List<MuseumInfoDO> getMuseumInfoBySampleId(@Param("sampleId") String sampleId);
+    String getMuseumInfoBySampleId(@Param("sampleId") String sampleId);
+    MuseumInfoDO selectMuseumInfoBySampleId(@Param("sampleId") String sampleId);
 
     /**
      * 查询标本类型
@@ -66,14 +75,25 @@ public interface MuseumInfoMapper extends BaseMapperX<MuseumInfoDO> {
     /**
      * 标本出库状态计数
      */
+    @Select("SELECT" +
+            " number "+
+            " FROM museum_outbound " +
+            " WHERE deleted =0 "+
+            " AND state =1"+
+            " AND DATE_FORMAT(outbound_time,'%m') = #{month}"+
+            " AND DATE_FORMAT(outbound_time,'%Y') = #{currentYear}")
+    List<String> countMuseumInfoBySaveOut(@Param("month") Integer month,@Param("currentYear") Integer currentYear);
+    /**
+     * 标本回库状态计数
+     */
     @Select("SELECT" +
             " COUNT(*)"+
             " FROM museum_outbound " +
             " WHERE deleted =0 "+
+            " AND state =0"+
             " AND DATE_FORMAT(outbound_time,'%m') = #{month}"+
-            " AND DATE_FORMAT(sample_save_time,'%Y') = #{currentYear}")
-    Integer countMuseumInfoBySaveOut(@Param("month") Integer month,@Param("currentYear") Integer currentYear);
-
+            " AND DATE_FORMAT(outbound_time,'%Y') = #{currentYear}")
+    List<String> countMuseumInfoBySaveBack(@Param("month") Integer month,@Param("currentYear") Integer currentYear);
     /**
      * 标本来源计数(年)
      */

+ 25 - 11
yudao-module-museum/yudao-module-museum-biz/src/main/java/cn/iocoder/yudao/module/museum/service/museuminfo/MuseumInfoService.java

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.museum.dal.database.museuminfo.MuseumInfoDO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
+import javax.validation.Valid;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -15,13 +16,20 @@ public interface MuseumInfoService {
    /**
     * 创建标本
    * */
-   Integer createMuseumInfo(MuseumInfoSaveVO saveVO);
+   Long createMuseumInfo(MuseumInfoSaveVO saveVO);
 
    /**
     * 更新标本
     * */
-   void updateMuseumInfo(MuseumInfoSaveVO saveVO);
-
+   void updateSampleMuseumInfo(@Valid MuseumInfoSaveVO saveVO);
+   /**
+    * 标本出库
+    */
+   void outSampleMuseumInfo(Integer id);
+   /**
+    * 标本回库
+    */
+   void backSampleMuseumInfo(Integer id);
    /**
     * 删除标本(原因)
     * */
@@ -34,8 +42,11 @@ public interface MuseumInfoService {
    /**
     * 查询标本编号
     * */
-   List<MuseumInfoDO> getMuseumInfoBySampleId(String sampleId);
-
+   String getMuseumInfoBySampleId(String sampleId);
+   /**
+    * 查询标本编号1
+    * */
+   MuseumInfoDO selectMuseumInfoBySampleId(String sampleId);
    /**
    * 查询标本类型
    * */
@@ -52,14 +63,17 @@ public interface MuseumInfoService {
     * */
    Integer MuseumInfoBySampleType(Integer sampleType);
    /**
-    * 标本入库状态计数
+    * 标本入库状态计数
     * */
-//
     Integer MuseumInfoBySaveJoin(Integer month,Integer currentYear);
-
-
-   Integer MuseumInfoBySaveOut(Integer month,Integer currentYear);
-
+   /**
+    * 标本出库状态计数
+    * */
+   List<String> MuseumInfoBySaveOut(Integer month,Integer currentYear);
+   /**
+    * 标本回库状态计数
+    * */
+   List<String> MuseumInfoBySaveBack(Integer month,Integer currentYear);
    /**
     * 标本来源计数(年)
     * */

+ 69 - 10
yudao-module-museum/yudao-module-museum-biz/src/main/java/cn/iocoder/yudao/module/museum/service/museuminfo/MuseumInfoServiceImpl.java

@@ -1,10 +1,14 @@
 package cn.iocoder.yudao.module.museum.service.museuminfo;
 
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.museum.controller.admin.museuminfo.vo.*;
 import cn.iocoder.yudao.module.museum.dal.database.museuminfo.MuseumInfoDO;
 import cn.iocoder.yudao.module.museum.dal.mysql.museuminfo.MuseumInfoMapper;
+import com.mzt.logapi.context.LogRecordContext;
+import com.mzt.logapi.service.impl.DiffParseFunction;
+import com.mzt.logapi.starter.annotation.LogRecord;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -14,10 +18,13 @@ import java.util.Map;
 import java.util.Set;
 
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.singleton;
+import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*;
+import static cn.iocoder.yudao.module.museum.enums.social.LogRecordConstants.*;
 
 @Service
 public  class  MuseumInfoServiceImpl implements MuseumInfoService {
 
+
    @Resource
    private MuseumInfoMapper museumInfoMapper;
 
@@ -25,24 +32,60 @@ public  class  MuseumInfoServiceImpl implements MuseumInfoService {
     * 新增标本
     */
    @Override
-   public Integer createMuseumInfo(MuseumInfoSaveVO saveVO) {
-      return museumInfoMapper.insert(BeanUtils.toBean(saveVO, MuseumInfoDO.class));//insert(内置)
+   @LogRecord(type = MUSEUM_TYPE, subType = CREATE_SUB_TYPE, bizNo = "{{#sampleId.id}}",
+           success =  CREATE_SUB_TYPE_SUCCESS)
+   public Long createMuseumInfo(MuseumInfoSaveVO saveVO) {
+      MuseumInfoDO sampleId = BeanUtils.toBean(saveVO, MuseumInfoDO.class);
+      museumInfoMapper.insert(sampleId);
+      LogRecordContext.putVariable("sampleId", sampleId );
+      return sampleId.getId();
    }
-
    /**
     * 更新标本
     */
+
+   @LogRecord(type = MUSEUM_TYPE, subType = UPDATE_SUB_TYPE, bizNo = "{{#sampleId.id}}",
+           success = UPDATE_SUB_TYPE_SUCCESS)
    @Override
-   public void updateMuseumInfo(MuseumInfoSaveVO saveVO) {
-      museumInfoMapper.updateMuseumInfo(BeanUtils.toBean(saveVO, MuseumInfoDO.class));
+   public void updateSampleMuseumInfo(MuseumInfoSaveVO saveVO) {
+      MuseumInfoDO sampleId = BeanUtils.toBean(saveVO,MuseumInfoDO.class);
+      museumInfoMapper.updateMuseumInfo(sampleId);
+//      museumInfoMapper.updateById(sampleId);
+      LogRecordContext.putVariable(DiffParseFunction.OLD_OBJECT, BeanUtils.toBean(sampleId, MuseumInfoSaveVO.class));
+      LogRecordContext.putVariable("sampleId", sampleId );
+   }
+   /**
+    * 标本出库
+    */
+   @LogRecord(type = MUSEUM_TYPE, subType = OUT_MUSEUM_SUB_TYPE, bizNo = "{{#sampleId.id}}",
+           success = OUT_MUSEUM_SUB_TYPE_SUCCESS)
+   @Override
+   public void outSampleMuseumInfo(Integer id){
+      MuseumInfoDO sampleId = museumInfoMapper.selectMuseumInfoById(id);
+      museumInfoMapper.outSampleMuseumInfo(id);
+      LogRecordContext.putVariable("sampleId",sampleId);
+   }
+   /**
+    * 标本回库
+    */
+   @LogRecord(type = MUSEUM_TYPE, subType = BACK_MUSEUM_SUB_TYPE, bizNo = "{{#sampleId.id}}",
+           success = BACK_MUSEUM_SUB_TYPE_SUCCESS)
+   @Override
+   public void backSampleMuseumInfo(Integer id){
+      MuseumInfoDO sampleId = museumInfoMapper.selectMuseumInfoById(id);
+      museumInfoMapper.backSampleMuseumInfo(id);
+      LogRecordContext.putVariable("sampleId",sampleId);
    }
-
    /**
     * 删除标本
     */
    @Override
+   @LogRecord(type = MUSEUM_TYPE, subType = DELETE_SUB_TYPE, bizNo = "{{#sampleId.id}}",
+           success = DELETE_SUB_TYPE_SUCCESS)
    public void deleteMuseumInfo(Integer id,String reason) {
+      MuseumInfoDO sampleId = museumInfoMapper.selectMuseumInfoById(id);
       museumInfoMapper.deleteMuseumInfo(id,reason);
+      LogRecordContext.putVariable("sampleId", sampleId );
    }
    /**
     * 查询标本id
@@ -56,9 +99,16 @@ public  class  MuseumInfoServiceImpl implements MuseumInfoService {
     * 查询标本编号
     */
    @Override
-   public List<MuseumInfoDO> getMuseumInfoBySampleId (String sampleId) {
+   public String getMuseumInfoBySampleId (String sampleId) {
       return museumInfoMapper.getMuseumInfoBySampleId(sampleId);
    }
+   /**
+    * 查询标本编号1
+    */
+   @Override
+   public  MuseumInfoDO selectMuseumInfoBySampleId (String sampleId) {
+      return museumInfoMapper.selectMuseumInfoBySampleId(sampleId);
+   }
    /**
     * 查询标本类型
     */
@@ -81,17 +131,26 @@ public  class  MuseumInfoServiceImpl implements MuseumInfoService {
       return museumInfoMapper.countMuseumInfoBySampleType(sampleType);
    }
    /**
-    * 标本入库状态计数
+    * 标本入库状态计数
     * */
    @Override
    public Integer MuseumInfoBySaveJoin(Integer month,Integer currentYear) {
       return museumInfoMapper.countMuseumInfoBySaveJoin(month,currentYear);
    }
-
+   /**
+    * 标本出库状态计数
+    * */
    @Override
-   public Integer MuseumInfoBySaveOut(Integer month,Integer currentYear) {
+   public List<String> MuseumInfoBySaveOut(Integer month,Integer currentYear) {
       return museumInfoMapper.countMuseumInfoBySaveOut(month,currentYear);
    }
+   /**
+    * 标本出回入库状态计数
+    * */
+   @Override
+   public List<String> MuseumInfoBySaveBack(Integer month,Integer currentYear) {
+      return museumInfoMapper.countMuseumInfoBySaveBack(month,currentYear);
+   }
    /**
     * 标本来源计数(年)
     * */