Browse Source

增加订单详情功能,挺提供审批审核权限

chengpan 2 năm trước cách đây
mục cha
commit
d272b8582d

+ 12 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/opt/ProcessInfoController.java

@@ -1,6 +1,8 @@
 package com.ruoyi.web.controller.opt;
 
 import java.util.List;
+
+import com.ruoyi.opt.domain.ProcessDetailInfo;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -140,4 +142,14 @@ public class ProcessInfoController extends BaseController
     {
         return toAjax(processInfoService.deleteProcessInfoByPIds(ids));
     }
+
+    @RequiresPermissions("opt:process:list")
+    @GetMapping("/detail/{pId}")
+    public String detail(@PathVariable("pId") Long pId, ModelMap mmap)
+    {
+//        ProcessInfo processInfo = processInfoService.selectProcessInfoByPId(pId);
+        ProcessDetailInfo processInfo = processInfoService.selectDetailProcessByPId(pId);
+        mmap.put("processInfo", processInfo);
+        return prefix + "/detail";
+    }
 }

+ 112 - 0
ruoyi-admin/src/main/resources/templates/opt/process/detail.html

@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <th:block th:include="include :: header('修改保函订单')"/>
+</head>
+<body class="white-bg">
+<div class="wrapper wrapper-content animated fadeInRight ibox-content">
+    <form class="form-horizontal m-t">
+        <input type="hidden" id="pId" name="pId" th:value="${processInfo.pId}">
+        <input type="hidden" id="processId" name="processId" th:value="${processInfo.processId}">
+        <input type="hidden" id="policySignUrl" name="policySignUrl" th:value="${processInfo.policySignUrl}">
+        <div class="form-group">
+            <label class="col-sm-4 control-label">订单编号:</label>
+            <div class="form-control-static" th:text="${processInfo.processId}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">项目编号:</label>
+            <div class="form-control-static" th:text="${processInfo.projectId}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">项目名称:</label>
+            <div class="form-control-static" th:text="${processInfo.projectNm}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">项目标段:</label>
+            <div class="form-control-static" th:text="${processInfo.tenderNo}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">保证金金额(元):</label>
+            <div class="form-control-static" th:text="${processInfo.loanAmt}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">保函开具对象:</label>
+            <div class="form-control-static" th:text="${processInfo.tendereeNm}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">统一社会信用代码:</label>
+            <div class="form-control-static" th:text="${processInfo.companySocialNo}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">申请人电话:</label>
+            <div class="form-control-static" th:text="${processInfo.applyTel}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">企业基本账户:</label>
+            <div class="form-control-static" th:text="${processInfo.basicAccountBank}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">企业基本账户号码:</label>
+            <div class="form-control-static" th:text="${processInfo.basicAccountNo}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">企业名称:</label>
+            <div class="form-control-static" th:text="${processInfo.companyNm}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">订单状态:</label>
+            <div class="form-control-static" th:text="${processInfo.processStsNm}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">申请保额(元):</label>
+            <div class="form-control-static" th:text="${processInfo.premiumAmt}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">申请时间:</label>
+            <div class="form-control-static" th:text="${processInfo.applyTime}"></div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-4 control-label">审批时间:</label>
+            <div class="form-control-static" th:text="${processInfo.approvedTime}"></div>
+            <div class="form-control-static" th:text="${processInfo.approvedTime}"></div>
+        </div>
+        <div class="form-group">
+            <div class="text-center">
+            <th:block th:if="${processInfo.processStsCd=='01'}" shiro:hasPermission="opt:process:approve"><button type="button" onclick="approve()" class="btn btn-success">审核</button></th:block>
+            <th:block th:if="${processInfo.processStsCd=='04'}" shiro:hasPermission="opt:process:approve"><button type="button" onclick="confirmPay()" class="btn btn-success">确认支付</button></th:block>
+            <th:block th:if="${processInfo.processStsCd=='05'}" shiro:hasPermission="opt:process:approve"><button type="button" onclick="policySign()" class="btn btn-success">签署</button></th:block>
+            </div>
+        </div>
+    </form>
+</div>
+<th:block th:include="include :: footer"/>
+<script th:inline="javascript">
+    var prefix = ctx + "opt/process";
+
+    // 跳转审核页面
+    function approve() {
+        var pId = $("#pId").val();
+        $.modal.open("审批", "/opt/process/approve/" + pId, '800', '350');
+        $.modal.close();
+    }
+
+    // 确认支付
+    function confirmPay() {
+        $.modal.confirm("已收到此笔保费金额?", function () {
+            $.operate.save(prefix + "/edit", {"pId": $("#pId").val(), "processId":$("#processId").val(), "processStsCd": "05"});
+        })
+    }
+
+    // 签署
+    function policySign(){
+        var policySignUrl = $("#policySignUrl").val();
+        if($.common.isNotEmpty(policySignUrl)) {
+            window.open(policySignUrl);
+            $.modal.close();
+        }else{
+            $.modal.msgError("签署失败,请联系相关人员确认后重试");
+        }
+    }
+</script>
+</body>
+</html>

+ 26 - 1
ruoyi-admin/src/main/resources/templates/opt/process/process.html

@@ -105,7 +105,10 @@
                 },
                 {
                     field: 'processId',
-                    title: '订单编号'
+                    title: '订单编号',
+                    formatter: function(value, row, index) {
+                        return '<a href="javascript:void(0)" onclick="detail(\'' + row.pId + '\')">' + value + '</a>';
+                    }
                 },
                 {
                     field: 'projectId',
@@ -202,6 +205,28 @@
             $.modal.msgError("下载保函失败,请联系相关人员确认后重试");
         }
     }
+
+    // 查看订单详情
+    function detail(pId) {
+        if($.common.isNotEmpty(pId)) {
+            var url = prefix + '/detail/' + pId;
+            // $.operate.detail("订单详情", url);
+            var options = {
+                title: '订单明细',
+                width: 800,
+                height: 600,
+                url: url,
+                skin: 'layui-layer-gray',
+                btn: ['关闭'],
+                yes: function (index, layero) {
+                    $.modal.close(index);
+                }
+            };
+            $.modal.openOptions(options);
+        }else{
+            $.modal.msgError("查看失败,请联系相关人员");
+        }
+    }
 </script>
 </body>
 </html>

+ 112 - 0
ruoyi-system/src/main/java/com/ruoyi/opt/domain/ProcessDetailInfo.java

@@ -0,0 +1,112 @@
+package com.ruoyi.opt.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 订单明细 ProcessDetailInfo
+ *
+ * @author chengpan
+ * @date 2022-09-06
+ */
+@Data
+public class ProcessDetailInfo {
+
+    /**
+     * 主键
+     */
+    private Long pId;
+
+    /**
+     * 订单编号
+     */
+    private String processId;
+
+    /**
+     * 项目编号
+     */
+    private Long projectId;
+
+    /**
+     * 项目名称
+     */
+    private String projectNm;
+
+    /**
+     * 标段编号
+     */
+    private String tenderNo;
+
+    /**
+     * 申请保额
+     */
+    private String loanAmt;
+
+    /**
+     * 保函开具对象
+     */
+    private String tendereeNm;
+
+    /**
+     * 统一社会信用代码
+     */
+    private String companySocialNo;
+
+    /**
+     * 申请人电话
+     */
+    private String applyTel;
+
+    /**
+     * 企业基本账户
+     */
+    private String basicAccountBank;
+
+    /**
+     * 企业基本账户号码
+     */
+    private String basicAccountNo;
+
+    /**
+     * 公司名称
+     */
+    private String companyNm;
+
+    /**
+     * 订单状态编号
+     */
+    private String processStsCd;
+
+    /**
+     * 订单状态名称
+     */
+    private String processStsNm;
+
+    /**
+     * 保费金额
+     */
+    private String premiumAmt;
+
+    /**
+     * 申请时间
+     */
+    private String applyTime;
+
+    /**
+     * 审批通过时间
+     */
+    private String approvedTime;
+
+    /**
+     * 保函签署地址
+     */
+    private String policySignUrl;
+
+    /**
+     * 保函下载地址
+     */
+    private String policyDlUrl;
+
+}

+ 9 - 1
ruoyi-system/src/main/java/com/ruoyi/opt/mapper/ProcessInfoMapper.java

@@ -3,6 +3,7 @@ package com.ruoyi.opt.mapper;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.opt.domain.ProcessDetailInfo;
 import com.ruoyi.opt.domain.ProcessInfo;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
@@ -18,7 +19,7 @@ public interface ProcessInfoMapper extends BaseMapper<ProcessInfo>
     /**
      * 查询保函订单
      *
-     * @param pId 保函订单主键
+     * @param processInfo 订单信息
      * @return 保函订单
      */
     public int updateProcessInfoByProcessId(ProcessInfo processInfo);
@@ -71,4 +72,11 @@ public interface ProcessInfoMapper extends BaseMapper<ProcessInfo>
      * @return 结果
      */
     public int deleteProcessInfoByPIds(String[] pIds);
+
+    /**
+     * 根据订单主键查询订单详情
+     * @param pId 订单表主键
+     * @return
+     */
+    public ProcessDetailInfo selectDetailProcessByPId(Long pId);
 }

+ 10 - 2
ruoyi-system/src/main/java/com/ruoyi/opt/service/IProcessInfoService.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.opt.domain.ProcessDetailInfo;
 import com.ruoyi.opt.domain.ProcessInfo;
 
 /**
@@ -17,9 +18,9 @@ public interface IProcessInfoService extends IService<ProcessInfo>
 
 
     /**
-     * 根据processId修改
+     * 根据订单信息修改
      *
-     * @param pId 保函订单主键
+     * @param processInfo 订单信息
      * @return 保函订单
      */
     public int updateProcessInfoByProcessId(ProcessInfo processInfo);
@@ -72,4 +73,11 @@ public interface IProcessInfoService extends IService<ProcessInfo>
      * @return 结果
      */
     public int deleteProcessInfoByPId(Long pId);
+
+    /**
+     * 根据订单主键查询订单详情
+     * @param pId 订单表主键
+     * @return
+     */
+    ProcessDetailInfo selectDetailProcessByPId(Long pId);
 }

+ 6 - 0
ruoyi-system/src/main/java/com/ruoyi/opt/service/impl/ProcessInfoServiceImpl.java

@@ -12,6 +12,7 @@ import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.http.HttpUtils;
 import com.ruoyi.common.utils.http.HttpsUtil;
 import com.ruoyi.opt.domain.CompanyInfo;
+import com.ruoyi.opt.domain.ProcessDetailInfo;
 import com.ruoyi.opt.mapper.CompanyInfoMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -272,4 +273,9 @@ public class ProcessInfoServiceImpl extends ServiceImpl<ProcessInfoMapper, Proce
     {
         return processInfoMapper.deleteProcessInfoByPId(pId);
     }
+
+    @Override
+    public ProcessDetailInfo selectDetailProcessByPId(Long pId) {
+        return processInfoMapper.selectDetailProcessByPId(pId);
+    }
 }

+ 31 - 0
ruoyi-system/src/main/resources/mapper/opt/ProcessInfoMapper.xml

@@ -159,4 +159,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </delete>
 
+    <resultMap type="ProcessDetailInfo" id="ProcessDetailInfoResult">
+        <result property="pId"    column="p_id"    />
+        <result property="processId"    column="process_id"    />
+        <result property="projectId"    column="project_id"    />
+        <result property="projectNm"    column="project_nm"    />
+        <result property="tenderNo"    column="tender_no"    />
+        <result property="loanAmt"    column="loan_amt"    />
+        <result property="tendereeNm"    column="tenderee_nm"    />
+        <result property="companySocialNo"    column="company_social_no"    />
+        <result property="applyTel"    column="apply_tel"    />
+        <result property="basicAccountBank"    column="basic_account_bank"    />
+        <result property="basicAccountNo"    column="basic_account_no"    />
+        <result property="companyNm"    column="company_nm"    />
+        <result property="processStsCd"    column="process_sts_cd"    />
+        <result property="processStsNm"    column="process_sts_nm"    />
+        <result property="premiumAmt"    column="premium_amt"    />
+        <result property="applyTime"    column="apply_time"    />
+        <result property="approvedTime"    column="approved_time"    />
+        <result property="policySignUrl"    column="policy_sign_url"    />
+    </resultMap>
+
+    <select id="selectDetailProcessByPId" parameterType="Long" resultMap="ProcessDetailInfoResult">
+        select t.p_id, t.process_id, t.project_id, p.project_nm, p.tender_no, t.loan_amt, p.tenderee_nm, c.company_social_no,
+               c.apply_tel, c.basic_account_bank, c.basic_account_no, c.company_nm, t.process_sts_cd,
+               ( SELECT dict_label FROM sys_dict_data dict WHERE dict.dict_type = 'process_status_cd' AND dict.dict_value = t.process_sts_cd ) AS process_sts_nm, t.premium_amt,
+               date_format(t.apply_time, '%Y-%m-%d %H:%i:%s') AS apply_time, date_format(t.approved_time, '%Y-%m-%d %H:%i:%s') AS approved_time,
+               t.policy_sign_url
+        from t_process_info t INNER JOIN t_project_info p ON p.project_id = t.project_id INNER JOIN t_company_info c ON c.company_id = t.company_id
+            where t.p_id = #{pId}
+    </select>
+
 </mapper>