繁育多耳号查询

This commit is contained in:
zyk
2026-02-10 14:04:43 +08:00
parent d637bf5bc1
commit bbc19b47ca
18 changed files with 186 additions and 42 deletions

View File

@@ -79,14 +79,20 @@ public class ScDryMilkController extends BaseController
/**
* 远程搜索耳号列表
*/
/**
* 模糊查询母羊耳号列表
*/
@PreAuthorize("@ss.hasPermi('drymilk:drymilk:query')") // 根据实际权限修改
@GetMapping("/searchEarNumbers")
public AjaxResult searchEarNumbers(@RequestParam(value = "query", required = false) String query)
{
if (query == null) query = "";
List<String> list = scDryMilkService.selectSheepEarNumberList(query);
return AjaxResult.success(list);
public AjaxResult searchEarNumbers(@RequestParam("query") String query) {
try {
List<String> earNumbers = scDryMilkService.searchEarNumbers(query);
return success(earNumbers);
} catch (Exception e) {
logger.error("搜索耳号异常", e);
return error("搜索耳号失败:" + e.getMessage());
}
}
/**
* 远程搜索技术员列表
*/

View File

@@ -41,6 +41,20 @@ public class ScSheepDeathController extends BaseController
@Autowired
private ISwDiseaseService swDiseaseService;
/**
* 模糊查询母羊耳号列表
*/
@PreAuthorize("@ss.hasPermi('/sheep_death/death:query')") // 根据实际权限修改
@GetMapping("/search_ear_numbers")
public AjaxResult searchEarNumbers(@RequestParam("query") String query) {
try {
List<String> earNumbers = scSheepDeathService.searchEarNumbers(query);
return success(earNumbers);
} catch (Exception e) {
logger.error("搜索耳号异常", e);
return error("搜索耳号失败:" + e.getMessage());
}
}
/**
* 查询羊只死淘记录列表
*/

View File

@@ -36,15 +36,6 @@ public class ScWeanRecordController extends BaseController {
return getDataTable(list);
}
/**
* 【新增】模糊查询耳号列表 (用于前端下拉框远程搜索)
*/
@PreAuthorize("@ss.hasPermi('Weaning:weaning_record:list')")
@GetMapping("/search_ear_numbers")
public AjaxResult searchEarNumbers(@RequestParam("query") String query) {
List<String> list = scWeanRecordService.searchEarNumbers(query);
return success(list);
}
/**
* 导出断奶记录列表
@@ -129,5 +120,19 @@ public class ScWeanRecordController extends BaseController {
return toAjax(scWeanRecordService.deleteScWeanRecordByIds(ids));
}
/**
* 模糊查询母羊耳号列表
*/
@PreAuthorize("@ss.hasPermi('breed:lambing_records:query')") // 根据实际权限修改
@GetMapping("/search_ear_numbers")
public AjaxResult searchEarNumbers(@RequestParam("query") String query) {
try {
List<String> earNumbers = scWeanRecordService.searchEarNumbers(query);
return success(earNumbers);
} catch (Exception e) {
logger.error("搜索耳号异常", e);
return error("搜索耳号失败:" + e.getMessage());
}
}
}

View File

@@ -18,6 +18,16 @@ public class ScDryMilk extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 全部羊耳号列表(用于多耳号查询) */
private List<String> allEarNumbers;
public List<String> getAllEarNumbers() {
return allEarNumbers;
}
public void setAllEarNumbers(List<String> allEarNumbers) {
this.allEarNumbers = allEarNumbers;
}
/** 主键id */
private Long id;

View File

@@ -18,6 +18,7 @@ public class ScSheepDeath extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键ID */
private Long id;

View File

@@ -22,6 +22,17 @@ public class ScWeanRecord extends BaseEntity {
/** 主键ID */
private Long id;
/** 全部羊耳号列表(用于多耳号查询) */
private List<String> allEarNumbers;
public List<String> getAllEarNumbers() {
return allEarNumbers;
}
public void setAllEarNumbers(List<String> allEarNumbers) {
this.allEarNumbers = allEarNumbers;
}
/** 羊只ID */
@Excel(name = "羊只ID")
private Long sheepId;
@@ -51,10 +62,6 @@ public class ScWeanRecord extends BaseEntity {
@Excel(name = "电子耳号")
private String electronicTags;
// --- 新增查询字段 ---
/** 多耳号查询列表 */
private List<String> allEarNumbers;
/** 是否在群 (1是 0否) */
private String isInHerd;

View File

@@ -69,4 +69,11 @@ public interface ScDryMilkMapper
* 远程搜索技术员列表
*/
public List<String> searchTechnicianList(@Param("query") String query);
/**
* 模糊查询母羊耳号列表
*
* @param query 查询关键字
* @return 耳号列表
*/
List<String> searchEarNumbers(@Param("query") String query);
}

View File

@@ -85,4 +85,12 @@ public interface ScSheepDeathMapper
* 远程搜索:处理人
*/
public List<String> selectDistinctHandler(@Param("query") String query);
/**
* 模糊查询母羊耳号列表
*
* @param query 查询关键字
* @return 耳号列表
*/
List<String> searchEarNumbers(@Param("query") String query);
}

View File

@@ -68,9 +68,10 @@ public interface ScWeanRecordMapper
public int updateBasSheepWeaningInfo(ScWeanRecord scWeanRecord);
/**
* 【新增】模糊查询耳号列表 (用于前端远程搜索)
* 模糊查询母羊耳号列表
*
* @param query 查询关键字
* @return 耳号列表
*/
public List<String> searchEarNumbers(@Param("query") String query);
List<String> searchEarNumbers(@Param("query") String query);
}

View File

@@ -66,4 +66,12 @@ public interface IScDryMilkService
* 远程搜索技术员列表
*/
public List<String> selectTechnicianList(String query);
/**
* 模糊查询母羊耳号列表
*
* @param query 查询关键字
* @return 耳号列表
*/
public List<String> searchEarNumbers(String query);
}

View File

@@ -82,4 +82,12 @@ public interface IScSheepDeathService
* 远程搜索:处理人
*/
public List<String> selectDistinctHandler(String query);
/**
* 模糊查询母羊耳号列表
*
* @param query 查询关键字
* @return 耳号列表
*/
public List<String> searchEarNumbers(String query);
}

View File

@@ -61,7 +61,8 @@ public interface IScWeanRecordService
public Long selectSheepIdByEarNumber(String earNumber);
/**
* 【新增】模糊查询耳号列表
* 模糊查询母羊耳号列表
*
* @param query 查询关键字
* @return 耳号列表
*/

View File

@@ -104,4 +104,9 @@ public class ScDryMilkServiceImpl implements IScDryMilkService
public List<String> selectTechnicianList(String query) {
return scDryMilkMapper.searchTechnicianList(query);
}
@Override
public List<String> searchEarNumbers(String query) {
return scDryMilkMapper.searchEarNumbers(query);
}
}

View File

@@ -49,6 +49,10 @@ public class ScSheepDeathServiceImpl implements IScSheepDeathService
{
return scSheepDeathMapper.selectSheepFileByManageTags(manageTags);
}
@Override
public List<String> searchEarNumbers(String query) {
return scSheepDeathMapper.searchEarNumbers(query);
}
@Override
@Transactional

View File

@@ -114,11 +114,6 @@ public class ScWeanRecordServiceImpl implements IScWeanRecordService
return scWeanRecordMapper.selectSheepIdByEarNumber(earNumber);
}
/**
* 【新增】模糊查询耳号列表 (用于前端远程搜索)
* @param query 查询关键字
* @return 耳号列表
*/
@Override
public List<String> searchEarNumbers(String query) {
return scWeanRecordMapper.searchEarNumbers(query);

View File

@@ -33,6 +33,16 @@
<select id="selectScDryMilkList" parameterType="ScDryMilk" resultMap="ScDryMilkResult">
<include refid="selectScDryMilkVo"/>
<where>
<!-- 全部羊多耳号查询 -->
<if test="allEarNumbers != null and allEarNumbers.size() > 0">
AND (
<!-- 注意s 代表 sheep_file 表的别名,根据实际 SQL 别名修改 -->
s.bs_manage_tags IN
<foreach collection="allEarNumbers" item="earNumber" open="(" separator="," close=")">
#{earNumber}
</foreach>
)
</if>
<if test="manageTagsList != null and manageTagsList.size() > 0">
AND s.bs_manage_tags IN
<foreach collection="manageTagsList" item="tag" open="(" separator="," close=")">
@@ -147,8 +157,8 @@
SELECT DISTINCT sf.bs_manage_tags
FROM sheep_file sf
WHERE sf.bs_manage_tags LIKE CONCAT(#{query}, '%')
AND sf.is_delete = 0
AND sf.is_delete = 0
ORDER BY sf.bs_manage_tags
LIMIT 50
LIMIT 50
</select>
</mapper>

View File

@@ -39,15 +39,52 @@
select d.id, d.sheep_id, d.manage_tags, d.event_type, d.death_date, d.disease_type_id, d.disease_subtype_id,
d.disposal_direction, d.technician, d.handler, d.work_group, d.create_by, d.create_time, d.comment,
d.update_by, d.update_time, d.is_delete,
s.variety, s.name as sheep_type_name, s.gender, s.day_age, s.parity, s.sheepfold_name,
s.breed as breed_status, s.post_lambing_day, s.lactation_day, s.gestation_day
/* --- 关联数据获取 --- */
/* 1. 品种名称 (假设品种表是 bas_variety) */
(SELECT variety FROM bas_sheep_variety WHERE id = s.variety_id) as variety,
/* 2. 羊只类型名称 (从字典表获取) */
(SELECT dict_label FROM sys_dict_data WHERE dict_type = 'sys_sheep_type' AND dict_value = s.type_id) as sheep_type_name,
/* 3. 性别直接获取 */
s.gender,
/* 4. 计算日龄 (当前日期 - 出生日期) */
DATEDIFF(NOW(), s.birthday) as day_age,
/* 5. 胎次 */
s.parity,
/* 6. 羊舍名称 (假设羊舍表是 bas_sheepfold) */
(SELECT sheepfold_name FROM da_sheepfold WHERE id = s.sheepfold_id) as sheepfold_name,
/* 7. 繁育状态 (从字典表获取) */
(SELECT breed FROM bas_breed_status WHERE id = s.status_id) as breed,
/* 8. 其他数值字段 */
s.post_lambing_day,
s.lactation_day,
s.gestation_day
from sc_sheep_death d
left join sheep_file s on d.manage_tags = s.bs_manage_tags
/* 关键修改:直接关联 bas_sheep 表,而不是视图 */
/* 同时只通过 manage_tags 关联,忽略 status_id 的限制 */
left join bas_sheep s on d.manage_tags = s.manage_tags AND s.is_delete = 0
</sql>
<select id="selectScSheepDeathList" parameterType="ScSheepDeath" resultMap="ScSheepDeathResult">
<include refid="selectScSheepDeathVo"/>
<where>
<if test="allEarNumbers != null and allEarNumbers.size() > 0">
AND (
s.manage_tags IN
<foreach collection="allEarNumbers" item="earNumber" open="(" separator="," close=")">
#{earNumber}
</foreach>
)
</if>
<if test="sheepId != null "> and d.sheep_id = #{sheepId}</if>
<if test="manageTagsList != null and manageTagsList.size() > 0">
@@ -99,16 +136,28 @@
and d.work_group = #{workGroup}
</if>
<if test="variety != null and variety != ''"> and s.variety like concat('%', #{variety}, '%')</if>
<if test="variety != null and variety != ''">
AND s.variety_id IN (
SELECT id FROM bas_sheep_variety WHERE variety LIKE concat('%', #{variety}, '%')
)
</if>
<if test="sheepTypeList != null and sheepTypeList.size() > 0">
AND s.name IN
AND s.type_id IN (
SELECT dict_value FROM sys_dict_data
WHERE dict_type = 'sys_sheep_type'
AND dict_label IN
<foreach collection="sheepTypeList" item="sType" open="(" separator="," close=")">
#{sType}
</foreach>
)
</if>
<if test="(sheepTypeList == null or sheepTypeList.size() == 0) and sheepType != null and sheepType != ''">
and s.name like concat('%', #{sheepType}, '%')
AND s.type_id IN (
SELECT dict_value FROM sys_dict_data
WHERE dict_type = 'sys_sheep_type'
AND dict_label LIKE concat('%', #{sheepType}, '%')
)
</if>
</where>
order by d.create_time desc

View File

@@ -44,8 +44,11 @@
<where>
<!-- 全部羊多耳号查询 -->
<!-- 正确sf.bs_manage_tagssf是sheep_file的别名 -->
<!-- 全部羊多耳号查询 -->
<if test="allEarNumbers != null and allEarNumbers.size() > 0">
AND (sf.bs_manage_tags IN
AND (
<!-- 注意s 代表 sheep_file 表的别名,根据实际 SQL 别名修改 -->
sf.bs_manage_tags IN
<foreach collection="allEarNumbers" item="earNumber" open="(" separator="," close=")">
#{earNumber}
</foreach>
@@ -94,12 +97,14 @@
order by wr.create_time desc
</select>
<select id="searchEarNumbers" resultType="String">
SELECT DISTINCT bs_manage_tags
FROM sheep_file
WHERE bs_manage_tags LIKE CONCAT('%', #{query}, '%')
AND is_delete = 0
LIMIT 20
<!-- 模糊查询耳号列表 -->
<select id="searchEarNumbers" resultType="java.lang.String">
SELECT DISTINCT sf.bs_manage_tags
FROM sheep_file sf
WHERE sf.bs_manage_tags LIKE CONCAT(#{query}, '%')
AND sf.is_delete = 0
ORDER BY sf.bs_manage_tags
LIMIT 50
</select>
<select id="selectScWeanRecordById" parameterType="Long" resultMap="ScWeanRecordResult">