diff --git a/src/main/java/com/utopiaindustries/controller/CuttingController.java b/src/main/java/com/utopiaindustries/controller/CuttingController.java index 8406714..98bbb82 100644 --- a/src/main/java/com/utopiaindustries/controller/CuttingController.java +++ b/src/main/java/com/utopiaindustries/controller/CuttingController.java @@ -4,13 +4,13 @@ import com.utopiaindustries.auth.CuttingRole; import com.utopiaindustries.dao.ctp.BundleWrapper; import com.utopiaindustries.model.ctp.JobCardWrapper; import com.utopiaindustries.service.*; -import org.springframework.core.io.InputStreamResource; -import org.springframework.http.ResponseEntity; +import com.utopiaindustries.util.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import java.time.LocalDate; import java.util.Arrays; @Controller @@ -61,8 +61,12 @@ public class CuttingController { @RequestParam( value = "site-id", required = false ) String siteId, @RequestParam( value = "count", required = false ) Long count, Model model ){ + model.addAttribute("accounts", inventoryAccountService.getInventoryAccounts( id, title, active, createdBy, startDate, endDate, siteId, count , "PROCESS", "1", false) ); model.addAttribute("locations", locationService.findAll() ); + if(StringUtils.isNullOrEmpty( active )){ + return "redirect:/cutting/inventory-accounts?id=&title=&active=1&created-by=&start-date=&end-date=&site-id=&site-title=&count=100"; + } return "/cutting/inventory-accounts"; } @@ -73,7 +77,7 @@ public class CuttingController { @ModelAttribute JobCardWrapper wrapper ){ try { inventoryService.receiveJobCardInventory( jobCardId, wrapper ); - redirectAttributes.addFlashAttribute("success", "Inventory Success Received" ); + redirectAttributes.addFlashAttribute("success", "Inventory Successfully Received by Job Card ID: " +jobCardId ); } catch ( Exception ex ){ redirectAttributes.addFlashAttribute("error", ex.getMessage() ); } @@ -105,6 +109,7 @@ public class CuttingController { @GetMapping( "/bundles" ) public String showBundles( @RequestParam( value = "id", required = false ) String id, @RequestParam( value = "sku", required = false) String sku, + @RequestParam( value = "exceptionCheck", required = false, defaultValue = "false") boolean exceptionCheck, @RequestParam( value = "jc-id", required = false) String jobCardId, @RequestParam( value = "master-id" , required = false ) String masterId, @RequestParam( value = "type", required = false) String type, @@ -112,9 +117,18 @@ public class CuttingController { @RequestParam( value = "start-date", required = false) String startDate, @RequestParam( value = "end-date", required = false) String endDate, @RequestParam( value = "count", required = false ) Long count, - Model model ){ - model.addAttribute("bundles", bundleService.getBundles( id, sku, jobCardId, masterId, type, status, startDate, endDate ,count ) ); + Model model, RedirectAttributes redirectAttributes){ + + LocalDate startDate1 = StringUtils.isNullOrEmpty(startDate) ? LocalDate.now().minusDays(30) : LocalDate.parse(startDate); + LocalDate endDate1 = StringUtils.isNullOrEmpty(endDate) ? LocalDate.now() : LocalDate.parse(endDate); + model.addAttribute("bundles", bundleService.getBundles( id, sku, jobCardId, masterId, type, status, startDate1.toString(), endDate1.toString() ,count ) ); model.addAttribute("types", jobCardService.getAllPieceTypes() ); + if(exceptionCheck){ + redirectAttributes.addFlashAttribute("error", "Please Select At least One CheckBox." ); + } + if(StringUtils.isNullOrEmpty( startDate) || StringUtils.isNullOrEmpty( endDate )){ + return "redirect:/cutting/bundles?id=&sku=&jc-id=&master-id=&type=&status=0&start-date="+startDate1+"&end-date="+endDate1+"&count=100"; + } return "/cutting/bundles"; } @@ -126,7 +140,12 @@ public class CuttingController { @RequestParam(value = "end-date", required = false) String endDate, @RequestParam(value = "count", required = false) Long count, Model model ){ - model.addAttribute("masterBundles", bundleService.getMasterBundles( id, jobCardId, startDate, endDate, count ) ); + LocalDate startDate1 = StringUtils.isNullOrEmpty(startDate) ? LocalDate.now().minusDays(30) : LocalDate.parse(startDate); + LocalDate endDate1 = StringUtils.isNullOrEmpty(endDate) ? LocalDate.now() : LocalDate.parse(endDate); + model.addAttribute("masterBundles", bundleService.getMasterBundles( id, jobCardId, startDate1.toString(), endDate1.toString(), count ) ); + if(StringUtils.isNullOrEmpty( startDate) || StringUtils.isNullOrEmpty( endDate )){ + return "redirect:/cutting/master-bundles?id=&jc-id=&start-date="+startDate1+"&end-date="+endDate1+"&count=100"; + } return "/cutting/master-bundles"; } @@ -139,9 +158,11 @@ public class CuttingController { @PostMapping( "/generate-barcodes" ) - public ResponseEntity generateBarcode(@RequestParam( name = "ids", required = true ) Long[] ids, - @RequestParam( name = "artifactType", required = true ) String artifactType ) throws Exception { - + public Object generateBarcode(@RequestParam( name = "ids", required = false ) Long[] ids, + @RequestParam( name = "artifactType", required = true ) String artifactType ) throws Exception { + if(ids == null){ + return "redirect:/cutting/bundles?exceptionCheck=true"; + } return barcodeService.generateBarcodes( Arrays.asList( ids ), artifactType ); } } diff --git a/src/main/java/com/utopiaindustries/controller/FinishingController.java b/src/main/java/com/utopiaindustries/controller/FinishingController.java index a68fa6d..fb853d9 100644 --- a/src/main/java/com/utopiaindustries/controller/FinishingController.java +++ b/src/main/java/com/utopiaindustries/controller/FinishingController.java @@ -8,11 +8,13 @@ import com.utopiaindustries.service.BundleService; import com.utopiaindustries.service.InventoryAccountService; import com.utopiaindustries.service.InventoryService; import com.utopiaindustries.service.LocationService; +import com.utopiaindustries.util.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import java.time.LocalDate; import java.util.List; @Controller @@ -48,8 +50,13 @@ public class FinishingController { @RequestParam( value = "job-card-id", required = false ) String jobCardId, @RequestParam( value = "count", required = false ) Long count, Model model ){ - List itemList = bundleService.getFinishedItem( id, itemId, sku, startDate, endDate, jobCardId ,count ); + LocalDate startDate1 = StringUtils.isNullOrEmpty(startDate) ? LocalDate.now().minusDays(30) : LocalDate.parse(startDate); + LocalDate endDate1 = StringUtils.isNullOrEmpty(endDate) ? LocalDate.now() : LocalDate.parse(endDate); + List itemList = bundleService.getFinishedItem( id, itemId, sku, startDate1.toString(), endDate1.toString(), jobCardId ,count ); model.addAttribute("items", itemList ) ; + if(StringUtils.isNullOrEmpty( startDate) || StringUtils.isNullOrEmpty( endDate )){ + return "redirect:/finishing/finished-items?id=&item-id=&sku=&job-card-id=&start-date="+startDate1+"&end-date="+endDate1+"&count=100"; + } return "finishing/finished-item-list"; } @@ -70,6 +77,9 @@ public class FinishingController { // 5 for Finishing model.addAttribute("accounts", inventoryAccountService.getInventoryAccounts( id, title, active, createdBy, startDate, endDate, siteId, count, "PROCESS", "5" , false )); model.addAttribute("locations", locationService.findAll() ); + if(count == null){ + return "redirect:/finishing/inventory-accounts?id=&title=&active=&created-by=&start-date=&end-date=&site-id=&site-title=&count=100"; + } return "/finishing/inventory-accounts"; } diff --git a/src/main/java/com/utopiaindustries/controller/InventoryAccountController.java b/src/main/java/com/utopiaindustries/controller/InventoryAccountController.java index 8c1df3d..4a450c2 100644 --- a/src/main/java/com/utopiaindustries/controller/InventoryAccountController.java +++ b/src/main/java/com/utopiaindustries/controller/InventoryAccountController.java @@ -46,7 +46,7 @@ public class InventoryAccountController { RedirectAttributes redirectAttributes ){ try { inventoryAccountService.saveAccount( inventoryAccount ); - redirectAttributes.addFlashAttribute("success", "Inventory Account Successfully Added" ); + redirectAttributes.addFlashAttribute("success", inventoryAccount.getTitle() + " Successfully Added" ); } catch ( Exception e ){ redirectAttributes.addFlashAttribute("error", e.getMessage() ); } @@ -59,7 +59,7 @@ public class InventoryAccountController { RedirectAttributes redirectAttributes ){ try { inventoryAccountService.saveAccount( inventoryAccount ); - redirectAttributes.addFlashAttribute("success", "Inventory Account Successfully Added" ); + redirectAttributes.addFlashAttribute("success", inventoryAccount.getTitle() + " Successfully update" ); } catch ( Exception e ){ redirectAttributes.addFlashAttribute("error", e.getMessage() ); } diff --git a/src/main/java/com/utopiaindustries/controller/JobCardController.java b/src/main/java/com/utopiaindustries/controller/JobCardController.java index 91324cc..5e3dfa8 100644 --- a/src/main/java/com/utopiaindustries/controller/JobCardController.java +++ b/src/main/java/com/utopiaindustries/controller/JobCardController.java @@ -1,16 +1,22 @@ package com.utopiaindustries.controller; import com.utopiaindustries.auth.JobCardRole; +import com.utopiaindustries.dao.ctp.JobCardDAO; import com.utopiaindustries.model.ctp.JobCard; +import com.utopiaindustries.model.ctp.JobCardItem; import com.utopiaindustries.service.InventoryAccountService; import com.utopiaindustries.service.JobCardService; import com.utopiaindustries.service.LocationService; +import com.utopiaindustries.util.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; @Controller @JobCardRole @@ -20,19 +26,20 @@ public class JobCardController { private final JobCardService jobCardService; private final LocationService locationService; private final InventoryAccountService inventoryAccountService; + private final JobCardDAO jobCardDAO; - public JobCardController(JobCardService jobCardService, LocationService locationService, InventoryAccountService inventoryAccountService){ + public JobCardController(JobCardService jobCardService, LocationService locationService, InventoryAccountService inventoryAccountService, JobCardDAO jobCardDAO){ this.jobCardService = jobCardService; this.locationService = locationService; this.inventoryAccountService = inventoryAccountService; + this.jobCardDAO = jobCardDAO; } /** * get all job cards * */ @GetMapping - public String showJobCardList( @RequestParam( value = "id", required = false ) String id, - @RequestParam( value = "code", required = false ) String code, + public String showJobCardList( @RequestParam( value = "code", required = false ) String code, @RequestParam( value = "status", required = false ) String status, @RequestParam( value = "inventory-status" , required = false) String inventoryStatus, @RequestParam( value = "customer" ,required = false ) String customer, @@ -43,11 +50,17 @@ public class JobCardController { @RequestParam( value = "created-end-date", required = false ) String createdEndDate, @RequestParam( value = "limit" , required = false) Long limit, Model model ){ - List cards = jobCardService.getCards( id, code, status, inventoryStatus, customer, lotNumber, purchaseOrderId, locationSiteId,createdStartDate, createdEndDate, limit ); + List cards = jobCardService.getCards(code, status, inventoryStatus, customer, lotNumber, purchaseOrderId, locationSiteId,createdStartDate, createdEndDate, limit ); model.addAttribute("cards", cards ); model.addAttribute("statuses", JobCard.Status.values() ); model.addAttribute("invStatuses", JobCard.InventoryStatus.values() ); model.addAttribute("locations", locationService.findAll() ); + LocalDate startDate = StringUtils.isNullOrEmpty(createdStartDate) ? LocalDate.now().minusDays(30) : LocalDate.parse(createdStartDate); + LocalDate endDate = StringUtils.isNullOrEmpty(createdEndDate) ? LocalDate.now() : LocalDate.parse(createdEndDate); + if(StringUtils.isNullOrEmpty( createdStartDate) || StringUtils.isNullOrEmpty( createdEndDate )){ + return "redirect:/job-cards/?code=&status=&inventory-status=&customer=&lot-number=&purchase-order-id=&purchase-order-code=&purchaseOrderTitle=&site-id=&site-title=&created-start-date="+startDate+"&created-end-date="+endDate+"&limit=100"; + } + return "job-card-list"; } @@ -141,4 +154,28 @@ public class JobCardController { } return "redirect:/job-cards"; } + + @GetMapping( value = "/job-card-detail/{id}" ) + public String showJobCardDetail( @PathVariable("id") long id, + Model model ){ + List jobCardItems = jobCardService.findJobCardItemByJobCardId(id); + List jobCardItemIds = jobCardItems.stream() + .map(JobCardItem::getId) + .collect(Collectors.toList()); + model.addAttribute( "card", jobCardService.findByID(id)); + model.addAttribute("jobCardItems", jobCardItems); + model.addAttribute("cutPiece",jobCardService.findCutPieceByJobCardItemIds(jobCardItemIds)); + model.addAttribute("finishItem",jobCardService.findFinishItemByJobCardId(id)); + model.addAttribute("stitchingItem",jobCardService.findStitchItemByJobCardId(id)); + return "job-card-view"; + } + + private ArrayList generateDateList(LocalDate start, LocalDate end) { + ArrayList localDates = new ArrayList<>(); + while (start.isBefore(end)) { + localDates.add(start); + start = start.plusDays(1); + } + return localDates; + } } diff --git a/src/main/java/com/utopiaindustries/controller/PackagingController.java b/src/main/java/com/utopiaindustries/controller/PackagingController.java index 5e5ed88..bbadbe3 100644 --- a/src/main/java/com/utopiaindustries/controller/PackagingController.java +++ b/src/main/java/com/utopiaindustries/controller/PackagingController.java @@ -3,12 +3,15 @@ package com.utopiaindustries.controller; import com.utopiaindustries.auth.PackagingRole; import com.utopiaindustries.service.InventoryAccountService; import com.utopiaindustries.service.LocationService; +import com.utopiaindustries.util.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import java.time.LocalDate; + @Controller @PackagingRole @RequestMapping("/packaging" ) @@ -41,8 +44,9 @@ public class PackagingController { Model model ){ model.addAttribute("accounts", inventoryAccountService.getInventoryAccounts( id, title, active, createdBy, startDate, endDate, siteId, count , null, null,true ) ); model.addAttribute("locations", locationService.findAll() ); + if(count == null){ + return "redirect:/packaging/inventory-accounts?id=&title=&active=1&created-by=&start-date=&end-date=&site-id=&site-title=&count=100"; + } return "/packaging/inventory-accounts"; - } - } diff --git a/src/main/java/com/utopiaindustries/controller/QualityControlController.java b/src/main/java/com/utopiaindustries/controller/QualityControlController.java index 49d980e..bf4b60a 100644 --- a/src/main/java/com/utopiaindustries/controller/QualityControlController.java +++ b/src/main/java/com/utopiaindustries/controller/QualityControlController.java @@ -7,11 +7,13 @@ import com.utopiaindustries.service.BundleService; import com.utopiaindustries.service.InventoryAccountService; import com.utopiaindustries.service.InventoryService; import com.utopiaindustries.service.LocationService; +import com.utopiaindustries.util.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import java.time.LocalDate; import java.util.List; @Controller @@ -64,8 +66,13 @@ public class QualityControlController { @RequestParam( value = "job-card-id", required = false ) String jobCardId, @RequestParam( value = "count", required = false ) Long count, Model model ){ - List itemList = bundleService.getFinishedItem( id, itemId, sku, startDate, endDate, jobCardId ,count ); + LocalDate startDate1 = StringUtils.isNullOrEmpty(startDate) ? LocalDate.now().minusDays(30) : LocalDate.parse(startDate); + LocalDate endDate1 = StringUtils.isNullOrEmpty(endDate) ? LocalDate.now() : LocalDate.parse(endDate); + List itemList = bundleService.getFinishedItem( id, itemId, sku, startDate1.toString(), endDate1.toString(), jobCardId ,count ); model.addAttribute("items", itemList ) ; + if(StringUtils.isNullOrEmpty( startDate) || StringUtils.isNullOrEmpty( endDate )){ + return "redirect:/quality-control/qc-finished-items?id=&item-id=&sku=&job-card-id=&start-date="+startDate1+"&end-date="+endDate1+"&count=100"; + } return "/quality-control/qc-items-list"; } diff --git a/src/main/java/com/utopiaindustries/controller/ReportingController.java b/src/main/java/com/utopiaindustries/controller/ReportingController.java index 0929f69..4649ed9 100644 --- a/src/main/java/com/utopiaindustries/controller/ReportingController.java +++ b/src/main/java/com/utopiaindustries/controller/ReportingController.java @@ -34,10 +34,8 @@ public class ReportingController { Model model ){ Map>> getDataByFilteration = summaryInventoryReportService.findByFilter(itemId,sku,startDate,endDate); - LocalDate startDate1 = StringUtils.isNullOrEmpty(startDate) ? LocalDate.now().minusDays(7) : LocalDate.parse(startDate); LocalDate endDate1 = StringUtils.isNullOrEmpty(endDate) ? LocalDate.now() : LocalDate.parse(endDate); - ArrayList arrayList = generateDateList(startDate1,endDate1); model.addAttribute("dateLimits", arrayList); model.addAttribute("tableData", getDataByFilteration); diff --git a/src/main/java/com/utopiaindustries/controller/StitchingController.java b/src/main/java/com/utopiaindustries/controller/StitchingController.java index cb38cc7..95797af 100644 --- a/src/main/java/com/utopiaindustries/controller/StitchingController.java +++ b/src/main/java/com/utopiaindustries/controller/StitchingController.java @@ -4,13 +4,13 @@ import com.utopiaindustries.auth.StitchingRole; import com.utopiaindustries.model.ctp.JobCard; import com.utopiaindustries.model.ctp.StitchingOfflineItem; import com.utopiaindustries.service.*; -import org.springframework.core.io.InputStreamResource; -import org.springframework.http.ResponseEntity; +import com.utopiaindustries.util.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import java.time.LocalDate; import java.util.Arrays; import java.util.List; @@ -75,8 +75,13 @@ public class StitchingController { @RequestParam( value = "count", required = false ) Long count, Model model ) { // 2 for stitching + + model.addAttribute("accounts", inventoryAccountService.getInventoryAccounts(id, title, active, createdBy, startDate, endDate, siteId, count, "PROCESS", "2", false)); model.addAttribute("locations", locationService.findAll() ); + if(count == null){ + return "redirect:/stitching/inventory-accounts?id=&title=&active=1&created-by=&start-date=&end-date=&site-id=&site-title=&count=100"; + } return "/stitching/inventory-accounts"; } @@ -91,9 +96,23 @@ public class StitchingController { @RequestParam( value = "end-date", required = false ) String endDate, @RequestParam( value = "job-card-id", required = false ) String jobCardId, @RequestParam( value = "count", required = false ) Long count, - Model model ){ + Model model + ,RedirectAttributes redirect){ + LocalDate startDate1 = StringUtils.isNullOrEmpty(startDate) ? LocalDate.now().minusDays(30) : LocalDate.parse(startDate); + LocalDate endDate1 = StringUtils.isNullOrEmpty(endDate) ? LocalDate.now() : LocalDate.parse(endDate); List itemList = bundleService.getStitchedOfflineItems( id, itemId, sku, startDate, endDate, jobCardId ,count ); model.addAttribute("items", itemList ) ; + if(model.getAttribute("message") != null){ + if(model.getAttribute("message").equals("Finished Item Created Successfully") ){ + redirect.addFlashAttribute("success", model.getAttribute("message")); + + }else { + redirect.addFlashAttribute("error", model.getAttribute("message")); + } + } + if(StringUtils.isNullOrEmpty( startDate) || StringUtils.isNullOrEmpty( endDate )){ + return "redirect:/stitching/stitching-offline-items?id=&item-id=&sku=&job-card-id=&start-date="+startDate1+"&end-date="+endDate1+"&count=100"; + } return "/stitching/stitched-offline-items"; } @@ -110,18 +129,22 @@ public class StitchingController { Model model ){ try { inventoryService.createStitchingOfflineItemsFromJobCard( jobCard ); - redirectAttributes.addFlashAttribute("success", "Finished Item Created Successfully"); + redirectAttributes.addFlashAttribute("message", "Finished Item Created Successfully"); } catch ( Exception exception ){ exception.printStackTrace(); - redirectAttributes.addFlashAttribute( "error", exception.getMessage() ); + redirectAttributes.addFlashAttribute( "message", exception.getMessage() ); } return "redirect:/stitching/stitching-offline-items"; } @PostMapping( "/generate-barcodes" ) - public ResponseEntity generateBarcode(@RequestParam( name = "ids" ) Long[] ids, - @RequestParam( name = "artifactType" ) String artifactType ) throws Exception { - - return barcodeService.generateBarcodes( Arrays.asList( ids ), artifactType ); + public Object generateBarcode(@RequestParam( name = "ids" ,required = false) Long[] ids, + @RequestParam( name = "artifactType" ) String artifactType, RedirectAttributes redirectAttributes ) throws Exception { + if (ids == null){ + redirectAttributes.addFlashAttribute( "message", "Select At least One CheckBox" ); + return "redirect:/stitching/stitching-offline-items"; + }else { + return barcodeService.generateBarcodes( Arrays.asList( ids ), artifactType ); + } } } diff --git a/src/main/java/com/utopiaindustries/dao/ctp/AuthorityDAO.java b/src/main/java/com/utopiaindustries/dao/ctp/AuthorityDAO.java index 4e81d97..f380853 100644 --- a/src/main/java/com/utopiaindustries/dao/ctp/AuthorityDAO.java +++ b/src/main/java/com/utopiaindustries/dao/ctp/AuthorityDAO.java @@ -82,11 +82,13 @@ public class AuthorityDAO { // save all public int[] saveAll( List authorities ) { List batchArgs = new ArrayList<>(); + if (authorities == null){ + return namedParameterJdbcTemplate.batchUpdate( INSERT_QUERY, batchArgs.toArray(new MapSqlParameterSource[0]) ); + } for ( Authority authority: authorities ) { MapSqlParameterSource params = prepareInsertQueryParams( authority ); batchArgs.add( params ); } - return namedParameterJdbcTemplate.batchUpdate( INSERT_QUERY, batchArgs.toArray(new MapSqlParameterSource[authorities.size()]) ); + return namedParameterJdbcTemplate.batchUpdate( INSERT_QUERY, batchArgs.toArray(new MapSqlParameterSource[authorities.size()]) ); } - } diff --git a/src/main/java/com/utopiaindustries/dao/ctp/CutPieceDAO.java b/src/main/java/com/utopiaindustries/dao/ctp/CutPieceDAO.java index a3d3257..8001261 100644 --- a/src/main/java/com/utopiaindustries/dao/ctp/CutPieceDAO.java +++ b/src/main/java/com/utopiaindustries/dao/ctp/CutPieceDAO.java @@ -21,6 +21,7 @@ public class CutPieceDAO { private final String SELECT_ALL_QUERY = String.format( "SELECT * FROM %s ORDER BY id DESC", TABLE_NAME ); private final String DELETE_QUERY = String.format( "DELETE FROM %s WHERE id = :id", TABLE_NAME ); private final String SELECT_BY_ITEM_IDS = String.format( "SELECT * FROM %s WHERE job_card_item_id IN (:item_ids)", TABLE_NAME ); + private final String SELECT_BY_ITEM_IDS_AND_GROUP_BY = String.format( "SELECT id,job_card_item_id,type,SUM(quantity) AS quantity FROM %s WHERE job_card_item_id IN (:item_ids) GROUP BY job_card_item_id, type", TABLE_NAME ); private final String INSERT_QUERY = String.format( "INSERT INTO %s (id, job_card_item_id, type, quantity) VALUES (:id, :job_card_item_id, :type, :quantity) ON DUPLICATE KEY UPDATE job_card_item_id = VALUES(job_card_item_id), type = VALUES(type), quantity = VALUES(quantity)", TABLE_NAME ); private final String DELETE_BY_ITEM_ID = String.format( "DELETE FROM %s WHERE job_card_item_id = :job_card_item_id", TABLE_NAME ); @@ -86,6 +87,14 @@ public class CutPieceDAO { return namedParameterJdbcTemplate.query(SELECT_BY_ITEM_IDS, params, new CutPieceRowMapper() ); } + public List findByJobCardItemIdsWithGroupByType( List itemIds ){ + if( itemIds == null || itemIds.isEmpty() ) + return new ArrayList<>(); + MapSqlParameterSource params = new MapSqlParameterSource(); + params.addValue("item_ids", itemIds ); + return namedParameterJdbcTemplate.query(SELECT_BY_ITEM_IDS_AND_GROUP_BY, params, new CutPieceRowMapper() ); + } + public boolean deleteByItemId( long jobCardItemId ){ MapSqlParameterSource params = new MapSqlParameterSource(); params.addValue("job_card_item_id", jobCardItemId ); diff --git a/src/main/java/com/utopiaindustries/dao/ctp/FinishOfflineItemRowMapper.java b/src/main/java/com/utopiaindustries/dao/ctp/FinishOfflineItemRowMapper.java new file mode 100644 index 0000000..7bb171a --- /dev/null +++ b/src/main/java/com/utopiaindustries/dao/ctp/FinishOfflineItemRowMapper.java @@ -0,0 +1,25 @@ +package com.utopiaindustries.dao.ctp; + +import com.utopiaindustries.model.ctp.FinishedItem; +import org.springframework.jdbc.core.RowMapper; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class FinishOfflineItemRowMapper implements RowMapper { + public FinishedItem mapRow(ResultSet rs, int rowNum ) throws SQLException { + FinishedItem finishedItem = new FinishedItem(); + finishedItem.setId( rs.getLong( "id" ) ); + finishedItem.setItemId( rs.getLong( "item_id" ) ); + finishedItem.setSku( rs.getString( "sku" ) ); + finishedItem.setBarcode( rs.getString( "barcode" ) ); + if ( rs.getTimestamp( "created_at" ) != null ) { + finishedItem.setCreatedAt( rs.getTimestamp( "created_at" ).toLocalDateTime() ); + } + finishedItem.setCreatedBy( rs.getString( "created_by" ) ); + finishedItem.setJobCardId( rs.getLong("job_card_id") ); + finishedItem.setIsQa( rs.getBoolean("is_qa")); + finishedItem.setQaStatus( rs.getString("qa_status" ) ); + return finishedItem; + } +} diff --git a/src/main/java/com/utopiaindustries/dao/ctp/FinishedItemDAO.java b/src/main/java/com/utopiaindustries/dao/ctp/FinishedItemDAO.java index 3d3f44c..56c489c 100644 --- a/src/main/java/com/utopiaindustries/dao/ctp/FinishedItemDAO.java +++ b/src/main/java/com/utopiaindustries/dao/ctp/FinishedItemDAO.java @@ -1,6 +1,7 @@ package com.utopiaindustries.dao.ctp; import com.utopiaindustries.model.ctp.FinishedItem; +import com.utopiaindustries.model.ctp.JobCard; import com.utopiaindustries.util.KeyHolderFunctions; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @@ -19,6 +20,7 @@ public class FinishedItemDAO { private final String TABLE_NAME = "cut_to_pack.finished_item"; private final String SELECT_QUERY = String.format( "SELECT * FROM %s WHERE id = :id", TABLE_NAME ); private final String SELECT_ALL_QUERY = String.format( "SELECT * FROM %s ORDER BY id DESC", 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 SELECT_BY_LIMIT = String.format("SELECT * FROM %s ORDER BY id DESC LIMIT :limit", TABLE_NAME ); @@ -98,6 +100,10 @@ public class FinishedItemDAO { return namedParameterJdbcTemplate.query( query, new FinishedItemRowMapper() ); } + public List findFinishOfflineItemByQuery(String query ){ + return namedParameterJdbcTemplate.query( query, new FinishedItemRowMapper() ); + } + public List findByIds(List ids ){ if( ids == null || ids.isEmpty() ) return new ArrayList<>(); MapSqlParameterSource params = new MapSqlParameterSource(); @@ -112,6 +118,12 @@ public class FinishedItemDAO { return namedParameterJdbcTemplate.query( SELECT_BY_TERM , params, new FinishedItemRowMapper() ); } + // find By job card Id + public List findByJobCardId(long jobCardId ) { + MapSqlParameterSource params = new MapSqlParameterSource(); + params.addValue( "job_card_id", jobCardId ); + return namedParameterJdbcTemplate.query(SELECT_QUERY_BY_JOB_CARD, params, new FinishedItemRowMapper() ); + } public FinishedItem findByStitchedItem( long stitchedItemId ){ MapSqlParameterSource params = new MapSqlParameterSource(); diff --git a/src/main/java/com/utopiaindustries/dao/ctp/JobCardDAO.java b/src/main/java/com/utopiaindustries/dao/ctp/JobCardDAO.java index 72aeaf0..6ce2d34 100644 --- a/src/main/java/com/utopiaindustries/dao/ctp/JobCardDAO.java +++ b/src/main/java/com/utopiaindustries/dao/ctp/JobCardDAO.java @@ -21,6 +21,7 @@ public class JobCardDAO { private final String TABLE_NAME = "cut_to_pack.job_card"; private final String SELECT_QUERY = String.format( "SELECT * FROM %s WHERE id = :id", TABLE_NAME ); private final String SELECT_ALL_QUERY = String.format( "SELECT * FROM %s ORDER BY id DESC", TABLE_NAME ); + private final String SELECT_ALL_QUERY_WITH_LIMIT = String.format( "SELECT * FROM %s ORDER BY id DESC limit :limit", 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, code, job_order_id, created_at, created_by, status, inventory_status, customer, lot_number, purchase_order_id, location_site_id, description) VALUES (:id, :code, :job_order_id, :created_at, :created_by, :status, :inventory_status, :customer, :lot_number, :purchase_order_id, :location_site_id, :description) ON DUPLICATE KEY UPDATE code = VALUES(code), job_order_id = VALUES(job_order_id), created_at = VALUES(created_at), created_by = VALUES(created_by), status = VALUES(status), inventory_status = VALUES(inventory_status), customer = VALUES(customer), lot_number = VALUES(lot_number), purchase_order_id = VALUES(purchase_order_id), location_site_id = VALUES(location_site_id), description = VALUES(description)", TABLE_NAME ); private final String SELECT_BY_LIKE_CODE_AND_INV_STATUS_AND_STATUS = String.format( "SELECT * FROM %s WHERE code like :code AND status = :status AND inventory_status = :inventory_status", TABLE_NAME ); @@ -56,6 +57,7 @@ public class JobCardDAO { .orElse( new JobCard() ); } + // find all public List findAll() { return namedParameterJdbcTemplate.query( SELECT_ALL_QUERY, new JobCardRowMapper() ); @@ -110,4 +112,10 @@ public class JobCardDAO { public List findByQuery( String query ){ return namedParameterJdbcTemplate.query( query, new JobCardRowMapper() ); } + + public List findByAllWithLimit(Long limit){ + MapSqlParameterSource params = new MapSqlParameterSource(); + params.addValue("limit", limit.intValue()); + return namedParameterJdbcTemplate.query( SELECT_ALL_QUERY_WITH_LIMIT, params, new JobCardRowMapper() ); + } } \ No newline at end of file diff --git a/src/main/java/com/utopiaindustries/dao/ctp/StitchingOfflineItemDAO.java b/src/main/java/com/utopiaindustries/dao/ctp/StitchingOfflineItemDAO.java index 9f1da6a..b8887b4 100644 --- a/src/main/java/com/utopiaindustries/dao/ctp/StitchingOfflineItemDAO.java +++ b/src/main/java/com/utopiaindustries/dao/ctp/StitchingOfflineItemDAO.java @@ -19,6 +19,7 @@ public class StitchingOfflineItemDAO { private final String TABLE_NAME = "cut_to_pack.stitching_offline_item"; private final String SELECT_QUERY = String.format( "SELECT * FROM %s WHERE id = :id", TABLE_NAME ); private final String SELECT_ALL_QUERY = String.format( "SELECT * FROM %s ORDER BY id DESC", 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, qa_remarks, qa_status) VALUES (:id, :item_id, :sku, :barcode, :created_at, :created_by, :job_card_id, :is_qa, :qa_remarks, :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), qa_remarks = VALUES(qa_remarks), qa_status = VALUES(qa_status)", TABLE_NAME ); private final String SELECT_BY_LIMIT = String.format("SELECT * FROM %s ORDER BY id DESC LIMIT :limit", TABLE_NAME ); @@ -103,6 +104,12 @@ public class StitchingOfflineItemDAO { return namedParameterJdbcTemplate.query( SELECT_BY_IDS , params, new StitchingOfflineItemRowMapper() ); } + public List findByJobCardId(long jobCardId){ + MapSqlParameterSource params = new MapSqlParameterSource(); + params.addValue( "job_card_id", jobCardId ); + return namedParameterJdbcTemplate.query( SELECT_QUERY_BY_JOB_CARD , params, new StitchingOfflineItemRowMapper() ); + } + public List findByTerm( String term ){ MapSqlParameterSource params = new MapSqlParameterSource(); params.addValue("term", "%" + term + "%" ); diff --git a/src/main/java/com/utopiaindustries/querybuilder/ctp/InventoryAccountQueryBuilder.java b/src/main/java/com/utopiaindustries/querybuilder/ctp/InventoryAccountQueryBuilder.java index 0489d2f..aba10a7 100644 --- a/src/main/java/com/utopiaindustries/querybuilder/ctp/InventoryAccountQueryBuilder.java +++ b/src/main/java/com/utopiaindustries/querybuilder/ctp/InventoryAccountQueryBuilder.java @@ -42,9 +42,9 @@ public class InventoryAccountQueryBuilder { .setTable("cut_to_pack.inventory_account") .setColumns("*") .where() - .columnEquals("id", id) - .and() .columnLikeTitle("title", title) + .or() + .columnEquals("id", id) .and() .columnEquals("active", active) .and() diff --git a/src/main/java/com/utopiaindustries/querybuilder/ctp/JobCardQueryBuilder.java b/src/main/java/com/utopiaindustries/querybuilder/ctp/JobCardQueryBuilder.java index b4e05d2..4eede66 100644 --- a/src/main/java/com/utopiaindustries/querybuilder/ctp/JobCardQueryBuilder.java +++ b/src/main/java/com/utopiaindustries/querybuilder/ctp/JobCardQueryBuilder.java @@ -8,7 +8,7 @@ import java.time.LocalDate; public class JobCardQueryBuilder { - public static String buildQuery( String id, String code, String createdBy, String status, String inventoryStatus, String customer, String lotNumber, String purchaseOrderId, String locationSiteId, String startDate, String endDate, Long count ){ + public static String buildQuery(String code, String createdBy, String status, String inventoryStatus, String customer, String lotNumber, String purchaseOrderId, String locationSiteId, String startDate, String endDate, Long count ){ // format date String formattedDate; String formattedEndDate; @@ -30,9 +30,9 @@ public class JobCardQueryBuilder { .setTable( "cut_to_pack.job_card" ) .setColumns( "*" ) .where() - .columnEquals( "id", id ) + .columnEquals("created_by",createdBy) .and() - .columnEquals( "code", code ) + .columnLike( "code" , "%" + code +"%" ) .and() .columnEquals( "status", status ) .and() diff --git a/src/main/java/com/utopiaindustries/querybuilder/ctp/StichedOfflineItemQueryBuilder.java b/src/main/java/com/utopiaindustries/querybuilder/ctp/StichedOfflineItemQueryBuilder.java new file mode 100644 index 0000000..fb90c68 --- /dev/null +++ b/src/main/java/com/utopiaindustries/querybuilder/ctp/StichedOfflineItemQueryBuilder.java @@ -0,0 +1,49 @@ +package com.utopiaindustries.querybuilder.ctp; + +import com.utopiaindustries.querybuilder.QueryBuilder; +import com.utopiaindustries.util.CTPDateTimeFormat; +import com.utopiaindustries.util.StringUtils; + +import java.time.LocalDate; + +public class StichedOfflineItemQueryBuilder { + + public static String buildQuery(String id, String itemId, String sku, String createdStartDate, String createdEndDate, String jobCardId, Long count) { + // format date + String formattedDate; + String formattedEndDate; + String startDate1 = ""; + String endDate1 = ""; + if (!StringUtils.isNullOrEmpty( createdStartDate)) { + formattedDate = CTPDateTimeFormat.getMySQLFormattedDateString(createdStartDate, CTPDateTimeFormat.HTML5_DATE_INPUT_FORMAT); + formattedEndDate = CTPDateTimeFormat.getMySQLFormattedDateString(createdEndDate, CTPDateTimeFormat.HTML5_DATE_INPUT_FORMAT); + startDate1 = String.format("'%s 00:00:01'", formattedDate); + if (!StringUtils.isNullOrEmpty(createdEndDate)) { + endDate1 = String.format("'%s 23:59:59'", formattedEndDate); + } else { + endDate1 = String.format("'%s 23:59:59'", LocalDate.now()); + } + } + + return ( new QueryBuilder() ) + .setTable("cut_to_pack.stitching_offline_item") + .setColumns("*") + .where() + .columnEquals("id", id) + .and() + .columnEquals("sku", sku) + .and() + .columnEquals("item_id", itemId ) + .and() + .columnEquals("job_card_id", jobCardId ) + .and() + .columnEqualToOrGreaterThan("created_at", startDate1) + .and() + .columnEqualToOrLessThan("created_at", endDate1 ) + .orderBy("id","DESC") + .limit(count) + .build(); + + } +} + diff --git a/src/main/java/com/utopiaindustries/service/BundleService.java b/src/main/java/com/utopiaindustries/service/BundleService.java index c566d42..65e0110 100644 --- a/src/main/java/com/utopiaindustries/service/BundleService.java +++ b/src/main/java/com/utopiaindustries/service/BundleService.java @@ -8,6 +8,7 @@ import com.utopiaindustries.model.ctp.StitchingOfflineItem; import com.utopiaindustries.querybuilder.ctp.BundleQueryBuilder; import com.utopiaindustries.querybuilder.ctp.FinishedItemQueryBuilder; import com.utopiaindustries.querybuilder.ctp.MasterBundleQueryBuilder; +import com.utopiaindustries.querybuilder.ctp.StichedOfflineItemQueryBuilder; import com.utopiaindustries.util.NumberUtils; import com.utopiaindustries.util.StringUtils; import org.springframework.security.core.Authentication; @@ -99,7 +100,7 @@ public class BundleService { count = 100L; } if( StringUtils.isAnyNotNullOrEmpty(id, itemId, sku, createdStartDate, createdEndDate, jobCardId ) ){ - String query = FinishedItemQueryBuilder.buildQuery( id, itemId, sku, createdStartDate, createdEndDate, jobCardId , count ); + String query = StichedOfflineItemQueryBuilder.buildQuery( id, itemId, sku, createdStartDate, createdEndDate, jobCardId , count ); System.out.println( query ); stitchingOfflineItems = stitchingOfflineItemDAO.findByQuery( query ); } else { diff --git a/src/main/java/com/utopiaindustries/service/InventoryArtifactService.java b/src/main/java/com/utopiaindustries/service/InventoryArtifactService.java index 71b02d2..dc0e77d 100644 --- a/src/main/java/com/utopiaindustries/service/InventoryArtifactService.java +++ b/src/main/java/com/utopiaindustries/service/InventoryArtifactService.java @@ -51,4 +51,13 @@ public class InventoryArtifactService { finishedItem.setJobCard( jobCardDAO.find( finishedItem.getJobCardId() ) ); return finishedItem; } + + /* + * get finished Items By Job Card ID + * */ + public FinishedItem findFinishedItemByJobCardId( long id ){ + FinishedItem finishedItem = finishedItemDAO.find( id ); + finishedItem.setJobCard( jobCardDAO.find( finishedItem.getJobCardId() ) ); + return finishedItem; + } } diff --git a/src/main/java/com/utopiaindustries/service/InventoryService.java b/src/main/java/com/utopiaindustries/service/InventoryService.java index 026a8f3..4cb57d1 100644 --- a/src/main/java/com/utopiaindustries/service/InventoryService.java +++ b/src/main/java/com/utopiaindustries/service/InventoryService.java @@ -61,7 +61,7 @@ public class InventoryService { if ( jobCardId == 0 || jobCardWrapper.getItems( ) == null || jobCardWrapper.getItems( ).isEmpty( ) ) { throw new RuntimeException( " JobCard can`t be empty"); } - JobCard jobCard = jobCardDAO.find( jobCardId ); + JobCard jobCard = jobCardDAO.find( jobCardId ); // get job cad items List jobCardItemWrappers = jobCardWrapper.getItems( ); List jobCardItemWrapperIds = jobCardItemWrappers.stream( ) @@ -155,6 +155,8 @@ public class InventoryService { if ( transactionType.equalsIgnoreCase( InventoryTransactionLeg.Type.IN.name( ))) { initialBalance = initialBalance.add( inventoryTransactionLeg.getQuantity( )); + }else if(transactionType.equalsIgnoreCase( InventoryTransactionLeg.Type.OUT.name( )) && inventoryTransactionLeg.getQuantity().equals(BigDecimal.ZERO)){ + initialBalance = BigDecimal.ZERO; } else { initialBalance = initialBalance.subtract( inventoryTransactionLeg.getQuantity( )); } @@ -297,11 +299,15 @@ public class InventoryService { public void createStitchingOfflineItemsFromJobCard( JobCard jobCard) { List jobCardItems = jobCard.getItems( ); List updatedItems = new ArrayList<>( ); + // validate items validateItems( jobCardItems); // check whether all bundles are received against finish goods checkAllBundleAreReceived( jobCard.getId( ), jobCardItems); for ( JobCardItem item : jobCardItems) { + if(item.getTotalProduction() == null){ + item.setTotalProduction(BigDecimal.ZERO); + } // select which has inventory if ( item.getProduction( ).compareTo( BigDecimal.ZERO ) != 0 ) { // production is completed out bundles diff --git a/src/main/java/com/utopiaindustries/service/JobCardService.java b/src/main/java/com/utopiaindustries/service/JobCardService.java index 93b9d70..171adb1 100644 --- a/src/main/java/com/utopiaindustries/service/JobCardService.java +++ b/src/main/java/com/utopiaindustries/service/JobCardService.java @@ -9,6 +9,7 @@ import com.utopiaindustries.model.uind.Item; import com.utopiaindustries.querybuilder.ctp.JobCardQueryBuilder; import com.utopiaindustries.util.StringUtils; import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,8 +32,10 @@ public class JobCardService { private final LocationSiteDAO locationSiteDAO; private final PurchaseOrderDAO purchaseOrderDAO; private final UserInventoryAccountDAO userInventoryAccountDAO; + private final FinishedItemDAO finishedItemDAO; + private final StitchingOfflineItemDAO stitchingOfflineItemDAO; - public JobCardService(JobCardDAO jobCardDAO, CutPieceTypeDAO cutPieceTypeDAO, JobCardItemDAO jobCardItemDAO, CutPieceDAO cutPieceDAO, ItemDAO itemDAO, LocationSiteDAO locationSiteDAO, PurchaseOrderDAO purchaseOrderDAO, UserInventoryAccountDAO userInventoryAccountDAO) { + public JobCardService(JobCardDAO jobCardDAO, CutPieceTypeDAO cutPieceTypeDAO, JobCardItemDAO jobCardItemDAO, CutPieceDAO cutPieceDAO, ItemDAO itemDAO, LocationSiteDAO locationSiteDAO, PurchaseOrderDAO purchaseOrderDAO, UserInventoryAccountDAO userInventoryAccountDAO, FinishedItemDAO finishedItemDAO, StitchingOfflineItemDAO stitchingOfflineItemDAO) { this.jobCardDAO = jobCardDAO; this.cutPieceTypeDAO = cutPieceTypeDAO; this.jobCardItemDAO = jobCardItemDAO; @@ -41,6 +44,8 @@ public class JobCardService { this.locationSiteDAO = locationSiteDAO; this.purchaseOrderDAO = purchaseOrderDAO; this.userInventoryAccountDAO = userInventoryAccountDAO; + this.finishedItemDAO = finishedItemDAO; + this.stitchingOfflineItemDAO = stitchingOfflineItemDAO; } /* @@ -63,8 +68,7 @@ public class JobCardService { /* * get cards * */ - public List getCards( String id, - String code, + public List getCards( String code, String status, String inventoryStatus, String customer, @@ -79,11 +83,16 @@ public class JobCardService { if( limit == null ){ limit = 100L; } - if( StringUtils.isAnyNotNullOrEmpty( id, code, status, inventoryStatus, customer, lotNumber, purchaseOrderId, locationSiteId, createdStartDate, createdEndDate ) ){ - String query = JobCardQueryBuilder.buildQuery( id, code, authentication.getName(), status, inventoryStatus, customer, lotNumber, purchaseOrderId, locationSiteId, createdStartDate, createdEndDate, limit ); + if( StringUtils.isAnyNotNullOrEmpty( code, status, inventoryStatus, customer, lotNumber, purchaseOrderId, locationSiteId, createdStartDate, createdEndDate ) ){ + String query = JobCardQueryBuilder.buildQuery(code, authentication.getName(), status, inventoryStatus, customer, lotNumber, purchaseOrderId, locationSiteId, createdStartDate, createdEndDate, limit ); System.out.println( query ); + for (GrantedAuthority role : authentication.getAuthorities()){ + if (role.toString().equals("ROLE_ADMIN")){ + return jobCards = jobCardDAO.findByAllWithLimit(limit); + } + } jobCards = jobCardDAO.findByQuery( query ); - } else { + }else { jobCards = jobCardDAO.findByUserAndLimit( authentication.getName(), limit ); } return jobCards; @@ -115,6 +124,7 @@ public class JobCardService { @Transactional( rollbackFor = Exception.class ) public void save(JobCard jobCard) { if (jobCard != null && jobCard.getItems() != null) { + jobCard.setInventoryStatus(String.valueOf(JobCard.InventoryStatus.NOT_RECEIVED_YET)); long jobCardId = jobCardDAO.save( jobCard ); jobCard.setId( jobCardId ); generateCode( jobCard ); @@ -192,9 +202,6 @@ public class JobCardService { return jobCard; } - - - /* * find card recursively * */ @@ -255,5 +262,22 @@ public class JobCardService { public List getJobCardItems( long jobCardId ){ return jobCardItemDAO.findByCardId( jobCardId ); } + public JobCard findByID( long jobCardId ){ + return jobCardDAO.find( jobCardId ); + } + public List findJobCardItemByJobCardId( long jobCardId ){ + return jobCardItemDAO.findByCardId(jobCardId); + } + + public List findCutPieceByJobCardItemIds( List itemIds ){ + return cutPieceDAO.findByJobCardItemIdsWithGroupByType(itemIds); + } + + public List findFinishItemByJobCardId( long jobCardId ){ + return finishedItemDAO.findByJobCardId( jobCardId ); + } + public List findStitchItemByJobCardId( long jobCardId ){ + return stitchingOfflineItemDAO.findByJobCardId( jobCardId ); + } } diff --git a/src/main/java/com/utopiaindustries/service/UserService.java b/src/main/java/com/utopiaindustries/service/UserService.java index 8312288..1d5d36f 100644 --- a/src/main/java/com/utopiaindustries/service/UserService.java +++ b/src/main/java/com/utopiaindustries/service/UserService.java @@ -87,7 +87,9 @@ public class UserService { private void saveUserRolesAndAccounts( User user ){ List newRoles = user.getAuthorities(); - newRoles.forEach(authority -> authority.setUsername( user.getUsername() )); + if(newRoles != null) { + newRoles.forEach(authority -> authority.setUsername(user.getUsername())); + } List newInventoryAccounts = user.getInventoryAccounts(); if( newInventoryAccounts != null ){ newInventoryAccounts.forEach(account -> account.setUsername( user.getUsername() )); diff --git a/src/main/resources/static/js/receive-inventory.js b/src/main/resources/static/js/receive-inventory.js index cc84bb0..72edae9 100644 --- a/src/main/resources/static/js/receive-inventory.js +++ b/src/main/resources/static/js/receive-inventory.js @@ -15,7 +15,7 @@ - {{item.expectedProduction}} - + - {{ populateCuttingAccount() }} + {{ populateCuttingAccount() }} ` @@ -60,15 +60,15 @@ -
- -
-
+
@@ -81,7 +81,7 @@ }, template : ` - +
@@ -89,11 +89,12 @@ - + + - diff --git a/src/main/resources/templates/_fragments.html b/src/main/resources/templates/_fragments.html index 8a34827..35cac83 100644 --- a/src/main/resources/templates/_fragments.html +++ b/src/main/resources/templates/_fragments.html @@ -53,7 +53,7 @@ th:classappend="${#strings.startsWith(#httpServletRequest.getRequestURI(), '/ctp/packaging') ? 'active' : ''}">Packaging - diff --git a/src/main/resources/templates/_job-card-fragment.html b/src/main/resources/templates/_job-card-fragment.html index c726003..a0246e1 100644 --- a/src/main/resources/templates/_job-card-fragment.html +++ b/src/main/resources/templates/_job-card-fragment.html @@ -22,7 +22,7 @@
- +
diff --git a/src/main/resources/templates/_job-card-sidebar.html b/src/main/resources/templates/_job-card-sidebar.html index 9d7e663..0c5b148 100644 --- a/src/main/resources/templates/_job-card-sidebar.html +++ b/src/main/resources/templates/_job-card-sidebar.html @@ -8,11 +8,7 @@
Refine Your Search
- - -
-
- +
diff --git a/src/main/resources/templates/cutting/_bundle-sidebar.html b/src/main/resources/templates/cutting/_bundle-sidebar.html index 7a87757..b7a6ec9 100644 --- a/src/main/resources/templates/cutting/_bundle-sidebar.html +++ b/src/main/resources/templates/cutting/_bundle-sidebar.html @@ -20,7 +20,7 @@
- +
diff --git a/src/main/resources/templates/cutting/inventory-transactions.html b/src/main/resources/templates/cutting/inventory-transactions.html index ef8e467..3ad8783 100644 --- a/src/main/resources/templates/cutting/inventory-transactions.html +++ b/src/main/resources/templates/cutting/inventory-transactions.html @@ -38,7 +38,7 @@
- + diff --git a/src/main/resources/templates/finishing/finished-item-list.html b/src/main/resources/templates/finishing/finished-item-list.html index b99ed64..92d6726 100644 --- a/src/main/resources/templates/finishing/finished-item-list.html +++ b/src/main/resources/templates/finishing/finished-item-list.html @@ -50,9 +50,9 @@ diff --git a/src/main/resources/templates/job-card-list.html b/src/main/resources/templates/job-card-list.html index 24cd34b..6840123 100644 --- a/src/main/resources/templates/job-card-list.html +++ b/src/main/resources/templates/job-card-list.html @@ -34,7 +34,7 @@ - + diff --git a/src/main/resources/templates/stitching/stitching-item-form.html b/src/main/resources/templates/stitching/stitching-item-form.html index e429666..5b5b69f 100644 --- a/src/main/resources/templates/stitching/stitching-item-form.html +++ b/src/main/resources/templates/stitching/stitching-item-form.html @@ -79,7 +79,7 @@ {{item.actualProduction}}
ItemCut Pieces Expected Production Actual ProductionAccountAccount
- PENDING - REVERTED -
+ PENDING + REVERTED +
DONE
diff --git a/src/main/resources/templates/job-card-view.html b/src/main/resources/templates/job-card-view.html new file mode 100644 index 0000000..19b9b70 --- /dev/null +++ b/src/main/resources/templates/job-card-view.html @@ -0,0 +1,168 @@ + + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
Code
Job Order ID + + + +
Card Status + +
Inventory Status + +
Customer + +
Lot Number + +
Purchase Order ID + +
Items + + + + + + + + + + + + + + + + + + + + + + + +
IDItem IDSkuExpected ProductionActual ProductionTotal ProductionCut Piece Items
+ + + + + + + +
+
+
Stitching Offline Items + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDItem IDSkuBar CodeQA StatusQA RemarksCreated AtCreated By
ad
+
Finish Items + + + + + + + + + + + + + + + + + + + + + + + + +
IDItem IDSkuBar CodeStatusCreated AtCreated By
ad
+
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/quality-control/qc-items-list.html b/src/main/resources/templates/quality-control/qc-items-list.html index 1f14b58..65336e9 100644 --- a/src/main/resources/templates/quality-control/qc-items-list.html +++ b/src/main/resources/templates/quality-control/qc-items-list.html @@ -50,9 +50,9 @@
- PENDING - REVERTED -
+ PENDING + REVERTED +
DONE
- + {{item.totalProduction}}