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