seal.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package seal
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/astaxie/beego/logs"
  6. "hongze/hongze_mobile_admin/models/custom"
  7. "hongze/hongze_mobile_admin/models/tables/seal"
  8. contractService "hongze/hongze_mobile_admin/services/contract"
  9. "hongze/hongze_mobile_admin/utils"
  10. "strings"
  11. "time"
  12. )
  13. //添加用印
  14. func AddSeal(userId, contractId, fileNum int, userName, use, useCompanyName, companyName, creditCode, serviceType, sealType, remark, fileUrl string) (sealInfo *seal.Seal, err error) {
  15. useList := []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议"}
  16. serviceTypeList := []string{"新增业务", "续约业务", "补充协议"}
  17. sealTypeList := []string{"合同章", "公章", "法人章"}
  18. if !strings.Contains(strings.Join(useList, ","), use) {
  19. err = errors.New("用印用途异常")
  20. return
  21. }
  22. if !strings.Contains(strings.Join(serviceTypeList, ","), serviceType) {
  23. err = errors.New("业务类型异常")
  24. return
  25. }
  26. if !strings.Contains(strings.Join(sealTypeList, ","), sealType) {
  27. err = errors.New("加盖印章类型异常")
  28. return
  29. }
  30. sealCode, err := seal.GetSealCode()
  31. if err != nil {
  32. return
  33. }
  34. sealInfo = &seal.Seal{
  35. Code: sealCode,
  36. UserId: userId,
  37. UserName: userName,
  38. Use: use,
  39. CompanyName: companyName,
  40. UseCompanyName: useCompanyName,
  41. CreditCode: creditCode,
  42. ServiceType: serviceType,
  43. SealType: sealType,
  44. Status: "待提交",
  45. Remark: remark,
  46. FileUrl: fileUrl,
  47. FileNum: fileNum,
  48. ContractId: contractId,
  49. ModifyTime: time.Now(),
  50. CreateTime: time.Now(),
  51. }
  52. err = seal.AddSeal(sealInfo)
  53. return
  54. }
  55. //修改用印
  56. func Edit(sealId, userId, contractId, fileNum int, use, companyName, userCompanyName, creditCode, serviceType, sealType, remark, fileUrl string) (sealInfo *seal.Seal, err error) {
  57. useList := []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议"}
  58. serviceTypeList := []string{"新增业务", "续约业务", "补充协议"}
  59. sealTypeList := []string{"合同章", "公章", "法人章"}
  60. if !strings.Contains(strings.Join(useList, ","), use) {
  61. err = errors.New("用印用途异常")
  62. return
  63. }
  64. if !strings.Contains(strings.Join(serviceTypeList, ","), serviceType) {
  65. err = errors.New("业务类型异常")
  66. return
  67. }
  68. if !strings.Contains(strings.Join(sealTypeList, ","), sealType) {
  69. err = errors.New("加盖印章类型异常")
  70. return
  71. }
  72. //查询当前合同信息
  73. sealInfo, err = seal.GetSealInfoById(sealId)
  74. if err != nil {
  75. if err.Error() == utils.ErrNoRow() {
  76. err = errors.New(fmt.Sprint("根据用印编号:", sealId, " 找不到该用印"))
  77. }
  78. return
  79. }
  80. if sealInfo.UserId != userId {
  81. err = errors.New("当前账号无操作权限")
  82. return
  83. }
  84. ignoreStatus := []string{"待提交", "已撤回", "已驳回"}
  85. if !strings.Contains(strings.Join(ignoreStatus, ","), sealInfo.Status) {
  86. err = errors.New("用印状态异常,不允许修改,当前用印状态:" + sealInfo.Status)
  87. return
  88. }
  89. //sealId,userId int, userName, use, companyName, creditCode, serviceType, sealType, remark, fileUrl string
  90. sealInfo.Use = use
  91. sealInfo.CompanyName = companyName
  92. sealInfo.UseCompanyName = userCompanyName
  93. sealInfo.CreditCode = creditCode
  94. sealInfo.ServiceType = serviceType
  95. sealInfo.SealType = sealType
  96. sealInfo.Remark = remark
  97. sealInfo.FileUrl = fileUrl
  98. sealInfo.FileNum = fileNum
  99. sealInfo.ContractId = contractId
  100. sealInfo.ModifyTime = time.Now()
  101. sealInfo.Status = "待提交" //用印状态
  102. err = sealInfo.Update([]string{"Use", "CompanyName", "CreditCode", "ServiceType", "SealType", "Remark", "FileUrl", "ModifyTime", "Status"})
  103. return
  104. }
  105. //作废用印
  106. func Invalid(sealId int, opUser *custom.AdminWx, isInvalidContract bool) (err error) {
  107. //查询当前合同信息
  108. sealInfo, err := seal.GetSealInfoById(sealId)
  109. if err != nil {
  110. if err.Error() == utils.ErrNoRow() {
  111. err = errors.New(fmt.Sprint("根据用印编号:", sealId, " 找不到初始用印"))
  112. }
  113. return
  114. }
  115. if sealInfo.UserId != opUser.AdminId && opUser.RoleTypeCode != utils.ROLE_TYPE_CODE_COMPLIANCE {
  116. err = errors.New("当前账号无操作权限")
  117. return
  118. }
  119. if sealInfo.Status != "已审批" {
  120. err = errors.New("用印状态异常,不允许作废,当前用印状态:" + sealInfo.Status)
  121. return
  122. }
  123. //如果删除状态 >0,那么代表已经被删除了
  124. if sealInfo.IsDelete > 0 {
  125. err = errors.New("该用印已删除")
  126. return
  127. }
  128. //用印作废
  129. err = seal.Invalid(sealInfo)
  130. if err != nil {
  131. return
  132. }
  133. //如果是系统合同,同时需要同步作废合同时,那么逻辑处理
  134. if sealInfo.ContractId > 0 && isInvalidContract {
  135. err = contractService.InvalidContract(sealInfo.ContractId, opUser)
  136. if err != nil {
  137. logs.Info("作废用印时,同步作废合同失败,Err:", err.Error())
  138. }
  139. }
  140. //添加操作日志
  141. //remark := "作废合同模板"
  142. //_ = contract_operation_record.AddContractOperationRecord(nowContract.ContractId, opUser.AdminId, 0, "invalid", opUser.RealName, remark)
  143. return
  144. }