diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedRecordMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedRecordMapper.java index 8d8eb58..4478063 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedRecordMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedRecordMapper.java @@ -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 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); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedRecordServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedRecordServiceImpl.java index aaad5b1..c861d1e 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedRecordServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedRecordServiceImpl.java @@ -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; + } } \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedRecordMapper.xml b/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedRecordMapper.xml index 639480d..b07b862 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedRecordMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedRecordMapper.xml @@ -42,8 +42,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - 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 ) -