contractReview.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
  1. package oilcontract
  2. import (
  3. "dashoo.cn/backend/api/business/oilcontract/contractEvaluationItems"
  4. "dashoo.cn/backend/api/business/oilcontract/contract"
  5. "dashoo.cn/backend/api/business/oilcontract/contractReview"
  6. "dashoo.cn/backend/api/business/oilsupplier/suppliercert"
  7. "dashoo.cn/backend/api/business/workflow"
  8. "encoding/json"
  9. "strconv"
  10. "strings"
  11. "time"
  12. "fmt"
  13. "dashoo.cn/backend/api/business/baseUser"
  14. // "dashoo.cn/backend/api/business/items"
  15. . "dashoo.cn/backend/api/controllers"
  16. "dashoo.cn/business2/userRole"
  17. "dashoo.cn/utils"
  18. )
  19. type OilContractReviewController struct {
  20. BaseController
  21. }
  22. // @Title 获取列表
  23. // @Description get user by token
  24. // @Success 200 {object} []contractReview.OilContractReviewWorkFlow
  25. // @router /list [get]
  26. func (this *OilContractReviewController) GetEntityList() {
  27. //获取分页信息
  28. page := this.GetPageInfoForm()
  29. where := " 1=1 "
  30. orderby := "Id"
  31. asc := " desc "
  32. Order := this.GetString("Order")
  33. Prop := this.GetString("Prop")
  34. if Order != "" && Prop != "" {
  35. orderby = Prop
  36. if Order == "asc" {
  37. asc = " asc "
  38. }
  39. }
  40. Id := this.GetString("Id")
  41. ContractClass := this.GetString("ContractClass")
  42. WorkflowId := this.GetString("WorkflowId")
  43. BusinessKey := this.GetString("BusinessKey")
  44. ProcessKey := this.GetString("ProcessKey")
  45. BackRemark := this.GetString("BackRemark")
  46. CreateOn := this.GetString("CreateOn")
  47. if Id != "" {
  48. where = where + " and r.Id like '%" + Id + "%'"
  49. }
  50. if ContractClass != "" {
  51. where = where + " and c.ContractClass = '" + ContractClass + "'"
  52. }
  53. if WorkflowId != "" {
  54. where = where + " and r.WorkflowId like '%" + WorkflowId + "%'"
  55. }
  56. if BusinessKey != "" {
  57. where = where + " and r.BusinessKey like '%" + BusinessKey + "%'"
  58. }
  59. if ProcessKey != "" {
  60. where = where + " and r.ProcessKey like '%" + ProcessKey + "%'"
  61. }
  62. if BackRemark != "" {
  63. where = where + " and r.BackRemark like '%" + BackRemark + "%'"
  64. }
  65. if CreateOn != "" {
  66. dates := strings.Split(CreateOn, ",")
  67. if len(dates) == 2 {
  68. minDate := dates[0]
  69. maxDate := dates[1]
  70. where = where + " and r.CreateOn>='" + minDate + "' and r.CreateOn<='" + maxDate + "'"
  71. }
  72. }
  73. // 权限过滤 自己创建的评价 ,同二级部门创建的评价 ,企管法规处能看
  74. where = where + " ( r.CreateUserId = '" + this.User.Id + "' "
  75. where = where + " or r.UnitId = '" + strconv.Itoa(this.User.UnitId) + "' "
  76. // 还少个企管法规处
  77. where = where + " )"
  78. svc := contractReview.GetOilContractReviewService(utils.DBE)
  79. var list []contractReview.OilContractReviewListVo
  80. total := svc.GetContractReviewList(page.CurrentPage, page.Size, orderby, asc, &list, where)
  81. var datainfo DataInfo
  82. datainfo.Items = list
  83. datainfo.CurrentItemCount = total
  84. datainfo.PageIndex = page.CurrentPage
  85. datainfo.ItemsPerPage = page.Size
  86. this.Data["json"] = &datainfo
  87. this.ServeJSON()
  88. }
  89. // @Title 获取字典列表
  90. // @Description get user by token
  91. // @Success 200 {object} map[string]interface{}
  92. // @router /dictlist [get]
  93. func (this *OilContractReviewController) GetDictList() {
  94. dictList := make(map[string]interface{})
  95. //dictSvc := items.GetItemsService(utils.DBE)
  96. userSvc := baseUser.GetBaseUserService(utils.DBE)
  97. //customerSvc := svccustomer.GetCustomerService(utils.DBE)
  98. //dictList["WellNo"] = dictSvc.GetKeyValueItems("WellNo", this.User.AccCode)
  99. var userEntity userRole.Base_User
  100. userSvc.GetEntityById(this.User.Id, &userEntity)
  101. dictList["Supervisers"] = userSvc.GetUserListByDepartmentId(this.User.AccCode, userEntity.Departmentid)
  102. //var dictCustomer []svccustomer.Customer
  103. //customerSvc.GetEntitysByWhere(this.User.AccCode + CustomerName, "", &dictCustomer)
  104. //dictList["EntrustCorp"] = &dictCustomer
  105. var datainfo DataInfo
  106. datainfo.Items = dictList
  107. this.Data["json"] = &datainfo
  108. this.ServeJSON()
  109. }
  110. // @Title 获取实体
  111. // @Description 获取实体
  112. // @Success 200 {object} contractReview.OilContractReviewWorkFlow
  113. // @router /get/:id [get]
  114. func (this *OilContractReviewController) GetEntity() {
  115. Id := this.Ctx.Input.Param(":id")
  116. var model contractReview.OilContractReview
  117. svc := contractReview.GetOilContractReviewService(utils.DBE)
  118. svc.GetEntityByIdBytbl(OilContractReviewName, Id, &model)
  119. this.Data["json"] = &model
  120. this.ServeJSON()
  121. }
  122. // @Title 添加
  123. // @Description 新增
  124. // @Param body body contractReview.OilContractReviewWorkFlow
  125. // @Success 200 {object} controllers.Request
  126. // @router /add [post]
  127. func (this *OilContractReviewController) AddEntity() {
  128. var modeVO contractReview.OilContractReviewVo
  129. var jsonBlob = this.Ctx.Input.RequestBody
  130. json.Unmarshal(jsonBlob, &modeVO)
  131. svc := contractReview.GetOilContractReviewService(utils.DBE)
  132. itemSvc := contractEvaluationItems.GetOilContractEvaluationItemsService(utils.DBE)
  133. var reviewMode contractReview.OilContractReview
  134. reviewMode.ContractId = modeVO.ContractId
  135. reviewMode.Status = "0"
  136. reviewMode.Unit = this.User.Unit
  137. reviewMode.UnitId = this.User.UnitId
  138. reviewMode.CreateOn = time.Now()
  139. reviewMode.CreateBy = this.User.Realname
  140. reviewMode.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  141. _, err := svc.InsertEntityBytbl(OilContractReviewName, &reviewMode)
  142. var items []contractEvaluationItems.OilContractEvaluationItems
  143. // 新增配置项
  144. for i,v := range modeVO.Items{
  145. fmt.Print(i)
  146. var temp contractEvaluationItems.OilContractEvaluationItems
  147. temp.ContentReviewId = reviewMode.Id
  148. temp.Category = 0
  149. temp.ParentId = v.ParentId
  150. temp.SequenceNo = v.SequenceNo
  151. temp.Content = v.Content
  152. temp.NormalScore = v.NormalScore
  153. temp.Score = v.Score
  154. temp.LevelCode = v.LevelCode
  155. temp.Remark = v.Remark
  156. temp.Content = v.Content
  157. items = append(items, temp)
  158. }
  159. itemSvc.DBE.Insert(items)
  160. var errinfo ErrorDataInfo
  161. if err == nil {
  162. //新增
  163. errinfo.Message = "添加成功!"
  164. errinfo.Code = 0
  165. errinfo.Item = reviewMode.Id
  166. this.Data["json"] = &errinfo
  167. this.ServeJSON()
  168. } else {
  169. errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
  170. errinfo.Code = -1
  171. this.Data["json"] = &errinfo
  172. this.ServeJSON()
  173. }
  174. }
  175. // @Title 修改实体
  176. // @Description 修改实体
  177. // @Param body body contractReview.OilContractReviewWorkFlow
  178. // @Success 200 {object} controllers.Request
  179. // @router /update/:id [post]
  180. func (this *OilContractReviewController) UpdateEntity() {
  181. id := this.Ctx.Input.Param(":id")
  182. var errinfo ErrorInfo
  183. if id == "" {
  184. errinfo.Message = "操作失败!请求信息不完整"
  185. errinfo.Code = -2
  186. this.Data["json"] = &errinfo
  187. this.ServeJSON()
  188. return
  189. }
  190. var modeVO contractReview.OilContractReviewVo
  191. svc := contractReview.GetOilContractReviewService(utils.DBE)
  192. itemSvc := contractEvaluationItems.GetOilContractEvaluationItemsService(utils.DBE)
  193. var jsonBlob = this.Ctx.Input.RequestBody
  194. json.Unmarshal(jsonBlob, &modeVO)
  195. var reviewMode contractReview.OilContractReview
  196. reviewMode.ContractId = modeVO.ContractId
  197. reviewMode.Status = "0"
  198. reviewMode.ModifiedOn = time.Now()
  199. reviewMode.ModifiedBy = this.User.Realname
  200. reviewMode.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  201. cols := []string{
  202. "Id",
  203. "ContractId",
  204. "Status",
  205. "WorkflowId",
  206. "BusinessKey",
  207. "ProcessKey",
  208. "BackRemark",
  209. "FirstAudit",
  210. "SecondAudit",
  211. "ThirdAudit",
  212. "FourthAudit",
  213. "ProfessionalAudit",
  214. "AuditIndex",
  215. "IsFinal",
  216. "CreateOn",
  217. "CreateUserId",
  218. "CreateBy",
  219. "ModifiedOn",
  220. "ModifiedUserId",
  221. "ModifiedBy",
  222. }
  223. err := svc.UpdateEntityBytbl(OilContractReviewName, id, &reviewMode, cols)
  224. where := "ContentReviewId=" + id
  225. // 清除掉之前的
  226. itemSvc.DeleteEntityBytbl(OilContractReviewName,where)
  227. var items []contractEvaluationItems.OilContractEvaluationItems
  228. // 新增配置项
  229. for i,v := range modeVO.Items{
  230. fmt.Print(i)
  231. var temp contractEvaluationItems.OilContractEvaluationItems
  232. temp.ContentReviewId = reviewMode.Id
  233. temp.Category = 0
  234. temp.ParentId = v.ParentId
  235. temp.SequenceNo = v.SequenceNo
  236. temp.Content = v.Content
  237. temp.NormalScore = v.NormalScore
  238. temp.Score = v.Score
  239. temp.LevelCode = v.LevelCode
  240. temp.Remark = v.Remark
  241. temp.Content = v.Content
  242. items = append(items, temp)
  243. }
  244. itemSvc.DBE.Insert(items)
  245. if err == nil {
  246. errinfo.Message = "修改成功!"
  247. errinfo.Code = 0
  248. this.Data["json"] = &errinfo
  249. this.ServeJSON()
  250. } else {
  251. errinfo.Message = "修改失败!" + utils.AlertProcess(err.Error())
  252. errinfo.Code = -1
  253. this.Data["json"] = &errinfo
  254. this.ServeJSON()
  255. }
  256. }
  257. // @Title 删除单条信息
  258. // @Description
  259. // @Success 200 {object} ErrorInfo
  260. // @Failure 403 :id 为空
  261. // @router /delete/:Id [delete]
  262. func (this *OilContractReviewController) DeleteEntity() {
  263. Id := this.Ctx.Input.Param(":Id")
  264. var errinfo ErrorInfo
  265. if Id == "" {
  266. errinfo.Message = "操作失败!请求信息不完整"
  267. errinfo.Code = -2
  268. this.Data["json"] = &errinfo
  269. this.ServeJSON()
  270. return
  271. }
  272. var model contractReview.OilContractReview
  273. var entityempty contractReview.OilContractReview
  274. svc := contractReview.GetOilContractReviewService(utils.DBE)
  275. // 评分审核是否结束校验
  276. opdesc := "删除-" + Id
  277. err := svc.DeleteOperationAndWriteLogBytbl(OilContractReviewName, BaseOperationLogName, Id, &model, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "钻井日报")
  278. if err == nil {
  279. errinfo.Message = "删除成功"
  280. errinfo.Code = 0
  281. this.Data["json"] = &errinfo
  282. this.ServeJSON()
  283. } else {
  284. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  285. errinfo.Code = -1
  286. this.Data["json"] = &errinfo
  287. this.ServeJSON()
  288. }
  289. }
  290. // @Title 二级单位提交审批 --启动工作流
  291. // @Description 二级单位提交审批
  292. // @Success 200 {object} controllers.Request
  293. // @router /unit-audit/:id [post]
  294. func (this *OilContractReviewController) UnitAuditEntity() {
  295. Id := this.Ctx.Input.Param(":id")
  296. firstAudit := this.GetString("FirstAudit")
  297. secondAudit := this.GetString("SecondAudit")
  298. thirdAudit := this.GetString("ThirdAudit")
  299. AuditRemark := this.GetString("AuditRemark")
  300. userId := this.User.Id
  301. var baseUserInfo userRole.Base_User
  302. userService := userRole.GetUserService(utils.DBE)
  303. userService.GetEntityById(userId, &baseUserInfo)
  304. unitId := baseUserInfo.UnitId
  305. fmt.Println("2222222222")
  306. var errinfo ErrorDataInfo
  307. defer func() { //finally处理失败的异常
  308. if err := recover(); err != nil {
  309. errinfo.Message = err.(string)
  310. errinfo.Code = -1
  311. this.Data["json"] = &errinfo
  312. this.ServeJSON()
  313. } else {
  314. //返回正确结果
  315. errinfo.Message = "审核提交成功"
  316. errinfo.Code = 0
  317. this.Data["json"] = &errinfo
  318. this.ServeJSON()
  319. }
  320. }()
  321. //取出日常评审主表信息
  322. conRev := contractReview.GetOilContractReviewService(utils.DBE)
  323. var contractReviewEntity contractReview.OilContractReview
  324. conRev.GetEntityById(Id, &contractReviewEntity)
  325. //检查是否可提交
  326. //conRev.IsSupplierCertCanSubmit(strconv.Itoa(supplierCertEntity.SupplierId), certId)
  327. //取出合同表
  328. contractSvc := contract.GetOilContractService(utils.DBE)
  329. var contractEntity contract.OilContract
  330. contractSvc.GetEntityById(contractReviewEntity.ContractId, &contractEntity)
  331. svcActiviti := workflow.GetActivitiService(utils.DBE)
  332. //启动工作流
  333. businessKey := contractReviewEntity.BusinessKey
  334. processInstanceId := contractReviewEntity.WorkflowId
  335. // 如果被驳回,不再新启工作流
  336. if processInstanceId == "" {
  337. //启动工作流
  338. businessKey = Id + "-" + strconv.Itoa(contractReviewEntity.AuditIndex)
  339. processInstanceId = svcActiviti.StartProcess2(workflow.OIL_DAILY_CONTRACT_EVALUATION, businessKey, this.User.Id, "1", contractEntity.ContractClass, contractEntity.SupplierName)
  340. if len(processInstanceId) <= 0 {
  341. panic("工作流启动失败!")
  342. }
  343. contractReviewEntity.AuditIndex += 1
  344. }
  345. // 将启动和工作流,选择的初审和复审人员保存下来
  346. cols := []string{
  347. "Id",
  348. "FirstAudit",
  349. "SecondAudit",
  350. "thirdAudit",
  351. "WorkflowId",
  352. "BusinessKey",
  353. "ProcessKey",
  354. "CommitComId",
  355. "AuditIndex",
  356. }
  357. contractReviewEntity.ProcessKey = workflow.OIL_DAILY_CONTRACT_EVALUATION
  358. contractReviewEntity.BusinessKey = businessKey
  359. contractReviewEntity.WorkflowId = processInstanceId
  360. contractReviewEntity.FirstAudit, _ = strconv.Atoi(firstAudit)
  361. contractReviewEntity.SecondAudit, _ = strconv.Atoi(secondAudit)
  362. contractReviewEntity.ThirdAudit, _ = strconv.Atoi(thirdAudit)
  363. contractReviewEntity.CommitComId = strconv.Itoa(unitId)
  364. conRev.UpdateEntityByIdCols(Id, contractReviewEntity, cols)
  365. var ActiComplete workflow.ActiCompleteVM
  366. ActiComplete.ProcessKey = workflow.OIL_DAILY_CONTRACT_EVALUATION
  367. ActiComplete.BusinessKey = contractReviewEntity.BusinessKey
  368. ActiComplete.UserId = this.User.Id // 当前审批操作人员
  369. //ActiComplete.UserNames = secondAudit // 当前审批操作人员
  370. ActiComplete.Result = "2" //分办提交给二级单位初审
  371. ActiComplete.Remarks = AuditRemark
  372. ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
  373. receiveVal := svcActiviti.TaskComplete(ActiComplete)
  374. if receiveVal != "true" {
  375. panic("工作流异常,请联系管理员!" + receiveVal)
  376. }
  377. }
  378. // @Title 分办之后的各级审批 --审批 包含:二级单位初审、复审, 业务处室专业审核
  379. // @Description 分办之后的各级审批
  380. // @Success 200 {object} controllers.Request
  381. // @router /common-audit/:id [post]
  382. func (this *OilContractReviewController) CommonAuditEntity() {
  383. Id := this.Ctx.Input.Param(":id")
  384. result := this.GetString("result")
  385. AuditRemark := this.GetString("AuditRemark")
  386. var errinfo ErrorDataInfo
  387. defer func() { //finally处理失败的异常
  388. if err := recover(); err != nil {
  389. errinfo.Message = err.(string)
  390. errinfo.Code = -1
  391. this.Data["json"] = &errinfo
  392. this.ServeJSON()
  393. } else {
  394. //返回正确结果
  395. errinfo.Message = "审核提交成功"
  396. errinfo.Code = 0
  397. this.Data["json"] = &errinfo
  398. this.ServeJSON()
  399. }
  400. }()
  401. //取出日常评审主表信息
  402. conRev := contractReview.GetOilContractReviewService(utils.DBE)
  403. var contractReviewEntity contractReview.OilContractReview
  404. conRev.GetEntityById(Id, &contractReviewEntity)
  405. svcActiviti := workflow.GetActivitiService(utils.DBE)
  406. var ActiComplete workflow.ActiCompleteVM
  407. ActiComplete.ProcessKey = workflow.OIL_DAILY_CONTRACT_EVALUATION
  408. ActiComplete.BusinessKey = contractReviewEntity.BusinessKey
  409. ActiComplete.UserId = this.User.Id //审批人员
  410. ActiComplete.Result = result //前台审批[同意、不同意]
  411. ActiComplete.Remarks = AuditRemark
  412. ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
  413. receiveVal := svcActiviti.TaskComplete(ActiComplete)
  414. if receiveVal != "true" {
  415. panic("工作流异常,请联系管理员!" + receiveVal)
  416. }
  417. }
  418. // @Title 业务处室接收分办
  419. // @Description 业务处室接收分办
  420. // @Success 200 {object} controllers.Request
  421. // @router /business-separate-audit/:id [post]
  422. func (this *OilContractReviewController) BusinessOfficeSeparateAuditEntity() {
  423. Id := this.Ctx.Input.Param(":id")
  424. ProfessionalAudit := this.GetString("ProfessionalAudit")
  425. AuditRemark := this.GetString("AuditRemark")
  426. var errInfo ErrorDataInfo
  427. defer func() { //finally处理失败的异常
  428. if err := recover(); err != nil {
  429. errInfo.Message = err.(string)
  430. errInfo.Code = -1
  431. this.Data["json"] = &errInfo
  432. this.ServeJSON()
  433. } else {
  434. //返回正确结果
  435. errInfo.Message = "审核提交成功"
  436. errInfo.Code = 0
  437. this.Data["json"] = &errInfo
  438. this.ServeJSON()
  439. }
  440. }()
  441. //取出日常评审主表信息
  442. conRev := contractReview.GetOilContractReviewService(utils.DBE)
  443. var contractReviewEntity contractReview.OilContractReview
  444. conRev.GetEntityById(Id, &contractReviewEntity)
  445. svcActiviti := workflow.GetActivitiService(utils.DBE)
  446. var ActiComplete workflow.ActiCompleteVM
  447. ActiComplete.ProcessKey = workflow.OIL_DAILY_CONTRACT_EVALUATION
  448. ActiComplete.BusinessKey = contractReviewEntity.BusinessKey
  449. ActiComplete.UserId = this.User.Id //审批人员
  450. ActiComplete.Result = "1" //前台审批[同意、不同意]
  451. ActiComplete.UserNames = ProfessionalAudit
  452. ActiComplete.Remarks = AuditRemark
  453. ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
  454. receiveVal := svcActiviti.TaskComplete(ActiComplete)
  455. if receiveVal != "true" {
  456. panic("工作流异常,请联系管理员!" + receiveVal)
  457. }
  458. cols := []string{
  459. "Id",
  460. "Status",
  461. "ProfessionalAudit",
  462. }
  463. supplierCertId := strings.Split(contractReviewEntity.BusinessKey, "-")[0]
  464. contractReviewEntity.Status = suppliercert.PROF_AUDIT_STATUS //专业处室接收
  465. contractReviewEntity.ProfessionalAudit, _ = strconv.Atoi(ProfessionalAudit)
  466. conRev.UpdateEntityByIdCols(supplierCertId, contractReviewEntity, cols)
  467. }