Explorar el Código

pc端统计销售接口优化、app端数据统计与pc端统计销售取值不一致优化、app待收款列表数据与pc端应收总账数据不一致问题优化

liyuan hace 2 meses
padre
commit
af4caebdea

+ 2 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/PjOrderStatisticsExcel.java

@@ -107,5 +107,7 @@ public class PjOrderStatisticsExcel implements Serializable {
 	@ExcelProperty(value = "未收金额")
 	private BigDecimal outstandingAmount;
 
+	private BigDecimal returnAmount;
+
 
 }

+ 20 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/vo/AppPendingPaymentParamVo.java

@@ -0,0 +1,20 @@
+package org.springblade.salesPart.vo;
+
+import lombok.Data;
+
+/**
+ * @author Rain
+ */
+@Data
+public class AppPendingPaymentParamVo {
+
+
+	private String salesCompanyId;
+
+
+	private Long salesmanId;
+
+	private String tenantId;
+
+
+}

+ 39 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/vo/AppPendingPaymentVo.java

@@ -0,0 +1,39 @@
+package org.springblade.salesPart.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author Rain
+ */
+@Data
+public class AppPendingPaymentVo {
+
+	/**
+	 * 客户ID
+	 */
+	private Long customerId;
+
+	/**
+	 * 客户名称
+	 */
+	private String customerName;
+
+	/**
+	 * 销售员
+	 */
+	private String salerName;
+
+	/**
+	 * 地区
+	 */
+	private String region;
+
+	/**
+	 * 待付款金额
+	 */
+	private BigDecimal unpaidAmount;
+
+
+}

+ 6 - 0
blade-service-api/tire-center-warehouse-api/src/main/java/com/ecp/tire/center/warehouse/api/stock/vo/CenterStockExportExcelVo.java

@@ -81,6 +81,12 @@ public class CenterStockExportExcelVo implements Serializable {
 	private String storageName;
 
 	/**
+	 * 库区名称
+	 */
+	@ExcelProperty(value = "库区")
+	private String regionName;
+
+	/**
 	 * 结余数量
 	 */
 	@ExcelProperty(value = "库存数量")

+ 18 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java

@@ -895,6 +895,24 @@ public class OrderController extends BladeController {
 	}
 
 	/**
+	 * app待收款列表
+	 */
+	@GetMapping("/getPendingPaymentList")
+	public R<IPage<AppPendingPaymentVo>> getPendingPaymentList(Query query) {
+		IPage<AppPendingPaymentVo> pages = orderService.getPendingPaymentList(query);
+		return R.data(pages);
+	}
+
+	/**
+	 * app待收款列表
+	 */
+	@GetMapping("/getPendingPaymentSum")
+	public R getPendingPaymentSum() {
+		return R.data(orderService.getPendingPaymentSum());
+	}
+
+
+	/**
 	 * 收款统计(导出)
 	 */
 	@GetMapping("/collectionExport")

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

@@ -26,9 +26,7 @@ import org.springblade.salesPart.dto.SalespersonCustomer;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.excel.PjOrderStatisticsExcel;
 import org.springblade.salesPart.excel.PjShipStockDetails;
-import org.springblade.salesPart.vo.OrderStatistics;
-import org.springblade.salesPart.vo.OrderVO;
-import org.springblade.salesPart.vo.PjOrderStatisticsWeb;
+import org.springblade.salesPart.vo.*;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
@@ -131,4 +129,20 @@ public interface OrderMapper extends BaseMapper<PjOrder> {
 	 * @return 结果
 	 */
 	BigDecimal selectGoodsNumBySrcOrderNo(@Param("srcOrdNo") String srcOrdNo, @Param("id") Long id);
+
+	/**
+	 * 获取待付款列表
+	 *
+	 * @param paymentParamVo 参数
+	 * @return 结果
+	 */
+	List<AppPendingPaymentVo> getPendingPaymentList(AppPendingPaymentParamVo paymentParamVo);
+
+	/**
+	 * 获取待付款金额和
+	 *
+	 * @param tenantId 租户id
+	 * @return 结果
+	 */
+	BigDecimal getPendingPaymentSum(@Param("tenantId") String tenantId);
 }

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

@@ -437,7 +437,7 @@
         WHERE
         o.tenant_id = #{order.tenantId}
         AND o.is_deleted = '0'
-        AND FIND_IN_SET( o.status, '已发货,已收货' )
+        AND FIND_IN_SET( o.status, '待确认,待发货,已发货,退款请核,已收货' )
         <if test="order.customerId!=null">
             and o.customer_id = #{order.customerId}
         </if>
@@ -977,4 +977,101 @@
                 INNER JOIN pjpf_order_items poi ON po.id = poi.pid and po.is_deleted = 0
         WHERE po.src_ord_no = #{srcOrdNo} and poi.is_deleted = 0 and po.id != #{id}
     </select>
+    <select id="getPendingPaymentList" resultType="org.springblade.salesPart.vo.AppPendingPaymentVo"
+            parameterType="org.springblade.salesPart.vo.AppPendingPaymentParamVo">
+        SELECT DISTINCT
+            pcd.id AS customerId,
+            pcd.cname AS customerName,
+            bu.`name` AS salerName,
+            SUBSTRING_INDEX( SUBSTRING_INDEX( pca.belongtoarea, ',', 2 ), ',', - 1 ) AS region,
+        SUM(po2.unpaidAmount) as unpaidAmount
+        FROM
+            pjpf_corps_desc pcd
+                LEFT JOIN pjpf_corps_addr pca ON pcd.id = pca.pid
+                AND pca.default_addres = '1'
+                AND pca.tenant_id = #{tenantId}
+                LEFT JOIN blade_user bu ON pcd.salesman_id = bu.id
+                inner JOIN (
+                    SELECT
+                    pos.id,
+                    pos.customerId,
+                    (
+                    SUM( poi.sub_total_money ) - SUM( poi.returns_amount ) - ( pos.paymentAmountTl - ( CASE WHEN SUM( poi.returns_amount ) = pos.returnsAmount THEN 0 ELSE pos.returnsAmount END ) ) + pos.freight
+                    ) AS unpaidAmount
+                    FROM
+                    (
+                    SELECT
+                    o.id,
+                    o.customer_id AS customerId,
+                    o.freight,
+                    IFNULL( o.total_money, 0 ) AS totalMoney,
+                    IFNULL( o.payment_amount_tl, 0 ) AS paymentAmountTl,
+                    IFNULL( o.returns_amount, 0 ) AS returnsAmount
+                    FROM
+                    pjpf_order o
+                    WHERE
+                    o.tenant_id = #{tenantId}
+                    AND o.is_deleted = '0'
+                    AND FIND_IN_SET( o.STATUS, '待确认,待发货,已发货,退款请核,已收货' )
+                    AND o.total_money != o.payment_amount_tl
+                    AND o.bs_type = 'XS'
+                    AND o.tenant_id = #{tenantId}
+                    ) pos
+                    INNER JOIN pjpf_order_items poi ON pos.id = poi.pid
+                    AND poi.tenant_id = #{tenantId}
+                    GROUP BY
+                    pos.id,
+                    pos.customerId
+            ) po2 ON pcd.id = po2.customerId
+        WHERE
+             pcd.is_deleted = '0'
+          AND pcd.tenant_id = #{tenantId}
+        <if test="salesCompanyId != null and salesCompanyId != ''">
+            and po.sales_company_id = #{salesCompanyId}
+        </if>
+        group by pcd.id
+        order by unpaidAmount desc
+    </select>
+    <select id="getPendingPaymentSum" resultType="java.math.BigDecimal" parameterType="java.lang.String">
+        SELECT
+            SUM(po2.unpaidAmount)
+        FROM
+            pjpf_corps_desc pcd
+                inner JOIN (
+                SELECT
+                    pos.id,
+                    pos.customerId,
+                    (
+                        SUM( poi.sub_total_money ) - SUM( poi.returns_amount ) - ( pos.paymentAmountTl - ( CASE WHEN SUM( poi.returns_amount ) = pos.returnsAmount THEN 0 ELSE pos.returnsAmount END ) ) + pos.freight
+                        ) AS unpaidAmount
+                FROM
+                    (
+                        SELECT
+                            o.id,
+                            o.customer_id AS customerId,
+                            o.freight,
+                            IFNULL( o.total_money, 0 ) AS totalMoney,
+                            IFNULL( o.payment_amount_tl, 0 ) AS paymentAmountTl,
+                            IFNULL( o.returns_amount, 0 ) AS returnsAmount
+                        FROM
+                            pjpf_order o
+                        WHERE
+                            o.tenant_id = #{tenantId}
+                          AND o.is_deleted = '0'
+                          AND FIND_IN_SET( o.STATUS, '待确认,待发货,已发货,退款请核,已收货' )
+                          AND o.total_money != o.payment_amount_tl
+                    AND o.bs_type = 'XS'
+                    AND o.tenant_id = #{tenantId}
+                    ) pos
+                        INNER JOIN pjpf_order_items poi ON pos.id = poi.pid
+                        AND poi.tenant_id = #{tenantId}
+                GROUP BY
+                    pos.id,
+                    pos.customerId
+            ) po2 ON pcd.id = po2.customerId
+        WHERE
+            pcd.is_deleted = '0'
+          AND pcd.tenant_id = #{tenantId}
+
+    </select>
 </mapper>

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

@@ -27,10 +27,7 @@ import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.entity.PjOrderItems;
 import org.springblade.salesPart.entity.PjProductLaunch;
 import org.springblade.salesPart.excel.*;
-import org.springblade.salesPart.vo.AppStatisticsVo;
-import org.springblade.salesPart.vo.OrderStatistics;
-import org.springblade.salesPart.vo.OrderVO;
-import org.springblade.salesPart.vo.PjOrderStatisticsWeb;
+import org.springblade.salesPart.vo.*;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -301,4 +298,19 @@ public interface IOrderService extends IService<PjOrder> {
 	 * @return 结果
 	 */
 	R<AppStatisticsVo> turnoverAnalysis(String startDate, String endDate);
+
+	/**
+	 * 获取待付款列表
+	 *
+	 * @param query 分页参数
+	 * @return 结果
+	 */
+	IPage<AppPendingPaymentVo> getPendingPaymentList(Query query);
+
+	/**
+	 * 获取待付款金额
+	 *
+	 * @return 结果
+	 */
+	BigDecimal getPendingPaymentSum();
 }

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

@@ -1,6 +1,7 @@
 package org.springblade.salesPart.order.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -2464,14 +2465,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	public R statisticsSum(PjOrderStatisticsWeb order) {
 		List<PjOrderStatisticsExcel> list = baseMapper.statisticsExport(order);
 		if (!list.isEmpty()) {
+			List<String> orderTypeList = Arrays.asList("待确认", "待发货", "已发货", "退款请核", "已收货");
 			List<Long> ids = list.stream().map(PjOrderStatisticsExcel::getCustomerId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			List<Long> salerId = list.stream().map(PjOrderStatisticsExcel::getSalerId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
-//			List<String> date = list.stream().map(PjOrderStatisticsExcel::getBusinesDate).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 			lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())
-				.apply("find_in_set(status,'已发货,已收货')")
+				.apply("find_in_set(status,'待确认,待发货,已发货,退款请核,已收货')")
 				.in(!ids.isEmpty(), PjOrder::getCustomerId, ids)
 				.in(!salerId.isEmpty(), PjOrder::getSalerId, salerId);
 			if (ObjectUtils.isNotNull(order.getBusinesDateList()) && !order.getBusinesDateList().isEmpty()) {
@@ -2557,7 +2558,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							if (items.getCustomerId().equals(item.getCustomerId())
 								&& (ObjectUtils.isNotNull(items.getSalerId()) && items.getSalerId().equals(item.getSalerId()))
 								&& date.equals(item.getBusinesDate())
-								&& items.getBsType().equals("XS") && "已发货,已收货".contains(items.getStatus())) {
+								&& items.getBsType().equals("XS") && orderTypeList.contains(items.getStatus())) {
+								if (item.getCustomerId().equals(1920008026136252417L) && items.getReturnsAmount().compareTo(new BigDecimal(249.00)) == 0) {
+									log.error("1");
+								}
 								orderListDS.add(items.getId());
 								paymentAmountTl = paymentAmountTl.add(items.getPaymentAmountTl());
 								returnPaymentAmountTl = returnPaymentAmountTl.add(items.getReturnsAmount());
@@ -2611,6 +2615,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						item.setPaymentAmountTl(paymentAmountTl.subtract(returnPaymentAmountTl));
 						item.setProfit(profit);
 						item.setCost(costprie);
+						item.setReturnAmount(returnAmount);
 						item.setOutstandingAmount(salesAmount.subtract(returnAmount).subtract(item.getPaymentAmountTl()).add(item.getFreight()));
 					} else if (1 == order.getType()) {
 						BigDecimal returnAmount = new BigDecimal("0.00");
@@ -2669,6 +2674,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			}
 		}
 		Map<String, BigDecimal> map = new HashMap<>();
+		log.error("list---" + JSONArray.toJSONString(list));
 		if (!list.isEmpty()) {
 			map.put("totalMoney", list.stream().map(PjOrderStatisticsExcel::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("freight", list.stream().map(PjOrderStatisticsExcel::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add));
@@ -4851,6 +4857,25 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		return R.data(appStatisticsVo);
 	}
 
+	@Override
+	public IPage<AppPendingPaymentVo> getPendingPaymentList(Query query) {
+		AppPendingPaymentParamVo paymentParamVo = new AppPendingPaymentParamVo();
+		BladeUser nowAppUser = AuthUtil.getUser();
+		String nowUserRoles = AuthUtil.getUserRole();
+		if (!nowUserRoles.contains("admin") && !nowUserRoles.contains("老板")) {
+			paymentParamVo.setSalesCompanyId(nowAppUser.getDeptId());
+		}
+		paymentParamVo.setTenantId(nowAppUser.getTenantId());
+		IPage<AppPendingPaymentVo> pendingPaymentVo = Condition.getPage(query);
+		pendingPaymentVo.setRecords(orderMapper.getPendingPaymentList(paymentParamVo));
+		return pendingPaymentVo;
+	}
+
+	@Override
+	public BigDecimal getPendingPaymentSum() {
+		return orderMapper.getPendingPaymentSum(AuthUtil.getTenantId());
+	}
+
 	/**
 	 * 保存订单信息
 	 */

+ 1 - 1
blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/stock/controller/CenterStockDescController.java

@@ -72,7 +72,7 @@ public class CenterStockDescController {
 			.eq(ObjectUtil.isNotEmpty(centerStockDescVo.getStorageId()), CenterStockDesc::getStorageId, centerStockDescVo.getStorageId())
 			.eq(ObjectUtil.isNotEmpty(centerStockDescVo.getBrandId()), CenterStockDesc::getBrandId, centerStockDescVo.getBrandId())
 			.eq(ObjectUtil.isNotEmpty(centerStockDescVo.getGoodsTypeId()), CenterStockDesc::getGoodsTypeId, centerStockDescVo.getGoodsTypeId())
-			.eq(ObjectUtil.isNotEmpty(centerStockDescVo.getCustomerName()), CenterStockDesc::getCustomerName, centerStockDescVo.getCustomerName())
+			.like(ObjectUtil.isNotEmpty(centerStockDescVo.getCustomerName()), CenterStockDesc::getCustomerName, centerStockDescVo.getCustomerName())
 			.like(ObjectUtil.isNotEmpty(centerStockDescVo.getDot()), CenterStockDesc::getDot, centerStockDescVo.getDot())
 			.orderByAsc(CenterStockDesc::getCreateTime);
 		if (CommonEnum.ZERO.info.equals(centerStockDescVo.getWhether())) {