Prechádzať zdrojové kódy

feat:消息进入详情,调整消息进入审批单详情接口

Roc 3 rokov pred
rodič
commit
c5a3c89781

+ 90 - 0
controllers/contract_approval.go

@@ -205,9 +205,16 @@ func (this *ContractApprovalCommon) List() {
 // @Title 审批单详情
 // @Description 审批单详情接口
 // @Param   ContractApprovalId   query   int  false       "审批单id"
+// @Param   ContractApprovalRecordId   query   int  false       "审批流程单id"
 // @Success 200 {object} contract.ContractDetailResp
 // @router /detail [get]
 func (this *ContractApprovalCommon) Detail() {
+	//审批流程单id
+	contractApprovalRecordId, _ := this.GetInt("ContractApprovalRecordId")
+	if contractApprovalRecordId > 0 {
+		this.detailByApprovalRecordId(contractApprovalRecordId)
+		return
+	}
 	//审批单id
 	contractApprovalId, _ := this.GetInt("ContractApprovalId")
 
@@ -286,6 +293,89 @@ func (this *ContractApprovalCommon) Detail() {
 	this.OkDetailed(resp, "获取成功")
 }
 
+func (this *ContractApprovalCommon) detailByApprovalRecordId(approvalRecordId int) {
+	approvalRecordInfo, err := contract_approval_record.GetContractApprovalRecordById(approvalRecordId)
+	if err != nil {
+		this.FailWithMessage("获取审批流程单失败", "获取审批流程单失败,Err:"+err.Error())
+		return
+	}
+
+	//审批单详情
+	contractApprovalInfo, err := contract_approval.GetContractApprovalById(approvalRecordInfo.ContractApprovalId)
+	if err != nil {
+		this.FailWithMessage("获取审批单失败", "获取审批单失败,Err:"+err.Error())
+		return
+	}
+
+	var detail *contract.ContractDetail
+	jsonErr := json.Unmarshal([]byte(contractApprovalInfo.ContractDetail), detail)
+	if jsonErr != nil {
+		this.FailWithMessage("获取审批单失败", "审批合同数据转换失败,Err:"+jsonErr.Error())
+		return
+	}
+
+	//用印详情
+	contractInfo, err := contract.GetContractDetailById(contractApprovalInfo.ContractId)
+	if err != nil {
+		this.FailWithMessage("获取用印详情失败", "获取用印详情失败,Err:"+err.Error())
+		return
+	}
+
+	//替换快照数据
+	detail.Status = contractInfo.Status
+
+	//审批操作权限,上传签回文件权限
+	var opButton contractResp.OpButton
+
+	//审批流
+	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalId(approvalRecordInfo.ContractApprovalId)
+	if err != nil {
+		this.FailWithMessage("获取审批失败", "获取审批失败,Err:"+err.Error())
+		return
+	}
+	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" {
+				opButton.Approval = 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])
+	}
+
+	//上传签回文件权限
+	uploadStatus := []string{"已审批", "已签回"}
+	if this.AdminWx.RoleTypeCode == utils.ROLE_TYPE_CODE_COMPLIANCE && strings.Contains(strings.Join(uploadStatus, ","), contractInfo.Status) {
+		opButton.UploadFile = true
+	}
+
+	//作废权限
+	if (this.AdminWx.RoleTypeCode == utils.ROLE_TYPE_CODE_COMPLIANCE || this.AdminWx.AdminId == contractInfo.SellerId) && contractInfo.Status == "已审批" {
+		opButton.Invalid = true
+	}
+	resp := contractResp.ContractDetailResp{
+		ContractDetail: detail,
+		FlowNodeList:   flowNodeListResp,
+		OpButton:       opButton,
+	}
+	this.OkDetailed(resp, "获取成功")
+	return
+}
+
 // @Title 驳回审批
 // @Description 驳回审批接口
 // @Param	request	body contract.RejectReq true "type json string"

+ 79 - 0
controllers/seal.go

@@ -4,6 +4,8 @@ import (
 	"encoding/json"
 	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"
@@ -102,6 +104,83 @@ func (this *SealCommon) Edit() {
 	}, "发起重申成功")
 }
 
+// @Title 获取用印详情
+// @Description 获取用印详情接口
+// @Param   SealId   query   int  true       "用印id"
+// @Success 200 {object} seal.SealDetailResp
+// @router /detail [get]
+func (this *SealCommon) Detail() {
+	//合同类型、产品类型、合同状态、更新时间、所选销售
+	//关键字:合同编号、客户名称,社会信用码
+	sealId, _ := this.GetInt("SealId")
+	//用印id
+	if sealId <= 0 {
+		this.FailWithMessage("用印id必传!", "用印id必传!")
+		return
+	}
+	sealInfo, err := seal.GetSealInfoById(sealId)
+	if err != nil {
+		this.FailWithMessage("获取合同详情失败!", "获取合同详情失败,ERR:"+err.Error())
+		return
+	}
+
+	//审批流
+	flowNodeListResp := make([][]contract_approval_record.ContractApprovalRecord, 0)
+
+	//审批操作权限,上传签回文件权限
+	var opButton sealResp.OpButton
+
+	//查询最近一次审批单信息
+	lastApprovalInfo, err := contract_approval.GetLastContractApprovalByContractId(sealInfo.SealId, "seal")
+	if err != nil {
+		if err.Error() != utils.NotEmpty() {
+			this.FailWithMessage("获取最近一次审批单信息失败!", "获取最近一次审批单信息失败,ERR:"+err.Error())
+			return
+		}
+	}
+	if lastApprovalInfo != nil {
+		flowNodeMap := make(map[int][]contract_approval_record.ContractApprovalRecord, 0)
+		//审批流
+		approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalId(lastApprovalInfo.ContractApprovalId)
+		if err != nil {
+			this.FailWithMessage("获取审批失败!", "获取审批失败,Err:"+err.Error())
+			return
+		}
+		keySort := make([]int, 0)
+		for _, approvalRecord := range approvalRecordList {
+			//如果当前节点正好是该节点,同时审批单状态是待审批状态,然后当前账号又有权限,该账号也正是审批人,那么允许审批操作
+			if lastApprovalInfo.CurrNodeId == approvalRecord.NodeId && lastApprovalInfo.Status == "待审批" {
+				if this.AdminWx.AdminId == approvalRecord.ApproveUserId && approvalRecord.NodeType == "check" {
+					opButton.Approval = 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)
+			}
+		}
+		for _, key := range keySort {
+			flowNodeListResp = append(flowNodeListResp, flowNodeMap[key])
+		}
+
+		//作废权限
+		if (this.AdminWx.RoleTypeCode == utils.ROLE_TYPE_CODE_COMPLIANCE || this.AdminWx.AdminId == sealInfo.UserId) && sealInfo.Status == "已审批" {
+			opButton.Invalid = true
+		}
+	}
+	resp := sealResp.SealDetailResp{
+		SealDetail:   sealInfo,
+		FlowNodeList: flowNodeListResp,
+		OpButton:     opButton,
+	}
+	this.OkDetailed(resp, "获取成功")
+}
+
 // @Title 根据客户名称获取已存在系统中客户名称列表
 // @Description 获取合同详情接口
 // @Param   CompanyName   query   string  true       "客户名称"

+ 88 - 2
controllers/seal_approval.go

@@ -215,9 +215,17 @@ func (this *SealApprovalCommon) List() {
 // @Title 审批单详情
 // @Description 审批单详情接口
 // @Param   ContractApprovalId   query   int  false       "审批单id"
-// @Success 200 {object} contract.ContractDetailResp
+// @Param   ContractApprovalRecordId   query   int  false       "审批流程单id"
+// @Success 200 {object} seal.SealDetailResp
 // @router /detail [get]
 func (this *SealApprovalCommon) Detail() {
+	//审批流程单id
+	contractApprovalRecordId, _ := this.GetInt("ContractApprovalRecordId")
+	if contractApprovalRecordId > 0 {
+		this.detailByApprovalRecordId(contractApprovalRecordId)
+		return
+	}
+
 	//审批单id
 	contractApprovalId, _ := this.GetInt("ContractApprovalId")
 
@@ -259,7 +267,7 @@ func (this *SealApprovalCommon) Detail() {
 		//如果当前节点正好是该节点,同时审批单状态是待审批状态,然后当前账号又有权限,该账号也正是审批人,那么允许审批操作
 		if contractApprovalInfo.CurrNodeId == approvalRecord.NodeId && contractApprovalInfo.Status == "待审批" {
 			if this.AdminWx.AdminId == approvalRecord.ApproveUserId && approvalRecord.NodeType == "check" {
-				sealOpButton.ApprovalButton = true
+				sealOpButton.Approval = true
 			}
 		}
 		if tmpFlowNodeList, ok := flowNodeMap[approvalRecord.NodeId]; ok {
@@ -289,6 +297,84 @@ func (this *SealApprovalCommon) Detail() {
 	this.OkDetailed(resp, "获取成功")
 }
 
+func (this *SealApprovalCommon) detailByApprovalRecordId(approvalRecordId int) {
+	approvalRecordInfo, err := contract_approval_record.GetContractApprovalRecordById(approvalRecordId)
+	if err != nil {
+		this.FailWithMessage("获取审批流程单失败", "获取审批流程单失败,Err:"+err.Error())
+		return
+	}
+
+	//审批单详情
+	contractApprovalInfo, err := contract_approval.GetContractApprovalById(approvalRecordInfo.ContractApprovalId)
+	if err != nil {
+		this.FailWithMessage("获取审批单失败", "获取审批单失败,Err:"+err.Error())
+		return
+	}
+
+	var sealDetail *seal.Seal
+	jsonErr := json.Unmarshal([]byte(contractApprovalInfo.ContractDetail), sealDetail)
+	if jsonErr != nil {
+		this.FailWithMessage("获取审批单失败", "审批合同数据转换失败,Err:"+jsonErr.Error())
+		return
+	}
+
+	//用印详情
+	sealInfo, err := seal.GetSealInfoById(contractApprovalInfo.ContractId)
+	if err != nil {
+		this.FailWithMessage("获取用印详情失败", "获取用印详情失败,Err:"+err.Error())
+		return
+	}
+
+	//替换快照数据
+	sealDetail.Status = sealInfo.Status
+
+	//审批操作权限,上传签回文件权限
+	var sealOpButton sealResp.OpButton
+
+	//审批流
+	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalId(approvalRecordInfo.ContractApprovalId)
+	if err != nil {
+		this.FailWithMessage("获取审批失败", "获取审批失败,Err:"+err.Error())
+		return
+	}
+	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.Approval = 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 (this.AdminWx.RoleTypeCode == utils.ROLE_TYPE_CODE_COMPLIANCE || this.AdminWx.AdminId == sealInfo.UserId) && sealInfo.Status == "已审批" {
+		sealOpButton.Invalid = true
+	}
+	resp := sealResp.SealDetailResp{
+		SealDetail:   sealDetail,
+		FlowNodeList: flowNodeListResp,
+		OpButton:     sealOpButton,
+	}
+
+	this.OkDetailed(resp, "获取成功")
+	return
+}
+
 // @Title 驳回审批
 // @Description 驳回审批接口
 // @Param	request	body contract.RejectReq true "type json string"

+ 2 - 2
models/response/seal/seal.go

@@ -26,6 +26,6 @@ type SealDetailResp struct {
 
 //合同操作按钮
 type OpButton struct {
-	ApprovalButton bool `description:"是否有审批权限"`
-	Invalid        bool `description:"是否有作废合同权限"`
+	Approval bool `description:"是否有审批权限"`
+	Invalid  bool `description:"是否有作废合同权限"`
 }