|
@@ -0,0 +1,88 @@
|
|
|
+package services
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "hongze/hz_crm_api/models/company"
|
|
|
+ "hongze/hz_crm_api/utils"
|
|
|
+ "strconv"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+//func init() {
|
|
|
+// InitCompanyContractMerge()
|
|
|
+//}
|
|
|
+
|
|
|
+// 初始化合并合同之后的数据脚本
|
|
|
+func InitCompanyContractMerge() {
|
|
|
+
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = " AND status = 1 AND product_id = 2 "
|
|
|
+ companyContractList, err := company.GetCompanyContractList(condition, pars)
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ mapCompanyContractItems := make(map[int][]*company.CompanyContractResp)
|
|
|
+ for _, v := range companyContractList {
|
|
|
+ //fmt.Println(v)
|
|
|
+ mapCompanyContractItems[v.CompanyId] = append(mapCompanyContractItems[v.CompanyId], v)
|
|
|
+ }
|
|
|
+ var items []*company.CompanyContractMergeResp
|
|
|
+ for _, ContractItems := range mapCompanyContractItems {
|
|
|
+ item := new(company.CompanyContractMergeResp)
|
|
|
+ for k, v := range ContractItems {
|
|
|
+ item = new(company.CompanyContractMergeResp)
|
|
|
+ item.ContractType = v.ContractType
|
|
|
+ item.ProductId = v.ProductId
|
|
|
+ item.ProductName = v.ProductName
|
|
|
+ item.CompanyId = v.CompanyId
|
|
|
+ item.CompanyProductId = v.CompanyProductId
|
|
|
+ item.StartDate = v.StartDate
|
|
|
+ item.EndDate = v.EndDate
|
|
|
+ item.Money = v.Money
|
|
|
+ item.CompanyContractIdGroup += strconv.Itoa(v.CompanyContractId) + ","
|
|
|
+ if k == 0 {
|
|
|
+ items = append(items, item)
|
|
|
+ } else {
|
|
|
+ if v.CompanyId != items[len(items)-1].CompanyId {
|
|
|
+ items = append(items, item)
|
|
|
+ } else {
|
|
|
+ //续约的合同开始时间是否<上一次合同记录的结束时间 且间隔>6个月(180)天,那么就对两个合同进行合并
|
|
|
+ if item.StartDate.AddDate(0, 0, +180).Before(items[len(items)-1].EndDate) && item.EndDate.After(items[len(items)-1].EndDate) {
|
|
|
+ items[len(items)-1].Money += v.Money
|
|
|
+ items[len(items)-1].EndDate = v.EndDate
|
|
|
+ items[len(items)-1].CompanyContractIdGroup += strconv.Itoa(v.CompanyContractId) + ","
|
|
|
+ } else {
|
|
|
+ items = append(items, item)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var contractMergeitems []*company.CompanyContractMerge
|
|
|
+ for _, v := range items {
|
|
|
+ item := new(company.CompanyContractMerge)
|
|
|
+ item.ContractType = v.ContractType
|
|
|
+ item.ProductId = v.ProductId
|
|
|
+ item.ProductName = v.ProductName
|
|
|
+ item.CompanyId = v.CompanyId
|
|
|
+ item.CompanyProductId = v.CompanyProductId
|
|
|
+ item.StartDate = v.StartDate.Format(utils.FormatDate)
|
|
|
+ item.EndDate = v.EndDate.Format(utils.FormatDate)
|
|
|
+ item.Money = v.Money
|
|
|
+ item.CompanyContractIdGroup = strings.TrimRight(v.CompanyContractIdGroup, ",")
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
+ contractMergeitems = append(contractMergeitems, item)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = company.MultiAddCompanyContractMerge(contractMergeitems)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+}
|