2
3

suppliercertappend.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. package oilsupplier
  2. import (
  3. "dashoo.cn/backend/api/business/auditsetting"
  4. "dashoo.cn/backend/api/business/oilsupplier/suppliercert"
  5. "dashoo.cn/backend/api/business/workflow"
  6. "dashoo.cn/business2/userRole"
  7. "encoding/json"
  8. "strconv"
  9. "strings"
  10. "time"
  11. "dashoo.cn/backend/api/business/oilsupplier/suppliercertappend"
  12. "dashoo.cn/backend/api/business/oilsupplier/suppliercertappendsub"
  13. . "dashoo.cn/backend/api/controllers"
  14. "dashoo.cn/utils"
  15. "github.com/go-xorm/xorm"
  16. )
  17. type OilSupplierCertAppendController struct {
  18. BaseController
  19. }
  20. // @Title 获取列表
  21. // @Description 获取列表
  22. // @Success 200 {object} []suppliercertappend.OilSupplierCertAppend
  23. // @router /list [get]
  24. func (this *OilSupplierCertAppendController) GetList() {
  25. //获取分页信息
  26. page := this.GetPageInfoForm()
  27. where := " 1=1 "
  28. orderby := "Id"
  29. asc := false
  30. Order := this.GetString("Order")
  31. Prop := this.GetString("Prop")
  32. if Order != "" && Prop != "" {
  33. orderby = Prop
  34. if Order == "asc" {
  35. asc = true
  36. }
  37. }
  38. ApplyDate := this.GetString("ApplyDate")
  39. RecUnitId := this.GetString("RecUnitId")
  40. RecUnitName := this.GetString("RecUnitName")
  41. AppendType := this.GetString("AppendType")
  42. DenyReason := this.GetString("DenyReason")
  43. AuditDate := this.GetString("AuditDate")
  44. Remark := this.GetString("Remark")
  45. CreateOn := this.GetString("CreateOn")
  46. if ApplyDate != "" {
  47. where = where + " and ApplyDate like '%" + ApplyDate + "%'"
  48. }
  49. if RecUnitId != "" {
  50. where = where + " and RecUnitId like '%" + RecUnitId + "%'"
  51. }
  52. if RecUnitName != "" {
  53. where = where + " and RecUnitName like '%" + RecUnitName + "%'"
  54. }
  55. if AppendType != "" {
  56. where = where + " and AppendType like '" + AppendType + "'"
  57. }
  58. if DenyReason != "" {
  59. where = where + " and DenyReason like '%" + DenyReason + "%'"
  60. }
  61. if AuditDate != "" {
  62. where = where + " and AuditDate like '%" + AuditDate + "%'"
  63. }
  64. if Remark != "" {
  65. where = where + " and Remark like '%" + Remark + "%'"
  66. }
  67. if CreateOn != "" {
  68. dates := strings.Split(CreateOn, ",")
  69. if len(dates) == 2 {
  70. minDate := dates[0]
  71. maxDate := dates[1]
  72. where = where + " and CreateOn>='" + minDate + "' and CreateOn<='" + maxDate + "'"
  73. }
  74. }
  75. svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
  76. var list []suppliercertappend.OilSupplierCertAppend
  77. total := svc.GetPagingEntitiesWithOrderBytbl("", page.CurrentPage, page.Size, orderby, asc, &list, where)
  78. var datainfo DataInfo
  79. datainfo.Items = list
  80. datainfo.CurrentItemCount = total
  81. datainfo.PageIndex = page.CurrentPage
  82. datainfo.ItemsPerPage = page.Size
  83. this.Data["json"] = &datainfo
  84. this.ServeJSON()
  85. }
  86. // @Title 通过Id获取信息
  87. // @Description get user by token
  88. // @Success 200 {object} []suppliercertappend.OilSupplierCertAppend
  89. // @router /getEntityById/:id [get]
  90. func (this *OilSupplierCertAppendController) GetEntityById() {
  91. Id := this.Ctx.Input.Param(":id")
  92. var model suppliercertappend.OilSupplierCertAppend
  93. svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
  94. svc.GetEntityByIdBytbl(OilSupplierCertAppendName, Id, &model)
  95. this.Data["json"] = &model
  96. this.ServeJSON()
  97. }
  98. // @Title 获取公司信息
  99. // @Description 根据创建用户Id和增项类别号获取公司信息
  100. // @Success 200 {object} []suppliercertappend.OilSupplierCertAppend
  101. // @router /getsupplier/:id [get]
  102. func (this *OilSupplierCertAppendController) GetSupplier() {
  103. Id := this.Ctx.Input.Param(":id")
  104. svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
  105. sqlStr := "SELECT b.Id AS SupplierId, a.Id AS SupplierCertId, b.SupplierName AS SupplierName FROM OilSupplierCert AS a LEFT JOIN OilSupplier AS b ON a.SupplierId = b.Id "
  106. where := "WHERE b.Id is NOT NULL AND a.SupplierTypeCode = " + Id + " AND a.CreateUserId = " + this.User.Id
  107. sqlStr = sqlStr + where
  108. model, _ := svc.DBE.QueryString(sqlStr)
  109. this.Data["json"] = &model
  110. this.ServeJSON()
  111. }
  112. // @Title 添加
  113. // @Description 添加增项信息
  114. // @Success 200 {object} controllers.Request
  115. // @router /addappend [post]
  116. func (this *OilSupplierCertAppendController) AddAppend() {
  117. var model suppliercertappend.OilSupplierCertAppend
  118. var jsonblob = this.Ctx.Input.RequestBody
  119. json.Unmarshal(jsonblob, &model)
  120. model.ApplyDate = time.Now() //申请日期
  121. model.CreateOn = time.Now()
  122. model.CreateBy = this.User.Realname
  123. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  124. svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
  125. _, err := svc.InsertEntityBytbl(OilSupplierCertAppendName, &model)
  126. var errinfo ErrorDataInfo
  127. if err == nil {
  128. errinfo.Message = "操作成功!"
  129. errinfo.Code = 0
  130. errinfo.Item = model.Id
  131. this.Data["json"] = &errinfo
  132. this.ServeJSON()
  133. } else {
  134. errinfo.Message = "操作失败!" + utils.AlertProcess(err.Error())
  135. errinfo.Code = -1
  136. this.Data["json"] = &errinfo
  137. this.ServeJSON()
  138. }
  139. }
  140. // @Title 修改实体
  141. // @Description 修改实体
  142. // @Success 200 {object} controllers.Request
  143. // @router /update/:id [post]
  144. func (this *OilSupplierCertAppendController) UpdateEntity() {
  145. var errinfo ErrorInfo
  146. var model suppliercertappend.OilSupplierCertAppend
  147. id := this.Ctx.Input.Param(":id")
  148. if id == "" {
  149. errinfo.Message = "操作失败!请求信息不完整"
  150. errinfo.Code = -2
  151. this.Data["json"] = &errinfo
  152. this.ServeJSON()
  153. return
  154. }
  155. svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
  156. var jsonBlob = this.Ctx.Input.RequestBody
  157. json.Unmarshal(jsonBlob, &model)
  158. model.ApplyDate = time.Now() //更新申请日期
  159. model.ModifiedOn = time.Now()
  160. model.ModifiedBy = this.User.Realname
  161. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  162. cols := []string{
  163. "Id",
  164. "ApplyDate",
  165. "RecUnitFlag",
  166. "RecUnitId",
  167. "RecUnitName",
  168. "WorkRange",
  169. "Remark",
  170. "ModifiedOn",
  171. "ModifiedUserId",
  172. "ModifiedBy",
  173. }
  174. err := svc.UpdateEntityBytbl(OilSupplierCertAppendName, id, &model, cols)
  175. if err == nil {
  176. errinfo.Message = "修改成功!"
  177. errinfo.Code = 0
  178. this.Data["json"] = &errinfo
  179. this.ServeJSON()
  180. } else {
  181. errinfo.Message = "修改失败!" + utils.AlertProcess(err.Error())
  182. errinfo.Code = -1
  183. this.Data["json"] = &errinfo
  184. this.ServeJSON()
  185. }
  186. }
  187. // @Title 删除
  188. // @Description 级联删除
  189. // @Success 200 {object} ErrorInfo
  190. // @Failure 403 :id 为空
  191. // @router /delete/:Id [delete]
  192. func (this *OilSupplierCertAppendController) DeleteEntity() {
  193. Id := this.Ctx.Input.Param(":Id")
  194. var errinfo ErrorInfo
  195. if Id == "" {
  196. errinfo.Message = "操作失败!请求信息不完整"
  197. errinfo.Code = -2
  198. this.Data["json"] = &errinfo
  199. this.ServeJSON()
  200. return
  201. }
  202. //定义session
  203. var session *xorm.Session
  204. session = utils.DBE.NewSession()
  205. svc := suppliercertappend.GetOilSupplierCertAppendSession(session)
  206. svcSub := suppliercertappendsub.GetOilSupplierCertAppendSubSession(session)
  207. //"session开始" 之前,首先定义 "session关闭"
  208. defer session.Close()
  209. err := session.Begin()
  210. //首先删除子表信息
  211. where := "SupplierCertAppendId = " + Id
  212. err = svcSub.DeleteEntityBytbl(OilSupplierCertAppendSubName, where)
  213. if err != nil {
  214. //回滚操作
  215. session.Rollback()
  216. }
  217. //最后删除主表信息
  218. var model suppliercertappend.OilSupplierCertAppend
  219. var entityempty suppliercertappend.OilSupplierCertAppend
  220. opdesc := "删除-" + Id
  221. err = svc.DeleteOperationAndWriteLogBytbl(OilSupplierCertAppendName, BaseOperationLogName, Id, &model, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "增项信息")
  222. if err != nil {
  223. session.Rollback()
  224. }
  225. //提交操作
  226. err = session.Commit()
  227. if err == nil {
  228. errinfo.Message = "删除成功"
  229. errinfo.Code = 0
  230. this.Data["json"] = &errinfo
  231. this.ServeJSON()
  232. } else {
  233. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  234. errinfo.Code = -1
  235. this.Data["json"] = &errinfo
  236. this.ServeJSON()
  237. }
  238. }
  239. // @Title 提交审批
  240. // @Description 提交审批
  241. // @Success 200 {object} controllers.Request
  242. // @router /audit/:id [post]
  243. func (this *OilSupplierCertAppendController) AuditEntity() {
  244. certappendId := this.Ctx.Input.Param(":id")
  245. firstAudit := this.GetString("firstAudit")
  246. //取出审批列表
  247. certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
  248. var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
  249. certSrv.GetEntityById(certappendId, &supplierCertAppendEntity)
  250. var errinfo ErrorDataInfo
  251. defer func() { //finally处理失败的异常
  252. if err := recover(); err != nil {
  253. errinfo.Message = "提交失败," + err.(string)
  254. errinfo.Code = -1
  255. this.Data["json"] = &errinfo
  256. this.ServeJSON()
  257. } else {
  258. //返回正确结果
  259. errinfo.Message = "审核提交成功"
  260. errinfo.Code = 0
  261. this.Data["json"] = &errinfo
  262. this.ServeJSON()
  263. }
  264. }()
  265. svcActiviti := workflow.GetActivitiService(utils.DBE)
  266. //获得有审核权限的人员
  267. var users []userRole.Base_RoleList
  268. var userIds string
  269. var auditWorkflow auditsetting.Base_OilAuditSetting
  270. rsvc := auditsetting.GetOilAuditSettingService(utils.DBE)
  271. rsvc.GetAuditStepRoleEntity(OilAuditSettingName, firstAudit, workflow.FIRST_TRIAL, &auditWorkflow)
  272. users = rsvc.GetUserByRole(strconv.Itoa(auditWorkflow.RoleId), this.User.AccCode) //
  273. processInstanceId := ""
  274. if supplierCertAppendEntity.WorkFlowId == "0" || len(supplierCertAppendEntity.WorkFlowId) <= 0 {
  275. //启动工作流
  276. processInstanceId = svcActiviti.StartProcess(workflow.OIL_APPEND_APPLY, certappendId, this.User.Id)
  277. }
  278. for _, tmpUser := range users {
  279. userIds += strconv.FormatInt(tmpUser.Id, 10) + ","
  280. }
  281. userIds = strings.Trim(userIds, ",")
  282. var ActiComplete workflow.ActiCompleteVM
  283. ActiComplete.ProcessKey = workflow.OIL_APPEND_APPLY
  284. ActiComplete.BusinessKey = certappendId
  285. ActiComplete.UserNames = userIds
  286. ActiComplete.UserId = this.User.Id
  287. ActiComplete.Result = "1"
  288. ActiComplete.Remarks = ""
  289. ActiComplete.CallbackUrl = ""
  290. receiveVal := svcActiviti.TaskComplete(ActiComplete)
  291. if receiveVal == "true" {
  292. errinfo.Message = "提交成功!"
  293. errinfo.Code = 0
  294. this.Data["json"] = &errinfo
  295. this.ServeJSON()
  296. } else {
  297. errinfo.Message = "工作流异常,请联系管理员!"
  298. errinfo.Code = -1
  299. this.Data["json"] = &errinfo
  300. this.ServeJSON()
  301. return
  302. }
  303. //记下workflowID(首次提交时才会记录,中间状态请忽略) 及审批状态
  304. var model suppliercertappend.OilSupplierCertAppend
  305. model.WorkFlowId = processInstanceId
  306. model.Status = suppliercert.FIRST_TRIAL_STATUS //二级单位初审
  307. cols := []string{
  308. "Id",
  309. "WorkFlowId",
  310. "Status",
  311. }
  312. certSrv.UpdateEntityByIdCols(certappendId, model, cols)
  313. }