2
3

contractReview.go 17 KB

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