From a0aa80ba8cf63a97fc50433346f97de0e844a96b Mon Sep 17 00:00:00 2001 From: "usama.jameel" Date: Wed, 4 Jun 2025 15:32:26 +0500 Subject: [PATCH] add qa status online and in header --- .../dao/ctp/FinishedItemDAO.java | 2 +- .../model/ctp/POsDetails.java | 9 +++++ .../service/ReportingService.java | 35 +++++++------------ src/main/resources/templates/dashboard.html | 2 -- .../resources/templates/po-status-pdf.html | 5 ++- .../templates/reporting/po-report.html | 7 ++++ 6 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/utopiaindustries/dao/ctp/FinishedItemDAO.java b/src/main/java/com/utopiaindustries/dao/ctp/FinishedItemDAO.java index a7b68ef..ec8345d 100644 --- a/src/main/java/com/utopiaindustries/dao/ctp/FinishedItemDAO.java +++ b/src/main/java/com/utopiaindustries/dao/ctp/FinishedItemDAO.java @@ -32,7 +32,7 @@ public class FinishedItemDAO { private final String SELECT_BY_TERM_FOR_PACKAGING = String.format("SELECT * FROM %s WHERE barcode LIKE :term AND is_segregated = :is_segregated AND qa_status = :qa_status AND is_packed = FALSE AND is_store = FALSE ORDER BY ID DESC", TABLE_NAME); private final String SELECT_BY_STITCHED_ITEM_ID = String.format("SELECT * FROM %s WHERE stitched_item_id = :stitched_item_id AND is_packed = FALSE", TABLE_NAME); private final String SELECT_BY_STITCHED_ITEM_IDS = String.format("SELECT * FROM %s WHERE stitched_item_id IN (:stitched_item_ids)", TABLE_NAME); - private final String COUNT_TOTAL_FINISH_ITEM = String.format("SELECT COUNT(*) FROM %s WHERE job_card_id = :job_card_id AND is_qa = TRUE AND (is_packed IS TRUE OR is_store = TRUE) ", TABLE_NAME); + private final String COUNT_TOTAL_FINISH_ITEM = String.format("SELECT COUNT(*) FROM %s WHERE job_card_id = :job_card_id AND is_qa = TRUE AND (is_segregated IS TRUE OR is_store = TRUE) ", TABLE_NAME); private final String SELECT_BY_JOB_CARD_AND_DATE = String.format("SELECT * FROM %s WHERE job_card_id = :job_card_id AND (:start_date IS NULL OR :end_date IS NULL OR created_at BETWEEN :start_date AND :end_date)", TABLE_NAME); private final String SELECT_BY_DATE_QA_STATUS = String.format( "SELECT COUNT(*) FROM %s WHERE (:start_date IS NULL OR operation_date >= :start_date) AND operation_date <= :end_date AND qa_status = :qa_status AND id in (:ids) AND is_packed = FALSE AND is_qa = TRUE", TABLE_NAME ); diff --git a/src/main/java/com/utopiaindustries/model/ctp/POsDetails.java b/src/main/java/com/utopiaindustries/model/ctp/POsDetails.java index 3ab7f7c..467fe7b 100644 --- a/src/main/java/com/utopiaindustries/model/ctp/POsDetails.java +++ b/src/main/java/com/utopiaindustries/model/ctp/POsDetails.java @@ -20,6 +20,7 @@ public class POsDetails { private long totalAGradeItem; private long totalBGradeItem; private long totalCGradeItem; + private boolean poStatus; public long getPoQuantity() { return poQuantity; @@ -149,6 +150,14 @@ public class POsDetails { this.poRequiredQuantity = poRequiredQuantity; } + public boolean isPoStatus() { + return poStatus; + } + + public void setPoStatus(boolean poStatus) { + this.poStatus = poStatus; + } + @Override public String toString() { return "POsDetails{" + diff --git a/src/main/java/com/utopiaindustries/service/ReportingService.java b/src/main/java/com/utopiaindustries/service/ReportingService.java index 6946727..5f3f15b 100644 --- a/src/main/java/com/utopiaindustries/service/ReportingService.java +++ b/src/main/java/com/utopiaindustries/service/ReportingService.java @@ -275,9 +275,6 @@ public class ReportingService { .map(item -> Optional.ofNullable(item.getActualProduction()).orElse(BigDecimal.ZERO)) .reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal expectedProduction = jobCardItems.stream() - .map(item -> Optional.ofNullable(item.getExpectedProduction()).orElse(BigDecimal.ZERO)) - .reduce(BigDecimal.ZERO, BigDecimal::add); if(actualProduction.compareTo(totalProduction) == 0) { phasePending.put("Stitching Total Time", null); }else { @@ -486,6 +483,7 @@ public class ReportingService { pOsDetails.setTotalStitching(qaProgressItems); pOsDetails.setTotalEndLineQC(qaProgressItems.intValue()); pOsDetails.setTotalFinishing(totalFinishItem); + pOsDetails.setPoStatus(false); pOsDetails.setRemainingCutting(pos.getPurchaseOrderQuantityRequired() - actualProduction.intValue()); pOsDetails.setRemainingStitching(pos.getPurchaseOrderQuantityRequired() - qaProgressItems); @@ -513,7 +511,6 @@ public class ReportingService { List bundles = bundleDAO.findByCardIdAndDATE(jobCard.getId(),startDate,endDate); List stitchingOfflineItems = stitchingOfflineItemDAO.findByJobCardIdAndDate(jobCard.getId(),startDate,endDate); List finishedItems = finishedItemDAO.calculateTotalFinishItem(jobCard.getId(),startDate,endDate); - List inventoryTransactionLegs = inventoryTransactionLegDAO.getTransactionByJobCardAndDatesAndTypeAndAccountID(jobCard.getId(),startDate,endDate,"IN", gradingAccounts); //cutting days wise BigDecimal cutting = bundles.stream() @@ -525,26 +522,21 @@ public class ReportingService { //total qa Integer qa = finishedItems.size(); - Map segregateItems = inventoryTransactionLegs.stream() - .filter(leg -> inventoryAccounts.stream() - .anyMatch(account -> (int) account.getId() == (leg.getAccountId()))) - .collect(Collectors.toMap( - leg -> inventoryAccounts.stream() - .filter(account -> (int) account.getId() == (leg.getAccountId())) - .findFirst() - .map(InventoryAccount::getTitle) - .orElse("Unknown"), - leg -> leg.getQuantity().intValue(), - Integer::sum, - HashMap::new + Map segregateItems = finishedItems.stream() + .collect(Collectors.groupingBy( + FinishedItem::getQaStatus, + Collectors.collectingAndThen( + Collectors.counting(), + Long::intValue + ) )); + Map items = getCompleteProduction(String.valueOf(jobCard.getId())); items.put("Cutting Progress",cutting.intValue()); items.put("Stitching Progress",stitching); items.put("QA Progress",qa); - items.put("A Grade",segregateItems.get("A GRADE") != null ? segregateItems.get("A GRADE") : 0); - items.put("B Grade",segregateItems.get("B GRADE") != null ? segregateItems.get("B GRADE") : 0); - items.put("C Grade",segregateItems.get("C GRADE") != null ? segregateItems.get("C GRADE") : 0); + items.put("A Grade",segregateItems.get("APPROVED") != null ? segregateItems.get("APPROVED") : 0); + items.put("B Grade / Reject",segregateItems.get("REJECT") != null ? segregateItems.get("REJECT") : 0); // Define sorting order Map indexMap = new HashMap<>(); @@ -553,9 +545,8 @@ public class ReportingService { indexMap.put("Stitching Progress", 3); indexMap.put("QA Progress", 4); indexMap.put("Finishing Progress", 5); - indexMap.put("A GRADE", 6); - indexMap.put("B GRADE", 7); - indexMap.put("C GRADE", 8); + indexMap.put("APPROVED", 6); + indexMap.put("REJECT", 7); // Sort items based on indexMap order Map sortedItems = items.entrySet() diff --git a/src/main/resources/templates/dashboard.html b/src/main/resources/templates/dashboard.html index 3905a39..2d83c35 100644 --- a/src/main/resources/templates/dashboard.html +++ b/src/main/resources/templates/dashboard.html @@ -193,8 +193,6 @@ - -