|
@@ -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;
|
|
|
}
|
|
|
|