浏览代码

Merge branch 'crm/crm_16.8' of http://8.136.199.33:3000/hongze/hz_crm_api into debug

zhangchuanxing 1 月之前
父节点
当前提交
2d5f1ec0ab
共有 5 个文件被更改,包括 224 次插入12 次删除
  1. 32 1
      controllers/company_apply_v2.go
  2. 54 4
      controllers/seal/seal_approval.go
  3. 3 3
      models/seal/request/seal_approval.go
  4. 45 0
      models/seal/seal.go
  5. 90 4
      services/seal/seal.go

+ 32 - 1
controllers/company_apply_v2.go

@@ -665,7 +665,37 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 			br.ErrMsg = "生成合同编码失败,Err:" + err.Error()
 			return
 		}
-		//如果是权益的合同,合同编号另取
+		//如果是权益的合同,合同编号另 取
+
+		//if productId == 2 {
+		//	sealCount, err := seal.GetCountByDateAndCompanyId(req.StartDate, req.EndDate, req.CompanyId)
+		//	if err != nil {
+		//		br.Msg = "生成合同编码失败"
+		//		br.ErrMsg = "获取用印合同数量信息失败,Err:" + err.Error()
+		//		return
+		//	}
+		//	crmConfig, err := company.GetConfigDetailByCode("rai_seal_check") //权益非标合同是否校验用印提交
+		//	if err != nil {
+		//		br.Msg = "获取配置失败"
+		//		br.ErrMsg = "获取配置失败,Err:" + err.Error()
+		//		return
+		//	}
+		//
+		//	if sealCount == 0 && crmConfig.ConfigValue == "1" {
+		//		br.Msg = "此合同暂未申请用印,请核对合同期限是否有误"
+		//		return
+		//	}
+		//	if sealCount > 0 {
+		//		sealInfo, err := seal.GetSealInfoByDateAndCompanyId(req.StartDate, req.EndDate, req.CompanyId)
+		//		if err != nil {
+		//			br.Msg = "生成合同编码失败"
+		//			br.ErrMsg = "获取用印合同信息失败,Err:" + err.Error()
+		//			return
+		//		}
+		//		contractCode = sealInfo.Code
+		//	}
+		//}
+
 		if productId == 2 {
 			sealCount, err := seal.GetCountByDateAndCompanyId(req.StartDate, req.EndDate, req.CompanyId)
 			if err != nil {
@@ -694,6 +724,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 				contractCode = sealInfo.Code
 			}
 		}
+
 		//当前是否存在待审批的单子
 		nowCompanyApprovalInfo, err := company.GetCompanyApprovalById(req.CompanyId, productId)
 		if (err == nil || nowCompanyApprovalInfo != nil) || err != nil && err.Error() != utils.ErrNoRow() {

+ 54 - 4
controllers/seal/seal_approval.go

@@ -464,16 +464,66 @@ func (this *SealApprovalController) Apply() {
 		br.ErrMsg = "参数解析异常!Err:" + err.Error()
 		return
 	}
+
+	//reqVerify := utils.Rules{
+	//	"Use":               {utils.NotEmpty()},
+	//	"CompanyName":       {utils.NotEmpty()},
+	//	"CreditCode":        {utils.NotEmpty()},
+	//	"ServiceType":       {utils.NotEmpty()},
+	//creditCode := req.CreditCode
+	//startDate := req.StartDate
+	//
+	//reqVerify := utils.Rules{
+	//	"Use":         {utils.NotEmpty()},
+	//	"CompanyName": {utils.NotEmpty()},
+	//	"CreditCode":  {utils.NotEmpty()},
+	//	//"ServiceType":       {utils.NotEmpty()} /、/权益非标合同不校验合同类型
+	//	"SealType":          {utils.NotEmpty()},
+	//	"FileUrls":          {utils.NotEmpty()},
+	//	"AffiliatedCompany": {utils.NotEmpty()},
+	//}
+	//
+	//if startDate != "" {
+	//	companyInfo, tmpErr := company.GetCompanyByCreditCode(creditCode)
+	//	//如果查询异常,且并不是在系统中找不到该社会信用码,那么就异常返回
+	//	if tmpErr != nil {
+	//		br.Msg = "根据社会信用码获取客户信息失败!"
+	//		br.ErrMsg = "根据社会信用码获取客户信息失败!Err:" + err.Error()
+	//		return
+	//	}
+	//
+	//	req.CompanyId = companyInfo.CompanyId
+	//} else {
+	//	reqVerify["ServiceType"] = []string{utils.NotEmpty()}
+	//}
+
+	creditCode := req.CreditCode
+	startDate := req.StartDate
+
 	reqVerify := utils.Rules{
-		"Use":               {utils.NotEmpty()},
-		"CompanyName":       {utils.NotEmpty()},
-		"CreditCode":        {utils.NotEmpty()},
-		"ServiceType":       {utils.NotEmpty()},
+		"Use":         {utils.NotEmpty()},
+		"CompanyName": {utils.NotEmpty()},
+		"CreditCode":  {utils.NotEmpty()},
+		//"ServiceType":       {utils.NotEmpty()} /、/权益非标合同不校验合同类型
 		"SealType":          {utils.NotEmpty()},
 		"FileUrls":          {utils.NotEmpty()},
 		"AffiliatedCompany": {utils.NotEmpty()},
 	}
 
+	if startDate != "" {
+		companyInfo, tmpErr := company.GetCompanyByCreditCode(creditCode)
+		//如果查询异常,且并不是在系统中找不到该社会信用码,那么就异常返回
+		if tmpErr != nil {
+			br.Msg = "根据社会信用码获取客户信息失败!"
+			br.ErrMsg = "根据社会信用码获取客户信息失败!Err:" + err.Error()
+			return
+		}
+
+		req.CompanyId = companyInfo.CompanyId
+	} else {
+		reqVerify["ServiceType"] = []string{utils.NotEmpty()}
+	}
+
 	err = utils.Verify(req, reqVerify, utils.LANG_CN)
 	if err != nil {
 		br.Msg = "参数丢失!"

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

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

+ 45 - 0
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{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议", "代付合同", "总对总协议"}
@@ -60,6 +64,7 @@ func GetSealInfoByContractId(sealId int) (sealInfo *Seal, err error) {
 // GetSealInfoByDateAndCompanyId 根据起始时间,公司ID获取合同信息
 func GetSealInfoByDateAndCompanyId(startDate, endDate string, companyId int) (sealInfo *Seal, err error) {
 	o := orm.NewOrm()
+
 	sql := `select * from seal where start_date = ? and end_date = ? AND company_id =?  AND  product_id = 2  order by seal_id asc limit 1 `
 	err = o.Raw(sql, startDate, endDate, companyId).QueryRow(&sealInfo)
 	return
@@ -68,6 +73,7 @@ func GetSealInfoByDateAndCompanyId(startDate, endDate string, companyId int) (se
 // GetCountByDateAndCompanyId  根据起始时间,公司ID获取合同信息数量
 func GetCountByDateAndCompanyId(startDate, endDate string, companyId int) (count int, err error) {
 	o := orm.NewOrm()
+
 	sql := "select count(*) AS COUNT from seal   where start_date = ? and end_date = ? AND company_id =?  AND  product_id = 2   "
 	err = o.Raw(sql, startDate, endDate, companyId).QueryRow(&count)
 	return
@@ -126,6 +132,21 @@ func GetSealCode() (code string, err error) {
 	return
 }
 
+// GetSealCodeRai 生成权益合同编号1
+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位"`
 }
@@ -211,10 +232,34 @@ 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.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
+//	JOIN contract_approval_record d on a.contract_approval_id=d.contract_approval_id ` + joinCondition + `
+//WHERE c.is_delete = 0 AND a.approval_type="seal" `
+//	sql += condition
+//	sql += ` group by c.seal_id order by c.create_time desc`
+//	totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z`
+//	err = o.Raw(totalSql, pars).QueryRow(&total)
+//	if err != nil {
+//		return
+//	}
+//	sql += ` LIMIT ?,? `
+//	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
+//
+//	return
+//}
+
 func GetSealApprovalListByWhere(condition, joinCondition string, pars []interface{}, startSize, pageSize int) (list []*SealApprovalItem, total int, err error) {
+	//git
 	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 `

+ 90 - 4
services/seal/seal.go

@@ -123,7 +123,9 @@ 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)
+	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
 	}
@@ -139,8 +141,67 @@ func ApplySeal(sysUser *system.Admin, req request.SealApprovalApplyReq) (err err
 	return
 }
 
-// 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) {
+// addSeal 新增用印.
+//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
+//	}
+//	if !strings.Contains(strings.Join(seal.EnumServiceType, ","), serviceType) {
+//		err = errors.New("业务类型异常")
+//		return
+//	}
+//
+//	sealCode, err := seal.GetSealCode()
+//	if err != nil {
+//		return
+//	}
+//	fileUrl := ""
+//	now := time.Now()
+//	attachments := make([]*seal.Attachment, 0)
+//	if len(fileUrls) == 1 {
+//		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,
+//	}
+//	err = seal.AddSeal(sealInfo)
+//	if err != nil {
+//		return
+//	}
+//	if len(fileUrls) > 1 {
+//		for _, v := range fileUrls {
+//			tmp := &seal.Attachment{
+//				SealId:     sealInfo.SealId,
+//				FileUrl:    v,
+//				ModifyTime: now,
+//				CreateTime: now,
+//			}
+//			attachments = append(attachments, tmp)
+//		}
+//		err = seal.AddAttachments(attachments)
+//	}
+//	return
+//}
+
+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 +210,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
 	}
@@ -160,6 +240,7 @@ func addSeal(userId, contractId, fileNum int, userName, use, companyName, useCom
 	if len(fileUrls) == 1 {
 		fileUrl = fileUrls[0]
 	}
+
 	sealInfo = &seal.Seal{
 		Code:              sealCode,
 		UserId:            userId,
@@ -178,7 +259,12 @@ func addSeal(userId, contractId, fileNum int, userName, use, companyName, useCom
 		ModifyTime:        now,
 		CreateTime:        now,
 		AffiliatedCompany: affiliatedCompany,
+		ProductId:         productId,
+		CompanyId:         companyId,
+		StartDate:         startDate,
+		EndDate:           endDate,
 	}
+
 	err = seal.AddSeal(sealInfo)
 	if err != nil {
 		return