|
@@ -2,9 +2,11 @@ package com.ruoyi.system.service.loan.impl;
|
|
|
|
|
|
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
+import com.ruoyi.common.core.domain.entity.SysRole;
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import com.ruoyi.common.utils.SendSmsUtils;
|
|
|
+import com.ruoyi.system.domain.conference.SysUserConference;
|
|
|
import com.ruoyi.system.domain.enterprise.SysUserEnterprise;
|
|
|
import com.ruoyi.system.domain.loan.LoanApplication;
|
|
|
import com.ruoyi.system.domain.loan.LoanApplicationFj;
|
|
@@ -13,6 +15,7 @@ import com.ruoyi.system.domain.loan.ShareholderFj;
|
|
|
import com.ruoyi.system.domain.review.ReviewComments;
|
|
|
import com.ruoyi.system.mapper.*;
|
|
|
import com.ruoyi.system.service.loan.ILoanApplicationService;
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -20,6 +23,7 @@ import java.text.SimpleDateFormat;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.ruoyi.common.constant.CommonConstants.*;
|
|
@@ -42,6 +46,10 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
|
|
|
private LoanScheduleMapper loanScheduleMapper;
|
|
|
@Autowired
|
|
|
private SysUserEnterpriseMapper sysUserEnterpriseMapper;
|
|
|
+ @Autowired
|
|
|
+ private SysUserConferenceMapper sysUserConferenceMapper;
|
|
|
+ @Autowired
|
|
|
+ private ReviewCommentsMapper reviewCommentsMapper;
|
|
|
|
|
|
/**
|
|
|
* 查询贷款申请主
|
|
@@ -95,7 +103,19 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
|
|
|
*/
|
|
|
@Override
|
|
|
public List<LoanApplication> selectLoanApplicationList(LoanApplication loanApplication) {
|
|
|
- return loanApplicationMapper.selectLoanApplicationList(loanApplication);
|
|
|
+ //判断是否是admin或者管理员manager
|
|
|
+ List<SysRole> roles = SecurityUtils.getLoginUser().getUser().getRoles();
|
|
|
+ String roleKey = "admin,manager";
|
|
|
+ for (SysRole role : roles) {
|
|
|
+ if (role.getRoleKey().contains(roleKey)) {
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<LoanApplication> loanApplications = loanApplicationMapper.selectLoanApplicationList(loanApplication);
|
|
|
+
|
|
|
+
|
|
|
+ return loanApplications;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -112,8 +132,8 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
|
|
|
//设置申请人用户ID
|
|
|
loanApplication.setUserId(SecurityUtils.getUserId());
|
|
|
loanApplication.setApplicationTime(DateUtils.getNowDate());
|
|
|
- //贷款申请进度进入申报提交
|
|
|
- loanApplication.setLoanSchedule(ONE);
|
|
|
+ //贷款申请进度进入业务审核/分配
|
|
|
+ loanApplication.setLoanSchedule(TWO);
|
|
|
loanApplication.setLoanApplicationType(TWO);
|
|
|
loanApplication.setUserId(SecurityUtils.getUserId());
|
|
|
int i = loanApplicationMapper.insertLoanApplication(loanApplication);
|
|
@@ -156,6 +176,7 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
|
|
|
public int updateLoanApplication(LoanApplication loanApplication) {
|
|
|
loanApplication.setUpdateTime(DateUtils.getNowDate());
|
|
|
loanApplication.setLoanApplicationType(TWO);
|
|
|
+ loanApplication.setApplicationTime(DateUtils.getNowDate());
|
|
|
Long loanApplicationId = loanApplication.getLoanApplicationId();
|
|
|
//相关附件先删除
|
|
|
loanApplicationFjMapper.deleteLoanApplicationFjByLoanApplicationId(loanApplicationId);
|
|
@@ -219,7 +240,6 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
|
|
|
loanApplication.setUserId(SecurityUtils.getUserId());
|
|
|
//贷款申请进度进入申报提交
|
|
|
loanApplication.setLoanSchedule(ONE);
|
|
|
-
|
|
|
int i = loanApplicationMapper.insertLoanApplication(loanApplication);
|
|
|
List<LoanApplicationFj> loanApplicationFjList = loanApplication.getLoanApplicationFjList();
|
|
|
if (loanApplicationFjList != null && loanApplicationFjList.size() > 0) {
|
|
@@ -265,18 +285,204 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
|
|
|
|
|
|
/**
|
|
|
* 审核
|
|
|
+ *
|
|
|
* @param reviewComments
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
public AjaxResult sh(ReviewComments reviewComments) {
|
|
|
- return null;
|
|
|
+ reviewComments.setAuditTime(DateUtils.getNowDate());
|
|
|
+ List<SysUserConference> sysUserConferenceList = reviewComments.getSysUserConferenceList();
|
|
|
+ //审核进度1:业务审核/分配 2:A角色审核 3:B角色审核 4:风险审核 5:尽职调查 6:初审风险合规 7:上会评审
|
|
|
+ String auditSchedule = reviewComments.getAuditSchedule();
|
|
|
+ //审核状态 1:待审核 2:已通过 3:未通过 4:申诉
|
|
|
+ String auditType = reviewComments.getAuditType();
|
|
|
+ //校验当前项目进度
|
|
|
+ Long loanApplicationId = reviewComments.getLoanApplicationId();
|
|
|
+ //获取数据库中项目详情
|
|
|
+ LoanApplication loanApplication = loanApplicationMapper.selectLoanApplicationByLoanApplicationId(loanApplicationId);
|
|
|
+ String loanScheduleOld = loanApplication.getLoanSchedule();
|
|
|
+ String auditScheduleOld = loanApplication.getAuditSchedule();
|
|
|
+ String auditTypeOld = loanApplication.getAuditType();
|
|
|
+ String loanApplicationType = loanApplication.getLoanApplicationType();
|
|
|
+ //判断是否已归档
|
|
|
+ if (loanApplication.getLoanApplicationType().equals(FOR)) {
|
|
|
+ return AjaxResult.error("当前项目已归档");
|
|
|
+ }
|
|
|
+ //判断是否无需审核
|
|
|
+ if (Integer.parseInt(loanScheduleOld) > 6) {
|
|
|
+ return AjaxResult.error("当前项目无需审核");
|
|
|
+ }
|
|
|
+ if (!Objects.equals(loanApplicationType, TWO)) {
|
|
|
+ return AjaxResult.error("当前贷款申请状态非正常,请检查后重新操作");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(loanApplication)) {
|
|
|
+ return AjaxResult.error("当前贷款申请不存在,请重新刷新");
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断数据库中进度是否小于当前申请进度
|
|
|
+ if (Integer.parseInt(auditSchedule) <= Integer.parseInt(auditScheduleOld) && !Objects.equals(auditTypeOld, ONE)) {
|
|
|
+ return AjaxResult.error("当前进度已审核,请勿重复审核");
|
|
|
+ }
|
|
|
+ List<LoanApplicationFj> fjUrl = reviewComments.getFjUrl();
|
|
|
+ if (fjUrl != null && fjUrl.size() > 0) {
|
|
|
+ StringBuilder type = new StringBuilder();
|
|
|
+ for (LoanApplicationFj loanApplicationFj : fjUrl) {
|
|
|
+ type.append(loanApplicationFj.getType()).append(",");
|
|
|
+ }
|
|
|
+ type.deleteCharAt(type.lastIndexOf(","));
|
|
|
+ loanApplicationFjMapper.deleteLoanApplicationFjByLoanApplicationIdAndType(loanApplicationId, type.toString());
|
|
|
+ //需要删除当前状态下已存在的附件
|
|
|
+ loanApplicationFjMapper.batchLoanApplicationFj(fjUrl);
|
|
|
+ }
|
|
|
+ //业务审核意见
|
|
|
+ reviewCommentsMapper.insertReviewComments(reviewComments);
|
|
|
+ //A角色进度之前审核不通过,直接放入回收站,之后的进入到申诉状态
|
|
|
+ if (THR.equals(auditType) && Integer.parseInt(auditSchedule) < 3) {
|
|
|
+ loanApplication.setAuditType(auditType);
|
|
|
+ loanApplication.setAuditSchedule(auditSchedule);
|
|
|
+ loanApplication.setLoanApplicationType(THR);
|
|
|
+ loanApplicationMapper.updateLoanApplication(loanApplication);
|
|
|
+ return AjaxResult.success();
|
|
|
+ } else if (THR.equals(auditType) && Integer.parseInt(auditSchedule) > 2) {
|
|
|
+ //进入到A角色申诉状态
|
|
|
+ loanApplication.setLoanSchedule(TWO);
|
|
|
+ loanApplication.setAuditType(FOR);
|
|
|
+ loanApplication.setAuditSchedule(TWO);
|
|
|
+ loanApplicationMapper.updateLoanApplication(loanApplication);
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
+ //通过,进入到下一个步骤
|
|
|
+ if (TWO.equals(auditType)) {
|
|
|
+ if (auditSchedule.equals(ONE)) {
|
|
|
+ //设置AB角色id
|
|
|
+ loanApplication.setaUserId(reviewComments.getaUserId());
|
|
|
+ loanApplication.setaUserName(reviewComments.getaUserName());
|
|
|
+ loanApplication.setbUserId(reviewComments.getbUserId());
|
|
|
+ loanApplication.setbUserName(reviewComments.getbUserName());
|
|
|
+ }
|
|
|
+ //保存参会人员数据
|
|
|
+ if (sysUserConferenceList != null && sysUserConferenceList.size() > 0 && auditSchedule.equals(SEV)) {
|
|
|
+ sysUserConferenceMapper.batchSysUserConference(sysUserConferenceList);
|
|
|
+ }
|
|
|
+ //audit_schedule = 2,3的时候贷款申请进度处于担保初审状态
|
|
|
+ if (auditSchedule.equals(TWO) || auditSchedule.equals(THR)) {
|
|
|
+ loanApplication.setLoanSchedule(THR);
|
|
|
+ } else {
|
|
|
+ loanApplication.setLoanSchedule(String.valueOf(Integer.parseInt(loanScheduleOld) + 1));
|
|
|
+ }
|
|
|
+ loanApplication.setAuditSchedule(String.valueOf(Integer.parseInt(auditSchedule) + 1));
|
|
|
+ loanApplication.setAuditType(ONE);
|
|
|
+ loanApplicationMapper.updateLoanApplication(loanApplication);
|
|
|
+ //插入流程记录表
|
|
|
+ LoanSchedule loanSchedule = new LoanSchedule();
|
|
|
+ loanSchedule.setLoanApplicationId(loanApplicationId);
|
|
|
+ loanSchedule.setLoanScheduleValue(loanApplication.getLoanSchedule());
|
|
|
+ loanSchedule.setLoanScheduleScore(Long.parseLong(loanApplication.getLoanSchedule()));
|
|
|
+ loanSchedule.setLoanScheduleTime(DateUtils.getNowDate());
|
|
|
+ loanScheduleMapper.insertLoanSchedule(loanSchedule);
|
|
|
+ }
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 申诉
|
|
|
+ *
|
|
|
+ * @param loanApplication
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public AjaxResult ss(LoanApplication loanApplication) {
|
|
|
+ //先判断当前人是否是A角色
|
|
|
+ Long userId = SecurityUtils.getUserId();
|
|
|
+ Long aLong = loanApplication.getaUserId();
|
|
|
+ if (!Objects.equals(userId, aLong)) {
|
|
|
+ return AjaxResult.error("当前您无权限申诉,请联系管理员");
|
|
|
+ }
|
|
|
+ loanApplication.setLoanSchedule(TWO);
|
|
|
+ //进入待审核
|
|
|
+ loanApplication.setAuditType(ONE);
|
|
|
+ loanApplication.setAuditSchedule(TWO);
|
|
|
+ loanApplicationMapper.updateLoanApplication(loanApplication);
|
|
|
+ //删除之后的所有附件
|
|
|
+ String type = "jzdcbg," + "dbxmhfhgb," + "psyjqpb,"+ "clhgb," + "gdhyjy";
|
|
|
+ loanApplicationFjMapper.deleteLoanApplicationFjByLoanApplicationIdAndType(loanApplication.getLoanApplicationId(), type);
|
|
|
+ return AjaxResult.success();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 撤销返回到上一步
|
|
|
+ *
|
|
|
+ * @param loanApplication
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public AjaxResult cx(LoanApplication loanApplication) {
|
|
|
+ //获取当前状态
|
|
|
+ String loanSchedule = loanApplication.getLoanSchedule();
|
|
|
+ String auditSchedule = loanApplication.getAuditSchedule();
|
|
|
+ String loanApplicationType = loanApplication.getLoanApplicationType();
|
|
|
+ if (Integer.parseInt(loanSchedule) < 2 || Integer.parseInt(auditSchedule) < 1 || Integer.parseInt(loanApplicationType) != 2) {
|
|
|
+ return AjaxResult.error("当前项目不可撤销");
|
|
|
+ }
|
|
|
+ if (auditSchedule.equals(FOR) || auditSchedule.equals(THR)) {
|
|
|
+ loanApplication.setLoanSchedule(THR);
|
|
|
+ } else {
|
|
|
+ loanApplication.setLoanSchedule(String.valueOf(Integer.parseInt(loanSchedule) - 1));
|
|
|
+ }
|
|
|
+ loanApplication.setAuditSchedule(String.valueOf(Integer.parseInt(auditSchedule) - 1));
|
|
|
+ //进入待审核
|
|
|
+ loanApplication.setAuditType(ONE);
|
|
|
+ loanApplicationMapper.updateLoanApplication(loanApplication);
|
|
|
+
|
|
|
+ String type = "-1";
|
|
|
+ if (auditSchedule.equals(FIV)){
|
|
|
+ type = "jzdcbg";
|
|
|
+ }else if (auditSchedule.equals(SIX)){
|
|
|
+ type = "dbxmhfhgb,clhgb";
|
|
|
+ }else if (auditSchedule.equals(SEV)){
|
|
|
+ type = "psyjqpb,gdhyjy";
|
|
|
+ }
|
|
|
+ //还需要删除附件
|
|
|
+ loanApplicationFjMapper.deleteLoanApplicationFjByLoanApplicationIdAndType(loanApplication.getLoanApplicationId(), type);
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 一键归档
|
|
|
+ *
|
|
|
+ * @param loanApplication
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public AjaxResult gd(LoanApplication loanApplication) {
|
|
|
+ //判断项目是否能归档
|
|
|
+ String loanSchedule = loanApplication.getLoanSchedule();
|
|
|
+ String loanApplicationType = loanApplication.getLoanApplicationType();
|
|
|
+ if (!NIN.equals(loanSchedule) && !TWO.equals(loanApplicationType)) {
|
|
|
+ return AjaxResult.error("当前项目进度不能归档");
|
|
|
+ }
|
|
|
+ loanApplication.setLoanSchedule(TEN);
|
|
|
+ loanApplication.setLoanApplicationType(FOR);
|
|
|
+ loanApplicationMapper.updateLoanApplication(loanApplication);
|
|
|
+ //插入流程记录表
|
|
|
+ LoanSchedule loanScheduleNew = new LoanSchedule();
|
|
|
+ loanScheduleNew.setLoanApplicationId(loanApplication.getLoanApplicationId());
|
|
|
+ loanScheduleNew.setLoanScheduleValue(loanApplication.getLoanSchedule());
|
|
|
+ loanScheduleNew.setLoanScheduleScore(Long.parseLong(loanApplication.getLoanSchedule()));
|
|
|
+ loanScheduleNew.setLoanScheduleTime(DateUtils.getNowDate());
|
|
|
+ loanScheduleMapper.insertLoanSchedule(loanScheduleNew);
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出模板附件
|
|
|
+ */
|
|
|
@Override
|
|
|
public AjaxResult exportMb(LoanApplication loanApplication) {
|
|
|
- String path="/profile/mb/";
|
|
|
- if("1".equals(loanApplication.getType())){
|
|
|
+ String path = "/profile/mb/";
|
|
|
+ if ("1".equals(loanApplication.getType())) {
|
|
|
path = path + "委托担保申请书.doc";
|
|
|
}
|
|
|
return AjaxResult.success(path);
|