Advertisement
kibeva

groovy assignee/sql/autotransition

Oct 11th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.86 KB | None | 0 0
  1. import com.atlassian.jira.component.ComponentAccessor
  2. import com.atlassian.jira.issue.MutableIssue
  3. import com.atlassian.jira.user.ApplicationUser
  4. import com.atlassian.jira.util.JiraUtils
  5. import com.atlassian.jira.workflow.WorkflowTransitionUtil
  6. import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl
  7. import groovy.sql.Sql
  8. import org.apache.log4j.FileAppender
  9. import org.apache.log4j.Level
  10. import org.apache.log4j.TTCCLayout
  11.  
  12. import java.sql.Driver
  13.  
  14. log.setLevel(Level.DEBUG)
  15. /**
  16. * Created by user on 22.08.2017.
  17. */
  18.  
  19. def tc = new TTCCLayout("yyyy-MM-dd HH:mm:ss.SSS")
  20. def fa = new FileAppender(tc, "/opt/atlassian/jira/logs/scriptrunner.log")
  21.  
  22. log.addAppender(fa)
  23.  
  24. MutableIssue issue = (MutableIssue) issue // Заявка
  25. def xml = new XmlSlurper().parse("/var/atlassian/application-data/jira/scripts/config/conf.xml") // Указываем файл на логин пароль для postgres
  26. def driver = Class.forName('org.postgresql.Driver').newInstance() as Driver // драйвер подключения к postgres
  27. def issueManager = ComponentAccessor.getIssueManager() //менеджер заявок
  28. def userManager = ComponentAccessor.getUserManager() //менеджер пользователей
  29. def CFM = ComponentAccessor.getCustomFieldManager()
  30.  
  31. ApplicationUser UpdateUser = userManager.getUserByName("Admin")
  32. def reporter = issue.getReporter().name
  33.  
  34. String podrazdelenie = CFM.getCustomFieldObject(12104).getValue(issue) //Значение пользовательского поля "Подразделение"
  35. String cost = CFM.getCustomFieldObject(12100).getValue(issue) //Значение пользовательского поля "Статья затрат"
  36. String vid_perevozok = CFM.getCustomFieldObject(10700).getValue(issue) //Значение пользовательского поля "Вид перевозок"
  37. def status = issue.getStatus().getName() //Получение имени статуса текущей заявки
  38.  
  39. String login = xml.depthFirst().find {
  40. it.name() == 'login'
  41. } //Парсинг логина
  42. String password = xml.depthFirst().find {
  43. it.name() == 'password'
  44. } //Парсинг пароля
  45.  
  46. def props = new Properties() //Переменная проперти
  47. props.setProperty("user", login) //Указываем логин в проперти
  48. props.setProperty("password", password) //Указываем пароль в проперти
  49.  
  50. String UserSQL = new String() // Переменная пользователя который будет назначен в исполнители
  51. def conn = driver.connect("jdbc:postgresql://localhost:5432/jira", props) // Коннект к базе
  52. def sql = new Sql(conn) //Переменная с параметрами при запросе в базу
  53.  
  54. def paramsCost = [cost] //Параметры статьи затрат получаемая с поля cost
  55.  
  56. if(vid_perevozok == "Грузовые перевозки") { //Значение для переменной paramsJurname,значение берутся с поля podrazdelenie
  57. paramsJurname = [podrazdelenie + " грузотакси"]
  58. } else{
  59. paramsJurname = [podrazdelenie]
  60. }
  61.  
  62. try {
  63.  
  64. switch (status) {
  65. case "Согл. рег. дир.":
  66. sql.eachRow("SELECT comdirneed FROM main.jira_cost where cost = ?", paramsCost) { row -> comdirneed = row.comdirneed
  67. }
  68. sql.eachRow("SELECT regdir FROM main.jira_juridical where jurname = ?", paramsJurname) { row -> regdir = row.regdir
  69. }
  70. if (reporter == regdir) {
  71. if (comdirneed == true) {
  72. def actionId = 341
  73. WorkflowTransitionUtil workflowTransitionUtil = ( WorkflowTransitionUtil ) JiraUtils.loadComponent( WorkflowTransitionUtilImpl.class )
  74.  
  75. workflowTransitionUtil.setIssue(issue)
  76. workflowTransitionUtil.setUserkey("autotransition")
  77. workflowTransitionUtil.setAction (actionId)
  78.  
  79. // validate and transition issue
  80. workflowTransitionUtil.validate()
  81. workflowTransitionUtil.progress()
  82.  
  83. sql.eachRow("SELECT comdir FROM main.jira_juridical where jurname = ?", paramsJurname) { row ->
  84. UserSQL = row.comdir
  85. }
  86.  
  87. } else {
  88. def actionId = 431
  89. WorkflowTransitionUtil workflowTransitionUtil = ( WorkflowTransitionUtil ) JiraUtils.loadComponent( WorkflowTransitionUtilImpl.class )
  90.  
  91. workflowTransitionUtil.setIssue(issue)
  92. workflowTransitionUtil.setUserkey("admin")
  93. workflowTransitionUtil.setAction (actionId)
  94.  
  95. // validate and transition issue
  96. workflowTransitionUtil.validate()
  97. workflowTransitionUtil.progress()
  98. }
  99. } else {
  100. sql.eachRow("SELECT regdir FROM main.jira_juridical where jurname = ?", paramsJurname) { row -> UserSQL = row.regdir
  101. }
  102. }; break
  103.  
  104.  
  105. case "Согл. держателем бюджета": if (cost == "Реклама") {
  106. if (vid_perevozok == "Грузовые перевозки") {
  107. sql.eachRow("SELECT koordreklama FROM main.jira_juridical where jurname = ?", paramsJurname) { row ->
  108. UserSQL = row.koordreklama
  109. }
  110. } else {
  111. sql.eachRow("SELECT koordreklama FROM main.jira_juridical where jurname = ?", paramsJurname) { row ->
  112. UserSQL = row.koordreklama
  113. }
  114. }
  115. } else {
  116. sql.eachRow("SELECT budgetHolder FROM main.jira_cost where cost = ?", paramsCost) { row ->
  117. UserSQL = row.budgetHolder
  118.  
  119. }; break
  120. }; break
  121.  
  122. case "Согл. казначеем": sql.eachRow("SELECT kaznachey FROM main.jira_juridical where jurname = ?", paramsJurname) { row ->
  123. UserSQL = row.kaznachey
  124. }; break
  125.  
  126. case "Оплата": sql.eachRow("SELECT buhoplata FROM main.jira_juridical where jurname = ?", paramsJurname) { row ->
  127. UserSQL = row.buhoplata
  128. }; break
  129.  
  130. case "Согл. фин. дир.": sql.eachRow("SELECT findir FROM main.jira_juridical where jurname = ?", paramsJurname) { row ->
  131. UserSQL = row.findir
  132. }; break
  133. case "Согл. комм.дир.":
  134. sql.eachRow("SELECT comdir FROM main.jira_juridical where jurname = ?", paramsJurname) { row ->
  135. UserSQL = row.comdir
  136. }; break
  137.  
  138.  
  139. }
  140. } finally {
  141. sql.close()
  142. conn.close()
  143. }
  144. /*
  145. log.debug("Номер заявки " + issue +
  146. "Cтатус: " + issue.getStatus().getName()
  147. + "Автор: " + issue.getReporter().getName())
  148.  
  149. */
  150. log.removeAppender(fa)
  151. ApplicationUser assignee = userManager.getUserByName(UserSQL)
  152.  
  153. issue.setAssignee(assignee)
  154.  
  155. //issueManager.updateIssue(UpdateUser, issue, EventDispatchOption.ISSUE_ASSIGNED, false)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement