新增新增贷款查询和导出
This commit is contained in:
@@ -8,6 +8,8 @@ import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferDetailQueryD
|
|||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO;
|
||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityDetailQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityDetailQueryDTO;
|
||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityListQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityListQueryDTO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectIncreaseLendingQueryDTO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.excel.CcdiProjectIncreaseLendingExcel;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedRecruitmentDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedRecruitmentDetailVO;
|
||||||
@@ -16,16 +18,21 @@ import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferDetailVO;
|
|||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferListVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferListVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListVO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectIncreaseLendingListVO;
|
||||||
import com.ruoyi.ccdi.project.service.CcdiProjectAccessService;
|
import com.ruoyi.ccdi.project.service.CcdiProjectAccessService;
|
||||||
import com.ruoyi.ccdi.project.service.ICcdiProjectSpecialCheckService;
|
import com.ruoyi.ccdi.project.service.ICcdiProjectSpecialCheckService;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import java.util.List;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@@ -138,4 +145,29 @@ public class CcdiProjectSpecialCheckController extends BaseController {
|
|||||||
CcdiProjectExtendedTransferDetailVO result = specialCheckService.getExtendedTransferDetail(queryDTO);
|
CcdiProjectExtendedTransferDetailVO result = specialCheckService.getExtendedTransferDetail(queryDTO);
|
||||||
return AjaxResult.success(result);
|
return AjaxResult.success(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询新增贷款列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/increase-lending/list")
|
||||||
|
@Operation(summary = "查询新增贷款列表")
|
||||||
|
@PreAuthorize("@ss.hasPermi('ccdi:project:query')")
|
||||||
|
public AjaxResult getIncreaseLendingList(@Validated CcdiProjectIncreaseLendingQueryDTO queryDTO) {
|
||||||
|
projectAccessService.assertCanRead(queryDTO.getProjectId());
|
||||||
|
CcdiProjectIncreaseLendingListVO result = specialCheckService.getIncreaseLendingList(queryDTO);
|
||||||
|
return AjaxResult.success(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出新增贷款列表
|
||||||
|
*/
|
||||||
|
@PostMapping("/increase-lending/export")
|
||||||
|
@Operation(summary = "导出新增贷款列表")
|
||||||
|
@PreAuthorize("@ss.hasPermi('ccdi:project:query')")
|
||||||
|
public void exportIncreaseLending(HttpServletResponse response, @Validated CcdiProjectIncreaseLendingQueryDTO queryDTO) {
|
||||||
|
projectAccessService.assertCanRead(queryDTO.getProjectId());
|
||||||
|
List<CcdiProjectIncreaseLendingExcel> rows = specialCheckService.exportIncreaseLendingList(queryDTO);
|
||||||
|
ExcelUtil<CcdiProjectIncreaseLendingExcel> util = new ExcelUtil<>(CcdiProjectIncreaseLendingExcel.class);
|
||||||
|
util.exportExcel(response, rows, "新增贷款查询");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package com.ruoyi.ccdi.project.domain.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目新增贷款查询入参
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CcdiProjectIncreaseLendingQueryDTO {
|
||||||
|
|
||||||
|
/** 项目ID */
|
||||||
|
@NotNull(message = "项目ID不能为空")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/** 柜员号 */
|
||||||
|
private String staffId;
|
||||||
|
|
||||||
|
/** 员工身份证号 */
|
||||||
|
private String staffIdCard;
|
||||||
|
|
||||||
|
/** 审核人柜员号 */
|
||||||
|
private String approver;
|
||||||
|
|
||||||
|
/** 发放日期起 */
|
||||||
|
private String loanStartDate;
|
||||||
|
|
||||||
|
/** 发放日期止 */
|
||||||
|
private String loanEndDate;
|
||||||
|
|
||||||
|
/** 页码 */
|
||||||
|
private Integer pageNum = 1;
|
||||||
|
|
||||||
|
/** 每页条数 */
|
||||||
|
private Integer pageSize = 10;
|
||||||
|
}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
package com.ruoyi.ccdi.project.domain.excel;
|
||||||
|
|
||||||
|
import com.ruoyi.common.annotation.Excel;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增贷款查询导出对象
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CcdiProjectIncreaseLendingExcel {
|
||||||
|
|
||||||
|
/** 柜员号 */
|
||||||
|
@Excel(name = "柜员号")
|
||||||
|
private String staffId;
|
||||||
|
|
||||||
|
/** 员工姓名 */
|
||||||
|
@Excel(name = "员工姓名")
|
||||||
|
private String staffName;
|
||||||
|
|
||||||
|
/** 员工身份证 */
|
||||||
|
@Excel(name = "员工身份证")
|
||||||
|
private String staffIdCard;
|
||||||
|
|
||||||
|
/** 部门 */
|
||||||
|
@Excel(name = "部门")
|
||||||
|
private String deptName;
|
||||||
|
|
||||||
|
/** 合同编号 */
|
||||||
|
@Excel(name = "合同编号")
|
||||||
|
private String contractNo;
|
||||||
|
|
||||||
|
/** 放款机构号 */
|
||||||
|
@Excel(name = "放款机构号")
|
||||||
|
private String lendingOrgNo;
|
||||||
|
|
||||||
|
/** 借款人 */
|
||||||
|
@Excel(name = "借款人")
|
||||||
|
private String borrowerName;
|
||||||
|
|
||||||
|
/** 借款人证件号 */
|
||||||
|
@Excel(name = "借款人证件号")
|
||||||
|
private String borrowerCertNo;
|
||||||
|
|
||||||
|
/** 贷款产品 */
|
||||||
|
@Excel(name = "贷款产品")
|
||||||
|
private String loanProduct;
|
||||||
|
|
||||||
|
/** 合同金额 */
|
||||||
|
@Excel(name = "合同金额")
|
||||||
|
private BigDecimal contractAmount;
|
||||||
|
|
||||||
|
/** 当前余额 */
|
||||||
|
@Excel(name = "当前余额")
|
||||||
|
private BigDecimal loanBalance;
|
||||||
|
|
||||||
|
/** 发放日期 */
|
||||||
|
@Excel(name = "发放日期")
|
||||||
|
private String loanStartDate;
|
||||||
|
|
||||||
|
/** 到期日期 */
|
||||||
|
@Excel(name = "到期日期")
|
||||||
|
private String loanEndDate;
|
||||||
|
|
||||||
|
/** 合同状态 */
|
||||||
|
@Excel(name = "合同状态")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/** 五级分类 */
|
||||||
|
@Excel(name = "五级分类")
|
||||||
|
private String fiveClassification;
|
||||||
|
|
||||||
|
/** 客户经理ID */
|
||||||
|
@Excel(name = "客户经理ID")
|
||||||
|
private String customerManagerId;
|
||||||
|
|
||||||
|
/** 客户经理 */
|
||||||
|
@Excel(name = "客户经理")
|
||||||
|
private String customerManagerName;
|
||||||
|
|
||||||
|
/** 审批人 */
|
||||||
|
@Excel(name = "审批人")
|
||||||
|
private String approver;
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package com.ruoyi.ccdi.project.domain.vo;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目新增贷款查询列表项
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CcdiProjectIncreaseLendingListItemVO {
|
||||||
|
|
||||||
|
/** 员工ID/柜员号 */
|
||||||
|
private String staffId;
|
||||||
|
|
||||||
|
/** 员工姓名 */
|
||||||
|
private String staffName;
|
||||||
|
|
||||||
|
/** 员工身份证号 */
|
||||||
|
private String staffIdCard;
|
||||||
|
|
||||||
|
/** 所属部门 */
|
||||||
|
private String deptName;
|
||||||
|
|
||||||
|
/** 合同编号 */
|
||||||
|
private String contractNo;
|
||||||
|
|
||||||
|
/** 放款机构号 */
|
||||||
|
private String lendingOrgNo;
|
||||||
|
|
||||||
|
/** 借款人名称 */
|
||||||
|
private String borrowerName;
|
||||||
|
|
||||||
|
/** 借款人证件号码 */
|
||||||
|
private String borrowerCertNo;
|
||||||
|
|
||||||
|
/** 贷款产品 */
|
||||||
|
private String loanProduct;
|
||||||
|
|
||||||
|
/** 合同金额 */
|
||||||
|
private BigDecimal contractAmount;
|
||||||
|
|
||||||
|
/** 当前贷款余额 */
|
||||||
|
private BigDecimal loanBalance;
|
||||||
|
|
||||||
|
/** 贷款发放日期 */
|
||||||
|
private String loanStartDate;
|
||||||
|
|
||||||
|
/** 贷款到期日期 */
|
||||||
|
private String loanEndDate;
|
||||||
|
|
||||||
|
/** 合同状态 */
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/** 五级分类 */
|
||||||
|
private String fiveClassification;
|
||||||
|
|
||||||
|
/** 客户经理ID */
|
||||||
|
private String customerManagerId;
|
||||||
|
|
||||||
|
/** 客户经理姓名 */
|
||||||
|
private String customerManagerName;
|
||||||
|
|
||||||
|
/** 审批人 */
|
||||||
|
private String approver;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.ruoyi.ccdi.project.domain.vo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目新增贷款查询列表结果
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CcdiProjectIncreaseLendingListVO {
|
||||||
|
|
||||||
|
/** 列表数据 */
|
||||||
|
private List<CcdiProjectIncreaseLendingListItemVO> rows;
|
||||||
|
|
||||||
|
/** 总数 */
|
||||||
|
private Long total;
|
||||||
|
}
|
||||||
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedPurchaseQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedPurchaseQueryDTO;
|
||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedRecruitmentQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedRecruitmentQueryDTO;
|
||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectIncreaseLendingQueryDTO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.excel.CcdiProjectIncreaseLendingExcel;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListItemVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListItemVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseSupplierVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseSupplierVO;
|
||||||
@@ -15,6 +17,7 @@ import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetItemVO;
|
|||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListItemVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListItemVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyDebtItemVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyDebtItemVO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectIncreaseLendingListItemVO;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
@@ -145,6 +148,28 @@ public interface CcdiProjectSpecialCheckMapper {
|
|||||||
@Param("query") CcdiProjectExtendedTransferQueryDTO queryDTO
|
@Param("query") CcdiProjectExtendedTransferQueryDTO queryDTO
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目新增贷款列表
|
||||||
|
*
|
||||||
|
* @param page 分页对象
|
||||||
|
* @param queryDTO 查询条件
|
||||||
|
* @return 分页结果
|
||||||
|
*/
|
||||||
|
Page<CcdiProjectIncreaseLendingListItemVO> selectIncreaseLendingPage(
|
||||||
|
@Param("page") Page<CcdiProjectIncreaseLendingListItemVO> page,
|
||||||
|
@Param("query") CcdiProjectIncreaseLendingQueryDTO queryDTO
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目新增贷款导出列表
|
||||||
|
*
|
||||||
|
* @param queryDTO 查询条件
|
||||||
|
* @return 导出列表
|
||||||
|
*/
|
||||||
|
List<CcdiProjectIncreaseLendingExcel> selectIncreaseLendingExportList(
|
||||||
|
@Param("query") CcdiProjectIncreaseLendingQueryDTO queryDTO
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询专项核查调动拓展详情
|
* 查询专项核查调动拓展详情
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferDetailQueryD
|
|||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO;
|
||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityDetailQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityDetailQueryDTO;
|
||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityListQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityListQueryDTO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectIncreaseLendingQueryDTO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.excel.CcdiProjectIncreaseLendingExcel;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedRecruitmentDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedRecruitmentDetailVO;
|
||||||
@@ -16,6 +18,8 @@ import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferDetailVO;
|
|||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferListVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferListVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListVO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectIncreaseLendingListVO;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目专项核查服务接口
|
* 项目专项核查服务接口
|
||||||
@@ -91,4 +95,20 @@ public interface ICcdiProjectSpecialCheckService {
|
|||||||
* @return 详情结果
|
* @return 详情结果
|
||||||
*/
|
*/
|
||||||
CcdiProjectExtendedTransferDetailVO getExtendedTransferDetail(CcdiProjectExtendedTransferDetailQueryDTO queryDTO);
|
CcdiProjectExtendedTransferDetailVO getExtendedTransferDetail(CcdiProjectExtendedTransferDetailQueryDTO queryDTO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目新增贷款列表
|
||||||
|
*
|
||||||
|
* @param queryDTO 查询条件
|
||||||
|
* @return 列表结果
|
||||||
|
*/
|
||||||
|
CcdiProjectIncreaseLendingListVO getIncreaseLendingList(CcdiProjectIncreaseLendingQueryDTO queryDTO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出项目新增贷款列表
|
||||||
|
*
|
||||||
|
* @param queryDTO 查询条件
|
||||||
|
* @return 导出列表
|
||||||
|
*/
|
||||||
|
List<CcdiProjectIncreaseLendingExcel> exportIncreaseLendingList(CcdiProjectIncreaseLendingQueryDTO queryDTO);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferDetailQueryD
|
|||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO;
|
||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityDetailQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityDetailQueryDTO;
|
||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityListQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectFamilyAssetLiabilityListQueryDTO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectIncreaseLendingQueryDTO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.excel.CcdiProjectIncreaseLendingExcel;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListItemVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListItemVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListVO;
|
||||||
@@ -25,10 +27,13 @@ import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListItemV
|
|||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyDebtDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyDebtDetailVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyIncomeDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyIncomeDetailVO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectIncreaseLendingListItemVO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectIncreaseLendingListVO;
|
||||||
import com.ruoyi.ccdi.project.mapper.CcdiProjectMapper;
|
import com.ruoyi.ccdi.project.mapper.CcdiProjectMapper;
|
||||||
import com.ruoyi.ccdi.project.mapper.CcdiProjectSpecialCheckMapper;
|
import com.ruoyi.ccdi.project.mapper.CcdiProjectSpecialCheckMapper;
|
||||||
import com.ruoyi.ccdi.project.service.ICcdiProjectSpecialCheckService;
|
import com.ruoyi.ccdi.project.service.ICcdiProjectSpecialCheckService;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -178,6 +183,37 @@ public class CcdiProjectSpecialCheckServiceImpl implements ICcdiProjectSpecialCh
|
|||||||
return detail;
|
return detail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CcdiProjectIncreaseLendingListVO getIncreaseLendingList(CcdiProjectIncreaseLendingQueryDTO queryDTO) {
|
||||||
|
validateIncreaseLendingQuery(queryDTO);
|
||||||
|
|
||||||
|
Page<CcdiProjectIncreaseLendingListItemVO> page = new Page<>(
|
||||||
|
defaultPageNum(queryDTO.getPageNum()),
|
||||||
|
defaultPageSize(queryDTO.getPageSize())
|
||||||
|
);
|
||||||
|
Page<CcdiProjectIncreaseLendingListItemVO> resultPage = specialCheckMapper.selectIncreaseLendingPage(page, queryDTO);
|
||||||
|
|
||||||
|
CcdiProjectIncreaseLendingListVO result = new CcdiProjectIncreaseLendingListVO();
|
||||||
|
result.setRows(resultPage == null ? List.of() : defaultList(resultPage.getRecords()));
|
||||||
|
result.setTotal(resultPage == null ? 0L : resultPage.getTotal());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CcdiProjectIncreaseLendingExcel> exportIncreaseLendingList(CcdiProjectIncreaseLendingQueryDTO queryDTO) {
|
||||||
|
validateIncreaseLendingQuery(queryDTO);
|
||||||
|
return defaultList(specialCheckMapper.selectIncreaseLendingExportList(queryDTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateIncreaseLendingQuery(CcdiProjectIncreaseLendingQueryDTO queryDTO) {
|
||||||
|
ensureProjectExists(queryDTO.getProjectId());
|
||||||
|
if (StringUtils.isBlank(queryDTO.getStaffId())
|
||||||
|
&& StringUtils.isBlank(queryDTO.getStaffIdCard())
|
||||||
|
&& StringUtils.isBlank(queryDTO.getApprover())) {
|
||||||
|
throw new ServiceException("柜员号、员工身份证和审核人柜员号至少填写一项");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void ensureProjectExists(Long projectId) {
|
private void ensureProjectExists(Long projectId) {
|
||||||
CcdiProject project = projectMapper.selectById(projectId);
|
CcdiProject project = projectMapper.selectById(projectId);
|
||||||
if (project == null) {
|
if (project == null) {
|
||||||
|
|||||||
@@ -67,6 +67,28 @@
|
|||||||
<result property="transferDate" column="transfer_date"/>
|
<result property="transferDate" column="transfer_date"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<resultMap id="IncreaseLendingListItemResultMap"
|
||||||
|
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectIncreaseLendingListItemVO">
|
||||||
|
<result property="staffId" column="staff_id"/>
|
||||||
|
<result property="staffName" column="staff_name"/>
|
||||||
|
<result property="staffIdCard" column="staff_id_card"/>
|
||||||
|
<result property="deptName" column="dept_name"/>
|
||||||
|
<result property="contractNo" column="contract_no"/>
|
||||||
|
<result property="lendingOrgNo" column="lending_org_no"/>
|
||||||
|
<result property="borrowerName" column="borrower_name"/>
|
||||||
|
<result property="borrowerCertNo" column="borrower_cert_no"/>
|
||||||
|
<result property="loanProduct" column="loan_product"/>
|
||||||
|
<result property="contractAmount" column="contract_amount"/>
|
||||||
|
<result property="loanBalance" column="loan_balance"/>
|
||||||
|
<result property="loanStartDate" column="loan_start_date"/>
|
||||||
|
<result property="loanEndDate" column="loan_end_date"/>
|
||||||
|
<result property="status" column="status"/>
|
||||||
|
<result property="fiveClassification" column="five_classification"/>
|
||||||
|
<result property="customerManagerId" column="customer_manager_id"/>
|
||||||
|
<result property="customerManagerName" column="customer_manager_name"/>
|
||||||
|
<result property="approver" column="approver"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
<resultMap id="FamilyAssetLiabilityDetailResultMap"
|
<resultMap id="FamilyAssetLiabilityDetailResultMap"
|
||||||
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO">
|
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO">
|
||||||
<association property="incomeDetail"
|
<association property="incomeDetail"
|
||||||
@@ -806,4 +828,95 @@
|
|||||||
)
|
)
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectIncreaseLendingPage" resultMap="IncreaseLendingListItemResultMap">
|
||||||
|
select
|
||||||
|
trim(loan.customer_manager_id) as staff_id,
|
||||||
|
coalesce(staff.name, loan.customer_manager_name) as staff_name,
|
||||||
|
staff.id_card as staff_id_card,
|
||||||
|
dept.dept_name,
|
||||||
|
loan.nfaacono as contract_no,
|
||||||
|
loan.nfaabrno as lending_org_no,
|
||||||
|
loan.borrower_name,
|
||||||
|
loan.borrower_cert_no,
|
||||||
|
loan.loan_product,
|
||||||
|
loan.contract_amount,
|
||||||
|
loan.loan_balance,
|
||||||
|
date_format(loan.loan_start_date, '%Y-%m-%d') as loan_start_date,
|
||||||
|
date_format(loan.loan_end_date, '%Y-%m-%d') as loan_end_date,
|
||||||
|
loan.status,
|
||||||
|
loan.five_classification,
|
||||||
|
loan.customer_manager_id,
|
||||||
|
loan.customer_manager_name,
|
||||||
|
loan.approver
|
||||||
|
from ccdi_increase_lending loan
|
||||||
|
left join ccdi_base_staff staff
|
||||||
|
on trim(loan.customer_manager_id) = cast(staff.staff_id as char)
|
||||||
|
left join sys_dept dept
|
||||||
|
on dept.dept_id = staff.dept_id
|
||||||
|
<where>
|
||||||
|
<if test="query.staffId != null and query.staffId != ''">
|
||||||
|
and trim(loan.customer_manager_id) = #{query.staffId}
|
||||||
|
</if>
|
||||||
|
<if test="query.staffIdCard != null and query.staffIdCard != ''">
|
||||||
|
and staff.id_card = #{query.staffIdCard}
|
||||||
|
</if>
|
||||||
|
<if test="query.approver != null and query.approver != ''">
|
||||||
|
and trim(loan.approver) = #{query.approver}
|
||||||
|
</if>
|
||||||
|
<if test="query.loanStartDate != null and query.loanStartDate != ''">
|
||||||
|
and loan.loan_start_date >= #{query.loanStartDate}
|
||||||
|
</if>
|
||||||
|
<if test="query.loanEndDate != null and query.loanEndDate != ''">
|
||||||
|
and loan.loan_start_date <= #{query.loanEndDate}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by loan.loan_start_date desc, loan.nfaacono desc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectIncreaseLendingExportList"
|
||||||
|
resultType="com.ruoyi.ccdi.project.domain.excel.CcdiProjectIncreaseLendingExcel">
|
||||||
|
select
|
||||||
|
trim(loan.customer_manager_id) as staff_id,
|
||||||
|
coalesce(staff.name, loan.customer_manager_name) as staff_name,
|
||||||
|
staff.id_card as staff_id_card,
|
||||||
|
dept.dept_name,
|
||||||
|
loan.nfaacono as contract_no,
|
||||||
|
loan.nfaabrno as lending_org_no,
|
||||||
|
loan.borrower_name,
|
||||||
|
loan.borrower_cert_no,
|
||||||
|
loan.loan_product,
|
||||||
|
loan.contract_amount,
|
||||||
|
loan.loan_balance,
|
||||||
|
date_format(loan.loan_start_date, '%Y-%m-%d') as loan_start_date,
|
||||||
|
date_format(loan.loan_end_date, '%Y-%m-%d') as loan_end_date,
|
||||||
|
loan.status,
|
||||||
|
loan.five_classification,
|
||||||
|
loan.customer_manager_id,
|
||||||
|
loan.customer_manager_name,
|
||||||
|
loan.approver
|
||||||
|
from ccdi_increase_lending loan
|
||||||
|
left join ccdi_base_staff staff
|
||||||
|
on trim(loan.customer_manager_id) = cast(staff.staff_id as char)
|
||||||
|
left join sys_dept dept
|
||||||
|
on dept.dept_id = staff.dept_id
|
||||||
|
<where>
|
||||||
|
<if test="query.staffId != null and query.staffId != ''">
|
||||||
|
and trim(loan.customer_manager_id) = #{query.staffId}
|
||||||
|
</if>
|
||||||
|
<if test="query.staffIdCard != null and query.staffIdCard != ''">
|
||||||
|
and staff.id_card = #{query.staffIdCard}
|
||||||
|
</if>
|
||||||
|
<if test="query.approver != null and query.approver != ''">
|
||||||
|
and trim(loan.approver) = #{query.approver}
|
||||||
|
</if>
|
||||||
|
<if test="query.loanStartDate != null and query.loanStartDate != ''">
|
||||||
|
and loan.loan_start_date >= #{query.loanStartDate}
|
||||||
|
</if>
|
||||||
|
<if test="query.loanEndDate != null and query.loanEndDate != ''">
|
||||||
|
and loan.loan_start_date <= #{query.loanEndDate}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by loan.loan_start_date desc, loan.nfaacono desc
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# 新增贷款查询模块实施计划
|
||||||
|
|
||||||
|
## 需求范围
|
||||||
|
|
||||||
|
在项目详情的“专项排查”页面中,于资金流向图谱下方新增“新增贷款查询”模块。模块用于查询某个员工经办/管户或审核的新增贷款合同,支持通过柜员号、员工身份证、审核人柜员号和发放日期筛选,并支持导出单人查询结果。
|
||||||
|
|
||||||
|
## 设计口径
|
||||||
|
|
||||||
|
- 页面位置:`项目详情 > 专项排查 > 资金流向图谱下方`
|
||||||
|
- 数据范围:按输入的柜员号或员工身份证查询对应贷款,不默认展开全量列表,不再限定当前项目排查人员范围;柜员号精确匹配
|
||||||
|
- 关联方式:柜员号对应 `ccdi_increase_lending.customer_manager_id`
|
||||||
|
- 查询条件:柜员号、员工身份证、审核人柜员号、发放日期范围;柜员号、员工身份证、审核人柜员号均使用等值查询,不做模糊匹配
|
||||||
|
- 查询交互:默认展示筛选框和空表头;输入柜员号或员工身份证并点击查询后加载分页结果
|
||||||
|
- 导出口径:导出当前单人查询条件下的全部匹配贷款明细,不受当前分页页码限制
|
||||||
|
|
||||||
|
## 后端实施
|
||||||
|
|
||||||
|
1. 在 `CcdiProjectSpecialCheckController` 新增 `/increase-lending/list` 查询接口。
|
||||||
|
2. 新增 `CcdiProjectIncreaseLendingQueryDTO`,包含 `projectId`、`staffId`、`staffIdCard`、`approver`、`loanStartDate`、`loanEndDate`、分页参数。
|
||||||
|
3. 新增 `CcdiProjectIncreaseLendingListVO` 与 `CcdiProjectIncreaseLendingListItemVO`。
|
||||||
|
4. 在 `CcdiProjectSpecialCheckServiceImpl` 增加分页查询方法。
|
||||||
|
5. 在 `CcdiProjectSpecialCheckMapper.xml` 使用 `ccdi_increase_lending.customer_manager_id` 直接精确匹配柜员号查询,员工身份证通过 `ccdi_base_staff.id_card` 精确过滤,审核人柜员号通过 `ccdi_increase_lending.approver` 精确过滤,并按 `loan_start_date` 支持发放日期范围筛选。
|
||||||
|
6. 新增导出 Excel 对象和 `/increase-lending/export` 接口,复用同一查询口径导出全部匹配明细。
|
||||||
|
|
||||||
|
## 前端实施
|
||||||
|
|
||||||
|
1. 在 `projectSpecialCheck.js` 新增 `getIncreaseLendingList` API。
|
||||||
|
2. 新增 `IncreaseLendingSection.vue`,默认展示筛选区和空表头,查询后展示贷款列表与分页;筛选区包含柜员号、员工身份证、审核人柜员号、发放日期范围。
|
||||||
|
3. 在 `SpecialCheck.vue` 的资金流向图谱下方挂载新增贷款查询模块。
|
||||||
|
4. 在筛选按钮区新增“导出”按钮,仅在填写柜员号、员工身份证或审核人柜员号后允许导出。
|
||||||
|
|
||||||
|
## 验证计划
|
||||||
|
|
||||||
|
- 后端执行 `mvn -pl ccdi-project -DskipTests compile`
|
||||||
|
- 前端执行 `npm run build:prod`
|
||||||
|
- 打开真实项目详情页,进入专项排查,确认新增贷款查询模块显示在资金流向图谱下方
|
||||||
|
- 验证柜员号、员工身份证、审核人柜员号、发放日期筛选条件能触发列表查询
|
||||||
|
- 验证导出接口导出当前查询条件下的全部结果
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# 新增贷款查询模块实施记录
|
||||||
|
|
||||||
|
## 本次修改
|
||||||
|
|
||||||
|
- 在项目专项排查后端新增“新增贷款查询”分页接口。
|
||||||
|
- 新增查询 DTO 与列表 VO,返回员工信息、合同编号、借款人、贷款产品、合同金额、当前余额、发放日期、到期日期、合同状态、五级分类等字段。
|
||||||
|
- 柜员号查询直接精确匹配 `ccdi_increase_lending.customer_manager_id`,员工身份证查询通过 `ccdi_base_staff.id_card` 精确过滤,审核人柜员号查询直接精确匹配 `ccdi_increase_lending.approver`,并支持按贷款发放日期范围过滤。
|
||||||
|
- 前后端均限制柜员号、员工身份证和审核人柜员号至少填写一项,避免默认展开大列表。
|
||||||
|
- 新增“新增贷款查询”导出接口与 Excel 导出对象,按当前单人查询条件导出全部匹配贷款明细,不受表格分页页码限制。
|
||||||
|
- 在前端专项排查页面新增 `IncreaseLendingSection`,放置于资金流向图谱下方、拓展查询上方。
|
||||||
|
- 新增柜员号、员工身份证、审核人柜员号与发放日期筛选框;默认展示空表头,点击查询后加载分页贷款列表,并支持导出当前查询结果。
|
||||||
|
|
||||||
|
## 影响范围
|
||||||
|
|
||||||
|
- 后端:`ccdi-project` 模块项目专项排查接口。
|
||||||
|
- 前端:`ruoyi-ui` 项目详情专项排查页面。
|
||||||
|
- 数据库:不新增或修改表结构,依赖既有 `ccdi_increase_lending` 表。
|
||||||
|
|
||||||
|
## 验证情况
|
||||||
|
|
||||||
|
- 后端执行 `mvn -pl ccdi-project -DskipTests compile`,编译被既有 `CcdiFileUploadServiceImpl` 调用 `LsfxAnalysisClient.uploadFile(Integer, File, String)` 与当前客户端方法签名 `uploadFile(Integer, File)` 不一致阻塞;阻塞点不在本次新增贷款查询改动范围内。
|
||||||
|
- 前端执行 `npm run build:prod` 成功,存在既有资源体积告警;已覆盖“默认不展示结果表、输入柜员号或员工身份证查询后展开列表”的交互调整。
|
||||||
|
- 当前数据库 `ccdi_increase_lending` 已存在 6 条演示数据,柜员号为 `9021001` 至 `9021006`。
|
||||||
|
- 早期联调用本地 mock 验证过页面交互;最终验收以真实 Java 后端 `62318` 为准。
|
||||||
|
- 按项目要求执行 `nvm use` 时,由于未指定版本返回“缺少版本参数”;随后使用当前 Node `v22.22.3`、npm `10.9.8` 执行 `npm run build:prod` 通过。
|
||||||
|
- 真实页面浏览器自动化检查受本地 Node/npm 环境限制未复跑;本地 8080 前端服务已存在,可刷新页面手工验证。
|
||||||
|
- 后续调整柜员号口径:`customer_manager_id` 已由模糊匹配改为精确匹配,前端不做 7 位格式提示,输入半截柜员号自然无结果。
|
||||||
|
- 审核人字段口径:当前按 `approver` 精确匹配“审核人柜员号”,字段为空时查询自然无结果;后续数据入库后无需改代码即可按审核人柜员号联动查询和导出。
|
||||||
|
- 后端验证:`mvn -pl ruoyi-admin -am -DskipTests compile` 与 `mvn -pl ruoyi-admin -am clean package -DskipTests` 均通过;真实后端已在 `62318` 启动,未登录直接访问业务接口返回 `401`,说明当前端口已由 Java 后端接管。
|
||||||
|
- 提交前检查:当前 `dev-ui` 可继续提交本次功能;但 `dev` 与 `dev-ui` 之间已有大量历史冲突,后续直接合入 `dev` 需要单独解决冲突,不能视为无冲突直合。
|
||||||
|
- 本次收紧单人查询:员工身份证条件同步改为精确匹配;真实接口验证 `projectId=90337&staffId=9021001` 返回 `total=1` 且 `staffId/customerManagerId` 均为 `9021001`,`staffId=902100` 返回 `total=0`。
|
||||||
|
- 新增导出验证:真实接口 `projectId=90337&staffId=9021001` 导出 Excel 成功,文件 sheet 为“新增贷款查询”,表头包含“审批人”,导出 1 行贷款明细。
|
||||||
|
- 审核人柜员号验证:当前 `approver` 字段缺少有效数据,真实接口 `projectId=90337&approver=9021001` 返回 `total=0`;后续 `approver` 有柜员号数据后可直接联动查询和导出。
|
||||||
|
- 按 `.nvmrc` 执行 `nvm use 14.21.3` 后,本地 nvm 目录缺少 `npm.cmd`,无法用 Node 14 启动前端构建;改用本机可用的 Node `v22.22.3` / npm `10.9.8` 执行 `npm run build:prod` 通过,存在既有资源体积告警。
|
||||||
@@ -100,3 +100,21 @@ export function getExtendedTransferDetail(params) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getIncreaseLendingList(params) {
|
||||||
|
const { projectId, staffId, staffIdCard, approver, loanStartDate, loanEndDate, pageNum, pageSize } = params;
|
||||||
|
return request({
|
||||||
|
url: "/ccdi/project/special-check/increase-lending/list",
|
||||||
|
method: "get",
|
||||||
|
params: {
|
||||||
|
projectId,
|
||||||
|
staffId,
|
||||||
|
staffIdCard,
|
||||||
|
approver,
|
||||||
|
loanStartDate,
|
||||||
|
loanEndDate,
|
||||||
|
pageNum,
|
||||||
|
pageSize,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,272 @@
|
|||||||
|
<template>
|
||||||
|
<section class="increase-lending-section">
|
||||||
|
<div class="section-card">
|
||||||
|
<div class="block-header">
|
||||||
|
<div>
|
||||||
|
<div class="block-title">新增贷款查询</div>
|
||||||
|
<div class="block-subtitle">按客户经理柜员号查询经办/管户新增贷款</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-form :model="queryParams" size="small" :inline="true" label-width="104px" class="query-form">
|
||||||
|
<el-form-item label="柜员号">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.staffId"
|
||||||
|
placeholder="请输入柜员号"
|
||||||
|
clearable
|
||||||
|
style="width: 180px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="员工身份证">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.staffIdCard"
|
||||||
|
placeholder="请输入员工身份证"
|
||||||
|
clearable
|
||||||
|
style="width: 220px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="审核人柜员号">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.approver"
|
||||||
|
placeholder="请输入审核人柜员号"
|
||||||
|
clearable
|
||||||
|
style="width: 180px"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="发放日期">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="loanDateRange"
|
||||||
|
type="daterange"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
clearable
|
||||||
|
style="width: 260px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" size="mini" @click="handleQuery">查询</el-button>
|
||||||
|
<el-button size="mini" :disabled="!hasPersonCondition" @click="handleExport">导出</el-button>
|
||||||
|
<el-button size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<div class="result-wrapper">
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="rows"
|
||||||
|
:empty-text="searched ? '暂无数据' : '请输入条件后点击查询'"
|
||||||
|
border
|
||||||
|
class="increase-lending-table"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" label="序号" width="60" />
|
||||||
|
<el-table-column prop="staffId" label="柜员号" width="100" />
|
||||||
|
<el-table-column prop="staffName" label="员工姓名" min-width="110" />
|
||||||
|
<el-table-column prop="staffIdCard" label="员工身份证" min-width="170" />
|
||||||
|
<el-table-column prop="deptName" label="部门" min-width="140" />
|
||||||
|
<el-table-column prop="contractNo" label="合同编号" min-width="150" />
|
||||||
|
<el-table-column prop="borrowerName" label="借款人" min-width="120" />
|
||||||
|
<el-table-column prop="loanProduct" label="贷款产品" min-width="140" />
|
||||||
|
<el-table-column label="合同金额" min-width="120" align="right">
|
||||||
|
<template slot-scope="scope">{{ formatAmount(scope.row.contractAmount) }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="当前余额" min-width="120" align="right">
|
||||||
|
<template slot-scope="scope">{{ formatAmount(scope.row.loanBalance) }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="loanStartDate" label="发放日期" width="120" />
|
||||||
|
<el-table-column prop="loanEndDate" label="到期日期" width="120" />
|
||||||
|
<el-table-column prop="status" label="合同状态" width="110" />
|
||||||
|
<el-table-column prop="fiveClassification" label="五级分类" width="110" />
|
||||||
|
<el-table-column prop="approver" label="审批人" min-width="110" />
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<pagination
|
||||||
|
v-show="searched && total > 0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="loadList"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getIncreaseLendingList } from "@/api/ccdi/projectSpecialCheck";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "IncreaseLendingSection",
|
||||||
|
props: {
|
||||||
|
projectId: {
|
||||||
|
type: [String, Number],
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
searched: false,
|
||||||
|
rows: [],
|
||||||
|
total: 0,
|
||||||
|
queryParams: {
|
||||||
|
staffId: "",
|
||||||
|
staffIdCard: "",
|
||||||
|
approver: "",
|
||||||
|
loanStartDate: "",
|
||||||
|
loanEndDate: "",
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
},
|
||||||
|
loanDateRange: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
projectId() {
|
||||||
|
this.resetQuery();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
hasPersonCondition() {
|
||||||
|
return Boolean(this.queryParams.staffId || this.queryParams.staffIdCard || this.queryParams.approver);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleQuery() {
|
||||||
|
if (!this.hasPersonCondition) {
|
||||||
|
this.$message.warning("请输入柜员号、员工身份证或审核人柜员号后查询");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.syncLoanDateRange();
|
||||||
|
this.searched = true;
|
||||||
|
this.queryParams.pageNum = 1;
|
||||||
|
this.loadList();
|
||||||
|
},
|
||||||
|
resetQuery() {
|
||||||
|
this.queryParams = {
|
||||||
|
staffId: "",
|
||||||
|
staffIdCard: "",
|
||||||
|
approver: "",
|
||||||
|
loanStartDate: "",
|
||||||
|
loanEndDate: "",
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
};
|
||||||
|
this.loanDateRange = [];
|
||||||
|
this.searched = false;
|
||||||
|
this.rows = [];
|
||||||
|
this.total = 0;
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
if (!this.hasPersonCondition) {
|
||||||
|
this.$message.warning("请输入柜员号、员工身份证或审核人柜员号后导出");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.syncLoanDateRange();
|
||||||
|
this.download(
|
||||||
|
"ccdi/project/special-check/increase-lending/export",
|
||||||
|
{
|
||||||
|
projectId: this.projectId,
|
||||||
|
staffId: this.queryParams.staffId,
|
||||||
|
staffIdCard: this.queryParams.staffIdCard,
|
||||||
|
approver: this.queryParams.approver,
|
||||||
|
loanStartDate: this.queryParams.loanStartDate,
|
||||||
|
loanEndDate: this.queryParams.loanEndDate,
|
||||||
|
},
|
||||||
|
`新增贷款查询_${this.queryParams.staffId || this.queryParams.staffIdCard || this.queryParams.approver}_${Date.now()}.xlsx`
|
||||||
|
);
|
||||||
|
},
|
||||||
|
async loadList() {
|
||||||
|
this.syncLoanDateRange();
|
||||||
|
if (!this.projectId) {
|
||||||
|
this.rows = [];
|
||||||
|
this.total = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.loading = true;
|
||||||
|
try {
|
||||||
|
const response = await getIncreaseLendingList({
|
||||||
|
projectId: this.projectId,
|
||||||
|
...this.queryParams,
|
||||||
|
});
|
||||||
|
const data = (response && response.data) || {};
|
||||||
|
this.rows = Array.isArray(data.rows) ? data.rows : [];
|
||||||
|
this.total = Number(data.total || 0);
|
||||||
|
} catch (error) {
|
||||||
|
this.rows = [];
|
||||||
|
this.total = 0;
|
||||||
|
this.$message.error("新增贷款查询失败");
|
||||||
|
} finally {
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
formatAmount(value) {
|
||||||
|
if (value === null || value === undefined || value === "") {
|
||||||
|
return "-";
|
||||||
|
}
|
||||||
|
return Number(value).toLocaleString("zh-CN", {
|
||||||
|
minimumFractionDigits: 2,
|
||||||
|
maximumFractionDigits: 2,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
syncLoanDateRange() {
|
||||||
|
const range = Array.isArray(this.loanDateRange) ? this.loanDateRange : [];
|
||||||
|
this.queryParams.loanStartDate = range[0] || "";
|
||||||
|
this.queryParams.loanEndDate = range[1] || "";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.increase-lending-section {
|
||||||
|
margin-top: 16px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-card {
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 0;
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
|
||||||
|
}
|
||||||
|
|
||||||
|
.block-header {
|
||||||
|
margin-bottom: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block-title {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1f2937;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block-subtitle {
|
||||||
|
margin-top: 4px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #94a3b8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-form {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.result-wrapper {
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.increase-lending-table {
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.increase-lending-table th) {
|
||||||
|
background: #f8fafc;
|
||||||
|
color: #64748b;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -27,6 +27,8 @@
|
|||||||
ref="fundGraphSection"
|
ref="fundGraphSection"
|
||||||
:project-id="projectId"
|
:project-id="projectId"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<increase-lending-section :project-id="projectId" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="projectId" class="special-check-extended-wrapper">
|
<div v-if="projectId" class="special-check-extended-wrapper">
|
||||||
@@ -41,6 +43,7 @@ import { getFamilyAssetLiabilityList } from "@/api/ccdi/projectSpecialCheck";
|
|||||||
import ExtendedQuerySection from "./ExtendedQuerySection";
|
import ExtendedQuerySection from "./ExtendedQuerySection";
|
||||||
import FamilyAssetLiabilitySection from "./FamilyAssetLiabilitySection";
|
import FamilyAssetLiabilitySection from "./FamilyAssetLiabilitySection";
|
||||||
import FundGraphSection from "./graph/FundGraphSection";
|
import FundGraphSection from "./graph/FundGraphSection";
|
||||||
|
import IncreaseLendingSection from "./IncreaseLendingSection";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "SpecialCheck",
|
name: "SpecialCheck",
|
||||||
@@ -48,6 +51,7 @@ export default {
|
|||||||
ExtendedQuerySection,
|
ExtendedQuerySection,
|
||||||
FamilyAssetLiabilitySection,
|
FamilyAssetLiabilitySection,
|
||||||
FundGraphSection,
|
FundGraphSection,
|
||||||
|
IncreaseLendingSection,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
projectId: {
|
projectId: {
|
||||||
|
|||||||
Reference in New Issue
Block a user