We are trying to extract the Time in progress using the example on Adaptavist ScriptRunner documentation.
However, we are ending with a result of 83 years, 4 weeks, 1 day, 4 hours, 35 minutes for an item that was created 24 hours ago, while the result on "In progress" should be less than 24 hours.
According to my check the calculation is fine, it is just the output of the diff in milliseconds which is probably translated to date and then the gap is much larger.
I would appreciate if you can assist solving this issue.
import com.atlassian.core.util.DateUtils import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.history.ChangeItemBean def changeHistoryManager = ComponentAccessor.getChangeHistoryManager() def inProgressName = "In progress" List<Long> rt = [0L] def changeItems = changeHistoryManager.getChangeItemsForField(issue, "status") changeItems.reverse().each {ChangeItemBean item -> item.toString == inProgressName //log.warn(System.currentTimeMillis()) //log.warn(item.created.getTime()) //log.warn(System.currentTimeMillis() - item.created.getTime()) def timeDiff = (System.currentTimeMillis() - item.created.getTime()) if (item.fromString == inProgressName) { rt << -timeDiff } if (item.toString == inProgressName){ rt << timeDiff //log.warn(rt.sum()) } } if (! changeItems) { rt << (System.currentTimeMillis() - issue.getCreated().getTime()) } def total = rt.sum() as Long //log.warn(rt) return total ?: 0L
I had the same problem. Try the following using "Text Field(multiline)" as template:
import com.atlassian.core.util.DateUtils import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.history.ChangeItemBean def changeHistoryManager = ComponentAccessor.getChangeHistoryManager() def inProgressName = "In Progress" def rt = [0L] changeHistoryManager.getChangeItemsForField (issue, "status").reverse().each {ChangeItemBean item -> def timeDiff = System.currentTimeMillis() - item.created.getTime() if (item.fromString == inProgressName) { rt << -timeDiff } if (item.toString == inProgressName){ rt << timeDiff } } DateUtils.getDurationString(Math.round(rt.sum() / 1000))
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.