feat: defasagem configuravel entre corte e solda no cronograma e dashboard de producao
This commit is contained in:
@@ -72,6 +72,7 @@ export const useCronogramas = () => {
|
||||
of_id: cronograma.of_id,
|
||||
gestor_id: cronograma.gestor_id,
|
||||
revisao: cronograma.revisao,
|
||||
defasagem_solda: cronograma.defasagem_solda ?? 10,
|
||||
processos: processos || [],
|
||||
peso_total: cronograma.ordens_fabricacao?.peso_total,
|
||||
ordem_fabricacao: cronograma.ordens_fabricacao,
|
||||
@@ -106,6 +107,7 @@ export const useCronogramas = () => {
|
||||
.update({
|
||||
gestor_id: cronograma.gestor_id,
|
||||
revisao: novaRevisao,
|
||||
defasagem_solda: cronograma.defasagem_solda !== undefined ? cronograma.defasagem_solda : 10,
|
||||
updated_at: new Date().toISOString()
|
||||
})
|
||||
.eq('id', cronograma.id)
|
||||
@@ -139,6 +141,7 @@ export const useCronogramas = () => {
|
||||
.update({
|
||||
gestor_id: cronograma.gestor_id,
|
||||
revisao: novaRevisao,
|
||||
defasagem_solda: cronograma.defasagem_solda !== undefined ? cronograma.defasagem_solda : 10,
|
||||
updated_at: new Date().toISOString()
|
||||
})
|
||||
.eq('id', existingCronograma.id)
|
||||
@@ -163,6 +166,7 @@ export const useCronogramas = () => {
|
||||
of_id: cronograma.of_id,
|
||||
gestor_id: cronograma.gestor_id,
|
||||
revisao: 1,
|
||||
defasagem_solda: cronograma.defasagem_solda !== undefined ? cronograma.defasagem_solda : 10,
|
||||
created_by: user.id
|
||||
})
|
||||
.select()
|
||||
@@ -255,6 +259,7 @@ export const useCronogramas = () => {
|
||||
of_id: cronograma.of_id,
|
||||
gestor_id: cronograma.gestor_id,
|
||||
revisao: cronograma.revisao,
|
||||
defasagem_solda: cronograma.defasagem_solda ?? 10,
|
||||
processos: processos || [],
|
||||
peso_total: cronograma.ordens_fabricacao?.peso_total,
|
||||
ordem_fabricacao: cronograma.ordens_fabricacao,
|
||||
|
||||
@@ -215,6 +215,7 @@ export const useDashboardProducaoOtimizado = (ofNumber: string) => {
|
||||
.from('cronogramas_of')
|
||||
.select(`
|
||||
id,
|
||||
defasagem_solda,
|
||||
processos_cronograma:processos_cronograma(
|
||||
nome_processo,
|
||||
data_inicio,
|
||||
@@ -287,6 +288,27 @@ export const useDashboardProducaoOtimizado = (ofNumber: string) => {
|
||||
console.log(`Processo ${nomeProcesso}: ${diasDecorridos}/${diasTotais} dias = ${percentualEsperado.toFixed(2)}%`);
|
||||
}
|
||||
|
||||
// Se for o processo de Solda, aplicar o fator de defasagem configurado em relação ao Corte
|
||||
if (nomeProcesso.toLowerCase().includes('solda')) {
|
||||
const defasagem = cronogramaOf?.defasagem_solda !== undefined && cronogramaOf?.defasagem_solda !== null
|
||||
? Number(cronogramaOf.defasagem_solda)
|
||||
: 10;
|
||||
|
||||
if (percentualEsperado <= defasagem) {
|
||||
console.log(`Processo Solda: Fabricação esperada (${percentualEsperado.toFixed(2)}%) <= defasagem (${defasagem}%) -> Progresso esperado Solda: 0%`);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (hoje > dataFim) {
|
||||
return 100;
|
||||
}
|
||||
|
||||
// Escalonamento suave proporcional: de defasagem% até 100%
|
||||
const progressoSolda = ((percentualEsperado - defasagem) / (100 - defasagem)) * 100;
|
||||
console.log(`Processo Solda: Fabricação (${percentualEsperado.toFixed(2)}%) com defasagem (${defasagem}%) -> Solda esperada: ${progressoSolda.toFixed(2)}%`);
|
||||
return Math.min(100, Math.max(0, progressoSolda));
|
||||
}
|
||||
|
||||
return Math.min(100, Math.max(0, percentualEsperado));
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user