Browse Source

pda 盘点筛选,盘点详情修改

廖泽勇 1 month ago
parent
commit
d514a35b1a

+ 3 - 0
src/main/java/com/jsh/erp/datasource/vo/TaskStocktakingVO.java

@@ -33,4 +33,7 @@ public class TaskStocktakingVO extends TaskStocktaking {
     @ApiModelProperty("准确率")
     private double accuracyRate;
 
+    @ApiModelProperty("盘点人操作人数")
+    private Long operCount;
+
 }

+ 13 - 7
src/main/java/com/jsh/erp/service/impl/TaskStocktakingServiceImpl.java

@@ -1,9 +1,6 @@
 package com.jsh.erp.service.impl;
 
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jsh.erp.datasource.dto.TaskStocktakingDTO;
 import com.jsh.erp.datasource.dto.TaskStocktakingItemQueryDTO;
@@ -251,6 +248,8 @@ public class TaskStocktakingServiceImpl extends ServiceImpl<TaskStocktakingMappe
         List<TaskStocktakingItem> itemList = taskStocktakingItemMapper.selectList(new LambdaQueryWrapper<TaskStocktakingItem>().eq(TaskStocktakingItem::getTaskStocktakingId, id));
         //已操作数量
         long finishCount = itemList.stream().filter(item -> item.getCreator() != null).count();
+        //操作人数
+        long operCount = itemList.stream().filter(item -> item.getCreator() != null).map(TaskStocktakingItem::getCreator).distinct().count();
         //商品总数量
         long itemCount = itemList.size();
         //商品差异条数
@@ -260,20 +259,27 @@ public class TaskStocktakingServiceImpl extends ServiceImpl<TaskStocktakingMappe
         //差异率
         double differenceRate = 0;
         //准确率
-        double accuracyRate = 0;
+        double accuracyRate = 100;
         if (itemDifferenceCount > 0) {
-            differenceRate = BigDecimal.valueOf(itemCount)
-                    .divide(BigDecimal.valueOf(itemDifferenceCount), 4, RoundingMode.HALF_UP)
+            //差异率 = 商品差异条数/商品总数量*100%
+            differenceRate = BigDecimal.valueOf(itemDifferenceCount)
+                    .divide(BigDecimal.valueOf(itemCount), 4, RoundingMode.HALF_UP)
+                    .multiply(BigDecimal.valueOf(100))
                     .doubleValue();
+            //准确数 = 已操作数量-商品差异条数
             BigDecimal subtract = BigDecimal.valueOf(finishCount).subtract(BigDecimal.valueOf(itemDifferenceCount));
+            //准确率 = 准确数/商品总数量*100%
             if (!subtract.equals(BigDecimal.ZERO)) {
-                accuracyRate = subtract.divide(BigDecimal.valueOf(itemCount), 4, RoundingMode.HALF_UP).doubleValue();
+                accuracyRate = subtract.divide(BigDecimal.valueOf(itemCount), 4, RoundingMode.HALF_UP)
+                        .multiply(BigDecimal.valueOf(100))
+                        .doubleValue();
             }
         }
         detail.setItemCount(itemCount);
         detail.setDifferenceRate(differenceRate);
         detail.setAccuracyRate(accuracyRate);
         detail.setFinishCount(finishCount);
+        detail.setOperCount(operCount);
         return detail;
     }
 

+ 3 - 1
src/main/resources/mapper_xml/TaskStocktakingItemMapper.xml

@@ -119,7 +119,9 @@
         WHERE
             tsi.delete_flag = 0
             AND tsi.creator IS NOT NULL
-            AND tsi.task_stocktaking_id = #{taskId};
+            AND tsi.task_stocktaking_id = #{taskId}
+        GROUP BY
+            tsi.creator
     </select>
 
 </mapper>