Index: src/main/groovy/com/lemans/pricecalc/services/vendor/VendorService.groovy =================================================================== diff -u -rdbfbb30f0326ce6f438b40c02399faf5d5e869a2 -r6b86fab881f3496f0060e225240afe2921cd536a --- src/main/groovy/com/lemans/pricecalc/services/vendor/VendorService.groovy (.../VendorService.groovy) (revision dbfbb30f0326ce6f438b40c02399faf5d5e869a2) +++ src/main/groovy/com/lemans/pricecalc/services/vendor/VendorService.groovy (.../VendorService.groovy) (revision 6b86fab881f3496f0060e225240afe2921cd536a) @@ -50,7 +50,7 @@ """ private static final String VENDOR_DOWNLOAD_QUERY = """ -SELECT catalogName, vendorId, vendorName, sectionName, catalogCode, buyer, manager, calcDueDate, revisionDeadline +SELECT catalogName, vendorId, vendorName, sectionName, catalogCode, calcDueDate, revisionDeadline FROM (SELECT DISTINCT c.catalogName AS catalogName, @@ -60,8 +60,6 @@ s.sectionName AS sectionName, s.sequence, c.catalogCode AS catalogCode, -cv.buyerGlobalId AS buyer, -cv.managerName AS manager, CONVERT(nvarchar(30), cv.vendorDueDate, 101) AS calcDueDate, CONVERT(nvarchar(30), cv.revisionDeadlineDate, 101) AS revisionDeadline, ROW_NUMBER() OVER (PARTITION BY p.vendorId ORDER BY s.sequence) AS row_number @@ -99,19 +97,22 @@ } private void buyerManager(List vendors, Map criteria) { - String query = """SELECT DISTINCT vp.buyerGlobalId, vp.buyerManagerGlobalId, vp.buyerName, vp.buyerManagerName, vp.vendorId FROM vwPart vp WITH(NOLOCK) WHERE vp.vendorId IN (${vendors.collect { "'${it.vendorId}'" }.join(',')})""" - Map buyerManagerData = sql().rows(query).groupBy { it.vendorId} - vendors.each { vendor -> - def vendorId = vendor.vendorId - List data = buyerManagerData.get(vendorId, []).collect { it -> - [ - buyerGlobalId: it.buyerGlobalId, - buyerManagerGlobalId: it.buyerManagerGlobalId, - buyer: it.buyerName, - manager: it.buyerManagerName - ] + if (vendors) { + String query = """SELECT DISTINCT vp.buyerGlobalId, vp.buyerManagerGlobalId, vp.buyerName, vp.buyerManagerName, vp.vendorId FROM vwPart vp WITH(NOLOCK) WHERE vp.vendorId IN (${vendors?.collect { "'${it?.vendorId}'" }?.join(',')})""" + + Map buyerManagerData = sql().rows(query).groupBy { it.vendorId } + vendors.each { vendor -> + def vendorId = vendor.vendorId + List data = buyerManagerData.get(vendorId, []).collect { it -> + [ + buyerGlobalId: it.buyerGlobalId, + buyerManagerGlobalId: it.buyerManagerGlobalId, + buyer: it.buyerName, + manager: it.buyerManagerName + ] + } + vendor.buyerManager = data } - vendor.buyerManager = data } } @@ -188,19 +189,28 @@ void downloadVendors(Map criteria, ServletResponse response) { List vendors List results = sql().rows([catalogId: criteria.catalogId], VENDOR_DOWNLOAD_QUERY) - if (criteria._is_pc_manager_) { vendors = results.findAll { it.manager?.replaceAll("\\s", '')?.equalsIgnoreCase(criteria.username) } } - else if (criteria._is_pc_buyer_) { vendors = results.findAll { it.buyer?.replaceAll("\\s", '')?.equalsIgnoreCase(criteria.username) } } - else { vendors = results } - CSVWriter csvWriter = new CSVWriter(response.writer) - String[] header = vendors[0]?.keySet() - List output = [] - output << header - vendors?.each { Map it -> - String[] temp = it.values() - output << temp + if (results) { + String query = """SELECT DISTINCT vp.buyerName, vp.buyerManagerName, vp.vendorId FROM vwPart vp WITH(NOLOCK) WHERE vp.vendorId IN (${results?.collect { "'${it?.vendorId}'" }?.join(',')})""" + Map buyerManagerData = sql().rows(query).groupBy { it.vendorId } + results.each { vendor -> + def vendorId = vendor.vendorId + vendor.buyer = buyerManagerData.get(vendorId, []).collect { it.buyerName }.findAll { it != null }.unique().join('|') + vendor.manager = buyerManagerData.get(vendorId, []).collect { it.buyerManagerName }.findAll { it != null }.unique().join('|') + } + if (criteria._is_pc_manager_) { vendors = results.findAll { it.manager?.replaceAll("\\s", '')?.equalsIgnoreCase(criteria.username) } } + else if (criteria._is_pc_buyer_) { vendors = results.findAll { it.buyer?.replaceAll("\\s", '')?.equalsIgnoreCase(criteria.username) } } + else { vendors = results } + CSVWriter csvWriter = new CSVWriter(response.writer) + String[] header = vendors[0]?.keySet() + List output = [] + output << header + vendors?.each { Map it -> + String[] temp = it.values() + output << temp + } + csvWriter.writeAll(output) + csvWriter.close() } - csvWriter.writeAll(output) - csvWriter.close() } List clauses(Map criteria) {