diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java index 2be22253..6126fe36 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java @@ -312,6 +312,11 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi private void startPickingActivity(List fabbisognoList) { String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + String ordini = UtilityDB.listValueToString(Stream.of(mProdFabbisognoItemModel) + .filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get()) + .map(x -> ((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getNumOrd().toString()) + .toList()); + List sitArtOrdDTOS = Stream.of(fabbisognoList) .map(x -> { SitArtOrdDTO sitArtOrdDTO = new SitArtOrdDTO() @@ -328,6 +333,7 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi sitArtOrdDTO.getExtraInfo().put("dataInizio", x.getDataInizio()); sitArtOrdDTO.getExtraInfo().put("dataFine", x.getDataFine()); + sitArtOrdDTO.getExtraInfo().put("ordini", ordini); return sitArtOrdDTO; }) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/rest/ProdFabbisognoLineeProdRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/rest/ProdFabbisognoLineeProdRESTConsumer.java index d75d5188..8f54b725 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/rest/ProdFabbisognoLineeProdRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/rest/ProdFabbisognoLineeProdRESTConsumer.java @@ -50,123 +50,26 @@ public class ProdFabbisognoLineeProdRESTConsumer extends _BaseRESTConsumer { } - public void loadFabbisogno(String codMart, Date startDate, Date endDate, String codMdep, RunnableArgs> onComplete, RunnableArgs onFailed) { - String sql = "WITH input_values AS ( " + - " SELECT " + UtilityDB.valueToString(startDate) + " AS data_inizio, " + - " " + UtilityDB.valueToString(endDate) + " AS data_fine, " + -// " " + UtilityDB.valueToString(lineaProd) + " AS linea_prod, " + - " " + UtilityDB.valueToString(codMdep) + " AS cod_mdep)," + - " withdraw_mtb_colr AS ( " + - " SELECT cod_mart, " + - " SUM(ISNULL(qta_col, 0)) as qta_col, " + - " SUM(ISNULL(num_cnf, 0)) as num_cnf, " + - " mtb_colr.data_ord, " + - " mtb_colr.num_ord, " + - " mtb_colr.gestione " + - " FROM mtb_colr " + - " INNER JOIN mtb_colt mc on mtb_colr.gestione = mc.gestione and mtb_colr.data_collo = mc.data_collo and " + - " mtb_colr.ser_collo = mc.ser_collo and mtb_colr.num_collo = mc.num_collo " + - " WHERE segno = -1 " + - " AND cod_dtip IS NULL " + - " GROUP BY cod_mart, " + - " mtb_colr.data_ord, " + - " mtb_colr.num_ord, " + - " mtb_colr.gestione " + - " ), " + - " custom_mtb_colr AS (SELECT cod_mart, " + - " SUM(qta_col) AS qta_col, " + - " SUM(num_cnf) AS num_cnf, " + - " posizione " + - " FROM mvw_sitart_udc_det_inventario " + - " GROUP BY cod_mart, posizione), " + - " grouped_ord AS ( " + - " SELECT dtb_ordr.cod_mart, " + - " dtb_ordt.cod_jfas, " + - " dtb_ordt.cod_mdep, " + - " dtb_ordt.gestione, " + - " CONVERT(NUMERIC(15, 5), SUM(dtb_ordr.qta_ord * dtb_ordr.rap_conv) - " + - " SUM(dtb_ordr.qta_evasa * dtb_ordr.rap_conv)) AS qta_ord, " + - " SUM(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa) AS num_cnf_ord, " + - " SUM(ISNULL(withdraw_mtb_colr.qta_col, 0)) AS qta_col_scaricata, " + - " SUM(ISNULL(withdraw_mtb_colr.num_cnf, 0)) AS num_cnf_scaricata " + - " FROM dtb_ordr " + - " INNER JOIN dtb_ordt on dtb_ordr.gestione = dtb_ordt.gestione AND " + - " dtb_ordr.data_ord = dtb_ordt.data_ord AND " + - " dtb_ordr.num_ord = dtb_ordt.num_ord " + - " LEFT OUTER JOIN withdraw_mtb_colr " + - " ON withdraw_mtb_colr.gestione = dtb_ordt.gestione AND " + - " withdraw_mtb_colr.num_ord = dtb_ordt.num_ord AND " + - " withdraw_mtb_colr.data_ord = dtb_ordt.data_ord AND " + - " withdraw_mtb_colr.cod_mart = dtb_ordr.cod_mart " + - " CROSS APPLY input_values " + - " WHERE dtb_ordt.gestione = 'L' " + - " AND flag_evaso = 'I' " + - " AND dtb_ordr.flag_evaso_forzato = 'N' " + - " AND flag_annulla = 'N' " + - " AND dtb_ordt.cod_mdep = input_values.cod_mdep " + - " AND dtb_ordt.data_ord BETWEEN input_values.data_inizio AND input_values.data_fine " + - " GROUP BY dtb_ordr.cod_mart, dtb_ordt.cod_jfas, dtb_ordt.cod_mdep, dtb_ordt.gestione " + - " ), " + - " tmp_ord AS (SELECT grouped_ord.cod_mart, " + - " mtb_aart.unt_mis, " + - " grouped_ord.cod_jfas, " + - " SUM(qta_ord) - SUM(qta_col_scaricata) AS qta_ord, " + - " SUM(num_cnf_ord) - SUM(num_cnf_scaricata) AS num_cnf_ord " + - " FROM grouped_ord " + - " INNER JOIN mtb_aart ON grouped_ord.cod_mart = mtb_aart.cod_mart " + - " CROSS APPLY input_values " + - " GROUP BY grouped_ord.cod_mart, mtb_aart.unt_mis, grouped_ord.cod_jfas " + - " ), " + - " ord_without_positioned_mtb_colt AS ( " + - " SELECT tmp_ord.cod_mart, " + - " tmp_ord.cod_jfas, " + - " ISNULL(custom_mtb_colr_on_linea.posizione, tmp_ord.cod_jfas) AS posizione, " + - " unt_mis, " + - " qta_ord AS qta_ord_calc, " + - " num_cnf_ord AS num_cnf_ord_calc, " + - " ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_gia_posizionata, " + - " ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_gia_posizionata, " + - " qta_ord - ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_fabbisogno, " + - " num_cnf_ord - ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_fabbisogno " + - " FROM tmp_ord " + - " INNER JOIN jrl_fase_posizioni ON tmp_ord.cod_jfas = jrl_fase_posizioni.cod_jfas " + - " AND tmp_ord.cod_jfas = jrl_fase_posizioni.posizione " + - " LEFT OUTER JOIN custom_mtb_colr custom_mtb_colr_on_linea " + - " ON tmp_ord.cod_mart = custom_mtb_colr_on_linea.cod_mart AND " + - " tmp_ord.cod_jfas = custom_mtb_colr_on_linea.posizione " + - " " + - " UNION ALL " + - " " + - " SELECT DISTINCT tmp_ord.cod_mart, " + - " null AS cod_jfas, " + - " jrl_fase_posizioni.posizione, " + - " unt_mis, " + - " 0 AS qta_ord_calc, " + - " 0 AS num_cnf_ord_calc, " + - " ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_gia_posizionata, " + - " ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_gia_posizionata, " + - " 0 AS qta_fabbisogno, " + - " 0 AS num_cnf_fabbisogno " + - " FROM tmp_ord " + - " INNER JOIN jrl_fase_posizioni ON tmp_ord.cod_jfas = jrl_fase_posizioni.cod_jfas " + - " AND tmp_ord.cod_jfas <> jrl_fase_posizioni.posizione " + - " " + - " " + - " LEFT OUTER JOIN custom_mtb_colr custom_mtb_colr_on_linea " + - " ON tmp_ord.cod_mart = custom_mtb_colr_on_linea.cod_mart AND " + - " jrl_fase_posizioni.posizione = custom_mtb_colr_on_linea.posizione " + - " ) " + - "SELECT DISTINCT cod_mart, " + - " unt_mis, " + - " cod_jfas, " + - " input_values.data_inizio, " + - " input_values.data_fine " + - "FROM ord_without_positioned_mtb_colt " + - "CROSS APPLY input_values " + - "WHERE cod_mart = " + UtilityDB.valueToString(codMart) + " " + - "GROUP BY cod_mart, unt_mis, cod_jfas, input_values.data_inizio, input_values.data_fine " + - "HAVING SUM(qta_ord_calc - qta_gia_posizionata) > 0 AND SUM(num_cnf_ord_calc - num_cnf_gia_posizionata) > 0 " + - "ORDER BY cod_mart"; + public void loadFabbisogno(String codMart, String ordini, Date startDate, Date endDate, String codMdep, RunnableArgs> onComplete, RunnableArgs onFailed) { + String sql = "SELECT DISTINCT cod_jfas\n" + + "FROM (SELECT DENSE_RANK() OVER (PARTITION BY dtb_ordt.gestione, dtb_ordt.data_ord, dtb_ordt.num_ord ORDER BY dtb_ord_steps.data_iniz DESC) AS row_n,\n" + + " dtb_ord_steps.*\n" + + " FROM dtb_ord_steps\n" + + " INNER JOIN dtb_ordt ON dtb_ord_steps.data_ord = dtb_ordt.data_ord\n" + + " AND dtb_ord_steps.num_ord = dtb_ordt.num_ord\n" + + " AND dtb_ord_steps.gestione = dtb_ordt.gestione\n" + + " INNER JOIN dtb_ordr ON dtb_ordr.gestione = dtb_ord_steps.gestione AND\n" + + " dtb_ordr.data_ord = dtb_ord_steps.data_ord AND\n" + + " dtb_ordr.num_ord = dtb_ord_steps.num_ord\n" + + " WHERE dtb_ordt.gestione = 'L'\n" + + " AND dtb_ordr.flag_evaso = 'I'\n" + + " AND dtb_ordr.flag_evaso_forzato = 'N'\n" + + " AND flag_annulla = 'N'\n" + + " AND dtb_ordt.cod_mdep = " + UtilityDB.valueToString(codMdep) + "\n" + + " AND dtb_ordt.num_ord IN ( " + ordini + " )\n" + + " AND dtb_ordt.data_ord BETWEEN " + UtilityDB.valueToString(startDate) + " AND " + UtilityDB.valueToString(endDate) + "\n" + + " AND dtb_ordr.cod_mart = " + UtilityDB.valueToString(codMart) + ") t\n" + + "WHERE t.row_n = 1"; Type typeOfObjectsList = new TypeToken>() {}.getType(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdView.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdView.java index ba232757..b51c592a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdView.java @@ -76,6 +76,7 @@ public class DialogRowInfoProdFabbisognoLineeProdView extends BaseDialogRowInfoV this.mViewModel.init( sitArtOrdDTO.getCodMart(), sitArtOrdDTO.getCodMdep(), + (String) sitArtOrdDTO.getExtraInfo().get("ordini"), (Date) sitArtOrdDTO.getExtraInfo().get("dataInizio"), (Date) sitArtOrdDTO.getExtraInfo().get("dataFine")); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdViewModel.java index df3405ba..c6b9e622 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdViewModel.java @@ -23,10 +23,10 @@ public class DialogRowInfoProdFabbisognoLineeProdViewModel { } - public void init(String codMart, String codMdep, Date startDate, Date endDate) { + public void init(String codMart, String codMdep, String ordni, Date startDate, Date endDate) { this.sendOnLoadingStarted(); - this.mProdFabbisognoLineeProdRESTConsumer.loadFabbisogno(codMart, startDate, endDate, codMdep, fabbisognoList -> { + this.mProdFabbisognoLineeProdRESTConsumer.loadFabbisogno(codMart, ordni, startDate, endDate, codMdep, fabbisognoList -> { this.mFabbisognoList.postValue(fabbisognoList); this.sendOnLoadingEnded(); }, this::sendError);