diff --git a/src/main/java/cn/lihongjie/coal/warehouseReceipt/service/WarehouseReceiptService.java b/src/main/java/cn/lihongjie/coal/warehouseReceipt/service/WarehouseReceiptService.java index 6fe9cb05..5511d202 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseReceipt/service/WarehouseReceiptService.java +++ b/src/main/java/cn/lihongjie/coal/warehouseReceipt/service/WarehouseReceiptService.java @@ -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> defaultMaps(List ans) { + return ans.stream() + .map( + x -> { + if (x instanceof Map) { + + HashMap 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 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 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 currMap = (Map) o; + String uid = currMap.get("uid").toString(); - String uid = prevMap.get("uid").toString(); + Map prevMap = + (Map) + content.stream() + .filter( + x -> + x instanceof Map + && ((Map) x).get("uid").equals(uid)) + .findFirst() + .orElseGet(() -> { - Map currMap = - (Map) - ans.stream() - .filter( - x -> - x instanceof Map - && ((Map) x).get("uid").equals(uid)) - .findFirst() - .get(); + HashMap 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)); } } }