wiki


Procédure de restauration d'une base Postgresql


Procédure création d'un site actif dans Geedoc


Procédure de mise à jour d'un code pesée pour une date de pesée donnée


Applications terrains sur PDA

GeedocMobile

Modifier l'application : TODO
Enlever les Oestrus, les Endoscopies : Non utilisés
Voir si l'onglet pour réformer les animaux est utilisée : je ne sais même pas si les utilisateurs sont au courant de cette opération possible sur le PDA.

Geedoc_Saillie : TODO Pb avec Windows Mobile 6 Professionel SDK

- git : Fait
- MCD : TODO

Geedoc_PMM : TODO : Pb avec Windows Mobile 6 Professionel SDK

- git: Fait
- MCD : TODO

Ma TODO LIST (MCB)

Documents à mettre sur la forge : je suis en train de rassembler tout sur le même répertoire (En cours)

DLL SagaMCBHelper.DLL : ok fait
Envoyer mail à Xavier et Pierre : fait
Fait sur le projet https://forge-dga.jouy.inra.fr/projects/sicpa-dll

Reste à Faire pour la suite après départ MCB

Demandes Forge

https://forge-dga.jouy.inra.fr/issues/10794 Ajout lactose analyses laits

https://forge-dga.jouy.inra.fr/issues/10896 Identification des caprins

https://forge-dga.jouy.inra.fr/issues/10858 Export OVALL

Vérifications

De temps en temps, je vérifie :

Unicité du numéro IPG intra espèce

Caprin : select distinct IPG,count() from animal where espece='1' group by ipg having count()>1
Ovin : select distinct IPG,count() from animal where espece='2' group by ipg having count()>1

Contrôler la date de départ par rapport à la date de naissance

Parfois au retour des mises-bas saisie sur PDA, je ne sais pas pourquoi mais les données sont modifiées et la date de naissance est supérieure à la date de départ (Il s'agit des morts-nés).

select elv_ne,id_animal,ipg,d_nais,d_depart from animal where d_nais is not null and d_depart<d_nais;

Pesées

Vérifier qu'il n'y a pas de poids=0

select EA.elv_prod,EA.espece,EA.prod,d_pesee,poids from pesee PS
inner join present PR on PS.present_id=PR.present_id
inner join animal A on PR.animal_id=A.animal_id
inner join elv_actif EA on PR.troupeau_id=EA.troupeau_id
where poids=0

Note d'Etat Corporel (NEC)

Vérification sur la note lombaire : note_lomb <50

select EA.elv_prod,EA.espece,EA.prod,EC.d_note_etat,note_lomb,note_ster from etat_corporel EC
inner join present PR on EC.present_id=PR.present_id
inner join animal A on PR.animal_id=A.animal_id
inner join elv_actif EA on PR.troupeau_id=EA.troupeau_id
where note_lomb is not null and note_lomb between 1 and 50 and d_note_etat>'2018-01-01'

Vérification sur la note sternale : note_lomb <50

select * from etat_corporel EC
inner join present PR on EC.present_id=PR.present_id
inner join elv_actif EA on PR.troupeau_id=EA.troupeau_id
inner join animal A on PR.animal_id=A.animal_id
where note_ster is not null and note_ster between 1 and 50 and d_note_etat>'2018-01-01'

Nettoyage des tables d'anomalies

Il faudrait trouver une procédure à exécuter de temps en temps pour vider les tables *_ERR

Dans la fonction pr_retour_pesee : il y a suppression dans pese_err avec d_operation de plus de 2 mois

Dans la fonction pr_retour_traite : il y a suppression dans chantier_err, traite_err, debit_lait_err avec d_operation de plus de 2 mois pour le troupeau étudié

Dans la fonction pr_retour_misebas : il y a suppression dans agneau_err, misebas_err avec d_operation de plus de 2 mois pour le troupeau traité

Dans la fonction pr_retour_abattage : il y a suppression dans abattage_err avec d_operation de plus de 2 mois

Dans la fonction pr_retour_gestation : il y a suppression dans gestation_err avec d_operation de plus de 2 mois pour le troupeau traité

Dans la fonction pr_retour_nec : il y a suppression dans nec_err avec d_operation de plus de 2 mois pour le troupeau traité

Que faire pour les autres tables si non traitées avec les procédures pr_retour_:

Anim_loc_err, Comportement_err, genotypes_err, lutte_nat_err, palpation_err

Version de l'application GeedocPG

De temps en temps, je vérifie que les utilisateurs ont une version de CeedocPG pas trop ancienne.

Il y a peut-être mieux :

select distinct UC.nom_pc,UT.id_user,UT.prenom,UT.nom,EA.elv_prod,EA.espece,EA.prod,max(UC.version)
from user_connect UC
INNER JOIN utilisateur UT ON UC.user_id=UT.user_id
INNER JOIN elv_actif EA ON UC.troupeau_id=EA.troupeau_id
where UT.id_user not IN ('AGA','XAU')
GROUP by UC.nom_pc,UT.id_user,UT.prenom,UT.nom,EA.elv_prod,EA.espece,EA.prod
ORDER by UC.nom_pc,UT.id_user,UT.prenom,UT.nom,EA.elv_prod,EA.espece,EA.prod;

Je mets la version dans la table Version_Ihm
Exemple : insert into version_ihm(id_version,d_distrib) values ('1.0.6','2024-07-10')

L'utilisateur a le message du changement de version à faire.

Application PC GeedocPG

Développement

On pourrait créer un dossier BAO (Boite A Outil) ou autre Nom car très proche de DAO (Data Acces Objet.)

On pourrait couper le GROS fichier clsGestionGeedoc.cs en plusieurs petits fichiers en fonction du type de Data
Table ANIMAL :
Table ANIM_EXPE :
Table ANIM_LOC :
.etc..

Note d'Etat Corporel : A partir d'un fichier

Ne pas demander Campagne/Saison.
Faire comme dans la procédure pr_maj_nec :
Si c'est un jeune (d_repro is nul dans la table Animal) et pas encore en campagne/saison (last_camprepro_id is null dans la table Present) : prendre la campagne/saison de la mère Génétique (ou Porteuse)
Sinon : prendre last_camprepro_id

Question : est-ce vraiment utile camprepro_id dans cette table ?

Pesées : A partir d'un Fichier

Simplifier également pour les histoires de campagne/saison (camprepro_id A réfléchir)

Question : est-ce vraiment utile camprepro_id dans cette table ?
Attention, dans cette table, le champ camprepro_id (campagne/saison) sert :

Exemples :
- pour avoir des statistiques des pesées de croissance intra campagne/saison (nat_pesee='2')
- pour avoir la pesées de mise à la lutte (cd_pesee='10') intra campagne/saison
- pour avoir la pesées de mise bas (cd_pesee='11') intra campagne/saison

Changement de version : Menu ? "MAJ version Geedoc" : à finir ou à supprimer

Extraction de données : frmSqlGen.sql

On pourrait remettre les tables liées aux SQL : A réfléchir et à adapter avec le nouveau MCD

Il y 3 tables : A modifier

TABLES_SQL :

Nom_Table b_espece b_elv_prod b_prod
Pesee O O O
Etat_Corporel O O O
Repro O O O
Animal O N N

TABLES_LIENV2 : On met les Join

Table_Y Table_Z From Lien
Pesee ANIMAL from geedoc.pesee PS inner join geedoc.present PR on PS.present_id=PR.present_id inner join geedoc.animal A on PR.animal_id=A.animal_id
Etat_Corporel ANIMAL from geedoc.etat_corporel PS inner join geedoc.present PR on PS.present_id=PR.present_id inner join geedoc.animal A on PR.animal_id=A.animal_id
Repro ANIMAL from geedoc.repro R inner join geedoc.present PR on R.present_id=PR.present_id inner join geedoc.animal A on PR.animal_id=A.animal_id inner join geedoc.campagne CA ON R.camprepro_id=CA.camprepro_id
MiseBas ANIMAL from geedoc.misebas MB inner join repro R ON MB.repro_id=R.repro_id inner join geedoc.present PR on R.present_id=PR.present_id inner join geedoc.animal A on PR.animal_id=A.animal_id inner join geedoc.campagne CA ON R.camprepro_id=CA.camprepro_id

ou alors on fait juste des liens Table par Table

Table_Y Table_Z From Lien
PESEE PRESENT from geedoc.pesee PS inner join geedoc.present PR on PS.present_id=PR.present_id
ETAT_CORPOEL PRESENT from geedoc.etat_corporel EC inner join geedoc.present PR on EC.present_id=PR.present_id
REPRO PRESENT from geedoc.repro R inner join geedoc.present PR on R.present_id=PR.present_id
MISEBAS REPRO from geedoc.misebas MB inner join repro R ON MB.repro_id=R.repro_id
REPRO CAMPAGNE from geedoc.present PR inner join geedoc.campagne CA ON R.camprepro_id=CA.camprepro_id
PRESENT ANIMAL from geedoc.animal A inner join geedoc.animal A ON PR.animal_id=A.animal_id
PRESENT ELV_ACTIF from geedoc.elv_actif EA inner join geedoc.elv_actif EA ON PR.troupeau_id=EA.troupeau_id

Quand on veut aller de la table PESEE à ANIMAL : on part de PESEE , on fait le from geedoc.pesee PS, on parcours : PESEE lien avec PRESENT, puis lien entre PRESENT et ANIMAL et on met le lien entre PRESENT et ELV_ACTIF.

select * ou choisir les champs
from geedoc.pesee PS inner join geedoc.present PR on PS.present_id=PR.present_id inner join geedoc.animal A ON PR.animal_id=A.animal_id

Dans le where on a forcément le PR.troupeau_id=clsVariableGlobalesGeedoc.myTroupeau_id (A réfléchir)

STOCK_REQUETE : On stocke la requête par troupeau_id et user_id