Sfoglia il codice sorgente

财务管理大中型收款预警

wucl 1 anno fa
parent
commit
f2e22270f8

+ 30 - 0
biz-base/src/main/java/com/dayou/controller/FinanceRealFundController.java

@@ -1,6 +1,8 @@
 package com.dayou.controller;
 
 import com.dayou.vo.FinanceRealFundVO;
+import com.dayou.vo.MajorProdOverdueVO;
+import com.dayou.vo.RealFundMajorStatVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,11 +18,16 @@ import org.springframework.web.bind.annotation.*;
 import com.dayou.utils.ConvertUtil;
 import com.dayou.utils.HttpKit;
 import com.dayou.exception.ErrorCode;
+
+import java.io.IOException;
 import java.util.Date;
 import java.util.List;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.http.MediaType;
 import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * 财务实收款
  *
@@ -79,6 +86,29 @@ public class FinanceRealFundController extends BaseController {
         return RestResponse.data(ret);
     }
 
+    /**
+     * 大中型产品逾期未收款列表
+     * @param overdueVO
+     * @param page
+     * @return
+     */
+    @GetMapping("/overdue/major")
+    public RestResponse<Page<MajorProdOverdueVO>> overdueMajor(MajorProdOverdueVO overdueVO, Page page){
+        Page<MajorProdOverdueVO> result = financeRealFundService.overdueMajor(overdueVO,page);
+        return RestResponse.data(result);
+    }
+
+    /**
+     * 大中型产品逾期未收款列表导出
+     * @param overdueVO
+     * @return
+     */
+    @GetMapping("/overdue/major/export")
+    public void overdueMajorExport(MajorProdOverdueVO overdueVO, HttpServletResponse response)throws IOException {
+        List<MajorProdOverdueVO> result = financeRealFundService.overdueMajorExport(overdueVO);
+        exportPlus(response,"大中型产品逾期未收款列表",result, MajorProdOverdueVO.class);
+    }
+
 
 }
 

+ 6 - 0
dao/src/main/java/com/dayou/mapper/FinanceRealFundMapper.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.entity.FinanceRealFund;
 import com.dayou.dao.CustomBaseMapper;
 import com.dayou.vo.FinanceRealFundVO;
+import com.dayou.vo.MajorProdOverdueVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * <p>
@@ -21,4 +23,8 @@ public interface FinanceRealFundMapper extends CustomBaseMapper<FinanceRealFund>
     Page<FinanceRealFundVO> getPage(Page page, @Param("vo") FinanceRealFund vo,@Param("keyword") String keyword);
 
     BigDecimal getNotClaimAmount(@Param("realFundId") Long realFundId);
+
+    Page<MajorProdOverdueVO> overdueMajor(Page page, @Param("overdueVO")MajorProdOverdueVO overdueVO);
+
+    List<MajorProdOverdueVO> overdueMajorExport(@Param("overdueVO")MajorProdOverdueVO overdueVO);
 }

+ 64 - 0
dao/src/main/resources/mapper/FinanceRealFundMapper.xml

@@ -80,4 +80,68 @@
         WHERE
             frf.deleted = 0
     </select>
+
+    <sql id="majorOverdueSql">
+        SELECT
+        mp.id,
+        DATEDIFF(
+        CURDATE(),
+        DATE( mp.repertory_out_time )) AS overdueDay,
+        pf.production_should_amount,
+        m.allot_type,
+        m.order_id,
+        m.business_object_type,
+        u.NAME AS clientManager,
+        u1.NAME AS principal,
+        cc1.NAME AS clientName,
+        cc2.NAME AS clientSubName,
+        pf.production_should_amount,
+        mp.*
+        FROM
+        (
+        SELECT
+        id,
+        major_id,
+        report_no,
+        ( CASE production WHEN 'STATEMENT' THEN '意见书' WHEN 'REPORT' THEN '报告' WHEN 'LETTER' THEN '复评函' ELSE '' END ) production,
+        NAME,
+        evaluate_amount,
+        repertory_out_time,
+        standard_amount
+        FROM
+        major_production mp
+        WHERE
+        deleted = 0
+        AND repertory_out_time IS NOT NULL
+        ) mp
+        LEFT JOIN ( SELECT business_id, production_no, production_should_amount, real_amount FROM production_fund WHERE business_type = 'MAJOR_BUSINESS' AND deleted = 0 ) pf ON ( mp.major_id = pf.business_id AND mp.report_no = pf.production_no )
+        LEFT JOIN major m ON m.id = mp.major_id
+        LEFT JOIN user u ON u.id = m.client_manager_id
+        LEFT JOIN user u1 ON u1.id = m.principal_id
+        LEFT JOIN customer_company cc1 ON cc1.id = m.clientele_id
+        LEFT JOIN customer_company cc2 ON cc2.id = m.clientele_sub_id
+        WHERE
+        ( pf.production_no IS NULL OR pf.real_amount IS NULL )
+        AND DATEDIFF(CURDATE(),DATE( mp.repertory_out_time )) &gt;= #{overdueVO.overdueMin}
+        <if test="overdueVO!=null and overdueVO.overdueMax!=null">
+            AND DATEDIFF(CURDATE(),DATE( mp.repertory_out_time )) &lt;= #{overdueVO.overdueMax}
+        </if>
+        <if test="overdueVO!=null and overdueVO.orderId!=null and overdueVO.orderId!=''">
+            and m.order_id = #{overdueVO.orderId}
+        </if>
+        <if test="overdueVO!=null and overdueVO.reportNo!=null and overdueVO.reportNo!=''">
+            and mp.report_no like concat ('%',#{overdueVO.reportNo},'%')
+        </if>
+        <if test="overdueVO!=null and overdueVO.principal!=null and overdueVO.principal!=''">
+            and u1.NAME like concat ('%',#{overdueVO.principal},'%')
+        </if>
+        order by overdueDay desc
+    </sql>
+    <select id="overdueMajor" parameterType="com.dayou.vo.MajorProdOverdueVO" resultType="com.dayou.vo.MajorProdOverdueVO">
+        <include refid="majorOverdueSql" />
+    </select>
+
+    <select id="overdueMajorExport" parameterType="com.dayou.vo.MajorProdOverdueVO" resultType="com.dayou.vo.MajorProdOverdueVO">
+        <include refid="majorOverdueSql" />
+    </select>
 </mapper>

+ 69 - 0
domain/src/main/java/com/dayou/vo/MajorProdOverdueVO.java

@@ -0,0 +1,69 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 类说明:大中型逾期未收款VO
+ *
+ * @author: wucl
+ * @since: 2024/5/28
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class MajorProdOverdueVO {
+
+    @Excel(name = "超期天数")
+    private Integer overdueDay;
+
+    @Excel(name = "分单类型")
+    private String allotType;
+
+    @Excel(name = "项目编号")
+    private String orderId;
+
+    @Excel(name = "产品号")
+    private String reportNo;
+
+    @Excel(name = "产品类型")
+    private String production;
+
+    @Excel(name = "项目名称")
+    private String name;
+
+    @Excel(name = "客户名称")
+    private String clientName;
+
+    @Excel(name = "业务来源")
+    private String clientSubName;
+
+    private String businessObjectType;
+
+    @Excel(name = "客户经理")
+    private String clientManager;
+
+    @Excel(name = "负责人")
+    private String principal;
+
+    @Excel(name = "评估价值")
+    private BigDecimal evaluateAmount;
+
+    @Excel(name = "应收款")
+    private BigDecimal productionShouldAmount;
+
+    @Excel(name = "收费标准")
+    private BigDecimal standardAmount;
+
+    @Excel(name = "出库时间" ,dateFormat="yyyy-MM-dd HH:mm:ss")
+    private Date repertoryOutTime;
+
+
+    private Integer overdueMin;
+
+    private Integer overdueMax;
+
+
+}

+ 6 - 0
service/src/main/java/com/dayou/service/IFinanceRealFundService.java

@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.dayou.vo.FinanceRealFundVO;
+import com.dayou.vo.MajorProdOverdueVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * <p>
@@ -30,4 +32,8 @@ public interface IFinanceRealFundService extends IService<FinanceRealFund> {
         Boolean delete(Long id);
 
         BigDecimal getNotClaimAmount(Long realFundId);
+
+    Page<MajorProdOverdueVO> overdueMajor(MajorProdOverdueVO overdueVO, Page page);
+
+    List<MajorProdOverdueVO> overdueMajorExport(MajorProdOverdueVO overdueVO);
 }

+ 17 - 0
service/src/main/java/com/dayou/service/impl/FinanceRealFundServiceImpl.java

@@ -11,6 +11,7 @@ import com.dayou.service.IFinanceRealFundService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.utils.LoginContext;
 import com.dayou.vo.FinanceRealFundVO;
+import com.dayou.vo.MajorProdOverdueVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -72,6 +73,11 @@ public class FinanceRealFundServiceImpl extends ServiceImpl<FinanceRealFundMappe
 
     @Override
     public Boolean update(FinanceRealFund financeRealFund){
+        List<FinanceClaim> list = financeClaimService.list(new LambdaQueryWrapper<FinanceClaim>().eq(FinanceClaim::getRealFundId, financeRealFund.getId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
+        if (CollectionUtil.isNotEmpty(list)){
+            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"此笔实收款,已有订单认领金额,无法修改。");
+            return Boolean.FALSE;
+        }
         return  this.updateById(financeRealFund);
     }
 
@@ -91,4 +97,15 @@ public class FinanceRealFundServiceImpl extends ServiceImpl<FinanceRealFundMappe
         BigDecimal claimAmount = financeRealFundMapper.getNotClaimAmount(realFundId);
         return claimAmount;
     }
+
+    @Override
+    public Page<MajorProdOverdueVO> overdueMajor(MajorProdOverdueVO overdueVO, Page page) {
+        Page<MajorProdOverdueVO> result = financeRealFundMapper.overdueMajor(page,overdueVO);
+        return result;
+    }
+
+    @Override
+    public List<MajorProdOverdueVO> overdueMajorExport(MajorProdOverdueVO overdueVO) {
+        return financeRealFundMapper.overdueMajorExport(overdueVO);
+    }
 }