contract.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. contractReq "hongze/hongze_mobile_admin/models/request/contract"
  6. contractResp "hongze/hongze_mobile_admin/models/response/contract"
  7. "hongze/hongze_mobile_admin/models/tables/contract"
  8. "hongze/hongze_mobile_admin/models/tables/contract_approval"
  9. "hongze/hongze_mobile_admin/models/tables/contract_relation"
  10. contractService "hongze/hongze_mobile_admin/services/contract"
  11. "hongze/hongze_mobile_admin/services/seal"
  12. "hongze/hongze_mobile_admin/utils"
  13. "path"
  14. "strconv"
  15. "strings"
  16. )
  17. //合同模块
  18. type ContractCommon struct {
  19. BaseAuth
  20. }
  21. // @Title 上传签回附件
  22. // @Description 上传签回附件接口
  23. // @Param request body contract.UploadCheckBackFileReq true "type json string"
  24. // @Success Ret=200 上传成功
  25. // @router /upload_check_back_file [post]
  26. func (c *ContractCommon) UploadCheckBackFile() {
  27. //var req contractReq.UploadCheckBackFileReq
  28. //err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  29. //if err != nil {
  30. // c.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
  31. // return
  32. //}
  33. ////合同编号
  34. //if req.ContractId <= 0 {
  35. // c.FailWithMessage("请传入合同编号!", "请传入合同编号")
  36. // return
  37. //}
  38. //
  39. //if req.FileUrl == "" {
  40. // c.FailWithMessage("请先上传附件!", "请先上传附件")
  41. // return
  42. //}
  43. contractIdStr := c.Ctx.Request.Form.Get("ContractId")
  44. if contractIdStr == "" {
  45. c.FailWithMessage("合同ID必传!", "合同ID必传")
  46. return
  47. }
  48. contractId, err := strconv.Atoi(contractIdStr)
  49. if err != nil {
  50. c.FailWithMessage("合同ID异常!", "合同ID必传")
  51. return
  52. }
  53. //合同编号
  54. if contractId <= 0 {
  55. c.FailWithMessage("请传入合同编号", "请传入合同编号")
  56. return
  57. }
  58. fileMulti, h, err := c.GetFile("file")
  59. if err != nil {
  60. c.FailWithMessage("获取资源信息失败", "获取资源信息失败,Err:"+err.Error())
  61. return
  62. }
  63. ext := path.Ext(h.Filename)
  64. //err = contractService.UploadCheckBackFile(contractId, req.FileUrl, c.AdminWx)
  65. resourceUrl, err := contractService.UploadCheckBackFileByFile(contractId, ext, fileMulti, c.AdminWx)
  66. //更新用印中的签回合同
  67. _, _ = seal.UploadCheckBackFile(contractId, resourceUrl, c.AdminWx)
  68. c.OkWithMessage("上传成功")
  69. }
  70. // Detail
  71. // @Title 获取合同详情
  72. // @Description 获取合同详情接口
  73. // @Param ContractId query int true "合同id"
  74. // @Success 200 {object} contract.ContractDetailResp
  75. // @router /detail [get]
  76. func (c *ContractCommon) Detail() {
  77. //合同类型、产品类型、合同状态、更新时间、所选销售
  78. //关键字:合同编号、客户名称,社会信用码
  79. contractId, _ := c.GetInt("ContractId")
  80. //合同id
  81. if contractId <= 0 {
  82. c.FailWithMessage("合同id必传!", "合同id必传!")
  83. return
  84. }
  85. //获取合同详情
  86. contractInfo, flowNodeListResp, contractOpButton, err := contractService.GetContractDetailByContractId(contractId, c.AdminWx)
  87. if err != nil {
  88. c.FailWithMessage("获取合同详情失败!", "获取合同详情失败,ERR:"+err.Error())
  89. return
  90. }
  91. resp := contractResp.ContractDetailResp{
  92. ContractDetail: contractInfo,
  93. FlowNodeList: flowNodeListResp,
  94. OpButton: contractOpButton,
  95. }
  96. c.OkDetailed(resp, "获取成功")
  97. }
  98. // CompanyList
  99. // @Title 根据客户名称获取已存在合同系统中客户名称列表
  100. // @Description 获取合同详情接口
  101. // @Param CompanyName query string true "客户名称"
  102. // @Param Keyword query string true "关键字:客户名称、社会信用码"
  103. // @Param Status query string true "合同状态"
  104. // @Success 200 {object} []string
  105. // @router /company_list [get]
  106. func (c *ContractCommon) CompanyList() {
  107. sysUser := c.AdminWx
  108. keyword := c.GetString("Keyword")
  109. //搜索关键字
  110. if keyword == "" {
  111. c.FailWithMessage("搜索关键字必传!", "搜索关键字必传!")
  112. return
  113. }
  114. status := c.GetString("Status")
  115. companyNameList := make([]string, 0)
  116. list, err := contract.GetCompanyNameList(c.AdminWx.AdminId, keyword, status)
  117. if err != nil {
  118. c.FailWithMessage("获取客户名称列表失败!", "获取客户名称列表失败,ERR:"+err.Error())
  119. return
  120. }
  121. for _, v := range list {
  122. companyNameList = append(companyNameList, v.CompanyName)
  123. }
  124. //审批列表中(跟自己有关联的)
  125. childCondition := ""
  126. condition := ""
  127. childPars := make([]interface{}, 0)
  128. pars := make([]interface{}, 0)
  129. if status != "" {
  130. condition += `and c.status=? `
  131. pars = append(pars, status)
  132. }
  133. //归属
  134. //如果不是合规,那么只能查看跟自己有关联的
  135. if status == "待审批" {
  136. condition += ` AND ((c.seller_id = ? and a.start_node_id = a.curr_node_id) OR (d.approve_user_id = ? )) and d.status="待审批" `
  137. } else {
  138. condition += ` AND (c.seller_id = ? or (d.approve_user_id = ? and d.node_id <= a.curr_node_id and c.status != "已撤回") )`
  139. }
  140. pars = append(pars, sysUser.AdminId, sysUser.AdminId)
  141. condition += `and (company_name like '%` + keyword + `%' or credit_code like '%` + keyword + `%')`
  142. list2, err := contract_approval.GetCompanyNameListV2(childCondition, condition, childPars, pars)
  143. if err != nil {
  144. c.FailWithMessage("获取客户名称列表失败!", "获取客户名称列表失败,ERR:"+err.Error())
  145. return
  146. }
  147. for _, v := range list2 {
  148. if !strings.Contains(strings.Join(companyNameList, ","), v.CompanyName) {
  149. companyNameList = append(companyNameList, v.CompanyName)
  150. }
  151. }
  152. c.OkDetailed(companyNameList, "获取成功")
  153. }
  154. // List
  155. // @Title 合同列表
  156. // @Description 合同列表接口
  157. // @Param ContractType query string false "合同类型,枚举值:'新签合同','续约合同','补充协议'"
  158. // @Param Status query string false "合同状态,枚举值:'待提交','待审批','已撤回','已审批','已驳回','已作废'"
  159. // @Param ProductId query int false "客户类型:传0或者不传为当前账号权限,1 代表是:ficc;2 代表是:权益"
  160. // @Param ModifyStartTime query string false "服务更新时间的选择开始时间,格式:2021-05-23 00:00:00"
  161. // @Param ModifyEndTime query string false "服务更新时间的选择结束时间,格式:2021-05-26 23:59:59"
  162. // @Param SellerId query string false "选择的销售id"
  163. // @Param Keyword query string false "搜索关键字"
  164. // @Param KeywordEq query string false "搜索关键字(全等)"
  165. // @Success 200 {object} contract.ContractListResp
  166. // @router /list [get]
  167. func (c *ContractCommon) List() {
  168. //合同类型、产品类型、合同状态、更新时间、所选销售
  169. //关键字:合同编号、客户名称,社会信用码
  170. contractType := c.GetString("ContractType")
  171. status := c.GetString("Status")
  172. productId, _ := c.GetInt("ProductId")
  173. modifyStartTime := c.GetString("ModifyStartTime")
  174. modifyEndTime := c.GetString("ModifyEndTime")
  175. sellerIds := c.GetString("SellerId")
  176. keyword := c.GetString("Keyword")
  177. keywordEq := c.GetString("KeywordEq")
  178. condition := ""
  179. pars := make([]interface{}, 0)
  180. //如果不是超管或者合规,那么只能查看自己的合同
  181. condition += ` AND seller_id = ? `
  182. pars = append(pars, c.AdminWx.AdminId)
  183. //合同类型、、更新时间、所选销售
  184. //关键字:合同编号、客户名称,社会信用码
  185. if contractType != "" {
  186. condition += ` AND contract_type = ? `
  187. pars = append(pars, contractType)
  188. }
  189. //合同状态
  190. if status != "" {
  191. condition += ` AND status = ? `
  192. pars = append(pars, status)
  193. }
  194. //产品类型
  195. if productId > 0 {
  196. condition += ` AND product_id = ? `
  197. pars = append(pars, productId)
  198. }
  199. //所选销售
  200. if sellerIds != "" {
  201. condition += ` AND seller_id IN (` + sellerIds + `) `
  202. }
  203. //更新开始时间
  204. if modifyStartTime != "" {
  205. condition += ` AND modify_time >= ? `
  206. pars = append(pars, modifyStartTime)
  207. }
  208. //更新结束时间
  209. if modifyEndTime != "" {
  210. condition += ` AND modify_time <= ? `
  211. pars = append(pars, modifyEndTime)
  212. }
  213. //关键字
  214. if keyword != "" {
  215. condition += ` AND (contract_code LIKE '%` + keyword + `%' OR company_name LIKE '%` + keyword + `%' OR credit_code LIKE '%` + keyword + `%' ) `
  216. }
  217. //关键字(全等)
  218. if keywordEq != "" {
  219. condition += ` AND c.company_name =? `
  220. pars = append(pars, keywordEq)
  221. }
  222. pageSize, _ := c.GetInt("PageSize")
  223. currentIndex, _ := c.GetInt("CurrentIndex")
  224. var startSize int
  225. if pageSize <= 0 {
  226. pageSize = utils.PageSize20
  227. }
  228. if currentIndex <= 0 {
  229. currentIndex = 1
  230. }
  231. startSize = paging.StartIndex(currentIndex, pageSize)
  232. total, err := contract.GetContractListCount(condition, pars)
  233. if err != nil {
  234. c.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
  235. return
  236. }
  237. list, err := contract.GetContractList(condition, pars, startSize, pageSize)
  238. if err != nil {
  239. c.FailWithMessage("获取合同列表失败", "获取合同列表失败,Err:"+err.Error())
  240. return
  241. }
  242. page := paging.GetPaging(currentIndex, pageSize, total)
  243. c.OkDetailed(contractResp.ContractListResp{
  244. List: list,
  245. Paging: page,
  246. }, "获取成功")
  247. }
  248. // CompanyListBySeal
  249. // @Title 根据客户名称获取已存在合同系统中客户名称列表
  250. // @Description 获取合同详情接口
  251. // @Param CompanyName query string true "客户名称"
  252. // @Param Keyword query string true "关键字:客户名称、社会信用码"
  253. // @Param Status query string true "合同状态"
  254. // @Success 200 {object} []string
  255. // @router /companyListBySeal [get]
  256. func (c *ContractCommon) CompanyListBySeal() {
  257. sysUser := c.AdminWx
  258. keyword := c.GetString("Keyword")
  259. //搜索关键字
  260. if keyword == "" {
  261. c.FailWithMessage("搜索关键字必传!", "搜索关键字必传!")
  262. return
  263. }
  264. status := c.GetString("Status")
  265. companyNameList := make([]string, 0)
  266. sellerId := 0
  267. if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_COMPLIANCE {
  268. sellerId = c.AdminWx.AdminId
  269. }
  270. list, err := contract.GetCompanyNameList(sellerId, keyword, status)
  271. if err != nil {
  272. c.FailWithMessage("获取客户名称列表失败!", "获取客户名称列表失败,ERR:"+err.Error())
  273. return
  274. }
  275. for _, v := range list {
  276. companyNameList = append(companyNameList, v.CompanyName)
  277. }
  278. //审批列表中(跟自己有关联的)
  279. //childCondition := ""
  280. //condition := ""
  281. //childPars := make([]interface{}, 0)
  282. //pars := make([]interface{}, 0)
  283. //if status != "" {
  284. // condition += `and c.status=? `
  285. // pars = append(pars, status)
  286. //}
  287. ////归属
  288. ////如果不是合规,那么只能查看跟自己有关联的
  289. //if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_COMPLIANCE {
  290. // if status == "待审批" {
  291. // condition += ` AND ((c.seller_id = ? and a.start_node_id = a.curr_node_id) OR (d.approve_user_id = ? )) and d.status="待审批" `
  292. // } else {
  293. // condition += ` AND (c.seller_id = ? or d.approve_user_id = ?)`
  294. // }
  295. // pars = append(pars, sysUser.AdminId, sysUser.AdminId)
  296. //}
  297. //
  298. //condition += `and (company_name like '%` + keyword + `%' or credit_code like '%` + keyword + `%')`
  299. //
  300. //list2, err := contract_approval.GetCompanyNameListV2(childCondition, condition, childPars, pars)
  301. //if err != nil {
  302. // c.FailWithMessage("获取客户名称列表失败!", "获取客户名称列表失败,ERR:"+err.Error())
  303. // return
  304. //}
  305. //for _, v := range list2 {
  306. // if !strings.Contains(strings.Join(companyNameList, ","), v.CompanyName) {
  307. // companyNameList = append(companyNameList, v.CompanyName)
  308. // }
  309. //}
  310. c.OkDetailed(companyNameList, "获取成功")
  311. }
  312. // ListBySeal
  313. // @Title 合同列表
  314. // @Description 合同列表接口
  315. // @Param ContractType query string false "合同类型,枚举值:'新签合同','续约合同','补充协议'"
  316. // @Param Status query string false "合同状态,枚举值:'待提交','待审批','已撤回','已审批','已驳回','已作废'"
  317. // @Param ProductId query int false "客户类型:传0或者不传为当前账号权限,1 代表是:ficc;2 代表是:权益"
  318. // @Param ModifyStartTime query string false "服务更新时间的选择开始时间,格式:2021-05-23 00:00:00"
  319. // @Param ModifyEndTime query string false "服务更新时间的选择结束时间,格式:2021-05-26 23:59:59"
  320. // @Param SellerId query string false "选择的销售id"
  321. // @Param Keyword query string false "搜索关键字"
  322. // @Param KeywordEq query string false "搜索关键字(全等)"
  323. // @Success 200 {object} contract.ContractListResp
  324. // @router /listBySeal [get]
  325. func (c *ContractCommon) ListBySeal() {
  326. //合同类型、产品类型、合同状态、更新时间、所选销售
  327. //关键字:合同编号、客户名称,社会信用码
  328. contractType := c.GetString("ContractType")
  329. status := c.GetString("Status")
  330. productId, _ := c.GetInt("ProductId")
  331. modifyStartTime := c.GetString("ModifyStartTime")
  332. modifyEndTime := c.GetString("ModifyEndTime")
  333. sellerIds := c.GetString("SellerId")
  334. keyword := c.GetString("Keyword")
  335. keywordEq := c.GetString("KeywordEq")
  336. condition := ""
  337. pars := make([]interface{}, 0)
  338. //如果不是合规,那么只能查看自己的合同
  339. if c.AdminWx.RoleTypeCode != utils.ROLE_TYPE_CODE_COMPLIANCE {
  340. condition += ` AND seller_id = ? `
  341. pars = append(pars, c.AdminWx.AdminId)
  342. }
  343. //合同类型、、更新时间、所选销售
  344. //关键字:合同编号、客户名称,社会信用码
  345. if contractType != "" {
  346. condition += ` AND contract_type = ? `
  347. pars = append(pars, contractType)
  348. }
  349. //合同状态
  350. if status != "" {
  351. condition += ` AND status = ? `
  352. pars = append(pars, status)
  353. }
  354. //产品类型
  355. if productId > 0 {
  356. condition += ` AND product_id = ? `
  357. pars = append(pars, productId)
  358. }
  359. //所选销售
  360. if sellerIds != "" {
  361. condition += ` AND seller_id IN (` + sellerIds + `) `
  362. }
  363. //更新开始时间
  364. if modifyStartTime != "" {
  365. condition += ` AND modify_time >= ? `
  366. pars = append(pars, modifyStartTime)
  367. }
  368. //更新结束时间
  369. if modifyEndTime != "" {
  370. condition += ` AND modify_time <= ? `
  371. pars = append(pars, modifyEndTime)
  372. }
  373. //关键字
  374. if keyword != "" {
  375. condition += ` AND (contract_code LIKE '%` + keyword + `%' OR company_name LIKE '%` + keyword + `%' OR credit_code LIKE '%` + keyword + `%' ) `
  376. }
  377. //关键字(全等)
  378. if keywordEq != "" {
  379. condition += ` AND c.company_name =? `
  380. pars = append(pars, keywordEq)
  381. }
  382. pageSize, _ := c.GetInt("PageSize")
  383. currentIndex, _ := c.GetInt("CurrentIndex")
  384. var startSize int
  385. if pageSize <= 0 {
  386. pageSize = utils.PageSize20
  387. }
  388. if currentIndex <= 0 {
  389. currentIndex = 1
  390. }
  391. startSize = paging.StartIndex(currentIndex, pageSize)
  392. total, err := contract.GetContractListCount(condition, pars)
  393. if err != nil {
  394. c.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
  395. return
  396. }
  397. list, err := contract.GetContractList(condition, pars, startSize, pageSize)
  398. if err != nil {
  399. c.FailWithMessage("获取合同列表失败", "获取合同列表失败,Err:"+err.Error())
  400. return
  401. }
  402. if len(list) > 0 {
  403. // 代付合同查询代付用户名称
  404. contractIdSlice := make([]string, 0)
  405. for i := 0; i < len(list); i ++ {
  406. if list[i].ContractBusinessType == "代付合同" {
  407. contractIdSlice = append(contractIdSlice, strconv.Itoa(list[i].ContractId))
  408. }
  409. }
  410. if len(contractIdSlice) > 0 {
  411. contractIdStr := strings.Join(contractIdSlice, ",")
  412. contractList, err := contract_relation.GetContractRelationListByPaymentOnBehalfContractIds(contractIdStr)
  413. if err != nil {
  414. c.FailWithMessage("获取失败", "获取代付合同对应的合同数据失败,Err:"+err.Error())
  415. return
  416. }
  417. userCompanyNameMap := make(map[int]string, 0)
  418. for i := 0; i < len(contractList); i ++ {
  419. userCompanyNameMap[contractList[i].PaymentOnBehalfContractId] = contractList[i].CompanyName
  420. }
  421. for _, item := range list {
  422. if item.ContractBusinessType == "代付合同" {
  423. item.UseCompanyName = userCompanyNameMap[item.ContractId]
  424. }
  425. }
  426. }
  427. }
  428. page := paging.GetPaging(currentIndex, pageSize, total)
  429. c.OkDetailed(contractResp.ContractListResp{
  430. List: list,
  431. Paging: page,
  432. }, "获取成功")
  433. }
  434. // ListV2
  435. // @Title 合同列表(包含待提交的)
  436. // @Description 合同列表接口(包含待提交的)
  437. // @Param ContractType query string false "合同类型,枚举值:'新签合同','续约合同','补充协议'"
  438. // @Param Status query string false "合同状态,枚举值:'待提交','待审批','已撤回','已审批','已驳回','已作废'"
  439. // @Param ProductId query int false "客户类型:传0或者不传为当前账号权限,1 代表是:ficc;2 代表是:权益"
  440. // @Param ModifyStartTime query string false "服务更新时间的选择开始时间,格式:2021-05-23 00:00:00"
  441. // @Param ModifyEndTime query string false "服务更新时间的选择结束时间,格式:2021-05-26 23:59:59"
  442. // @Param SellerId query string false "选择的销售id"
  443. // @Param Keyword query string false "搜索关键字"
  444. // @Param KeywordEq query string false "搜索关键字(全等)"
  445. // @Success 200 {object} contract.ContractListRespV2
  446. // @router /listV2 [get]
  447. func (c *ContractCommon) ListV2() {
  448. sysUser := c.AdminWx
  449. //合同类型、产品类型、合同状态、更新时间、所选销售
  450. //关键字:合同编号、客户名称,社会信用码
  451. contractType := c.GetString("ContractType")
  452. status := c.GetString("Status")
  453. productId, _ := c.GetInt("ProductId")
  454. modifyStartTime := c.GetString("ModifyStartTime")
  455. modifyEndTime := c.GetString("ModifyEndTime")
  456. sellerIds := c.GetString("SellerId")
  457. keyword := c.GetString("Keyword")
  458. keywordEq := c.GetString("KeywordEq")
  459. childCondition := ""
  460. condition := ""
  461. unionCondition := ""
  462. childPars := make([]interface{}, 0)
  463. pars := make([]interface{}, 0)
  464. unionPars := make([]interface{}, 0)
  465. //归属
  466. if status == "待审批" {
  467. condition += ` AND ((c.seller_id = ? and a.start_node_id = a.curr_node_id) OR (d.approve_user_id = ? )) and d.status="待审批" `
  468. } else {
  469. condition += ` AND (c.seller_id = ? or d.approve_user_id = ?)`
  470. }
  471. pars = append(pars, sysUser.AdminId, sysUser.AdminId)
  472. unionCondition += ` AND c.seller_id = ? `
  473. unionPars = append(unionPars, sysUser.AdminId)
  474. //合同类型、、更新时间、所选销售
  475. //关键字:合同编号、客户名称,社会信用码
  476. if contractType != "" {
  477. condition += ` AND c.contract_type = ? `
  478. pars = append(pars, contractType)
  479. unionCondition += ` AND c.contract_type = ? `
  480. unionPars = append(unionPars, contractType)
  481. }
  482. //审批状态
  483. if status != "" {
  484. if status == "已审批" {
  485. condition += ` AND c.status in ("已审批","已驳回") `
  486. unionCondition += ` AND c.status in ("已审批","已驳回") `
  487. } else {
  488. condition += ` AND c.status = ? `
  489. unionCondition += ` AND c.status = ? `
  490. if status == "处理中" {
  491. pars = append(pars, "待审批")
  492. unionPars = append(unionPars, "待审批")
  493. } else {
  494. pars = append(pars, status)
  495. unionPars = append(unionPars, status)
  496. }
  497. }
  498. } else {
  499. condition += ` AND c.status not in ("已撤回","待提交") `
  500. unionCondition += ` AND c.status = "待提交" `
  501. }
  502. //产品类型
  503. if productId > 0 {
  504. condition += ` AND c.product_id = ? `
  505. pars = append(pars, productId)
  506. unionCondition += ` AND c.product_id = ? `
  507. unionPars = append(unionPars, productId)
  508. }
  509. //所选销售
  510. if sellerIds != "" {
  511. condition += ` AND c.seller_id IN (` + sellerIds + `) `
  512. unionCondition += ` AND c.seller_id IN (` + sellerIds + `) `
  513. }
  514. //更新开始时间
  515. if modifyStartTime != "" {
  516. condition += ` AND a.modify_time >= ? `
  517. pars = append(pars, modifyStartTime)
  518. unionCondition += ` AND a.modify_time >= ? `
  519. unionPars = append(unionPars, modifyStartTime)
  520. }
  521. //更新结束时间
  522. if modifyEndTime != "" {
  523. condition += ` AND a.modify_time <= ? `
  524. pars = append(pars, modifyEndTime)
  525. unionCondition += ` AND a.modify_time <= ? `
  526. unionPars = append(unionPars, modifyEndTime)
  527. }
  528. //关键字
  529. if keyword != "" {
  530. condition += ` AND (c.contract_code LIKE '%` + keyword + `%' OR c.company_name LIKE '%` + keyword + `%' OR c.credit_code LIKE '%` + keyword + `%' ) `
  531. unionCondition += ` AND (c.contract_code LIKE '%` + keyword + `%' OR c.company_name LIKE '%` + keyword + `%' OR c.credit_code LIKE '%` + keyword + `%' ) `
  532. }
  533. //关键字(全等)
  534. if keywordEq != "" {
  535. condition += ` AND c.company_name =? `
  536. pars = append(pars, keywordEq)
  537. unionCondition += ` AND c.company_name =? `
  538. unionPars = append(unionPars, keywordEq)
  539. }
  540. pageSize, _ := c.GetInt("PageSize")
  541. currentIndex, _ := c.GetInt("CurrentIndex")
  542. var startSize int
  543. if pageSize <= 0 {
  544. pageSize = utils.PageSize20
  545. }
  546. if currentIndex <= 0 {
  547. currentIndex = 1
  548. }
  549. startSize = paging.StartIndex(currentIndex, pageSize)
  550. //joinCondition := " and a.curr_node_id=d.node_id"
  551. joinCondition := ""
  552. total, err := contract_approval.GetContractListCountV2(childCondition, condition, joinCondition, unionCondition, childPars, pars, unionPars)
  553. if err != nil {
  554. c.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
  555. return
  556. }
  557. list, err := contract_approval.GetContractListV2(childCondition, condition, joinCondition, unionCondition, childPars, pars, unionPars, startSize, pageSize)
  558. if err != nil {
  559. c.FailWithMessage("获取合同列表失败", "获取合同列表失败,Err:"+err.Error())
  560. return
  561. }
  562. page := paging.GetPaging(currentIndex, pageSize, total)
  563. c.OkDetailed(contractResp.ContractListRespV2{
  564. List: list,
  565. Paging: page,
  566. }, "获取成功")
  567. }
  568. // @Title 作废合同
  569. // @Description 作废合同接口
  570. // @Param request body contract.InvalidReq true "type json string"
  571. // @Success Ret=200 作废成功
  572. // @router /invalid [post]
  573. func (c *ContractCommon) Invalid() {
  574. var req contractReq.InvalidReq
  575. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  576. if err != nil {
  577. c.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
  578. return
  579. }
  580. //合同id
  581. if req.ContractId <= 0 {
  582. c.FailWithMessage("合同id必传!", "合同id必传!")
  583. return
  584. }
  585. err = contractService.InvalidContract(req.ContractId, c.AdminWx)
  586. if err != nil {
  587. c.FailWithMessage("作废合同失败!", "作废合同失败,Err:"+err.Error())
  588. return
  589. }
  590. c.OkWithMessage("作废成功")
  591. return
  592. }