mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 23:57:12 +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.BooleanUtils;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.convert.ConversionService;
|
import org.springframework.core.convert.ConversionService;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
@@ -490,6 +491,35 @@ public class WarehouseReceiptService
|
|||||||
|
|
||||||
@PersistenceContext EntityManager em;
|
@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) {
|
public Object report(WarehouseReportRequest request) {
|
||||||
|
|
||||||
request.setOrganizationId(Ctx.currentUser().getOrganizationId());
|
request.setOrganizationId(Ctx.currentUser().getOrganizationId());
|
||||||
@@ -785,139 +815,94 @@ from (
|
|||||||
newRequest.setEndTime(request.getStartTime().minusSeconds(1));
|
newRequest.setEndTime(request.getStartTime().minusSeconds(1));
|
||||||
|
|
||||||
content = ((PageImpl) report(newRequest)).getContent();
|
content = ((PageImpl) report(newRequest)).getContent();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
content =
|
content = defaultMaps(ans);
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(content)) {
|
if (CollectionUtils.isEmpty(content)) {
|
||||||
content =
|
content = defaultMaps(ans);
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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 =
|
HashMap<Object, Object> map = new HashMap<>();
|
||||||
(Map<String, Object>)
|
|
||||||
ans.stream()
|
|
||||||
.filter(
|
|
||||||
x ->
|
|
||||||
x instanceof Map
|
|
||||||
&& ((Map) x).get("uid").equals(uid))
|
|
||||||
.findFirst()
|
|
||||||
.get();
|
|
||||||
|
|
||||||
Double prevType0Number =
|
|
||||||
NumberUtil.parseDouble(prevMap.get("type0Number") + "", 0.0);
|
|
||||||
Double prevType1Number =
|
|
||||||
NumberUtil.parseDouble(prevMap.get("type1Number") + "", 0.0);
|
|
||||||
|
|
||||||
Double prevType0Amount =
|
map.put("prevNumber", 0.0);
|
||||||
NumberUtil.parseDouble(prevMap.get("type0Amount") + "", 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 =
|
Double prevType0Number = NumberUtil.parseDouble(prevMap.get("type0Number") + "", 0.0);
|
||||||
NumberUtil.parseDouble(prevMap.get("type1Amount") + "", 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 =
|
Double prevNumber = prevType0Number - prevType1Number;
|
||||||
NumberUtil.parseDouble(currMap.get("type0Number") + "", 0.0);
|
|
||||||
|
|
||||||
Double currType1Number =
|
Double prevAmount = prevType0Amount - prevType1Amount;
|
||||||
NumberUtil.parseDouble(currMap.get("type1Number") + "", 0.0);
|
|
||||||
|
|
||||||
Double currType0Amount =
|
Double currType0Number = NumberUtil.parseDouble(currMap.get("type0Number") + "", 0.0);
|
||||||
NumberUtil.parseDouble(currMap.get("type0Amount") + "", 0.0);
|
|
||||||
|
|
||||||
Double currType1Amount =
|
Double currType1Number = NumberUtil.parseDouble(currMap.get("type1Number") + "", 0.0);
|
||||||
NumberUtil.parseDouble(currMap.get("type1Amount") + "", 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 =
|
Double currNumber = prevNumber + currType0Number - currType1Number;
|
||||||
NumberUtils.round2(currNumber == 0 ? 0 : currAmount / currNumber);
|
|
||||||
|
|
||||||
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(
|
currMap.put("prevNumber", prevNumber);
|
||||||
"prevPrice",
|
|
||||||
NumberUtils.round2(prevNumber == 0 ? 0 : prevAmount / 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) {
|
for (String s : currMap.keySet()) {
|
||||||
currMap.put(s, NumberUtils.round2((Double) object));
|
|
||||||
}
|
Object object = currMap.get(s);
|
||||||
|
|
||||||
|
if (object instanceof Double) {
|
||||||
|
currMap.put(s, NumberUtils.round2((Double) object));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user