孕检界面逻辑修复完成
This commit is contained in:
@@ -123,6 +123,21 @@ public class ScPregnancyRecord extends BaseEntity
|
|||||||
private Integer daysAfterMating;
|
private Integer daysAfterMating;
|
||||||
/** 全部羊耳号列表(用于多耳号查询) */
|
/** 全部羊耳号列表(用于多耳号查询) */
|
||||||
private List<String> allEarNumbers;
|
private List<String> allEarNumbers;
|
||||||
|
// 1. 新增字段
|
||||||
|
@Excel(name = "孕检原因")
|
||||||
|
private String reason; // 初检/复检
|
||||||
|
|
||||||
|
// 2. 胚胎移植相关字段 (用于前端显示)
|
||||||
|
@Excel(name = "供体母羊")
|
||||||
|
private String donorEwe;
|
||||||
|
@Excel(name = "供体母羊品种")
|
||||||
|
private String donorEweVariety;
|
||||||
|
@Excel(name = "供体公羊")
|
||||||
|
private String donorRam;
|
||||||
|
@Excel(name = "供体公羊品种")
|
||||||
|
private String donorRamVariety;
|
||||||
|
@Excel(name = "移胚数")
|
||||||
|
private Integer embryoCount;
|
||||||
|
|
||||||
public List<String> getAllEarNumbers() {
|
public List<String> getAllEarNumbers() {
|
||||||
return allEarNumbers;
|
return allEarNumbers;
|
||||||
|
|||||||
@@ -31,63 +31,135 @@
|
|||||||
<result property="lastEventDate" column="last_event_date" />
|
<result property="lastEventDate" column="last_event_date" />
|
||||||
<result property="ranchName" column="sysRanch" />
|
<result property="ranchName" column="sysRanch" />
|
||||||
<result property="daysAfterMating" column="days_after_mating" />
|
<result property="daysAfterMating" column="days_after_mating" />
|
||||||
|
<result property="reason" column="reason" />
|
||||||
|
<result property="donorEwe" column="donor_ewe" />
|
||||||
|
<result property="donorRam" column="donor_ram" />
|
||||||
|
<result property="embryoCount" column="embryo_count" />
|
||||||
|
<result property="donorEweVariety" column="donor_ewe_variety" />
|
||||||
|
<result property="donorRamVariety" column="donor_ram_variety" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- <sql id="selectScPregnancyRecordVo">-->
|
||||||
|
<!-- select-->
|
||||||
|
<!-- pr.id,-->
|
||||||
|
<!-- pr.sheep_id,-->
|
||||||
|
<!-- pr.datetime,-->
|
||||||
|
<!-- pr.result,-->
|
||||||
|
<!-- pr.fetus_count,-->
|
||||||
|
<!-- pr.technician,-->
|
||||||
|
<!-- pr.way,-->
|
||||||
|
<!-- pr.remark,-->
|
||||||
|
<!-- pr.create_by,-->
|
||||||
|
<!-- pr.create_time,-->
|
||||||
|
<!-- sf.bs_manage_tags as manage_tags,-->
|
||||||
|
<!-- sf.variety,-->
|
||||||
|
<!-- sf.month_age,-->
|
||||||
|
<!-- sf.parity,-->
|
||||||
|
<!-- sf.mating_counts,-->
|
||||||
|
<!-- sf.sheepfold_name,-->
|
||||||
|
<!-- sf.breed,-->
|
||||||
|
<!-- sf.expected_date,-->
|
||||||
|
<!-- sf.lambing_date as last_event_date,-->
|
||||||
|
<!-- sf.dr_ranch as sysRanch,-->
|
||||||
|
|
||||||
|
<!-- -- 1. 上次孕检日期逻辑-->
|
||||||
|
<!-- (SELECT MAX(datetime) FROM sc_pregnancy_record-->
|
||||||
|
<!-- WHERE sheep_id = pr.sheep_id AND datetime < pr.datetime AND is_delete = 0) as last_event_date,-->
|
||||||
|
<!-- -- 2. 配种基础信息-->
|
||||||
|
<!-- br.create_time as mating_date,-->
|
||||||
|
<!-- br.embryo_count,-->
|
||||||
|
<!-- br.donor_ewe,-->
|
||||||
|
<!-- br.donor_ram,-->
|
||||||
|
<!-- -- 3. 配种类型映射逻辑-->
|
||||||
|
<!-- CASE br.breed_type-->
|
||||||
|
<!-- WHEN 1 THEN '供体母羊配种'-->
|
||||||
|
<!-- WHEN 2 THEN '同期发情人工授精'-->
|
||||||
|
<!-- WHEN 3 THEN '本交'-->
|
||||||
|
<!-- WHEN 4 THEN '自然发情人工授精'-->
|
||||||
|
<!-- WHEN 5 THEN '胚胎移植'-->
|
||||||
|
<!-- ELSE '' END as mating_type_name,-->
|
||||||
|
<!-- -- 4. 配种公羊品种-->
|
||||||
|
<!-- ram_sf.bs_manage_tags as father_manage_tags,-->
|
||||||
|
<!-- ram_sf.variety as father_variety,-->
|
||||||
|
<!-- -- 5. 供体品种逻辑 (再次关联羊档案)-->
|
||||||
|
<!-- donor_e_sf.variety as donor_ewe_variety,-->
|
||||||
|
<!-- donor_r_sf.variety as donor_ram_variety-->
|
||||||
|
<!-- FROM sc_pregnancy_record pr-->
|
||||||
|
<!-- LEFT JOIN sheep_file sf ON pr.sheep_id = sf.id-->
|
||||||
|
<!-- -- 关联最新的配种记录-->
|
||||||
|
<!-- LEFT JOIN (-->
|
||||||
|
<!-- SELECT t1.* FROM sc_breed_record t1-->
|
||||||
|
<!-- INNER JOIN (SELECT ewe_id, MAX(create_time) as mt FROM sc_breed_record GROUP BY ewe_id) t2-->
|
||||||
|
<!-- ON t1.ewe_id = t2.ewe_id AND t1.create_time = t2.mt-->
|
||||||
|
<!-- ) br ON pr.sheep_id = br.ewe_id-->
|
||||||
|
<!-- -- 关联配种公羊品种-->
|
||||||
|
<!-- LEFT JOIN sheep_file ram_sf ON br.ram_id = ram_sf.id-->
|
||||||
|
<!-- -- 关联供体母羊品种 (基于耳号)-->
|
||||||
|
<!-- LEFT JOIN sheep_file donor_e_sf ON br.donor_ewe = donor_e_sf.bs_manage_tags-->
|
||||||
|
<!-- -- 关联供体公羊品种 (基于耳号)-->
|
||||||
|
<!-- LEFT JOIN sheep_file donor_r_sf ON br.donor_ram = donor_r_sf.bs_manage_tags-->
|
||||||
|
<!-- -- 关联配种信息-->
|
||||||
|
<!-- ram_sf.bs_manage_tags as father_manage_tags,-->
|
||||||
|
<!-- ram_sf.variety as father_variety,-->
|
||||||
|
<!-- mating_type.dict_label as mating_type_name,-->
|
||||||
|
<!-- COALESCE(br.create_time, sf.mating_date) as mating_date,-->
|
||||||
|
<!-- -- 计算配后天数:孕检日期 - 配种日期-->
|
||||||
|
<!-- CASE-->
|
||||||
|
<!-- WHEN COALESCE(br.create_time, sf.mating_date) IS NOT NULL-->
|
||||||
|
<!-- THEN DATEDIFF(pr.datetime, COALESCE(br.create_time, sf.mating_date))-->
|
||||||
|
<!-- ELSE NULL-->
|
||||||
|
<!-- END as days_after_mating-->
|
||||||
|
<!-- from sc_pregnancy_record pr-->
|
||||||
|
<!-- INNER JOIN sheep_file sf on pr.sheep_id = sf.id-->
|
||||||
|
<!-- -- 关联配种记录表,获取最新的配种记录-->
|
||||||
|
<!-- left join (-->
|
||||||
|
<!-- select br1.*-->
|
||||||
|
<!-- from sc_breed_record br1-->
|
||||||
|
<!-- inner join (-->
|
||||||
|
<!-- select ewe_id, max(create_time) as max_time-->
|
||||||
|
<!-- from sc_breed_record-->
|
||||||
|
<!-- group by ewe_id-->
|
||||||
|
<!-- ) br2 on br1.ewe_id = br2.ewe_id and br1.create_time = br2.max_time-->
|
||||||
|
<!-- ) br on sf.id = br.ewe_id-->
|
||||||
|
<!-- -- 关联公羊信息-->
|
||||||
|
<!-- left join sheep_file ram_sf on br.ram_id = ram_sf.id-->
|
||||||
|
<!-- -- 关联配种类型字典-->
|
||||||
|
<!-- left join sys_dict_data mating_type on sf.mating_type_id = mating_type.dict_value-->
|
||||||
|
<!-- and mating_type.dict_type = 'breed_type' and mating_type.status = '0'-->
|
||||||
|
<!-- </sql>-->
|
||||||
|
|
||||||
|
|
||||||
<sql id="selectScPregnancyRecordVo">
|
<sql id="selectScPregnancyRecordVo">
|
||||||
select
|
select
|
||||||
pr.id,
|
pr.id, pr.sheep_id, pr.datetime, pr.result, pr.fetus_count, pr.technician, pr.way, pr.remark, pr.create_by, pr.create_time,pr.reason,
|
||||||
pr.sheep_id,
|
sf.bs_manage_tags as manage_tags, sf.variety, sf.month_age, sf.parity, sf.mating_counts, sf.sheepfold_name, sf.breed, sf.expected_date, sf.dr_ranch as sysRanch,
|
||||||
pr.datetime,
|
(SELECT MAX(datetime) FROM sc_pregnancy_record WHERE sheep_id = pr.sheep_id AND datetime < pr.datetime AND is_delete = 0) as last_event_date,
|
||||||
pr.result,
|
br.create_time as mating_date,
|
||||||
pr.fetus_count,
|
br.embryo_count, br.donor_ewe, br.donor_ram,
|
||||||
pr.technician,
|
mating_type.dict_label as mating_type_name,
|
||||||
pr.way,
|
|
||||||
pr.remark,
|
|
||||||
pr.create_by,
|
|
||||||
pr.create_time,
|
|
||||||
sf.bs_manage_tags as manage_tags,
|
|
||||||
sf.variety,
|
|
||||||
sf.month_age,
|
|
||||||
sf.parity,
|
|
||||||
sf.mating_counts,
|
|
||||||
sf.sheepfold_name,
|
|
||||||
sf.breed,
|
|
||||||
sf.expected_date,
|
|
||||||
sf.lambing_date as last_event_date,
|
|
||||||
sf.dr_ranch as sysRanch,
|
|
||||||
-- 关联配种信息
|
|
||||||
ram_sf.bs_manage_tags as father_manage_tags,
|
ram_sf.bs_manage_tags as father_manage_tags,
|
||||||
ram_sf.variety as father_variety,
|
ram_sf.variety as father_variety,
|
||||||
mating_type.dict_label as mating_type_name,
|
donor_e_sf.variety as donor_ewe_variety,
|
||||||
COALESCE(br.create_time, sf.mating_date) as mating_date,
|
donor_r_sf.variety as donor_ram_variety,
|
||||||
-- 计算配后天数:孕检日期 - 配种日期
|
DATEDIFF(pr.datetime, br.create_time) as days_after_mating
|
||||||
CASE
|
|
||||||
WHEN COALESCE(br.create_time, sf.mating_date) IS NOT NULL
|
|
||||||
THEN DATEDIFF(pr.datetime, COALESCE(br.create_time, sf.mating_date))
|
|
||||||
ELSE NULL
|
|
||||||
END as days_after_mating
|
|
||||||
from sc_pregnancy_record pr
|
from sc_pregnancy_record pr
|
||||||
INNER JOIN sheep_file sf on pr.sheep_id = sf.id
|
LEFT JOIN sheep_file sf on pr.sheep_id = sf.id
|
||||||
-- 关联配种记录表,获取最新的配种记录
|
LEFT JOIN (
|
||||||
left join (
|
select t1.* from sc_breed_record t1
|
||||||
select br1.*
|
inner join (select ewe_id, max(create_time) as mt from sc_breed_record group by ewe_id) t2
|
||||||
from sc_breed_record br1
|
on t1.ewe_id = t2.ewe_id and t1.create_time = t2.mt
|
||||||
inner join (
|
) br on pr.sheep_id = br.ewe_id
|
||||||
select ewe_id, max(create_time) as max_time
|
LEFT JOIN sheep_file ram_sf on br.ram_id = ram_sf.id
|
||||||
from sc_breed_record
|
LEFT JOIN sys_dict_data mating_type on CAST(br.breed_type AS CHAR) = mating_type.dict_value
|
||||||
group by ewe_id
|
|
||||||
) br2 on br1.ewe_id = br2.ewe_id and br1.create_time = br2.max_time
|
|
||||||
) br on sf.id = br.ewe_id
|
|
||||||
-- 关联公羊信息
|
|
||||||
left join sheep_file ram_sf on br.ram_id = ram_sf.id
|
|
||||||
-- 关联配种类型字典
|
|
||||||
left join sys_dict_data mating_type on sf.mating_type_id = mating_type.dict_value
|
|
||||||
and mating_type.dict_type = 'breed_type' and mating_type.status = '0'
|
and mating_type.dict_type = 'breed_type' and mating_type.status = '0'
|
||||||
|
LEFT JOIN sheep_file donor_e_sf on br.donor_ewe = donor_e_sf.bs_manage_tags
|
||||||
|
LEFT JOIN sheep_file donor_r_sf on br.donor_ram = donor_r_sf.bs_manage_tags
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<!-- 重写的查询列表方法 -->
|
<!-- 重写的查询列表方法 -->
|
||||||
<select id="selectScPregnancyRecordList" parameterType="ScPregnancyRecord" resultMap="ScPregnancyRecordResult">
|
<select id="selectScPregnancyRecordList" parameterType="ScPregnancyRecord" resultMap="ScPregnancyRecordResult">
|
||||||
<include refid="selectScPregnancyRecordVo"/>
|
<include refid="selectScPregnancyRecordVo"/>
|
||||||
|
|
||||||
<where>
|
<where>
|
||||||
pr.is_delete = 0
|
pr.is_delete = 0
|
||||||
|
|
||||||
@@ -142,22 +214,33 @@
|
|||||||
<select id="selectBreedInfoByManageTags" parameterType="String" resultType="map">
|
<select id="selectBreedInfoByManageTags" parameterType="String" resultType="map">
|
||||||
SELECT
|
SELECT
|
||||||
sf.bs_manage_tags as manageTags,
|
sf.bs_manage_tags as manageTags,
|
||||||
-- 从配种记录表获取公羊耳号
|
br.donor_ewe as donorEwe,
|
||||||
ram_sf.bs_manage_tags as fatherManageTags,
|
br.donor_ram as donorRam,
|
||||||
ram_sf.variety as fatherVariety,
|
donor_e_sf.variety as donorEweVariety,
|
||||||
|
donor_r_sf.variety as donorRamVariety,
|
||||||
|
-- 核心修改:如果是胚胎移植(5),显示供体公羊;否则显示普通配种公羊
|
||||||
|
CASE
|
||||||
|
WHEN br.breed_type = 5 THEN br.donor_ram
|
||||||
|
ELSE ram_sf.bs_manage_tags
|
||||||
|
END as fatherManageTags,
|
||||||
|
-- 品种也需要同步切换
|
||||||
|
CASE
|
||||||
|
WHEN br.breed_type = 5 THEN donor_r_sf.variety
|
||||||
|
ELSE ram_sf.variety
|
||||||
|
END as fatherVariety,
|
||||||
br.create_time as matingDate,
|
br.create_time as matingDate,
|
||||||
mating_type.dict_label as matingTypeName,
|
mating_type.dict_label as matingTypeName,
|
||||||
br.technician as breedTechnician,
|
br.technician as breedTechnician
|
||||||
br.create_time as breedCreateTime
|
|
||||||
FROM sheep_file sf
|
FROM sheep_file sf
|
||||||
LEFT JOIN sc_breed_record br ON sf.id = br.ewe_id
|
LEFT JOIN sc_breed_record br ON sf.id = br.ewe_id
|
||||||
LEFT JOIN sheep_file ram_sf ON br.ram_id = ram_sf.id
|
LEFT JOIN sheep_file ram_sf ON br.ram_id = ram_sf.id
|
||||||
LEFT JOIN sys_dict_data mating_type ON sf.mating_type_id = mating_type.dict_value
|
-- 新增关联:通过耳号获取供体公羊的品种信息
|
||||||
|
LEFT JOIN sheep_file donor_r_sf ON br.donor_ram = donor_r_sf.bs_manage_tags
|
||||||
|
LEFT JOIN sheep_file donor_e_sf ON br.donor_ewe = donor_e_sf.bs_manage_tags
|
||||||
|
LEFT JOIN sys_dict_data mating_type ON CAST(br.breed_type AS CHAR) = mating_type.dict_value
|
||||||
AND mating_type.dict_type = 'breed_type' AND mating_type.status = '0'
|
AND mating_type.dict_type = 'breed_type' AND mating_type.status = '0'
|
||||||
WHERE sf.bs_manage_tags = #{manageTags}
|
WHERE sf.bs_manage_tags = #{manageTags} AND sf.is_delete = 0
|
||||||
AND sf.is_delete = 0
|
ORDER BY br.create_time DESC LIMIT 1
|
||||||
ORDER BY br.create_time DESC
|
|
||||||
LIMIT 1
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<insert id="insertScPregnancyRecord" parameterType="ScPregnancyRecord" useGeneratedKeys="true" keyProperty="id">
|
<insert id="insertScPregnancyRecord" parameterType="ScPregnancyRecord" useGeneratedKeys="true" keyProperty="id">
|
||||||
@@ -172,6 +255,7 @@
|
|||||||
<if test="remark != null">remark,</if>
|
<if test="remark != null">remark,</if>
|
||||||
<if test="createBy != null">create_by,</if>
|
<if test="createBy != null">create_by,</if>
|
||||||
<if test="createTime != null">create_time,</if>
|
<if test="createTime != null">create_time,</if>
|
||||||
|
<if test="reason != null">reason,</if>
|
||||||
is_delete
|
is_delete
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
@@ -184,6 +268,7 @@
|
|||||||
<if test="remark != null">#{remark},</if>
|
<if test="remark != null">#{remark},</if>
|
||||||
<if test="createBy != null">#{createBy},</if>
|
<if test="createBy != null">#{createBy},</if>
|
||||||
<if test="createTime != null">#{createTime},</if>
|
<if test="createTime != null">#{createTime},</if>
|
||||||
|
<if test="reason != null">#{reason},</if>
|
||||||
0
|
0
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
@@ -197,6 +282,7 @@
|
|||||||
<if test="technician != null">technician = #{technician},</if>
|
<if test="technician != null">technician = #{technician},</if>
|
||||||
<if test="way != null">way = #{way},</if>
|
<if test="way != null">way = #{way},</if>
|
||||||
<if test="remark != null">remark = #{remark},</if>
|
<if test="remark != null">remark = #{remark},</if>
|
||||||
|
<if test="reason != null">reason = #{reason},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|||||||
Reference in New Issue
Block a user