seal.go 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. package controllers
  2. import (
  3. "encoding/json"
  4. sealReq "hongze/hongze_mobile_admin/models/request/seal"
  5. sealResp "hongze/hongze_mobile_admin/models/response/seal"
  6. "hongze/hongze_mobile_admin/models/tables/contract_approval"
  7. "hongze/hongze_mobile_admin/models/tables/contract_approval_record"
  8. "hongze/hongze_mobile_admin/models/tables/seal"
  9. sealService "hongze/hongze_mobile_admin/services/seal"
  10. "hongze/hongze_mobile_admin/utils"
  11. )
  12. //用印模块
  13. type SealCommon struct {
  14. BaseAuth
  15. }
  16. // @Title 新增用印
  17. // @Description 新增用印接口
  18. // @Param request body seal.AddReq true "type json string"
  19. // @Success Ret=200 新增用印成功
  20. // @router /add [post]
  21. func (this *SealCommon) Add() {
  22. var req sealReq.AddReq
  23. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  24. if err != nil {
  25. this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
  26. return
  27. }
  28. //参数校验
  29. paramVerify := utils.Rules{
  30. "Use": {utils.NotEmpty()},
  31. "CompanyName": {utils.NotEmpty()},
  32. "CreditCode": {utils.NotEmpty()},
  33. "ServiceType": {utils.NotEmpty()},
  34. "SealType": {utils.NotEmpty()},
  35. "FileUrl": {utils.NotEmpty()},
  36. }
  37. err = utils.Verify(req, paramVerify, utils.LANG_CN)
  38. if err != nil {
  39. this.FailWithMessage("缺少参数", err.Error())
  40. return
  41. }
  42. sealInfo, err := sealService.AddSeal(this.AdminWx.AdminId, req.ContractId, req.FileNum, this.AdminWx.RealName, req.Use, req.UseCompanyName, req.CompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrl)
  43. if err != nil {
  44. this.FailWithMessage("用印添加失败", err.Error())
  45. return
  46. }
  47. err = sealService.Apply(sealInfo)
  48. if err != nil {
  49. this.FailWithMessage("发起用印审批失败", "发起用印审批失败,Err:"+err.Error())
  50. return
  51. }
  52. this.OkDetailed(sealResp.AddSealResp{
  53. SealId: sealInfo.SealId,
  54. }, "发起用印审批成功")
  55. }
  56. // @Title 编辑用印
  57. // @Description 编辑用印接口
  58. // @Param request body seal.EditReq true "type json string"
  59. // @Success 200 {object} seal.AddSealResp
  60. // @router /edit [post]
  61. func (this *SealCommon) Edit() {
  62. var req sealReq.EditReq
  63. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  64. if err != nil {
  65. this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
  66. return
  67. }
  68. //参数校验
  69. paramVerify := utils.Rules{
  70. "SealId": {utils.NotEmpty()},
  71. "Use": {utils.NotEmpty()},
  72. "CompanyName": {utils.NotEmpty()},
  73. "CreditCode": {utils.NotEmpty()},
  74. "ServiceType": {utils.NotEmpty()},
  75. "SealType": {utils.NotEmpty()},
  76. "FileUrl": {utils.NotEmpty()},
  77. }
  78. err = utils.Verify(req, paramVerify, utils.LANG_CN)
  79. if req.SealId <= 0 {
  80. this.FailWithMessage("合同编号必传!", "合同编号必传!")
  81. return
  82. }
  83. sealInfo, err := sealService.Edit(req.SealId, this.AdminWx.AdminId, req.ContractId, req.FileNum, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrl)
  84. if err != nil {
  85. this.FailWithMessage("修改合同失败!", "修改合同失败,Err:"+err.Error())
  86. return
  87. }
  88. tmpErr := sealService.Apply(sealInfo)
  89. if tmpErr != nil {
  90. this.FailWithMessage("发起重申失败!", "发起重申失败,Err:"+tmpErr.Error())
  91. return
  92. }
  93. this.OkDetailed(sealResp.AddSealResp{
  94. SealId: sealInfo.SealId,
  95. }, "发起重申成功")
  96. }
  97. // @Title 审批者编辑用印
  98. // @Description 审批者编辑用印接口
  99. // @Param request body seal.EditReq true "type json string"
  100. // @Success 200 {object} seal.AddSealResp
  101. // @router /check_edit [post]
  102. func (this *SealCommon) CheckEdit() {
  103. var req sealReq.CheckEditReq
  104. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  105. if err != nil {
  106. this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
  107. return
  108. }
  109. //参数校验
  110. paramVerify := utils.Rules{
  111. "SealId": {utils.NotEmpty()},
  112. "Use": {utils.NotEmpty()},
  113. "CompanyName": {utils.NotEmpty()},
  114. "CreditCode": {utils.NotEmpty()},
  115. "ServiceType": {utils.NotEmpty()},
  116. "SealType": {utils.NotEmpty()},
  117. "FileUrl": {utils.NotEmpty()},
  118. }
  119. err = utils.Verify(req, paramVerify, utils.LANG_CN)
  120. sealId := req.SealId
  121. if sealId <= 0 {
  122. this.FailWithMessage("请传入用印单编号!", "请传入用印单编号!")
  123. return
  124. }
  125. //数据校验(校验是否具有审批权限)
  126. sealInfo, approvalInfo, approvalRecord, err := sealService.CheckApproveAuth(sealId, this.AdminWx)
  127. err = sealService.CheckEdit(sealInfo, approvalInfo, approvalRecord, req.FileNum, req.Use, req.SealType, req.Remark, this.AdminWx)
  128. if err != nil {
  129. this.FailWithMessage("修改合同失败!", "修改合同失败,Err:"+err.Error())
  130. return
  131. }
  132. tmpErr := sealService.Apply(sealInfo)
  133. if tmpErr != nil {
  134. this.FailWithMessage("发起重申失败!", "发起重申失败,Err:"+tmpErr.Error())
  135. return
  136. }
  137. this.OkDetailed(sealResp.AddSealResp{
  138. SealId: sealInfo.SealId,
  139. }, "发起重申成功")
  140. }
  141. // @Title 获取用印详情
  142. // @Description 获取用印详情接口
  143. // @Param SealId query int true "用印id"
  144. // @Success 200 {object} seal.SealDetailResp
  145. // @router /detail [get]
  146. func (this *SealCommon) Detail() {
  147. //合同类型、产品类型、合同状态、更新时间、所选销售
  148. //关键字:合同编号、客户名称,社会信用码
  149. sealId, _ := this.GetInt("SealId")
  150. //用印id
  151. if sealId <= 0 {
  152. this.FailWithMessage("用印id必传!", "用印id必传!")
  153. return
  154. }
  155. sealInfo, err := seal.GetSealInfoById(sealId)
  156. if err != nil {
  157. this.FailWithMessage("获取合同详情失败!", "获取合同详情失败,ERR:"+err.Error())
  158. return
  159. }
  160. //审批流
  161. flowNodeListResp := make([][]contract_approval_record.ContractApprovalRecord, 0)
  162. //审批操作权限,上传签回文件权限
  163. var opButton sealResp.OpButton
  164. //查询最近一次审批单信息
  165. lastApprovalInfo, err := contract_approval.GetLastContractApprovalByContractId(sealInfo.SealId, "seal")
  166. if err != nil {
  167. if err.Error() != utils.NotEmpty() {
  168. this.FailWithMessage("获取最近一次审批单信息失败!", "获取最近一次审批单信息失败,ERR:"+err.Error())
  169. return
  170. }
  171. }
  172. if lastApprovalInfo != nil {
  173. //获取审批操作和审批流数据
  174. tmpSealOpButton, tmpFlowNodeListResp, err := sealService.GetOpButton(sealInfo, lastApprovalInfo, this.AdminWx)
  175. if err != nil {
  176. this.FailWithMessage("获取用印详情失败", "获取用印详情失败,Err:"+err.Error())
  177. }
  178. opButton = tmpSealOpButton
  179. flowNodeListResp = tmpFlowNodeListResp
  180. }
  181. resp := sealResp.SealDetailResp{
  182. SealDetail: sealInfo,
  183. FlowNodeList: flowNodeListResp,
  184. OpButton: opButton,
  185. }
  186. this.OkDetailed(resp, "获取成功")
  187. }
  188. // @Title 作废合同
  189. // @Description 作废合同接口
  190. // @Param request body seal.InvalidReq true "type json string"
  191. // @Success Ret=200 作废成功
  192. // @router /invalid [post]
  193. func (this *SealCommon) Invalid() {
  194. var req sealReq.InvalidReq
  195. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  196. if err != nil {
  197. this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
  198. return
  199. }
  200. //用印id
  201. if req.SealId <= 0 {
  202. this.FailWithMessage("用印id必传!", "用印id必传!")
  203. return
  204. }
  205. err = sealService.Invalid(req.SealId, this.AdminWx, req.IsInvalidContract)
  206. if err != nil {
  207. this.FailWithMessage("作废用印失败!", "作废用印失败,Err:"+err.Error())
  208. return
  209. }
  210. this.OkWithMessage("作废成功")
  211. return
  212. }
  213. // @Title 根据客户名称获取已存在系统中客户名称列表
  214. // @Description 获取合同详情接口
  215. // @Param CompanyName query string true "客户名称"
  216. // @Success 200 {object} []string
  217. // @router /company_list [get]
  218. func (this *SealCommon) CompanyList() {
  219. companyName := this.GetString("CompanyName")
  220. //合同id
  221. if companyName == "" {
  222. this.FailWithMessage("客户名称必传!", "客户名称必传!")
  223. return
  224. }
  225. companyNameList := make([]string, 0)
  226. list, err := seal.GetCompanyNameList(companyName)
  227. if err != nil {
  228. this.FailWithMessage("获取客户名称列表失败!", "获取客户名称列表失败,ERR:"+err.Error())
  229. return
  230. }
  231. for _, v := range list {
  232. companyNameList = append(companyNameList, v.CompanyName)
  233. }
  234. this.OkDetailed(companyNameList, "获取成功")
  235. }