Browse Source

no message

zhangchuanxing 2 months ago
parent
commit
2ced36e479
3 changed files with 91 additions and 41 deletions
  1. 3 0
      models/seal/request/seal_approval.go
  2. 40 20
      models/seal/seal.go
  3. 48 21
      services/seal/seal.go

+ 3 - 0
models/seal/request/seal_approval.go

@@ -13,6 +13,9 @@ type SealApprovalApplyReq struct {
 	FileUrls          []string `description:"多个文件附件地址"`
 	FileNum           int      `description:"文件份数"`
 	AffiliatedCompany string   `description:"归属公司"`
+	CompanyId         int      `description:"客户id"`
+	StartDate         string   `description:"开始日期"`
+	EndDate           string   `description:"结束日期"`
 }
 
 // 用印审批编辑请求

+ 40 - 20
models/seal/seal.go

@@ -34,6 +34,10 @@ type Seal struct {
 	CreateTime        time.Time `description:"添加时间"`
 	CheckBackFileTime time.Time `description:"签回用印附件时间"`
 	AffiliatedCompany string    `description:"归属公司"`
+	ProductId         int       `description:"产品id,1:ficc;2:权益"`
+	CompanyId         int       `description:"客户id"`
+	StartDate         string    `description:"开始日期"`
+	EndDate           string    `description:"结束日期"`
 }
 
 var EnumUse = []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议", "代付合同", "总对总协议"}
@@ -110,6 +114,21 @@ func GetSealCode() (code string, err error) {
 	return
 }
 
+// GetSealCodeRai 生成权益合同编号
+func GetSealCodeRai() (code string, err error) {
+	var num int
+	o := orm.NewOrm()
+	today := utils.GetToday(utils.FormatDate)
+	sql := `SELECT COUNT(1) AS num FROM seal where create_time>=?`
+	err = o.Raw(sql, today).QueryRow(&num)
+	if err != nil {
+		return
+	}
+
+	code = "HZEQ" + time.Now().Format("20060102") + fmt.Sprintf("%03d", num)
+	return
+}
+
 type CompanyNameList struct {
 	CompanyName string `description:"客户名称,甲方名称,长度32位"`
 }
@@ -159,25 +178,25 @@ func GetList(condition string, pars []interface{}, startSize, pageSize int) (lis
 }
 
 type SealApprovalItem struct {
-	ContractApprovalId       int `description:"审批单ID"`
-	ContractId               int `description:"合同ID"`
-	ContractApprovalRecordId int `description:"审批流ID"`
-	//ContractCode             string                  `description:"合同编号"`
-	Use            string                  `description:"用印用途,枚举值:'销售合同','渠道合同','付款通知函','招投标','战略合作协议'"`
-	ContractType   string                  `description:"合同类型,枚举值:'新签合同','续约合同','补充协议','代付合同'"`
-	Status         string                  `description:"合同状态,枚举值:待审批','已审批','已驳回','已撤回','已签回',默认待审批"`
-	ApproveStatus  string                  `json:"-" description:"审批单状态,枚举值:待审批','已审批','已驳回','已撤回',默认待审批"`
-	ApplyContent   string                  `description:"申请内容"`
-	ApplyUserId    int                     `description:"申请人ID"`
-	ApplyUserName  string                  `description:"申请人名称"`
-	ContractDetail string                  `json:"-" description:"提交审批时的合同信息;用印快照"`
-	ContractInfo   contract.ContractDetail `json:"-" description:"提交审批时的合同信息;用印快照"`
-	ApproveRemark  string                  `description:"审核备注"`
-	SealType       string                  `description:"用印类型"`
-	CompanyName    string                  `description:"客户名称"`
-	FileUrl        string                  `description:"合同下载地址"`
-	CurrNodeId     int                     `description:"当前审批节点id"`
-	StartNodeId    int                     `description:"开始审批节点id"`
+	ContractApprovalId       int                     `description:"审批单ID"`
+	ContractId               int                     `description:"合同ID"`
+	ContractApprovalRecordId int                     `description:"审批流ID"`
+	Code                     string                  `description:"合同编号"`
+	Use                      string                  `description:"用印用途,枚举值:'销售合同','渠道合同','付款通知函','招投标','战略合作协议'"`
+	ContractType             string                  `description:"合同类型,枚举值:'新签合同','续约合同','补充协议','代付合同'"`
+	Status                   string                  `description:"合同状态,枚举值:待审批','已审批','已驳回','已撤回','已签回',默认待审批"`
+	ApproveStatus            string                  `json:"-" description:"审批单状态,枚举值:待审批','已审批','已驳回','已撤回',默认待审批"`
+	ApplyContent             string                  `description:"申请内容"`
+	ApplyUserId              int                     `description:"申请人ID"`
+	ApplyUserName            string                  `description:"申请人名称"`
+	ContractDetail           string                  `json:"-" description:"提交审批时的合同信息;用印快照"`
+	ContractInfo             contract.ContractDetail `json:"-" description:"提交审批时的合同信息;用印快照"`
+	ApproveRemark            string                  `description:"审核备注"`
+	SealType                 string                  `description:"用印类型"`
+	CompanyName              string                  `description:"客户名称"`
+	FileUrl                  string                  `description:"合同下载地址"`
+	CurrNodeId               int                     `description:"当前审批节点id"`
+	StartNodeId              int                     `description:"开始审批节点id"`
 	//UserId                   int                     `description:"申请人id"`
 	//UserName                 string                  `description:"申请人名称"`
 	SealId               int       `description:"用印审批ID"`
@@ -195,13 +214,14 @@ type SealApprovalItem struct {
 	CheckBackFileTimeStr string    `description:"签回用印附件时间(字符串)"`
 	ContractCode         string    `description:"合同编码"`
 	AffiliatedCompany    string    `description:"归属公司"`
+	ProductId            int       `description:"产品id,1:ficc;2:权益"`
 }
 
 // GetSealApprovalListByWhere 获取用印审批列表-分页
 func GetSealApprovalListByWhere(condition, joinCondition string, pars []interface{}, startSize, pageSize int) (list []*SealApprovalItem, total int, err error) {
 	o := orm.NewOrm()
 	fields := `a.contract_approval_id,c.contract_id,a.apply_content,a.approve_remark,a.apply_user_id,a.apply_user_name,a.curr_node_id,a.start_node_id,c.create_time,a.modify_time,a.status approval_status,
-			   c.status,c.seal_id,c.seal_type,c.service_type contract_type,c.use,c.company_name,c.file_url,c.approve_time,c.invalid_time,c.code,c.credit_code,c.check_back_file_time,c.check_back_file_url,c.affiliated_company `
+			   c.status,c.seal_id,c.seal_type,c.service_type contract_type,c.use,c.company_name,c.file_url,c.approve_time,c.invalid_time,c.code,c.credit_code,c.check_back_file_time,c.check_back_file_url,c.product_id,c.affiliated_company `
 	sql := `SELECT ` + fields + ` from contract_approval a JOIN ( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 and approval_type = "seal" `
 	sql += ` GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
 	JOIN seal c ON c.seal_id = a.contract_id 

+ 48 - 21
services/seal/seal.go

@@ -123,7 +123,7 @@ func ApplySeal(sysUser *system.Admin, req request.SealApprovalApplyReq) (err err
 	}()
 
 	// 添加用印
-	sealInfo, err := addSeal(sysUser.AdminId, req.ContractId, req.FileNum, sysUser.RealName, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrls, req.AffiliatedCompany)
+	sealInfo, err := addSeal(sysUser.AdminId, req.ContractId, req.FileNum, req.CompanyId, sysUser.RealName, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrls, req.AffiliatedCompany, req.StartDate, req.EndDate)
 	if err != nil {
 		return
 	}
@@ -140,7 +140,7 @@ func ApplySeal(sysUser *system.Admin, req request.SealApprovalApplyReq) (err err
 }
 
 // addSeal 新增用印
-func addSeal(userId, contractId, fileNum int, userName, use, companyName, useCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany string) (sealInfo *seal.Seal, err error) {
+func addSeal(userId, contractId, fileNum, companyId int, userName, use, companyName, useCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany, startDate, endDate string) (sealInfo *seal.Seal, err error) {
 	if !strings.Contains(strings.Join(seal.EnumUse, ","), use) {
 		err = errors.New("用印用途异常")
 		return
@@ -149,8 +149,27 @@ func addSeal(userId, contractId, fileNum int, userName, use, companyName, useCom
 		err = errors.New("业务类型异常")
 		return
 	}
+	adminAll, err := system.GetAdminList()
+	if err != nil {
+		return
+	}
+	//adminMap := make(map[int]*system.AdminView)
+	mapRaiSllerId := make(map[int]bool) // 是否为权益销售
+	for _, v := range adminAll {
+		//adminMap[v.AdminId] = v
+		if v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
+			mapRaiSllerId[v.AdminId] = true
+		}
+	}
 
-	sealCode, err := seal.GetSealCode()
+	var sealCode string
+	var productId int
+	if mapRaiSllerId[userId] {
+		sealCode, err = seal.GetSealCodeRai()
+		productId = utils.COMPANY_PRODUCT_RAI_ID
+	} else {
+		sealCode, err = seal.GetSealCode()
+	}
 	if err != nil {
 		return
 	}
@@ -161,24 +180,29 @@ func addSeal(userId, contractId, fileNum int, userName, use, companyName, useCom
 		fileUrl = fileUrls[0]
 	}
 	sealInfo = &seal.Seal{
-		Code:           sealCode,
-		UserId:         userId,
-		UserName:       userName,
-		Use:            use,
-		CompanyName:    companyName,
-		UseCompanyName: useCompanyName,
-		CreditCode:     creditCode,
-		ServiceType:    serviceType,
-		SealType:       sealType,
-		Status:         "待提交",
-		Remark:         remark,
-		FileUrl:        fileUrl,
-		FileNum:        fileNum,
-		ContractId:     contractId,
-		ModifyTime:     now,
-		CreateTime:     now,
-		AffiliatedCompany:  affiliatedCompany,
+		Code:              sealCode,
+		UserId:            userId,
+		UserName:          userName,
+		Use:               use,
+		CompanyName:       companyName,
+		UseCompanyName:    useCompanyName,
+		CreditCode:        creditCode,
+		ServiceType:       serviceType,
+		SealType:          sealType,
+		Status:            "待提交",
+		Remark:            remark,
+		FileUrl:           fileUrl,
+		FileNum:           fileNum,
+		ContractId:        contractId,
+		ModifyTime:        now,
+		CreateTime:        now,
+		AffiliatedCompany: affiliatedCompany,
+		ProductId:         productId,
+		CompanyId:         companyId,
+		StartDate:         startDate,
+		EndDate:           endDate,
 	}
+
 	err = seal.AddSeal(sealInfo)
 	if err != nil {
 		return
@@ -586,10 +610,13 @@ func GetSealApprovalPageList(condition, joinCondition string, pars []interface{}
 					}*/
 				}
 			}
-
 			// 合同编码
 			if selfContract, has := selfContractMap[item.ContractId]; has {
 				list[i].ContractCode = selfContract.ContractCode
+			} else {
+				if item.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+					list[i].ContractCode = item.Code
+				}
 			}
 
 			// 取出item对应approval_id的审批流