mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 15:55:18 +08:00
refactor(coal): 重构仓库收据服务
- 优化了仓库收据查询逻辑,提高了代码可读性和性能 - 新增 defaultMaps 方法,用于处理空内容的情况 - 简化了数据处理流程,减少了冗余代码 - 优化了变量命名,提高了代码的可维护性
This commit is contained in:
@@ -40,6 +40,7 @@ import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.domain.Page;
|
||||
@@ -490,6 +491,35 @@ public class WarehouseReceiptService
|
||||
|
||||
@PersistenceContext EntityManager em;
|
||||
|
||||
private static @NotNull List<HashMap<Object, Object>> defaultMaps(List<Object> ans) {
|
||||
return ans.stream()
|
||||
.map(
|
||||
x -> {
|
||||
if (x instanceof Map) {
|
||||
|
||||
HashMap<Object, Object> map = new HashMap<>();
|
||||
|
||||
map.putAll((Map) x);
|
||||
|
||||
map.put("prevNumber", 0.0);
|
||||
map.put("prevAmount", 0.0);
|
||||
map.put("prevPrice", 0.0);
|
||||
map.put("currNumber", 0.0);
|
||||
map.put("currAmount", 0.0);
|
||||
map.put("currPrice", 0.0);
|
||||
map.put("type0Number", 0.0);
|
||||
map.put("type1Number", 0.0);
|
||||
map.put("type0Amount", 0.0);
|
||||
map.put("type1Amount", 0.0);
|
||||
map.put("type0Price", 0.0);
|
||||
map.put("type1Price", 0.0);
|
||||
return map;
|
||||
}
|
||||
return null;
|
||||
})
|
||||
.toList();
|
||||
}
|
||||
|
||||
public Object report(WarehouseReportRequest request) {
|
||||
|
||||
request.setOrganizationId(Ctx.currentUser().getOrganizationId());
|
||||
@@ -785,139 +815,94 @@ from (
|
||||
newRequest.setEndTime(request.getStartTime().minusSeconds(1));
|
||||
|
||||
content = ((PageImpl) report(newRequest)).getContent();
|
||||
|
||||
} else {
|
||||
content =
|
||||
ans.stream()
|
||||
.map(
|
||||
x -> {
|
||||
if (x instanceof Map) {
|
||||
|
||||
HashMap<Object, Object> map = new HashMap<>();
|
||||
|
||||
map.putAll((Map) x);
|
||||
|
||||
map.put("prevNumber", 0.0);
|
||||
map.put("prevAmount", 0.0);
|
||||
map.put("prevPrice", 0.0);
|
||||
map.put("currNumber", 0.0);
|
||||
map.put("currAmount", 0.0);
|
||||
map.put("currPrice", 0.0);
|
||||
map.put("type0Number", 0.0);
|
||||
map.put("type1Number", 0.0);
|
||||
map.put("type0Amount", 0.0);
|
||||
map.put("type1Amount", 0.0);
|
||||
map.put("type0Price", 0.0);
|
||||
map.put("type1Price", 0.0);
|
||||
return map;
|
||||
}
|
||||
return null;
|
||||
})
|
||||
.toList();
|
||||
content = defaultMaps(ans);
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(content)) {
|
||||
content =
|
||||
ans.stream()
|
||||
.map(
|
||||
x -> {
|
||||
if (x instanceof Map) {
|
||||
|
||||
HashMap<Object, Object> map = new HashMap<>();
|
||||
|
||||
map.putAll((Map) x);
|
||||
|
||||
map.put("prevNumber", 0.0);
|
||||
map.put("prevAmount", 0.0);
|
||||
map.put("prevPrice", 0.0);
|
||||
map.put("currNumber", 0.0);
|
||||
map.put("currAmount", 0.0);
|
||||
map.put("currPrice", 0.0);
|
||||
map.put("type0Number", 0.0);
|
||||
map.put("type1Number", 0.0);
|
||||
map.put("type0Amount", 0.0);
|
||||
map.put("type1Amount", 0.0);
|
||||
map.put("type0Price", 0.0);
|
||||
map.put("type1Price", 0.0);
|
||||
return map;
|
||||
}
|
||||
return null;
|
||||
})
|
||||
.toList();
|
||||
content = defaultMaps(ans);
|
||||
}
|
||||
|
||||
for (Object o : content) {
|
||||
for (Object o : ans) {
|
||||
|
||||
if (o instanceof Map<?, ?> prevMap) {
|
||||
Map<String, Object> currMap = (Map<String, Object>) o;
|
||||
String uid = currMap.get("uid").toString();
|
||||
|
||||
String uid = prevMap.get("uid").toString();
|
||||
Map<String, Object> prevMap =
|
||||
(Map<String, Object>)
|
||||
content.stream()
|
||||
.filter(
|
||||
x ->
|
||||
x instanceof Map
|
||||
&& ((Map) x).get("uid").equals(uid))
|
||||
.findFirst()
|
||||
.orElseGet(() -> {
|
||||
|
||||
Map<String, Object> currMap =
|
||||
(Map<String, Object>)
|
||||
ans.stream()
|
||||
.filter(
|
||||
x ->
|
||||
x instanceof Map
|
||||
&& ((Map) x).get("uid").equals(uid))
|
||||
.findFirst()
|
||||
.get();
|
||||
HashMap<Object, Object> map = new HashMap<>();
|
||||
|
||||
Double prevType0Number =
|
||||
NumberUtil.parseDouble(prevMap.get("type0Number") + "", 0.0);
|
||||
Double prevType1Number =
|
||||
NumberUtil.parseDouble(prevMap.get("type1Number") + "", 0.0);
|
||||
|
||||
Double prevType0Amount =
|
||||
NumberUtil.parseDouble(prevMap.get("type0Amount") + "", 0.0);
|
||||
map.put("prevNumber", 0.0);
|
||||
map.put("prevAmount", 0.0);
|
||||
map.put("prevPrice", 0.0);
|
||||
map.put("currNumber", 0.0);
|
||||
map.put("currAmount", 0.0);
|
||||
map.put("currPrice", 0.0);
|
||||
map.put("type0Number", 0.0);
|
||||
map.put("type1Number", 0.0);
|
||||
map.put("type0Amount", 0.0);
|
||||
map.put("type1Amount", 0.0);
|
||||
map.put("type0Price", 0.0);
|
||||
map.put("type1Price", 0.0);
|
||||
return map;
|
||||
});
|
||||
|
||||
Double prevType1Amount =
|
||||
NumberUtil.parseDouble(prevMap.get("type1Amount") + "", 0.0);
|
||||
Double prevType0Number = NumberUtil.parseDouble(prevMap.get("type0Number") + "", 0.0);
|
||||
Double prevType1Number = NumberUtil.parseDouble(prevMap.get("type1Number") + "", 0.0);
|
||||
|
||||
Double prevNumber = prevType0Number - prevType1Number;
|
||||
Double prevType0Amount = NumberUtil.parseDouble(prevMap.get("type0Amount") + "", 0.0);
|
||||
|
||||
Double prevAmount = prevType0Amount - prevType1Amount;
|
||||
Double prevType1Amount = NumberUtil.parseDouble(prevMap.get("type1Amount") + "", 0.0);
|
||||
|
||||
Double currType0Number =
|
||||
NumberUtil.parseDouble(currMap.get("type0Number") + "", 0.0);
|
||||
Double prevNumber = prevType0Number - prevType1Number;
|
||||
|
||||
Double currType1Number =
|
||||
NumberUtil.parseDouble(currMap.get("type1Number") + "", 0.0);
|
||||
Double prevAmount = prevType0Amount - prevType1Amount;
|
||||
|
||||
Double currType0Amount =
|
||||
NumberUtil.parseDouble(currMap.get("type0Amount") + "", 0.0);
|
||||
Double currType0Number = NumberUtil.parseDouble(currMap.get("type0Number") + "", 0.0);
|
||||
|
||||
Double currType1Amount =
|
||||
NumberUtil.parseDouble(currMap.get("type1Amount") + "", 0.0);
|
||||
Double currType1Number = NumberUtil.parseDouble(currMap.get("type1Number") + "", 0.0);
|
||||
|
||||
Double currNumber = prevNumber + currType0Number - currType1Number;
|
||||
Double currType0Amount = NumberUtil.parseDouble(currMap.get("type0Amount") + "", 0.0);
|
||||
|
||||
Double currAmount = prevAmount + currType0Amount - currType1Amount;
|
||||
Double currType1Amount = NumberUtil.parseDouble(currMap.get("type1Amount") + "", 0.0);
|
||||
|
||||
Double currPrice =
|
||||
NumberUtils.round2(currNumber == 0 ? 0 : currAmount / currNumber);
|
||||
Double currNumber = prevNumber + currType0Number - currType1Number;
|
||||
|
||||
currMap.put("currNumber", currNumber);
|
||||
Double currAmount = prevAmount + currType0Amount - currType1Amount;
|
||||
|
||||
currMap.put("currAmount", currAmount);
|
||||
Double currPrice = NumberUtils.round2(currNumber == 0 ? 0 : currAmount / currNumber);
|
||||
|
||||
currMap.put("currPrice", currPrice);
|
||||
currMap.put("currNumber", currNumber);
|
||||
|
||||
currMap.put("prevNumber", prevNumber);
|
||||
currMap.put("currAmount", currAmount);
|
||||
|
||||
currMap.put("prevAmount", prevAmount);
|
||||
currMap.put("currPrice", currPrice);
|
||||
|
||||
currMap.put(
|
||||
"prevPrice",
|
||||
NumberUtils.round2(prevNumber == 0 ? 0 : prevAmount / prevNumber));
|
||||
currMap.put("prevNumber", prevNumber);
|
||||
|
||||
currMap.put("sum", sumAns.isEmpty() ? null : sumAns.get(0));
|
||||
currMap.put("prevAmount", prevAmount);
|
||||
|
||||
for (String s : currMap.keySet()) {
|
||||
currMap.put(
|
||||
"prevPrice", NumberUtils.round2(prevNumber == 0 ? 0 : prevAmount / prevNumber));
|
||||
|
||||
Object object = currMap.get(s);
|
||||
currMap.put("sum", sumAns.isEmpty() ? null : sumAns.get(0));
|
||||
|
||||
if (object instanceof Double) {
|
||||
currMap.put(s, NumberUtils.round2((Double) object));
|
||||
}
|
||||
for (String s : currMap.keySet()) {
|
||||
|
||||
Object object = currMap.get(s);
|
||||
|
||||
if (object instanceof Double) {
|
||||
currMap.put(s, NumberUtils.round2((Double) object));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user