allocation_company_contract.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. package cygx
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "time"
  5. )
  6. // 研究员派点
  7. type CygxAllocationCompanyContract struct {
  8. AllocationCompanyContractId int `orm:"column(allocation_company_contract_id);pk"`
  9. CompanyContractId int `description:"合同id"`
  10. CreateTime time.Time `description:"创建时间"`
  11. ModifyTime time.Time `description:"更新时间"`
  12. AdminId int `description:"操作人ID"`
  13. AdminName string `description:"内容"`
  14. Proportion float64 `description:"占比"`
  15. Money float64 `description:"金额"`
  16. RealName string `description:"研究员姓名"`
  17. ChartPermissionName string `description:"行业名称"`
  18. }
  19. // 研究员派点日志
  20. type CygxAllocationCompanyContractLog struct {
  21. AllocationCompanyContractId int `orm:"column(allocation_company_contract_id);pk"`
  22. CompanyContractId int `description:"合同id"`
  23. CreateTime time.Time `description:"创建时间"`
  24. ModifyTime time.Time `description:"更新时间"`
  25. AdminId int `description:"操作人ID"`
  26. AdminName string `description:"内容"`
  27. Proportion float64 `description:"占比"`
  28. Money float64 `description:"金额"`
  29. RealName string `description:"研究员姓名"`
  30. ChartPermissionName string `description:"行业名称"`
  31. }
  32. // 行业派点
  33. type CygxAllocationCompanyContractPermission struct {
  34. AllocationCompanyContractId int `orm:"column(allocation_company_contract_id);pk"`
  35. CompanyContractId int `description:"合同id"`
  36. CreateTime time.Time `description:"创建时间"`
  37. ModifyTime time.Time `description:"更新时间"`
  38. AdminId int `description:"操作人ID"`
  39. AdminName string `description:"内容"`
  40. Proportion float64 `description:"占比"`
  41. Money float64 `description:"金额"`
  42. MoneyAvg float64 `description:"行业所占合同的平均金额"`
  43. ChartPermissionName string `description:"行业名称"`
  44. }
  45. // 行业派点日志
  46. type CygxAllocationCompanyContractPermissionLog struct {
  47. AllocationCompanyContractId int `orm:"column(allocation_company_contract_id);pk"`
  48. CompanyContractId int `description:"合同id"`
  49. CreateTime time.Time `description:"创建时间"`
  50. ModifyTime time.Time `description:"更新时间"`
  51. AdminId int `description:"操作人ID"`
  52. AdminName string `description:"内容"`
  53. Proportion float64 `description:"占比"`
  54. Money float64 `description:"金额"`
  55. MoneyAvg float64 `description:"行业所占合同的平均金额"`
  56. ChartPermissionName string `description:"行业名称"`
  57. }
  58. // 更新派点信息
  59. func AddAndUpdateCygxAllocationCompanyContract(items []*CygxAllocationCompanyContract, itemsPermission []*CygxAllocationCompanyContractPermission, companyContractId int) (err error) {
  60. o := orm.NewOrmUsingDB("hz_cygx")
  61. to, err := o.Begin()
  62. if err != nil {
  63. return
  64. }
  65. defer func() {
  66. if err != nil {
  67. _ = to.Rollback()
  68. } else {
  69. _ = to.Commit()
  70. }
  71. }()
  72. //组合研究员派点日志结构体
  73. var itemsLog []*CygxAllocationCompanyContractLog
  74. for _, v := range items {
  75. item := new(CygxAllocationCompanyContractLog)
  76. item.CompanyContractId = v.CompanyContractId
  77. item.AdminId = v.AdminId
  78. item.CompanyContractId = v.CompanyContractId
  79. item.AdminName = v.AdminName
  80. item.RealName = v.RealName
  81. item.ChartPermissionName = v.ChartPermissionName
  82. item.Proportion = v.Proportion
  83. item.Money = v.Money
  84. item.CreateTime = time.Now()
  85. item.ModifyTime = time.Now()
  86. itemsLog = append(itemsLog, item)
  87. }
  88. //组合行业派点日志结构体
  89. var itemsPermissionLog []*CygxAllocationCompanyContractPermissionLog
  90. for _, v := range itemsPermission {
  91. item := new(CygxAllocationCompanyContractPermissionLog)
  92. item.CompanyContractId = v.CompanyContractId
  93. item.AdminId = v.AdminId
  94. item.CompanyContractId = v.CompanyContractId
  95. item.AdminName = v.AdminName
  96. item.ChartPermissionName = v.ChartPermissionName
  97. item.Proportion = v.Proportion
  98. item.Money = v.Money
  99. item.MoneyAvg = v.MoneyAvg
  100. item.CreateTime = time.Now()
  101. item.ModifyTime = time.Now()
  102. itemsPermissionLog = append(itemsPermissionLog, item)
  103. }
  104. //删除原有的研究员派点信息
  105. sql := `DELETE FROM cygx_allocation_company_contract WHERE company_contract_id = ?`
  106. _, err = to.Raw(sql, companyContractId).Exec()
  107. if err != nil {
  108. return
  109. }
  110. //删除原有的行业派点信息
  111. sql = ` DELETE FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ?`
  112. _, err = to.Raw(sql, companyContractId).Exec()
  113. if err != nil {
  114. return
  115. }
  116. //批量添加研究员派点信息
  117. _, err = to.InsertMulti(len(items), items)
  118. if err != nil {
  119. return
  120. }
  121. _, err = to.InsertMulti(len(itemsLog), itemsLog)
  122. if err != nil {
  123. return
  124. }
  125. //批量添加行业派点信息
  126. _, err = to.InsertMulti(len(itemsPermission), itemsPermission)
  127. if err != nil {
  128. return
  129. }
  130. _, err = to.InsertMulti(len(itemsPermissionLog), itemsPermissionLog)
  131. if err != nil {
  132. return
  133. }
  134. ow := orm.NewOrm()
  135. sqlW := `UPDATE company_contract SET is_allocation=1 WHERE company_contract_id=? `
  136. _, err = ow.Raw(sqlW, companyContractId).Exec()
  137. return
  138. }
  139. type UpdateAllocationCompanyContractReq struct {
  140. CompanyContractId int `description:"合同ID"`
  141. List []*AllocationPermissionListResp
  142. }
  143. type CygxAllocationCompanyContractDetailResp struct {
  144. CompanyContractId int `description:"合同ID"`
  145. Money float64 `description:"金额(单位万)"`
  146. TotalPointsContent string `description:"总点数描述"`
  147. IsGray bool `description:"是否置灰"`
  148. IsXClass bool `description:"是否是X类试用客户"`
  149. List []*AllocationPermissionListResp
  150. }
  151. // 行业
  152. type AllocationPermissionListResp struct {
  153. ChartPermissionName string `description:"行业名称"`
  154. ChartPermissionId int `description:"行业id"`
  155. Proportion float64 `description:"占比"`
  156. Money float64 `description:"金额(单位万)"`
  157. MoneyAvg float64 `description:"行业所占合同的平均金额"`
  158. CompanyContractId int `description:"合同ID"`
  159. List []*AllocationRealNameListResp
  160. }
  161. // 行业
  162. type AllocationRealNameListResp struct {
  163. RealName string `description:"研究员姓名"`
  164. Proportion float64 `description:"占比"`
  165. Money float64 `description:"金额(单位万)"`
  166. ChartPermissionId int `description:"行业id"`
  167. }
  168. // 获取数量
  169. func GetCygxAllocationCompanyContractCountByCompanyContractId(companyContractId int) (count int, err error) {
  170. o := orm.NewOrmUsingDB("hz_cygx")
  171. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_allocation_company_contract WHERE company_contract_id = ? `
  172. err = o.Raw(sqlCount, companyContractId).QueryRow(&count)
  173. return
  174. }
  175. // 研究员列表
  176. func GetCygxAllocationCompanyContractListById(companyContractId int) (items []*CygxAllocationCompanyContract, err error) {
  177. o := orm.NewOrmUsingDB("hz_cygx")
  178. sql := `SELECT * FROM cygx_allocation_company_contract WHERE company_contract_id = ? `
  179. _, err = o.Raw(sql, companyContractId).QueryRows(&items)
  180. return
  181. }
  182. // 研究员列表
  183. func GetCygxAllocationCompanyContractList(condition string, pars []interface{}) (items []*CygxAllocationCompanyContract, err error) {
  184. o := orm.NewOrmUsingDB("hz_cygx")
  185. sql := `SELECT * FROM cygx_allocation_company_contract as art WHERE 1= 1 `
  186. if condition != "" {
  187. sql += condition
  188. }
  189. _, err = o.Raw(sql, pars).QueryRows(&items)
  190. return
  191. }
  192. // 行业列表
  193. func GetCygxAllocationCompanyContractPermissionListById(companyContractId int) (items []*AllocationPermissionListResp, err error) {
  194. o := orm.NewOrmUsingDB("hz_cygx")
  195. sql := ` SELECT * FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ? `
  196. _, err = o.Raw(sql, companyContractId).QueryRows(&items)
  197. return
  198. }
  199. // 行业列表
  200. func GetCygxAllocationCompanyContractPermissionList(condition string, pars []interface{}) (items []*AllocationPermissionListResp, err error) {
  201. o := orm.NewOrmUsingDB("hz_cygx")
  202. sql := ` SELECT * FROM cygx_allocation_company_contract_permission as art WHERE 1= 1 `
  203. if condition != "" {
  204. sql += condition
  205. }
  206. _, err = o.Raw(sql, pars).QueryRows(&items)
  207. return
  208. }
  209. type CygxAllocationCompanyContractDetailStatisticsResp struct {
  210. List []*AllocationPermissionStatisticsListResp
  211. TotalContract int `description:"关联合同总计"`
  212. TotalMoney float64 `description:"总派点总计"`
  213. }
  214. // 行业
  215. type AllocationPermissionStatisticsListResp struct {
  216. ChartPermissionName string `description:"行业名称"`
  217. List []*AllocationRealNameStatisticsListResp
  218. }
  219. // 行业
  220. type AllocationRealNameStatisticsListResp struct {
  221. RealName string `description:"研究员姓名"`
  222. TotalRelatedContract float64 `description:"关联合同"`
  223. TotalDispatchPoint string `description:"总派点"`
  224. GroupProportion string `description:"组内占比"`
  225. DepartmentProportion string `description:"部门占比"`
  226. }
  227. // 行业列表
  228. func GetCygxAllocationCompanyContractPermissionListByIdInitYx(companyContractId int) (items []*CygxAllocationCompanyContractPermission, err error) {
  229. o := orm.NewOrmUsingDB("hz_cygx")
  230. sql := ` SELECT * FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ? AND chart_permission_name IN ('研选扣点包','研选订阅','买方研选') `
  231. _, err = o.Raw(sql, companyContractId).QueryRows(&items)
  232. return
  233. }
  234. // 行业列表
  235. func GetCygxAllocationCompanyContractPermissionListByIdInit(companyContractId int) (items []*CygxAllocationCompanyContractPermission, err error) {
  236. o := orm.NewOrmUsingDB("hz_cygx")
  237. sql := ` SELECT * FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ? `
  238. _, err = o.Raw(sql, companyContractId).QueryRows(&items)
  239. return
  240. }
  241. // 更新派点信息
  242. func AddAndUpdateCygxAllocationCompanyContractInit(items []*CygxAllocationCompanyContract, itemsPermission []*CygxAllocationCompanyContractPermission, companyContractId int) (err error) {
  243. o := orm.NewOrmUsingDB("hz_cygx")
  244. to, err := o.Begin()
  245. if err != nil {
  246. return
  247. }
  248. defer func() {
  249. if err != nil {
  250. _ = to.Rollback()
  251. } else {
  252. _ = to.Commit()
  253. }
  254. }()
  255. //删除原有的研究员派点信息
  256. sql := `DELETE FROM cygx_allocation_company_contract WHERE company_contract_id = ? AND chart_permission_name IN ('研选扣点包','研选订阅','买方研选') `
  257. _, err = to.Raw(sql, companyContractId).Exec()
  258. if err != nil {
  259. return
  260. }
  261. //删除原有的行业派点信息
  262. sql = ` DELETE FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ? AND chart_permission_name IN ('研选扣点包','研选订阅','买方研选') `
  263. _, err = to.Raw(sql, companyContractId).Exec()
  264. if err != nil {
  265. return
  266. }
  267. //批量添加研究员派点信息
  268. _, err = to.InsertMulti(len(items), items)
  269. if err != nil {
  270. return
  271. }
  272. //批量添加行业派点信息
  273. _, err = to.InsertMulti(len(itemsPermission), itemsPermission)
  274. if err != nil {
  275. return
  276. }
  277. return
  278. }
  279. // 修改
  280. func Cygx_allocation_company_contractEdit(proportion float64, allocation_company_contract_id int) (err error) {
  281. o := orm.NewOrmUsingDB("hz_cygx")
  282. sql := `UPDATE cygx_allocation_company_contract SET proportion =? WHERE allocation_company_contract_id=? `
  283. _, err = o.Raw(sql, proportion, allocation_company_contract_id).Exec()
  284. return
  285. }
  286. // 修改
  287. func Cygx_allocation_company_contract_permissionEdit(proportion, moneyAvg float64, allocation_company_contract_id int) (err error) {
  288. o := orm.NewOrmUsingDB("hz_cygx")
  289. sql := `UPDATE cygx_allocation_company_contract_permission SET proportion =?,money_avg = ? WHERE allocation_company_contract_id=? `
  290. _, err = o.Raw(sql, proportion, moneyAvg, allocation_company_contract_id).Exec()
  291. return
  292. }