|
@@ -2,10 +2,11 @@ package controllers
|
|
|
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
- contractReq "hongze/hongze_mobile_admin/models/request/contract"
|
|
|
+ sealReq "hongze/hongze_mobile_admin/models/request/seal"
|
|
|
sealResp "hongze/hongze_mobile_admin/models/response/seal"
|
|
|
"hongze/hongze_mobile_admin/models/tables/contract_approval"
|
|
|
"hongze/hongze_mobile_admin/models/tables/contract_approval_record"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/seal"
|
|
|
sealService "hongze/hongze_mobile_admin/services/seal"
|
|
|
"hongze/hongze_mobile_admin/utils"
|
|
|
"rdluck_tools/paging"
|
|
@@ -211,50 +212,109 @@ func (this *SealApprovalCommon) List() {
|
|
|
}, "获取成功")
|
|
|
}
|
|
|
|
|
|
-// @Title 驳回审批
|
|
|
-// @Description 驳回审批接口
|
|
|
-// @Param request body contract.RejectReq true "type json string"
|
|
|
-// @Success Ret=200 驳回成功
|
|
|
-// @router /reject [post]
|
|
|
-func (this *SealApprovalCommon) Reject() {
|
|
|
- var req contractReq.RejectReq
|
|
|
- err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+// @Title 审批单详情
|
|
|
+// @Description 审批单详情接口
|
|
|
+// @Param ContractApprovalId query int false "审批单id"
|
|
|
+// @Success 200 {object} contract.ContractDetailResp
|
|
|
+// @router /detail [get]
|
|
|
+func (this *SealApprovalCommon) Detail() {
|
|
|
+ //审批单id
|
|
|
+ contractApprovalId, _ := this.GetInt("ContractApprovalId")
|
|
|
+
|
|
|
+ //审批单详情
|
|
|
+ contractApprovalInfo, err := contract_approval.GetContractApprovalById(contractApprovalId)
|
|
|
if err != nil {
|
|
|
- this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
|
|
|
+ this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
- //审批单id编号
|
|
|
- contractApprovalId := req.ApprovalId
|
|
|
- if contractApprovalId <= 0 {
|
|
|
- this.FailWithMessage("请传入审批单编号!", "请传入审批单编号!")
|
|
|
+ var sealDetail *seal.Seal
|
|
|
+ jsonErr := json.Unmarshal([]byte(contractApprovalInfo.ContractDetail), sealDetail)
|
|
|
+ if jsonErr != nil {
|
|
|
+ this.FailWithMessage("审批合同数据转换失败!", "审批合同数据转换失败,Err:"+jsonErr.Error())
|
|
|
return
|
|
|
}
|
|
|
- //审批单详情
|
|
|
- approvalInfo, err := contract_approval.GetContractApprovalById(contractApprovalId)
|
|
|
+
|
|
|
+ //合同详情
|
|
|
+ sealInfo, err := seal.GetSealInfoById(contractApprovalInfo.ContractId)
|
|
|
if err != nil {
|
|
|
- this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
|
|
|
+ this.FailWithMessage("获取用印详情失败!", "获取用印详情失败,Err:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
- if approvalInfo.Status != "待审批" {
|
|
|
- this.FailWithMessage("当前审批单状态异常,不允许审批", "当前审批单状态异常,不允许审批,审批单状态:"+approvalInfo.Status)
|
|
|
- }
|
|
|
+
|
|
|
+ //替换快照数据
|
|
|
+ sealDetail.Status = sealInfo.Status
|
|
|
+
|
|
|
+ //审批操作权限,上传签回文件权限
|
|
|
+ var sealOpButton sealResp.OpButton
|
|
|
+
|
|
|
//审批流
|
|
|
- approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, approvalInfo.CurrNodeId)
|
|
|
+ approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalId(contractApprovalId)
|
|
|
if err != nil {
|
|
|
this.FailWithMessage("获取审批失败!", "获取审批失败,Err:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
- var approvalRecord *contract_approval_record.ContractApprovalRecord
|
|
|
- for _, tmpApprovalRecord := range approvalRecordList {
|
|
|
- if tmpApprovalRecord.NodeType == "check" && tmpApprovalRecord.ApproveUserId == this.AdminWx.AdminId {
|
|
|
- approvalRecord = tmpApprovalRecord
|
|
|
+ flowNodeMap := make(map[int][]contract_approval_record.ContractApprovalRecord, 0)
|
|
|
+ keySort := make([]int, 0)
|
|
|
+ for _, approvalRecord := range approvalRecordList {
|
|
|
+ //如果当前节点正好是该节点,同时审批单状态是待审批状态,然后当前账号又有权限,该账号也正是审批人,那么允许审批操作
|
|
|
+ if contractApprovalInfo.CurrNodeId == approvalRecord.NodeId && contractApprovalInfo.Status == "待审批" {
|
|
|
+ if this.AdminWx.AdminId == approvalRecord.ApproveUserId && approvalRecord.NodeType == "check" {
|
|
|
+ sealOpButton.ApprovalButton = true
|
|
|
+ }
|
|
|
}
|
|
|
+ if tmpFlowNodeList, ok := flowNodeMap[approvalRecord.NodeId]; ok {
|
|
|
+ flowNodeMap[approvalRecord.NodeId] = append(tmpFlowNodeList, *approvalRecord)
|
|
|
+ } else {
|
|
|
+ tmpFlowNodeList := make([]contract_approval_record.ContractApprovalRecord, 1)
|
|
|
+ tmpFlowNodeList[0] = *approvalRecord
|
|
|
+ flowNodeMap[approvalRecord.NodeId] = tmpFlowNodeList
|
|
|
+
|
|
|
+ keySort = append(keySort, approvalRecord.NodeId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ flowNodeListResp := make([][]contract_approval_record.ContractApprovalRecord, 0)
|
|
|
+ for _, key := range keySort {
|
|
|
+ flowNodeListResp = append(flowNodeListResp, flowNodeMap[key])
|
|
|
}
|
|
|
|
|
|
- if approvalRecord == nil {
|
|
|
- this.FailWithMessage("当前账号没有审批权限", "当前账号没有审批权限")
|
|
|
+ //作废权限
|
|
|
+ if (this.AdminWx.RoleTypeCode == utils.ROLE_TYPE_CODE_COMPLIANCE || this.AdminWx.AdminId == sealInfo.UserId) && sealInfo.Status == "已审批" {
|
|
|
+ sealOpButton.Invalid = true
|
|
|
}
|
|
|
- err = sealService.Reject(approvalRecord, this.AdminWx, req.Remark)
|
|
|
+ resp := sealResp.SealDetailResp{
|
|
|
+ SealDetail: sealDetail,
|
|
|
+ FlowNodeList: flowNodeListResp,
|
|
|
+ OpButton: sealOpButton,
|
|
|
+ }
|
|
|
+ this.OkDetailed(resp, "获取成功")
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 驳回审批
|
|
|
+// @Description 驳回审批接口
|
|
|
+// @Param request body contract.RejectReq true "type json string"
|
|
|
+// @Success Ret=200 驳回成功
|
|
|
+// @router /reject [post]
|
|
|
+func (this *SealApprovalCommon) Reject() {
|
|
|
+ var req sealReq.RejectReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //用印id编号
|
|
|
+ sealId := req.SealId
|
|
|
+ if sealId <= 0 {
|
|
|
+ this.FailWithMessage("请传入用印单编号!", "请传入用印单编号!")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //数据校验
|
|
|
+ sealInfo, approvalInfo, approvalRecord, err := sealService.CheckApproveAuth(sealId, this.AdminWx)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("驳回审批失败!", "驳回审批失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = sealService.Reject(sealInfo, approvalInfo, approvalRecord, this.AdminWx, req.Remark)
|
|
|
if err != nil {
|
|
|
this.FailWithMessage("驳回审批失败!", "驳回审批失败,Err:"+err.Error())
|
|
|
return
|
|
@@ -268,45 +328,26 @@ func (this *SealApprovalCommon) Reject() {
|
|
|
// @Success Ret=200 申请成功
|
|
|
// @router /approved [post]
|
|
|
func (this *SealApprovalCommon) Approved() {
|
|
|
-
|
|
|
- var req contractReq.ApprovedReq
|
|
|
+ var req sealReq.ApprovedReq
|
|
|
err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
if err != nil {
|
|
|
this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
- //审批单id编号
|
|
|
- contractApprovalId := req.ApprovalId
|
|
|
- if contractApprovalId <= 0 {
|
|
|
- this.FailWithMessage("请传入审批单编号!", "请传入审批单编号!")
|
|
|
+ //用印编号id编号
|
|
|
+ sealId := req.SealId
|
|
|
+ if sealId <= 0 {
|
|
|
+ this.FailWithMessage("请传入用印单编号!", "请传入用印单编号!")
|
|
|
return
|
|
|
}
|
|
|
- //审批单详情
|
|
|
- approvalInfo, err := contract_approval.GetContractApprovalById(contractApprovalId)
|
|
|
- if err != nil {
|
|
|
- this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- if approvalInfo.Status != "待审批" {
|
|
|
- this.FailWithMessage("当前审批单状态异常,不允许审批", "当前审批单状态异常,不允许审批,审批单状态:"+approvalInfo.Status)
|
|
|
- }
|
|
|
- //审批流
|
|
|
- approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, approvalInfo.CurrNodeId)
|
|
|
+
|
|
|
+ //数据校验
|
|
|
+ sealInfo, approvalInfo, approvalRecord, err := sealService.CheckApproveAuth(sealId, this.AdminWx)
|
|
|
if err != nil {
|
|
|
- this.FailWithMessage("获取审批失败!", "获取审批失败,Err:"+err.Error())
|
|
|
+ this.FailWithMessage("驳回审批失败!", "驳回审批失败,Err:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
- var approvalRecord *contract_approval_record.ContractApprovalRecord
|
|
|
- for _, tmpApprovalRecord := range approvalRecordList {
|
|
|
- if tmpApprovalRecord.NodeType == "check" && tmpApprovalRecord.ApproveUserId == this.AdminWx.AdminId {
|
|
|
- approvalRecord = tmpApprovalRecord
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if approvalRecord == nil {
|
|
|
- this.FailWithMessage("当前账号没有审批权限", "当前账号没有审批权限")
|
|
|
- }
|
|
|
- err = sealService.Approved(approvalRecord, this.AdminWx, req.Remark)
|
|
|
+ err = sealService.Approved(sealInfo, approvalInfo, approvalRecord, this.AdminWx, req.Remark)
|
|
|
if err != nil {
|
|
|
this.FailWithMessage("审核失败!", "审核失败,Err:"+err.Error())
|
|
|
return
|