Explorar el Código

1.修复产品实收款认领记录对orderFund与prodFund关联错误的问题
2.新增财务管理资产实收款统计相关查询与导出接口
3.表字段新增

GouGengquan hace 1 año
padre
commit
5acb295763

+ 35 - 0
biz-base/src/main/java/com/dayou/controller/FinanceClaimController.java

@@ -1,7 +1,12 @@
 package com.dayou.controller;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.dayou.annotation.IgnoreAuth;
+import com.dayou.dto.RealFundAssetsStatDTO;
+import com.dayou.exception.ErrorCode;
+import com.dayou.vo.AssetsRepertoryVo;
 import com.dayou.vo.FinanceClaimVO;
+import com.dayou.vo.RealFundAssetsStatVO;
 import com.dayou.vo.RealFundMajorStatVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -17,6 +22,8 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -134,5 +141,33 @@ public class FinanceClaimController extends BaseController {
         List<RealFundMajorStatVO> list = financeClaimService.majorStatExport(majorStat);
         exportPlus(response,"大中型实收款列表",list,RealFundMajorStatVO.class);
     }
+
+    /**
+     * 分页查询资产实收款统计
+     * @param page 分页信息
+     * @param dto 查询dto
+     * @return Page<RealFundAssetsStatVO>
+     */
+    @GetMapping("assets/stat")
+    public RestResponse<Page<RealFundAssetsStatVO>> assetsSate(Page page, RealFundAssetsStatDTO dto) {
+        return RestResponse.data(financeClaimService.assetsSate(page, dto));
+    }
+
+    /**
+     * 资产实收款统计导出
+     * @param dto 查询dto
+     */
+    @GetMapping("assets/stat/export")
+    public void assetsSateExport(HttpServletResponse response, RealFundAssetsStatDTO dto) throws IOException {
+        List<RealFundAssetsStatVO> list = financeClaimService.assetsSateExport(dto);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        if (ObjectUtil.isNull(dto.getStartTime()) || ObjectUtil.isNull(dto.getEndTime())){
+            ErrorCode.throwBusinessException("起始时间和结束时间必填!", "500");
+        }if (ObjectUtil.isNull(list) || list.isEmpty()){
+            ErrorCode.throwBusinessException("条件筛选结果数量为0,不可导出!", "500");
+        }else {
+            exportPlus(response, "资产实收款统计_" + dateFormat.format(new Date()),list, RealFundAssetsStatVO.class);
+        }
+    }
 }
 

+ 17 - 0
dao/src/main/java/com/dayou/mapper/FinanceClaimMapper.java

@@ -1,9 +1,11 @@
 package com.dayou.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.dto.RealFundAssetsStatDTO;
 import com.dayou.entity.FinanceClaim;
 import com.dayou.dao.CustomBaseMapper;
 import com.dayou.vo.FinanceClaimVO;
+import com.dayou.vo.RealFundAssetsStatVO;
 import com.dayou.vo.RealFundMajorStatVO;
 import org.apache.ibatis.annotations.Param;
 
@@ -29,4 +31,19 @@ public interface FinanceClaimMapper extends CustomBaseMapper<FinanceClaim> {
     Page<RealFundMajorStatVO> majorStat(Page page,@Param("majorStat")  RealFundMajorStatVO majorStat);
 
     List<RealFundMajorStatVO> majorStatExport(@Param("majorStat") RealFundMajorStatVO majorStat);
+
+    /**
+     * 分页查询资产实收款统计
+     * @param page 分页信息
+     * @param dto 查询dto
+     * @return Page<RealFundAssetsStatVO>
+     */
+    Page<RealFundAssetsStatVO> assetsSate(Page page, @Param("dto") RealFundAssetsStatDTO dto);
+
+    /**
+     * 资产实收款统计导出
+     * @param dto 查询dto
+     * @return Page<RealFundAssetsStatVO>
+     */
+    List<RealFundAssetsStatVO> assetsSateExport(@Param("dto") RealFundAssetsStatDTO dto);
 }

+ 90 - 0
dao/src/main/resources/mapper/FinanceClaimMapper.xml

@@ -168,4 +168,94 @@
     <select id="majorStatExport" parameterType="com.dayou.vo.RealFundMajorStatVO" resultType="com.dayou.vo.RealFundMajorStatVO">
         <include refid="majorStatQuery" />
     </select>
+
+    <!--资产实收款统计-->
+    <sql id="assetsStatQuery">
+        SELECT
+        claim.real_fund_id,
+        claim.order_fund_id,
+        claim.production_fund_id,
+        claim.id,
+        prod.production_no AS reportNo,
+        assets.order_id AS orderId,
+        assets.`name` AS orderName,
+        (
+        SELECT
+        department.name
+        FROM
+        department,
+        post,
+        user_post,
+        `user`
+        WHERE
+        `user`.id = user_post.user_id
+        AND user_post.post_id = post.id
+        AND post.department_id = department.id
+        AND `user`.id = assets.client_manager_id
+        ) AS marketDepartment,
+        ( SELECT department.name FROM department WHERE department.id = assets.department_id ) AS evaluateDepartment,
+        managerUser.name AS clientManagerName,
+        principalUser.name AS principalName,
+        realFund.payer AS payer,
+        realFund.pay_datetime AS payDateTime,
+        order_fund.should_amount AS orderShouldAmount,
+        prodFund.production_should_amount AS prodShouldAmount,
+        claim.claim_amount AS claimAmount,
+        claimUser.name AS claimUser,
+        assets.assets_business_gener AS assetsBusinessGener,
+        ( SELECT customer_company.name FROM customer_company WHERE customer_company.id = assets.clientele_id ) AS clientName,
+        ( SELECT customer_company.name FROM customer_company WHERE customer_company.id = assets.clientele_sub_id ) AS clientSubName,
+        assets.bailor AS bailor,
+        prod.evaluate_amount,
+        prod.production_type AS productionType,
+        prod.if_save_file AS ifSaveFile
+        FROM
+        finance_claim AS claim
+        LEFT JOIN finance_real_fund AS realFund ON realFund.id = claim.real_fund_id
+        LEFT JOIN order_fund ON order_fund.id = claim.order_fund_id
+        LEFT JOIN production_fund AS prodFund ON prodFund.id = claim.production_fund_id
+        LEFT JOIN assets ON assets.id = order_fund.business_id
+        AND assets.order_id = order_fund.order_id
+        LEFT JOIN `user` AS managerUser ON managerUser.id = assets.client_manager_id
+        LEFT JOIN `user` AS principalUser ON principalUser.id = assets.principal_id
+        LEFT JOIN `user` AS claimUser ON claimUser.id = claim.claim_user_id
+        LEFT JOIN assets_production AS prod ON assets.id = prod.business_id AND prodFund.production_no = prod.production_no
+        WHERE order_fund.business_type = 'ASSET_BUSINESS'
+        <if test="dto != null and dto.orderId != null and dto.orderId != ''">
+            AND assets.order_id = #{dto.orderId}
+        </if>
+        <if test="dto != null and dto.reportNo != null and dto.reportNo != ''">
+            AND prod.production_no = #{dto.reportNo}
+        </if>
+        <if test="dto != null and dto.principalId != null and dto.principalId != ''">
+            AND assets.principal_id = #{dto.principalId}
+        </if>
+        <if test="dto != null and dto.claimUserId != null and dto.claimUserId != ''">
+            AND claim.claim_user_id = #{dto.claimUserId}
+        </if>
+        <if test="dto != null and dto.claimAmount != null and dto.claimAmount != ''">
+            AND claim.claim_amount = #{dto.claimAmount}
+        </if>
+        <if test="dto != null and dto.assetsBusinessGener != null and dto.assetsBusinessGener != ''">
+            AND assets.assets_business_gener = #{dto.assetsBusinessGener}
+        </if>
+        <if test="dto != null and dto.ifSaveFile != null and dto.ifSaveFile != ''">
+            AND prod.if_save_file = #{dto.ifSaveFile}
+        </if>
+        <if test="dto != null and dto.startTime != null and dto.endTime!= null">
+            AND (claim.claim_datetime BETWEEN #{dto.startTime} AND #{dto.endTime})
+        </if>
+        ORDER BY claim.claim_datetime DESC
+    </sql>
+
+    <!--查询资产实收款统计-->
+    <select id="assetsSate" parameterType="com.dayou.dto.RealFundAssetsStatDTO" resultType="com.dayou.vo.RealFundAssetsStatVO">
+        <include refid="assetsStatQuery" />
+    </select>
+
+    <!--资产实收款统计导出-->
+    <select id="assetsSateExport" resultType="com.dayou.vo.RealFundAssetsStatVO">
+        <include refid="assetsStatQuery" />
+    </select>
+
 </mapper>

+ 58 - 0
domain/src/main/java/com/dayou/dto/RealFundAssetsStatDTO.java

@@ -0,0 +1,58 @@
+package com.dayou.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class RealFundAssetsStatDTO {
+
+    /**
+     * 筛选开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    /**
+     * 筛选结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    /**
+     * 项目编号
+     */
+    private String orderId;
+
+    /**
+     * 报告号
+     */
+    private String reportNo;
+
+    /**
+     * 项目负责人id(user_id)
+     */
+    private Long principalId;
+
+    /**
+     * 认领人id(user_id)
+     */
+    private Long claimUserId;
+
+    /**
+     * 认领金额
+     */
+    private BigDecimal claimAmount;
+
+    /**
+     * 资产业务类型
+     */
+    private String assetsBusinessGener;
+
+    /**
+     * 是否归档(true=已归档,false=未归档)
+     */
+    private Boolean ifSaveFile;
+}

+ 139 - 0
domain/src/main/java/com/dayou/vo/RealFundAssetsStatVO.java

@@ -0,0 +1,139 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import com.dayou.common.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
+
+@Data
+public class RealFundAssetsStatVO extends BaseEntity {
+
+    /**
+     * 是否归档
+     */
+    @Excel(name = "是否归档", readConverterExp = "true=已归档,false=未归档")
+    private Boolean ifSaveFile;
+
+    /**
+     * 报告号
+     */
+    @Excel(name = "报告号")
+    private String reportNo;
+
+    /**
+     * 项目编号
+     */
+    @Excel(name = "项目编号")
+    private String orderId;
+
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称")
+    private String orderName;
+
+    /**
+     * 市场部门
+     */
+    @Excel(name = "市场部门")
+    private String marketDepartment;
+
+    /**
+     * 评估部门
+     */
+    @Excel(name = "评估部门")
+    private String evaluateDepartment;
+
+    /**
+     * 客户经理名
+     */
+    @Excel(name = "客户经理")
+    private String clientManagerName;
+
+    /**
+     * 项目负责人名
+     */
+    @Excel(name = "项目负责人")
+    private String principalName;
+
+    /**
+     * 付款方
+     */
+    @Excel(name = "付款方")
+    private String payer;
+
+    /**
+     * 入账时间
+     */
+    @Excel(name = "入账时间")
+    private LocalDate payDateTime;
+
+    /**
+     * 认领时间
+     */
+    @Excel(name = "认领时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date claimDatetime;
+
+    /**
+     * 订单应收款
+     */
+    @Excel(name = "订单应收款(元)")
+    private BigDecimal orderShouldAmount;
+
+    /**
+     * 产品应收款
+     */
+    @Excel(name = "产品应收款(元)")
+    private BigDecimal prodShouldAmount;
+
+    /**
+     * 认领金额
+     */
+    @Excel(name = "认领金额(元)")
+    private BigDecimal claimAmount;
+
+    /**
+     * 认领人
+     */
+    @Excel(name = "认领人")
+    private String claimUser;
+
+    /**
+     * 资产业务类型
+     */
+    @Excel(name = "资产业务类型")
+    private String assetsBusinessGener;
+
+    /**
+     * 客户名称
+     */
+    @Excel(name = "客户名称")
+    private String clientName;
+
+    /**
+     * 业务来源
+     */
+    @Excel(name = "业务来源")
+    private String clientSubName;
+
+    /**
+     * 委托人
+     */
+    @Excel(name = "委托人")
+    private String bailor;
+
+    /**
+     * 评估价值
+     */
+    @Excel(name = "评估价值(元)")
+    private BigDecimal evaluateAmount;
+
+    /**
+     * 产品类型
+     */
+    @Excel(name = "产品类型", readConverterExp = "REPORT=报告,STATEMENT=意见书,LETTER=复评函")
+    private String productionType;
+}

+ 17 - 3
service/src/main/java/com/dayou/service/IFinanceClaimService.java

@@ -1,13 +1,12 @@
 package com.dayou.service;
-import com.dayou.dto.OrderReportDTO;
 import com.dayou.dto.PersonalClaimDTO;
+import com.dayou.dto.RealFundAssetsStatDTO;
 import com.dayou.entity.FinanceClaim;
 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.FinanceClaimVO;
+import com.dayou.vo.RealFundAssetsStatVO;
 import com.dayou.vo.RealFundMajorStatVO;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
@@ -63,4 +62,19 @@ public interface IFinanceClaimService extends IService<FinanceClaim> {
     Page<RealFundMajorStatVO> majorStat(Page page, RealFundMajorStatVO majorStat);
 
     List<RealFundMajorStatVO> majorStatExport(RealFundMajorStatVO majorStat);
+
+    /**
+     * 分页查询资产实收款统计
+     * @param page 分页信息
+     * @param dto 查询dto
+     * @return Page<RealFundAssetsStatVO>
+     */
+    Page<RealFundAssetsStatVO> assetsSate(Page page, RealFundAssetsStatDTO dto);
+
+    /**
+     * 资产实收款统计导出
+     * @param dto 查询dto
+     * @return Page<RealFundAssetsStatVO>
+     */
+    List<RealFundAssetsStatVO> assetsSateExport(RealFundAssetsStatDTO dto);
 }

+ 2 - 2
service/src/main/java/com/dayou/service/impl/AssetsProductionServiceImpl.java

@@ -395,10 +395,10 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
                 Long userId = LoginContext.getCurrentUserId();
                 financeClaim.setClaimUserId(userId);
                 financeClaim.setRealFundId(financeFundId);
-                financeClaim.setOrderFundId(orderReportDTO.getProductionFundId());
+                financeClaim.setOrderFundId(orderReportDTO.getOrderFundId());
                 financeClaim.setClaimAmount(thisTimeAmount);
                 financeClaim.setClaimDatetime(LocalDateTime.now());
-                financeClaim.setProductionFundId(orderReportDTO.getOrderFundId());
+                financeClaim.setProductionFundId(orderReportDTO.getProductionFundId());
                 financeClaimService.add(financeClaim);
             }
             return Boolean.TRUE;

+ 23 - 0
service/src/main/java/com/dayou/service/impl/FinanceClaimServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.OrderReportDTO;
 import com.dayou.dto.PersonalClaimDTO;
+import com.dayou.dto.RealFundAssetsStatDTO;
 import com.dayou.entity.FinanceClaim;
 import com.dayou.entity.FinanceRealFund;
 import com.dayou.entity.OrderFund;
@@ -19,6 +20,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.utils.ExcelUtil;
 import com.dayou.utils.LoginContext;
 import com.dayou.vo.FinanceClaimVO;
+import com.dayou.vo.RealFundAssetsStatVO;
 import com.dayou.vo.RealFundMajorStatVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -180,6 +182,27 @@ public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, Fin
         return financeClaimMapper.majorStatExport(majorStat);
     }
 
+    /**
+     * 分页查询资产实收款统计
+     * @param page 分页信息
+     * @param dto 查询dto
+     * @return Page<RealFundAssetsStatVO>
+     */
+    @Override
+    public Page<RealFundAssetsStatVO> assetsSate(Page page, RealFundAssetsStatDTO dto) {
+        return financeClaimMapper.assetsSate(page, dto);
+    }
+
+    /**
+     * 资产实收款统计导出
+     * @param dto 查询dto
+     * @return Page<RealFundAssetsStatVO>
+     */
+    @Override
+    public List<RealFundAssetsStatVO> assetsSateExport(RealFundAssetsStatDTO dto) {
+        return financeClaimMapper.assetsSateExport(dto);
+    }
+
 
     @Override
     public synchronized BigDecimal checkFinanceFound(Long financeFundId) {

+ 8 - 1
sql/update_sql.sql

@@ -497,4 +497,11 @@ ALTER TABLE assets_evaluation_target MODIFY COLUMN file_path JSON NULL COMMENT '
   修改人:苟耕铨
  */
 # 表business_performance_distribution新增字段participation_duration
-ALTER TABLE business_performance_distribution ADD COLUMN participation_duration  INT(11) NULL COMMENT '参与时长(小时)';
+ALTER TABLE business_performance_distribution ADD COLUMN participation_duration  INT(11) NULL COMMENT '参与时长(小时)';
+
+/**
+  日期:2024-06-12
+  修改人:苟耕铨
+ */
+# 表assets_production新增字段if_save_file
+ALTER TABLE assets_production ADD COLUMN if_save_file bit(1) NOT NULL DEFAULT 0 comment '是否归档';