Browse Source

完善了标本的代码历年标本数量统计

lwh 4 months ago
parent
commit
bce44711dd

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

@@ -108,7 +108,7 @@ public class MuseumInfoController {
 //    TODO     1.2.3.代表哪种标本类型
 //            返回某种标本类型的List数组
 //            Integer
-//
+
     @GetMapping("/sampleTypeCount")
     @Operation(summary = "标本类型计数")
     public CommonResult<Map<String,Integer>> getMap() {
@@ -152,7 +152,6 @@ 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++) {
             int sample_number =0;
@@ -164,10 +163,8 @@ public class MuseumInfoController {
                 re.setCount(0);
             }else {
                 for (String numberStr : number) {
-                    // 去除方括号
-                    String processedStr = numberStr.replaceAll("\\[|\\]","");
-                    // 按逗号分割元素
-                    String[] groupElements = processedStr.split(",");
+
+                    String[] groupElements = numberStr.split(",");
                     // 累加元素数量(每个元素为一组)
                     sample_number += groupElements.length;
                 }
@@ -178,6 +175,69 @@ public class MuseumInfoController {
         return CommonResult.success(result);
     }
 
+    @GetMapping("/backSaveCount")
+    @Operation(summary = "标本出入库状态计数(每月)(回库)")
+    public CommonResult<List<MuseuminfoMonthSaveVO>> getBackSave() {
+        LocalDate date = LocalDate.now();
+        int currentYear =date.getYear();
+
+        List<MuseuminfoMonthSaveVO> result = new ArrayList<>();
+        for (int month = 1 ; month <= 12 ; month++) {
+            int sample_number = countSampleNumbers(museumInfoService.MuseumInfoBySaveBack(month,currentYear));
+            MuseuminfoMonthSaveVO  re = new MuseuminfoMonthSaveVO();
+            re.setMonth(month);
+            re.setCount(sample_number);
+            result.add(re);
+        }
+        return CommonResult.success(result);
+    }
+
+    @GetMapping("/yearCount")
+    @Operation(summary = "历年标本数量统计")
+    public CommonResult<List<Map<Integer,Object>>> getYearSampleCount() {
+        List<Map<Integer, Object>> result = new ArrayList<>();
+        LocalDate date = LocalDate.now();
+        int currentYear = date.getYear();
+        int year1 = currentYear - 2;
+        for (int year = currentYear; year >= year1; year--) {
+
+            Integer number1 = museumInfoService.MuseumInfoYearJoin(year);
+            int sample_number2 = countSampleNumbers(museumInfoService.MuseumInfoYearOutBack(1, year));
+            int sample_number3 = countSampleNumbers(museumInfoService.MuseumInfoYearOutBack(0, year));
+                    Map<Integer,Object> map = new HashMap<>();
+                    Map<String, Integer> innerMap = new HashMap<>();
+                    innerMap.put("入库", number1);
+                    innerMap.put("回库", sample_number2);
+                    innerMap.put("出库", sample_number3);
+                    map.put(year,innerMap);
+                    result.add(map);
+                }
+        return CommonResult.success(result);
+    }
+
+    /**
+     * 统计样本数量
+     * @param number 包含样本信息的列表
+     * @return 样本数量
+     */
+    private int countSampleNumbers(List<String> number) {
+        if (number == null) {
+            return 0;
+        }
+        int count = 0;
+        for (String numberStr : number) {
+
+            String processedStr = numberStr.replaceAll("\\[|\\]","");
+            // 按逗号分割元素
+            String[] groupElements = processedStr.split(",");
+
+            count += groupElements.length;
+        }
+        return count;
+    }
+
+
+
     @GetMapping("/originCount")
     @Operation(summary = "标本来源计数")
     public CommonResult<List<Map<Integer,Object>>> getOrigin(){

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

@@ -76,10 +76,10 @@ public interface MuseumInfoMapper extends BaseMapperX<MuseumInfoDO> {
      * 标本出库状态计数
      */
     @Select("SELECT" +
-            " number "+
+            " number"+
             " FROM museum_outbound " +
-            " WHERE deleted =0 "+
-            " AND state =1"+
+            " WHERE deleted =0"+
+            " AND state =0"+
             " 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);
@@ -87,13 +87,32 @@ public interface MuseumInfoMapper extends BaseMapperX<MuseumInfoDO> {
      * 标本回库状态计数
      */
     @Select("SELECT" +
-            " COUNT(*)"+
+            " number"+
             " FROM museum_outbound " +
             " WHERE deleted =0 "+
-            " AND state =0"+
+            " AND state =1"+
             " AND DATE_FORMAT(outbound_time,'%m') = #{month}"+
             " AND DATE_FORMAT(outbound_time,'%Y') = #{currentYear}")
     List<String> countMuseumInfoBySaveBack(@Param("month") Integer month,@Param("currentYear") Integer currentYear);
+    /**
+     * 历年标本数量统计
+     */
+    @Select("SELECT" +
+            " COUNT(*)"+
+            " FROM museum_info " +
+            " WHERE deleted =0 AND save =1"+
+            " AND DATE_FORMAT(sample_save_time,'%Y') = #{currentYear}")
+    Integer countMuseumInfoYearJoin(@Param("currentYear") Integer currentYear);
+
+    @Select("SELECT" +
+            " number"+
+            " FROM museum_outbound " +
+            " WHERE deleted =0 "+
+            " AND state = #{state}"+
+            " AND DATE_FORMAT(outbound_time,'%Y') = #{currentYear}")
+    List<String> countMuseumInfoYearOutBack(@Param("state") Integer state,@Param("currentYear") Integer currentYear);
+
+
     /**
      * 标本来源计数(年)
      */

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

@@ -74,6 +74,11 @@ public interface MuseumInfoService {
     * 标本回库状态计数
     * */
    List<String> MuseumInfoBySaveBack(Integer month,Integer currentYear);
+   /**
+    * 历年标本数量统计
+    */
+   Integer MuseumInfoYearJoin(Integer currentYear);
+   List<String> MuseumInfoYearOutBack(Integer state,Integer currentYear);
    /**
     * 标本来源计数(年)
     * */

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

@@ -145,12 +145,23 @@ public  class  MuseumInfoServiceImpl implements MuseumInfoService {
       return museumInfoMapper.countMuseumInfoBySaveOut(month,currentYear);
    }
    /**
-    * 标本库状态计数
+    * 标本回库状态计数
     * */
    @Override
    public List<String> MuseumInfoBySaveBack(Integer month,Integer currentYear) {
       return museumInfoMapper.countMuseumInfoBySaveBack(month,currentYear);
    }
+   /**
+    * 历年标本数量统计
+    */
+   @Override
+   public Integer MuseumInfoYearJoin(Integer currentYear) {
+      return museumInfoMapper.countMuseumInfoYearJoin(currentYear);
+   }
+   @Override
+   public List<String> MuseumInfoYearOutBack(Integer state,Integer currentYear) {
+      return museumInfoMapper.countMuseumInfoYearOutBack(state,currentYear);
+   }
    /**
     * 标本来源计数(年)
     * */