Gerar data altomaticamente para escala

7 respostas
N

Boa tarde galera!!!
Estou desenvolvendo um projeto JSF+PRIMEFACES 2.2 e demais linguagens… estou querendo criar um GerarEscala meio inteligente… que pegue o nome dos meus 5 operadores e crie uma escala para o mesmo com um simples clique… eu tenho regras de nógicio para isto ex: Um operador que inicia o seu trabalho no periodo noturno devera ficar o resto da semana no peiodo notuno… Agora a minha grande e eterna duvida é… COMO GERAR UM CALENDARIO DE ESCALA ALTOMATICAMENTE?.. obrigado :smiley:

7 Respostas

C

Voce tem mais detalhes sobre a sua implementacao?

A grosso modo, voce poderia criar um Map de funcionarios.

Pseudocodigo:

Map mapFuncionarios;

class Escala() {

 private Map<Date, PeriodoEnum> mapEscala;

}

enum Periodo {

  NOTURNO,
  DIURNO
}


class Funcionario {

  private String nome;

}


class Calendario {

  Map<Funcionario, Escala> mapFuncionarios;

  void render() {
     while ( nextFuncionario ) {
         Escala e = mapFuncionarios.get(funcionario);
         // impressao de funcionario vc escala
         print(funcionario, e);
     }
  }
}
N

Detalhes de que tipo você quer? meu diagrama de classes ou oque?

C

Mais descricao de como sera o seu calendario. Um wireframe?

N

ta vamos la vou tentar ser o mais claro possivel… eu tenho o meu cadastro de operadores em uma tela e a tela escala certo?.. bem na tela escala oque eu pensei… selecionar o mes atravez de uma função do <p:calendar> do prime faces e depois clicar em um button GERAR! e ser gerada a tabela com os nome dos operadores e sua escala, vou tentar fazer ela nesse estilo editavel

http://quebrandoparadigmas.com/?p=223

pois dai ela jera de uma forma padrao para todo mes uma escala, depois o colaborador responsavel pela escala pode fazer alguns ajustes certo? oque vou ter nessa tabela:
NOME OPERADOR.
DIA.
HORARIO.
E FOLGA.

conseguiu vizualizar?

D

Considerando o contexto todo, acredito que apenas um map não resolva.
A não ser que seja um Map de escalas.
Explico, o dia será dividido em escalas (período de horas de trabalho). Cada escala precisa ter um Funcionário, hora de entrada e de saída. Além disso, deve haver um indicativo, penso que booleano, funcionario_folga que, quando true, obriga um outro funcionário a ser escalado (este ajuste pode ser manual).
Além disto, a escala pode conter, para a questão das horas de entrada e saída, uma constante (ou enum) do turno (manhã, tarde, noite).
Algo assim

public class Escala{
 private Funcionario funcionario;
 private Date data;
 private String turno;
 private boolean funcionarioFolga;
 //demais logicas aqui
}

Assim, quando a data for dia 10 e a flag funcionarioFolga estiver true, sabe-se que o funcionario X não estará ali.

Mais ou menos isso…

C
class Operador {

	private String nome;

}

enum Periodo {  
  
  NOTURNO,  
  DIURNO  
} 


class Escala {

	private Operador op;

	private java.util.Date dataEscala;

	private boolean isFolga;

	private Periodo periodo;

}




@ManagedBean  
@SessionScoped
class EscalaController {

	private List<Escala> escala = new ArrayList<Escala>();

	public List<Escala> getEscala() {
		
		if ( this.escala.isEmpty ) {
			this.escala = // get data.
		}
		return this.escala;

	}


}

JSF:

<p:dataTable paginator=“true” paginatorPosition=“bottom” rows=“10” var=“tarefa” value="#{escalaController.escala}">

<p:column headerText=“Operador”>
<p:resizable />
<p:cellEditor>
<f:facet name=“output”><h:outputText value="#{escala.op.nome}"/></f:facet>
<f:facet name=“input”><h:inputText value="#{escala.op.nome}"/></f:facet>
</p:cellEditor>
</p:column>

</p:dataTable>

K

Brow … um link muito bom que vai te ajudar muito:

Criado 1 de junho de 2011
Ultima resposta 1 de jun. de 2011
Respostas 7
Participantes 4