Bladeren bron

Merge remote-tracking branch 'origin/master'

LIVE_YE 1 jaar geleden
bovenliggende
commit
06f463ffa3

+ 8 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/loan/LoanApplicationController.java

@@ -7,6 +7,7 @@ import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SendSmsUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.domain.loan.LoanApplication;
+import com.ruoyi.system.domain.review.ReviewComments;
 import com.ruoyi.system.service.loan.ILoanApplicationService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -115,4 +116,11 @@ public class LoanApplicationController extends BaseController {
     public AjaxResult temporary(@RequestBody LoanApplication loanApplication) {
         return toAjax(loanApplicationService.temporary(loanApplication));
     }
+    //审核
+
+    @PreAuthorize("@ss.hasPermi('system:application:sh')")
+    @PostMapping("/sh")
+    public AjaxResult sh(@RequestBody ReviewComments reviewComments) {
+        return loanApplicationService.sh(reviewComments);
+    }
 }

+ 103 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/remind/WaitRemindController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.web.controller.remind;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.system.domain.remind.WaitRemind;
+import com.ruoyi.system.service.remind.IWaitRemindService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 待办提醒Controller
+ *
+ * @author boman
+ * @date 2024-04-29
+ */
+@RestController
+@RequestMapping("/system/remind")
+public class WaitRemindController extends BaseController
+{
+    @Autowired
+    private IWaitRemindService waitRemindService;
+
+/**
+ * 查询待办提醒列表
+ */
+@PreAuthorize("@ss.hasPermi('system:remind:list')")
+@GetMapping("/list")
+    public TableDataInfo list(WaitRemind waitRemind)
+    {
+        startPage();
+        List<WaitRemind> list = waitRemindService.selectWaitRemindList(waitRemind);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出待办提醒列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:remind:export')")
+    @Log(title = "待办提醒", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, WaitRemind waitRemind)
+    {
+        List<WaitRemind> list = waitRemindService.selectWaitRemindList(waitRemind);
+        ExcelUtil<WaitRemind> util = new ExcelUtil<WaitRemind>(WaitRemind.class);
+        util.exportExcel(response, list, "待办提醒数据");
+    }
+
+    /**
+     * 获取待办提醒详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:remind:query')")
+    @GetMapping(value = "/{remindId}")
+    public AjaxResult getInfo(@PathVariable("remindId") Integer remindId)
+    {
+        return success(waitRemindService.selectWaitRemindByRemindId(remindId));
+    }
+
+    /**
+     * 新增待办提醒
+     */
+    @PreAuthorize("@ss.hasPermi('system:remind:add')")
+    @Log(title = "待办提醒", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody WaitRemind waitRemind)
+    {
+        return toAjax(waitRemindService.insertWaitRemind(waitRemind));
+    }
+
+    /**
+     * 修改待办提醒
+     */
+    @PreAuthorize("@ss.hasPermi('system:remind:edit')")
+    @Log(title = "待办提醒", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody WaitRemind waitRemind)
+    {
+        return toAjax(waitRemindService.updateWaitRemind(waitRemind));
+    }
+
+    /**
+     * 删除待办提醒
+     */
+    @PreAuthorize("@ss.hasPermi('system:remind:remove')")
+    @Log(title = "待办提醒", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{remindIds}")
+    public AjaxResult remove(@PathVariable Integer[] remindIds)
+    {
+        return toAjax(waitRemindService.deleteWaitRemindByRemindIds(remindIds));
+    }
+}

+ 24 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java

@@ -24,6 +24,14 @@ public class SysNotice extends BaseEntity
 
     /** 公告类型(1通知 2公告) */
     private String noticeType;
+    /**
+     * 已读的用户id,逗号分隔
+     */
+    private String readUserId;
+    /**
+     * 是否已读 N:未读 Y:已读
+     */
+    private String isRead;
 
     /** 公告内容 */
     private String noticeContent;
@@ -31,6 +39,22 @@ public class SysNotice extends BaseEntity
     /** 公告状态(0正常 1关闭) */
     private String status;
 
+    public String getReadUserId() {
+        return readUserId;
+    }
+
+    public void setReadUserId(String readUserId) {
+        this.readUserId = readUserId;
+    }
+
+    public String getIsRead() {
+        return isRead;
+    }
+
+    public void setIsRead(String isRead) {
+        this.isRead = isRead;
+    }
+
     public Long getNoticeId()
     {
         return noticeId;

+ 12 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/loan/LoanApplication.java

@@ -27,6 +27,10 @@ public class LoanApplication extends BaseEntity
 
     /** 贷款申请编号 */
     private String loanApplicationNumber;
+    /**
+     * 申请类型 1:企业 2:个人
+     */
+    private String applicationType;
 
     /** 申请额度(万元) */
     @Excel(name = "申请额度(万元)")
@@ -291,6 +295,14 @@ public class LoanApplication extends BaseEntity
     private Map<String,List<LoanApplicationFj>> otherFj;
 
 
+    public String getApplicationType() {
+        return applicationType;
+    }
+
+    public void setApplicationType(String applicationType) {
+        this.applicationType = applicationType;
+    }
+
     public String getCorporationAddress() {
         return corporationAddress;
     }

+ 171 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/remind/WaitRemind.java

@@ -0,0 +1,171 @@
+package com.ruoyi.system.domain.remind;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 待办提醒对象 wait_remind
+ * 
+ * @author boman
+ * @date 2024-04-29
+ */
+public class WaitRemind extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 提醒ID */
+    private Integer remindId;
+
+    /** 贷款申请id */
+    @Excel(name = "贷款申请id")
+    private Long loanApplicationId;
+
+    /** 贷款申请编号 */
+    @Excel(name = "贷款申请编号")
+    private String loanApplicationNumber;
+
+    /** 提醒标题 */
+    @Excel(name = "提醒标题")
+    private String remindTitle;
+
+    /** 提醒类型(1:申报审核 2:担保初始 3:尽职调查 4:合同签署 5:评审会) */
+    @Excel(name = "提醒类型", readConverterExp = "1=:申报审核,2=:担保初始,3=:尽职调查,4=:合同签署,5=:评审会")
+    private String remindType;
+
+    /** 提醒内容 */
+    @Excel(name = "提醒内容")
+    private String remindContent;
+
+    /** 提醒时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "提醒时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date remindTime;
+
+    /** 已读过的用户ID */
+    @Excel(name = "已读过的用户ID")
+    private String readUserId;
+
+    /** 是否已读 N:未读 Y:已读 */
+    @Excel(name = "是否已读 N:未读 Y:已读")
+    private String isRead;
+
+    /** 提醒状态(0正常 1关闭) */
+    @Excel(name = "提醒状态", readConverterExp = "0=正常,1=关闭")
+    private String status;
+
+    public void setRemindId(Integer remindId) 
+    {
+        this.remindId = remindId;
+    }
+
+    public Integer getRemindId() 
+    {
+        return remindId;
+    }
+    public void setLoanApplicationId(Long loanApplicationId) 
+    {
+        this.loanApplicationId = loanApplicationId;
+    }
+
+    public Long getLoanApplicationId() 
+    {
+        return loanApplicationId;
+    }
+    public void setLoanApplicationNumber(String loanApplicationNumber) 
+    {
+        this.loanApplicationNumber = loanApplicationNumber;
+    }
+
+    public String getLoanApplicationNumber() 
+    {
+        return loanApplicationNumber;
+    }
+    public void setRemindTitle(String remindTitle) 
+    {
+        this.remindTitle = remindTitle;
+    }
+
+    public String getRemindTitle() 
+    {
+        return remindTitle;
+    }
+    public void setRemindType(String remindType) 
+    {
+        this.remindType = remindType;
+    }
+
+    public String getRemindType() 
+    {
+        return remindType;
+    }
+    public void setRemindContent(String remindContent) 
+    {
+        this.remindContent = remindContent;
+    }
+
+    public String getRemindContent() 
+    {
+        return remindContent;
+    }
+    public void setRemindTime(Date remindTime) 
+    {
+        this.remindTime = remindTime;
+    }
+
+    public Date getRemindTime() 
+    {
+        return remindTime;
+    }
+    public void setReadUserId(String readUserId) 
+    {
+        this.readUserId = readUserId;
+    }
+
+    public String getReadUserId() 
+    {
+        return readUserId;
+    }
+    public void setIsRead(String isRead) 
+    {
+        this.isRead = isRead;
+    }
+
+    public String getIsRead() 
+    {
+        return isRead;
+    }
+    public void setStatus(String status) 
+    {
+        this.status = status;
+    }
+
+    public String getStatus() 
+    {
+        return status;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("remindId", getRemindId())
+            .append("loanApplicationId", getLoanApplicationId())
+            .append("loanApplicationNumber", getLoanApplicationNumber())
+            .append("remindTitle", getRemindTitle())
+            .append("remindType", getRemindType())
+            .append("remindContent", getRemindContent())
+            .append("remindTime", getRemindTime())
+            .append("readUserId", getReadUserId())
+            .append("isRead", getIsRead())
+            .append("status", getStatus())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 63 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/WaitRemindMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.remind.WaitRemind;
+
+import java.util.List;
+
+
+/**
+ * 待办提醒Mapper接口
+ * 
+ * @author boman
+ * @date 2024-04-29
+ */
+public interface WaitRemindMapper 
+{
+    /**
+     * 查询待办提醒
+     * 
+     * @param remindId 待办提醒主键
+     * @return 待办提醒
+     */
+    public WaitRemind selectWaitRemindByRemindId(Integer remindId);
+
+    /**
+     * 查询待办提醒列表
+     * 
+     * @param waitRemind 待办提醒
+     * @return 待办提醒集合
+     */
+    public List<WaitRemind> selectWaitRemindList(WaitRemind waitRemind);
+
+    /**
+     * 新增待办提醒
+     * 
+     * @param waitRemind 待办提醒
+     * @return 结果
+     */
+    public int insertWaitRemind(WaitRemind waitRemind);
+
+    /**
+     * 修改待办提醒
+     * 
+     * @param waitRemind 待办提醒
+     * @return 结果
+     */
+    public int updateWaitRemind(WaitRemind waitRemind);
+
+    /**
+     * 删除待办提醒
+     * 
+     * @param remindId 待办提醒主键
+     * @return 结果
+     */
+    public int deleteWaitRemindByRemindId(Integer remindId);
+
+    /**
+     * 批量删除待办提醒
+     * 
+     * @param remindIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteWaitRemindByRemindIds(Integer[] remindIds);
+}

+ 41 - 23
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java

@@ -1,6 +1,9 @@
 package com.ruoyi.system.service.impl;
 
 import java.util.List;
+
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.system.domain.SysNotice;
@@ -9,84 +12,99 @@ import com.ruoyi.system.service.ISysNoticeService;
 
 /**
  * 公告 服务层实现
- * 
+ *
  * @author ruoyi
  */
 @Service
-public class SysNoticeServiceImpl implements ISysNoticeService
-{
+public class SysNoticeServiceImpl implements ISysNoticeService {
     @Autowired
     private SysNoticeMapper noticeMapper;
 
     /**
      * 查询公告信息
-     * 
+     *
      * @param noticeId 公告ID
      * @return 公告信息
      */
     @Override
-    public SysNotice selectNoticeById(Long noticeId)
-    {
-        return noticeMapper.selectNoticeById(noticeId);
+    public SysNotice selectNoticeById(Long noticeId) {
+        SysNotice sysNotice = noticeMapper.selectNoticeById(noticeId);
+        String readUserId = sysNotice.getReadUserId();
+        if (StringUtils.isNotEmpty(readUserId)) {
+            readUserId = readUserId + "," + SecurityUtils.getUserId();
+        } else {
+            readUserId = SecurityUtils.getUserId() + "";
+        }
+        sysNotice.setReadUserId(readUserId);
+        noticeMapper.updateNotice(sysNotice);
+        return sysNotice;
     }
 
     /**
      * 查询公告列表
-     * 
+     *
      * @param notice 公告信息
      * @return 公告集合
      */
     @Override
-    public List<SysNotice> selectNoticeList(SysNotice notice)
-    {
-        return noticeMapper.selectNoticeList(notice);
+    public List<SysNotice> selectNoticeList(SysNotice notice) {
+        Long userId = SecurityUtils.getUserId();
+        notice.setIsRead(userId.toString());
+        //查询已读或者未读
+        List<SysNotice> sysNotices = noticeMapper.selectNoticeList(notice);
+        if (sysNotices != null && sysNotices.size() > 0) {
+            for (SysNotice sysNotice : sysNotices) {
+                String readUserId = sysNotice.getReadUserId();
+                //判断是否已读 = readUserId是否包含当前登录人的id
+                if (readUserId.contains(String.valueOf(userId))){
+                    sysNotice.setIsRead("Y");
+                }
+            }
+        }
+        return sysNotices;
     }
 
     /**
      * 新增公告
-     * 
+     *
      * @param notice 公告信息
      * @return 结果
      */
     @Override
-    public int insertNotice(SysNotice notice)
-    {
+    public int insertNotice(SysNotice notice) {
         return noticeMapper.insertNotice(notice);
     }
 
     /**
      * 修改公告
-     * 
+     *
      * @param notice 公告信息
      * @return 结果
      */
     @Override
-    public int updateNotice(SysNotice notice)
-    {
+    public int updateNotice(SysNotice notice) {
         return noticeMapper.updateNotice(notice);
     }
 
     /**
      * 删除公告对象
-     * 
+     *
      * @param noticeId 公告ID
      * @return 结果
      */
     @Override
-    public int deleteNoticeById(Long noticeId)
-    {
+    public int deleteNoticeById(Long noticeId) {
         return noticeMapper.deleteNoticeById(noticeId);
     }
 
     /**
      * 批量删除公告信息
-     * 
+     *
      * @param noticeIds 需要删除的公告ID
      * @return 结果
      */
     @Override
-    public int deleteNoticeByIds(Long[] noticeIds)
-    {
+    public int deleteNoticeByIds(Long[] noticeIds) {
         return noticeMapper.deleteNoticeByIds(noticeIds);
     }
 }

+ 9 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/loan/ILoanApplicationService.java

@@ -1,6 +1,8 @@
 package com.ruoyi.system.service.loan;
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.system.domain.loan.LoanApplication;
+import com.ruoyi.system.domain.review.ReviewComments;
 
 import java.util.List;
 
@@ -66,4 +68,11 @@ public interface ILoanApplicationService
      * @return 结果
      */
     public int deleteLoanApplicationByLoanApplicationId(Long loanApplicationId);
+
+    /**
+     * 审核
+     * @param reviewComments
+     * @return
+     */
+    public AjaxResult sh(ReviewComments reviewComments);
 }

+ 72 - 21
ruoyi-system/src/main/java/com/ruoyi/system/service/loan/impl/LoanApplicationServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.system.service.loan.impl;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.SendSmsUtils;
@@ -9,6 +10,7 @@ import com.ruoyi.system.domain.loan.LoanApplication;
 import com.ruoyi.system.domain.loan.LoanApplicationFj;
 import com.ruoyi.system.domain.loan.LoanSchedule;
 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.springframework.beans.factory.annotation.Autowired;
@@ -62,19 +64,19 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
             //进行大类区分
             Map<String, List<LoanApplicationFj>> bigTypeFj = loanApplicationFjs.stream().collect(Collectors.groupingBy(LoanApplicationFj::getBigType));
             List<LoanApplicationFj> loanApplicationFjsA = bigTypeFj.get(A);
-            if (loanApplicationFjsA != null && loanApplicationFjsA.size() > 0){
+            if (loanApplicationFjsA != null && loanApplicationFjsA.size() > 0) {
                 loanApplication.setBasicFj(loanApplicationFjsA.stream().collect(Collectors.groupingBy(LoanApplicationFj::getType)));
             }
             List<LoanApplicationFj> loanApplicationFjsB = bigTypeFj.get(B);
-            if (loanApplicationFjsB != null && loanApplicationFjsB.size() > 0){
+            if (loanApplicationFjsB != null && loanApplicationFjsB.size() > 0) {
                 loanApplication.setDeclareFj(loanApplicationFjsB.stream().collect(Collectors.groupingBy(LoanApplicationFj::getType)));
             }
             List<LoanApplicationFj> loanApplicationFjsC = bigTypeFj.get(C);
-            if (loanApplicationFjsC != null && loanApplicationFjsC.size() > 0){
+            if (loanApplicationFjsC != null && loanApplicationFjsC.size() > 0) {
                 loanApplication.setFileFj(loanApplicationFjsC.stream().collect(Collectors.groupingBy(LoanApplicationFj::getType)));
             }
             List<LoanApplicationFj> loanApplicationFjsD = bigTypeFj.get(D);
-            if (loanApplicationFjsD != null && loanApplicationFjsD.size() > 0){
+            if (loanApplicationFjsD != null && loanApplicationFjsD.size() > 0) {
                 loanApplication.setOtherFj(loanApplicationFjsD.stream().collect(Collectors.groupingBy(LoanApplicationFj::getType)));
             }
         }
@@ -104,30 +106,34 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
      */
     @Override
     public int insertLoanApplication(LoanApplication loanApplication) {
-        loanApplication.setCreateTime(DateUtils.getNowDate());
+        //设置为audit_schedule=1 audit_type=1
+        loanApplication.setAuditSchedule(ONE);
+        loanApplication.setAuditType(ONE);
+        //设置申请人用户ID
+        loanApplication.setUserId(SecurityUtils.getUserId());
+        loanApplication.setApplicationTime(DateUtils.getNowDate());
+        //贷款申请进度进入申报提交
+        loanApplication.setLoanSchedule(ONE);
         loanApplication.setLoanApplicationType(TWO);
+        int i = loanApplicationMapper.insertLoanApplication(loanApplication);
         List<LoanApplicationFj> loanApplicationFjList = loanApplication.getLoanApplicationFjList();
         if (loanApplicationFjList != null && loanApplicationFjList.size() > 0) {
             for (LoanApplicationFj loanApplicationFj : loanApplicationFjList) {
-                loanApplicationFjMapper.insertLoanApplicationFj(loanApplicationFj);
+                loanApplicationFj.setLoanApplicationId(loanApplication.getLoanApplicationId());
+                loanApplicationFj.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
             }
+            loanApplicationFjMapper.batchLoanApplicationFj(loanApplicationFjList);
         }
         List<ShareholderFj> shareholderFjList = loanApplication.getShareholderFjList();
         if (shareholderFjList != null && shareholderFjList.size() > 0) {
             for (ShareholderFj shareholderFj : shareholderFjList) {
-                shareholderFjMapper.insertShareholderFj(shareholderFj);
+                shareholderFj.setLoanApplicationId(loanApplication.getLoanApplicationId());
+                shareholderFj.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
             }
+            shareholderFjMapper.batchShareholderFj(shareholderFjList);
         }
-        //设置为audit_schedule=1 audit_type=1
-        loanApplication.setAuditSchedule(ONE);
-        loanApplication.setAuditType(ONE);
-        //设置申请人用户ID
-        loanApplication.setUserId(SecurityUtils.getUserId());
-        loanApplication.setApplicationTime(DateUtils.getNowDate());
-        //贷款申请进度进入申报提交
-        loanApplication.setLoanSchedule(ONE);
+
         //往业务进度表 loan_schedule 插入数据
-        int i = loanApplicationMapper.insertLoanApplication(loanApplication);
         LoanSchedule loanSchedule = new LoanSchedule();
         loanSchedule.setLoanApplicationId(loanApplication.getLoanApplicationId());
         loanSchedule.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
@@ -155,15 +161,19 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
         List<LoanApplicationFj> loanApplicationFjList = loanApplication.getLoanApplicationFjList();
         if (loanApplicationFjList != null && loanApplicationFjList.size() > 0) {
             for (LoanApplicationFj loanApplicationFj : loanApplicationFjList) {
-                loanApplicationFjMapper.insertLoanApplicationFj(loanApplicationFj);
+                loanApplicationFj.setLoanApplicationId(loanApplication.getLoanApplicationId());
+                loanApplicationFj.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
             }
+            loanApplicationFjMapper.batchLoanApplicationFj(loanApplicationFjList);
         }
         shareholderFjMapper.deleteShareholderFjByLoanApplicationId(loanApplicationId);
         List<ShareholderFj> shareholderFjList = loanApplication.getShareholderFjList();
         if (shareholderFjList != null && shareholderFjList.size() > 0) {
             for (ShareholderFj shareholderFj : shareholderFjList) {
-                shareholderFjMapper.insertShareholderFj(shareholderFj);
+                shareholderFj.setLoanApplicationId(loanApplication.getLoanApplicationId());
+                shareholderFj.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
             }
+            shareholderFjMapper.batchShareholderFj(shareholderFjList);
         }
         return loanApplicationMapper.updateLoanApplication(loanApplication);
     }
@@ -178,25 +188,56 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
     public int temporary(LoanApplication loanApplication) {
         loanApplication.setLoanApplicationType(ONE);
         Long loanApplicationId = loanApplication.getLoanApplicationId();
+        //走修改
         if (loanApplicationId != null) {
             //相关附件先删除
             loanApplicationFjMapper.deleteLoanApplicationFjByLoanApplicationId(loanApplicationId);
             List<LoanApplicationFj> loanApplicationFjList = loanApplication.getLoanApplicationFjList();
             if (loanApplicationFjList != null && loanApplicationFjList.size() > 0) {
                 for (LoanApplicationFj loanApplicationFj : loanApplicationFjList) {
-                    loanApplicationFjMapper.insertLoanApplicationFj(loanApplicationFj);
+                    loanApplicationFj.setLoanApplicationId(loanApplication.getLoanApplicationId());
+                    loanApplicationFj.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
                 }
+                loanApplicationFjMapper.batchLoanApplicationFj(loanApplicationFjList);
             }
             shareholderFjMapper.deleteShareholderFjByLoanApplicationId(loanApplicationId);
             List<ShareholderFj> shareholderFjList = loanApplication.getShareholderFjList();
             if (shareholderFjList != null && shareholderFjList.size() > 0) {
                 for (ShareholderFj shareholderFj : shareholderFjList) {
-                    shareholderFjMapper.insertShareholderFj(shareholderFj);
+                    shareholderFj.setLoanApplicationId(loanApplication.getLoanApplicationId());
+                    shareholderFj.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
                 }
+                shareholderFjMapper.batchShareholderFj(shareholderFjList);
             }
             return loanApplicationMapper.updateLoanApplication(loanApplication);
         }
-        return loanApplicationMapper.insertLoanApplication(loanApplication);
+        //设置为audit_schedule=1 audit_type=1
+        loanApplication.setAuditSchedule(ONE);
+        loanApplication.setAuditType(ONE);
+        //设置申请人用户ID
+        loanApplication.setUserId(SecurityUtils.getUserId());
+        //贷款申请进度进入申报提交
+        loanApplication.setLoanSchedule(ONE);
+
+        int i = loanApplicationMapper.insertLoanApplication(loanApplication);
+        List<LoanApplicationFj> loanApplicationFjList = loanApplication.getLoanApplicationFjList();
+        if (loanApplicationFjList != null && loanApplicationFjList.size() > 0) {
+            for (LoanApplicationFj loanApplicationFj : loanApplicationFjList) {
+                loanApplicationFj.setLoanApplicationId(loanApplication.getLoanApplicationId());
+                loanApplicationFj.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
+            }
+            loanApplicationFjMapper.batchLoanApplicationFj(loanApplicationFjList);
+        }
+        List<ShareholderFj> shareholderFjList = loanApplication.getShareholderFjList();
+        if (shareholderFjList != null && shareholderFjList.size() > 0) {
+            for (ShareholderFj shareholderFj : shareholderFjList) {
+                shareholderFj.setLoanApplicationId(loanApplication.getLoanApplicationId());
+                shareholderFj.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
+            }
+            shareholderFjMapper.batchShareholderFj(shareholderFjList);
+        }
+
+        return i;
     }
 
     /**
@@ -220,4 +261,14 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
     public int deleteLoanApplicationByLoanApplicationId(Long loanApplicationId) {
         return loanApplicationMapper.deleteLoanApplicationByLoanApplicationId(loanApplicationId);
     }
+
+    /**
+     * 审核
+     * @param reviewComments
+     * @return
+     */
+    @Override
+    public AjaxResult sh(ReviewComments reviewComments) {
+        return null;
+    }
 }

+ 63 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/remind/IWaitRemindService.java

@@ -0,0 +1,63 @@
+package com.ruoyi.system.service.remind;
+
+import com.ruoyi.system.domain.remind.WaitRemind;
+
+import java.util.List;
+
+
+/**
+ * 待办提醒Service接口
+ * 
+ * @author boman
+ * @date 2024-04-29
+ */
+public interface IWaitRemindService 
+{
+    /**
+     * 查询待办提醒
+     * 
+     * @param remindId 待办提醒主键
+     * @return 待办提醒
+     */
+    public WaitRemind selectWaitRemindByRemindId(Integer remindId);
+
+    /**
+     * 查询待办提醒列表
+     * 
+     * @param waitRemind 待办提醒
+     * @return 待办提醒集合
+     */
+    public List<WaitRemind> selectWaitRemindList(WaitRemind waitRemind);
+
+    /**
+     * 新增待办提醒
+     * 
+     * @param waitRemind 待办提醒
+     * @return 结果
+     */
+    public int insertWaitRemind(WaitRemind waitRemind);
+
+    /**
+     * 修改待办提醒
+     * 
+     * @param waitRemind 待办提醒
+     * @return 结果
+     */
+    public int updateWaitRemind(WaitRemind waitRemind);
+
+    /**
+     * 批量删除待办提醒
+     * 
+     * @param remindIds 需要删除的待办提醒主键集合
+     * @return 结果
+     */
+    public int deleteWaitRemindByRemindIds(Integer[] remindIds);
+
+    /**
+     * 删除待办提醒信息
+     * 
+     * @param remindId 待办提醒主键
+     * @return 结果
+     */
+    public int deleteWaitRemindByRemindId(Integer remindId);
+}

+ 120 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/remind/impl/WaitRemindServiceImpl.java

@@ -0,0 +1,120 @@
+package com.ruoyi.system.service.remind.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.domain.SysNotice;
+import com.ruoyi.system.domain.remind.WaitRemind;
+import com.ruoyi.system.service.remind.IWaitRemindService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.WaitRemindMapper;
+
+/**
+ * 待办提醒Service业务层处理
+ * 
+ * @author boman
+ * @date 2024-04-29
+ */
+@Service
+public class WaitRemindServiceImpl implements IWaitRemindService
+{
+    @Autowired
+    private WaitRemindMapper waitRemindMapper;
+
+    /**
+     * 查询待办提醒
+     * 
+     * @param remindId 待办提醒主键
+     * @return 待办提醒
+     */
+    @Override
+    public WaitRemind selectWaitRemindByRemindId(Integer remindId)
+    {
+        WaitRemind waitRemind = waitRemindMapper.selectWaitRemindByRemindId(remindId);
+        String readUserId = waitRemind.getReadUserId();
+        if (StringUtils.isNotEmpty(readUserId)) {
+            readUserId = readUserId + "," + SecurityUtils.getUserId();
+        } else {
+            readUserId = SecurityUtils.getUserId() + "";
+        }
+        waitRemind.setReadUserId(readUserId);
+        waitRemindMapper.updateWaitRemind(waitRemind);
+        return waitRemind;
+    }
+
+    /**
+     * 查询待办提醒列表
+     * 
+     * @param waitRemind 待办提醒
+     * @return 待办提醒
+     */
+    @Override
+    public List<WaitRemind> selectWaitRemindList(WaitRemind waitRemind)
+    {
+        Long userId = SecurityUtils.getUserId();
+        waitRemind.setIsRead(userId.toString());
+        List<WaitRemind> waitReminds = waitRemindMapper.selectWaitRemindList(waitRemind);
+        if (waitReminds != null && waitReminds.size() > 0) {
+            for (WaitRemind waitRemindNew : waitReminds) {
+                String readUserId = waitRemindNew.getReadUserId();
+                //判断是否已读 = readUserId是否包含当前登录人的id
+                if (readUserId.contains(String.valueOf(userId))){
+                    waitRemindNew.setIsRead("Y");
+                }
+            }
+        }
+        return waitReminds;
+    }
+
+    /**
+     * 新增待办提醒
+     * 
+     * @param waitRemind 待办提醒
+     * @return 结果
+     */
+    @Override
+    public int insertWaitRemind(WaitRemind waitRemind)
+    {
+        waitRemind.setCreateTime(DateUtils.getNowDate());
+        return waitRemindMapper.insertWaitRemind(waitRemind);
+    }
+
+    /**
+     * 修改待办提醒
+     * 
+     * @param waitRemind 待办提醒
+     * @return 结果
+     */
+    @Override
+    public int updateWaitRemind(WaitRemind waitRemind)
+    {
+        waitRemind.setUpdateTime(DateUtils.getNowDate());
+        return waitRemindMapper.updateWaitRemind(waitRemind);
+    }
+
+    /**
+     * 批量删除待办提醒
+     * 
+     * @param remindIds 需要删除的待办提醒主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWaitRemindByRemindIds(Integer[] remindIds)
+    {
+        return waitRemindMapper.deleteWaitRemindByRemindIds(remindIds);
+    }
+
+    /**
+     * 删除待办提醒信息
+     * 
+     * @param remindId 待办提醒主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWaitRemindByRemindId(Integer remindId)
+    {
+        return waitRemindMapper.deleteWaitRemindByRemindId(remindId);
+    }
+}

+ 8 - 3
ruoyi-system/src/main/resources/mapper/system/LoanApplicationMapper.xml

@@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <resultMap type="LoanApplication" id="LoanApplicationResult">
         <result property="loanApplicationId"    column="loan_application_id"    />
         <result property="loanApplicationNumber"    column="loan_application_number"    />
+        <result property="applicationType"    column="application_type"    />
         <result property="applicationAmount"    column="application_amount"    />
         <result property="applicationBank"    column="application_bank"    />
         <result property="usagePeriod"    column="usage_period"    />
@@ -71,13 +72,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectLoanApplicationVo">
-        select loan_application_id, loan_application_number, application_amount, application_bank, usage_period, purpose_funds, repayment_source, enterprise_name, category_type, is_make, is_new, is_small, is_duty, company_introduction, customer_type, corporation_front, corporation_back, corporation_name, corporation_id_card, corporation_phone,corporation_address,corporation_expiration_date, family_population, corporation_job, is_loan, receivable_pay, business_situation, business_efficiency, corporation_marital_status, spouse_front, spouse_back, spouse_name, spouse_id_card, spouse_phone, guarantee_type, guarantee_front, guarantee_back, guarantee_name, guarantee_id_card, guarantee_phone, guarantee_marital_status, guarantee_spouse_front, guarantee_spouse_back, guarantee_spouse_name, guarantee_spouse_id_card, guarantee_spouse_phone, user_id, id_card, application_time, file_time, loan_schedule, audit_schedule, audit_type, loan_application_type, a_user_id, a_user_name, b_user_id, b_user_name, create_by, create_time, update_by, update_time, remark from loan_application
+        select loan_application_id, loan_application_number, application_type,application_amount, application_bank, usage_period, purpose_funds, repayment_source, enterprise_name, category_type, is_make, is_new, is_small, is_duty, company_introduction, customer_type, corporation_front, corporation_back, corporation_name, corporation_id_card, corporation_phone,corporation_address,corporation_expiration_date, family_population, corporation_job, is_loan, receivable_pay, business_situation, business_efficiency, corporation_marital_status, spouse_front, spouse_back, spouse_name, spouse_id_card, spouse_phone, guarantee_type, guarantee_front, guarantee_back, guarantee_name, guarantee_id_card, guarantee_phone, guarantee_marital_status, guarantee_spouse_front, guarantee_spouse_back, guarantee_spouse_name, guarantee_spouse_id_card, guarantee_spouse_phone, user_id, id_card, application_time, file_time, loan_schedule, audit_schedule, audit_type, loan_application_type, a_user_id, a_user_name, b_user_id, b_user_name, create_by, create_time, update_by, update_time, remark from loan_application
     </sql>
 
     <select id="selectLoanApplicationList" parameterType="LoanApplication" resultMap="LoanApplicationResult">
         <include refid="selectLoanApplicationVo"/>
         <where>  
             <if test="applicationAmount != null "> and application_amount = #{applicationAmount}</if>
+            <if test="applicationType != null and applicationType != ''"> and application_type = #{applicationType}</if>
             <if test="applicationBank != null  and applicationBank != ''"> and application_bank = #{applicationBank}</if>
             <if test="usagePeriod != null  and usagePeriod != ''"> and usage_period = #{usagePeriod}</if>
             <if test="purposeFunds != null  and purposeFunds != ''"> and purpose_funds = #{purposeFunds}</if>
@@ -144,6 +146,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         insert into loan_application
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="loanApplicationNumber != null">loan_application_number,</if>
+            <if test="applicationType  != null and applicationType != ''">application_type,</if>
             <if test="applicationAmount != null">application_amount,</if>
             <if test="applicationBank != null and applicationBank != ''">application_bank,</if>
             <if test="usagePeriod != null and usagePeriod != ''">usage_period,</if>
@@ -201,13 +204,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="bUserId != null">b_user_id,</if>
             <if test="bUserName != null">b_user_name,</if>
             <if test="createBy != null">create_by,</if>
-            <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="remark != null">remark,</if>
+            create_time
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="loanApplicationNumber != null">#{loanApplicationNumber},</if>
+            <if test="applicationType != null and applicationType != ''">#{applicationType},</if>
             <if test="applicationAmount != null">#{applicationAmount},</if>
             <if test="applicationBank != null and applicationBank != ''">#{applicationBank},</if>
             <if test="usagePeriod != null and usagePeriod != ''">#{usagePeriod},</if>
@@ -265,10 +269,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="bUserId != null">#{bUserId},</if>
             <if test="bUserName != null">#{bUserName},</if>
             <if test="createBy != null">#{createBy},</if>
-            <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="remark != null">#{remark},</if>
+            sysdate()
          </trim>
     </insert>
 
@@ -276,6 +280,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update loan_application
         <trim prefix="SET" suffixOverrides=",">
             <if test="loanApplicationNumber != null">loan_application_number = #{loanApplicationNumber},</if>
+            <if test="applicationType != null and applicationType != ''">application_type = #{applicationType},</if>
             <if test="applicationAmount != null">application_amount = #{applicationAmount},</if>
             <if test="applicationBank != null and applicationBank != ''">application_bank = #{applicationBank},</if>
             <if test="usagePeriod != null and usagePeriod != ''">usage_period = #{usagePeriod},</if>

+ 2 - 1
ruoyi-system/src/main/resources/mapper/system/LoanScheduleMapper.xml

@@ -51,10 +51,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="loanScheduleScore != null">loan_schedule_score,</if>
             <if test="loanScheduleTime != null">loan_schedule_time,</if>
             <if test="createBy != null">create_by,</if>
-            <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="remark != null">remark,</if>
+            create_time
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="loanApplicationId != null">#{loanApplicationId},</if>
@@ -68,6 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="remark != null">#{remark},</if>
+            sysdate()
          </trim>
     </insert>
 

+ 15 - 1
ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml

@@ -9,6 +9,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="noticeTitle"    column="notice_title"    />
         <result property="noticeType"     column="notice_type"     />
         <result property="noticeContent"  column="notice_content"  />
+        <result property="readUserId"  column="read_user_id"  />
+        <result property="isRead"  column="is_read"  />
         <result property="status"         column="status"          />
         <result property="createBy"       column="create_by"       />
         <result property="createTime"     column="create_time"     />
@@ -18,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
     
     <sql id="selectNoticeVo">
-        select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content, status, create_by, create_time, update_by, update_time, remark 
+        select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content,read_user_id,is_read status, create_by, create_time, update_by, update_time, remark
 		from sys_notice
     </sql>
     
@@ -36,6 +38,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="noticeType != null and noticeType != ''">
 				AND notice_type = #{noticeType}
 			</if>
+            <if test="isRead != null and isRead == 'Y'">
+                 AND find_in_set(#{isRead}, read_user_id)
+            </if>
+            <if test="isRead != null and isRead == 'N'">
+                AND find_in_set(#{isRead}, read_user_id) = 0
+            </if>
 			<if test="createBy != null and createBy != ''">
 				AND create_by like concat('%', #{createBy}, '%')
 			</if>
@@ -47,6 +55,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="noticeTitle != null and noticeTitle != '' ">notice_title, </if>
 			<if test="noticeType != null and noticeType != '' ">notice_type, </if>
 			<if test="noticeContent != null and noticeContent != '' ">notice_content, </if>
+			<if test="readUserId != null and readUserId != '' ">read_user_id, </if>
+			<if test="isRead != null and isRead != '' ">is_read, </if>
 			<if test="status != null and status != '' ">status, </if>
 			<if test="remark != null and remark != ''">remark,</if>
  			<if test="createBy != null and createBy != ''">create_by,</if>
@@ -55,6 +65,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="noticeTitle != null and noticeTitle != ''">#{noticeTitle}, </if>
 			<if test="noticeType != null and noticeType != ''">#{noticeType}, </if>
 			<if test="noticeContent != null and noticeContent != ''">#{noticeContent}, </if>
+			<if test="readUserId != null and readUserId != ''">#{readUserId}, </if>
+			<if test="isRead != null and isRead != ''">#{isRead}, </if>
 			<if test="status != null and status != ''">#{status}, </if>
 			<if test="remark != null and remark != ''">#{remark},</if>
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
@@ -68,6 +80,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="noticeTitle != null and noticeTitle != ''">notice_title = #{noticeTitle}, </if>
             <if test="noticeType != null and noticeType != ''">notice_type = #{noticeType}, </if>
             <if test="noticeContent != null">notice_content = #{noticeContent}, </if>
+            <if test="readUserId != null and readUserId != ''">read_user_id = #{readUserId}, </if>
+            <if test="isRead != null and isRead != ''">notice_content = #{isRead}, </if>
             <if test="status != null and status != ''">status = #{status}, </if>
             <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
  			update_time = sysdate()

+ 123 - 0
ruoyi-system/src/main/resources/mapper/system/WaitRemindMapper.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.WaitRemindMapper">
+    
+    <resultMap type="WaitRemind" id="WaitRemindResult">
+        <result property="remindId"    column="remind_id"    />
+        <result property="loanApplicationId"    column="loan_application_id"    />
+        <result property="loanApplicationNumber"    column="loan_application_number"    />
+        <result property="remindTitle"    column="remind_title"    />
+        <result property="remindType"    column="remind_type"    />
+        <result property="remindContent"    column="remind_content"    />
+        <result property="remindTime"    column="remind_time"    />
+        <result property="readUserId"    column="read_user_id"    />
+        <result property="isRead"    column="is_read"    />
+        <result property="status"    column="status"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectWaitRemindVo">
+        select remind_id, loan_application_id, loan_application_number, remind_title, remind_type, remind_content, remind_time, read_user_id, is_read, status, create_by, create_time, update_by, update_time, remark from wait_remind
+    </sql>
+
+    <select id="selectWaitRemindList" parameterType="WaitRemind" resultMap="WaitRemindResult">
+        <include refid="selectWaitRemindVo"/>
+        <where>  
+            <if test="loanApplicationId != null "> and loan_application_id = #{loanApplicationId}</if>
+            <if test="loanApplicationNumber != null  and loanApplicationNumber != ''"> and loan_application_number = #{loanApplicationNumber}</if>
+            <if test="remindTitle != null  and remindTitle != ''"> and remind_title = #{remindTitle}</if>
+            <if test="remindType != null  and remindType != ''"> and remind_type = #{remindType}</if>
+            <if test="remindContent != null  and remindContent != ''"> and remind_content = #{remindContent}</if>
+            <if test="remindTime != null "> and remind_time = #{remindTime}</if>
+            <if test="readUserId != null  and readUserId != ''"> and read_user_id = #{readUserId}</if>
+            <if test="isRead != null  and isRead != ''"> and is_read = #{isRead}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="isRead != null and isRead == 'Y'">
+                AND find_in_set(#{isRead}, read_user_id)
+            </if>
+            <if test="isRead != null and isRead == 'N'">
+                AND find_in_set(#{isRead}, read_user_id) = 0
+            </if>
+        </where>
+        order by create_time
+    </select>
+    
+    <select id="selectWaitRemindByRemindId" parameterType="Integer" resultMap="WaitRemindResult">
+        <include refid="selectWaitRemindVo"/>
+        where remind_id = #{remindId}
+    </select>
+        
+    <insert id="insertWaitRemind" parameterType="WaitRemind" useGeneratedKeys="true" keyProperty="remindId">
+        insert into wait_remind
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="loanApplicationId != null">loan_application_id,</if>
+            <if test="loanApplicationNumber != null and loanApplicationNumber != ''">loan_application_number,</if>
+            <if test="remindTitle != null and remindTitle != ''">remind_title,</if>
+            <if test="remindType != null and remindType != ''">remind_type,</if>
+            <if test="remindContent != null">remind_content,</if>
+            <if test="remindTime != null">remind_time,</if>
+            <if test="readUserId != null and readUserId != ''">read_user_id,</if>
+            <if test="isRead != null">is_read,</if>
+            <if test="status != null">status,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="loanApplicationId != null">#{loanApplicationId},</if>
+            <if test="loanApplicationNumber != null and loanApplicationNumber != ''">#{loanApplicationNumber},</if>
+            <if test="remindTitle != null and remindTitle != ''">#{remindTitle},</if>
+            <if test="remindType != null and remindType != ''">#{remindType},</if>
+            <if test="remindContent != null">#{remindContent},</if>
+            <if test="remindTime != null">#{remindTime},</if>
+            <if test="readUserId != null and readUserId != ''">#{readUserId},</if>
+            <if test="isRead != null">#{isRead},</if>
+            <if test="status != null">#{status},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateWaitRemind" parameterType="WaitRemind">
+        update wait_remind
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="loanApplicationId != null">loan_application_id = #{loanApplicationId},</if>
+            <if test="loanApplicationNumber != null and loanApplicationNumber != ''">loan_application_number = #{loanApplicationNumber},</if>
+            <if test="remindTitle != null and remindTitle != ''">remind_title = #{remindTitle},</if>
+            <if test="remindType != null and remindType != ''">remind_type = #{remindType},</if>
+            <if test="remindContent != null">remind_content = #{remindContent},</if>
+            <if test="remindTime != null">remind_time = #{remindTime},</if>
+            <if test="readUserId != null and readUserId != ''">read_user_id = #{readUserId},</if>
+            <if test="isRead != null">is_read = #{isRead},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where remind_id = #{remindId}
+    </update>
+
+    <delete id="deleteWaitRemindByRemindId" parameterType="Integer">
+        delete from wait_remind where remind_id = #{remindId}
+    </delete>
+
+    <delete id="deleteWaitRemindByRemindIds" parameterType="String">
+        delete from wait_remind where remind_id in 
+        <foreach item="remindId" collection="array" open="(" separator="," close=")">
+            #{remindId}
+        </foreach>
+    </delete>
+</mapper>