From c11faeeaceaa339d98d4e3e75a56e3a54fbfad1a Mon Sep 17 00:00:00 2001 From: zyk Date: Tue, 19 Aug 2025 10:13:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BF=AE=E5=A4=8D=E4=BA=86?= =?UTF-8?q?=E4=BA=A7=E7=BE=94=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ScLambingRecordController.java | 20 ++++ .../breed/mapper/ScLambingRecordMapper.java | 10 ++ .../service/IScLambingRecordService.java | 9 ++ .../impl/ScLambingRecordServiceImpl.java | 16 ++-- .../produce/breed/ScLambingRecordMapper.xml | 94 +++++++++++-------- 5 files changed, 102 insertions(+), 47 deletions(-) diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScLambingRecordController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScLambingRecordController.java index 04bce38..e2b6dee 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScLambingRecordController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScLambingRecordController.java @@ -1,6 +1,7 @@ package com.zhyc.module.produce.breed.controller; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +44,25 @@ public class ScLambingRecordController extends BaseController { return getDataTable(list); } + /** + * 根据母羊耳号查询最新配种记录 + */ + @PreAuthorize("@ss.hasPermi('breed:lambing_records:query')") + @GetMapping("/breeding_info/{earNumber}") + public AjaxResult getBreedingInfo(@PathVariable("earNumber") String earNumber) { + try { + Map breedingInfo = scLambingRecordService.getLatestBreedingByEarNumber(earNumber); + if (breedingInfo != null && !breedingInfo.isEmpty()) { + return success(breedingInfo); + } else { + return error("未找到该母羊的配种记录,请检查耳号是否正确"); + } + } catch (Exception e) { + logger.error("查询配种信息异常", e); + return error("查询配种信息失败:" + e.getMessage()); + } + } + /** * 导出产羔记录列表 */ diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScLambingRecordMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScLambingRecordMapper.java index 1a26677..244a3f9 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScLambingRecordMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScLambingRecordMapper.java @@ -1,8 +1,10 @@ package com.zhyc.module.produce.breed.mapper; import java.util.List; +import java.util.Map; import com.zhyc.module.produce.breed.domain.ScLambingRecord; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 产羔记录Mapper接口 @@ -37,6 +39,14 @@ public interface ScLambingRecordMapper */ public ScLambingRecord selectScLambingRecordDetailById(Long id); + /** + * 根据母羊耳号查询最新配种记录 + * + * @param earNumber 母羊耳号 + * @return 配种记录信息 + */ + public Map getLatestBreedingByEarNumber(@Param("earNumber") String earNumber); + /** * 新增产羔记录 * diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScLambingRecordService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScLambingRecordService.java index 83a6497..a230bb4 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScLambingRecordService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScLambingRecordService.java @@ -1,6 +1,7 @@ package com.zhyc.module.produce.breed.service; import java.util.List; +import java.util.Map; import com.zhyc.module.produce.breed.domain.ScLambingRecord; import com.zhyc.module.produce.breed.domain.ScLambDetail; @@ -14,6 +15,14 @@ public interface IScLambingRecordService { */ public List selectScLambingRecordList(ScLambingRecord scLambingRecord); + /** + * 根据母羊耳号查询最新配种记录 + * + * @param earNumber 母羊耳号 + * @return 配种记录信息 + */ + public Map getLatestBreedingByEarNumber(String earNumber); + /** * 新增产羔记录(包含羔羊详情) */ diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScLambingRecordServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScLambingRecordServiceImpl.java index 74b6715..2360839 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScLambingRecordServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScLambingRecordServiceImpl.java @@ -2,6 +2,7 @@ package com.zhyc.module.produce.breed.service.impl; import java.math.BigDecimal; import java.util.List; +import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,6 +32,14 @@ public class ScLambingRecordServiceImpl implements IScLambingRecordService { return scLambingRecordMapper.selectScLambingRecordList(scLambingRecord); } + /** + * 根据母羊耳号查询最新配种记录 + */ + @Override + public Map getLatestBreedingByEarNumber(String earNumber) { + return scLambingRecordMapper.getLatestBreedingByEarNumber(earNumber); + } + /** * 新增产羔记录(包含羔羊详情) */ @@ -70,11 +79,6 @@ public class ScLambingRecordServiceImpl implements IScLambingRecordService { } } - - - /** - * 验证和转换羔羊详情 - */ /** * 验证和转换羔羊详情 */ @@ -84,7 +88,7 @@ public class ScLambingRecordServiceImpl implements IScLambingRecordService { throw new RuntimeException("羔羊耳号不能为空"); } - if (lambDetail.getGender() == null) { // 改为检查Integer类型 + if (lambDetail.getGender() == null) { throw new RuntimeException("羔羊性别不能为空"); } diff --git a/zhyc-module/src/main/resources/mapper/produce/breed/ScLambingRecordMapper.xml b/zhyc-module/src/main/resources/mapper/produce/breed/ScLambingRecordMapper.xml index 937834b..7ed7e3b 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScLambingRecordMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScLambingRecordMapper.xml @@ -15,6 +15,7 @@ + @@ -66,42 +67,47 @@ lr.id, lr.sheep_id, lr.parity, lr.lambs_born, lr.survival, lr.technician, lr.score, lr.comment, lr.create_by, lr.create_tme, - -- 从bas_sheep表获取母羊信息 - mother.manage_tags as female_ear_number, - mother.variety_id as female_breed, - TIMESTAMPDIFF(MONTH, mother.birthday, NOW()) as month_age, - mother.sheepfold_id as current_shed, - mother.ranch_id as farm, + -- 从sheep_file视图获取母羊信息 + mother.bs_manage_tags as female_ear_number, + mother.variety as female_breed, + mother.month_age as month_age, + mother.sheepfold_name as current_shed, + mother.dr_ranch as farm, -- 从sc_breed_record表获取配种信息 br.create_time as breeding_date, - DATEDIFF(lr.create_tme, br.create_time) as pregnancy_days, + DATEDIFF(CURDATE(), br.create_time) as pregnancy_days, - -- 从bas_sheep表获取公羊信息 - father.manage_tags as male_ear_number, - father.variety_id as male_breed, + -- 从sheep_file视图获取公羊信息 + father.bs_manage_tags as male_ear_number, + father.variety as male_breed, - -- 统计羔羊信息(从bas_sheep表统计,根据母羊ID) - (SELECT COUNT(*) FROM bas_sheep lamb WHERE lamb.mother_id = lr.sheep_id AND lamb.gender = 1 AND lamb.is_delete = 0) as male_count, - (SELECT COUNT(*) FROM bas_sheep lamb WHERE lamb.mother_id = lr.sheep_id AND lamb.gender = 0 AND lamb.is_delete = 0) as female_count, - (SELECT COUNT(*) FROM bas_sheep lamb WHERE lamb.mother_id = lr.sheep_id AND lamb.gender = 1 AND lamb.status_id = 1 AND lamb.is_delete = 0) as retained_male_count, - (SELECT COUNT(*) FROM bas_sheep lamb WHERE lamb.mother_id = lr.sheep_id AND lamb.gender = 0 AND lamb.status_id = 1 AND lamb.is_delete = 0) as retained_female_count, - (SELECT COUNT(*) FROM bas_sheep lamb WHERE lamb.mother_id = lr.sheep_id AND lamb.gender = 1 AND lamb.status_id != 1 AND lamb.is_delete = 0) as unretained_male_count, - (SELECT COUNT(*) FROM bas_sheep lamb WHERE lamb.mother_id = lr.sheep_id AND lamb.gender = 0 AND lamb.status_id != 1 AND lamb.is_delete = 0) as unretained_female_count + -- 统计羔羊信息(从sc_lamb_detail表统计) + (SELECT COUNT(*) FROM sc_lamb_detail sld WHERE sld.lambing_record_id = lr.id AND sld.gender = 1) as male_count, + (SELECT COUNT(*) FROM sc_lamb_detail sld WHERE sld.lambing_record_id = lr.id AND sld.gender = 0) as female_count, + (SELECT COUNT(*) FROM sc_lamb_detail sld WHERE sld.lambing_record_id = lr.id AND sld.gender = 1 AND sld.is_retained = 1) as retained_male_count, + (SELECT COUNT(*) FROM sc_lamb_detail sld WHERE sld.lambing_record_id = lr.id AND sld.gender = 0 AND sld.is_retained = 1) as retained_female_count, + (SELECT COUNT(*) FROM sc_lamb_detail sld WHERE sld.lambing_record_id = lr.id AND sld.gender = 1 AND sld.is_retained = 0) as unretained_male_count, + (SELECT COUNT(*) FROM sc_lamb_detail sld WHERE sld.lambing_record_id = lr.id AND sld.gender = 0 AND sld.is_retained = 0) as unretained_female_count FROM sc_lambing_record lr - LEFT JOIN bas_sheep mother ON lr.sheep_id = mother.id - LEFT JOIN sc_breed_record br ON lr.sheep_id = br.ewe_id AND lr.parity = mother.parity - LEFT JOIN bas_sheep father ON br.ram_id = father.id + LEFT JOIN sheep_file mother ON lr.sheep_id = mother.id + LEFT JOIN sc_breed_record br ON lr.sheep_id = br.ewe_id AND br.create_time = ( + SELECT MAX(br2.create_time) + FROM sc_breed_record br2 + WHERE br2.ewe_id = lr.sheep_id + AND br2.create_time <= lr.create_tme + ) + LEFT JOIN sheep_file father ON br.ram_id = father.id - - SELECT - id, - lambing_record_id as lambingRecordId, - lamb_ear_number as lambEarNumber, - lamb_breed as lambBreed, - gender, - birth_weight as birthWeight, - is_retained as isRetained, - lineage, - birthday, - create_by as createBy, - create_time as createTime - FROM sc_lamb_detail - WHERE lambing_record_id = #{lambingRecordId} - ORDER BY create_time ASC + sf.id as sheep_id, + sf.bs_manage_tags as female_ear_number, + sf.variety as female_breed, + sf.parity as parity, + br.ram_id as ram_id, + ram.bs_manage_tags as male_ear_number, + ram.variety as male_breed, + br.create_time as breeding_date, + DATEDIFF(CURDATE(), br.create_time) as pregnancy_days, + br.technician as technician + FROM sheep_file sf + LEFT JOIN sc_breed_record br ON sf.id = br.ewe_id + LEFT JOIN sheep_file ram ON br.ram_id = ram.id + WHERE sf.bs_manage_tags = #{earNumber} + AND sf.is_delete = 0 + AND br.create_time = ( + SELECT MAX(br2.create_time) + FROM sc_breed_record br2 + WHERE br2.ewe_id = sf.id + ) @@ -191,8 +203,8 @@ technician = #{technician}, score = #{score}, comment = #{comment}, - create_by = #{createBy}, - create_tme = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, where id = #{id}