diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/controller/BasSheepController.java b/zhyc-module/src/main/java/com/zhyc/module/base/controller/BasSheepController.java index 3466b17..edbabb6 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/controller/BasSheepController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/controller/BasSheepController.java @@ -1,9 +1,7 @@ package com.zhyc.module.base.controller; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; import com.zhyc.module.base.domain.BasSheep; @@ -110,20 +108,61 @@ public class BasSheepController extends BaseController { } /** - * 根据耳号查询 + * 批量查询羊只耳号状态 */ @GetMapping("/byManageTags/{manageTags}") public AjaxResult byManageTags(@PathVariable String manageTags) { - BasSheep sheep = basSheepService.selectBasSheepByManageTags(manageTags.trim()); - if (sheep == null) { - return error("未找到对应的羊只"); + if (manageTags == null || manageTags.trim().isEmpty()) { + return error("管理耳号不能为空"); } - // 补品种名称 - BasSheepVariety variety = basSheepVarietyService.selectBasSheepVarietyById(sheep.getVarietyId()); - sheep.setVarietyName(variety == null ? "" : variety.getVariety()); + // 批量查询模式 - 使用空格或逗号分割 + String[] tags = manageTags.split("[\\s,,]+"); - return success(sheep); + try { + // 过滤掉空值并去重 + List validTags = Arrays.stream(tags) + .map(String::trim) + .filter(tag -> !tag.isEmpty()) + .distinct() + .collect(Collectors.toList()); + + if (validTags.isEmpty()) { + return error("有效的耳号不能为空"); + } + + // 查询所有存在的羊只 + List existingSheep = basSheepService.selectBasSheepByManageTagsList(validTags); + + Set existingTagSet = existingSheep.stream() + .map(BasSheep::getManageTags) + .collect(Collectors.toSet()); + + // 分别统计在羊群和不在羊群的耳号 + List inHerd = new ArrayList<>(); + List notInHerd = new ArrayList<>(); + + for (String tag : validTags) { + if (existingTagSet.contains(tag)) { + inHerd.add(tag); + } else { + notInHerd.add(tag); + } + } + + Map result = new HashMap<>(); + result.put("inHerd", inHerd); + result.put("notInHerd", notInHerd); + result.put("total", validTags.size()); + result.put("inHerdCount", inHerd.size()); + result.put("notInHerdCount", notInHerd.size()); + result.put("sheepDetails", existingSheep); + + return success(result); + } catch (Exception e) { + logger.error("批量查询羊只状态异常", e); + return error("批量查询失败:" + e.getMessage()); + } } /** diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/mapper/BasSheepMapper.java b/zhyc-module/src/main/java/com/zhyc/module/base/mapper/BasSheepMapper.java index 7027dca..85d63dc 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/mapper/BasSheepMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/mapper/BasSheepMapper.java @@ -2,6 +2,7 @@ package com.zhyc.module.base.mapper; import java.util.List; +import com.zhyc.common.core.domain.BaseEntity; import com.zhyc.module.base.domain.BasSheep; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -73,10 +74,10 @@ public interface BasSheepMapper /** * 模糊查询母羊耳号列表 * - * @param query 查询关键字 + * @param sheep 查询关键字 * @return 耳号列表 */ - List searchEarNumbers(@Param("query") String query); + List searchEarNumbers(BasSheep sheep); List selectBasSheepBySheepfold(String id); @@ -91,4 +92,5 @@ public interface BasSheepMapper int existsByElectronicTag(@Param("tag") String tag); + List selectBasSheepByManageTagsList(@Param("manageTagsList") List manageTagsList, @Param("sheep")BasSheep sheep); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/service/IBasSheepService.java b/zhyc-module/src/main/java/com/zhyc/module/base/service/IBasSheepService.java index 0d1b0c4..50dc6bd 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/service/IBasSheepService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/service/IBasSheepService.java @@ -71,6 +71,12 @@ public interface IBasSheepService * 根据羊只耳号获取羊只 */ BasSheep selectBasSheepByManageTags(String trim); + /** + * 根据管理耳号列表批量查询羊只 + */ + List selectBasSheepByManageTagsList(List manageTagsList); + + /** * 根据牧场ID获取羊只列表 diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/BasSheepServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/BasSheepServiceImpl.java index bff0d19..a28aa14 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/BasSheepServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/BasSheepServiceImpl.java @@ -1,8 +1,10 @@ package com.zhyc.module.base.service.impl; +import java.util.ArrayList; import java.util.List; import com.zhyc.common.annotation.DataScope; +import com.zhyc.common.core.domain.BaseEntity; import com.zhyc.common.utils.DateUtils; import com.zhyc.module.base.domain.BasSheep; import com.zhyc.module.base.mapper.BasSheepMapper; @@ -53,10 +55,22 @@ public class BasSheepServiceImpl implements IBasSheepService * @return */ @Override - @DataScope(deptAlias = "b", userAlias = "b") + @DataScope(deptAlias = "s", userAlias = "s") public List searchEarNumbers(String query) { - return basSheepMapper.searchEarNumbers(query); + BasSheep basSheep = new BasSheep(); + basSheep.setManageTags(query); + return basSheepMapper.searchEarNumbers(basSheep); } + + @Override + @DataScope(deptAlias = "s", userAlias = "s") + public List selectBasSheepByManageTagsList(List manageTagsList) { + if (manageTagsList == null || manageTagsList.isEmpty()) { + return new ArrayList<>(); + } + return basSheepMapper.selectBasSheepByManageTagsList(manageTagsList,new BasSheep()); +} + /** * 新增羊只基本信息 * diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/QuarantineReport.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/QuarantineReport.java index ee9f277..5b2a5f4 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/QuarantineReport.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/QuarantineReport.java @@ -42,6 +42,12 @@ public class QuarantineReport extends BaseEntity /** 全部羊耳号列表(用于多耳号查询) */ private List allEarNumbers; + @Excel(name = "品种") + private String variety; + /** 检疫日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "检疫日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date datetime; @Excel(name = "羊只类别") private String sheepType; @@ -56,10 +62,7 @@ public class QuarantineReport extends BaseEntity private String breed; - /** 检疫日期 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "检疫日期", width = 30, dateFormat = "yyyy-MM-dd") - private Date datetime; + /** 检疫项目 */ @@ -103,7 +106,17 @@ public class QuarantineReport extends BaseEntity public void setGender(String gender) { this.gender = gender; - this.genderName = Gender.getDescByCode(Integer.valueOf(gender)); + if (gender != null && !gender.trim().isEmpty()) { + try { + Integer genderCode = Integer.valueOf(gender.trim()); + this.genderName = Gender.getDescByCode(genderCode); + } catch (NumberFormatException e) { + // 如果转换失败,设置为空或默认值 + this.genderName = null; + } + } else { + this.genderName = null; + } } // 排序查询 diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/QuarantineReportServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/QuarantineReportServiceImpl.java index 87148e0..8023f7d 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/QuarantineReportServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/QuarantineReportServiceImpl.java @@ -85,6 +85,7 @@ public class QuarantineReportServiceImpl implements IQuarantineReportService BeanUtils.copyProperties(quarantineReport, quarantine); quarantine.setSheepId(sheepFile.getId()); quarantine.setSheepNo(sheepFile.getElectronicTags()); + quarantine.setVariety(sheepFile.getVariety() != null ? sheepFile.getVariety() : ""); quarantine.setSheepType(sheepFile.getName()); // 性别前端处理 diff --git a/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml b/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml index 1c81ab7..93abbc6 100644 --- a/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml +++ b/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml @@ -152,7 +152,7 @@ SELECT DISTINCT manage_tags FROM bas_sheep b - manage_tags LIKE CONCAT(#{query}, '%') + manage_tags LIKE CONCAT(#{manageTags}, '%') AND is_delete = 0 ${params.dataScope} @@ -165,8 +165,26 @@ bv.variety AS varietyName FROM bas_sheep s LEFT JOIN bas_sheep_variety bv ON s.variety_id = bv.id - WHERE s.manage_tags = #{manageTags} - AND s.is_delete = 0 LIMIT 1 + s.manage_tags = #{manageTags} + AND s.is_delete = 0 + ${params.dataScope} + + + + + - and sysRanch = #{sysRanch} + and ranch = #{ranch} @@ -29,17 +29,17 @@ insert into da_ranch - sysRanch, + ranch, - #{sysRanch}, + #{ranch}, update da_ranch - sysRanch = #{sysRanch}, + ranch = #{ranch}, where id = #{id} diff --git a/zhyc-module/src/main/resources/mapper/biosafety/QuarantineReportMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/QuarantineReportMapper.xml index d16f22d..b678dbf 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/QuarantineReportMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/QuarantineReportMapper.xml @@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -30,7 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select sqr.id, sheep_type,sqr.gender,sqr.parity,sqr.breed,sqr.month_age,sheep_id, datetime, quar_item, sample_type, sampler, quar_officer, result, status, + select sqr.id, sheep_type,sqr.variety,sqr.gender,sqr.parity,sqr.breed,sqr.month_age,sheep_id, datetime, quar_item, sample_type, sampler, quar_officer, result, status, sqr.update_by, sqr.update_time, sqr.create_by, sqr.create_time, sqi.name as item_name, sqs.name as sample, @@ -98,6 +99,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" INSERT INTO sw_quarantine_report ( sheep_id, + variety, sheep_type, month_age, parity, @@ -121,6 +123,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ( #{item.sheepId}, + #{item.variety}, #{item.sheepType}, #{item.monthAge}, #{item.parity},