From 464126195df84c1a4583ce336959e1cb59dda579 Mon Sep 17 00:00:00 2001 From: ll <1079863556@qq.com> Date: Sun, 1 Feb 2026 21:47:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=AD=E5=A5=B6=E5=BD=95=E5=85=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E6=96=AD=E5=A5=B6=E6=9F=A5=E8=AF=A2=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E5=B9=B2=E5=A5=B6=E5=BD=95=E5=85=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E5=B9=B2=E5=A5=B6=E6=9F=A5=E8=AF=A2=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E6=AD=BB=E4=BA=A1=E5=BD=95=E5=85=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E6=AD=BB=E4=BA=A1=E6=9F=A5=E8=AF=A2=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../breed/controller/ScDryMilkController.java | 229 ++++---------- .../controller/ScSheepDeathController.java | 166 +++------- .../controller/ScWeanRecordController.java | 65 +--- .../produce/breed/domain/ScDryMilk.java | 14 +- .../produce/breed/domain/ScSheepDeath.java | 298 +++++------------- .../produce/breed/domain/ScWeanRecord.java | 30 +- .../produce/breed/mapper/ScDryMilkMapper.java | 46 ++- .../breed/mapper/ScSheepDeathMapper.java | 39 ++- .../breed/mapper/ScWeanRecordMapper.java | 40 ++- .../breed/service/IScDryMilkService.java | 39 +-- .../breed/service/IScSheepDeathService.java | 31 +- .../breed/service/IScWeanRecordService.java | 35 +- .../service/impl/ScDryMilkServiceImpl.java | 93 ++---- .../service/impl/ScSheepDeathServiceImpl.java | 152 +++------ .../service/impl/ScWeanRecordServiceImpl.java | 102 +++--- .../mapper/produce/breed/ScDryMilkMapper.xml | 35 +- .../produce/breed/ScSheepDeathMapper.xml | 118 +++++-- .../produce/breed/ScWeanRecordMapper.xml | 58 ++-- 18 files changed, 628 insertions(+), 962 deletions(-) diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScDryMilkController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScDryMilkController.java index b449d88..c308db0 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScDryMilkController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScDryMilkController.java @@ -1,7 +1,8 @@ package com.zhyc.module.produce.breed.controller; +import java.util.Arrays; import java.util.List; -import java.util.Map; +import java.util.ArrayList; import javax.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -27,8 +28,7 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 干奶记录Controller - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-15 */ @RestController @@ -49,24 +49,37 @@ public class ScDryMilkController extends BaseController public TableDataInfo list(ScDryMilk scDryMilk) { try { - // 添加调试日志 + // 兼容逻辑:如果前端传了字符串形式的耳号(如导出或老接口调用),也转为List if (scDryMilk.getManageTags() != null && !scDryMilk.getManageTags().trim().isEmpty()) { - logger.info("搜索耳号参数: [{}]", scDryMilk.getManageTags()); - scDryMilk.setManageTags(scDryMilk.getManageTags().trim()); + if (scDryMilk.getManageTagsList() == null) { + scDryMilk.setManageTagsList(new ArrayList<>()); + } + // 支持中文逗号、英文逗号、空格分割 + String[] tags = scDryMilk.getManageTags().trim().split("[,,\\s]+"); + scDryMilk.getManageTagsList().addAll(Arrays.asList(tags)); } startPage(); List list = scDryMilkService.selectScDryMilkList(scDryMilk); - - logger.info("查询到干奶记录数量: {}", list.size()); - return getDataTable(list); } catch (Exception e) { logger.error("查询干奶记录列表失败", e); - return getDataTable(new java.util.ArrayList<>()); + return getDataTable(new ArrayList<>()); } } + /** + * 远程搜索耳号列表 + */ + @GetMapping("/searchEarNumbers") + public AjaxResult searchEarNumbers(@RequestParam(value = "query", required = false) String query) + { + if (query == null) query = ""; + // 调用Service层 + List list = scDryMilkService.selectSheepEarNumberList(query); + return AjaxResult.success(list); + } + /** * 导出干奶记录列表 */ @@ -77,9 +90,9 @@ public class ScDryMilkController extends BaseController { try { if (scDryMilk.getManageTags() != null) { - scDryMilk.setManageTags(scDryMilk.getManageTags().trim()); + String[] tags = scDryMilk.getManageTags().trim().split("[,,\\s]+"); + scDryMilk.setManageTagsList(Arrays.asList(tags)); } - List list = scDryMilkService.selectScDryMilkList(scDryMilk); ExcelUtil util = new ExcelUtil(ScDryMilk.class); util.exportExcel(response, list, "干奶记录数据"); @@ -95,86 +108,17 @@ public class ScDryMilkController extends BaseController @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { - try { - if (id == null) { - return error("记录ID不能为空"); - } - - ScDryMilk result = scDryMilkService.selectScDryMilkById(id); - if (result == null) { - return error("记录不存在"); - } - - return success(result); - } catch (Exception e) { - logger.error("获取干奶记录详细信息失败,ID: " + id, e); - return error("获取记录详细信息失败: " + e.getMessage()); - } + return success(scDryMilkService.selectScDryMilkById(id)); } /** - * 根据耳号查询羊只ID - 新增耳号验证功能 - */ - @GetMapping("/validateEarTag") - public AjaxResult validateEarTag(@RequestParam("manageTags") String manageTags) - { - try { - if (manageTags == null || manageTags.trim().isEmpty()) { - return error("耳号不能为空"); - } - - String cleanTag = manageTags.trim(); - logger.info("验证耳号: [{}]", cleanTag); - - Long sheepId = scDryMilkService.selectSheepIdByManageTags(cleanTag); - if (sheepId == null) { - logger.warn("耳号 [{}] 不存在", cleanTag); - return error("该耳号不存在,请检查输入"); - } - - logger.info("验证耳号成功,羊只ID: {}", sheepId); - return AjaxResult.success("耳号验证通过", sheepId); - } catch (Exception e) { - logger.error("验证耳号失败,耳号: " + manageTags, e); - return error("验证耳号时出错: " + e.getMessage()); - } - } - - /** - * 根据耳号查询羊只ID - */ - @PreAuthorize("@ss.hasPermi('drymilk:drymilk:query')") - @GetMapping(value = "/sheep/{manageTags}") - public AjaxResult getSheepIdByManageTags(@PathVariable("manageTags") String manageTags) - { - Long sheepId = scDryMilkService.selectSheepIdByManageTags(manageTags); - return success(sheepId); - } - - /** - * 获取羊舍列表 - 用于嵌套选择 + * 获取羊舍列表 */ @GetMapping("/sheepfoldList") - public AjaxResult getSheepfoldList(@RequestParam(value = "ranchId", required = false) Long ranchId, - @RequestParam(value = "sheepfoldTypeId", required = false) Long sheepfoldTypeId) + public AjaxResult getSheepfoldList(DaSheepfold daSheepfold) { - try { - DaSheepfold query = new DaSheepfold(); - if (ranchId != null) { - query.setRanchId(ranchId); - } - if (sheepfoldTypeId != null) { - query.setSheepfoldTypeId(sheepfoldTypeId); - } - - List sheepfoldList = daSheepfoldService.selectDaSheepfoldList(query); - logger.info("查询羊舍列表,牧场ID: {}, 类型ID: {}, 结果数量: {}", ranchId, sheepfoldTypeId, sheepfoldList.size()); - - return success(sheepfoldList); - } catch (Exception e) { - logger.error("获取羊舍列表失败", e); - return error("获取羊舍列表失败: " + e.getMessage()); - } + List list = daSheepfoldService.selectDaSheepfoldList(daSheepfold); + return success(list); } /** @@ -186,43 +130,41 @@ public class ScDryMilkController extends BaseController public AjaxResult add(@RequestBody ScDryMilk scDryMilk) { try { - // 基础参数校验 - if (scDryMilk == null) { - return error("请求参数不能为空"); - } - - if (scDryMilk.getManageTags() == null || scDryMilk.getManageTags().trim().isEmpty()) { + if (scDryMilk == null || scDryMilk.getManageTags() == null) { return error("耳号不能为空"); } - if (scDryMilk.getDatetime() == null) { - return error("干奶日期不能为空"); + // 批量解析耳号 + String[] tags = scDryMilk.getManageTags().trim().split("[\\s,,\n]+"); + int successCount = 0; + StringBuilder errorMsg = new StringBuilder(); + + for (String tag : tags) { + if (tag.isEmpty()) continue; + + Long sheepId = scDryMilkService.selectSheepIdByManageTags(tag); + if (sheepId == null) { + errorMsg.append(tag).append("不存在; "); + continue; + } + + ScDryMilk newItem = new ScDryMilk(); + newItem.setSheepId(String.valueOf(sheepId)); + newItem.setDatetime(scDryMilk.getDatetime()); + newItem.setStatus(scDryMilk.getStatus()); + newItem.setSheepfold(scDryMilk.getSheepfold()); + newItem.setTecahnician(scDryMilk.getTecahnician()); + newItem.setComment(scDryMilk.getComment()); + newItem.setCreateBy(getUsername()); + + scDryMilkService.insertScDryMilk(newItem); + successCount++; } - if (scDryMilk.getStatus() == null) { - return error("请选择是否使用乳头封闭剂"); - } - - // 清理输入参数 - scDryMilk.setManageTags(scDryMilk.getManageTags().trim()); - if (scDryMilk.getTecahnician() != null) { - scDryMilk.setTecahnician(scDryMilk.getTecahnician().trim()); - } - if (scDryMilk.getComment() != null) { - scDryMilk.setComment(scDryMilk.getComment().trim()); - } - - logger.info("新增干奶记录,耳号: {}", scDryMilk.getManageTags()); - - int result = scDryMilkService.insertScDryMilk(scDryMilk); - if (result > 0) { - // 重新查询插入的记录,包含自动生成的创建时间 - ScDryMilk insertedRecord = scDryMilkService.selectScDryMilkById(scDryMilk.getId()); - logger.info("新增干奶记录成功,记录ID: {}", scDryMilk.getId()); - return success(insertedRecord); - } else { - return error("新增失败"); + if (errorMsg.length() > 0) { + return warn("成功录入 " + successCount + " 条。失败详情:" + errorMsg.toString()); } + return success("成功录入 " + successCount + " 条记录"); } catch (Exception e) { logger.error("新增干奶记录失败", e); return error("新增失败: " + e.getMessage()); @@ -237,39 +179,7 @@ public class ScDryMilkController extends BaseController @PutMapping public AjaxResult edit(@RequestBody ScDryMilk scDryMilk) { - try { - if (scDryMilk == null) { - return error("请求参数不能为空"); - } - - if (scDryMilk.getId() == null) { - return error("记录ID不能为空"); - } - - // 清理输入参数 - if (scDryMilk.getManageTags() != null) { - scDryMilk.setManageTags(scDryMilk.getManageTags().trim()); - } - if (scDryMilk.getTecahnician() != null) { - scDryMilk.setTecahnician(scDryMilk.getTecahnician().trim()); - } - if (scDryMilk.getComment() != null) { - scDryMilk.setComment(scDryMilk.getComment().trim()); - } - - logger.info("修改干奶记录,ID: {}", scDryMilk.getId()); - - int result = scDryMilkService.updateScDryMilk(scDryMilk); - if (result > 0) { - logger.info("修改干奶记录成功"); - return success("修改成功"); - } else { - return error("修改失败,记录可能不存在"); - } - } catch (Exception e) { - logger.error("修改干奶记录失败", e); - return error("修改失败: " + e.getMessage()); - } + return toAjax(scDryMilkService.updateScDryMilk(scDryMilk)); } /** @@ -280,23 +190,6 @@ public class ScDryMilkController extends BaseController @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { - try { - if (ids == null || ids.length == 0) { - return error("删除的记录ID不能为空"); - } - - logger.info("删除干奶记录,IDs: {}", java.util.Arrays.toString(ids)); - - int result = scDryMilkService.deleteScDryMilkByIds(ids); - if (result > 0) { - logger.info("删除干奶记录成功,删除数量: {}", result); - return success("删除成功"); - } else { - return error("删除失败,记录可能不存在"); - } - } catch (Exception e) { - logger.error("删除干奶记录失败", e); - return error("删除失败: " + e.getMessage()); - } + return toAjax(scDryMilkService.deleteScDryMilkByIds(ids)); } } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScSheepDeathController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScSheepDeathController.java index 229cd5a..8a62b95 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScSheepDeathController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScSheepDeathController.java @@ -12,12 +12,12 @@ import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.zhyc.common.annotation.Log; import com.zhyc.common.core.controller.BaseController; import com.zhyc.common.core.domain.AjaxResult; import com.zhyc.common.enums.BusinessType; -import com.zhyc.common.exception.ServiceException; import com.zhyc.module.produce.breed.domain.ScSheepDeath; import com.zhyc.module.produce.breed.service.IScSheepDeathService; import com.zhyc.module.biosafety.service.ISwDiseaseService; @@ -48,19 +48,35 @@ public class ScSheepDeathController extends BaseController @GetMapping("/list") public TableDataInfo list(ScSheepDeath scSheepDeath) { - try { - startPage(); - List list = scSheepDeathService.selectScSheepDeathList(scSheepDeath); - return getDataTable(list); - } catch (Exception e) { - logger.error("查询羊只死淘记录列表失败", e); - return getDataTable(new java.util.ArrayList<>()); - } + startPage(); + List list = scSheepDeathService.selectScSheepDeathList(scSheepDeath); + return getDataTable(list); } /** - * 根据管理耳号查询羊只信息 + * 搜索管理耳号(用于下拉提示) */ + @GetMapping("/search/earNo") + public AjaxResult searchEarNo(@RequestParam("query") String query) { + return success(scSheepDeathService.selectDistinctManageTags(query == null ? "" : query)); + } + + /** + * 搜索技术员(用于下拉提示) + */ + @GetMapping("/search/technician") + public AjaxResult searchTechnician(@RequestParam("query") String query) { + return success(scSheepDeathService.selectDistinctTechnician(query == null ? "" : query)); + } + + /** + * 搜索处理人(用于下拉提示) + */ + @GetMapping("/search/handler") + public AjaxResult searchHandler(@RequestParam("query") String query) { + return success(scSheepDeathService.selectDistinctHandler(query == null ? "" : query)); + } + @PreAuthorize("@ss.hasPermi('sheep_death:death:query')") @GetMapping("/sheepInfo/{manageTags}") public AjaxResult getSheepInfo(@PathVariable("manageTags") String manageTags) @@ -69,7 +85,6 @@ public class ScSheepDeathController extends BaseController if (manageTags == null || manageTags.trim().isEmpty()) { return error("管理耳号不能为空"); } - Map sheepInfo = scSheepDeathService.selectSheepFileByManageTags(manageTags.trim()); if (sheepInfo != null) { return success(sheepInfo); @@ -77,172 +92,63 @@ public class ScSheepDeathController extends BaseController return error("未找到该耳号对应的羊只信息"); } } catch (Exception e) { - logger.error("查询羊只信息失败,管理耳号: " + manageTags, e); return error("查询羊只信息失败: " + e.getMessage()); } } - /** - * 获取疾病树形列表 - */ @PreAuthorize("@ss.hasPermi('sheep_death:death:query')") @GetMapping("/disease/tree") public AjaxResult getDiseaseTree() { - try { - List diseaseList = swDiseaseService.selectSwDiseaseList(new SwDisease()); - return success(diseaseList); - } catch (Exception e) { - logger.error("获取疾病树形列表失败", e); - return error("获取疾病列表失败: " + e.getMessage()); - } + List diseaseList = swDiseaseService.selectSwDiseaseList(new SwDisease()); + return success(diseaseList); } - /** - * 导出羊只死淘记录列表 - */ @PreAuthorize("@ss.hasPermi('sheep_death:death:export')") @Log(title = "羊只死淘记录", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ScSheepDeath scSheepDeath) { - try { - List list = scSheepDeathService.selectScSheepDeathList(scSheepDeath); - ExcelUtil util = new ExcelUtil(ScSheepDeath.class); - util.exportExcel(response, list, "羊只死淘记录数据"); - } catch (Exception e) { - logger.error("导出羊只死淘记录失败", e); - // 可以在这里返回错误响应 - } + List list = scSheepDeathService.selectScSheepDeathList(scSheepDeath); + ExcelUtil util = new ExcelUtil(ScSheepDeath.class); + util.exportExcel(response, list, "羊只死淘记录数据"); } - /** - * 获取羊只死淘记录详细信息 - */ @PreAuthorize("@ss.hasPermi('sheep_death:death:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { - try { - if (id == null) { - return error("记录ID不能为空"); - } - - ScSheepDeath result = scSheepDeathService.selectScSheepDeathById(id); - if (result == null) { - return error("记录不存在"); - } - - return success(result); - } catch (Exception e) { - logger.error("获取羊只死淘记录详细信息失败,ID: " + id, e); - return error("获取记录详细信息失败: " + e.getMessage()); - } + return success(scSheepDeathService.selectScSheepDeathById(id)); } - /** - * 新增羊只死淘记录 - */ @PreAuthorize("@ss.hasPermi('sheep_death:death:add')") @Log(title = "羊只死淘记录", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ScSheepDeath scSheepDeath) { try { - // 基础参数校验 - if (scSheepDeath == null) { - return error("请求参数不能为空"); - } - - if (scSheepDeath.getManageTags() == null || scSheepDeath.getManageTags().trim().isEmpty()) { + if (scSheepDeath == null || scSheepDeath.getManageTags() == null || scSheepDeath.getManageTags().trim().isEmpty()) { return error("管理耳号不能为空"); } - - if (scSheepDeath.getDeathDate() == null) { - return error("死淘日期不能为空"); - } - - int result = scSheepDeathService.insertScSheepDeath(scSheepDeath); - if (result > 0) { - return success("新增成功"); - } else { - return error("新增失败"); - } - } catch (ServiceException e) { - logger.warn("新增羊只死淘记录业务异常: " + e.getMessage()); - return error(e.getMessage()); + return toAjax(scSheepDeathService.insertScSheepDeath(scSheepDeath)); } catch (Exception e) { - logger.error("新增羊只死淘记录失败", e); return error("新增失败: " + e.getMessage()); } } - /** - * 修改羊只死淘记录 - */ @PreAuthorize("@ss.hasPermi('sheep_death:death:edit')") @Log(title = "羊只死淘记录", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ScSheepDeath scSheepDeath) { - try { - // 基础参数校验 - if (scSheepDeath == null) { - return error("请求参数不能为空"); - } - - if (scSheepDeath.getId() == null) { - return error("记录ID不能为空"); - } - - if (scSheepDeath.getManageTags() == null || scSheepDeath.getManageTags().trim().isEmpty()) { - return error("管理耳号不能为空"); - } - - if (scSheepDeath.getDeathDate() == null) { - return error("死淘日期不能为空"); - } - - int result = scSheepDeathService.updateScSheepDeath(scSheepDeath); - if (result > 0) { - return success("修改成功"); - } else { - return error("修改失败,记录可能不存在"); - } - } catch (ServiceException e) { - logger.warn("修改羊只死淘记录业务异常: " + e.getMessage()); - return error(e.getMessage()); - } catch (Exception e) { - logger.error("修改羊只死淘记录失败", e); - return error("修改失败: " + e.getMessage()); - } + return toAjax(scSheepDeathService.updateScSheepDeath(scSheepDeath)); } - /** - * 删除羊只死淘记录 - */ @PreAuthorize("@ss.hasPermi('sheep_death:death:remove')") @Log(title = "羊只死淘记录", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { - try { - if (ids == null || ids.length == 0) { - return error("删除的记录ID不能为空"); - } - - int result = scSheepDeathService.deleteScSheepDeathByIds(ids); - if (result > 0) { - return success("删除成功"); - } else { - return error("删除失败,记录可能不存在"); - } - } catch (ServiceException e) { - logger.warn("删除羊只死淘记录业务异常: " + e.getMessage()); - return error(e.getMessage()); - } catch (Exception e) { - logger.error("删除羊只死淘记录失败", e); - return error("删除失败: " + e.getMessage()); - } + return toAjax(scSheepDeathService.deleteScSheepDeathByIds(ids)); } } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScWeanRecordController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScWeanRecordController.java index d454abf..8a8f693 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScWeanRecordController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScWeanRecordController.java @@ -3,17 +3,11 @@ package com.zhyc.module.produce.breed.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.zhyc.common.utils.StringUtils; import com.zhyc.module.produce.breed.domain.ScWeanRecord; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.zhyc.common.annotation.Log; import com.zhyc.common.core.controller.BaseController; import com.zhyc.common.core.domain.AjaxResult; @@ -24,9 +18,6 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 断奶记录Controller - * - * @author zhyc - * @date 2024-01-01 */ @RestController @RequestMapping("/Weaning/weaning_record") @@ -45,6 +36,16 @@ 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 list = scWeanRecordService.searchEarNumbers(query); + return success(list); + } + /** * 导出断奶记录列表 */ @@ -87,7 +88,6 @@ public class ScWeanRecordController extends BaseController { @Log(title = "断奶记录", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ScWeanRecord scWeanRecord) { - // 验证耳号是否存在 if (scWeanRecord.getEarNumber() != null) { Long sheepId = scWeanRecordService.selectSheepIdByEarNumber(scWeanRecord.getEarNumber()); if (sheepId == null) { @@ -95,20 +95,10 @@ public class ScWeanRecordController extends BaseController { } scWeanRecord.setSheepId(sheepId); } - - // 验证必要字段 - if (scWeanRecord.getSheepId() == null) { - return error("羊只信息不能为空"); - } - if (scWeanRecord.getDatetime() == null) { - return error("断奶日期不能为空"); - } - if (scWeanRecord.getWeight() == null) { - return error("断奶重量不能为空"); - } - if (scWeanRecord.getStatus() == null) { - return error("是否留养不能为空"); - } + if (scWeanRecord.getSheepId() == null) return error("羊只信息不能为空"); + if (scWeanRecord.getDatetime() == null) return error("断奶日期不能为空"); + if (scWeanRecord.getWeight() == null) return error("断奶重量不能为空"); + if (scWeanRecord.getStatus() == null) return error("是否留养不能为空"); scWeanRecord.setCreateBy(getUsername()); return toAjax(scWeanRecordService.insertScWeanRecord(scWeanRecord)); @@ -121,32 +111,11 @@ public class ScWeanRecordController extends BaseController { @Log(title = "断奶记录", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ScWeanRecord scWeanRecord) { - // 验证耳号是否存在 if (scWeanRecord.getEarNumber() != null) { Long sheepId = scWeanRecordService.selectSheepIdByEarNumber(scWeanRecord.getEarNumber()); - if (sheepId == null) { - return error("耳号不存在,请检查后重新输入"); - } + if (sheepId == null) return error("耳号不存在"); scWeanRecord.setSheepId(sheepId); } - - // 验证必要字段 - if (scWeanRecord.getId() == null) { - return error("记录ID不能为空"); - } - if (scWeanRecord.getSheepId() == null) { - return error("羊只信息不能为空"); - } - if (scWeanRecord.getDatetime() == null) { - return error("断奶日期不能为空"); - } - if (scWeanRecord.getWeight() == null) { - return error("断奶重量不能为空"); - } - if (scWeanRecord.getStatus() == null) { - return error("是否留养不能为空"); - } - return toAjax(scWeanRecordService.updateScWeanRecord(scWeanRecord)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScDryMilk.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScDryMilk.java index 07ffe30..b093e2f 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScDryMilk.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScDryMilk.java @@ -1,6 +1,7 @@ package com.zhyc.module.produce.breed.domain; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Data; @@ -33,8 +34,8 @@ public class ScDryMilk extends BaseEntity @Excel(name = "干奶日期", width = 30, dateFormat = "yyyy-MM-dd") private Date datetime; - /** 是否使用乳头封闭剂 */ - @Excel(name = "是否使用乳头封闭剂") + /** 是否使用乳头封闭剂 (1:是 0:否) */ + @Excel(name = "是否使用乳头封闭剂", readConverterExp = "0=否,1=是") private Long status; /** 转入羊舍id */ @@ -49,12 +50,15 @@ public class ScDryMilk extends BaseEntity @Excel(name = "备注") private String comment; - // 以下为联表查询字段,不存储在sc_dry_milk表中 + // --- 联表查询字段 --- - /** 管理耳号 */ + /** 管理耳号 (单个) */ @Excel(name = "耳号") private String manageTags; + /** 多耳号查询列表 (核心修改:用于接收前端多选的数组) */ + private List manageTagsList; + /** 品种 */ @Excel(name = "品种") private String variety; @@ -66,6 +70,4 @@ public class ScDryMilk extends BaseEntity /** 事件类型 */ @Excel(name = "事件类型") private String eventType; - - } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScSheepDeath.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScSheepDeath.java index 52f04dd..91e6d91 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScSheepDeath.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScSheepDeath.java @@ -1,6 +1,7 @@ package com.zhyc.module.produce.breed.domain; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -69,26 +70,34 @@ public class ScSheepDeath extends BaseEntity @Excel(name = "是否删除(0:未删除 1:已删除)") private Long isDelete; - // 以下字段仅用于前端显示,不存储到数据库 - /** 品种 */ + // --- 扩展字段 --- + + /** 品种 (查询显示用) */ + @Excel(name = "品种") private String variety; - /** 死亡时羊只类别 */ + /** 羊只类型 (原事假类型改为羊只类型查询) */ + @Excel(name = "羊只类型") private String sheepType; /** 性别 */ + @Excel(name = "性别", readConverterExp = "1=母,2=公") private Integer gender; /** 日龄 */ + @Excel(name = "日龄") private Long dayAge; /** 胎次 */ + @Excel(name = "胎次") private Integer parity; /** 羊舍 */ + @Excel(name = "羊舍") private String sheepfoldName; /** 繁育状态 */ + @Excel(name = "繁育状态") private String breedStatus; /** 死亡时产后天数 */ @@ -100,257 +109,124 @@ public class ScSheepDeath extends BaseEntity /** 死亡时怀孕天数 */ private Integer gestationDay; - public void setId(Long id) - { - this.id = id; - } + // 疾病名称 + private String diseaseTypeName; + private String diseaseSubtypeName; - public Long getId() - { - return id; - } + // --- 多选查询条件 --- - public void setSheepId(Long sheepId) - { - this.sheepId = sheepId; - } + /** 多选管理耳号列表 */ + private List manageTagsList; - public Long getSheepId() - { - return sheepId; - } + /** 多选羊只类型列表 */ + private List sheepTypeList; - public void setManageTags(String manageTags) - { - this.manageTags = manageTags; - } + /** 多选技术员列表 */ + private List technicianList; - public String getManageTags() - { - return manageTags; - } + /** 多选处理人列表 */ + private List handlerList; - public void setEventType(String eventType) - { - this.eventType = eventType; - } + /** 多选班组列表 */ + private List workGroupList; - public String getEventType() - { - return eventType; - } + // Getter & Setter + public void setId(Long id) { this.id = id; } + public Long getId() { return id; } - public void setDeathDate(Date deathDate) - { - this.deathDate = deathDate; - } + public void setSheepId(Long sheepId) { this.sheepId = sheepId; } + public Long getSheepId() { return sheepId; } - public Date getDeathDate() - { - return deathDate; - } + public void setManageTags(String manageTags) { this.manageTags = manageTags; } + public String getManageTags() { return manageTags; } - public void setDiseaseTypeId(Long diseaseTypeId) - { - this.diseaseTypeId = diseaseTypeId; - } + public void setEventType(String eventType) { this.eventType = eventType; } + public String getEventType() { return eventType; } - public Long getDiseaseTypeId() - { - return diseaseTypeId; - } + public void setDeathDate(Date deathDate) { this.deathDate = deathDate; } + public Date getDeathDate() { return deathDate; } - public void setDiseaseSubtypeId(Long diseaseSubtypeId) - { - this.diseaseSubtypeId = diseaseSubtypeId; - } + public void setDiseaseTypeId(Long diseaseTypeId) { this.diseaseTypeId = diseaseTypeId; } + public Long getDiseaseTypeId() { return diseaseTypeId; } - public Long getDiseaseSubtypeId() - { - return diseaseSubtypeId; - } + public void setDiseaseSubtypeId(Long diseaseSubtypeId) { this.diseaseSubtypeId = diseaseSubtypeId; } + public Long getDiseaseSubtypeId() { return diseaseSubtypeId; } - public void setDisposalDirection(String disposalDirection) - { - this.disposalDirection = disposalDirection; - } + public void setDisposalDirection(String disposalDirection) { this.disposalDirection = disposalDirection; } + public String getDisposalDirection() { return disposalDirection; } - public String getDisposalDirection() - { - return disposalDirection; - } + public void setTechnician(String technician) { this.technician = technician; } + public String getTechnician() { return technician; } - public void setTechnician(String technician) - { - this.technician = technician; - } + public void setHandler(String handler) { this.handler = handler; } + public String getHandler() { return handler; } - public String getTechnician() - { - return technician; - } + public void setWorkGroup(String workGroup) { this.workGroup = workGroup; } + public String getWorkGroup() { return workGroup; } - public void setHandler(String handler) - { - this.handler = handler; - } + public void setComment(String comment) { this.comment = comment; } + public String getComment() { return comment; } - public String getHandler() - { - return handler; - } + public void setIsDelete(Long isDelete) { this.isDelete = isDelete; } + public Long getIsDelete() { return isDelete; } - public void setWorkGroup(String workGroup) - { - this.workGroup = workGroup; - } + public void setVariety(String variety) { this.variety = variety; } + public String getVariety() { return variety; } - public String getWorkGroup() - { - return workGroup; - } + public void setSheepType(String sheepType) { this.sheepType = sheepType; } + public String getSheepType() { return sheepType; } - public void setComment(String comment) - { - this.comment = comment; - } + public void setGender(Integer gender) { this.gender = gender; } + public Integer getGender() { return gender; } - public String getComment() - { - return comment; - } + public void setDayAge(Long dayAge) { this.dayAge = dayAge; } + public Long getDayAge() { return dayAge; } - public void setIsDelete(Long isDelete) - { - this.isDelete = isDelete; - } + public void setParity(Integer parity) { this.parity = parity; } + public Integer getParity() { return parity; } - public Long getIsDelete() - { - return isDelete; - } + public void setSheepfoldName(String sheepfoldName) { this.sheepfoldName = sheepfoldName; } + public String getSheepfoldName() { return sheepfoldName; } - // 以下为仅用于显示的字段的getter/setter - public void setVariety(String variety) - { - this.variety = variety; - } + public void setBreedStatus(String breedStatus) { this.breedStatus = breedStatus; } + public String getBreedStatus() { return breedStatus; } - public String getVariety() - { - return variety; - } + public void setPostLambingDay(Integer postLambingDay) { this.postLambingDay = postLambingDay; } + public Integer getPostLambingDay() { return postLambingDay; } - public void setSheepType(String sheepType) - { - this.sheepType = sheepType; - } + public void setLactationDay(Integer lactationDay) { this.lactationDay = lactationDay; } + public Integer getLactationDay() { return lactationDay; } - public String getSheepType() - { - return sheepType; - } + public void setGestationDay(Integer gestationDay) { this.gestationDay = gestationDay; } + public Integer getGestationDay() { return gestationDay; } - public void setGender(Integer gender) - { - this.gender = gender; - } + public String getDiseaseTypeName() { return diseaseTypeName; } + public void setDiseaseTypeName(String diseaseTypeName) { this.diseaseTypeName = diseaseTypeName; } - public Integer getGender() - { - return gender; - } + public String getDiseaseSubtypeName() { return diseaseSubtypeName; } + public void setDiseaseSubtypeName(String diseaseSubtypeName) { this.diseaseSubtypeName = diseaseSubtypeName; } - public void setDayAge(Long dayAge) - { - this.dayAge = dayAge; - } + public List getManageTagsList() { return manageTagsList; } + public void setManageTagsList(List manageTagsList) { this.manageTagsList = manageTagsList; } - public Long getDayAge() - { - return dayAge; - } + public List getSheepTypeList() { return sheepTypeList; } + public void setSheepTypeList(List sheepTypeList) { this.sheepTypeList = sheepTypeList; } - public void setParity(Integer parity) - { - this.parity = parity; - } + public List getTechnicianList() { return technicianList; } + public void setTechnicianList(List technicianList) { this.technicianList = technicianList; } - public Integer getParity() - { - return parity; - } + public List getHandlerList() { return handlerList; } + public void setHandlerList(List handlerList) { this.handlerList = handlerList; } - public void setSheepfoldName(String sheepfoldName) - { - this.sheepfoldName = sheepfoldName; - } - - public String getSheepfoldName() - { - return sheepfoldName; - } - - public void setBreedStatus(String breedStatus) - { - this.breedStatus = breedStatus; - } - - public String getBreedStatus() - { - return breedStatus; - } - - public void setPostLambingDay(Integer postLambingDay) - { - this.postLambingDay = postLambingDay; - } - - public Integer getPostLambingDay() - { - return postLambingDay; - } - - public void setLactationDay(Integer lactationDay) - { - this.lactationDay = lactationDay; - } - - public Integer getLactationDay() - { - return lactationDay; - } - - public void setGestationDay(Integer gestationDay) - { - this.gestationDay = gestationDay; - } - - public Integer getGestationDay() - { - return gestationDay; - } + public List getWorkGroupList() { return workGroupList; } + public void setWorkGroupList(List workGroupList) { this.workGroupList = workGroupList; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("id", getId()) - .append("sheepId", getSheepId()) .append("manageTags", getManageTags()) - .append("eventType", getEventType()) .append("deathDate", getDeathDate()) - .append("diseaseTypeId", getDiseaseTypeId()) - .append("diseaseSubtypeId", getDiseaseSubtypeId()) - .append("disposalDirection", getDisposalDirection()) - .append("technician", getTechnician()) - .append("handler", getHandler()) - .append("workGroup", getWorkGroup()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("comment", getComment()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("isDelete", getIsDelete()) .toString(); } } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScWeanRecord.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScWeanRecord.java index b0e4dcb..f53ba46 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScWeanRecord.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScWeanRecord.java @@ -2,6 +2,7 @@ package com.zhyc.module.produce.breed.domain; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import com.zhyc.common.annotation.Excel; import com.zhyc.common.core.domain.BaseEntity; @@ -11,9 +12,6 @@ import lombok.NoArgsConstructor; /** * 断奶记录对象 sc_wean_record - * - * @author zhyc - * @date 2024-01-01 */ @Data @NoArgsConstructor @@ -53,46 +51,46 @@ public class ScWeanRecord extends BaseEntity { @Excel(name = "电子耳号") private String electronicTags; - // 关联查询字段 - /** 耳号 */ + // --- 新增查询字段 --- + + /** 多耳号查询列表 */ + private List allEarNumbers; + + /** 是否在群 (1是 0否) */ + private String isInHerd; + + /** 羊只类别 (对应 sheep_file 的 breed 字段) */ + private String sheepCategory; + + // --- 关联查询显示字段 --- + @Excel(name = "耳号") private String earNumber; - /** 品种 */ @Excel(name = "品种") private String breed; - /** 事件类型 */ @Excel(name = "事件类型") private String eventType; - /** 性别 */ @Excel(name = "性别") private String gender; - /** 父号 */ @Excel(name = "父号") private String fatherNumber; - /** 母号 */ @Excel(name = "母号") private String motherNumber; - /** 月龄 */ @Excel(name = "月龄") private Integer monthAge; - /** 出生重量 */ @Excel(name = "出生重量") private BigDecimal birthWeight; - /** 羊舍 */ @Excel(name = "羊舍") private String sheepPen; - /** 繁育状态 */ @Excel(name = "繁育状态") private String breedingStatus; - - } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScDryMilkMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScDryMilkMapper.java index 742dbe7..97440c0 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScDryMilkMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScDryMilkMapper.java @@ -2,70 +2,66 @@ package com.zhyc.module.produce.breed.mapper; import java.util.List; import com.zhyc.module.produce.breed.domain.ScDryMilk; -import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 干奶记录Mapper接口 - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-15 */ -@Mapper public interface ScDryMilkMapper { /** * 查询干奶记录 - * - * @param id 干奶记录主键 + * * @param id 干奶记录主键 * @return 干奶记录 */ public ScDryMilk selectScDryMilkById(Long id); /** * 查询干奶记录列表 - * - * @param scDryMilk 干奶记录 + * * @param scDryMilk 干奶记录 * @return 干奶记录集合 */ public List selectScDryMilkList(ScDryMilk scDryMilk); - /** - * 根据耳号查询羊只ID - * - * @param manageTags 管理耳号 - * @return 羊只ID - */ - public Long selectSheepIdByManageTags(String manageTags); - /** * 新增干奶记录 - * - * @param scDryMilk 干奶记录 + * * @param scDryMilk 干奶记录 * @return 结果 */ public int insertScDryMilk(ScDryMilk scDryMilk); /** * 修改干奶记录 - * - * @param scDryMilk 干奶记录 + * * @param scDryMilk 干奶记录 * @return 结果 */ public int updateScDryMilk(ScDryMilk scDryMilk); /** * 删除干奶记录 - * - * @param id 干奶记录主键 + * * @param id 干奶记录主键 * @return 结果 */ public int deleteScDryMilkById(Long id); /** * 批量删除干奶记录 - * - * @param ids 需要删除的数据主键集合 + * * @param ids 需要删除的数据主键集合 * @return 结果 */ - public int deleteScDryMilkByIds(Long[] ids); + public int deleteScDryMilkByIds(String[] ids); + + /** + * 根据耳号查询羊只ID + */ + public Long selectSheepIdByManageTags(String manageTags); + + /** + * 远程搜索耳号列表 (新增) + * @param query 搜索关键字 + * @return 耳号列表 + */ + public List selectSheepEarNumberList(@Param("query") String query); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScSheepDeathMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScSheepDeathMapper.java index 853ab39..b0e1a9d 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScSheepDeathMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScSheepDeathMapper.java @@ -2,8 +2,8 @@ package com.zhyc.module.produce.breed.mapper; import java.util.List; import java.util.Map; -import org.apache.ibatis.annotations.Param; import com.zhyc.module.produce.breed.domain.ScSheepDeath; +import org.apache.ibatis.annotations.Param; /** * 羊只死淘记录Mapper接口 @@ -29,14 +29,6 @@ public interface ScSheepDeathMapper */ public List selectScSheepDeathList(ScSheepDeath scSheepDeath); - /** - * 根据管理耳号查询sheep_file视图信息 - * - * @param manageTags 管理耳号 - * @return 羊只信息 - */ - public Map selectSheepFileByManageTags(String manageTags); - /** * 新增羊只死淘记录 * @@ -70,20 +62,27 @@ public interface ScSheepDeathMapper public int deleteScSheepDeathByIds(Long[] ids); /** - * 更新羊只繁育状态 - * - * @param sheepId 羊只ID - * @param status 繁育状态 - * @return 更新结果 + * 根据管理耳号查询sheep_file视图信息 */ - public int updateSheepFileStatus(@Param("sheepId") Long sheepId, @Param("status") String status); + public Map selectSheepFileByManageTags(@Param("manageTags") String manageTags); /** - * 新增:更新羊只在群状态 - * - * @param sheepId 羊只ID - * @param status 在群状态(1-在群,2-不在群) - * @return 更新结果 + * 更新羊只在群状态 */ public int updateSheepStatus(@Param("sheepId") Long sheepId, @Param("status") String status); + + /** + * 远程搜索:管理耳号 + */ + public List selectDistinctManageTags(@Param("query") String query); + + /** + * 远程搜索:技术员 + */ + public List selectDistinctTechnician(@Param("query") String query); + + /** + * 远程搜索:处理人 + */ + public List selectDistinctHandler(@Param("query") String query); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScWeanRecordMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScWeanRecordMapper.java index cb74588..3958729 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScWeanRecordMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScWeanRecordMapper.java @@ -2,77 +2,75 @@ package com.zhyc.module.produce.breed.mapper; import java.util.List; import com.zhyc.module.produce.breed.domain.ScWeanRecord; -import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 断奶记录Mapper接口 - * - * @author zhyc + * * @author zhyc * @date 2024-01-01 */ -@Mapper -public interface ScWeanRecordMapper { +public interface ScWeanRecordMapper +{ /** * 查询断奶记录 - * - * @param id 断奶记录主键 + * * @param id 断奶记录主键 * @return 断奶记录 */ public ScWeanRecord selectScWeanRecordById(Long id); /** * 查询断奶记录列表 - * - * @param scWeanRecord 断奶记录 + * * @param scWeanRecord 断奶记录 * @return 断奶记录集合 */ public List selectScWeanRecordList(ScWeanRecord scWeanRecord); /** * 新增断奶记录 - * - * @param scWeanRecord 断奶记录 + * * @param scWeanRecord 断奶记录 * @return 结果 */ public int insertScWeanRecord(ScWeanRecord scWeanRecord); /** * 修改断奶记录 - * - * @param scWeanRecord 断奶记录 + * * @param scWeanRecord 断奶记录 * @return 结果 */ public int updateScWeanRecord(ScWeanRecord scWeanRecord); /** * 删除断奶记录 - * - * @param id 断奶记录主键 + * * @param id 断奶记录主键 * @return 结果 */ public int deleteScWeanRecordById(Long id); /** * 批量删除断奶记录 - * - * @param ids 需要删除的数据主键集合 + * * @param ids 需要删除的数据主键集合 * @return 结果 */ public int deleteScWeanRecordByIds(Long[] ids); /** * 根据耳号查询羊只ID - * * @param earNumber 耳号 * @return 羊只ID */ public Long selectSheepIdByEarNumber(String earNumber); /** - * 根据耳号更新bas_sheep表中的断奶信息 - * - * @param scWeanRecord 断奶记录 + * 更新基础羊只表的断奶信息 (对应XML中的updateBasSheepWeaningInfo) + * @param scWeanRecord 断奶信息 * @return 结果 */ public int updateBasSheepWeaningInfo(ScWeanRecord scWeanRecord); + + /** + * 【新增】模糊查询耳号列表 (用于前端远程搜索) + * @param query 查询关键字 + * @return 耳号列表 + */ + public List searchEarNumbers(@Param("query") String query); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScDryMilkService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScDryMilkService.java index ad90b57..6c05394 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScDryMilkService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScDryMilkService.java @@ -5,59 +5,62 @@ import com.zhyc.module.produce.breed.domain.ScDryMilk; /** * 干奶记录Service接口 - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-15 */ -public interface IScDryMilkService +public interface IScDryMilkService { /** * 查询干奶记录 - * - * @param id 干奶记录主键 + * * @param id 干奶记录主键 * @return 干奶记录 */ public ScDryMilk selectScDryMilkById(Long id); /** * 查询干奶记录列表 - * - * @param scDryMilk 干奶记录 + * * @param scDryMilk 干奶记录 * @return 干奶记录集合 */ public List selectScDryMilkList(ScDryMilk scDryMilk); - Long selectSheepIdByManageTags(String manageTags); - /** * 新增干奶记录 - * - * @param scDryMilk 干奶记录 + * * @param scDryMilk 干奶记录 * @return 结果 */ public int insertScDryMilk(ScDryMilk scDryMilk); /** * 修改干奶记录 - * - * @param scDryMilk 干奶记录 + * * @param scDryMilk 干奶记录 * @return 结果 */ public int updateScDryMilk(ScDryMilk scDryMilk); /** * 批量删除干奶记录 - * - * @param ids 需要删除的干奶记录主键集合 + * * @param ids 需要删除的干奶记录主键集合 * @return 结果 */ public int deleteScDryMilkByIds(Long[] ids); /** * 删除干奶记录信息 - * - * @param id 干奶记录主键 + * * @param id 干奶记录主键 * @return 结果 */ public int deleteScDryMilkById(Long id); -} + + /** + * 根据耳号查询羊只ID + */ + public Long selectSheepIdByManageTags(String manageTags); + + /** + * 远程搜索耳号列表 (新增方法) + * @param query 搜索关键字 + * @return 耳号列表 + */ + public List selectSheepEarNumberList(String query); +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScSheepDeathService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScSheepDeathService.java index e1100d5..b0f6bfb 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScSheepDeathService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScSheepDeathService.java @@ -28,14 +28,6 @@ public interface IScSheepDeathService */ public List selectScSheepDeathList(ScSheepDeath scSheepDeath); - /** - * 根据管理耳号查询sheep_file视图信息 - * - * @param manageTags 管理耳号 - * @return 羊只信息 - */ - public Map selectSheepFileByManageTags(String manageTags); - /** * 新增羊只死淘记录 * @@ -67,4 +59,27 @@ public interface IScSheepDeathService * @return 结果 */ public int deleteScSheepDeathById(Long id); + + /** + * 根据管理耳号查询sheep_file视图信息 + * + * @param manageTags 管理耳号 + * @return 羊只信息 + */ + public Map selectSheepFileByManageTags(String manageTags); + + /** + * 远程搜索:管理耳号 + */ + public List selectDistinctManageTags(String query); + + /** + * 远程搜索:技术员 + */ + public List selectDistinctTechnician(String query); + + /** + * 远程搜索:处理人 + */ + public List selectDistinctHandler(String query); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScWeanRecordService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScWeanRecordService.java index 9f49b44..d94bd76 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScWeanRecordService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScWeanRecordService.java @@ -1,69 +1,68 @@ package com.zhyc.module.produce.breed.service; import java.util.List; - import com.zhyc.module.produce.breed.domain.ScWeanRecord; /** * 断奶记录Service接口 - * - * @author ruoyi - * @date 2025-07-13 + * * @author zhyc + * @date 2024-01-01 */ -public interface IScWeanRecordService { +public interface IScWeanRecordService +{ /** * 查询断奶记录 - * - * @param id 断奶记录主键 + * * @param id 断奶记录主键 * @return 断奶记录 */ public ScWeanRecord selectScWeanRecordById(Long id); /** * 查询断奶记录列表 - * - * @param scWeanRecord 断奶记录 + * * @param scWeanRecord 断奶记录 * @return 断奶记录集合 */ public List selectScWeanRecordList(ScWeanRecord scWeanRecord); /** * 新增断奶记录 - * - * @param scWeanRecord 断奶记录 + * * @param scWeanRecord 断奶记录 * @return 结果 */ public int insertScWeanRecord(ScWeanRecord scWeanRecord); /** * 修改断奶记录 - * - * @param scWeanRecord 断奶记录 + * * @param scWeanRecord 断奶记录 * @return 结果 */ public int updateScWeanRecord(ScWeanRecord scWeanRecord); /** * 批量删除断奶记录 - * - * @param ids 需要删除的断奶记录主键集合 + * * @param ids 需要删除的断奶记录主键集合 * @return 结果 */ public int deleteScWeanRecordByIds(Long[] ids); /** * 删除断奶记录信息 - * - * @param id 断奶记录主键 + * * @param id 断奶记录主键 * @return 结果 */ public int deleteScWeanRecordById(Long id); /** * 根据耳号查询羊只ID - * * @param earNumber 耳号 * @return 羊只ID */ public Long selectSheepIdByEarNumber(String earNumber); + + /** + * 【新增】模糊查询耳号列表 + * @param query 查询关键字 + * @return 耳号列表 + */ + public List searchEarNumbers(String query); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScDryMilkServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScDryMilkServiceImpl.java index 3ba8322..548fc78 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScDryMilkServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScDryMilkServiceImpl.java @@ -1,20 +1,16 @@ package com.zhyc.module.produce.breed.service.impl; import java.util.List; -import java.util.Date; +import com.zhyc.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zhyc.module.produce.breed.mapper.ScDryMilkMapper; import com.zhyc.module.produce.breed.domain.ScDryMilk; import com.zhyc.module.produce.breed.service.IScDryMilkService; -import com.zhyc.common.utils.StringUtils; -import com.zhyc.common.utils.DateUtils; -import com.zhyc.common.exception.ServiceException; /** * 干奶记录Service业务层处理 - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-15 */ @Service @@ -25,8 +21,7 @@ public class ScDryMilkServiceImpl implements IScDryMilkService /** * 查询干奶记录 - * - * @param id 干奶记录主键 + * * @param id 干奶记录主键 * @return 干奶记录 */ @Override @@ -37,8 +32,7 @@ public class ScDryMilkServiceImpl implements IScDryMilkService /** * 查询干奶记录列表 - * - * @param scDryMilk 干奶记录 + * * @param scDryMilk 干奶记录 * @return 干奶记录 */ @Override @@ -47,90 +41,49 @@ public class ScDryMilkServiceImpl implements IScDryMilkService return scDryMilkMapper.selectScDryMilkList(scDryMilk); } - /** - * 根据耳号查询羊只ID - * - * @param manageTags 管理耳号 - * @return 羊只ID - */ - @Override - public Long selectSheepIdByManageTags(String manageTags) - { - return scDryMilkMapper.selectSheepIdByManageTags(manageTags); - } - /** * 新增干奶记录 - * - * @param scDryMilk 干奶记录 + * * @param scDryMilk 干奶记录 * @return 结果 */ @Override public int insertScDryMilk(ScDryMilk scDryMilk) { - // 如果传入的是耳号,需要转换为羊只ID - if (StringUtils.isNotEmpty(scDryMilk.getManageTags()) && StringUtils.isEmpty(scDryMilk.getSheepId())) - { - Long sheepId = scDryMilkMapper.selectSheepIdByManageTags(scDryMilk.getManageTags()); - if (sheepId == null) - { - throw new ServiceException("未找到对应耳号的羊只信息"); - } - scDryMilk.setSheepId(String.valueOf(sheepId)); - } - - // 自动设置创建时间(精确到分钟) scDryMilk.setCreateTime(DateUtils.getNowDate()); - // 如果有获取当前用户的方法,可以设置创建人 - // scDryMilk.setCreateBy(SecurityUtils.getUsername()); - return scDryMilkMapper.insertScDryMilk(scDryMilk); } /** * 修改干奶记录 - * - * @param scDryMilk 干奶记录 + * * @param scDryMilk 干奶记录 * @return 结果 */ @Override public int updateScDryMilk(ScDryMilk scDryMilk) { - // 如果传入的是耳号,需要转换为羊只ID - if (StringUtils.isNotEmpty(scDryMilk.getManageTags()) && StringUtils.isEmpty(scDryMilk.getSheepId())) - { - Long sheepId = scDryMilkMapper.selectSheepIdByManageTags(scDryMilk.getManageTags()); - if (sheepId == null) - { - throw new ServiceException("未找到对应耳号的羊只信息"); - } - scDryMilk.setSheepId(String.valueOf(sheepId)); - } - - // 设置更新时间 - scDryMilk.setUpdateTime(DateUtils.getNowDate()); - // 如果有获取当前用户的方法,可以设置更新人 - // scDryMilk.setUpdateBy(SecurityUtils.getUsername()); - return scDryMilkMapper.updateScDryMilk(scDryMilk); } /** * 批量删除干奶记录 - * - * @param ids 需要删除的干奶记录主键 + * * @param ids 需要删除的干奶记录主键 * @return 结果 */ @Override public int deleteScDryMilkByIds(Long[] ids) { - return scDryMilkMapper.deleteScDryMilkByIds(ids); + // 假设ids是Long数组,需要转为String[]传给Mapper,或者修改Mapper接收Long[] + // 这里根据Mapper XML通常接收String[]或Array的习惯,做个转换 + String[] stringIds = new String[ids.length]; + for(int i=0;i selectSheepEarNumberList(String query) { + return scDryMilkMapper.selectSheepEarNumberList(query); + } } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScSheepDeathServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScSheepDeathServiceImpl.java index 029db5a..9cfd039 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScSheepDeathServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScSheepDeathServiceImpl.java @@ -3,6 +3,7 @@ package com.zhyc.module.produce.breed.service.impl; import java.util.List; import java.util.Map; import com.zhyc.common.utils.DateUtils; +import com.zhyc.common.utils.bean.BeanUtils; import com.zhyc.module.biosafety.domain.Diagnosis; import com.zhyc.module.biosafety.domain.Treatment; import com.zhyc.module.biosafety.mapper.DiagnosisMapper; @@ -31,134 +32,77 @@ public class ScSheepDeathServiceImpl implements IScSheepDeathService @Autowired private TreatmentServiceImpl treatmentService; - - - - /** - * 查询羊只死淘记录 - * - * @param id 羊只死淘记录主键 - * @return 羊只死淘记录 - */ @Override public ScSheepDeath selectScSheepDeathById(Long id) { - ScSheepDeath scSheepDeath = scSheepDeathMapper.selectScSheepDeathById(id); - // 查询时也需要填充显示字段 - if (scSheepDeath != null && scSheepDeath.getManageTags() != null) { - Map sheepInfo = selectSheepFileByManageTags(scSheepDeath.getManageTags()); - if (sheepInfo != null) { - scSheepDeath.setVariety(sheepInfo.get("variety") != null ? sheepInfo.get("variety").toString() : null); - scSheepDeath.setSheepType(sheepInfo.get("sheepType") != null ? sheepInfo.get("sheepType").toString() : null); - scSheepDeath.setGender(sheepInfo.get("gender") != null ? Integer.valueOf(sheepInfo.get("gender").toString()) : null); - scSheepDeath.setDayAge(sheepInfo.get("dayAge") != null ? Long.valueOf(sheepInfo.get("dayAge").toString()) : null); - scSheepDeath.setParity(sheepInfo.get("parity") != null ? Integer.valueOf(sheepInfo.get("parity").toString()) : null); - scSheepDeath.setSheepfoldName(sheepInfo.get("sheepfoldName") != null ? sheepInfo.get("sheepfoldName").toString() : null); - scSheepDeath.setBreedStatus(sheepInfo.get("breedStatus") != null ? sheepInfo.get("breedStatus").toString() : null); - scSheepDeath.setPostLambingDay(sheepInfo.get("postLambingDay") != null ? Integer.valueOf(sheepInfo.get("postLambingDay").toString()) : null); - scSheepDeath.setLactationDay(sheepInfo.get("lactationDay") != null ? Integer.valueOf(sheepInfo.get("lactationDay").toString()) : null); - scSheepDeath.setGestationDay(sheepInfo.get("gestationDay") != null ? Integer.valueOf(sheepInfo.get("gestationDay").toString()) : null); - } - } - return scSheepDeath; + return scSheepDeathMapper.selectScSheepDeathById(id); } - /** - * 查询羊只死淘记录列表 - * - * @param scSheepDeath 羊只死淘记录 - * @return 羊只死淘记录 - */ @Override public List selectScSheepDeathList(ScSheepDeath scSheepDeath) { - List list = scSheepDeathMapper.selectScSheepDeathList(scSheepDeath); - // 为列表中的每条记录填充显示字段 - for (ScSheepDeath death : list) { - if (death.getManageTags() != null) { - Map sheepInfo = selectSheepFileByManageTags(death.getManageTags()); - if (sheepInfo != null) { - death.setVariety(sheepInfo.get("variety") != null ? sheepInfo.get("variety").toString() : null); - death.setSheepType(sheepInfo.get("sheepType") != null ? sheepInfo.get("sheepType").toString() : null); - death.setGender(sheepInfo.get("gender") != null ? Integer.valueOf(sheepInfo.get("gender").toString()) : null); - death.setDayAge(sheepInfo.get("dayAge") != null ? Long.valueOf(sheepInfo.get("dayAge").toString()) : null); - death.setParity(sheepInfo.get("parity") != null ? Integer.valueOf(sheepInfo.get("parity").toString()) : null); - death.setSheepfoldName(sheepInfo.get("sheepfoldName") != null ? sheepInfo.get("sheepfoldName").toString() : null); - death.setBreedStatus(sheepInfo.get("breedStatus") != null ? sheepInfo.get("breedStatus").toString() : null); - death.setPostLambingDay(sheepInfo.get("postLambingDay") != null ? Integer.valueOf(sheepInfo.get("postLambingDay").toString()) : null); - death.setLactationDay(sheepInfo.get("lactationDay") != null ? Integer.valueOf(sheepInfo.get("lactationDay").toString()) : null); - death.setGestationDay(sheepInfo.get("gestationDay") != null ? Integer.valueOf(sheepInfo.get("gestationDay").toString()) : null); - } - } - } - return list; + return scSheepDeathMapper.selectScSheepDeathList(scSheepDeath); } - /** - * 根据管理耳号查询sheep_file视图信息 - * - * @param manageTags 管理耳号 - * @return 羊只信息 - */ @Override public Map selectSheepFileByManageTags(String manageTags) { return scSheepDeathMapper.selectSheepFileByManageTags(manageTags); } - /** - * 新增羊只死淘记录 - * - * @param scSheepDeath 羊只死淘记录 - * @return 结果 - */ @Override @Transactional public int insertScSheepDeath(ScSheepDeath scSheepDeath) { - // 设置事件类型默认为"死亡" - if (scSheepDeath.getEventType() == null || scSheepDeath.getEventType().isEmpty()) { - scSheepDeath.setEventType("死亡"); + String manageTagsInput = scSheepDeath.getManageTags(); + if (manageTagsInput == null || manageTagsInput.trim().isEmpty()) { + return 0; } - // 如果有管理耳号,查询并设置羊只ID - if (scSheepDeath.getManageTags() != null && !scSheepDeath.getManageTags().isEmpty()) { - Map sheepInfo = selectSheepFileByManageTags(scSheepDeath.getManageTags()); + // 支持空格、逗号分隔 + String[] tags = manageTagsInput.split("[\\s,,]+"); + int successCount = 0; + + for (String tag : tags) { + if (tag == null || tag.trim().isEmpty()) { + continue; + } + + ScSheepDeath newRecord = new ScSheepDeath(); + BeanUtils.copyProperties(scSheepDeath, newRecord); + newRecord.setManageTags(tag.trim()); + newRecord.setId(null); + + if (newRecord.getEventType() == null || newRecord.getEventType().isEmpty()) { + newRecord.setEventType("死亡"); + } + + Map sheepInfo = selectSheepFileByManageTags(newRecord.getManageTags()); if (sheepInfo != null) { Long sheepId = sheepInfo.get("sheepId") != null ? Long.valueOf(sheepInfo.get("sheepId").toString()) : null; - scSheepDeath.setSheepId(sheepId); + newRecord.setSheepId(sheepId); - // 插入死淘记录后,同时更新羊只在群状态为"不在群"(状态ID为2) if (sheepId != null) { scSheepDeathMapper.updateSheepStatus(sheepId, "2"); + treatmentService.updateTreatmentStatus(sheepId); } } + + newRecord.setCreateTime(DateUtils.getNowDate()); + successCount += scSheepDeathMapper.insertScSheepDeath(newRecord); } - - treatmentService.updateTreatmentStatus(scSheepDeath.getSheepId()); - - scSheepDeath.setCreateTime(DateUtils.getNowDate()); - - return scSheepDeathMapper.insertScSheepDeath(scSheepDeath); + return successCount; } - /** - * 修改羊只死淘记录 - * - * @param scSheepDeath 羊只死淘记录 - * @return 结果 - */ @Override public int updateScSheepDeath(ScSheepDeath scSheepDeath) { - // 如果管理耳号发生变化,重新查询并设置羊只ID if (scSheepDeath.getManageTags() != null && !scSheepDeath.getManageTags().isEmpty()) { Map sheepInfo = selectSheepFileByManageTags(scSheepDeath.getManageTags()); if (sheepInfo != null) { Long sheepId = sheepInfo.get("sheepId") != null ? Long.valueOf(sheepInfo.get("sheepId").toString()) : null; scSheepDeath.setSheepId(sheepId); - // 修改死淘记录时,同时更新羊只在群状态为"不在群"(状态ID为2) if (sheepId != null) { scSheepDeathMapper.updateSheepStatus(sheepId, "2"); } @@ -168,43 +112,41 @@ public class ScSheepDeathServiceImpl implements IScSheepDeathService return scSheepDeathMapper.updateScSheepDeath(scSheepDeath); } - /** - * 批量删除羊只死淘记录 - * - * @param ids 需要删除的羊只死淘记录主键 - * @return 结果 - */ @Override public int deleteScSheepDeathByIds(Long[] ids) { - // 删除死淘记录前,将对应羊只在群状态改回"在群" for (Long id : ids) { ScSheepDeath scSheepDeath = scSheepDeathMapper.selectScSheepDeathById(id); if (scSheepDeath != null && scSheepDeath.getSheepId() != null) { - // 恢复羊只在群状态为"在群"(状态ID为1) scSheepDeathMapper.updateSheepStatus(scSheepDeath.getSheepId(), "1"); } } - return scSheepDeathMapper.deleteScSheepDeathByIds(ids); } - /** - * 删除羊只死淘记录信息 - * - * @param id 羊只死淘记录主键 - * @return 结果 - */ @Override public int deleteScSheepDeathById(Long id) { - // 删除死淘记录前,将对应羊只在群状态改回"在群" ScSheepDeath scSheepDeath = scSheepDeathMapper.selectScSheepDeathById(id); if (scSheepDeath != null && scSheepDeath.getSheepId() != null) { - // 恢复羊只在群状态为"在群"(状态ID为1) scSheepDeathMapper.updateSheepStatus(scSheepDeath.getSheepId(), "1"); } - return scSheepDeathMapper.deleteScSheepDeathById(id); } + + // --- 远程搜索实现 --- + @Override + public List selectDistinctManageTags(String query) { + return scSheepDeathMapper.selectDistinctManageTags(query); + } + + @Override + public List selectDistinctTechnician(String query) { + return scSheepDeathMapper.selectDistinctTechnician(query); + } + + @Override + public List selectDistinctHandler(String query) { + return scSheepDeathMapper.selectDistinctHandler(query); + } } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScWeanRecordServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScWeanRecordServiceImpl.java index 9efcaff..cb3e6ee 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScWeanRecordServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScWeanRecordServiceImpl.java @@ -2,133 +2,123 @@ package com.zhyc.module.produce.breed.service.impl; import java.util.List; import com.zhyc.common.utils.DateUtils; -import com.zhyc.module.produce.breed.domain.ScWeanRecord; -import com.zhyc.module.produce.breed.mapper.ScWeanRecordMapper; -import com.zhyc.module.produce.breed.service.IScWeanRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import com.zhyc.module.produce.breed.mapper.ScWeanRecordMapper; +import com.zhyc.module.produce.breed.domain.ScWeanRecord; +import com.zhyc.module.produce.breed.service.IScWeanRecordService; import org.springframework.transaction.annotation.Transactional; /** * 断奶记录Service业务层处理 - * - * @author ruoyi - * @date 2025-07-13 + * * @author zhyc + * @date 2024-01-01 */ @Service -public class ScWeanRecordServiceImpl implements IScWeanRecordService { +public class ScWeanRecordServiceImpl implements IScWeanRecordService +{ @Autowired private ScWeanRecordMapper scWeanRecordMapper; /** * 查询断奶记录 - * - * @param id 断奶记录主键 + * * @param id 断奶记录主键 * @return 断奶记录 */ @Override - public ScWeanRecord selectScWeanRecordById(Long id) { + public ScWeanRecord selectScWeanRecordById(Long id) + { return scWeanRecordMapper.selectScWeanRecordById(id); } /** * 查询断奶记录列表 - * - * @param scWeanRecord 断奶记录 + * * @param scWeanRecord 断奶记录 * @return 断奶记录 */ @Override - public List selectScWeanRecordList(ScWeanRecord scWeanRecord) { + public List selectScWeanRecordList(ScWeanRecord scWeanRecord) + { return scWeanRecordMapper.selectScWeanRecordList(scWeanRecord); } /** * 新增断奶记录 - * - * @param scWeanRecord 断奶记录 + * * @param scWeanRecord 断奶记录 * @return 结果 */ @Override @Transactional - public int insertScWeanRecord(ScWeanRecord scWeanRecord) { - // 如果前端传递的是耳号,需要先获取羊只ID - if (scWeanRecord.getEarNumber() != null && scWeanRecord.getSheepId() == null) { - Long sheepId = scWeanRecordMapper.selectSheepIdByEarNumber(scWeanRecord.getEarNumber()); - if (sheepId != null) { - scWeanRecord.setSheepId(sheepId); - } - } + public int insertScWeanRecord(ScWeanRecord scWeanRecord) + { scWeanRecord.setCreateTime(DateUtils.getNowDate()); + // 1. 插入断奶记录 + int rows = scWeanRecordMapper.insertScWeanRecord(scWeanRecord); - // 插入断奶记录 - int result = scWeanRecordMapper.insertScWeanRecord(scWeanRecord); - - // 同步更新bas_sheep表中的断奶信息 - if (result > 0 && scWeanRecord.getEarNumber() != null) { + // 2. 同步更新羊只档案中的断奶状态(断奶日期、断奶重、电子耳号等) + // 确保 scWeanRecord 中包含 earNumber (Controller中add方法校验过) + if (rows > 0 && scWeanRecord.getEarNumber() != null) { scWeanRecordMapper.updateBasSheepWeaningInfo(scWeanRecord); } - - return result; + return rows; } /** * 修改断奶记录 - * - * @param scWeanRecord 断奶记录 + * * @param scWeanRecord 断奶记录 * @return 结果 */ @Override @Transactional - public int updateScWeanRecord(ScWeanRecord scWeanRecord) { - // 如果前端传递的是耳号,需要先获取羊只ID - if (scWeanRecord.getEarNumber() != null && scWeanRecord.getSheepId() == null) { - Long sheepId = scWeanRecordMapper.selectSheepIdByEarNumber(scWeanRecord.getEarNumber()); - if (sheepId != null) { - scWeanRecord.setSheepId(sheepId); - } - } + public int updateScWeanRecord(ScWeanRecord scWeanRecord) + { + // 1. 更新断奶记录 + int rows = scWeanRecordMapper.updateScWeanRecord(scWeanRecord); - // 更新断奶记录 - int result = scWeanRecordMapper.updateScWeanRecord(scWeanRecord); - - // 同步更新bas_sheep表中的断奶信息 - if (result > 0 && scWeanRecord.getEarNumber() != null) { + // 2. 同步更新羊只档案信息 + if (rows > 0 && scWeanRecord.getEarNumber() != null) { scWeanRecordMapper.updateBasSheepWeaningInfo(scWeanRecord); } - - return result; + return rows; } /** * 批量删除断奶记录 - * - * @param ids 需要删除的断奶记录主键 + * * @param ids 需要删除的断奶记录主键 * @return 结果 */ @Override - public int deleteScWeanRecordByIds(Long[] ids) { + public int deleteScWeanRecordByIds(Long[] ids) + { return scWeanRecordMapper.deleteScWeanRecordByIds(ids); } /** * 删除断奶记录信息 - * - * @param id 断奶记录主键 + * * @param id 断奶记录主键 * @return 结果 */ @Override - public int deleteScWeanRecordById(Long id) { + public int deleteScWeanRecordById(Long id) + { return scWeanRecordMapper.deleteScWeanRecordById(id); } /** * 根据耳号查询羊只ID - * - * @param earNumber 耳号 - * @return 羊只ID */ @Override public Long selectSheepIdByEarNumber(String earNumber) { return scWeanRecordMapper.selectSheepIdByEarNumber(earNumber); } + + /** + * 【新增】模糊查询耳号列表 (用于前端远程搜索) + * @param query 查询关键字 + * @return 耳号列表 + */ + @Override + public List searchEarNumbers(String query) { + return scWeanRecordMapper.searchEarNumbers(query); + } } \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/breed/ScDryMilkMapper.xml b/zhyc-module/src/main/resources/mapper/produce/breed/ScDryMilkMapper.xml index 2304ba9..940aa96 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScDryMilkMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScDryMilkMapper.xml @@ -14,7 +14,6 @@ - @@ -33,17 +32,36 @@ + + - diff --git a/zhyc-module/src/main/resources/mapper/produce/breed/ScSheepDeathMapper.xml b/zhyc-module/src/main/resources/mapper/produce/breed/ScSheepDeathMapper.xml index 8585ad1..f64dd6f 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScSheepDeathMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScSheepDeathMapper.xml @@ -22,37 +22,121 @@ + + + + + + + + + + + - select id, sheep_id, manage_tags, event_type, death_date, disease_type_id, disease_subtype_id, disposal_direction, technician, handler, work_group, create_by, create_time, comment, update_by, update_time, is_delete from sc_sheep_death + 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 + from sc_sheep_death d + left join sheep_file s on d.manage_tags = s.bs_manage_tags + + + + + + - and wr.sheep_id = #{sheepId} - and sf.bs_manage_tags like concat('%', #{earNumber}, '%') - and wr.datetime = #{datetime} + + + AND sf.bs_manage_tags IN + + #{ear} + + + + and sf.bs_manage_tags like concat('%', #{earNumber}, '%') + + + + AND date_format(wr.datetime,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + + + AND date_format(wr.datetime,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + + + + AND sf.status = #{isInHerd} + + + + AND sf.breed = #{sheepCategory} + + and wr.weight = #{weight} and wr.status = #{status} and wr.technician like concat('%', #{technician}, '%') @@ -59,23 +81,27 @@ and sf.father_manage_tags like concat('%', #{fatherNumber}, '%') and sf.mother_manage_tags like concat('%', #{motherNumber}, '%') and sf.sheepfold_name like concat('%', #{sheepPen}, '%') - and sf.breed = #{breedingStatus} order by wr.create_time desc - + + - - insert into sc_wean_record @@ -102,7 +128,6 @@ - update sc_wean_record @@ -119,23 +144,10 @@ where id = #{id} - - - update bas_sheep - - weaning_date = #{datetime}, - weaning_weight = #{weight}, - electronic_tags = #{electronicTags}, - - where manage_tags = #{earNumber} - - - delete from sc_wean_record where id = #{id} - delete from sc_wean_record where id in