|
|
@@ -0,0 +1,160 @@
|
|
|
+package org.springblade.salesPart.smartLargeScreenApi.service.impl;
|
|
|
+
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springblade.salesPart.brand.service.IBrandDescService;
|
|
|
+import org.springblade.salesPart.entity.PjBrandDesc;
|
|
|
+import org.springblade.salesPart.entity.PjOrder;
|
|
|
+import org.springblade.salesPart.entity.PjOrderItems;
|
|
|
+import org.springblade.salesPart.entity.PjStorageDesc;
|
|
|
+import org.springblade.salesPart.order.service.IOrderItemsService;
|
|
|
+import org.springblade.salesPart.order.service.IOrderService;
|
|
|
+import org.springblade.salesPart.smartLargeScreenApi.dto.BrandSort;
|
|
|
+import org.springblade.salesPart.smartLargeScreenApi.dto.WarehouseSort;
|
|
|
+import org.springblade.salesPart.smartLargeScreenApi.service.ApiService;
|
|
|
+import org.springblade.salesPart.storage.service.IStorageDescService;
|
|
|
+import org.springblade.system.feign.ISysClient;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author :jixinyuan
|
|
|
+ * @date : 2024/10/11
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class ApiServiceImpl implements ApiService {
|
|
|
+
|
|
|
+ private final IOrderService orderService;
|
|
|
+
|
|
|
+ private final IOrderItemsService orderItemsService;
|
|
|
+
|
|
|
+ private final ISysClient sysClient;
|
|
|
+
|
|
|
+ private final IBrandDescService brandDescService;
|
|
|
+
|
|
|
+ private final IStorageDescService storageDescService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> getTotalYear(String year) {
|
|
|
+ String tenantId = sysClient.getTenants("whether.financing");
|
|
|
+ List<PjOrder> orderList = orderService.getTotalYear(tenantId, year);
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ if (!orderList.isEmpty()) {
|
|
|
+ BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ map.put("amount", amount);
|
|
|
+ } else {
|
|
|
+ map.put("amount", new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> getTotalMonth(String year, String month) {
|
|
|
+ String tenantId = sysClient.getTenants("whether.financing");
|
|
|
+ if (month.length() == 1) {
|
|
|
+ month = "0" + month;
|
|
|
+ }
|
|
|
+ List<PjOrder> orderList = orderService.getTotalMonth(tenantId, year, month);
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ if (!orderList.isEmpty()) {
|
|
|
+ BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ map.put("amount", amount);
|
|
|
+ BigDecimal number = orderList.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ map.put("number", number);
|
|
|
+ } else {
|
|
|
+ map.put("amount", new BigDecimal("0.00"));
|
|
|
+ map.put("number", new BigDecimal("0"));
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getBrandSort(String year) {
|
|
|
+ String tenantId = sysClient.getTenants("whether.financing");
|
|
|
+ List<PjBrandDesc> brandDescList = brandDescService.getTenants(tenantId);
|
|
|
+ BigDecimal numberSum = new BigDecimal("0");
|
|
|
+ List<PjOrderItems> orderItemsList = orderItemsService.getListByTenant(tenantId, year);
|
|
|
+ if (!orderItemsList.isEmpty()) {
|
|
|
+ numberSum = orderItemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ }
|
|
|
+ List<BrandSort> brandSortList = new ArrayList<>();
|
|
|
+ for (PjBrandDesc item : brandDescList) {
|
|
|
+ BrandSort brandSort = new BrandSort();
|
|
|
+ brandSort.setBrandName(item.getCname() + ":");
|
|
|
+ if (!orderItemsList.isEmpty()) {
|
|
|
+ List<PjOrderItems> itemsList = orderItemsList.stream().filter(e -> e.getBrandName().equals(item.getCname()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (!itemsList.isEmpty()){
|
|
|
+ BigDecimal number = itemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ brandSort.setNumber(number);
|
|
|
+ if (numberSum.compareTo(new BigDecimal("0")) != 0 && number.compareTo(new BigDecimal("0")) != 0) {
|
|
|
+ brandSort.setProportion("占比" + number.divide(numberSum, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")) + "%");
|
|
|
+ } else {
|
|
|
+ brandSort.setProportion("占比0%");
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ brandSort.setNumber(new BigDecimal("0"));
|
|
|
+ brandSort.setProportion("占比0%");
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ brandSort.setNumber(new BigDecimal("0"));
|
|
|
+ brandSort.setProportion("占比0%");
|
|
|
+ }
|
|
|
+ brandSortList.add(brandSort);
|
|
|
+ }
|
|
|
+ List<BrandSort> sortList = brandSortList.stream()
|
|
|
+ .sorted(Comparator.comparing(BrandSort::getNumber).reversed())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<Map<String, Object>> mapList = new ArrayList<>();
|
|
|
+ for (BrandSort item : sortList) {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("name", item.getBrandName());
|
|
|
+ map.put("value", item.getNumber());
|
|
|
+ map.put("proportion", item.getProportion());
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ return mapList;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> getWarehouseSort(String year) {
|
|
|
+ String tenantId = sysClient.getTenants("whether.financing");
|
|
|
+ List<PjStorageDesc> storageDescList = storageDescService.getTenants(tenantId);
|
|
|
+ List<PjOrder> orderList = orderService.getTotalYear(tenantId, year);
|
|
|
+ List<WarehouseSort> warehouseSortList = new ArrayList<>();
|
|
|
+ for (PjStorageDesc item : storageDescList) {
|
|
|
+ WarehouseSort warehouseSort = new WarehouseSort();
|
|
|
+ warehouseSort.setWarehouseName(item.getCname());
|
|
|
+ if (!orderList.isEmpty()){
|
|
|
+ List<PjOrder> orders = orderList.stream().filter(e -> e.getStockClerkName().equals(item.getCname()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (!orders.isEmpty()){
|
|
|
+ BigDecimal number = orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ warehouseSort.setNumber(number);
|
|
|
+ }else{
|
|
|
+ warehouseSort.setNumber(new BigDecimal("0"));
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ warehouseSort.setNumber(new BigDecimal("0"));
|
|
|
+ }
|
|
|
+ warehouseSortList.add(warehouseSort);
|
|
|
+ }
|
|
|
+ List<WarehouseSort> sortList = warehouseSortList.stream()
|
|
|
+ .sorted(Comparator.comparing(WarehouseSort::getNumber).reversed())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ List<String> name = new ArrayList<>();
|
|
|
+ List<BigDecimal> value = new ArrayList<>();
|
|
|
+ for (WarehouseSort item : sortList) {
|
|
|
+ name.add(item.getWarehouseName());
|
|
|
+ value.add(item.getNumber());
|
|
|
+ }
|
|
|
+ map.put("name", name);
|
|
|
+ map.put("value", value);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+}
|