Преглед на файлове

feat:1、新增根据名称搜索合同列表中的客户名称
2、新增根据名称搜索用印列表中的客户名称
3、新增/修改用印逻辑调整
4、用印审批流程调整

Roc преди 3 години
родител
ревизия
1caea5f7ce

+ 5 - 1
controllers/approval.go

@@ -269,10 +269,14 @@ func (this *ApprovalCommon) Detail() {
 	for _, node := range flowItem.NodeList {
 		flowNodeResp := make([]contract_approval_record.ContractApprovalRecord, 0)
 		for _, user := range node.UserList {
+			approveStatus := item.ApproveStatus
+			if approveStatus == "驳回" {
+				approveStatus = "已驳回"
+			}
 			approvalRecord := contract_approval_record.ContractApprovalRecord{
 				//ContractApprovalRecordId int       `orm:"column(contract_approval_record_id);pk"`
 				//ContractApprovalId       int       `orm:"column(contract_approval_id)";description:"审批单id"`
-				Status:              item.ApproveStatus,
+				Status:              approveStatus,
 				ApproveRemark:       item.ApproveRemark,
 				ApproveRoleTypeCode: user.RoleTypeCode,
 				ApproveUserId:       user.AdminId,

+ 27 - 0
controllers/contract.go

@@ -3,6 +3,7 @@ package controllers
 import (
 	"encoding/json"
 	contractReq "hongze/hongze_mobile_admin/models/request/contract"
+	"hongze/hongze_mobile_admin/models/tables/contract"
 	contractService "hongze/hongze_mobile_admin/services/contract"
 	"hongze/hongze_mobile_admin/utils"
 )
@@ -66,3 +67,29 @@ func (this *ContractCommon) Detail() {
 
 	this.OkDetailed(contractInfo, "获取成功")
 }
+
+// @Title 根据客户名称获取已存在合同系统中客户名称列表
+// @Description 获取合同详情接口
+// @Param   CompanyName   query   string  true       "客户名称"
+// @Success 200 {object} []string
+// @router /company_list [get]
+func (this *ContractCommon) CompanyList() {
+	companyName := this.GetString("CompanyName")
+	//合同id
+	if companyName == "" {
+		this.FailWithMessage("客户名称必传!", "客户名称必传!")
+		return
+	}
+	companyNameList := make([]string, 0)
+	list, err := contract.GetCompanyNameList(companyName)
+	if err != nil {
+		this.FailWithMessage("获取客户名称列表失败!", "获取客户名称列表失败,ERR:"+err.Error())
+		return
+	}
+
+	for _, v := range list {
+		companyNameList = append(companyNameList, v.CompanyName)
+	}
+
+	this.OkDetailed(companyNameList, "获取成功")
+}

+ 7 - 0
controllers/contract_approval.go

@@ -234,6 +234,7 @@ func (this *ContractApprovalCommon) Detail() {
 	//替换快照数据
 	contractDetail.Status = contractInfo.Status
 	contractDetail.FileUrl = contractInfo.FileUrl
+	contractDetail.CheckBackFileUrl = contractInfo.CheckBackFileUrl
 
 	//审批操作权限,上传签回文件权限
 	var contractOpButton contractResp.ContractOpButton
@@ -304,6 +305,9 @@ func (this *ContractApprovalCommon) Reject() {
 		this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
 		return
 	}
+	if approvalInfo.Status != "待审批" {
+		this.FailWithMessage("当前审批单状态异常,不允许审批", "当前审批单状态异常,不允许审批,审批单状态:"+approvalInfo.Status)
+	}
 	//审批流
 	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, approvalInfo.CurrNodeId)
 	if err != nil {
@@ -353,6 +357,9 @@ func (this *ContractApprovalCommon) Approved() {
 		this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
 		return
 	}
+	if approvalInfo.Status != "待审批" {
+		this.FailWithMessage("当前审批单状态异常,不允许审批", "当前审批单状态异常,不允许审批,审批单状态:"+approvalInfo.Status)
+	}
 	//审批流
 	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, approvalInfo.CurrNodeId)
 	if err != nil {

+ 41 - 24
controllers/seal.go

@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	sealReq "hongze/hongze_mobile_admin/models/request/seal"
 	sealResp "hongze/hongze_mobile_admin/models/response/seal"
-	"hongze/hongze_mobile_admin/services/seal"
+	"hongze/hongze_mobile_admin/models/tables/seal"
 	sealService "hongze/hongze_mobile_admin/services/seal"
 	"hongze/hongze_mobile_admin/utils"
 )
@@ -16,7 +16,7 @@ type SealCommon struct {
 
 // @Title 新增用印
 // @Description 新增用印接口
-// @Param	request	body sealReq.AddReq true "type json string"
+// @Param	request	body seal.AddReq true "type json string"
 // @Success Ret=200 新增用印成功
 // @router /add [post]
 func (this *SealCommon) Add() {
@@ -42,29 +42,25 @@ func (this *SealCommon) Add() {
 		this.FailWithMessage("缺少参数", err.Error())
 		return
 	}
-	sealInfo, err := seal.AddSeal(this.AdminWx.AdminId, this.AdminWx.RealName, req.Use, req.CompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrl)
+	sealInfo, err := sealService.AddSeal(this.AdminWx.AdminId, req.ContractId, this.AdminWx.RealName, req.Use, req.UseCompanyName, req.CompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrl)
 	if err != nil {
 		this.FailWithMessage("用印添加失败", err.Error())
 		return
 	}
 
-	msg := "添加用印成功"
-	if req.IsAudit {
-		err = sealService.Apply(sealInfo)
-		if err != nil {
-			this.FailWithMessage("发起用印审批失败", "发起用印审批失败,Err:"+err.Error())
-			return
-		}
-		msg = "发起用印审批成功"
+	err = sealService.Apply(sealInfo)
+	if err != nil {
+		this.FailWithMessage("发起用印审批失败", "发起用印审批失败,Err:"+err.Error())
+		return
 	}
 	this.OkDetailed(sealResp.AddSealResp{
 		SealId: sealInfo.SealId,
-	}, msg)
+	}, "发起用印审批成功")
 }
 
 // @Title 编辑用印
 // @Description 编辑用印接口
-// @Param	request	body request.EditContractReq true "type json string"
+// @Param	request	body seal.EditReq true "type json string"
 // @Success 200 {object} response.AddContractResp
 // @router /edit [post]
 func (this *SealCommon) Edit() {
@@ -91,22 +87,43 @@ func (this *SealCommon) Edit() {
 		this.FailWithMessage("合同编号必传!", "合同编号必传!")
 		return
 	}
-	sealInfo, err := seal.Edit(req.SealId, this.AdminWx.AdminId, this.AdminWx.RealName, req.Use, req.CompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrl)
+	sealInfo, err := sealService.Edit(req.SealId, this.AdminWx.AdminId, req.ContractId, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrl)
 	if err != nil {
 		this.FailWithMessage("修改合同失败!", "修改合同失败,Err:"+err.Error())
 		return
 	}
-	msg := "修改成功"
-	//如果发起重新审核,那么
-	if req.ReAudit {
-		tmpErr := sealService.Apply(sealInfo)
-		if tmpErr != nil {
-			this.FailWithMessage("发起重申失败!", "发起重申失败,Err:"+tmpErr.Error())
-			return
-		}
-		msg = "发起重申成功"
+	tmpErr := sealService.Apply(sealInfo)
+	if tmpErr != nil {
+		this.FailWithMessage("发起重申失败!", "发起重申失败,Err:"+tmpErr.Error())
+		return
 	}
 	this.OkDetailed(sealResp.AddSealResp{
 		SealId: sealInfo.SealId,
-	}, msg)
+	}, "发起重申成功")
+}
+
+// @Title 根据客户名称获取已存在系统中客户名称列表
+// @Description 获取合同详情接口
+// @Param   CompanyName   query   string  true       "客户名称"
+// @Success 200 {object} []string
+// @router /company_list [get]
+func (this *SealCommon) CompanyList() {
+	companyName := this.GetString("CompanyName")
+	//合同id
+	if companyName == "" {
+		this.FailWithMessage("客户名称必传!", "客户名称必传!")
+		return
+	}
+	companyNameList := make([]string, 0)
+	list, err := seal.GetCompanyNameList(companyName)
+	if err != nil {
+		this.FailWithMessage("获取客户名称列表失败!", "获取客户名称列表失败,ERR:"+err.Error())
+		return
+	}
+
+	for _, v := range list {
+		companyNameList = append(companyNameList, v.CompanyName)
+	}
+
+	this.OkDetailed(companyNameList, "获取成功")
 }

+ 11 - 7
controllers/seal_approval.go

@@ -6,7 +6,7 @@ import (
 	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"
-	contractService "hongze/hongze_mobile_admin/services/contract"
+	sealService "hongze/hongze_mobile_admin/services/seal"
 	"hongze/hongze_mobile_admin/utils"
 	"rdluck_tools/paging"
 	"strconv"
@@ -27,7 +27,7 @@ type SealApprovalCommon 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} seal.SealApprovalListResp
 // @router /list [get]
 func (this *SealApprovalCommon) List() {
 	sysUser := this.AdminWx
@@ -155,8 +155,6 @@ func (this *SealApprovalCommon) List() {
 
 		for i := 0; i < len(list); i++ {
 			item := list[i]
-			list[i].StartDateStr = item.StartDate.Format(utils.FormatDate)
-			list[i].EndDateStr = item.EndDate.Format(utils.FormatDate)
 			list[i].CreateTimeStr = item.CreateTime.Format(utils.FormatDateTime)
 			list[i].ModifyTimeStr = item.ModifyTime.Format(utils.FormatDateTime)
 
@@ -191,7 +189,7 @@ func (this *SealApprovalCommon) List() {
 			}
 
 			//合同状态(突然说要改成展示合同状态,那就根据业务需求,改成返回:合同状态咯)
-			list[i].Status = item.ContractStatus
+			list[i].Status = item.SealStatus
 		}
 	}
 
@@ -226,6 +224,9 @@ func (this *SealApprovalCommon) Reject() {
 		this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
 		return
 	}
+	if approvalInfo.Status != "待审批" {
+		this.FailWithMessage("当前审批单状态异常,不允许审批", "当前审批单状态异常,不允许审批,审批单状态:"+approvalInfo.Status)
+	}
 	//审批流
 	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, approvalInfo.CurrNodeId)
 	if err != nil {
@@ -242,7 +243,7 @@ func (this *SealApprovalCommon) Reject() {
 	if approvalRecord == nil {
 		this.FailWithMessage("当前账号没有审批权限", "当前账号没有审批权限")
 	}
-	err = contractService.Reject(approvalRecord, this.AdminWx, req.Remark)
+	err = sealService.Reject(approvalRecord, this.AdminWx, req.Remark)
 	if err != nil {
 		this.FailWithMessage("驳回审批失败!", "驳回审批失败,Err:"+err.Error())
 		return
@@ -275,6 +276,9 @@ func (this *SealApprovalCommon) Approved() {
 		this.FailWithMessage("获取审批单失败!", "获取审批单失败,Err:"+err.Error())
 		return
 	}
+	if approvalInfo.Status != "待审批" {
+		this.FailWithMessage("当前审批单状态异常,不允许审批", "当前审批单状态异常,不允许审批,审批单状态:"+approvalInfo.Status)
+	}
 	//审批流
 	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractApprovalIdAndNodeId(contractApprovalId, approvalInfo.CurrNodeId)
 	if err != nil {
@@ -291,7 +295,7 @@ func (this *SealApprovalCommon) Approved() {
 	if approvalRecord == nil {
 		this.FailWithMessage("当前账号没有审批权限", "当前账号没有审批权限")
 	}
-	err = contractService.Approved(approvalRecord, this.AdminWx, req.Remark)
+	err = sealService.Approved(approvalRecord, this.AdminWx, req.Remark)
 	if err != nil {
 		this.FailWithMessage("审核失败!", "审核失败,Err:"+err.Error())
 		return

+ 19 - 17
models/request/seal/sale.go

@@ -2,25 +2,27 @@ package seal
 
 //新增用印请求
 type AddReq struct {
-	Use         string `description:"用印用途,枚举值:'销售合同', '渠道合同', '付款通知函', '招投标', '战略合作协议';默认:销售合同"`
-	CompanyName string `description:"客户名称,甲方名称,长度32位"`
-	CreditCode  string `description:"社会统一信用代码,长度64位"`
-	ServiceType string `description:"业务类型,枚举值:'新增业务', '续约业务', '补充协议';默认:新增业务"`
-	SealType    string `description:"加盖印章类型,枚举值:'合同章', '公章', '法人章';默认:合同章"`
-	Remark      string `description:"备注,长度255位"`
-	FileUrl     string `description:"文件附件地址"`
-	IsAudit     bool   `description:"是否发起审批"`
+	ContractId     int    `description:"系统合同id"`
+	Use            string `description:"用印用途,枚举值:'销售合同', '渠道合同', '付款通知函', '招投标', '战略合作协议';默认:销售合同"`
+	CompanyName    string `description:"客户名称,甲方名称,长度32位"`
+	UseCompanyName string `description:"实际适用方客户名称,长度32位"`
+	CreditCode     string `description:"社会统一信用代码,长度64位"`
+	ServiceType    string `description:"业务类型,枚举值:'新增业务', '续约业务', '补充协议';默认:新增业务"`
+	SealType       string `description:"加盖印章类型,枚举值:'合同章', '公章', '法人章';默认:合同章"`
+	Remark         string `description:"备注,长度255位"`
+	FileUrl        string `description:"文件附件地址"`
 }
 
 //编辑用印请求
 type EditReq struct {
-	SealId      int    `description:"用印id"`
-	Use         string `description:"用印用途,枚举值:'销售合同', '渠道合同', '付款通知函', '招投标', '战略合作协议';默认:销售合同"`
-	CompanyName string `description:"客户名称,甲方名称,长度32位"`
-	CreditCode  string `description:"社会统一信用代码,长度64位"`
-	ServiceType string `description:"业务类型,枚举值:'新增业务', '续约业务', '补充协议';默认:新增业务"`
-	SealType    string `description:"加盖印章类型,枚举值:'合同章', '公章', '法人章';默认:合同章"`
-	Remark      string `description:"备注,长度255位"`
-	FileUrl     string `description:"文件附件地址"`
-	ReAudit     bool   `description:"是否重新发起审批"`
+	SealId         int    `description:"用印id"`
+	ContractId     int    `description:"系统合同id"`
+	Use            string `description:"用印用途,枚举值:'销售合同', '渠道合同', '付款通知函', '招投标', '战略合作协议';默认:销售合同"`
+	CompanyName    string `description:"客户名称,甲方名称,长度32位"`
+	UseCompanyName string `description:"实际适用方客户名称,长度32位"`
+	CreditCode     string `description:"社会统一信用代码,长度64位"`
+	ServiceType    string `description:"业务类型,枚举值:'新增业务', '续约业务', '补充协议';默认:新增业务"`
+	SealType       string `description:"加盖印章类型,枚举值:'合同章', '公章', '法人章';默认:合同章"`
+	Remark         string `description:"备注,长度255位"`
+	FileUrl        string `description:"文件附件地址"`
 }

+ 32 - 31
models/response/contract/contract.go

@@ -46,37 +46,38 @@ type ContractOpButton struct {
 
 //合同详情信息(包含服务信息等)
 type ContractDetail struct {
-	ContractId     int       `description:"合同唯一id"`
-	ContractCode   string    `description:"合同编号,长度32位"`
-	SellerId       int       `description:"所属销售id"`
-	SellerName     string    `description:"所属销售名称"`
-	ProductId      int       `description:"产品id,1:ficc;2:权益"`
-	ContractType   string    `description:"合同类型,枚举值:'新签合同','续约合同','补充协议'"`
-	Status         string    `description:"合同状态,枚举值:'待提交','待审批','已撤回','已审批','已驳回','已作废'"`
-	StartDate      time.Time `description:"合同开始日期"`
-	EndDate        time.Time `description:"合同结束日期"`
-	OriginalPrice  float64   `description:"合同原金额,优惠前的金额"`
-	Price          float64   `description:"实际金额,优惠后的金额"`
-	PayRemark      string    `description:"付款方式说明,长度255位"`
-	CompanyName    string    `description:"客户名称,甲方名称,长度32位"`
-	CreditCode     string    `description:"社会统一信用代码,长度64位"`
-	ProvinceId     int       `description:"省级id"`
-	Province       string    `description:"省级名称,长度16位"`
-	CityId         int       `description:"市级id"`
-	City           string    `description:"市级名称,长度32位"`
-	Address        string    `description:"详细地址"`
-	Fax            string    `description:"传真,长度32位"`
-	Phone          string    `description:"电话,长度32位"`
-	Postcode       string    `description:"邮编,长度16位"`
-	Remark         string    `description:"补充内容,长度255位"`
-	ModifyContent  string    `description:"修改内容"`
-	ApprovalRemark string    `description:"审核备注"`
-	FileUrl        string    `description:"合同文件地址"`
-	TemplateId     int       `description:"模板id"`
-	SourceId       int       `description:"来源合同id,默认是0;如果是通过其他合同复制过来的,那么就是原合同的id"`
-	IsDelete       int       `json:"-";description:"是否已经删除,0:未删除,1:已删除"`
-	ModifyTime     time.Time `description:"合同最近一次修改时间"`
-	CreateTime     time.Time `description:"合同添加时间"`
+	ContractId       int       `description:"合同唯一id"`
+	ContractCode     string    `description:"合同编号,长度32位"`
+	SellerId         int       `description:"所属销售id"`
+	SellerName       string    `description:"所属销售名称"`
+	ProductId        int       `description:"产品id,1:ficc;2:权益"`
+	ContractType     string    `description:"合同类型,枚举值:'新签合同','续约合同','补充协议'"`
+	Status           string    `description:"合同状态,枚举值:'待提交','待审批','已撤回','已审批','已驳回','已作废'"`
+	StartDate        time.Time `description:"合同开始日期"`
+	EndDate          time.Time `description:"合同结束日期"`
+	OriginalPrice    float64   `description:"合同原金额,优惠前的金额"`
+	Price            float64   `description:"实际金额,优惠后的金额"`
+	PayRemark        string    `description:"付款方式说明,长度255位"`
+	CompanyName      string    `description:"客户名称,甲方名称,长度32位"`
+	CreditCode       string    `description:"社会统一信用代码,长度64位"`
+	ProvinceId       int       `description:"省级id"`
+	Province         string    `description:"省级名称,长度16位"`
+	CityId           int       `description:"市级id"`
+	City             string    `description:"市级名称,长度32位"`
+	Address          string    `description:"详细地址"`
+	Fax              string    `description:"传真,长度32位"`
+	Phone            string    `description:"电话,长度32位"`
+	Postcode         string    `description:"邮编,长度16位"`
+	Remark           string    `description:"补充内容,长度255位"`
+	ModifyContent    string    `description:"修改内容"`
+	ApprovalRemark   string    `description:"审核备注"`
+	FileUrl          string    `description:"合同文件地址"`
+	CheckBackFileUrl string    `description:"签回合同文件地址"`
+	TemplateId       int       `description:"模板id"`
+	SourceId         int       `description:"来源合同id,默认是0;如果是通过其他合同复制过来的,那么就是原合同的id"`
+	IsDelete         int       `json:"-";description:"是否已经删除,0:未删除,1:已删除"`
+	ModifyTime       time.Time `description:"合同最近一次修改时间"`
+	CreateTime       time.Time `description:"合同添加时间"`
 
 	StartDateStr  string `description:"合同起始时间"`
 	EndDateStr    string `description:"合同结束时间"`

+ 1 - 1
models/tables/company_approval_message/company_approval_message.go

@@ -10,7 +10,7 @@ type CompanyApprovalMessage struct {
 	CreateUserId      int       `description:"申请者id"`
 	ReceiveUserId     int       `description:"审批者id"`
 	MessageStatus     int       `description:"消息状态:0未读,1:已读,2:作废"`
-	SourceType        int       `description:"消息来源类型,1:客户,2:合同"`
+	SourceType        int       `description:"消息来源类型,1:客户,2:合同,3:用印"`
 	Remark            string    `description:"备注信息"`
 	Content           string    `description:"消息内容"`
 	CompanyId         int       `description:"客户id"`

+ 44 - 31
models/tables/contract/contract.go

@@ -61,37 +61,38 @@ func GetContractById(contractId int) (contractInfo *Contract, err error) {
 
 //合同详情信息(包含服务信息等)
 type ContractDetail struct {
-	ContractId     int       `description:"合同唯一id"`
-	ContractCode   string    `description:"合同编号,长度32位"`
-	SellerId       int       `description:"所属销售id"`
-	SellerName     string    `description:"所属销售名称"`
-	ProductId      int       `description:"产品id,1:ficc;2:权益"`
-	ContractType   string    `description:"合同类型,枚举值:'新签合同','续约合同','补充协议'"`
-	Status         string    `description:"合同状态,枚举值:'待提交','待审批','已撤回','已审批','已驳回','已作废'"`
-	StartDate      time.Time `description:"合同开始日期"`
-	EndDate        time.Time `description:"合同结束日期"`
-	OriginalPrice  float64   `description:"合同原金额,优惠前的金额"`
-	Price          float64   `description:"实际金额,优惠后的金额"`
-	PayRemark      string    `description:"付款方式说明,长度255位"`
-	CompanyName    string    `description:"客户名称,甲方名称,长度32位"`
-	CreditCode     string    `description:"社会统一信用代码,长度64位"`
-	ProvinceId     int       `description:"省级id"`
-	Province       string    `description:"省级名称,长度16位"`
-	CityId         int       `description:"市级id"`
-	City           string    `description:"市级名称,长度32位"`
-	Address        string    `description:"详细地址"`
-	Fax            string    `description:"传真,长度32位"`
-	Phone          string    `description:"电话,长度32位"`
-	Postcode       string    `description:"邮编,长度16位"`
-	Remark         string    `description:"补充内容,长度255位"`
-	ModifyContent  string    `description:"修改内容"`
-	ApprovalRemark string    `description:"审核备注"`
-	FileUrl        string    `description:"合同文件地址"`
-	TemplateId     int       `description:"模板id"`
-	SourceId       int       `description:"来源合同id,默认是0;如果是通过其他合同复制过来的,那么就是原合同的id"`
-	IsDelete       int       `json:"-";description:"是否已经删除,0:未删除,1:已删除"`
-	ModifyTime     time.Time `description:"合同最近一次修改时间"`
-	CreateTime     time.Time `description:"合同添加时间"`
+	ContractId       int       `description:"合同唯一id"`
+	ContractCode     string    `description:"合同编号,长度32位"`
+	SellerId         int       `description:"所属销售id"`
+	SellerName       string    `description:"所属销售名称"`
+	ProductId        int       `description:"产品id,1:ficc;2:权益"`
+	ContractType     string    `description:"合同类型,枚举值:'新签合同','续约合同','补充协议'"`
+	Status           string    `description:"合同状态,枚举值:'待提交','待审批','已撤回','已审批','已驳回','已作废'"`
+	StartDate        time.Time `description:"合同开始日期"`
+	EndDate          time.Time `description:"合同结束日期"`
+	OriginalPrice    float64   `description:"合同原金额,优惠前的金额"`
+	Price            float64   `description:"实际金额,优惠后的金额"`
+	PayRemark        string    `description:"付款方式说明,长度255位"`
+	CompanyName      string    `description:"客户名称,甲方名称,长度32位"`
+	CreditCode       string    `description:"社会统一信用代码,长度64位"`
+	ProvinceId       int       `description:"省级id"`
+	Province         string    `description:"省级名称,长度16位"`
+	CityId           int       `description:"市级id"`
+	City             string    `description:"市级名称,长度32位"`
+	Address          string    `description:"详细地址"`
+	Fax              string    `description:"传真,长度32位"`
+	Phone            string    `description:"电话,长度32位"`
+	Postcode         string    `description:"邮编,长度16位"`
+	Remark           string    `description:"补充内容,长度255位"`
+	ModifyContent    string    `description:"修改内容"`
+	ApprovalRemark   string    `description:"审核备注"`
+	FileUrl          string    `description:"合同文件地址"`
+	CheckBackFileUrl string    `description:"签回合同文件地址"`
+	TemplateId       int       `description:"模板id"`
+	SourceId         int       `description:"来源合同id,默认是0;如果是通过其他合同复制过来的,那么就是原合同的id"`
+	IsDelete         int       `json:"-";description:"是否已经删除,0:未删除,1:已删除"`
+	ModifyTime       time.Time `description:"合同最近一次修改时间"`
+	CreateTime       time.Time `description:"合同添加时间"`
 
 	StartDateStr  string `description:"合同起始时间"`
 	EndDateStr    string `description:"合同结束时间"`
@@ -367,3 +368,15 @@ func GetCompanyContractCode(productId int) (companyCode string, err error) {
 	companyCode = "HZ" + companyType + time.Now().Format("20060102") + fmt.Sprintf("%03d", num)
 	return
 }
+
+type CompanyNameList struct {
+	CompanyName string `description:"客户名称,甲方名称,长度32位"`
+}
+
+//获取客户名称列表数据
+func GetCompanyNameList(name string) (list []*CompanyNameList, err error) {
+	o := orm.NewOrm()
+	sql := `select * from contract where company_name like '%` + name + `%' group by company_name order by modify_time desc `
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}

+ 8 - 12
models/tables/contract_approval/contract_approval.go

@@ -459,20 +459,16 @@ type SealApprovalList struct {
 	ContractApprovalRecordId int                     `description:"审批流id"`
 	ContractCode             string                  `description:"合同编号"`
 	Status                   string                  `description:"审批单状态,枚举值:待审批','已审批','已驳回','已撤回',默认待审批"`
-	ContractStatus           string                  `json:"-";description:"合同状态,枚举值:待审批','已审批','已驳回','已撤回',默认待审批"`
+	SealStatus               string                  `json:"-";description:"合同状态,枚举值:待审批','已审批','已驳回','已撤回',默认待审批"`
 	ApplyContent             string                  `description:"待审内容"`
-	ContractDetail           string                  `json:"-";description:"提交审批时的合同信息;合同快照"`
-	ContractInfo             contract.ContractDetail `json:"-";description:"提交审批时的合同信息;合同快照"`
+	ContractDetail           string                  `json:"-";description:"提交审批时的合同信息;用印快照"`
+	ContractInfo             contract.ContractDetail `json:"-";description:"提交审批时的合同信息;用印快照"`
 	ApproveRemark            string                  `description:"审核备注"`
-	ContractType             string                  `description:"合同类型"`
-	Price                    float64                 `description:"合同金额"`
+	SealType                 string                  `description:"用印类型"`
 	CompanyName              string                  `description:"客户名称"`
 	FileUrl                  string                  `description:"合同下载地址"`
-	SellerId                 int                     `description:"销售id"`
-	ProductId                int                     `description:"产品id,1:ficc;2:权益"`
-	SellerName               string                  `description:"销售名称"`
-	StartDate                time.Time               `description:"合同开始日期"`
-	EndDate                  time.Time               `description:"合同结束日期"`
+	UserId                   int                     `description:"申请人id"`
+	UserName                 string                  `description:"申请人名称"`
 	CreateTime               time.Time               `description:"发起审批的时间"`
 	ModifyTime               time.Time               `description:"最后一次修改的时间"`
 	ApproveTime              time.Time               `description:"审批时间"`
@@ -488,8 +484,8 @@ func GetSealApprovalList(childCondition, condition string, childPars, pars []int
 	o := orm.NewOrm()
 	sql := `
 SELECT
-a.contract_approval_id,a.contract_id,a.apply_content,a.approve_remark,a.create_time,a.modify_time,a.status,c.status contract_status,c.product_id,
-c.contract_type,c.start_date,c.end_date,c.price,c.company_name,c.seller_id,c.seller_name,c.file_url,c.contract_code from contract_approval a
+a.contract_approval_id,a.contract_id,a.apply_content,a.approve_remark,a.create_time,a.modify_time,a.status,c.status seal_status,
+c.seal_type,c.company_name,c.user_id,c.user_name,c.file_url,c.code from contract_approval a
 	join 
 	( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 `
 	sql += childCondition

+ 14 - 0
models/tables/seal/seal.go

@@ -15,6 +15,7 @@ type Seal struct {
 	UserName       string    `description:"申请人名称"`
 	Use            string    `description:"用印用途,枚举值:'销售合同', '渠道合同', '付款通知函', '招投标', '战略合作协议';默认:销售合同"`
 	CompanyName    string    `description:"客户名称,甲方名称,长度32位"`
+	UseCompanyName string    `description:"实际使用方客户名称,长度32位"`
 	CreditCode     string    `description:"社会统一信用代码,长度64位"`
 	ServiceType    string    `description:"业务类型,枚举值:'新增业务', '续约业务', '补充协议';默认:新增业务"`
 	SealType       string    `description:"加盖印章类型,枚举值:'合同章', '公章', '法人章';默认:合同章"`
@@ -22,6 +23,7 @@ type Seal struct {
 	Remark         string    `description:"补充内容,长度255位"`
 	ApprovalRemark string    `description:"审核备注"`
 	FileUrl        string    `description:"文件附件地址"`
+	ContractId     int       `description:"系统合同id"`
 	IsDelete       int       `description:"是否已经删除,0:未删除,1:已删除",json:"-"`
 	ModifyTime     time.Time `description:"最近一次修改时间"`
 	CreateTime     time.Time `description:"添加时间"`
@@ -85,3 +87,15 @@ func GetSealCode() (code string, err error) {
 	code = "HZ" + time.Now().Format("20060102") + fmt.Sprintf("%03d", num)
 	return
 }
+
+type CompanyNameList struct {
+	CompanyName string `description:"客户名称,甲方名称,长度32位"`
+}
+
+//获取客户名称列表数据
+func GetCompanyNameList(name string) (list []*CompanyNameList, err error) {
+	o := orm.NewOrm()
+	sql := `select * from seal where company_name like '%` + name + `%' group by company_name order by modify_time desc `
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}

+ 4 - 4
services/company_approval_message.go

@@ -22,7 +22,7 @@ func AddCompanyApprovalMessage(createUserId, receiveUserId, companyId, companyAp
 	msgItem := new(company_approval_message.CompanyApprovalMessage)
 	msgItem.CreateUserId = createUserId
 	msgItem.ReceiveUserId = receiveUserId
-	msgItem.MessageStatus = 0
+	msgItem.MessageStatus = 0 //消息状态:0未读,1:已读,2:作废
 	msgItem.Remark = remark
 	msgItem.Content = content
 	msgItem.CompanyId = companyId
@@ -30,9 +30,9 @@ func AddCompanyApprovalMessage(createUserId, receiveUserId, companyId, companyAp
 	msgItem.CreateTime = time.Now()
 	msgItem.ModifyTime = time.Now()
 	msgItem.CompanyApprovalId = companyApprovalId
-	msgItem.OperationStatus = 1
-	msgItem.MessageType = msgType
-	msgItem.SourceType = sourceType         //消息来源
+	msgItem.OperationStatus = 1             //消息状态:1:待审批,2:已审批
+	msgItem.MessageType = msgType           //1:申请消息,2:审批结果,3:消息通知
+	msgItem.SourceType = sourceType         //消息来源,1:客户,2:合同,3:用印
 	msgItem.ApprovalStatus = approvalStatus //审批状态,1:待审批,2:已审批,3:已驳回
 	err = company_approval_message.AddCompanyApprovalMessage(msgItem)
 	if mobile != "" {

+ 81 - 203
services/seal/approval.go

@@ -7,11 +7,8 @@ import (
 	"hongze/hongze_mobile_admin/models/custom"
 	"hongze/hongze_mobile_admin/models/tables/admin"
 	"hongze/hongze_mobile_admin/models/tables/approval_flow_node"
-	"hongze/hongze_mobile_admin/models/tables/company_approval_message"
-	"hongze/hongze_mobile_admin/models/tables/contract"
 	"hongze/hongze_mobile_admin/models/tables/contract_approval"
 	"hongze/hongze_mobile_admin/models/tables/contract_approval_record"
-	"hongze/hongze_mobile_admin/models/tables/contract_operation_record"
 	"hongze/hongze_mobile_admin/models/tables/seal"
 	"hongze/hongze_mobile_admin/services"
 	"hongze/hongze_mobile_admin/services/flow"
@@ -19,16 +16,19 @@ import (
 	"time"
 )
 
+var sourceType = 3
+
 //提交审批
 func Apply(sealInfo *seal.Seal) (err error) {
-	//合同状态判断
+	//用印状态判断
 	ignoreStatus := []string{"待提交", "已撤回", "已驳回"}
 	if !strings.Contains(strings.Join(ignoreStatus, ","), sealInfo.Status) {
 		err = errors.New("用印单状态异常,不允许提交审批,当前用印单状态:" + sealInfo.Status)
 		return
 	}
 
-	contractDetailByte, err := json.Marshal(sealInfo)
+	//将用印数据存为快照
+	sealDetailByte, err := json.Marshal(sealInfo)
 	if err != nil {
 		err = errors.New(fmt.Sprint("用印单异常,当前用印单数据格式化失败:", err))
 		return
@@ -40,14 +40,13 @@ func Apply(sealInfo *seal.Seal) (err error) {
 	if err != nil {
 		return
 	}
-	fmt.Println(flowItemInfo)
 
 	//校验是否存在待审批的审批单(其实没有多大意义,只是为了 异常数据校验)
-	contractApproval := &contract_approval.ContractApproval{
+	approval := &contract_approval.ContractApproval{
 		ContractId:     sealInfo.SealId,
 		Status:         "待审批",
 		ApplyContent:   sealInfo.Use,
-		ContractDetail: string(contractDetailByte),
+		ContractDetail: string(sealDetailByte),
 		ApplyUserId:    sealInfo.UserId,
 		ApplyUserName:  sealInfo.UserName,
 		FlowId:         flowItemInfo.FlowId,
@@ -56,12 +55,12 @@ func Apply(sealInfo *seal.Seal) (err error) {
 		ModifyTime:     time.Now(),
 		CreateTime:     time.Now(),
 	}
-	has, err := contractApproval.CheckPendingByContractId(sealInfo.SealId, "seal")
+	has, err := approval.CheckPendingByContractId(sealInfo.SealId, "seal")
 	if err != nil {
 		return
 	}
 	if has {
-		err = errors.New("合同异常,不允许提交审批,存在待审核的审批单")
+		err = errors.New("用印异常,不允许提交审批,存在待审核的审批单")
 		return
 	}
 	contractApprovalRecordList := make([]*contract_approval_record.ContractApprovalRecord, 0)
@@ -92,7 +91,7 @@ func Apply(sealInfo *seal.Seal) (err error) {
 
 	}
 
-	err = contractApproval.Apply(contractApproval, contractApprovalRecordList)
+	err = approval.Apply(approval, contractApprovalRecordList)
 	if err != nil {
 		return
 	}
@@ -100,149 +99,29 @@ func Apply(sealInfo *seal.Seal) (err error) {
 	//待办通知
 	{
 		//发送消息下级审批人
-		go messageToNodeUser(contractApprovalRecordList[0].NodeId, contractApproval.ApplyUserId, contractApproval.ContractApprovalId, 1, 1, sealInfo.CompanyName, sealInfo.Use)
+		go messageToNodeUser(contractApprovalRecordList[0].NodeId, approval.ApplyUserId, approval.ContractApprovalId, 1, 1, sealInfo.CompanyName, sealInfo.Use)
 
 		//发送消息给所有的抄送人
-		go messageToAllCcUser(contractApproval.ApplyUserId, contractApproval.ContractApprovalId, 1, 1, sealInfo.CompanyName, sealInfo.Use)
+		go messageToAllCcUser(approval.ApplyUserId, approval.ContractApprovalId, 1, 1, sealInfo.CompanyName, sealInfo.Use)
 	}
 	return
 }
 
-//撤销合同
-func CancelApplyByContract(contractInfo *contract.Contract, opUserId int) (err error) {
-	if contractInfo == nil {
-		err = errors.New("审批流异常,没有审批流信息")
-		return
-	}
-
-	//合同状态判断
-	if contractInfo.Status != "待审批" {
-		err = errors.New("合同状态异常,不允许撤回申请,当前合同状态:" + contractInfo.Status)
-		return
-	}
-
-	//校验操作人与合同申请人是否同一人
-	if contractInfo.SellerId != opUserId {
-		err = errors.New("操作人异常,不允许撤回非本人提交的申请:" + contractInfo.Status)
-		return
-	}
-
-	//获取最近一次待审批的审批单信息
-	contractApproval, err := contract_approval.GetLastPendingContractApprovalByContractId(contractInfo.ContractId)
-	if err != nil {
-		return
-	}
-	//获取当前待审批的审批流信息
-	contractApprovalRecord, err := contract_approval_record.GetCurrContractApprovalRecordByContractId(contractApproval.ContractApprovalId)
-	if err != nil {
-		return
-	}
-	//判断当前节点是否存在上级节点,如果存在,那么说明
-	if contractApprovalRecord.PrevNodeId > 0 {
-		err = errors.New("合同已存在审批操作,不允许撤回申请")
-		return
-	}
-
-	//获取当前审批单中所有待审批的流程流
-	contractApprovalRecordList, err := contract_approval_record.GetPendingContractApprovalRecordListByContractId(contractApproval.ContractApprovalId, contractApprovalRecord.NodeId)
-	if err != nil {
-		return
-	}
-
-	//撤回审批流
-	err = contractApproval.Cancel(contractApproval, contractApprovalRecordList)
-	if err != nil {
-		return
-	}
-
-	//添加操作日志
-	remark := "撤回申请"
-	_ = contract_operation_record.AddContractOperationRecord(contractInfo.ContractId, contractInfo.SellerId, contractApprovalRecord.ContractApprovalRecordId, "cancel_apply", contractInfo.SellerName, remark)
-
-	//作废原有消息
-	for _, contractApprovalRecord := range contractApprovalRecordList {
-		go company_approval_message.CancelCompanyApprovalMessage(contractApprovalRecord.ContractApprovalRecordId, 2)
-	}
-
-	return
-}
-
-//撤回审批单
-func CancelApply(contractApprovalRecord *contract_approval_record.ContractApprovalRecord, opUserId int) (err error) {
-	if contractApprovalRecord == nil {
-		err = errors.New("审批流异常,没有审批流信息")
-		return
-	}
-
-	//审批流状态判断
-	if contractApprovalRecord.Status != "待审批" {
-		err = errors.New("审批流状态异常,不允许撤回申请,当前审批流状态:" + contractApprovalRecord.Status)
-		return
-	}
-
-	//获取审批单详情
-	contractApproval, err := contract_approval.GetContractApprovalById(contractApprovalRecord.ContractApprovalId)
-	if err != nil {
-		return
-	}
-
-	//审批单状态判断
-	if contractApproval.Status != "待审批" {
-		err = errors.New("审批单状态异常,不允许撤回申请,当前审批单状态:" + contractApproval.Status)
-		return
-	}
-
-	//获取合同信息
-	contractInfo, err := contract.GetContractById(contractApproval.ContractId)
-	if err != nil {
-		return
-	}
-	//合同状态判断
-	if contractInfo.Status != "待审批" {
-		err = errors.New("合同状态异常,不允许撤回申请,当前合同状态:" + contractInfo.Status)
-		return
-	}
-
-	//校验操作人与合同申请人是否同一人
-	if contractInfo.SellerId != opUserId {
-		err = errors.New("操作人异常,不允许撤回非本人提交的申请:" + contractInfo.Status)
-		return
-	}
-	//获取当前审批单中所有待审批的流程流
-	contractApprovalRecordList, err := contract_approval_record.GetPendingContractApprovalRecordListByContractId(contractApproval.ContractApprovalId, contractApprovalRecord.NodeId)
-	if err != nil {
-		return
-	}
-	err = contractApproval.Cancel(contractApproval, contractApprovalRecordList)
-	if err != nil {
-		return
-	}
-
-	//添加操作日志
-	remark := "撤回申请"
-	_ = contract_operation_record.AddContractOperationRecord(contractInfo.ContractId, contractInfo.SellerId, contractApprovalRecord.ContractApprovalRecordId, "cancel_apply", contractInfo.SellerName, remark)
-
-	//作废原有消息
-	go company_approval_message.CancelCompanyApprovalMessage(contractApprovalRecord.ContractApprovalRecordId, 2)
-
-	return
-}
-
 //驳回审批
-func Reject(contractApprovalRecord *contract_approval_record.ContractApprovalRecord, opUser *custom.AdminWx, rejectRemark string) (err error) {
-	if contractApprovalRecord == nil {
+func Reject(approvalRecord *contract_approval_record.ContractApprovalRecord, opUser *custom.AdminWx, rejectRemark string) (err error) {
+	if approvalRecord == nil {
 		err = errors.New("审批流异常,没有审批流信息")
 		return
 	}
 
 	//审批流状态判断
-	if contractApprovalRecord.Status != "待审批" {
-		err = errors.New("审批流状态异常,不允许驳回申请,当前审批流状态:" + contractApprovalRecord.Status)
+	if approvalRecord.Status != "待审批" {
+		err = errors.New("审批流状态异常,不允许驳回申请,当前审批流状态:" + approvalRecord.Status)
 		return
 	}
 
 	//判断是否审批类型,如果不是审批类型,那么就没有审批权限
-	if contractApprovalRecord.NodeType != "check" {
+	if approvalRecord.NodeType != "check" {
 		err = errors.New("当前账号没有审批权限")
 		return
 	}
@@ -252,137 +131,136 @@ func Reject(contractApprovalRecord *contract_approval_record.ContractApprovalRec
 	opUserName := opUser.RealName
 
 	//操作权限校验
-	if opUser.RoleTypeCode != contractApprovalRecord.ApproveRoleTypeCode {
+	if opUser.RoleTypeCode != approvalRecord.ApproveRoleTypeCode {
 		err = errors.New("当前账号没有审批权限")
 		return
 	}
-	if contractApprovalRecord.ApproveUserId > 0 && contractApprovalRecord.ApproveUserId != opUserId {
+	if approvalRecord.ApproveUserId > 0 && approvalRecord.ApproveUserId != opUserId {
 		err = errors.New("当前账号没有审批权限,需要指定人操作")
 		return
 	}
 
 	//获取审批单详情
-	contractApproval, err := contract_approval.GetContractApprovalById(contractApprovalRecord.ContractApprovalId)
+	approvalInfo, err := contract_approval.GetContractApprovalById(approvalRecord.ContractApprovalId)
 	if err != nil {
 		return
 	}
 
 	//审批单状态判断
-	if contractApproval.Status != "待审批" {
-		err = errors.New("审批单状态异常,不允许驳回申请,当前审批单状态:" + contractApproval.Status)
+	if approvalInfo.Status != "待审批" {
+		err = errors.New("审批单状态异常,不允许驳回申请,当前审批单状态:" + approvalInfo.Status)
 		return
 	}
 
-	//获取合同信息
-	contractInfo, err := contract.GetContractById(contractApproval.ContractId)
+	//获取用印信息
+	sealInfo, err := seal.GetSealInfoById(approvalInfo.ContractId)
 	if err != nil {
 		return
 	}
-	//合同状态判断
-	if contractInfo.Status != "待审批" {
-		err = errors.New("合同状态异常,不允许驳回申请,当前合同状态:" + contractInfo.Status)
+	//用印状态判断
+	if sealInfo.Status != "待审批" {
+		err = errors.New("用印状态异常,不允许驳回申请,当前用印状态:" + sealInfo.Status)
 		return
 	}
-	err = contractApproval.Reject(contractApproval, contractApprovalRecord, opUserId, opUserName, rejectRemark)
+	err = approvalInfo.Reject(approvalInfo, approvalRecord, opUserId, opUserName, rejectRemark)
 	if err != nil {
 		return
 	}
 
 	//添加操作日志
-	remark := "驳回申请"
-	_ = contract_operation_record.AddContractOperationRecord(contractInfo.ContractId, opUserId, contractApprovalRecord.ContractApprovalRecordId, "reject", opUserName, remark)
+	//remark := "驳回申请"
+	//_ = contract_operation_record.AddContractOperationRecord(contractInfo.ContractId, opUserId, approvalRecord.ContractApprovalRecordId, "reject", opUserName, remark)
 
 	//待办通知
 	{
-		content := contractInfo.CompanyName + " 合同模板已驳回"
-		approvalSysUser, _ := admin.GetAdminById(contractInfo.SellerId)
-		go services.AddCompanyApprovalMessage(opUserId, contractInfo.SellerId, 0, contractApprovalRecord.ContractApprovalRecordId, 2, 2, 3, contractInfo.CompanyName, content, content, approvalSysUser.Mobile)
+		content := sealInfo.CompanyName + " 用印已驳回"
+		approvalSysUser, _ := admin.GetAdminById(sealInfo.UserId)
+		go services.AddCompanyApprovalMessage(opUserId, sealInfo.UserId, 0, approvalRecord.ContractApprovalRecordId, 2, 2, 3, sealInfo.CompanyName, content, content, approvalSysUser.Mobile)
 
 		//发送消息给所有的抄送人
-		go messageToAllCcUser(opUserId, contractApprovalRecord.ContractApprovalId, 2, 3, contractInfo.CompanyName, content)
+		go messageToAllCcUser(opUserId, approvalRecord.ContractApprovalId, 2, 3, sealInfo.CompanyName, content)
 	}
 	return
 }
 
 //审批通过
-func Approved(contractApprovalRecord *contract_approval_record.ContractApprovalRecord, opUser *custom.AdminWx, approvedRemark string) (err error) {
-	if contractApprovalRecord == nil {
+func Approved(approvalRecord *contract_approval_record.ContractApprovalRecord, opUser *custom.AdminWx, approvedRemark string) (err error) {
+	if approvalRecord == nil {
 		err = errors.New("审批流异常,没有审批流信息")
 		return
 	}
 
 	//审批流状态判断
-	if contractApprovalRecord.Status != "待审批" {
-		err = errors.New("审批流状态异常,不允许审批,当前审批流状态:" + contractApprovalRecord.Status)
+	if approvalRecord.Status != "待审批" {
+		err = errors.New("审批流状态异常,不允许审批,当前审批流状态:" + approvalRecord.Status)
 		return
 	}
 
 	//判断是否审批类型,如果不是审批类型,那么就没有审批权限
-	if contractApprovalRecord.NodeType != "check" {
+	if approvalRecord.NodeType != "check" {
 		err = errors.New("当前账号没有审批权限")
 		return
 	}
 
 	//操作人
 	opUserId := opUser.AdminId
-	opUserName := opUser.RealName
+	//opUserName := opUser.RealName
 	//操作权限校验
-	if opUser.RoleTypeCode != contractApprovalRecord.ApproveRoleTypeCode {
+	if opUser.RoleTypeCode != approvalRecord.ApproveRoleTypeCode {
 		err = errors.New("当前账号没有审批权限")
 		return
 	}
-	if contractApprovalRecord.ApproveUserId > 0 && contractApprovalRecord.ApproveUserId != opUserId {
+	if approvalRecord.ApproveUserId > 0 && approvalRecord.ApproveUserId != opUserId {
 		err = errors.New("当前账号没有审批权限,需要指定人操作")
 		return
 	}
 
 	//获取审批单详情
-	contractApproval, err := contract_approval.GetContractApprovalById(contractApprovalRecord.ContractApprovalId)
+	approvalInfo, err := contract_approval.GetContractApprovalById(approvalRecord.ContractApprovalId)
 	if err != nil {
 		return
 	}
 
 	//审批单状态判断
-	if contractApproval.Status != "待审批" {
-		err = errors.New("审批单状态异常,不允许审批,当前审批单状态:" + contractApproval.Status)
+	if approvalInfo.Status != "待审批" {
+		err = errors.New("审批单状态异常,不允许审批,当前审批单状态:" + approvalInfo.Status)
 		return
 	}
 
-	//获取合同信息
-	contractInfo, err := contract.GetContractById(contractApproval.ContractId)
+	//获取用印信息
+	sealInfo, err := seal.GetSealInfoById(approvalInfo.ContractId)
 	if err != nil {
 		return
 	}
-	//合同状态判断
-	if contractInfo.Status != "待审批" {
-		err = errors.New("合同状态异常,不允许审批,当前合同状态:" + contractInfo.Status)
+	//用印状态判断
+	if sealInfo.Status != "待审批" {
+		err = errors.New("用印状态异常,不允许审批,当前用印状态:" + sealInfo.Status)
 		return
 	}
 
-	//if contractApprovalRecord
-	err = contractApproval.Approved(contractApproval, contractApprovalRecord, approvedRemark)
+	err = approvalInfo.Approved(approvalInfo, approvalRecord, approvedRemark)
 	if err != nil {
 		return
 	}
 
 	//添加操作日志
-	remark := "审批通过"
-	_ = contract_operation_record.AddContractOperationRecord(contractInfo.ContractId, opUserId, contractApprovalRecord.ContractApprovalRecordId, "approval", opUserName, remark)
+	//remark := "审批通过"
+	//_ = contract_operation_record.AddContractOperationRecord(contractInfo.ContractId, opUserId, approvalRecord.ContractApprovalRecordId, "approval", opUserName, remark)
 
 	//发送信息给所有抄送人
-	content := contractInfo.CompanyName + " 合同模板已审核"
-	go messageToAllCcUser(opUserId, contractApprovalRecord.ContractApprovalId, 2, 2, contractInfo.CompanyName, content)
-	//如果下一个节点属于结束节点,那么通知对应的销售,同时,异步生成合同pdf
-	if contractApprovalRecord.NextNodeId == 0 {
+	content := sealInfo.CompanyName + " 用印已审核"
+	go messageToAllCcUser(opUserId, approvalRecord.ContractApprovalId, 2, 2, sealInfo.CompanyName, content)
+	//如果下一个节点属于结束节点,那么通知对应的销售
+	if approvalRecord.NextNodeId == 0 {
 		//待办通知(通知销售已经审核通过了)
 		{
-			content := contractInfo.CompanyName + " 合同模板已审核"
-			approvalSysUser, _ := admin.GetAdminById(contractInfo.SellerId)
-			go services.AddCompanyApprovalMessage(opUserId, contractInfo.SellerId, 0, contractApprovalRecord.ContractApprovalRecordId, 2, 2, 2, contractInfo.CompanyName, content, content, approvalSysUser.Mobile)
+			content := sealInfo.CompanyName + " 用印已审核"
+			approvalSysUser, _ := admin.GetAdminById(sealInfo.UserId)
+			go services.AddCompanyApprovalMessage(opUserId, sealInfo.UserId, 0, approvalRecord.ContractApprovalRecordId, 2, 2, 2, sealInfo.CompanyName, content, content, approvalSysUser.Mobile)
 		}
 	} else {
 		//获取下级节点信息
-		flowNodeInfo, tmpErr := approval_flow_node.GetByNodeId(contractApprovalRecord.NextNodeId)
+		flowNodeInfo, tmpErr := approval_flow_node.GetByNodeId(approvalRecord.NextNodeId)
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -390,10 +268,10 @@ func Approved(contractApprovalRecord *contract_approval_record.ContractApprovalR
 
 		//如果该级节点是抄送类型,那么需要将该节点给处理掉
 		if flowNodeInfo.NodeType == "cc" {
-			go approvedByCc(approvedRemark, contractApprovalRecord)
+			go approvedByCc(approvedRemark, approvalRecord)
 		} else {
 			//发送消息下级审批人
-			go messageToNodeUser(contractApprovalRecord.NextNodeId, contractInfo.SellerId, contractApproval.ContractApprovalId, 1, 1, contractInfo.CompanyName, content)
+			go messageToNodeUser(approvalRecord.NextNodeId, sealInfo.UserId, approvalInfo.ContractApprovalId, 1, 1, sealInfo.CompanyName, content)
 		}
 	}
 
@@ -401,54 +279,54 @@ func Approved(contractApprovalRecord *contract_approval_record.ContractApprovalR
 }
 
 //审批通过(抄送节点)
-func approvedByCc(approvedRemark string, sourceContractApprovalRecord *contract_approval_record.ContractApprovalRecord) (err error) {
+func approvedByCc(approvedRemark string, sourceApprovalRecord *contract_approval_record.ContractApprovalRecord) (err error) {
 	//下个流程节点id
 	nextNodeId := 0
 	//获取审批单中抄送节点的所有数据列表
-	contractApprovalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractIdAndNode(sourceContractApprovalRecord.ContractApprovalId, sourceContractApprovalRecord.NextNodeId)
+	approvalRecordList, err := contract_approval_record.GetContractApprovalRecordListByContractIdAndNode(sourceApprovalRecord.ContractApprovalId, sourceApprovalRecord.NextNodeId)
 	if err != nil {
 		return
 	}
 	//遍历所有的抄送单
-	for _, contractApprovalRecord := range contractApprovalRecordList {
-		nextNodeId = contractApprovalRecord.NextNodeId
+	for _, approvalRecord := range approvalRecordList {
+		nextNodeId = approvalRecord.NextNodeId
 		//审批流状态判断
-		if contractApprovalRecord.Status != "待审批" {
-			err = errors.New("审批流状态异常,不允许审批,当前审批流状态:" + contractApprovalRecord.Status)
+		if approvalRecord.Status != "待审批" {
+			err = errors.New("审批流状态异常,不允许审批,当前审批流状态:" + approvalRecord.Status)
 			return
 		}
 		//判断是否审批类型,如果不是审批类型,那么就没有审批权限
-		if contractApprovalRecord.NodeType != "cc" {
+		if approvalRecord.NodeType != "cc" {
 			err = errors.New("当前账号不是抄送权限")
 			return
 		}
 	}
 
 	//获取审批单详情
-	contractApproval, err := contract_approval.GetContractApprovalById(sourceContractApprovalRecord.ContractApprovalId)
+	approvalInfo, err := contract_approval.GetContractApprovalById(sourceApprovalRecord.ContractApprovalId)
 	if err != nil {
 		return
 	}
 
-	//获取合同信息
-	contractInfo, err := contract.GetContractById(contractApproval.ContractId)
+	//获取用印信息
+	sealInfo, err := seal.GetSealInfoById(approvalInfo.ContractId)
 	if err != nil {
 		return
 	}
 
 	//if contractApprovalRecord
-	err = contractApproval.ApprovedByCc(contractApproval, contractApprovalRecordList, approvedRemark, nextNodeId)
+	err = approvalInfo.ApprovedByCc(approvalInfo, approvalRecordList, approvedRemark, nextNodeId)
 	if err != nil {
 		return
 	}
 
-	//如果下一个节点属于结束节点,那么通知对应的销售,同时,异步生成合同pdf
+	//如果下一个节点属于结束节点,那么通知对应的销售
 	if nextNodeId == 0 {
 		//待办通知
 		{
-			content := contractInfo.CompanyName + " 合同模板已审核"
-			approvalSysUser, _ := admin.GetAdminById(contractInfo.SellerId)
-			go services.AddCompanyApprovalMessage(sourceContractApprovalRecord.ApproveUserId, contractInfo.SellerId, 0, sourceContractApprovalRecord.ContractApprovalRecordId, 2, 2, 2, contractInfo.CompanyName, content, content, approvalSysUser.Mobile)
+			content := sealInfo.CompanyName + " 用印已审核"
+			approvalSysUser, _ := admin.GetAdminById(sealInfo.UserId)
+			go services.AddCompanyApprovalMessage(sourceApprovalRecord.ApproveUserId, sealInfo.UserId, 0, sourceApprovalRecord.ContractApprovalRecordId, 2, 2, 2, sealInfo.CompanyName, content, content, approvalSysUser.Mobile)
 		}
 	} else {
 		//获取下级节点信息
@@ -459,11 +337,11 @@ func approvedByCc(approvedRemark string, sourceContractApprovalRecord *contract_
 		}
 		//如果下级节点是抄送类型,那么还是需要处理抄送节点逻辑
 		if flowNodeInfo.NodeType == "cc" {
-			go approvedByCc(approvedRemark, sourceContractApprovalRecord)
+			go approvedByCc(approvedRemark, sourceApprovalRecord)
 		} else {
 			//如果下级级节点是审批类型
 			//发送消息下级审批人
-			go messageToNodeUser(nextNodeId, contractInfo.SellerId, contractApproval.ContractApprovalId, 1, 1, contractInfo.CompanyName, contractApproval.ApplyContent)
+			go messageToNodeUser(nextNodeId, sealInfo.UserId, approvalInfo.ContractApprovalId, 1, 1, sealInfo.CompanyName, approvalInfo.ApplyContent)
 		}
 	}
 
@@ -516,7 +394,7 @@ func messageToUser(contractApprovalRecordList []*contract_approval_record.Contra
 		}
 		//接收人,就是审批记录里面的待审核人(抄送人)
 		receiveUserId := contractApprovalRecord.ApproveUserId
-		go services.AddCompanyApprovalMessage(createUserId, receiveUserId, 0, contractApprovalRecord.ContractApprovalRecordId, messageType, 2, approvalStatus, companyName, content, content, sysUserMobile)
+		go services.AddCompanyApprovalMessage(createUserId, receiveUserId, 0, contractApprovalRecord.ContractApprovalRecordId, messageType, sourceType, approvalStatus, companyName, content, content, sysUserMobile)
 	}
 	return
 }

+ 19 - 15
services/seal/seal.go

@@ -10,7 +10,7 @@ import (
 )
 
 //添加用印
-func AddSeal(userId int, userName, use, companyName, creditCode, serviceType, sealType, remark, fileUrl string) (sealInfo *seal.Seal, err error) {
+func AddSeal(userId, contractId int, userName, use, useCompanyName, companyName, creditCode, serviceType, sealType, remark, fileUrl string) (sealInfo *seal.Seal, err error) {
 	useList := []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议"}
 	serviceTypeList := []string{"新增业务", "续约业务", "补充协议"}
 	sealTypeList := []string{"合同章", "公章", "法人章"}
@@ -32,26 +32,28 @@ func AddSeal(userId int, userName, use, companyName, creditCode, serviceType, se
 		return
 	}
 	sealInfo = &seal.Seal{
-		Code:        sealCode,
-		UserId:      userId,
-		UserName:    userName,
-		Use:         use,
-		CompanyName: companyName,
-		CreditCode:  creditCode,
-		ServiceType: serviceType,
-		SealType:    sealType,
-		Status:      "待提交",
-		Remark:      remark,
-		FileUrl:     fileUrl,
-		ModifyTime:  time.Now(),
-		CreateTime:  time.Now(),
+		Code:           sealCode,
+		UserId:         userId,
+		UserName:       userName,
+		Use:            use,
+		CompanyName:    companyName,
+		UseCompanyName: useCompanyName,
+		CreditCode:     creditCode,
+		ServiceType:    serviceType,
+		SealType:       sealType,
+		Status:         "待提交",
+		Remark:         remark,
+		FileUrl:        fileUrl,
+		ContractId:     contractId,
+		ModifyTime:     time.Now(),
+		CreateTime:     time.Now(),
 	}
 	err = seal.AddSeal(sealInfo)
 	return
 }
 
 //修改用印
-func Edit(sealId, userId int, userName, use, companyName, creditCode, serviceType, sealType, remark, fileUrl string) (sealInfo *seal.Seal, err error) {
+func Edit(sealId, userId, contractId int, use, companyName, userCompanyName, creditCode, serviceType, sealType, remark, fileUrl string) (sealInfo *seal.Seal, err error) {
 	useList := []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议"}
 	serviceTypeList := []string{"新增业务", "续约业务", "补充协议"}
 	sealTypeList := []string{"合同章", "公章", "法人章"}
@@ -88,11 +90,13 @@ func Edit(sealId, userId int, userName, use, companyName, creditCode, serviceTyp
 	//sealId,userId int, userName, use, companyName, creditCode, serviceType, sealType, remark, fileUrl string
 	sealInfo.Use = use
 	sealInfo.CompanyName = companyName
+	sealInfo.UseCompanyName = userCompanyName
 	sealInfo.CreditCode = creditCode
 	sealInfo.ServiceType = serviceType
 	sealInfo.SealType = sealType
 	sealInfo.Remark = remark
 	sealInfo.FileUrl = fileUrl
+	sealInfo.ContractId = contractId
 	sealInfo.ModifyTime = time.Now()
 	sealInfo.Status = "待提交" //用印状态