Ver Fonte

应收余额核对

yzc há 11 meses atrás
pai
commit
dc8ccb3b58

+ 8 - 0
hx-form/src/main/java/com/fjhx/form/controller/ReportController.java

@@ -71,4 +71,12 @@ public class ReportController {
         reportService.orderSummaryExcelExport(dto, httpServletResponse);
     }
 
+    /**
+     * 应收余额核对
+     */
+    @PostMapping("/finance/receivableCheck")
+    List<ReceivableCheckBo> receivableCheck(@RequestBody ReceivableCheckSelectDto dto) {
+        return reportService.receivableCheck(dto);
+    }
+
 }

+ 16 - 0
hx-form/src/main/java/com/fjhx/form/entity/ReceivableCheckBo.java

@@ -0,0 +1,16 @@
+package com.fjhx.form.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class ReceivableCheckBo {
+    private String customerName;
+    private String customerShortName;
+    private Long saleUserId;
+    private String saleUserName;
+    private BigDecimal receivableAmount;
+}

+ 19 - 0
hx-form/src/main/java/com/fjhx/form/entity/ReceivableCheckSelectDto.java

@@ -0,0 +1,19 @@
+package com.fjhx.form.entity;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class ReceivableCheckSelectDto extends BaseSelectDto {
+    /**
+     * 核对日期
+     */
+    private String checkDate;
+
+    /**
+     * 业务员id
+     */
+    private Long saleUserId;
+}

+ 2 - 0
hx-form/src/main/java/com/fjhx/form/mapper/ReportMapper.java

@@ -22,4 +22,6 @@ public interface ReportMapper {
     Page<OrderSummaryBo> orderSummary(@Param("page") Page<Object> page, @Param("dto") OrderSummarySelectDto dto, @Param("ew") IWrapper<Object> wrapper);
 
     List<OrderSummaryBo> orderSummary(@Param("dto") OrderSummarySelectDto dto, @Param("ew") IWrapper<Object> wrapper);
+
+    List<ReceivableCheckBo> receivableCheck(@Param("dto") ReceivableCheckSelectDto dto, @Param("ew") IWrapper<Object> wrapper);
 }

+ 5 - 0
hx-form/src/main/java/com/fjhx/form/service/ReportService.java

@@ -36,4 +36,9 @@ public interface ReportService {
      * 订单汇总Excel导出
      */
     void orderSummaryExcelExport(OrderSummarySelectDto dto, HttpServletResponse httpServletResponse);
+
+    /**
+     * 应收余额核对
+     */
+    List<ReceivableCheckBo> receivableCheck(ReceivableCheckSelectDto dto);
 }

+ 21 - 0
hx-form/src/main/java/com/fjhx/form/service/impl/ReportServiceImpl.java

@@ -3,6 +3,7 @@ package com.fjhx.form.service.impl;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.common.utils.Assert;
 import com.fjhx.common.utils.excel.util.ExcelUtil;
 import com.fjhx.form.entity.*;
 import com.fjhx.form.mapper.ReportMapper;
@@ -261,4 +262,24 @@ public class ReportServiceImpl implements ReportService {
         //导出Excel
         ExcelUtil.export(httpServletResponse, records, OrderSummaryBo.class);
     }
+
+    /**
+     * 应收余额核对
+     */
+    @Override
+    public List<ReceivableCheckBo> receivableCheck(ReceivableCheckSelectDto dto) {
+        Assert.notEmpty(dto.getCheckDate(), "核对日期不能为空!");
+        IWrapper<Object> wrapper = IWrapper.getWrapper();
+        wrapper.keyword(dto.getKeyword(), new SqlField("cu.name"), new SqlField("cu.short_name"));
+        wrapper.eq("cu.user_id", dto.getSaleUserId());
+        List<ReceivableCheckBo> list = reportMapper.receivableCheck(dto, wrapper);
+        UserUtil.assignmentNickName(list, ReceivableCheckBo::getSaleUserId, ReceivableCheckBo::setSaleUserName);
+        //添加总计行
+        BigDecimal reduce = list.stream().map(ReceivableCheckBo::getReceivableAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        ReceivableCheckBo sumBo = new ReceivableCheckBo();
+        sumBo.setSaleUserName("总计");
+        sumBo.setReceivableAmount(reduce);
+        list.add(sumBo);
+        return list;
+    }
 }

+ 27 - 10
hx-form/src/main/resources/mapper/ReportMapper.xml

@@ -115,16 +115,33 @@
                 LEFT JOIN (
                     SELECT
                         cor.contract_id,
-                        MIN( coi.truck_date ) AS firstTruckDate,
-                        sum( cor.price * cor.truck_quantity ) AS sumOutMoney,
-                        sum( cor.factory_price * cor.truck_quantity ) AS sumOutFactoryMoney
-                    FROM
-                        contract_outbound_records cor
-                            JOIN contract_outbound_info coi ON cor.record_id = coi.id
-                    GROUP BY
-                        cor.contract_id
-                ) cor ON cor.contract_id = c.id
-                LEFT JOIN customer cu ON c.buy_corporation_id = cu.id
+                        MIN( coi.truck_date )                       AS firstTruckDate,
+                        sum( cor.price * cor.truck_quantity )       AS sumOutMoney,
+                        sum(cor.factory_price * cor.truck_quantity) AS sumOutFactoryMoney
+                    FROM contract_outbound_records cor
+                             JOIN contract_outbound_info coi ON cor.record_id = coi.id
+                    GROUP BY cor.contract_id) cor ON cor.contract_id = c.id
+                 LEFT JOIN customer cu ON c.buy_corporation_id = cu.id
+            ${ew.customSqlSegment}
+    </select>
+    <select id="receivableCheck" resultType="com.fjhx.form.entity.ReceivableCheckBo">
+        SELECT cu.`name`     AS customerName,
+               cu.short_name AS customerShortName,
+               cu.user_id    AS saleUserId,
+               c1.receivable_amount
+        FROM customer cu
+                 JOIN (SELECT c.buy_corporation_id,
+                              IFNULL(sum(cor1.truck_amount), 0) - IFNULL(sum(cc1.claim_amount), 0) AS receivable_amount
+                       FROM contract c
+                                LEFT JOIN (SELECT cor.contract_id, sum(cor.truck_quantity * cor.price) AS truck_amount
+                                           FROM contract_outbound_records cor
+                                           GROUP BY cor.contract_id) cor1 ON cor1.contract_id = c.id
+                                LEFT JOIN (SELECT cc.contract_id, sum(cc.money) AS claim_amount
+                                           FROM claim_contract cc
+                                           GROUP BY cc.contract_id) cc1 ON cc1.contract_id = c.id
+                       WHERE c.create_time &lt;= #{dto.checkDate}
+                       GROUP BY c.buy_corporation_id
+                       HAVING receivable_amount != 0) c1 ON c1.buy_corporation_id = cu.id
             ${ew.customSqlSegment}
     </select>
 </mapper>