Forráskód Böngészése

Merge branch 'crm1.0' into debug

Roc 3 éve
szülő
commit
2a0c9e8636

+ 29 - 0
controllers/contract.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	contractReq "hongze/hongze_mobile_admin/models/request/contract"
 	contractService "hongze/hongze_mobile_admin/services/contract"
+	"hongze/hongze_mobile_admin/utils"
 )
 
 //合同模块
@@ -37,3 +38,31 @@ func (this *ContractCommon) UploadCheckBackFile() {
 
 	this.OkWithMessage("上传成功")
 }
+
+// @Title 获取合同详情
+// @Description 获取合同详情接口
+// @Param   ContractId   query   int  true       "合同id"
+// @Success 200 {object} contract.ContractDetail
+// @router /detail [get]
+func (this *ContractCommon) Detail() {
+	//合同类型、产品类型、合同状态、更新时间、所选销售
+	//关键字:合同编号、客户名称,社会信用码
+	contractId, _ := this.GetInt("ContractId")
+	//合同id
+	if contractId <= 0 {
+		this.FailWithMessage("合同id必传!", "合同id必传!")
+		return
+	}
+	contractInfo, err := contractService.GetContractDetail(contractId)
+	if err != nil {
+		this.FailWithMessage("获取合同详情失败!", "获取合同详情失败,ERR:"+err.Error())
+		return
+	}
+
+	contractInfo.StartDateStr = contractInfo.StartDate.Format(utils.FormatDate)
+	contractInfo.EndDateStr = contractInfo.EndDate.Format(utils.FormatDate)
+	contractInfo.ModifyTimeStr = contractInfo.ModifyTime.Format(utils.FormatDateTime)
+	contractInfo.CreateTimeStr = contractInfo.CreateTime.Format(utils.FormatDateTime)
+
+	this.OkDetailed(contractInfo, "获取成功")
+}

+ 106 - 23
controllers/contract_approval.go

@@ -28,7 +28,7 @@ type ContractApprovalCommon struct {
 // @Param   Keyword   query   string  false       "搜索关键字"
 // @Param   ModifyStartTime   query   string  false       "服务更新时间的选择开始时间,格式:2021-05-23 00:00:00"
 // @Param   ModifyEndTime   query   string  false       "服务更新时间的选择结束时间,格式:2021-05-26 23:59:59"
-// @Success 200 {object} response.ContractApprovalListResp
+// @Success 200 {object} contract.ContractApprovalListResp
 // @router /list [get]
 func (this *ContractApprovalCommon) List() {
 	sysUser := this.AdminWx
@@ -205,10 +205,9 @@ func (this *ContractApprovalCommon) List() {
 // @Title 审批单详情
 // @Description 审批单详情接口
 // @Param   ContractApprovalId   query   int  false       "审批单id"
-// @Success 200 {object} response.ContractApprovalListResp
+// @Success 200 {object} contract.ContractDetailResp
 // @router /detail [get]
 func (this *ContractApprovalCommon) Detail() {
-
 	//审批单id
 	contractApprovalId, _ := this.GetInt("ContractApprovalId")
 
@@ -218,13 +217,67 @@ func (this *ContractApprovalCommon) Detail() {
 		this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
 		return
 	}
-	var contractDetail contract.ContractDetail
+	var contractDetail contractResp.ContractDetail
 	jsonErr := json.Unmarshal([]byte(contractApprovalInfo.ContractDetail), &contractDetail)
 	if jsonErr != nil {
 		this.FailWithMessage("审批合同数据转换失败!", "审批合同数据转换失败,Err:"+jsonErr.Error())
 		return
 	}
-	this.OkDetailed(contractDetail, "获取成功")
+
+	//合同详情
+	contractInfo, err := contract.GetContractById(contractApprovalInfo.ContractId)
+	if err != nil {
+		this.FailWithMessage("获取合同详情失败!", "获取合同详情失败,Err:"+err.Error())
+		return
+	}
+
+	//替换快照数据
+	contractDetail.Status = contractInfo.Status
+	contractDetail.FileUrl = contractInfo.FileUrl
+
+	//审批操作权限,上传签回文件权限
+	var contractOpButton contractResp.ContractOpButton
+
+	//审批流
+	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalId(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" {
+				contractOpButton.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])
+	}
+
+	uploadStatus := []string{"已审批", "已签回"}
+	if this.AdminWx.RoleTypeCode == utils.ROLE_TYPE_CODE_COMPLIANCE && strings.Contains(strings.Join(uploadStatus, ","), contractInfo.Status) {
+		contractOpButton.UploadFileButton = true
+	}
+	resp := contractResp.ContractDetailResp{
+		ContractDetail:   contractDetail,
+		FlowNodeList:     flowNodeListResp,
+		ContractOpButton: contractOpButton,
+	}
+	this.OkDetailed(resp, "获取成功")
 }
 
 // @Title 驳回审批
@@ -239,20 +292,35 @@ func (this *ContractApprovalCommon) Reject() {
 		this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
 		return
 	}
-	//审批id编号
-	contractApprovalRecordId := req.ContractApprovalRecordId
-	if contractApprovalRecordId <= 0 {
-		this.FailWithMessage("请传入审批流编号!", "请传入审批流编号")
+	//审批id编号
+	contractApprovalId := req.ApprovalId
+	if contractApprovalId <= 0 {
+		this.FailWithMessage("请传入审批单编号!", "请传入审批单编号!")
 		return
 	}
-
-	//获取审批流信息
-	contractApprovalRecord, err := contract_approval_record.GetContractApprovalRecordById(contractApprovalRecordId)
+	//审批单详情
+	approvalInfo, err := contract_approval.GetContractApprovalById(contractApprovalId)
+	if err != nil {
+		this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
+		return
+	}
+	//审批流
+	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, approvalInfo.CurrNodeId)
 	if err != nil {
-		this.FailWithMessage("获取审批流信息失败!", "获取审批流信息失败,Err:"+err.Error())
+		this.FailWithMessage("获取审批失败!", "获取审批失败,Err:"+err.Error())
 		return
 	}
-	err = contractService.Reject(contractApprovalRecord, this.AdminWx, req.Remark)
+	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 = contractService.Reject(approvalRecord, this.AdminWx, req.Remark)
 	if err != nil {
 		this.FailWithMessage("驳回审批失败!", "驳回审批失败,Err:"+err.Error())
 		return
@@ -273,20 +341,35 @@ func (this *ContractApprovalCommon) Approved() {
 		this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
 		return
 	}
-	//审批id编号
-	contractApprovalRecordId := req.ContractApprovalRecordId
-	if contractApprovalRecordId <= 0 {
-		this.FailWithMessage("请传入审批流编号!", "请传入审批流编号")
+	//审批id编号
+	contractApprovalId := req.ApprovalId
+	if contractApprovalId <= 0 {
+		this.FailWithMessage("请传入审批单编号!", "请传入审批单编号!")
 		return
 	}
-
-	//获取审批流信息
-	contractApprovalRecord, err := contract_approval_record.GetContractApprovalRecordById(contractApprovalRecordId)
+	//审批单详情
+	approvalInfo, err := contract_approval.GetContractApprovalById(contractApprovalId)
+	if err != nil {
+		this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
+		return
+	}
+	//审批流
+	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, approvalInfo.CurrNodeId)
 	if err != nil {
-		this.FailWithMessage("获取审批流信息失败!", "获取审批流信息失败,Err:"+err.Error())
+		this.FailWithMessage("获取审批失败!", "获取审批失败,Err:"+err.Error())
 		return
 	}
-	err = contractService.Approved(contractApprovalRecord, this.AdminWx, req.Remark)
+	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 = contractService.Approved(approvalRecord, this.AdminWx, req.Remark)
 	if err != nil {
 		this.FailWithMessage("审核失败!", "审核失败,Err:"+err.Error())
 		return

+ 48 - 18
controllers/seal_approval.go

@@ -214,20 +214,35 @@ func (this *SealApprovalCommon) Reject() {
 		this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
 		return
 	}
-	//审批id编号
-	contractApprovalRecordId := req.ContractApprovalRecordId
-	if contractApprovalRecordId <= 0 {
-		this.FailWithMessage("请传入审批流编号!", "请传入审批流编号")
+	//审批id编号
+	contractApprovalId := req.ApprovalId
+	if contractApprovalId <= 0 {
+		this.FailWithMessage("请传入审批单编号!", "请传入审批单编号!")
 		return
 	}
-
-	//获取审批流信息
-	contractApprovalRecord, err := contract_approval_record.GetContractApprovalRecordById(contractApprovalRecordId)
+	//审批单详情
+	approvalInfo, err := contract_approval.GetContractApprovalById(contractApprovalId)
+	if err != nil {
+		this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
+		return
+	}
+	//审批流
+	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, approvalInfo.CurrNodeId)
 	if err != nil {
-		this.FailWithMessage("获取审批流信息失败!", "获取审批流信息失败,Err:"+err.Error())
+		this.FailWithMessage("获取审批失败!", "获取审批失败,Err:"+err.Error())
 		return
 	}
-	err = contractService.Reject(contractApprovalRecord, this.AdminWx, req.Remark)
+	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 = contractService.Reject(approvalRecord, this.AdminWx, req.Remark)
 	if err != nil {
 		this.FailWithMessage("驳回审批失败!", "驳回审批失败,Err:"+err.Error())
 		return
@@ -248,20 +263,35 @@ func (this *SealApprovalCommon) Approved() {
 		this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
 		return
 	}
-	//审批id编号
-	contractApprovalRecordId := req.ContractApprovalRecordId
-	if contractApprovalRecordId <= 0 {
-		this.FailWithMessage("请传入审批流编号!", "请传入审批流编号")
+	//审批id编号
+	contractApprovalId := req.ApprovalId
+	if contractApprovalId <= 0 {
+		this.FailWithMessage("请传入审批单编号!", "请传入审批单编号!")
 		return
 	}
-
-	//获取审批流信息
-	contractApprovalRecord, err := contract_approval_record.GetContractApprovalRecordById(contractApprovalRecordId)
+	//审批单详情
+	approvalInfo, err := contract_approval.GetContractApprovalById(contractApprovalId)
+	if err != nil {
+		this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
+		return
+	}
+	//审批流
+	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, approvalInfo.CurrNodeId)
 	if err != nil {
-		this.FailWithMessage("获取审批流信息失败!", "获取审批流信息失败,Err:"+err.Error())
+		this.FailWithMessage("获取审批失败!", "获取审批失败,Err:"+err.Error())
 		return
 	}
-	err = contractService.Approved(contractApprovalRecord, this.AdminWx, req.Remark)
+	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 = contractService.Approved(approvalRecord, this.AdminWx, req.Remark)
 	if err != nil {
 		this.FailWithMessage("审核失败!", "审核失败,Err:"+err.Error())
 		return

+ 4 - 6
models/request/contract/contract_approval.go

@@ -2,14 +2,12 @@ package contract
 
 //驳回申请合同请求
 type RejectReq struct {
-	ContractApprovalRecordId int    `description:"审批流id"`
-	Remark                   string `description:"驳回理由"`
+	ApprovalId int    `description:"审批单id"`
+	Remark     string `description:"备注字段"`
 }
 
 //通过申请合同请求
 type ApprovedReq struct {
-	ContractApprovalRecordId int    `description:"审批流id"`
-	Remark                   string `description:"驳回理由"`
-	NextApproval             bool   `description:"是否需要下级批准,预留字段,一期用不到,二期加入合规审批流程的时候,合规审批操作后可能会用到"`
-	NextApprovalUserId       int    `description:"是否指定下级审批人,预留字段,一期用不到,二期加入合规审批流程的时候,合规审批操作后可能会用到"`
+	ApprovalId int    `description:"审批单id"`
+	Remark     string `description:"驳回理由"`
 }

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

@@ -14,8 +14,8 @@ type CompanyApprovalListResp struct {
 
 //审批单详情
 type CompanyApprovalDetailResp struct {
-	CompanyApprovalDetail *company_approval.CompanyApprovalList
-	FlowNodeList          [][]contract_approval_record.ContractApprovalRecord
+	CompanyApprovalDetail *company_approval.CompanyApprovalList               `description:"审批单详情"`
+	FlowNodeList          [][]contract_approval_record.ContractApprovalRecord `description:"审批流"`
 	CompanyPermissionResp
 }
 

+ 14 - 0
models/response/contract/contract.go

@@ -4,6 +4,7 @@ import (
 	"hongze/hongze_mobile_admin/models/custom/contract"
 	"hongze/hongze_mobile_admin/models/tables/company_contract"
 	"hongze/hongze_mobile_admin/models/tables/contract_approval"
+	"hongze/hongze_mobile_admin/models/tables/contract_approval_record"
 	"rdluck_tools/paging"
 	"time"
 )
@@ -30,6 +31,19 @@ type ContractApprovalListResp struct {
 	List   []*contract_approval.ContractApprovalList `description:"列表数据"`
 }
 
+//审批列表
+type ContractDetailResp struct {
+	ContractDetail   ContractDetail                                      `description:"审批单详情"`
+	FlowNodeList     [][]contract_approval_record.ContractApprovalRecord `description:"审批流"`
+	ContractOpButton ContractOpButton                                    `description:"操作权限"`
+}
+
+//合同操作按钮
+type ContractOpButton struct {
+	ApprovalButton   bool `description:"是否有审批权限"`
+	UploadFileButton bool `description:"是否有上传签回文件权限"`
+}
+
 //合同详情信息(包含服务信息等)
 type ContractDetail struct {
 	ContractId     int       `description:"合同唯一id"`

+ 9 - 1
models/tables/contract_approval_record/contract_approval_record.go

@@ -35,11 +35,19 @@ func GetContractApprovalRecordById(contractApprovalRecordId int) (contractApprov
 //根据审批单id获取所有审批流列表信息
 func GetContractApprovalRecordListByContractApprovalId(contractApprovalId int) (contractApprovalRecordList []*ContractApprovalRecord, err error) {
 	o := orm.NewOrm()
-	sql := `select * from contract_approval_record where contract_approval_id=? order by node_id asc`
+	sql := `select * from contract_approval_record where contract_approval_id=? order by node_id,contract_approval_record_id asc`
 	_, err = o.Raw(sql, contractApprovalId).QueryRows(&contractApprovalRecordList)
 	return
 }
 
+//根据审批单id获取所有审批流列表信息
+func GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, nodeId int) (contractApprovalRecordList []*ContractApprovalRecord, err error) {
+	o := orm.NewOrm()
+	sql := `select * from contract_approval_record where contract_approval_id=? and node_id=? order by node_id,contract_approval_record_id asc`
+	_, err = o.Raw(sql, contractApprovalId, nodeId).QueryRows(&contractApprovalRecordList)
+	return
+}
+
 //根据审批单id获取当前待审批的合同审批流信息
 func GetCurrContractApprovalRecordByContractId(contractApprovalId int) (contractApprovalRecordInfo *ContractApprovalRecord, err error) {
 	o := orm.NewOrm()

+ 10 - 0
routers/router.go

@@ -60,6 +60,16 @@ func init() {
 				&controllers.ContractApprovalCommon{},
 			),
 		),
+		web.NSNamespace("/seal",
+			web.NSInclude(
+				&controllers.SealCommon{},
+			),
+		),
+		web.NSNamespace("/seal_approval",
+			web.NSInclude(
+				&controllers.SealApprovalCommon{},
+			),
+		),
 	)
 	web.AddNamespace(ns)
 }