配种记录修改

This commit is contained in:
zyk 2025-12-21 23:46:04 +08:00
parent 521bd25efd
commit 0fdc4a9fc7
3 changed files with 154 additions and 18 deletions

View File

@ -1,5 +1,6 @@
package com.zhyc.module.produce.breed.mapper;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.zhyc.module.produce.breed.domain.ScBreedRecord;
@ -124,4 +125,16 @@ public interface ScBreedRecordMapper
public List<ScBreedRecord> selectBreedRecordByMatingTime(@Param("sheepId") Long sheepId,
@Param("matingDateStart") String matingDateStart,
@Param("matingDateEnd") String matingDateEnd);
/**
* 增加羊只配种次数并更新配种日期
*
* @param sheepId 羊只ID
* @param matingDate 配种日期
* @param updateBy 更新人
* @return 结果
*/
public int incrementSheepMatingCount(@Param("sheepId") Long sheepId,
@Param("matingDate") Date matingDate,
@Param("updateBy") String updateBy);
}

View File

@ -75,12 +75,12 @@ public class ScBreedRecordServiceImpl implements IScBreedRecordService
* @param scBreedRecord 配种记录
* @return 结果
*/
@Override
public int insertScBreedRecord(ScBreedRecord scBreedRecord)
{
scBreedRecord.setCreateTime(DateUtils.getNowDate());
return scBreedRecordMapper.insertScBreedRecord(scBreedRecord);
}
// @Override
// public int insertScBreedRecord(ScBreedRecord scBreedRecord)
// {
// scBreedRecord.setCreateTime(DateUtils.getNowDate());
// return scBreedRecordMapper.insertScBreedRecord(scBreedRecord);
// }
/**
* 修改配种记录
@ -245,4 +245,48 @@ public class ScBreedRecordServiceImpl implements IScBreedRecordService
{
return scBreedRecordMapper.selectBreedRecordByMatingTime(sheepId, startDate, endDate);
}
/**
* 新增配种记录
*
* @param scBreedRecord 配种记录
* @return 结果
*/
@Override
public int insertScBreedRecord(ScBreedRecord scBreedRecord)
{
// 设置创建时间
scBreedRecord.setCreateTime(DateUtils.getNowDate());
// 插入配种记录
int result = scBreedRecordMapper.insertScBreedRecord(scBreedRecord);
// 如果插入成功同步更新羊只的配种日期
if (result > 0 && scBreedRecord.getEweId() != null) {
try {
Long eweId = Long.parseLong(scBreedRecord.getEweId());
// // 方案1只更新配种日期推荐
// scBreedRecordMapper.updateSheepMatingDate(
// eweId,
// scBreedRecord.getCreateTime(),
// scBreedRecord.getCreateBy()
// );
// 方案2同时更新配种日期和配种次数如果需要的话取消下面注释
scBreedRecordMapper.incrementSheepMatingCount(
eweId,
scBreedRecord.getCreateTime(),
scBreedRecord.getCreateBy()
);
log.info("同步更新羊只 {} 的配种日期成功", eweId);
} catch (Exception e) {
log.error("同步更新羊只配种日期失败", e);
// 不影响主流程只记录日志
}
}
return result;
}
}

View File

@ -42,8 +42,76 @@
<result property="isPregnancyChecked" column="is_pregnancy_checked" />
</resultMap>
<!-- <sql id="selectScBreedRecordVo">-->
<!-- select-->
<!-- br.id,-->
<!-- br.sheep_id,-->
<!-- br.ram_id,-->
<!-- br.ewe_id,-->
<!-- br.technician,-->
<!-- br.breed_drugs,-->
<!-- br.breed_type,-->
<!-- br.create_by,-->
<!-- br.create_time,-->
<!-- &#45;&#45; 母羊信息(从视图获取)-->
<!-- ewe_view.bs_manage_tags as ewe_manage_tags,-->
<!-- ewe_view.variety as ewe_variety,-->
<!-- ewe_view.parity as ewe_parity,-->
<!-- ewe_view.month_age as ewe_month_age,-->
<!-- ewe_view.sheepfold_name as ewe_sheepfold_name,-->
<!-- ewe_view.breed as ewe_breed_status,-->
<!-- ewe_view.controlled as ewe_controlled,-->
<!-- ewe_view.comment as ewe_comment,-->
<!-- ewe_view.dr_ranch as ranch_name,-->
<!-- ewe_view.name as sheep_type,-->
<!-- ewe_view.mating_total as mating_count,-->
<!-- &#45;&#45; 公羊信息(从视图获取)-->
<!-- ram_view.bs_manage_tags as ram_manage_tags,-->
<!-- ram_view.variety as ram_variety,-->
<!-- &#45;&#45; 配种方式显示(修改:增加3-冲胚、4-自然发情人工授精)-->
<!-- CASE br.breed_type-->
<!-- WHEN 1 THEN '同期发情'-->
<!-- WHEN 2 THEN '本交'-->
<!-- WHEN 3 THEN '冲胚'-->
<!-- WHEN 4 THEN '自然发情人工授精'-->
<!-- ELSE '未知'-->
<!-- END as mating_type,-->
<!-- &#45;&#45; 发情后配种时间(小时数)-->
<!-- TIMESTAMPDIFF(HOUR, br.create_time, NOW()) as time_since_planning,-->
<!-- &#45;&#45; 孕检相关信息-->
<!-- pr.datetime as pregnancy_check_date,-->
<!-- pr.result as pregnancy_result,-->
<!-- pr.way as pregnancy_way,-->
<!-- pr.fetus_count,-->
<!-- pr.technician as pregnancy_technician,-->
<!-- pr.remark as pregnancy_remark,-->
<!-- pr.id as pregnancy_record_id,-->
<!-- &#45;&#45; 配种到孕检间隔天数-->
<!-- CASE-->
<!-- WHEN pr.datetime IS NOT NULL THEN DATEDIFF(pr.datetime, br.create_time)-->
<!-- ELSE NULL-->
<!-- END as days_to_pregnancy_check,-->
<!-- &#45;&#45; 是否已孕检-->
<!-- CASE-->
<!-- WHEN pr.id IS NOT NULL THEN 1-->
<!-- ELSE 0-->
<!-- END as is_pregnancy_checked-->
<!-- from sc_breed_record br-->
<!-- left join sheep_file ewe_view on br.ewe_id = ewe_view.id-->
<!-- left join sheep_file ram_view on br.ram_id = ram_view.id-->
<!-- left join sc_pregnancy_record pr on pr.sheep_id = br.ewe_id-->
<!-- and pr.is_delete = 0-->
<!-- and pr.datetime >= br.create_time-->
<!-- and pr.datetime = (-->
<!-- select min(pr2.datetime)-->
<!-- from sc_pregnancy_record pr2-->
<!-- where pr2.sheep_id = br.ewe_id-->
<!-- and pr2.is_delete = 0-->
<!-- and pr2.datetime >= br.create_time-->
<!-- )-->
<!-- </sql>-->
<sql id="selectScBreedRecordVo">
select
select DISTINCT
br.id,
br.sheep_id,
br.ram_id,
@ -68,7 +136,7 @@
-- 公羊信息(从视图获取)
ram_view.bs_manage_tags as ram_manage_tags,
ram_view.variety as ram_variety,
-- 配种方式显示(修改:增加3-冲胚、4-自然发情人工授精)
-- 配种方式显示
CASE br.breed_type
WHEN 1 THEN '同期发情'
WHEN 2 THEN '本交'
@ -99,18 +167,17 @@
from sc_breed_record br
left join sheep_file ewe_view on br.ewe_id = ewe_view.id
left join sheep_file ram_view on br.ram_id = ram_view.id
left join sc_pregnancy_record pr on pr.sheep_id = br.ewe_id
and pr.is_delete = 0
and pr.datetime >= br.create_time
and pr.datetime = (
select min(pr2.datetime)
from sc_pregnancy_record pr2
where pr2.sheep_id = br.ewe_id
and pr2.is_delete = 0
and pr2.datetime >= br.create_time
-- 修复:使用子查询确保只返回一条孕检记录
left join sc_pregnancy_record pr on pr.id = (
select pr2.id
from sc_pregnancy_record pr2
where pr2.sheep_id = br.ewe_id
and pr2.is_delete = 0
and pr2.datetime >= br.create_time
order by pr2.datetime asc, pr2.id asc
limit 1
)
</sql>
<select id="selectScBreedRecordList" parameterType="ScBreedRecord" resultMap="ScBreedRecordResult">
<include refid="selectScBreedRecordVo"/>
<where>
@ -338,4 +405,16 @@
set pregnancy_record_id = #{pregnancyRecordId}
where id = #{breedRecordId}
</update>
<!-- 如果还需要更新配种次数(可选) -->
<update id="incrementSheepMatingCount">
update bas_sheep
set mating_counts = IFNULL(mating_counts, 0) + 1,
mating_total = IFNULL(mating_total, 0) + 1,
mating_date = #{matingDate},
update_time = NOW(),
update_by = #{updateBy}
where id = #{sheepId}
and is_delete = 0
</update>
</mapper>