company_contract.go 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package company_contract
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_task/models"
  6. "hongze/hongze_task/models/company"
  7. "hongze/hongze_task/models/company_approval"
  8. "hongze/hongze_task/models/company_contract"
  9. "hongze/hongze_task/utils"
  10. "strings"
  11. "time"
  12. )
  13. //合同处理
  14. func HandleCompanyContract() (err error) {
  15. defer func() {
  16. if err != nil {
  17. //fmt.Println("合同处理 ErrMsg:"+err.Error())
  18. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "合同处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  19. }
  20. }()
  21. today := utils.GetToday(utils.FormatDate)
  22. total,list,err := company_contract.GetStartContractListByStartDate(today)
  23. if err != nil {
  24. fmt.Println("HandleCompanyContract Err:" + err.Error())
  25. utils.FileLog.Info("HandleCompanyContract Err:%s" + err.Error())
  26. return
  27. }
  28. fmt.Sprintln("总共d%条数据待处理",total)
  29. errorList := make([]string,0)
  30. for _, v := range list {
  31. //fmt.Println(k, v.CompanyId)
  32. //fmt.Println(v)
  33. companyApproval,err := company_approval.GetCompanyApprovalByCompanyContractId(v.CompanyContractId)
  34. if err != nil {
  35. errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";err:",err))
  36. continue
  37. }
  38. if companyApproval == nil{
  39. errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";找不到对应的审批单"))
  40. continue
  41. }
  42. companyProduct,err := models.GetCompanyProduct(v.CompanyId,v.ProductId)
  43. if err != nil {
  44. errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";寻找客户产品时异常 err:",err))
  45. continue
  46. }
  47. //companyProduct.EndDate
  48. //格式化客户当前产品结束日期
  49. companyProductEndDate, err := time.Parse(utils.FormatDate, companyProduct.EndDate)
  50. if err != nil {
  51. errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";格式化客户当前产品结束时间时异常 err:",err))
  52. continue
  53. }
  54. //格式化合同结束日期
  55. contractEndDate, err := time.Parse(utils.FormatDate, v.EndDate)
  56. if err != nil {
  57. errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";格式化合同结束日期时异常 err:",err))
  58. continue
  59. }
  60. //如果 合同结束日期 小于 客户当前产品结束日期,那么不执行合同内容
  61. if contractEndDate.Before(companyProductEndDate) {
  62. errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";合同结束日期 小于 客户当前产品结束日期,不执行该合同内容"))
  63. continue
  64. }
  65. //申请类型:1:试用->正式,2:冻结—>试用,3:试用延期,4:原销售申请领取流失客户,5:正式客户申请服务更新
  66. switch companyApproval.ApplyMethod {
  67. case 1:
  68. company.TryOutToFormal(v.CompanyId, v.ProductId, utils.AdminId, v.CompanyContractId, v.StartDate, v.EndDate, utils.RealName, v.ProductName)
  69. case 5:
  70. company.ApplyServiceUpdate(v.CompanyId, v.ProductId, utils.AdminId, v.CompanyContractId, v.StartDate, v.EndDate, utils.RealName, v.ProductName)
  71. default:
  72. errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";审批单类型异常"))
  73. continue
  74. }
  75. }
  76. //错误信息,批量返回错误信息
  77. if len(errorList) >0 {
  78. err = errors.New(strings.Join(errorList,";"))
  79. }
  80. return
  81. }