Merge pull request 'fixed insert query error and selecting item on packaging phase' (#21) from add-qa-report-dashboard into main

Reviewed-on: #21
main
saif.haq 2025-05-02 06:03:44 +00:00
commit b314d46426
12 changed files with 31 additions and 11 deletions

View File

@ -99,7 +99,7 @@ public class FinishingController {
} catch ( Exception e ){
redirectAttributes.addFlashAttribute("error", e.getMessage() );
}
return "redirect:/finishing/finished-items";
return "redirect:/finishing/segregate-inventory";
}
}

View File

@ -50,7 +50,7 @@ public class PackagingController {
} catch ( Exception e ){
redirectAttributes.addFlashAttribute("error", e.getMessage() );
}
return "redirect:/finishing/finished-items";
return "redirect:/packaging/receive-inventory";
}
@GetMapping( "/inventory-accounts" )

View File

@ -92,6 +92,6 @@ public class QualityControlController {
}catch ( Exception ex ){
redirectAttributes.addFlashAttribute("error", ex.getMessage() );
}
return "redirect:/quality-control/qc-finished-items";
return "redirect:/quality-control/qc-finished-item";
}
}

View File

@ -122,7 +122,7 @@ public class StitchingController {
exception.printStackTrace();
redirectAttributes.addFlashAttribute( "error", exception.getMessage() );
}
return "redirect:/stitching/stitching-offline-items";
return "redirect:/stitching/create-stitching-items";
}
@PostMapping( "/generate-barcodes" )

View File

@ -25,11 +25,12 @@ public class FinishedItemDAO {
private final String SELECT_QUERY_BY_BARCODE_QA_STATUS = String.format( "SELECT case when EXISTS ( SELECT * FROM %s WHERE barcode = :barcode AND (qa_status = 'APPROVED' OR qa_status = 'WASHED') ) then true else false End as Result", TABLE_NAME );
private final String SELECT_QUERY_BY_JOB_CARD = String.format( "SELECT * FROM %s WHERE job_card_id = :job_card_id", TABLE_NAME );
private final String DELETE_QUERY = String.format( "DELETE FROM %s WHERE id = :id", TABLE_NAME );
private final String INSERT_QUERY = String.format( "INSERT INTO %s (id, item_id, sku, barcode, created_at, created_by, job_card_id, is_qa, stitched_item_id, is_segregated, qa_status) VALUES (:id, :item_id, :sku, :barcode, :created_at, :created_by, :job_card_id, :is_qa, :stitched_item_id, :is_segregated, :qa_status) ON DUPLICATE KEY UPDATE item_id = VALUES(item_id), sku = VALUES(sku), barcode = VALUES(barcode), created_at = VALUES(created_at), created_by = VALUES(created_by), job_card_id = VALUES(job_card_id), is_qa = VALUES(is_qa), stitched_item_id = VALUES(stitched_item_id), is_segregated = VALUES(is_segregated), qa_status = VALUES(qa_status)", TABLE_NAME );
private final String INSERT_QUERY = String.format( "INSERT INTO %s (id, item_id, sku, barcode, created_at, created_by, job_card_id, is_qa, stitched_item_id, is_segregated, qa_status, is_packed) VALUES (:id, :item_id, :sku, :barcode, :created_at, :created_by, :job_card_id, :is_qa, :stitched_item_id, :is_segregated, :qa_status, :is_packed) ON DUPLICATE KEY UPDATE item_id = VALUES(item_id), sku = VALUES(sku), barcode = VALUES(barcode), created_at = VALUES(created_at), created_by = VALUES(created_by), job_card_id = VALUES(job_card_id), is_qa = VALUES(is_qa), stitched_item_id = VALUES(stitched_item_id), is_segregated = VALUES(is_segregated), qa_status = VALUES(qa_status), is_packed = VALUES(is_packed)", TABLE_NAME );
private final String SELECT_BY_LIMIT = String.format("SELECT * FROM %s ORDER BY id DESC LIMIT :limit", TABLE_NAME );
private final String SELECT_BY_IDS = String.format( "SELECT * FROM %s WHERE id IN (:ids)", TABLE_NAME );
private final String FIND_TOTAL_COUNT = String.format("SELECT COUNT(*) FROM %s where job_card_id = :job_card_id And item_id = :item_id", TABLE_NAME );
private final String SELECT_BY_TERM = String.format( "SELECT * FROM %s WHERE barcode LIKE :term AND is_segregated = :is_segregated ORDER BY ID DESC", TABLE_NAME );
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 = 'APPROVED' AND is_packed = 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", 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_segregated IS TRUE ",TABLE_NAME);
@ -52,7 +53,8 @@ public class FinishedItemDAO {
.addValue("is_qa", finishedItem.getIsQa() )
.addValue("stitched_item_id", finishedItem.getStitchedItemId() )
.addValue("is_segregated", finishedItem.getIsSegregated() )
.addValue("qa_status", finishedItem.getQaStatus() );
.addValue("qa_status", finishedItem.getQaStatus() )
.addValue("is_packed",finishedItem.isPackaging());
return params;
}
@ -120,6 +122,13 @@ public class FinishedItemDAO {
return namedParameterJdbcTemplate.query( SELECT_BY_TERM , params, new FinishedItemRowMapper() );
}
public List<FinishedItem> findByTermForPackaging( String term , boolean isSegregated ){
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("term", "%" + term + "%" );
params.addValue("is_segregated", isSegregated );
return namedParameterJdbcTemplate.query( SELECT_BY_TERM_FOR_PACKAGING , params, new FinishedItemRowMapper() );
}
// find By job card Id
public List<FinishedItem> findByJobCardId(long jobCardId ) {
MapSqlParameterSource params = new MapSqlParameterSource();

View File

@ -22,6 +22,7 @@ public class FinishedItemRowMapper implements RowMapper<FinishedItem> {
finishedItem.setStitchedItemId( rs.getLong("stitched_item_id" ) );
finishedItem.setIsSegregated( rs.getBoolean( "is_segregated") );
finishedItem.setQaStatus( rs.getString("qa_status" ) );
finishedItem.setPackaging( rs.getBoolean("is_packed" ) );
return finishedItem;
}
}

View File

@ -1,7 +1,6 @@
package com.utopiaindustries.dao.ctp;
import com.utopiaindustries.model.ctp.PackagingItems;
import com.utopiaindustries.model.ctp.PackagingItemsRowMapper;
import com.utopiaindustries.util.KeyHolderFunctions;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

View File

@ -1,5 +1,6 @@
package com.utopiaindustries.model.ctp;
package com.utopiaindustries.dao.ctp;
import com.utopiaindustries.model.ctp.PackagingItems;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;

View File

@ -23,6 +23,7 @@ public class FinishedItem implements InventoryArtifact {
private JobCard jobCard;
private long accountId;
private String qaStatus;
private boolean isPackaging;
public long getId() {
@ -154,6 +155,14 @@ public class FinishedItem implements InventoryArtifact {
return 0;
}
public boolean isPackaging() {
return isPackaging;
}
public void setPackaging(boolean packaging) {
isPackaging = packaging;
}
@Override
public String toString() {
return "FinishedItem{" +

View File

@ -27,6 +27,6 @@ public class FinishedItemRestController {
@GetMapping( "/search-packaging" )
public List<FinishedItem> searchFinishedItemsForPackaging(@RequestParam( "term") String term,
@RequestParam( "is-segregated") boolean isSegregated ){
return finishedItemDAO.findByTerm( term, true );
return finishedItemDAO.findByTermForPackaging( term, true );
}
}

View File

@ -656,13 +656,14 @@ public class InventoryService {
createInventoryTransactionLeg( transaction, packagingItems1, 8, InventoryTransactionLeg.Type.IN.name( ), InventoryArtifactType.PACKAGING.name( ));
}
finishedItem.setIsSegregated( true);
finishedItem.setPackaging( true);
packagingItems.add(packagingItems1);
}
updatedItems.add( finishedItem);
}
// save finish items
finishedItemDAO.saveAll( updatedItems);
System.out.println(packagingItems);
packagingItemsDAO.saveAll(packagingItems);
}
}

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml"
xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head th:replace="_fragments :: head('Segregate Finished Items')"></head>
<head th:replace="_fragments :: head('Packaging Receive Inventory')"></head>
<body>
<div class="container-fluid">
<header class="row page-header" th:replace="_fragments :: page-header"></header>