Index: grails-app/services/com/lemans/ds/qualitycontrol/PartReviewManagerService.groovy =================================================================== diff -u -r4cf983bb2fb037827a1ef26b95ccfa7e6a9b6f6f -raa498ddff6f2e21515887061e5aae7cb12ba366f --- grails-app/services/com/lemans/ds/qualitycontrol/PartReviewManagerService.groovy (.../PartReviewManagerService.groovy) (revision 4cf983bb2fb037827a1ef26b95ccfa7e6a9b6f6f) +++ grails-app/services/com/lemans/ds/qualitycontrol/PartReviewManagerService.groovy (.../PartReviewManagerService.groovy) (revision aa498ddff6f2e21515887061e5aae7cb12ba366f) @@ -94,22 +94,7 @@ if (hasChangeLogsWithStatus(changeLogIds, [13002])) { [messages: [[type: 'error', text: 'Some or All of the changes have already been approved, please refresh to get the latest changes']]] } else { - List partReviewUsers = partReviewUsers(changeLogIds) - List watchers = partReviewUsers.collect { it.changedBy ? it.changedBy.tokenize('\\')[1] : null }.findAll { - it != null - } - String assignee = partReviewUsers ? (partReviewUsers[0].categorySpecialist ?: 'unassigned') : 'unassigned' - - JiraTicket jiraTicket = new JiraTicket(jiraContext, jiraDigiQCUserName, jiraDigiQCPassword, jiraDigiQCPartEpic, temporaryMediaPath).with { - it.assignee = assignee - reporter = username.tokenize('\\')[1] - it.watchers = watchers - description = payload.description ?: '' - media = payload.media - summary = this.summary(partReviewUsers[0]) - it - } - JiraTicketResponse response = jiraTicket.create() + JiraTicketResponse response = createJira(payload, username) qcChangeLogService.approveOrDeclineChangeLog(changeLogIds, 13003, username) //Declined List parentIds = qcChangeLogService.getParentEntityIds(changeLogIds) parentIds.each { parentId -> @@ -122,6 +107,31 @@ } } + def createJira(Map payload, String username) { + List partReviewUsers = [] + List watchers = [] + if(payload.changeLogIds) { + partReviewUsers = partReviewUsersByChangeLogIds(payload.changeLogIds?.unique()) + watchers = partReviewUsers.collect { it.changedBy ? it.changedBy.tokenize('\\')[1] : null }.findAll { + it != null + } + } else if(payload.partNumber) { + partReviewUsers = partReviewUsersByPartNumber(payload.partNumber) + } + String assignee = partReviewUsers ? (partReviewUsers[0]?.categorySpecialist ?: 'unassigned') : 'unassigned' + + JiraTicket jiraTicket = new JiraTicket(jiraContext, jiraDigiQCUserName, jiraDigiQCPassword, jiraDigiQCPartEpic, temporaryMediaPath).with { + it.assignee = assignee + reporter = username.tokenize('\\')[1] + it.watchers = watchers + description = payload.description ?: '' + media = payload.media + summary = this.summary(partReviewUsers ? partReviewUsers[0] : null) + it + } + return jiraTicket.create() + } + private String summary(Map partInfo) { if (partInfo) { "${partInfo.qualifiedCategoryName ?: ''} - ${partInfo.primaryProductId ?: ''} - ${partInfo.partNumber ?: ''}" @@ -130,7 +140,7 @@ } } - private List partReviewUsers(List changeLogIds) { + private List partReviewUsersByChangeLogIds(List changeLogIds) { if (changeLogIds) { String query = """ SELECT @@ -159,6 +169,29 @@ } } + private List partReviewUsersByPartNumber(String partNumber) { + String query = """ +SELECT + DISTINCT p.partNumber, + p.qualifiedCategoryName, + p.primaryProductId, + categorySpecialist = cs.userName +FROM + dbo.vwPart p WITH(NOLOCK) +LEFT OUTER JOIN + dbo.Category c WITH(NOLOCK) + ON c.categoryId = p.categoryId + AND c.dateDeleted IS NULL +LEFT OUTER JOIN + dbo.CategorySpecialist cs WITH(NOLOCK) + ON cs.categoryId = c.parentCategoryId + AND cs.dateDeleted IS NULL +WHERE + p.partNumber = '${partNumber}' +""" + sql().rows(query) + } + private boolean hasChangeLogsWithStatus(List changeLogIds, List statuses) { if (changeLogIds) { String query = """