纪新园 пре 1 година
родитељ
комит
9ceb6fa3cf
32 измењених фајлова са 445 додато и 11 уклоњено
  1. 12 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java
  2. 5 1
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
  3. 5 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
  4. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  5. 4 5
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/AgencyOrderController.java
  6. 21 5
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  7. 4 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/mapper/BrandDescMapper.java
  8. 8 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/mapper/BrandDescMapper.xml
  9. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/service/IBrandDescService.java
  10. 5 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/service/impl/BrandDescServiceImpl.java
  11. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.java
  12. 9 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml
  13. 5 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.java
  14. 20 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml
  15. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderItemsService.java
  16. 4 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java
  17. 5 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderItemsServiceImpl.java
  18. 10 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  19. 62 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/controller/ApiController.java
  20. 20 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/dto/BrandSort.java
  21. 17 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/dto/WarehouseSort.java
  22. 19 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/ApiService.java
  23. 160 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/impl/ApiServiceImpl.java
  24. 4 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/storage/mapper/StorageDescMapper.java
  25. 8 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/storage/mapper/StorageDescMapper.xml
  26. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/storage/service/IStorageDescService.java
  27. 6 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/storage/service/impl/StorageDescServiceImpl.java
  28. 5 0
      blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java
  29. 3 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.java
  30. 3 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.xml
  31. 2 0
      blade-service/blade-system/src/main/java/org/springblade/system/service/IParamServiceService.java
  32. 6 0
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceServiceImpl.java

+ 12 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java

@@ -871,6 +871,18 @@ public class OrderItems implements Serializable {
 	@ApiModelProperty(value = "平台代理明细")
 	private String type;
 
+	/**
+	 * 品牌(达沃特采购计划)
+	 */
+	@ApiModelProperty(value = "品牌")
+	private String brand;
+
+	/**
+	 * 去重字段
+	 */
+	@TableField(exist = false)
+	private String removeDuplicateFields;
+
 
 
 }

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

@@ -75,6 +75,7 @@ public interface ISysClient {
 	String GET_PARAM_SERVICE_BY_DEPT = API_PREFIX + "/getParamServiceByDept";
 	String UPDATE_BY_DEPT = API_PREFIX + "/updateByDept";
 	String GET_DEPT_LIST = API_PREFIX + "/getDeptList";
+	String GET_TENANTS = API_PREFIX + "/getTenants";
 
 
 	/**
@@ -375,11 +376,14 @@ public interface ISysClient {
 	 * @return
 	 */
 	@GetMapping(DEPT_BY_NAME_LIST)
-	R<List<Dept>> getDeptListIByName(@RequestParam("tenantId") String tenantId, @RequestParam(value = "deptName",required = false) String deptName);
+	R<List<Dept>> getDeptListIByName(@RequestParam("tenantId") String tenantId, @RequestParam(value = "deptName", required = false) String deptName);
 
 	@PostMapping(UPDATE_BY_DEPT)
 	R updateByDept(@RequestBody Dept data);
 
 	@GetMapping(GET_DEPT_LIST)
 	R<List<Dept>> getDeptList(@RequestParam(value = "ids", required = false) String ids, @RequestParam(value = "name", required = false) String name);
+
+	@GetMapping(GET_TENANTS)
+	String getTenants(@RequestParam("tenantId") String paramKey);
 }

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

@@ -205,4 +205,9 @@ public class ISysClientFallback implements ISysClient {
 		return R.fail("获取数据失败");
 	}
 
+	@Override
+	public String getTenants(String paramKey) {
+		return "";
+	}
+
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java

@@ -7615,6 +7615,8 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					}
 				}
 				bills.setBoxWeightSum(boxWeightSum);
+				bills.setPreContainersList(preContainersList);
+				bills.setContainersList(containersList);
 				StringBuilder text = new StringBuilder();
 				for (Containers item : containersList) {
 					text.append(item.getCntrNo()).append("/").append(item.getSealNo())

+ 4 - 5
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/AgencyOrderController.java

@@ -23,7 +23,6 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.deliver.goods.entity.Delivery;
 import org.springblade.deliver.goods.feign.IDeliveryClient;
 import org.springblade.finance.feign.IFinanceClient;
@@ -333,21 +332,21 @@ public class AgencyOrderController extends BladeController {
 	 * 销售获取平台代理订单明细列表
 	 */
 	@GetMapping("/getAgencyOrderItem")
-	public R<List<OrderItems>> getAgencyOrderItem(@RequestParam(value = "id") Long id,
+	public R<List<OrderItems>> getAgencyOrderItem(@RequestParam(value = "id") String id,
 												  @RequestParam(value = "code", required = false) String code,
 												  @RequestParam(value = "cname", required = false) String cname) {
 		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(OrderItems::getTenantId, SecureUtil.getTenantId());//租户id
 		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);//订单是否有效
 		lambdaQueryWrapper.eq(OrderItems::getBillType, OrderTypeEnum.AGENCY_ORDER.getType());//订单类型
-		lambdaQueryWrapper.eq(OrderItems::getPid, id);
+		lambdaQueryWrapper.apply("find_in_set(pid,'" + id + "')");
 		if (ObjectUtils.isNotNull(code) || ObjectUtils.isNotNull(cname)) {
 			List<Long> goodsId = goodsDescClient.getGoodId(code, cname, "", "", "", "", "");
 			if (!goodsId.isEmpty()) {
 				lambdaQueryWrapper.in(OrderItems::getItemId, goodsId);
 			}
 		}
-		lambdaQueryWrapper.orderByDesc(OrderItems::getId);
+		lambdaQueryWrapper.orderByDesc(OrderItems::getPid);
 		List<OrderItems> page = orderItemsService.list(lambdaQueryWrapper);
 		StringBuilder goodsIds = new StringBuilder();
 		for (OrderItems item : page) {
@@ -367,7 +366,7 @@ public class AgencyOrderController extends BladeController {
 					item.setBrandItem(goodsDesc.getBrandItem());
 				}
 			}
-			item.setSrcId(id);
+			item.setSrcId(item.getPid());
 			item.setSrcItemId(item.getId());
 			item.setSrcOrderNo(item.getBillNo());
 		}

+ 21 - 5
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -473,6 +473,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		// 保存订单明细
 		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 			order.getOrderItemsList().forEach(item -> {
+				item.setRemoveDuplicateFields(item.getItemId() + "-" + item.getCorpId());
 				if (ObjectUtils.isNotNull(item.getCorpId())) {
 					CorpsDesc corpsDesc = corpsDescClient.getCorpId(item.getCorpId());
 					if (ObjectUtils.isNotNull(corpsDesc)) {
@@ -486,6 +487,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				item.setCarry(order.getBuyerName());
 				if (OrderTypeEnum.PROXY_ORDER.getType().equals(order.getBillType())) {
 					item.setType(OrderTypeEnum.PROXY_ORDER.getType());
+					item.setBrand(order.getBrand());
 				} else {
 					item.setDetailType("MX");
 				}
@@ -523,6 +525,20 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						this.updateBatchById(orderList);
 					}
 				}
+				long count = order.getOrderItemsList().stream().map(OrderItems::getBrand).distinct().count();
+				if (count > 1) {
+					throw new RuntimeException("销售明细存在多个品牌");
+				}
+				List<Long> goodIs = order.getOrderItemsList().stream().map(OrderItems::getItemId).distinct().collect(Collectors.toList());
+				if (goodIs.size() != order.getOrderItemsList().size()) {
+					for (Long id : goodIs) {
+						List<OrderItems> itemsList = order.getOrderItemsList().stream().filter(e -> e.getItemId().equals(id)).collect(Collectors.toList());
+						;
+						if (itemsList.stream().map(OrderItems::getCorpId).distinct().count() > 1) {
+							throw new RuntimeException("销售明细-商品:" + itemsList.get(0).getCname() + "存在多个供应商");
+						}
+					}
+				}
 			}
 			if (order.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType()) && OrderTypeEnum.PROXY_ORDER.getType().equals(order.getBillType())) {
 				order.setMinOrder(order.getOrderItemsList().stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
@@ -2329,11 +2345,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		return baseMapper.orderInventoryList(AuthUtil.getTenantId(), "GN", billType, itemId, corpId, storageId);
 	}
 
-	private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
-		Set<Object> seen = ConcurrentHashMap.newKeySet();
-		return t -> seen.add(keyExtractor.apply(t));
-	}
-
 	/**
 	 * @param order
 	 * @return
@@ -9253,4 +9264,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 		return resList;
 	}
+
+	private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
+		Set<Object> seen = ConcurrentHashMap.newKeySet();
+		return t -> seen.add(keyExtractor.apply(t));
+	}
 }

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/mapper/BrandDescMapper.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.salesPart.brand.mapper;
 
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.salesPart.entity.PjBrandDesc;
 import org.springblade.salesPart.vo.BrandDescVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -39,4 +41,6 @@ public interface BrandDescMapper extends BaseMapper<PjBrandDesc> {
 	 */
 	List<BrandDescVO> selectBrandDescPage(IPage page, BrandDescVO brandDesc);
 
+	@TenantIgnore
+    List<PjBrandDesc> getTenants(@Param("tenantId")String tenantId);
 }

+ 8 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/mapper/BrandDescMapper.xml

@@ -21,5 +21,13 @@
     <select id="selectBrandDescPage" resultMap="brandDescResultMap">
         select * from pjpf_brand_desc where is_deleted = 0
     </select>
+    <select id="getTenants" resultType="org.springblade.salesPart.entity.PjBrandDesc">
+        SELECT *
+        FROM pjpf_brand_desc
+        WHERE is_deleted = '0'
+          AND find_in_set(tenant_id, #{tenantId})
+        GROUP BY
+            cname
+    </select>
 
 </mapper>

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/service/IBrandDescService.java

@@ -21,6 +21,8 @@ import org.springblade.salesPart.vo.BrandDescVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  *  配件批发品牌表服务类
  *
@@ -62,4 +64,5 @@ public interface IBrandDescService extends IService<PjBrandDesc> {
 	 */
 	PjBrandDesc selectByName(String cname);
 
+	List<PjBrandDesc> getTenants(String tenantId);
 }

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

@@ -180,4 +180,9 @@ public class BrandDescServiceImpl extends ServiceImpl<BrandDescMapper, PjBrandDe
 		return baseMapper.selectOne(new QueryWrapper<>(brandDesc));
 	}
 
+	@Override
+	public List<PjBrandDesc> getTenants(String tenantId) {
+		return baseMapper.getTenants(tenantId);
+	}
+
 }

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

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

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

@@ -471,6 +471,15 @@
                                          and tenant_id = #{tenantId}
                                          and find_in_set(pid, #{pids})
     </select>
+    <select id="getListByTenant" resultType="org.springblade.salesPart.entity.PjOrderItems">
+        SELECT poi.*
+        FROM pjpf_order_items poi
+                 LEFT JOIN pjpf_order po ON poi.pid = po.id
+        WHERE poi.is_deleted = '0'
+          AND po.bs_type = 'XS'
+          AND DATE_FORMAT(po.busines_date, '%Y') = #{year}
+          AND find_in_set(poi.tenant_id, #{tenantId})
+    </select>
 
 
 </mapper>

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

@@ -105,4 +105,9 @@ public interface OrderMapper extends BaseMapper<PjOrder> {
 
 	List<FinancingProcurement> financingProcurementList(@Param("sale") FinancingProcurement financingProcurement);
 
+	@TenantIgnore
+    List<PjOrder> getTotalYear(@Param("tenantId") String tenantId,@Param("year") String year);
+
+	@TenantIgnore
+	List<PjOrder> getTotalMonth(@Param("tenantId")String tenantId, @Param("year")String year, @Param("month")String month);
 }

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

@@ -847,4 +847,24 @@
             and DATEDIFF( CURDATE(), busines_date ) &gt; 90
         </if>
     </select>
+    <select id="getTotalYear" resultType="org.springblade.salesPart.entity.PjOrder">
+        SELECT
+            *
+        FROM
+            pjpf_order
+        WHERE
+            is_deleted = '0'
+          AND bs_type = 'XS'
+          AND DATE_FORMAT( busines_date, '%Y' ) = #{year}
+          AND find_in_set(tenant_id,#{tenantId})
+    </select>
+    <select id="getTotalMonth" resultType="org.springblade.salesPart.entity.PjOrder">
+        SELECT *
+        FROM pjpf_order
+        WHERE is_deleted = '0'
+          AND bs_type = 'XS'
+          AND DATE_FORMAT(busines_date, '%Y') = #{year}
+          AND DATE_FORMAT(busines_date, '%m') = #{month}
+          AND find_in_set(tenant_id, #{tenantId})
+    </select>
 </mapper>

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

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

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

@@ -262,4 +262,8 @@ public interface IOrderService extends IService<PjOrder> {
 	IPage<FinancingProcurement> financingProcurement(FinancingProcurement financingProcurement, IPage<FinancingProcurement> page);
 
 	List<FinancingProcurement> financingProcurementList(FinancingProcurement financingProcurement);
+
+    List<PjOrder> getTotalYear(String tenantId,String year);
+
+	List<PjOrder> getTotalMonth(String tenantId, String year, String month);
 }

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

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

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

@@ -3845,6 +3845,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		return baseMapper.financingProcurementList(financingProcurement);
 	}
 
+	@Override
+	public List<PjOrder> getTotalYear(String tenantId,String year) {
+		return baseMapper.getTotalYear(tenantId,year);
+	}
+
+	@Override
+	public List<PjOrder> getTotalMonth(String tenantId, String year, String month) {
+		return baseMapper.getTotalMonth(tenantId,year,month);
+	}
+
 	/**
 	 * 保存订单信息
 	 */

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

@@ -0,0 +1,62 @@
+package org.springblade.salesPart.smartLargeScreenApi.controller;
+
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tool.api.R;
+import org.springblade.salesPart.smartLargeScreenApi.service.ApiService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/10/11
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/app/index")
+@Api(value = "贸易代理app首页统计", tags = "贸易代理app首页统计接口")
+public class ApiController extends BladeController {
+
+	private final ApiService apiService;
+
+
+	/**
+	 * 首页合计年
+	 */
+	@GetMapping("/getTotalYear")
+	public R<Map<String, Object>> getTotalYear(@RequestParam(value = "year") String year) {
+		return R.data(apiService.getTotalYear(year));
+	}
+
+	/**
+	 * 首页合计月
+	 */
+	@GetMapping("/getTotalMonth")
+	public R<Map<String, Object>> getTotalMonth(@RequestParam(value = "year") String year,
+												@RequestParam(value = "month") String month) {
+		return R.data(apiService.getTotalMonth(year,month));
+	}
+
+	/**
+	 * 品牌销售排名
+	 */
+	@GetMapping("/getBrandSort")
+	public R<List<Map<String, Object>>> getBrandSort(@RequestParam(value = "year") String year) {
+		return R.data(apiService.getBrandSort(year));
+	}
+
+	/**
+	 * 分仓销售排名
+	 */
+	@GetMapping("/getWarehouseSort")
+	public R<Map<String, Object>> getWarehouseSort(@RequestParam(value = "year") String year) {
+		return R.data(apiService.getWarehouseSort(year));
+	}
+
+}

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

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

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

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

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

@@ -0,0 +1,19 @@
+package org.springblade.salesPart.smartLargeScreenApi.service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/10/11
+ */
+public interface ApiService {
+
+	Map<String, Object> getTotalYear(String year);
+
+	Map<String, Object> getTotalMonth(String year, String month);
+
+	List<Map<String, Object>> getBrandSort(String year);
+
+	Map<String, Object> getWarehouseSort(String year);
+}

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

@@ -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;
+	}
+}

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/storage/mapper/StorageDescMapper.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.salesPart.storage.mapper;
 
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.salesPart.entity.PjStorageDesc;
 import org.springblade.salesPart.vo.StorageDescVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -39,4 +41,6 @@ public interface StorageDescMapper extends BaseMapper<PjStorageDesc> {
 	 */
 	List<StorageDescVO> selectStorageDescPage(IPage page, StorageDescVO stock);
 
+	@TenantIgnore
+    List<PjStorageDesc> getTenants(@Param("tenantId")String tenantId);
 }

+ 8 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/storage/mapper/StorageDescMapper.xml

@@ -28,5 +28,13 @@
     <select id="selectStorageDescPage" resultMap="stockResultMap">
         select * from pjpf_storage_desc where is_deleted = 0
     </select>
+    <select id="getTenants" resultType="org.springblade.salesPart.entity.PjStorageDesc">
+        SELECT *
+        FROM pjpf_storage_desc
+        WHERE is_deleted = '0'
+          AND find_in_set(tenant_id, #{tenantId})
+        GROUP BY
+            cname
+    </select>
 
 </mapper>

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/storage/service/IStorageDescService.java

@@ -21,6 +21,8 @@ import org.springblade.salesPart.vo.StorageDescVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  *  配件批发仓库服务类
  *
@@ -62,4 +64,5 @@ public interface IStorageDescService extends IService<PjStorageDesc> {
 	 */
 	PjStorageDesc getMessageByName(String storageName);
 
+    List<PjStorageDesc> getTenants(String tenantId);
 }

+ 6 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/storage/service/impl/StorageDescServiceImpl.java

@@ -30,6 +30,7 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  *  配件批发仓库服务实现类
@@ -104,4 +105,9 @@ public class StorageDescServiceImpl extends ServiceImpl<StorageDescMapper, PjSto
 		return baseMapper.selectOne(lambdaQueryWrapper);
 	}
 
+	@Override
+	public List<PjStorageDesc> getTenants(String tenantId) {
+		return baseMapper.getTenants(tenantId);
+	}
+
 }

+ 5 - 0
blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

@@ -277,6 +277,11 @@ public class SysClient implements ISysClient {
 	}
 
 	@Override
+	public String getTenants(String paramKey) {
+		return paramServiceService.getTenants(paramKey);
+	}
+
+	@Override
 	@GetMapping(TENANT_ID)
 	public R<Tenant> getTenant(String tenantId) {
 		return R.data(tenantService.getByTenantId(tenantId));

+ 3 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.java

@@ -44,4 +44,7 @@ public interface ParamServiceMapper extends BaseMapper<ParamService> {
 
 	@TenantIgnore
     List<ParamService> selectParamService(@Param("tenantId") String tenantId, @Param("salesCompanyId")String salesCompanyId);
+
+	@TenantIgnore
+	String getTenants(@Param("paramKey") String paramKey);
 }

+ 3 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.xml

@@ -25,5 +25,8 @@
     <select id="selectParamService" resultType="org.springblade.system.entity.ParamService">
         select * from blade_param_service where is_deleted = 0 and tenant_id = #{param1} and sales_company_id = #{salesCompanyId}
     </select>
+    <select id="getTenants" resultType="java.lang.String">
+        select GROUP_CONCAT(tenant_id SEPARATOR  ', ') from blade_param_service where is_deleted = 0 and param_key = #{paramKey} and param_value = '1'
+    </select>
 
 </mapper>

+ 2 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/IParamServiceService.java

@@ -46,4 +46,6 @@ public interface IParamServiceService extends IService<ParamService> {
 	String getValueNew(String paramKey);
 
     List<ParamService> selectParamService(String tenantId, String salesCompanyId);
+
+    String getTenants(String paramKey);
 }

+ 6 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceServiceImpl.java

@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springblade.system.entity.ParamService;
 import org.springblade.system.feign.ISysClient;
@@ -81,4 +82,9 @@ public class ParamServiceServiceImpl extends ServiceImpl<ParamServiceMapper, Par
 		return baseMapper.selectParamService(tenantId,salesCompanyId);
 	}
 
+	@Override
+	public String getTenants(String paramKey) {
+		return baseMapper.getTenants(paramKey);
+	}
+
 }