Index: grails-app/services/com/lemans/ds/studioorder/StudioOrderPartManagerService.groovy =================================================================== diff -u -r5e4675576d308ef361b7db42ec0df5d4ac5d64fa -r7d55766072669083b39b222a6778f740d5733e21 --- grails-app/services/com/lemans/ds/studioorder/StudioOrderPartManagerService.groovy (.../StudioOrderPartManagerService.groovy) (revision 5e4675576d308ef361b7db42ec0df5d4ac5d64fa) +++ grails-app/services/com/lemans/ds/studioorder/StudioOrderPartManagerService.groovy (.../StudioOrderPartManagerService.groovy) (revision 7d55766072669083b39b222a6778f740d5733e21) @@ -67,52 +67,15 @@ Map addParts(Map values, String username) { Timestamp now = new Timestamp(new Date().time) - List parts = values.parts.unique() - List existingStudioOrderParts = findStudioOrderPartsInOpenAndSubmitted(parts) - List partNumbers = existingStudioOrderParts*.partNumber - List newPartNumbers = parts - partNumbers - def updateCounts = sql().withBatch(50, STUDIO_ORDER_PART_INSERT_SQL) { stmt -> - newPartNumbers.each { String partNumber -> - stmt.addBatch([studioOrderId: values.studioOrderId, partNumber: partNumber, now: now, username: username]) + List partNumbers = findStudioOrderParts(values.studioOrderId, values.parts)*.partNumber + sql().withBatch(50, STUDIO_ORDER_PART_INSERT_SQL) { stmt -> + values.parts.each { String partNumber -> + if (!(partNumber in partNumbers)) { + stmt.addBatch([studioOrderId: values.studioOrderId, partNumber: partNumber, now: now, username: username]) + } } } - Map result = [:] - List success = [] - List failures = [] - existingStudioOrderParts.each {studioOrderPart-> - if(failures.find{it.partNumber == studioOrderPart.partNumber}) { - return; - } - Map error = [ - partNumber: studioOrderPart.partNumber, - status: "failed" - ] - if(studioOrderPart.studioOrderId == values.studioOrderId) { - error.message = "Part is already in the current order" - } else if(studioOrderPart.statusId == 14200) { - error.message = "Part is in existing open orders" - } else if(studioOrderPart.statusId == 14201) { - error.message = "Part is in existing submitted orders" - } - failures.push(error) - } - newPartNumbers.eachWithIndex{String partNumber, Integer index-> - if(updateCounts[index] != 1) { - failures.push([ - partNumber: partNumber, - status: "failed", - message: "Error in inserting" - ]) - } else { - success.push([ - partNumber: partNumber, - status: "success" - ]) - } - } - result.failures = failures - result.success = success - [results: result] + [results: [:]] } Map updateParts(Map values, String username) { @@ -198,10 +161,6 @@ StudioOrderPart.findAllByStudioOrderIdAndPartNumberInListAndDateDeletedIsNull(studioOrderId, partNumbers) } - private List findStudioOrderPartsInOpenAndSubmitted(List partNumbers) { - StudioOrderPart.findAllByPartNumberInListAndStatusIdInListAndDateDeletedIsNull(partNumbers, [14200, 14201]) - } - private Flag findFlag(String flagName) { Flag.findByFlagNameAndDateDeletedIsNull(flagName) }