纪新园 пре 1 година
родитељ
комит
fdec25a5d5
19 измењених фајлова са 422 додато и 61 уклоњено
  1. 3 3
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
  2. 1 1
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
  3. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/StorageServiceImpl.java
  4. 2 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java
  5. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/IGoodsDescService.java
  6. 5 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsDescServiceImpl.java
  7. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.java
  8. 25 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml
  9. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderItemsService.java
  10. 5 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderItemsServiceImpl.java
  11. 3 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  12. 40 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/controller/LargeScreenYcpApiController.java
  13. 17 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/dto/TyreSaleBrand.java
  14. 18 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/dto/TyreSaleCorp.java
  15. 20 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/dto/TyreSaleSize.java
  16. 10 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/ApiService.java
  17. 226 14
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/impl/ApiServiceImpl.java
  18. 37 37
      blade-service/blade-sales-part/src/main/resources/log/logback-dev.xml
  19. 2 1
      blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

+ 3 - 3
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java

@@ -76,7 +76,7 @@ public interface ISysClient {
 	String UPDATE_BY_DEPT = API_PREFIX + "/updateByDept";
 	String GET_DEPT_LIST = API_PREFIX + "/getDeptList";
 	String GET_TENANT_IDS = API_PREFIX + "/getTenantIds";
-	String GET_PARAM_SERVICE_SHIPPING_FEE = API_PREFIX + "/getParamServiceShippingFee";
+	String PARAM_SERVICE_VALUE = API_PREFIX + "/paramServiceValue";
 
 
 	/**
@@ -388,6 +388,6 @@ public interface ISysClient {
 	@GetMapping(GET_TENANT_IDS)
 	String getTenantIds(@RequestParam("paramKey") String paramKey);
 
-	@GetMapping(GET_PARAM_SERVICE_SHIPPING_FEE)
-	String getParamServiceShippingFee(@RequestParam("tenantId") String tenantId,@RequestParam("paramKey") String paramKey);
+	@GetMapping(PARAM_SERVICE_VALUE)
+	String paramServiceValue(@RequestParam(value = "tenantId",required = false) String tenantId,@RequestParam(value = "paramKey",required = false) String paramKey);
 }

+ 1 - 1
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java

@@ -211,7 +211,7 @@ public class ISysClientFallback implements ISysClient {
 	}
 
 	@Override
-	public String getParamServiceShippingFee(String tenantId, String paramKey) {
+	public String paramServiceValue(String tenantId, String paramKey) {
 		return "";
 	}
 

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/StorageServiceImpl.java

@@ -99,7 +99,7 @@ public class StorageServiceImpl extends ServiceImpl<StorageMapper, Storage> impl
 		this.saveOrUpdate(storage);
 		if (ObjectUtils.isNotNull(storage.getStorageFeeItemsList()) && !storage.getStorageFeeItemsList().isEmpty()) {
 			for (StorageFeeItems item : storage.getStorageFeeItemsList()) {
-				long num = storage.getStorageFeeItemsList().stream().filter(e -> e.getFeeId().equals(item.getFeeId())).count();
+				long num = storage.getStorageFeeItemsList().stream().filter(e -> e.getGoodsType().equals(item.getGoodsType())).count();
 				if (num > 1) {
 					throw new RuntimeException("商品类别" + item.getGoodsType() + "不允许重复添加");
 				}

+ 2 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java

@@ -118,7 +118,8 @@ public class GoodsDescController extends BladeController {
 
 		lambdaQueryWrapper.select(PjGoodsDesc::getId, PjGoodsDesc::getCname, PjGoodsDesc::getCode, PjGoodsDesc::getSpecificationAndModel, PjGoodsDesc::getBrandItem,
 				PjGoodsDesc::getBrandName, PjGoodsDesc::getGoodsSize, PjGoodsDesc::getInventoryAlert, PjGoodsDesc::getGoodsDescription,
-				PjGoodsDesc::getStatus, PjGoodsDesc::getEnableOrNot).eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+				PjGoodsDesc::getStatus, PjGoodsDesc::getEnableOrNot,PjGoodsDesc::getUnit)
+			.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(PjGoodsDesc::getIsDeleted, 0)
 			.eq(PjGoodsDesc::getSalesCompanyId, AuthUtil.getDeptId())//公司
 			.like(StringUtils.isNotBlank(goods.getSpecificationAndModel()), PjGoodsDesc::getSpecificationAndModel, goods.getSpecificationAndModel())//规格型号

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/IGoodsDescService.java

@@ -92,4 +92,6 @@ public interface IGoodsDescService extends IService<PjGoodsDesc> {
 	PjGoodsDesc getGoodsDetail(PjGoodsDesc goodsDesc);
 
 	R synchronization();
+
+    List<PjGoodsDesc> selectGoodsList(String tenantId, String goodsIds);
 }

+ 5 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsDescServiceImpl.java

@@ -539,7 +539,6 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-
 	public R synchronization() {
 		List<PjGoodsDesc> goodsDescList = baseMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
 			.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
@@ -603,6 +602,11 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 		return R.data("操作成功");
 	}
 
+	@Override
+	public List<PjGoodsDesc> selectGoodsList(String tenantId, String goodsIds) {
+		return baseMapper.selectListNotTenantId(tenantId,goodsIds);
+	}
+
 	/**
 	 * 校验商品唯一性
 	 *

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.java

@@ -53,4 +53,7 @@ public interface OrderItemsMapper extends BaseMapper<PjOrderItems> {
 
 	@TenantIgnore
 	List<PjOrderItems> getListByTenant(@Param("tenantId")String tenantId, @Param("year")String year);
+
+	@TenantIgnore
+	List<PjOrderItems> selectOrderItemsList(@Param("tenantId")String tenantId, @Param("type")String type);
 }

+ 25 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml

@@ -480,6 +480,31 @@
           AND DATE_FORMAT(po.busines_date, '%Y') = #{year}
           AND find_in_set(poi.tenant_id, #{tenantId})
     </select>
+    <select id="selectOrderItemsList" resultType="org.springblade.salesPart.entity.PjOrderItems">
+        SELECT
+        *
+        FROM
+        pjpf_order_items poi
+        left join pjpf_order po on poi.pid = po.id
+        WHERE
+        poi.is_deleted = '0'
+        AND po.is_deleted = '0'
+        AND po.bs_type = 'XS'
+        AND poi.tenant_id = #{tenantId}
+        AND po..tenant_id = #{tenantId}
+        <if test="type !=null and type != '' and type == '1'">
+            AND DATE(po.busines_date) = CURDATE()
+        </if>
+        <if test="type !=null and type != '' and type == '2'">
+            AND DATE_FORMAT(po.busines_date, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m');
+        </if>
+        <if test="type !=null and type != '' and type == '3'">
+            AND YEAR(po.busines_date) = YEAR(CURDATE())
+        </if>
+        <if test="type !=null and type != '' and type == '4'">
+            AND DATEDIFF(CURDATE(), po.busines_date) &lt;= 90
+        </if>
+    </select>
 
 
 </mapper>

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderItemsService.java

@@ -51,4 +51,6 @@ public interface IOrderItemsService extends IService<PjOrderItems> {
 	List<SaleDetailDto> saleDetailList(SaleDetail saleDetailDto);
 
     List<PjOrderItems> getListByTenant(String tenantId, String year);
+
+    List<PjOrderItems> selectOrderItemsList(String tenantId, String type);
 }

+ 5 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderItemsServiceImpl.java

@@ -94,5 +94,10 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, PjOrder
 		return baseMapper.getListByTenant(tenantId,year);
 	}
 
+	@Override
+	public List<PjOrderItems> selectOrderItemsList(String tenantId, String type) {
+		return baseMapper.selectOrderItemsList(tenantId,type);
+	}
+
 
 }

+ 3 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -5450,8 +5450,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		} else {
 			order.setStatus("待确认");
 		}
-		if (!"TKXS".equals(order.getBsType()) && !"TKCG".equals(order.getBsType()) && !"CG".equals(order.getBsType())
-			&& !"RZCG".equals(order.getBsType())) {
+		if ("XS".equals(order.getBsType())) {
+			order.setStatus("已取消");
+			order.setXcxStatus("已取消");
 			order.setReturnsStatus("全退");
 			order.setReturnsNumber(order.getGoodsTotalNum());
 			order.setReturnsAmount(order.getPaymentAmountTl());

+ 40 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/controller/LargeScreenYcpApiController.java

@@ -243,4 +243,44 @@ public class LargeScreenYcpApiController extends BladeController {
 		return apiService.corpTop(tenantId);
 	}
 
+	/**
+	 * 轮胎销售尺寸占比
+	 */
+	@GetMapping("/tyreSaleSizeProportion")
+	public List<Map<String, Object>> tyreSaleSizeProportion(@RequestParam(value = "tenantId") String tenantId) {
+		return apiService.tyreSaleSizeProportion(tenantId);
+	}
+
+	/**
+	 * 轮胎销售尺寸明细
+	 */
+	@GetMapping("/tyreSaleSizeDetail")
+	public List<Map<String, Object>> tyreSaleSizeDetail(@RequestParam(value = "tenantId") String tenantId) {
+		return apiService.tyreSaleSizeDetail(tenantId);
+	}
+
+	/**
+	 * 轮胎品牌销量占比
+	 */
+	@GetMapping("/tyreBrandSalesVolumeProportion")
+	public List<Map<String, Object>> tyreBrandSalesVolumeProportion(@RequestParam(value = "tenantId") String tenantId) {
+		return apiService.tyreBrandSalesVolumeProportion(tenantId);
+	}
+
+	/**
+	 * 轮胎品牌销量占比明细
+	 */
+	@GetMapping("/tyreBrandSalesVolumeDetail")
+	public List<Map<String, Object>> tyreBrandSalesVolumeDetail(@RequestParam(value = "tenantId") String tenantId) {
+		return apiService.tyreBrandSalesVolumeDetail(tenantId);
+	}
+
+	/**
+	 * 客户地图坐标
+	 */
+	@GetMapping("/corpMap")
+	public List<Map<String, Object>> corpMap(@RequestParam(value = "tenantId") String tenantId) {
+		return apiService.corpMap(tenantId);
+	}
+
 }

+ 17 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/dto/TyreSaleBrand.java

@@ -0,0 +1,17 @@
+package org.springblade.salesPart.smartLargeScreenApi.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/12/24
+ */
+@Data
+public class TyreSaleBrand {
+
+	private String brand;
+
+	private BigDecimal number;
+}

+ 18 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/dto/TyreSaleCorp.java

@@ -0,0 +1,18 @@
+package org.springblade.salesPart.smartLargeScreenApi.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/12/24
+ */
+@Data
+public class TyreSaleCorp {
+
+	private String corpName;
+
+	private BigDecimal number;
+
+}

+ 20 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/dto/TyreSaleSize.java

@@ -0,0 +1,20 @@
+package org.springblade.salesPart.smartLargeScreenApi.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/12/24
+ */
+@Data
+public class TyreSaleSize {
+
+	private String size;
+
+	private BigDecimal number;
+
+	private Long goodsId;
+
+}

+ 10 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/ApiService.java

@@ -72,4 +72,14 @@ public interface ApiService {
 	List<Map<String, Object>> monthlySalesTrend(String tenantId);
 
 	List<Map<String, Object>> corpTop(String tenantId);
+
+	List<Map<String, Object>> tyreSaleSizeProportion(String tenantId);
+
+	List<Map<String, Object>> tyreSaleSizeDetail(String tenantId);
+
+	List<Map<String, Object>> tyreBrandSalesVolumeProportion(String tenantId);
+
+	List<Map<String, Object>> tyreBrandSalesVolumeDetail(String tenantId);
+
+	List<Map<String, Object>> corpMap(String tenantId);
 }

+ 226 - 14
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/impl/ApiServiceImpl.java

@@ -5,11 +5,10 @@ import lombok.AllArgsConstructor;
 import org.springblade.salesPart.brand.service.IBrandDescService;
 import org.springblade.salesPart.corps.service.ICorpsDescService;
 import org.springblade.salesPart.entity.*;
+import org.springblade.salesPart.goods.service.IGoodsDescService;
 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.MonthlySalesTrend;
-import org.springblade.salesPart.smartLargeScreenApi.dto.WarehouseSort;
+import org.springblade.salesPart.smartLargeScreenApi.dto.*;
 import org.springblade.salesPart.smartLargeScreenApi.service.ApiService;
 import org.springblade.salesPart.stock.service.IStockDescService;
 import org.springblade.salesPart.storage.service.IStorageDescService;
@@ -43,6 +42,8 @@ public class ApiServiceImpl implements ApiService {
 
 	private final IStockDescService stockDescService;
 
+	private final IGoodsDescService goodsDescService;
+
 	@Override
 	public Map<String, Object> getTotalYear(String year) {
 		String tenantId = sysClient.getTenantIds("whether.financing");
@@ -279,7 +280,7 @@ public class ApiServiceImpl implements ApiService {
 
 	@Override
 	public List<Map<String, Object>> averageSingleTireShippingFee(String tenantId) {
-		String data = sysClient.getParamServiceShippingFee(tenantId, "large.screen.average.freight");
+		String data = sysClient.paramServiceValue(tenantId, "large.screen.average.freight");
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (ObjectUtils.isNotNull(data)) {
@@ -394,7 +395,7 @@ public class ApiServiceImpl implements ApiService {
 
 	@Override
 	public List<Map<String, Object>> salesTask(String tenantId) {
-		String data = sysClient.getParamServiceShippingFee(tenantId, "sales.task");
+		String data = sysClient.paramServiceValue(tenantId, "sales.task");
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (ObjectUtils.isNotNull(data)) {
@@ -426,7 +427,7 @@ public class ApiServiceImpl implements ApiService {
 
 	@Override
 	public List<Map<String, Object>> salesPerformanceProportion(String tenantId) {
-		String data = sysClient.getParamServiceShippingFee(tenantId, "sales.task");
+		String data = sysClient.paramServiceValue(tenantId, "sales.task");
 		List<PjOrder> orderList = orderService.selectPjOrderList(tenantId, "2");
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
@@ -450,7 +451,7 @@ public class ApiServiceImpl implements ApiService {
 
 	@Override
 	public List<Map<String, Object>> tyreQuantityTask(String tenantId) {
-		String data = sysClient.getParamServiceShippingFee(tenantId, "tyre.quantity.task");
+		String data = sysClient.paramServiceValue(tenantId, "tyre.quantity.task");
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (ObjectUtils.isNotNull(data)) {
@@ -482,7 +483,7 @@ public class ApiServiceImpl implements ApiService {
 
 	@Override
 	public List<Map<String, Object>> tyreQuantityProportion(String tenantId) {
-		String data = sysClient.getParamServiceShippingFee(tenantId, "tyre.quantity.task");
+		String data = sysClient.paramServiceValue(tenantId, "tyre.quantity.task");
 		List<PjOrder> orderList = orderService.selectPjOrderList(tenantId, "2");
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
@@ -506,7 +507,7 @@ public class ApiServiceImpl implements ApiService {
 
 	@Override
 	public List<Map<String, Object>> storeTransactionTask(String tenantId) {
-		String data = sysClient.getParamServiceShippingFee(tenantId, "store.transaction.task");
+		String data = sysClient.paramServiceValue(tenantId, "store.transaction.task");
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (ObjectUtils.isNotNull(data)) {
@@ -538,7 +539,7 @@ public class ApiServiceImpl implements ApiService {
 
 	@Override
 	public List<Map<String, Object>> storeTransactionProportion(String tenantId) {
-		String data = sysClient.getParamServiceShippingFee(tenantId, "store.transaction.task");
+		String data = sysClient.paramServiceValue(tenantId, "store.transaction.task");
 		List<PjOrder> orderList = orderService.selectPjOrderList(tenantId, "2");
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
@@ -619,7 +620,7 @@ public class ApiServiceImpl implements ApiService {
 	public List<Map<String, Object>> monthlySalesTrend(String tenantId) {
 		List<PjOrder> orderList = orderService.selectPjOrderList(tenantId, "2");
 		List<Map<String, Object>> mapList = new ArrayList<>();
-		if (!orderList.isEmpty()){
+		if (!orderList.isEmpty()) {
 			List<MonthlySalesTrend> list = new ArrayList<>();
 			Calendar calendar = Calendar.getInstance();
 			for (PjOrder item : orderList) {
@@ -636,9 +637,9 @@ public class ApiServiceImpl implements ApiService {
 			for (Integer item : day) {
 				Map<String, Object> map = new HashMap<>();
 				map.put("x", item);
-				map.put("y", salesTrendList.stream().filter(e-> e.getDate().equals(item))
+				map.put("y", salesTrendList.stream().filter(e -> e.getDate().equals(item))
 					.map(MonthlySalesTrend::getAmount).max(BigDecimal::compareTo));
-				map.put("z", salesTrendList.stream().filter(e-> e.getDate().equals(item))
+				map.put("z", salesTrendList.stream().filter(e -> e.getDate().equals(item))
 					.map(MonthlySalesTrend::getAmount).min(BigDecimal::compareTo));
 				mapList.add(map);
 			}
@@ -648,6 +649,217 @@ public class ApiServiceImpl implements ApiService {
 
 	@Override
 	public List<Map<String, Object>> corpTop(String tenantId) {
-		return null;
+		List<PjOrder> orderList = orderService.selectPjOrderList(tenantId, "2");
+		List<Map<String, Object>> mapList = new ArrayList<>();
+		if (!orderList.isEmpty()) {
+			List<String> corpIdList = orderList.stream().map(PjOrder::getCustomerName).distinct().collect(Collectors.toList());
+			List<TyreSaleCorp> saleCorpList = new ArrayList<>();
+			for (String item : corpIdList) {
+				TyreSaleCorp corp = new TyreSaleCorp();
+				corp.setCorpName(item);
+				corp.setNumber(orderList.stream().filter(e -> e.getCustomerName().equals(item)).map(PjOrder::getGoodsTotalNum)
+					.reduce(BigDecimal.ZERO, BigDecimal::add));
+				saleCorpList.add(corp);
+			}
+			List<TyreSaleCorp> itemsList = saleCorpList.stream()
+				.sorted(Comparator.comparing(TyreSaleCorp::getNumber))
+				.collect(Collectors.toList());
+			List<TyreSaleCorp> corpList = new ArrayList<>();
+			for (int i = 0; i <= 4; i++) {
+				corpList.add(itemsList.get(i));
+			}
+			for (TyreSaleCorp item : corpList) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("name", item.getCorpName());
+				map.put("number", item.getNumber());
+				BigDecimal sumNumber = orderList.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (new BigDecimal("0.00").compareTo(sumNumber) != 0) {
+					map.put("proportion", item.getNumber().divide(sumNumber, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
+				} else {
+					map.put("proportion", new BigDecimal("0"));
+				}
+				mapList.add(map);
+			}
+
+		}
+		return mapList;
+	}
+
+	@Override
+	public List<Map<String, Object>> tyreSaleSizeProportion(String tenantId) {
+		List<PjOrderItems> orderItemsList = orderItemsService.selectOrderItemsList(tenantId, "");
+		List<Map<String, Object>> mapList = new ArrayList<>();
+		if (!orderItemsList.isEmpty()) {
+			List<TyreSaleSize> saleSizeList = new ArrayList<>();
+			List<Long> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
+			for (Long items : goodsId) {
+				TyreSaleSize detail = new TyreSaleSize();
+				detail.setGoodsId(items);
+				detail.setNumber(orderItemsList.stream().filter(e -> e.getGoodsId().equals(items)).map(PjOrderItems::getGoodsNum)
+					.reduce(BigDecimal.ZERO, BigDecimal::add));
+				saleSizeList.add(detail);
+			}
+			List<TyreSaleSize> itemsList = saleSizeList.stream()
+				.sorted(Comparator.comparing(TyreSaleSize::getNumber))
+				.collect(Collectors.toList());
+			List<TyreSaleSize> sizeList = new ArrayList<>();
+			StringBuilder goodsIds = new StringBuilder();
+			for (int i = 0; i <= 4; i++) {
+				goodsIds.append(itemsList.get(i).getGoodsId()).append(",");
+				sizeList.add(itemsList.get(i));
+			}
+			List<PjGoodsDesc> goodsDescList = goodsDescService.selectGoodsList(tenantId, goodsIds.toString());
+			for (TyreSaleSize item : sizeList) {
+				Map<String, Object> map = new HashMap<>();
+				if (!goodsDescList.isEmpty()) {
+					PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
+					if (goodsDesc != null) {
+						map.put("size", goodsDesc.getGoodsSize());
+					} else {
+						map.put("size", "");
+					}
+				} else {
+					map.put("size", "");
+				}
+				map.put("number", item.getNumber());
+				mapList.add(map);
+			}
+		}
+		return mapList;
+	}
+
+	@Override
+	public List<Map<String, Object>> tyreSaleSizeDetail(String tenantId) {
+		List<PjOrderItems> orderItemsList = orderItemsService.selectOrderItemsList(tenantId, "");
+		List<Map<String, Object>> mapList = new ArrayList<>();
+		if (!orderItemsList.isEmpty()) {
+			List<TyreSaleSize> saleSizeList = new ArrayList<>();
+			List<Long> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
+			for (Long items : goodsId) {
+				TyreSaleSize detail = new TyreSaleSize();
+				detail.setGoodsId(items);
+				detail.setNumber(orderItemsList.stream().filter(e -> e.getGoodsId().equals(items)).map(PjOrderItems::getGoodsNum)
+					.reduce(BigDecimal.ZERO, BigDecimal::add));
+				saleSizeList.add(detail);
+			}
+			List<TyreSaleSize> itemsList = saleSizeList.stream()
+				.sorted(Comparator.comparing(TyreSaleSize::getNumber))
+				.collect(Collectors.toList());
+			List<TyreSaleSize> sizeList = new ArrayList<>();
+			StringBuilder goodsIds = new StringBuilder();
+			for (int i = 0; i <= 4; i++) {
+				goodsIds.append(itemsList.get(i).getGoodsId()).append(",");
+				sizeList.add(itemsList.get(i));
+			}
+			List<PjGoodsDesc> goodsDescList = goodsDescService.selectGoodsList(tenantId, goodsIds.toString());
+			for (TyreSaleSize item : sizeList) {
+				Map<String, Object> map = new HashMap<>();
+				if (!goodsDescList.isEmpty()) {
+					PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
+					if (goodsDesc != null) {
+						map.put("size", goodsDesc.getGoodsSize());
+					} else {
+						map.put("size", "");
+					}
+				} else {
+					map.put("size", "");
+				}
+				map.put("number", item.getNumber());
+				BigDecimal sumNumber = orderItemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (new BigDecimal("0.00").compareTo(sumNumber) != 0) {
+					map.put("proportion", item.getNumber().divide(sumNumber, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
+				} else {
+					map.put("proportion", new BigDecimal("0"));
+				}
+				mapList.add(map);
+			}
+		}
+		return mapList;
+	}
+
+	@Override
+	public List<Map<String, Object>> tyreBrandSalesVolumeProportion(String tenantId) {
+		List<PjOrderItems> orderItemsList = orderItemsService.selectOrderItemsList(tenantId, "");
+		List<Map<String, Object>> mapList = new ArrayList<>();
+		if (!orderItemsList.isEmpty()) {
+			List<TyreSaleBrand> saleBrandList = new ArrayList<>();
+			List<String> brandsList = orderItemsList.stream().map(PjOrderItems::getBrandName).distinct().collect(Collectors.toList());
+			for (String items : brandsList) {
+				TyreSaleBrand detail = new TyreSaleBrand();
+				detail.setBrand(items);
+				detail.setNumber(orderItemsList.stream().filter(e -> e.getBrandName().equals(items)).map(PjOrderItems::getGoodsNum)
+					.reduce(BigDecimal.ZERO, BigDecimal::add));
+				saleBrandList.add(detail);
+			}
+			List<TyreSaleBrand> itemsList = saleBrandList.stream()
+				.sorted(Comparator.comparing(TyreSaleBrand::getNumber))
+				.collect(Collectors.toList());
+			List<TyreSaleBrand> brandList = new ArrayList<>();
+			for (int i = 0; i <= 4; i++) {
+				brandList.add(itemsList.get(i));
+			}
+			for (TyreSaleBrand item : brandList) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("brand", item.getBrand());
+				map.put("number", item.getNumber());
+				mapList.add(map);
+			}
+		}
+		return mapList;
+	}
+
+	@Override
+	public List<Map<String, Object>> tyreBrandSalesVolumeDetail(String tenantId) {
+		List<PjOrderItems> orderItemsList = orderItemsService.selectOrderItemsList(tenantId, "");
+		List<Map<String, Object>> mapList = new ArrayList<>();
+		if (!orderItemsList.isEmpty()) {
+			List<TyreSaleBrand> saleBrandList = new ArrayList<>();
+			List<String> brandsList = orderItemsList.stream().map(PjOrderItems::getBrandName).distinct().collect(Collectors.toList());
+			for (String items : brandsList) {
+				TyreSaleBrand detail = new TyreSaleBrand();
+				detail.setBrand(items);
+				detail.setNumber(orderItemsList.stream().filter(e -> e.getBrandName().equals(items)).map(PjOrderItems::getGoodsNum)
+					.reduce(BigDecimal.ZERO, BigDecimal::add));
+				saleBrandList.add(detail);
+			}
+			List<TyreSaleBrand> itemsList = saleBrandList.stream()
+				.sorted(Comparator.comparing(TyreSaleBrand::getNumber))
+				.collect(Collectors.toList());
+			List<TyreSaleBrand> brandList = new ArrayList<>();
+			for (int i = 0; i <= 4; i++) {
+				brandList.add(itemsList.get(i));
+			}
+			for (TyreSaleBrand item : brandList) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("brand", item.getBrand());
+				map.put("number", item.getNumber());
+				BigDecimal sumNumber = orderItemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (new BigDecimal("0.00").compareTo(sumNumber) != 0) {
+					map.put("proportion", item.getNumber().divide(sumNumber, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
+				} else {
+					map.put("proportion", new BigDecimal("0"));
+				}
+				mapList.add(map);
+			}
+		}
+		return mapList;
+	}
+
+	@Override
+	public List<Map<String, Object>> corpMap(String tenantId) {
+		List<PjCorpsDesc> corpsDescList = corpsDescService.selectCorpList(tenantId);
+		List<Map<String, Object>> mapList = new ArrayList<>();
+		if (!corpsDescList.isEmpty()) {
+			for (PjCorpsDesc item : corpsDescList) {
+				Map<String, Object> map = new HashMap<>();
+				if (ObjectUtils.isNotNull(item.getLongitude()) && ObjectUtils.isNotNull(item.getDimension())) {
+					map.put("name", item.getCname());
+					map.put("lat", item.getLongitude());
+					map.put("lng", item.getDimension());
+					mapList.add(map);
+				}
+			}
+		}
+		return mapList;
 	}
 }

+ 37 - 37
blade-service/blade-sales-part/src/main/resources/log/logback-dev.xml

@@ -58,56 +58,56 @@
     </if>
 
     <!-- 日志输出级别 -->
-    <root level="info">
+    <root level="ERROR">
         <appender-ref ref="STDOUT"/>
         <appender-ref ref="${STDOUT_APPENDER}"/>
     </root>
 
-    <logger name="net.sf.ehcache" level="info"/>
-    <logger name="druid.sql" level="info"/>
+    <logger name="net.sf.ehcache" level="ERROR"/>
+    <logger name="druid.sql" level="ERROR"/>
 
 
     <!-- MyBatis log configure -->
-    <logger name="com.apache.ibatis" level="info"/>
-    <logger name="org.mybatis.spring" level="info"/>
-    <logger name="java.sql.Connection" level="info"/>
-    <logger name="java.sql.Statement" level="info"/>
-    <logger name="java.sql.PreparedStatement" level="info"/>
+    <logger name="com.apache.ibatis" level="ERROR"/>
+    <logger name="org.mybatis.spring" level="ERROR"/>
+    <logger name="java.sql.Connection" level="ERROR"/>
+    <logger name="java.sql.Statement" level="ERROR"/>
+    <logger name="java.sql.PreparedStatement" level="ERROR"/>
 
     <!-- 减少部分debug日志 -->
-    <logger name="druid.sql" level="info"/>
-    <logger name="org.apache.shiro" level="info"/>
-    <logger name="org.mybatis.spring" level="info"/>
-    <logger name="org.springframework" level="info"/>
-    <logger name="org.springframework.context" level="info"/>
-    <logger name="org.springframework.beans" level="info"/>
-    <logger name="com.baomidou.mybatisplus" level="info"/>
-    <logger name="org.apache.ibatis.io" level="info"/>
-    <logger name="org.apache.velocity" level="info"/>
-    <logger name="org.eclipse.jetty" level="info"/>
-    <logger name="io.undertow" level="info"/>
-    <logger name="org.xnio.nio" level="info"/>
-    <logger name="org.thymeleaf" level="info"/>
-    <logger name="springfox.documentation" level="info"/>
-    <logger name="org.hibernate.validator" level="info"/>
-    <logger name="com.netflix.loadbalancer" level="info"/>
-    <logger name="com.netflix.hystrix" level="info"/>
-    <logger name="com.netflix.zuul" level="info"/>
-    <logger name="de.codecentric" level="info"/>
-    <!-- cache info -->
-    <logger name="net.sf.ehcache" level="info"/>
-    <logger name="org.springframework.cache" level="info"/>
+    <logger name="druid.sql" level="ERROR"/>
+    <logger name="org.apache.shiro" level="ERROR"/>
+    <logger name="org.mybatis.spring" level="ERROR"/>
+    <logger name="org.springframework" level="ERROR"/>
+    <logger name="org.springframework.context" level="ERROR"/>
+    <logger name="org.springframework.beans" level="ERROR"/>
+    <logger name="com.baomidou.mybatisplus" level="ERROR"/>
+    <logger name="org.apache.ibatis.io" level="ERROR"/>
+    <logger name="org.apache.velocity" level="ERROR"/>
+    <logger name="org.eclipse.jetty" level="ERROR"/>
+    <logger name="io.undertow" level="ERROR"/>
+    <logger name="org.xnio.nio" level="ERROR"/>
+    <logger name="org.thymeleaf" level="ERROR"/>
+    <logger name="springfox.documentation" level="ERROR"/>
+    <logger name="org.hibernate.validator" level="ERROR"/>
+    <logger name="com.netflix.loadbalancer" level="ERROR"/>
+    <logger name="com.netflix.hystrix" level="ERROR"/>
+    <logger name="com.netflix.zuul" level="ERROR"/>
+    <logger name="de.codecentric" level="ERROR"/>
+    <!-- cache ERROR -->
+    <logger name="net.sf.ehcache" level="ERROR"/>
+    <logger name="org.springframework.cache" level="ERROR"/>
     <!-- cloud -->
-    <logger name="org.apache.http" level="info"/>
-    <logger name="com.netflix.discovery" level="info"/>
-    <logger name="com.netflix.eureka" level="info"/>
+    <logger name="org.apache.http" level="ERROR"/>
+    <logger name="com.netflix.discovery" level="ERROR"/>
+    <logger name="com.netflix.eureka" level="ERROR"/>
     <!-- 业务日志 -->
-    <Logger name="org.springblade" level="info"/>
-    <Logger name="org.springblade.core.tenant" level="info"/>
-    <Logger name="org.springblade.core.version" level="info"/>
+    <Logger name="org.springblade" level="ERROR"/>
+    <Logger name="org.springblade.core.tenant" level="ERROR"/>
+    <Logger name="org.springblade.core.version" level="ERROR"/>
 
     <!-- 减少nacos日志 -->
-    <logger name="com.alibaba.nacos" level="info"/>
+    <logger name="com.alibaba.nacos" level="ERROR"/>
 
 
 </configuration>

+ 2 - 1
blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

@@ -283,7 +283,8 @@ public class SysClient implements ISysClient {
 	}
 
 	@Override
-	public String getParamServiceShippingFee(String tenantId, String paramKey) {
+	@GetMapping(PARAM_SERVICE_VALUE)
+	public String paramServiceValue(String tenantId, String paramKey) {
 		return paramServiceService.getParamServiceShippingFee(tenantId,paramKey);
 	}