Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

I want to count the values of 1 custom field of type Asset type object and display as number

Vijay Basu Chavan August 22, 2024

I want to count Affected Vehicles custom field of type asset type  and display the count in Affected vehicles Count scripted field how to that can any give me script 

2 display .jpg1 affected vehicles custom field .jpg

 

I want to count Affected Vehicles custom field of type asset type  and display the count in Affected vehicles Count scripted field how to do that  can any one give me script 

 

this is my script if any changes required please provide 

 

package OIC.Fields

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.ModifiedValue
import org.apache.log4j.Logger

// Initialize logger
def logger = Logger.getLogger("OIC.Fields.AffectedVehiclesCount")

try {
    // Get the custom field manager
    CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
   
    // Retrieve the custom fields by their names
    def affectedVehiclesFields = customFieldManager.getCustomFieldObjectsByName("Affected Vehicles")
    def affectedVehiclesCountFields = customFieldManager.getCustomFieldObjectsByName("Affected Vehicles Count")
   
    // Check if the fields are retrieved successfully
    if (affectedVehiclesFields.isEmpty() || affectedVehiclesCountFields.isEmpty()) {
        logger.error("Custom field(s) not found.")
        return "Custom field(s) not found."
    }
   
    def affectedVehiclesField = affectedVehiclesFields[0]
    def affectedVehiclesCountField = affectedVehiclesCountFields[0]
   
    // Retrieve the issue from the context
    Issue currentIssue = ComponentAccessor.getIssueManager().getIssueObject(issue.id)
   
    if (currentIssue == null) {
        logger.error("Issue not found.")
        return "Issue not found."
    }

    // Ensure we have a mutable issue for updating
    if (!(currentIssue instanceof MutableIssue)) {
        logger.error("Issue is not mutable.")
        return "Issue is not mutable."
    }
   
    // Get the list of affected vehicles (multi-select custom field value)
    def affectedVehicles = currentIssue.getCustomFieldValue(affectedVehiclesField) as Collection
   
    if (affectedVehicles == null) {
        affectedVehicles = []
    }
   
    // Count the number of selected vehicles
    int vehicleCount = affectedVehicles.size()
   
    def currentVehicleCount = currentIssue.getCustomFieldValue(affectedVehiclesCountField)
    if (currentVehicleCount != vehicleCount) {
        // Set the count in the Total Vehicles custom field
        def changeHolder = new DefaultIssueChangeHolder()
        affectedVehiclesCountField.updateValue(null, currentIssue, new ModifiedValue(currentVehicleCount, vehicleCount as Double), changeHolder)
       
        // Log the update
        logger.info("Updated Affected Vehicles Count to: $vehicleCount for issue: ${currentIssue.key}")
    } else {
        logger.info("No update for Affected Vehicles Count for issue: ${currentIssue.key}")
    }
   
    // Return the vehicle count
    return vehicleCount
} catch (Exception e) {
    logger.error("An error occurred while executing the script.", e)
    return "An error occurred: ${e.message}"
}

0 answers

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
SERVER
PRODUCT PLAN
STANDARD
TAGS
AUG Leaders

Atlassian Community Events