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/controller/SheepFileController.java b/zhyc-module/src/main/java/com/zhyc/module/base/controller/SheepFileController.java index 6391bc2..24a0880 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/controller/SheepFileController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/controller/SheepFileController.java @@ -10,23 +10,18 @@ import com.zhyc.common.enums.BusinessType; import com.zhyc.common.utils.poi.ExcelUtil; import com.zhyc.module.base.domain.SheepFile; import com.zhyc.module.base.service.ISheepFileService; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang3.StringUtils; -import javax.servlet.http.HttpServletRequest; +import java.util.*; /** * 羊只档案Controller - * - * @author wyt + * * @author wyt * @date 2025-07-13 */ @RestController @@ -52,7 +47,7 @@ public class SheepFileController extends BaseController Integer pageSize = 10; if (queryParams != null && !queryParams.isEmpty()) { - // 提取分页参数 + // ------------------ 1. 处理分页参数 ------------------ if (queryParams.containsKey("pageNum") && queryParams.get("pageNum") != null) { try { pageNum = Integer.parseInt(queryParams.get("pageNum").toString()); @@ -60,7 +55,6 @@ public class SheepFileController extends BaseController // 使用默认值 } } else if (queryParams.containsKey("page") && queryParams.get("page") != null) { - // 如果 pageNum 不存在,则尝试使用 page try { pageNum = Integer.parseInt(queryParams.get("page").toString()); } catch (NumberFormatException e) { @@ -68,15 +62,13 @@ public class SheepFileController extends BaseController } } - if (queryParams.containsKey("pageSize") && queryParams.get("pageSize") != null) { try { pageSize = Integer.parseInt(queryParams.get("pageSize").toString()); } catch (NumberFormatException e) { // 使用默认值 } - }else if (queryParams.containsKey("limit") && queryParams.get("limit") != null) { - // 如果 pageSize 不存在,则尝试使用 limit + } else if (queryParams.containsKey("limit") && queryParams.get("limit") != null) { try { pageSize = Integer.parseInt(queryParams.get("limit").toString()); } catch (NumberFormatException e) { @@ -84,7 +76,25 @@ public class SheepFileController extends BaseController } } - // 提取常规查询参数到 SheepFile 对象 + // ------------------ 2. 核心修复:处理 List 多选参数 ------------------ + // 使用 parseList 方法兼容处理 List、Array、逗号分隔字符串 + sheepFile.setAllEarNumbers(parseList(queryParams.get("allEarNumbers"))); + sheepFile.setAllEleEarNumbers(parseList(queryParams.get("allEleEarNumbers"))); + sheepFile.setAllBreedingStatus(parseList(queryParams.get("allBreedingStatus"))); + sheepFile.setAllSheepTypes(parseList(queryParams.get("allSheepTypes"))); + + // 性别处理 (需要将 String/Integer 转为 Long) + List genderStrs = parseList(queryParams.get("allGenders")); + if (genderStrs != null && !genderStrs.isEmpty()) { + List genderLongs = new ArrayList<>(); + for (String s : genderStrs) { + Long v = convertToLong(s); + if(v != null) genderLongs.add(v); + } + sheepFile.setAllGenders(genderLongs); + } + + // ------------------ 3. 处理常规单值参数 ------------------ if (queryParams.containsKey("bsManageTags") && queryParams.get("bsManageTags") != null) { sheepFile.setBsManageTags(queryParams.get("bsManageTags").toString()); } @@ -110,23 +120,17 @@ public class SheepFileController extends BaseController sheepFile.setBreed(queryParams.get("breed").toString()); } - // 移除已经处理的参数,剩下的作为自定义筛选参数 + // ------------------ 4. 提取自定义参数 (排除已处理的键) ------------------ + // 定义需要跳过的key,防止重复处理 + Set processedKeys = new HashSet<>(Arrays.asList( + "pageNum", "pageSize", "page", "limit", + "bsManageTags", "electronicTags", "drRanch", "variety", "name", "gender", "statusId", "breed", + "allEarNumbers", "allEleEarNumbers", "allGenders", "allBreedingStatus", "allSheepTypes" + )); + for (Map.Entry entry : queryParams.entrySet()) { - String key = entry.getKey(); - Object value = entry.getValue(); - - // 跳过常规参数和分页参数 - if ("bsManageTags".equals(key) || "electronicTags".equals(key) || - "drRanch".equals(key) || "variety".equals(key) || - "name".equals(key) || "gender".equals(key) || - "statusId".equals(key) || "breed".equals(key) || - "pageNum".equals(key) || "pageSize".equals(key)) { - continue; - } - - // 添加到自定义参数中 - if (value != null) { - customParams.put(key, value); + if (!processedKeys.contains(entry.getKey()) && entry.getValue() != null) { + customParams.put(entry.getKey(), entry.getValue()); } } } @@ -139,6 +143,41 @@ public class SheepFileController extends BaseController return getDataTable(list); } + + /** + * 辅助方法:统一解析各种格式的数组参数 + * 支持:List, String[] (数组), Object[] (数组), "A,B" (逗号分隔字符串) + */ + private List parseList(Object obj) { + if (obj == null) return null; + List result = new ArrayList<>(); + + if (obj instanceof List) { + // JSON 传来的通常是 List + for (Object o : (List) obj) { + if (o != null) result.add(o.toString()); + } + } else if (obj.getClass().isArray()) { + // 如果是数组 + if (obj instanceof Object[]) { + for (Object o : (Object[]) obj) { + if (o != null) result.add(o.toString()); + } + } else if (obj instanceof String[]) { + Collections.addAll(result, (String[]) obj); + } + } else if (obj instanceof String) { + // 如果是逗号分隔字符串 + String s = (String) obj; + if (StringUtils.isNotBlank(s)) { + String[] split = s.split(","); + Collections.addAll(result, split); + } + } + + return result.isEmpty() ? null : result; + } + /** * 转换对象为Long类型 */ @@ -186,6 +225,7 @@ public class SheepFileController extends BaseController // 使用若依框架的工具方法处理参数 switch (key) { + // --- 单值参数 --- case "bsManageTags": sheepFile.setBsManageTags(convertToString(value)); break; @@ -210,6 +250,30 @@ public class SheepFileController extends BaseController case "breed": sheepFile.setBreed(convertToString(value)); break; + + // --- 新增:处理多选数组参数 --- + // request.getParameterMap 中的值本身就是 String[],可以直接使用 + case "allEarNumbers": + sheepFile.setAllEarNumbers(new ArrayList<>(Arrays.asList(values))); + break; + case "allEleEarNumbers": + sheepFile.setAllEleEarNumbers(new ArrayList<>(Arrays.asList(values))); + break; + case "allBreedingStatus": + sheepFile.setAllBreedingStatus(new ArrayList<>(Arrays.asList(values))); + break; + case "allSheepTypes": + sheepFile.setAllSheepTypes(new ArrayList<>(Arrays.asList(values))); + break; + case "allGenders": + List genderList = new ArrayList<>(); + for(String v : values){ + Long l = Convert.toLong(v); + if(l != null) genderList.add(l); + } + sheepFile.setAllGenders(genderList); + break; + case "pageNum": case "pageSize": // 忽略分页参数 @@ -230,6 +294,14 @@ public class SheepFileController extends BaseController util.exportExcel(response, list, "羊只档案数据"); } + /** + * 新增:模糊搜索耳号接口 (用于前端下拉框远程搜索) + */ + @GetMapping("/searchEarNumbers") + public AjaxResult searchEarNumbers(@RequestParam("query") String query) + { + return success(sheepFileService.searchEarNumbers(query)); + } /** * 字符串转换工具方法 @@ -252,15 +324,14 @@ public class SheepFileController extends BaseController } /* - * 根据耳号查询是否存在羊舍 - * */ + * 根据耳号查询是否存在羊舍 + * */ @GetMapping("/byNo/{manageTags}") public AjaxResult byManageTags(@PathVariable String manageTags){ SheepFile sheep=sheepFileService.selectBasSheepByManageTags(manageTags.trim()); return success(sheep); } - @GetMapping("/stat/sheepType") public AjaxResult statSheepType() { return success(sheepFileService.countBySheepType()); @@ -289,43 +360,18 @@ public class SheepFileController extends BaseController /** * 新增API:获取字段的唯一值列表 - * - * 这个API为前端自定义筛选功能提供数据支持 - * 当用户选择某个字段进行筛选时,前端调用此接口获取该字段的所有可能值 - * - * @param fieldName 字段名(数据库列名) - * @return AjaxResult 包含字段值列表的响应结果 - * - * 接口地址:GET /sheep_file/sheep_file/field/{fieldName} - * - * 使用示例: - * 前端请求:GET /sheep_file/sheep_file/field/bs_manage_tags - * 后端返回:{ "code": 200, "msg": "操作成功", "data": ["AF00001", "AF00002", "AF00003"] } - * - * 安全说明: - * - 使用白名单机制防止SQL注入 - * - 只有预定义的字段名可以被查询 */ @GetMapping("/field/{fieldName}") public AjaxResult getFieldValues(@PathVariable String fieldName) { try { // 调用Service层获取字段唯一值 List fieldValues = sheepFileService.getFieldValues(fieldName); - - // 返回成功响应,包含字段值列表 return AjaxResult.success("获取字段值成功", fieldValues); - } catch (IllegalArgumentException e) { - // 处理字段名不合法的异常 - // 这种情况通常是因为前端传入了不在白名单中的字段名 return AjaxResult.error("请求的字段名不合法: " + e.getMessage()); - } catch (Exception e) { - // 处理其他未知异常 - // 记录日志并返回友好的错误信息 logger.error("获取字段值失败,字段名: " + fieldName, e); return AjaxResult.error("系统错误,获取字段值失败"); } } - -} +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/domain/SheepFile.java b/zhyc-module/src/main/java/com/zhyc/module/base/domain/SheepFile.java index 4dc4784..9966094 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/domain/SheepFile.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/domain/SheepFile.java @@ -8,11 +8,11 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; +import java.util.List; /** * 羊只档案对象 sheep_file - * - * @author wyt + * * @author wyt * @date 2025-07-13 */ @Data @@ -29,6 +29,10 @@ public class SheepFile extends BaseEntity @Excel(name = "管理耳号") private String bsManageTags; + /** ================= 新增:多选查询字段 ================= */ + /** 耳号集合(多选/模糊查询用) */ + private List allEarNumbers; + /** 牧场id */ // @Excel(name = "牧场id") private Long ranchId; @@ -49,6 +53,10 @@ public class SheepFile extends BaseEntity @Excel(name = "电子耳号") private String electronicTags; + /** ================= 新增:多选查询字段 ================= */ + /** 电子耳号集合(多选查询用) */ + private List allEleEarNumbers; + /** 品种id */ // @Excel(name = "品种id") private Long varietyId; @@ -65,14 +73,22 @@ public class SheepFile extends BaseEntity @Excel(name = "羊只类型") private String name; + /** ================= 新增:多选查询字段 ================= */ + /** 羊只类型集合(多选查询用) */ + private List allSheepTypes; + // /** 性别 */ //// @Excel(name = "性别") // private Long gender; /** 性别 - 使用字典转换 */ - @Excel(name = "性别", dictType = "sheep_gender") // 添加 dictType + @Excel(name = "性别", dictType = "sheep_gender") private Long gender; + /** ================= 新增:多选查询字段 ================= */ + /** 性别集合(多选查询用) */ + private List allGenders; + /** 出生日期 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "出生日期", width = 30, dateFormat = "yyyy-MM-dd") @@ -103,7 +119,6 @@ public class SheepFile extends BaseEntity @Excel(name = "羊只状态", dictType = "sheep_status") private Long statusId; - /** 断奶体重 */ @Excel(name = "断奶体重") private Double weaningWeight; @@ -129,6 +144,10 @@ public class SheepFile extends BaseEntity @Excel(name = "繁殖状态") private String breed; + /** ================= 新增:多选查询字段 ================= */ + /** 繁殖状态集合(多选查询用) */ + private List allBreedingStatus; + /** 父号id */ // @Excel(name = "父号id") private Long bsFatherId; @@ -300,6 +319,4 @@ public class SheepFile extends BaseEntity @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd") private Date createTime; - - -} +} \ No newline at end of file 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/mapper/SheepFileMapper.java b/zhyc-module/src/main/java/com/zhyc/module/base/mapper/SheepFileMapper.java index ad8821e..909955d 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/mapper/SheepFileMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/mapper/SheepFileMapper.java @@ -27,13 +27,19 @@ public interface SheepFileMapper public SheepFile selectSheepFileById(Long id); /** - * 查询羊只档案列表 + * 查询羊只档案列表 (基础查询) * * @param sheepFile 羊只档案 * @return 羊只档案集合 */ public List selectSheepFileList(SheepFile sheepFile); + /** + * 新增:模糊查询耳号列表(用于下拉框远程搜索) + * @param query 搜索关键字 + * @return 匹配的耳号列表 + */ + List searchEarNumbers(@Param("query") String query); /** * 根据管理耳号查询 @@ -43,11 +49,9 @@ public interface SheepFileMapper */ SheepFile selectSheepByManageTags(String tags); - // 在群羊只总数 Long countInGroup(); - // 羊只类别分布(按 name 分组) List> countBySheepType(); @@ -60,52 +64,34 @@ public interface SheepFileMapper // 泌乳羊胎次分布(name = '泌乳羊' 时按 parity 分组) List> countParityOfLactation(); - /** - * 新增方法:获取指定字段的唯一值列表 - * - * 这个方法用于查询数据库中某个字段的所有不重复的值 - * 主要用于前端筛选条件中的下拉选项数据 - * - * @param fieldName 字段名(数据库表中的列名) - * @return 该字段的所有唯一值列表,按字母顺序排序 - * - * 使用场景示例: - * - 用户选择"耳号"字段时,返回所有不重复的耳号 - * - 用户选择"品种"字段时,返回所有不重复的品种名称 + * 获取指定字段的唯一值列表 (配合 XML 中的 selectFieldValues) */ - List selectFieldValues(String fieldName); + List selectFieldValues(@Param("fieldName") String fieldName); /** - * 根据复杂条件查询羊只档案列表 - * - * @param params 查询参数映射 - * @param sheepFile 原有的查询条件(保持兼容) - * @return 羊只档案列表 + * 核心修复:根据复杂条件查询羊只档案列表 + * 对应 XML 中的 对应的方法 + return sheepFileMapper.selectSheepFileListByCondition(safeConditions, sheepFile); } @Override + @Transactional public int insertSheepFile(SheepFile sheepFile) { + // int rows = sheepFileMapper.insertSheepFile(sheepFile); + // if (rows > 0) { syncToBreedRamFile(sheepFile); } + // return rows; return 0; } @Override + @Transactional public int updateSheepFile(SheepFile sheepFile) { + // int rows = sheepFileMapper.updateSheepFile(sheepFile); + // if (rows > 0) { syncToBreedRamFile(sheepFile); } + // return rows; return 0; } @@ -126,12 +142,13 @@ public class SheepFileServiceImpl implements ISheepFileService { String fieldName = entry.getKey(); Object value = entry.getValue(); - // 将前端字段名转换为数据库字段名 + // 将前端字段名转换为数据库字段名 (例如: fatherManageTags -> father_manage_tags) + // 这对于 XML 中的 ${key} = #{value} 至关重要 String dbFieldName = convertToDbFieldName(fieldName); // 验证字段名是否安全 if (isValidFieldName(dbFieldName)) { - // 处理值,确保不是 Character 类型 + // 处理值 Object safeValue = value; if (value != null) { String strValue = value.toString(); @@ -140,23 +157,17 @@ public class SheepFileServiceImpl implements ISheepFileService { if (strValue.startsWith("GT:") || strValue.startsWith("LT:") || strValue.startsWith("GE:") || strValue.startsWith("LE:")) { String numPart = strValue.substring(3); - // 验证数字部分是否安全(防止 SQL 注入) + // 验证数字部分是否安全 if (isNumeric(numPart)) { safeValue = strValue; } else { - // 如果不是数字,忽略这个条件 - System.out.println("警告:范围条件的值不是数字: " + fieldName + " = " + strValue); continue; } } else { - // 其他值直接使用字符串 safeValue = strValue; } } safeParams.put(dbFieldName, safeValue); - } else { - // 记录日志 - System.out.println("警告:忽略非法字段名: " + fieldName + " -> " + dbFieldName); } } @@ -191,61 +202,17 @@ public class SheepFileServiceImpl implements ISheepFileService { * 扩展字段名白名单验证 */ private boolean isValidFieldName(String fieldName) { - // 扩展允许查询的字段白名单 + // 字段白名单 String[] allowedFields = { - "id", - "bs_manage_tags", // 管理耳号 - "electronic_tags", // 电子耳号 - "dr_ranch", // 牧场名称 - "sheepfold_name", // 羊舍名称 - "variety", // 品种 - "family", // 家系 - "name", // 羊只类型 - "gender", // 性别 - "birthday", // 出生日期 - "day_age", // 日龄 - "month_age", // 月龄 - "parity", // 胎次 - "birth_weight", // 出生体重 - "weaning_date", // 断奶日期 - "status_id", // 羊只状态 - "weaning_weight", // 断奶体重 - "current_weight", // 当前体重 - "weaning_day_age", // 断奶日龄 - "weaning_daily_gain", // 断奶日增重 - "breed", // 繁殖状态 - "father_manage_tags", // 父亲耳号 - "mother_manage_tags", // 母亲耳号 - "receptor_manage_tags", // 受体耳号 - "grandfather_manage_tags", // 祖父耳号 - "grandmother_manage_tags", // 祖母耳号 - "maternal_grandfather_manage_tags", // 外祖父耳号 - "maternal_grandmother_manage_tags", // 外祖母耳号 - "mating_date", // 配种日期 - "mating_type_id", // 配种类型 - "preg_date", // 孕检日期 - "lambing_date", // 产羔日期 - "lambing_day", // 产羔时怀孕天数 - "mating_day", // 配后天数 - "gestation_day", // 怀孕天数 - "expected_date", // 预产日期 - "post_lambing_day", // 产后天数 - "lactation_day", // 泌乳天数 - "anestrous_day", // 空怀天数 - "mating_counts", // 配种次数 - "mating_total", // 累计配种次数 - "miscarriage_counts", // 累计流产次数 - "comment", // 备注 - "controlled", // 是否性控 - "body", // 体况评分 - "breast", // 乳房评分 - "source", // 入群来源 - "source_date", // 入群日期 - "source_ranch", // 来源牧场 - "update_by", // 修改人 - "update_time", // 修改日期 - "create_by", // 创建人 - "create_time" // 创建日期 + "id", "bs_manage_tags", "electronic_tags", "dr_ranch", "sheepfold_name", "variety", "family", + "name", "gender", "birthday", "day_age", "month_age", "parity", "birth_weight", "weaning_date", + "status_id", "weaning_weight", "current_weight", "weaning_day_age", "weaning_daily_gain", "breed", + "father_manage_tags", "mother_manage_tags", "receptor_manage_tags", "grandfather_manage_tags", + "grandmother_manage_tags", "maternal_grandfather_manage_tags", "maternal_grandmother_manage_tags", + "mating_date", "mating_type_id", "preg_date", "lambing_date", "lambing_day", "mating_day", + "gestation_day", "expected_date", "post_lambing_day", "lactation_day", "anestrous_day", + "mating_counts", "mating_total", "miscarriage_counts", "comment", "controlled", "body", "breast", + "source", "source_date", "source_ranch", "update_by", "update_time", "create_by", "create_time" }; for (String allowedField : allowedFields) { @@ -257,45 +224,32 @@ public class SheepFileServiceImpl implements ISheepFileService { return false; } - @Autowired - private IBreedRamFileService breedRamFileService; // 注入种公羊服务 - - /** - * 新增羊只档案 - */ /** * 同步公羊数据到种公羊档案表 */ private void syncToBreedRamFile(SheepFile sheepFile) { try { - // 检查是否已存在 BreedRamFile existingRam = breedRamFileService.selectBreedRamFileByOrdinaryEarNumber( sheepFile.getBsManageTags() ); if (existingRam != null) { - // 已存在,更新 BreedRamFile updateRam = convertToBreedRamFile(sheepFile); updateRam.setId(existingRam.getId()); breedRamFileService.updateBreedRamFile(updateRam); } else { - // 不存在,新增 BreedRamFile newRam = convertToBreedRamFile(sheepFile); breedRamFileService.insertBreedRamFile(newRam); } } catch (Exception e) { - // 记录日志,但不影响主流 + e.printStackTrace(); } } - /** - * 将SheepFile转换为BreedRamFile - */ private BreedRamFile convertToBreedRamFile(SheepFile sheepFile) { BreedRamFile breedRamFile = new BreedRamFile(); - // 基本信息 breedRamFile.setOrdinaryEarNumber(sheepFile.getBsManageTags()); breedRamFile.setRanchId(sheepFile.getRanchId()); breedRamFile.setRanchName(sheepFile.getDrRanch()); @@ -307,15 +261,13 @@ public class SheepFileServiceImpl implements ISheepFileService { breedRamFile.setSheepCategory(sheepFile.getName()); breedRamFile.setBirthday(sheepFile.getBirthday()); - // 体重相关 - breedRamFile.setBirthWeight(BigDecimal.valueOf(sheepFile.getBirthWeight())); + if (sheepFile.getBirthWeight() != null) breedRamFile.setBirthWeight(BigDecimal.valueOf(sheepFile.getBirthWeight())); breedRamFile.setWeaningDate(sheepFile.getWeaningDate()); breedRamFile.setWeaningDayAge(sheepFile.getWeaningDayAge()); - breedRamFile.setWeaningWeight(BigDecimal.valueOf(sheepFile.getWeaningWeight())); - breedRamFile.setWeaningDailyGain(BigDecimal.valueOf(sheepFile.getWeaningDailyGain())); - breedRamFile.setCurrentWeight(BigDecimal.valueOf(sheepFile.getCurrentWeight())); + if (sheepFile.getWeaningWeight() != null) breedRamFile.setWeaningWeight(BigDecimal.valueOf(sheepFile.getWeaningWeight())); + if (sheepFile.getWeaningDailyGain() != null) breedRamFile.setWeaningDailyGain(BigDecimal.valueOf(sheepFile.getWeaningDailyGain())); + if (sheepFile.getCurrentWeight() != null) breedRamFile.setCurrentWeight(BigDecimal.valueOf(sheepFile.getCurrentWeight())); - // 家系信息 breedRamFile.setFatherNumber(sheepFile.getFatherManageTags()); breedRamFile.setMotherNumber(sheepFile.getMotherManageTags()); breedRamFile.setGrandfatherNumber(sheepFile.getGrandfatherManageTags()); @@ -323,7 +275,6 @@ public class SheepFileServiceImpl implements ISheepFileService { breedRamFile.setMaternalGrandfatherNumber(sheepFile.getMaternalGrandfatherManageTags()); breedRamFile.setMaternalGrandmotherNumber(sheepFile.getMaternalGrandmotherManageTags()); - // 审计信息 breedRamFile.setCreateBy(sheepFile.getCreateBy()); breedRamFile.setCreateTime(sheepFile.getCreateTime()); breedRamFile.setUpdateBy(sheepFile.getUpdateBy()); @@ -332,5 +283,4 @@ public class SheepFileServiceImpl implements ISheepFileService { return breedRamFile; } - -} +} \ No newline at end of file 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/java/com/zhyc/module/dairyProducts/controller/NpFreshMilkInspController.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpFreshMilkInspController.java index 4c1aa3f..43202b1 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpFreshMilkInspController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpFreshMilkInspController.java @@ -23,8 +23,7 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 鲜奶生产,成品检验记录Controller - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-18 */ @RestController @@ -77,6 +76,11 @@ public class NpFreshMilkInspController extends BaseController @PostMapping public AjaxResult add(@RequestBody NpFreshMilkInsp npFreshMilkInsp) { + // === 修改开始:注入当前用户和部门ID === + npFreshMilkInsp.setUserId(getUserId()); + npFreshMilkInsp.setDeptId(getDeptId()); + // === 修改结束 === + return toAjax(npFreshMilkInspService.insertNpFreshMilkInsp(npFreshMilkInsp)); } @@ -96,9 +100,9 @@ public class NpFreshMilkInspController extends BaseController */ @PreAuthorize("@ss.hasPermi('freshMilkTest:freshMilkTest:remove')") @Log(title = "鲜奶生产,成品检验记录", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") + @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(npFreshMilkInspService.deleteNpFreshMilkInspByIds(ids)); } -} +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpMilkProdClassesController.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpMilkProdClassesController.java index 82c2c46..2c650e8 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpMilkProdClassesController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpMilkProdClassesController.java @@ -28,11 +28,10 @@ public class NpMilkProdClassesController extends BaseController { public TableDataInfo list( @RequestParam(required = false) Date datetimeStart, @RequestParam(required = false) Date datetimeEnd, - @RequestParam(required = false) List allEarNumbers, // 修改处:接收多耳号数组 + @RequestParam(required = false) List allEarNumbers, @RequestParam(required = false) String factory, @RequestParam(required = false) Integer classes) { startPage(); - // 修改处:将参数封装进实体,以便 Service 和 Mapper 统一处理 NpMilkProdClasses params = new NpMilkProdClasses(); params.setAllEarNumbers(allEarNumbers); params.setFactory(factory); @@ -43,9 +42,6 @@ public class NpMilkProdClassesController extends BaseController { return getDataTable(list); } - /** - * 修改处:新增耳号模糊查询接口 - */ @PreAuthorize("@ss.hasPermi('milkProdclasses:milkProdclasses:list')") @GetMapping("/search_ear_numbers") public AjaxResult searchEarNumbers(@RequestParam("query") String query) { @@ -64,6 +60,16 @@ public class NpMilkProdClassesController extends BaseController { try { ExcelUtil util = new ExcelUtil<>(NpMilkProdClasses.class); List list = util.importExcel(file.getInputStream()); + + // === 修改开始:循环注入当前用户和部门ID === + Long userId = getUserId(); + Long deptId = getDeptId(); + for (NpMilkProdClasses item : list) { + item.setUserId(userId); + item.setDeptId(deptId); + } + // === 修改结束 === + int rows = npMilkProdClassesService.importMilkProdClasses(list); return success("成功导入 " + rows + " 行数据"); } catch (Exception e) { @@ -77,7 +83,7 @@ public class NpMilkProdClassesController extends BaseController { public void export(HttpServletResponse response, @RequestParam(required = false) Date datetimeStart, @RequestParam(required = false) Date datetimeEnd, - @RequestParam(required = false) List allEarNumbers, // 修改处:接收多耳号 + @RequestParam(required = false) List allEarNumbers, @RequestParam(required = false) String factory, @RequestParam(required = false) Integer classes) { diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpRawMilkInspeController.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpRawMilkInspeController.java index bf88fcd..cfd8983 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpRawMilkInspeController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpRawMilkInspeController.java @@ -24,8 +24,7 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 生乳检验记录Controller - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-15 */ @RestController @@ -78,6 +77,11 @@ public class NpRawMilkInspeController extends BaseController @PostMapping public AjaxResult add(@RequestBody NpRawMilkInspe npRawMilkInspe) { + // === 修改开始:注入当前用户和部门ID === + npRawMilkInspe.setUserId(getUserId()); + npRawMilkInspe.setDeptId(getDeptId()); + // === 修改结束 === + return toAjax(npRawMilkInspeService.insertNpRawMilkInspe(npRawMilkInspe)); } @@ -97,9 +101,9 @@ public class NpRawMilkInspeController extends BaseController */ @PreAuthorize("@ss.hasPermi('rawMilkTest:rawMilkTest:remove')") @Log(title = "生乳检验记录", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") + @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(npRawMilkInspeService.deleteNpRawMilkInspeByIds(ids)); } -} +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpYogurtInspController.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpYogurtInspController.java index fc7fda2..53301d7 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpYogurtInspController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpYogurtInspController.java @@ -24,8 +24,7 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 酸奶生产,成品检疫记录Controller - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-17 */ @RestController @@ -78,6 +77,11 @@ public class NpYogurtInspController extends BaseController @PostMapping public AjaxResult add(@RequestBody NpYogurtInsp npYogurtInsp) { + // === 修改开始:注入当前用户和部门ID === + npYogurtInsp.setUserId(getUserId()); + npYogurtInsp.setDeptId(getDeptId()); + // === 修改结束 === + return toAjax(npYogurtInspService.insertNpYogurtInsp(npYogurtInsp)); } @@ -97,9 +101,9 @@ public class NpYogurtInspController extends BaseController */ @PreAuthorize("@ss.hasPermi('yogurtTest:yogurtTest:remove')") @Log(title = "酸奶生产,成品检疫记录", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") + @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(npYogurtInspService.deleteNpYogurtInspByIds(ids)); } -} +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/XzDryMatterCorrectionController.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/XzDryMatterCorrectionController.java index bca0801..6f6aedc 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/XzDryMatterCorrectionController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/XzDryMatterCorrectionController.java @@ -23,8 +23,7 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 干物质校正Controller - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-12 */ @RestController @@ -77,6 +76,9 @@ public class XzDryMatterCorrectionController extends BaseController @PostMapping public AjaxResult add(@RequestBody XzDryMatterCorrection xzDryMatterCorrection) { + // 自动填充用户ID和部门ID + xzDryMatterCorrection.setUserId(getUserId()); + xzDryMatterCorrection.setDeptId(getDeptId()); return toAjax(xzDryMatterCorrectionService.insertXzDryMatterCorrection(xzDryMatterCorrection)); } @@ -96,9 +98,9 @@ public class XzDryMatterCorrectionController extends BaseController */ @PreAuthorize("@ss.hasPermi('dryMatterCorrection:dryMatterCorrection:remove')") @Log(title = "干物质校正", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") + @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(xzDryMatterCorrectionService.deleteXzDryMatterCorrectionByIds(ids)); } -} +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/XzWegihCorrectionController.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/XzWegihCorrectionController.java index ace94f9..a5d5198 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/XzWegihCorrectionController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/XzWegihCorrectionController.java @@ -24,8 +24,7 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 称重校正Controller - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-12 */ @RestController @@ -78,6 +77,9 @@ public class XzWegihCorrectionController extends BaseController @PostMapping public AjaxResult add(@RequestBody XzWegihCorrection xzWegihCorrection) { + // 自动填充用户ID和部门ID + xzWegihCorrection.setUserId(getUserId()); + xzWegihCorrection.setDeptId(getDeptId()); return toAjax(xzWegihCorrectionService.insertXzWegihCorrection(xzWegihCorrection)); } @@ -97,9 +99,9 @@ public class XzWegihCorrectionController extends BaseController */ @PreAuthorize("@ss.hasPermi('weightCorrection:weightCorrection:remove')") @Log(title = "称重校正", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") + @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(xzWegihCorrectionService.deleteXzWegihCorrectionByIds(ids)); } -} +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpFreshMilkInsp.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpFreshMilkInsp.java index d8631f1..e2554b4 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpFreshMilkInsp.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpFreshMilkInsp.java @@ -10,8 +10,7 @@ import com.zhyc.common.core.domain.BaseEntity; /** * 鲜奶生产,成品检验记录对象 np_fresh_milk_insp - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-18 */ @Data @@ -85,4 +84,12 @@ public class NpFreshMilkInsp extends BaseEntity @Excel(name = "备注") private String commnet; + /** 用户ID */ + @Excel(name = "用户编号", type = Excel.Type.IMPORT) + private Long userId; + + /** 部门ID */ + @Excel(name = "部门编号", type = Excel.Type.IMPORT) + private Long deptId; + } diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkInOutStore.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkInOutStore.java index 770ace1..5d3b552 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkInOutStore.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkInOutStore.java @@ -65,6 +65,14 @@ public class NpMilkInOutStore extends BaseEntity { @Excel(name = "爱特退回酸奶") private BigDecimal returnYogurt; + /** 用户ID */ + @Excel(name = "用户编号", type = Excel.Type.IMPORT) + private Long userId; + + /** 部门ID */ + @Excel(name = "部门编号", type = Excel.Type.IMPORT) + private Long deptId; + // --- getters and setters --- public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @@ -125,4 +133,10 @@ public class NpMilkInOutStore extends BaseEntity { public BigDecimal getReturnYogurt() { return returnYogurt; } public void setReturnYogurt(BigDecimal returnYogurt) { this.returnYogurt = returnYogurt; } + + public Long getUserId() { return userId; } + public void setUserId(Long userId) { this.userId = userId; } + + public Long getDeptId() { return deptId; } + public void setDeptId(Long deptId) { this.deptId = deptId; } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkProdClasses.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkProdClasses.java index c2df329..3970f1e 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkProdClasses.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkProdClasses.java @@ -2,7 +2,7 @@ package com.zhyc.module.dairyProducts.domain; import java.io.Serializable; import java.util.Date; -import java.util.List; // 引入 List +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import com.zhyc.common.annotation.Excel; @@ -40,11 +40,19 @@ public class NpMilkProdClasses implements Serializable { private String sheepId; - // 修改处:新增字段用于多耳号查询 /** 全部羊耳号列表(用于多耳号查询) */ private List allEarNumbers; - // Getters and Setters + /** 用户ID */ + @Excel(name = "用户编号", type = Excel.Type.IMPORT) + private Long userId; + + /** 部门ID */ + @Excel(name = "部门编号", type = Excel.Type.IMPORT) + private Long deptId; + + // --- Getters and Setters --- + public List getAllEarNumbers() { return allEarNumbers; } @@ -88,4 +96,10 @@ public class NpMilkProdClasses implements Serializable { public String getSheepId() { return sheepId; } public void setSheepId(String sheepId) { this.sheepId = sheepId; } + + public Long getUserId() { return userId; } + public void setUserId(Long userId) { this.userId = userId; } + + public Long getDeptId() { return deptId; } + public void setDeptId(Long deptId) { this.deptId = deptId; } } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpRawMilkInspe.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpRawMilkInspe.java index 23131dc..4670a3a 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpRawMilkInspe.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpRawMilkInspe.java @@ -451,4 +451,12 @@ public class NpRawMilkInspe extends BaseEntity @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; + /** 用户ID */ + @Excel(name = "用户编号", type = Excel.Type.IMPORT) + private Long userId; + + /** 部门ID */ + @Excel(name = "部门编号", type = Excel.Type.IMPORT) + private Long deptId; + } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpYogurtInsp.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpYogurtInsp.java index c7ddfc8..786ae90 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpYogurtInsp.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpYogurtInsp.java @@ -10,8 +10,7 @@ import com.zhyc.common.core.domain.BaseEntity; /** * 酸奶生产,成品检疫记录对象 np_yogurt_insp - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-17 */ @Data @@ -42,7 +41,7 @@ public class NpYogurtInsp extends BaseEntity private Double protein; /** 非脂g/100g - */ + */ @Excel(name = "非脂g/100g") private Double nonFat; @@ -86,4 +85,12 @@ public class NpYogurtInsp extends BaseEntity @Excel(name = "备注") private String comment; -} + /** 用户ID */ + @Excel(name = "用户编号", type = Excel.Type.IMPORT) + private Long userId; + + /** 部门ID */ + @Excel(name = "部门编号", type = Excel.Type.IMPORT) + private Long deptId; + +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/XzDryMatterCorrection.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/XzDryMatterCorrection.java index ca33e13..6e0638c 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/XzDryMatterCorrection.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/XzDryMatterCorrection.java @@ -32,4 +32,9 @@ public class XzDryMatterCorrection extends BaseEntity { @Excel(name = "干物质系数") private Double coefficient; + /** 用户ID */ + private Long userId; + + /** 部门ID */ + private Long deptId; } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/XzWegihCorrection.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/XzWegihCorrection.java index 3453e3f..e27c638 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/XzWegihCorrection.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/XzWegihCorrection.java @@ -45,5 +45,9 @@ public class XzWegihCorrection extends BaseEntity @Excel(name = "称重系数") private Double coefficient; + /** 用户ID */ + private Long userId; + /** 部门ID */ + private Long deptId; } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/mapper/NpMilkInOutStoreMapper.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/mapper/NpMilkInOutStoreMapper.java index aa4ed29..722f7c7 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/mapper/NpMilkInOutStoreMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/mapper/NpMilkInOutStoreMapper.java @@ -8,16 +8,49 @@ import java.util.List; import java.util.Map; public interface NpMilkInOutStoreMapper { + /** + * 动态列查询 + */ List> selectWithColumns( @Param("start") Date start, @Param("end") Date end, @Param("feedSources") List feedSources, @Param("saleDestinations") List saleDestinations ); + + /** + * 插入主表 + */ int insertStore(NpMilkInOutStore store); - void insertFeedRecord(@Param("storeId") Integer storeId, @Param("source") String source, @Param("amount") java.math.BigDecimal amount); - void insertSaleRecord(@Param("storeId") Integer storeId, @Param("destination") String dest, @Param("amount") java.math.BigDecimal amount); + /** + * 插入饲喂子表(已修正:增加 userId 和 deptId 参数) + */ + void insertFeedRecord( + @Param("storeId") Integer storeId, + @Param("source") String source, + @Param("amount") java.math.BigDecimal amount, + @Param("userId") Long userId, + @Param("deptId") Long deptId + ); + + /** + * 插入销售子表(已修正:增加 userId 和 deptId 参数) + */ + void insertSaleRecord( + @Param("storeId") Integer storeId, + @Param("destination") String dest, + @Param("amount") java.math.BigDecimal amount, + @Param("userId") Long userId, + @Param("deptId") Long deptId + ); + + /** + * 获取饲喂来源列表(用于动态列头) + */ List selectFeedSources(); - List selectSaleDestinations(); -} + /** + * 获取销售去向列表(用于动态列头) + */ + List selectSaleDestinations(); +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpFreshMilkInspServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpFreshMilkInspServiceImpl.java index cd59779..2155229 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpFreshMilkInspServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpFreshMilkInspServiceImpl.java @@ -2,6 +2,7 @@ package com.zhyc.module.dairyProducts.service.impl; import java.util.List; import com.zhyc.common.utils.DateUtils; +import com.zhyc.common.annotation.DataScope; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zhyc.module.dairyProducts.mapper.NpFreshMilkInspMapper; @@ -10,20 +11,18 @@ import com.zhyc.module.dairyProducts.service.INpFreshMilkInspService; /** * 鲜奶生产,成品检验记录Service业务层处理 - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-18 */ @Service -public class NpFreshMilkInspServiceImpl implements INpFreshMilkInspService +public class NpFreshMilkInspServiceImpl implements INpFreshMilkInspService { @Autowired private NpFreshMilkInspMapper npFreshMilkInspMapper; /** * 查询鲜奶生产,成品检验记录 - * - * @param id 鲜奶生产,成品检验记录主键 + * * @param id 鲜奶生产,成品检验记录主键 * @return 鲜奶生产,成品检验记录 */ @Override @@ -34,11 +33,11 @@ public class NpFreshMilkInspServiceImpl implements INpFreshMilkInspService /** * 查询鲜奶生产,成品检验记录列表 - * - * @param npFreshMilkInsp 鲜奶生产,成品检验记录 + * * @param npFreshMilkInsp 鲜奶生产,成品检验记录 * @return 鲜奶生产,成品检验记录 */ @Override + @DataScope(deptAlias = "a", userAlias = "a") public List selectNpFreshMilkInspList(NpFreshMilkInsp npFreshMilkInsp) { return npFreshMilkInspMapper.selectNpFreshMilkInspList(npFreshMilkInsp); @@ -46,8 +45,7 @@ public class NpFreshMilkInspServiceImpl implements INpFreshMilkInspService /** * 新增鲜奶生产,成品检验记录 - * - * @param npFreshMilkInsp 鲜奶生产,成品检验记录 + * * @param npFreshMilkInsp 鲜奶生产,成品检验记录 * @return 结果 */ @Override @@ -59,8 +57,7 @@ public class NpFreshMilkInspServiceImpl implements INpFreshMilkInspService /** * 修改鲜奶生产,成品检验记录 - * - * @param npFreshMilkInsp 鲜奶生产,成品检验记录 + * * @param npFreshMilkInsp 鲜奶生产,成品检验记录 * @return 结果 */ @Override @@ -71,8 +68,7 @@ public class NpFreshMilkInspServiceImpl implements INpFreshMilkInspService /** * 批量删除鲜奶生产,成品检验记录 - * - * @param ids 需要删除的鲜奶生产,成品检验记录主键 + * * @param ids 需要删除的鲜奶生产,成品检验记录主键 * @return 结果 */ @Override @@ -83,8 +79,7 @@ public class NpFreshMilkInspServiceImpl implements INpFreshMilkInspService /** * 删除鲜奶生产,成品检验记录信息 - * - * @param id 鲜奶生产,成品检验记录主键 + * * @param id 鲜奶生产,成品检验记录主键 * @return 结果 */ @Override @@ -92,4 +87,4 @@ public class NpFreshMilkInspServiceImpl implements INpFreshMilkInspService { return npFreshMilkInspMapper.deleteNpFreshMilkInspById(id); } -} +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkInOutStoreServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkInOutStoreServiceImpl.java index fc99d05..7584842 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkInOutStoreServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkInOutStoreServiceImpl.java @@ -1,5 +1,7 @@ package com.zhyc.module.dairyProducts.service.impl; +import com.zhyc.common.annotation.DataScope; +import com.zhyc.common.utils.SecurityUtils; import com.zhyc.module.dairyProducts.domain.NpMilkInOutStore; import com.zhyc.module.dairyProducts.mapper.NpMilkInOutStoreMapper; import com.zhyc.module.dairyProducts.service.INpMilkInOutStoreService; @@ -19,6 +21,7 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService { private NpMilkInOutStoreMapper mapper; @Override + @DataScope(deptAlias = "s", userAlias = "s") public List> selectWithDynamicColumns(Date start, Date end) { List feed = mapper.selectFeedSources(); List sale = mapper.selectSaleDestinations(); @@ -58,25 +61,46 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService { @Override public void batchInsertFromRows(List> rows) throws Exception { + // === 修改开始:获取当前用户和部门ID === + Long userId = SecurityUtils.getUserId(); + Long deptId = SecurityUtils.getDeptId(); + // === 修改结束 === + for (Map row : rows) { // 提取主表字段 NpMilkInOutStore store = new NpMilkInOutStore(); + // 这里假设 Excel 中的"日期"格式是标准的 yyyy-MM-dd,如果格式不对可能会报错,建议加 try-catch 或格式化处理 store.setDatetime(java.sql.Date.valueOf(row.get("日期").toString())); store.setNum(Integer.valueOf(row.get("羊数").toString())); - // ... 设置其它固定字段 ... + + // 手动填充其它主表字段,这里省略了具体的 get 调用,请根据您的 Excel 列名自行补充 + // store.setColostSheep(...); + + // === 修改开始:给主表实体注入用户和部门ID === + store.setUserId(userId); + store.setDeptId(deptId); + // === 修改结束 === + mapper.insertStore(store); Integer sid = store.getId(); + // 其余列为动态饲喂或销售,根据字典决定分类: for (Map.Entry ent: row.entrySet()) { String col = ent.getKey(); + // 跳过固定列 + if (col.equals("日期") || col.equals("羊数") || col.equals("id")) continue; + if (ent.getValue() == null || "".equals(ent.getValue().toString())) continue; + BigDecimal amt = new BigDecimal(ent.getValue().toString()); + if (mapper.selectFeedSources().contains(col)) { - mapper.insertFeedRecord(sid, col, amt); + // === 修改开始:插入饲喂子表时传入 userId 和 deptId === + mapper.insertFeedRecord(sid, col, amt, userId, deptId); } else if (mapper.selectSaleDestinations().contains(col)) { - mapper.insertSaleRecord(sid, col, amt); + // === 修改开始:插入销售子表时传入 userId 和 deptId === + mapper.insertSaleRecord(sid, col, amt, userId, deptId); } } } } -} - +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkProdClassesServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkProdClassesServiceImpl.java index 3db595c..d039409 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkProdClassesServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkProdClassesServiceImpl.java @@ -1,5 +1,6 @@ package com.zhyc.module.dairyProducts.service.impl; +import com.zhyc.common.annotation.DataScope; import com.zhyc.module.dairyProducts.domain.NpMilkProdClasses; import com.zhyc.module.dairyProducts.mapper.NpMilkProdClassesMapper; import com.zhyc.module.dairyProducts.service.INpMilkProdClassesService; @@ -16,6 +17,7 @@ public class NpMilkProdClassesServiceImpl implements INpMilkProdClassesService { private NpMilkProdClassesMapper mapper; @Override + @DataScope(deptAlias = "mpc", userAlias = "mpc") public List selectNpMilkProdClassesList(NpMilkProdClasses npMilkProdClasses, Date datetimeStart, Date datetimeEnd) { // 修改处:传递实体对象 return mapper.selectNpMilkProdClassesList(npMilkProdClasses, datetimeStart, datetimeEnd); diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpRawMilkInspeServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpRawMilkInspeServiceImpl.java index 3422dff..6b3e2d5 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpRawMilkInspeServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpRawMilkInspeServiceImpl.java @@ -2,6 +2,7 @@ package com.zhyc.module.dairyProducts.service.impl; import java.util.List; import com.zhyc.common.utils.DateUtils; +import com.zhyc.common.annotation.DataScope; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zhyc.module.dairyProducts.mapper.NpRawMilkInspeMapper; @@ -10,20 +11,18 @@ import com.zhyc.module.dairyProducts.service.INpRawMilkInspeService; /** * 生乳检验记录Service业务层处理 - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-15 */ @Service -public class NpRawMilkInspeServiceImpl implements INpRawMilkInspeService +public class NpRawMilkInspeServiceImpl implements INpRawMilkInspeService { @Autowired private NpRawMilkInspeMapper npRawMilkInspeMapper; /** * 查询生乳检验记录 - * - * @param id 生乳检验记录主键 + * * @param id 生乳检验记录主键 * @return 生乳检验记录 */ @Override @@ -34,11 +33,11 @@ public class NpRawMilkInspeServiceImpl implements INpRawMilkInspeService /** * 查询生乳检验记录列表 - * - * @param npRawMilkInspe 生乳检验记录 + * * @param npRawMilkInspe 生乳检验记录 * @return 生乳检验记录 */ @Override + @DataScope(deptAlias = "a", userAlias = "a") public List selectNpRawMilkInspeList(NpRawMilkInspe npRawMilkInspe) { return npRawMilkInspeMapper.selectNpRawMilkInspeList(npRawMilkInspe); @@ -46,8 +45,7 @@ public class NpRawMilkInspeServiceImpl implements INpRawMilkInspeService /** * 新增生乳检验记录 - * - * @param npRawMilkInspe 生乳检验记录 + * * @param npRawMilkInspe 生乳检验记录 * @return 结果 */ @Override @@ -59,8 +57,7 @@ public class NpRawMilkInspeServiceImpl implements INpRawMilkInspeService /** * 修改生乳检验记录 - * - * @param npRawMilkInspe 生乳检验记录 + * * @param npRawMilkInspe 生乳检验记录 * @return 结果 */ @Override @@ -71,8 +68,7 @@ public class NpRawMilkInspeServiceImpl implements INpRawMilkInspeService /** * 批量删除生乳检验记录 - * - * @param ids 需要删除的生乳检验记录主键 + * * @param ids 需要删除的生乳检验记录主键 * @return 结果 */ @Override @@ -83,8 +79,7 @@ public class NpRawMilkInspeServiceImpl implements INpRawMilkInspeService /** * 删除生乳检验记录信息 - * - * @param id 生乳检验记录主键 + * * @param id 生乳检验记录主键 * @return 结果 */ @Override @@ -92,4 +87,4 @@ public class NpRawMilkInspeServiceImpl implements INpRawMilkInspeService { return npRawMilkInspeMapper.deleteNpRawMilkInspeById(id); } -} +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpYogurtInspServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpYogurtInspServiceImpl.java index f80e745..3aca2cd 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpYogurtInspServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpYogurtInspServiceImpl.java @@ -2,6 +2,7 @@ package com.zhyc.module.dairyProducts.service.impl; import java.util.List; import com.zhyc.common.utils.DateUtils; +import com.zhyc.common.annotation.DataScope; import com.zhyc.module.dairyProducts.domain.NpYogurtInsp; import com.zhyc.module.dairyProducts.mapper.NpYogurtInspMapper; import com.zhyc.module.dairyProducts.service.INpYogurtInspService; @@ -10,8 +11,7 @@ import org.springframework.stereotype.Service; /** * 酸奶生产,成品检疫记录Service业务层处理 - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-17 */ @Service @@ -22,8 +22,7 @@ public class NpYogurtInspServiceImpl implements INpYogurtInspService /** * 查询酸奶生产,成品检疫记录 - * - * @param id 酸奶生产,成品检疫记录主键 + * * @param id 酸奶生产,成品检疫记录主键 * @return 酸奶生产,成品检疫记录 */ @Override @@ -34,11 +33,11 @@ public class NpYogurtInspServiceImpl implements INpYogurtInspService /** * 查询酸奶生产,成品检疫记录列表 - * - * @param npYogurtInsp 酸奶生产,成品检疫记录 + * * @param npYogurtInsp 酸奶生产,成品检疫记录 * @return 酸奶生产,成品检疫记录 */ @Override + @DataScope(deptAlias = "a", userAlias = "a") public List selectNpYogurtInspList(NpYogurtInsp npYogurtInsp) { return npYogurtInspMapper.selectNpYogurtInspList(npYogurtInsp); @@ -46,8 +45,7 @@ public class NpYogurtInspServiceImpl implements INpYogurtInspService /** * 新增酸奶生产,成品检疫记录 - * - * @param npYogurtInsp 酸奶生产,成品检疫记录 + * * @param npYogurtInsp 酸奶生产,成品检疫记录 * @return 结果 */ @Override @@ -59,8 +57,7 @@ public class NpYogurtInspServiceImpl implements INpYogurtInspService /** * 修改酸奶生产,成品检疫记录 - * - * @param npYogurtInsp 酸奶生产,成品检疫记录 + * * @param npYogurtInsp 酸奶生产,成品检疫记录 * @return 结果 */ @Override @@ -71,8 +68,7 @@ public class NpYogurtInspServiceImpl implements INpYogurtInspService /** * 批量删除酸奶生产,成品检疫记录 - * - * @param ids 需要删除的酸奶生产,成品检疫记录主键 + * * @param ids 需要删除的酸奶生产,成品检疫记录主键 * @return 结果 */ @Override @@ -83,8 +79,7 @@ public class NpYogurtInspServiceImpl implements INpYogurtInspService /** * 删除酸奶生产,成品检疫记录信息 - * - * @param id 酸奶生产,成品检疫记录主键 + * * @param id 酸奶生产,成品检疫记录主键 * @return 结果 */ @Override @@ -92,4 +87,4 @@ public class NpYogurtInspServiceImpl implements INpYogurtInspService { return npYogurtInspMapper.deleteNpYogurtInspById(id); } -} +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/XzDryMatterCorrectionServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/XzDryMatterCorrectionServiceImpl.java index 88894c8..a63a6e1 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/XzDryMatterCorrectionServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/XzDryMatterCorrectionServiceImpl.java @@ -6,23 +6,22 @@ import org.springframework.stereotype.Service; import com.zhyc.module.dairyProducts.mapper.XzDryMatterCorrectionMapper; import com.zhyc.module.dairyProducts.domain.XzDryMatterCorrection; import com.zhyc.module.dairyProducts.service.IXzDryMatterCorrectionService; +import com.zhyc.common.annotation.DataScope; // 引入数据权限注解 /** * 干物质校正Service业务层处理 - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-12 */ @Service -public class XzDryMatterCorrectionServiceImpl implements IXzDryMatterCorrectionService +public class XzDryMatterCorrectionServiceImpl implements IXzDryMatterCorrectionService { @Autowired private XzDryMatterCorrectionMapper xzDryMatterCorrectionMapper; /** * 查询干物质校正 - * - * @param id 干物质校正主键 + * * @param id 干物质校正主键 * @return 干物质校正 */ @Override @@ -33,11 +32,11 @@ public class XzDryMatterCorrectionServiceImpl implements IXzDryMatterCorrectionS /** * 查询干物质校正列表 - * - * @param xzDryMatterCorrection 干物质校正 + * * @param xzDryMatterCorrection 干物质校正 * @return 干物质校正 */ @Override + @DataScope(deptAlias = "d", userAlias = "d") // 添加数据权限注解 public List selectXzDryMatterCorrectionList(XzDryMatterCorrection xzDryMatterCorrection) { return xzDryMatterCorrectionMapper.selectXzDryMatterCorrectionList(xzDryMatterCorrection); @@ -102,8 +101,7 @@ public class XzDryMatterCorrectionServiceImpl implements IXzDryMatterCorrectionS /** * 批量删除干物质校正 - * - * @param ids 需要删除的干物质校正主键 + * * @param ids 需要删除的干物质校正主键 * @return 结果 */ @Override @@ -114,8 +112,7 @@ public class XzDryMatterCorrectionServiceImpl implements IXzDryMatterCorrectionS /** * 删除干物质校正信息 - * - * @param id 干物质校正主键 + * * @param id 干物质校正主键 * @return 结果 */ @Override @@ -123,4 +120,4 @@ public class XzDryMatterCorrectionServiceImpl implements IXzDryMatterCorrectionS { return xzDryMatterCorrectionMapper.deleteXzDryMatterCorrectionById(id); } -} +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/XzWegihCorrectionServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/XzWegihCorrectionServiceImpl.java index c27e6df..8dad9e7 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/XzWegihCorrectionServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/XzWegihCorrectionServiceImpl.java @@ -8,13 +8,13 @@ import com.zhyc.common.exception.ServiceException; import com.zhyc.module.dairyProducts.domain.XzWegihCorrection; import com.zhyc.module.dairyProducts.mapper.XzWegihCorrectionMapper; import com.zhyc.module.dairyProducts.service.IXzWegihCorrectionService; +import com.zhyc.common.annotation.DataScope; // 引入数据权限注解 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * 称重校正Service业务层处理 - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-12 */ @Service @@ -25,8 +25,7 @@ public class XzWegihCorrectionServiceImpl implements IXzWegihCorrectionService /** * 查询称重校正 - * - * @param id 称重校正主键 + * * @param id 称重校正主键 * @return 称重校正 */ @Override @@ -37,11 +36,11 @@ public class XzWegihCorrectionServiceImpl implements IXzWegihCorrectionService /** * 查询称重校正列表 - * - * @param xzWegihCorrection 称重校正 + * * @param xzWegihCorrection 称重校正 * @return 称重校正 */ @Override + @DataScope(deptAlias = "w", userAlias = "w") // 添加数据权限注解 public List selectXzWegihCorrectionList(XzWegihCorrection xzWegihCorrection) { return xzWegihCorrectionMapper.selectXzWegihCorrectionList(xzWegihCorrection); @@ -106,8 +105,7 @@ public class XzWegihCorrectionServiceImpl implements IXzWegihCorrectionService /** * 批量删除称重校正 - * - * @param ids 需要删除的称重校正主键 + * * @param ids 需要删除的称重校正主键 * @return 结果 */ @Override @@ -118,8 +116,7 @@ public class XzWegihCorrectionServiceImpl implements IXzWegihCorrectionService /** * 删除称重校正信息 - * - * @param id 称重校正主键 + * * @param id 称重校正主键 * @return 结果 */ @Override @@ -127,4 +124,4 @@ public class XzWegihCorrectionServiceImpl implements IXzWegihCorrectionService { return xzWegihCorrectionMapper.deleteXzWegihCorrectionById(id); } -} +} \ No newline at end of file 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 e83a1d8..7b8913e 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,9 +1,8 @@ package com.zhyc.module.produce.breed.controller; -import java.util.ArrayList; -import java.util.HashMap; +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; @@ -29,8 +28,7 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 干奶记录Controller - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-15 */ @RestController @@ -51,24 +49,55 @@ 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)); + } + + // 处理技术员多选:将逗号分隔的字符串转为List + if (scDryMilk.getTecahnician() != null && !scDryMilk.getTecahnician().trim().isEmpty()) { + if (scDryMilk.getTechnicianList() == null) { + scDryMilk.setTechnicianList(new ArrayList<>()); + } + String[] techs = scDryMilk.getTecahnician().trim().split("[,,\\s]+"); + scDryMilk.getTechnicianList().addAll(Arrays.asList(techs)); } 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 = ""; + List list = scDryMilkService.selectSheepEarNumberList(query); + return AjaxResult.success(list); + } + + /** + * 远程搜索技术员列表 + */ + @GetMapping("/searchTechnicians") + public AjaxResult searchTechnicians(@RequestParam(value = "query", required = false) String query) + { + if (query == null) query = ""; + List list = scDryMilkService.selectTechnicianList(query); + return AjaxResult.success(list); + } + /** * 导出干奶记录列表 */ @@ -78,8 +107,14 @@ public class ScDryMilkController extends BaseController public void export(HttpServletResponse response, ScDryMilk scDryMilk) { try { + // 导出也需要支持多选查询 if (scDryMilk.getManageTags() != null) { - scDryMilk.setManageTags(scDryMilk.getManageTags().trim()); + String[] tags = scDryMilk.getManageTags().trim().split("[,,\\s]+"); + scDryMilk.setManageTagsList(Arrays.asList(tags)); + } + if (scDryMilk.getTecahnician() != null) { + String[] techs = scDryMilk.getTecahnician().trim().split("[,,\\s]+"); + scDryMilk.setTechnicianList(Arrays.asList(techs)); } List list = scDryMilkService.selectScDryMilkList(scDryMilk); @@ -97,90 +132,21 @@ 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); } /** - * 新增干奶记录 + * 新增干奶记录 (支持批量录入) */ @PreAuthorize("@ss.hasPermi('drymilk:drymilk:add')") @Log(title = "干奶记录", businessType = BusinessType.INSERT) @@ -188,43 +154,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()); @@ -239,39 +203,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)); } /** @@ -282,71 +214,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)); } - - @PreAuthorize("@ss.hasPermi('drymilk:drymilk:quary')") - @GetMapping("/search_ear_numbers") - public AjaxResult searchEarNumbers(@RequestParam("query") String query) { - try { - List earNumbers = scDryMilkService.searchEarNumbers(query); - return success(earNumbers); - } catch (Exception e) { - logger.error("搜索耳号异常", e); - return error("搜索耳号失败:" + e.getMessage()); - } - } - - /** - * 批量验证耳号 - */ - @GetMapping("/validateBatchEarTags") - public AjaxResult validateBatchEarTags(@RequestParam("manageTags") String manageTags) { - try { - if (manageTags == null || manageTags.trim().isEmpty()) { - return error("耳号不能为空"); - } - - // 支持多种分隔符 - String[] earTagArray = manageTags.split("[\\s,,]+"); - List> results = new ArrayList<>(); - - for (String earTag : earTagArray) { - String cleanTag = earTag.trim(); - if (cleanTag.isEmpty()) continue; - - Map result = new HashMap<>(); - result.put("earTag", cleanTag); - - Long sheepId = scDryMilkService.selectSheepIdByManageTags(cleanTag); - result.put("exists", sheepId != null); - result.put("sheepId", sheepId); - - results.add(result); - } - - return success(results); - } catch (Exception e) { - logger.error("批量验证耳号失败", e); - return error("验证失败: " + e.getMessage()); - } - } - } \ 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 40421b3..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 @@ -5,12 +5,19 @@ import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +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.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; @@ -41,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) @@ -62,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); @@ -70,187 +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()); - } - } - - /** - * 模糊查询母羊耳号列表 - */ - @PreAuthorize("@ss.hasPermi('breed:lambing_records:query')") // 根据实际权限修改 - @GetMapping("/search_ear_numbers") - public AjaxResult searchEarNumbers(@RequestParam("query") String query) { - try { - List earNumbers = scSheepDeathService.searchEarNumbers(query); - return success(earNumbers); - } 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 9e31560..4579927 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,6 +3,7 @@ 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; @@ -17,9 +18,6 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 断奶记录Controller - * - * @author zhyc - * @date 2024-01-01 */ @RestController @RequestMapping("/Weaning/weaning_record") @@ -38,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); + } + /** * 导出断奶记录列表 */ @@ -80,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) { @@ -88,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)); @@ -114,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)); } @@ -154,18 +130,4 @@ public class ScWeanRecordController extends BaseController { } - /** - * 模糊查询母羊耳号列表 - */ - @PreAuthorize("@ss.hasPermi('breed:lambing_records:query')") // 根据实际权限修改 - @GetMapping("/search_ear_numbers") - public AjaxResult searchEarNumbers(@RequestParam("query") String query) { - try { - List earNumbers = scWeanRecordService.searchEarNumbers(query); - return success(earNumbers); - } catch (Exception e) { - logger.error("搜索耳号异常", e); - return error("搜索耳号失败:" + e.getMessage()); - } - } } \ No newline at end of file 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 41dbb7b..5c0f51f 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 @@ -2,11 +2,9 @@ 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; -import lombok.NoArgsConstructor; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; import com.zhyc.common.annotation.Excel; import com.zhyc.common.core.domain.BaseEntity; @@ -16,9 +14,6 @@ import com.zhyc.common.core.domain.BaseEntity; * @author ruoyi * @date 2025-07-15 */ -@Data -@NoArgsConstructor -@AllArgsConstructor public class ScDryMilk extends BaseEntity { private static final long serialVersionUID = 1L; @@ -35,8 +30,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 */ @@ -51,12 +46,15 @@ public class ScDryMilk extends BaseEntity @Excel(name = "备注") private String comment; - // 以下为联表查询字段,不存储在sc_dry_milk表中 + // --- 联表查询及辅助字段 --- - /** 管理耳号 */ + /** 管理耳号 (单个,用于接收前端传参或导出显示) */ @Excel(name = "耳号") private String manageTags; + /** 多耳号查询列表 (用于MyBatis IN查询) */ + private List manageTagsList; + /** 品种 */ @Excel(name = "品种") private String variety; @@ -69,15 +67,136 @@ public class ScDryMilk extends BaseEntity @Excel(name = "事件类型") private String eventType; - /** 全部羊耳号列表(用于多耳号查询) */ - private List allEarNumbers; + /** 技术员多选列表 (新增:用于MyBatis IN查询) */ + private List technicianList; - public List getAllEarNumbers() { - return allEarNumbers; + public void setId(Long id) + { + this.id = id; } - public void setAllEarNumbers(List allEarNumbers) { - this.allEarNumbers = allEarNumbers; + public Long getId() + { + return id; + } + public void setSheepId(String sheepId) + { + this.sheepId = sheepId; } + public String getSheepId() + { + return sheepId; + } + public void setDatetime(Date datetime) + { + this.datetime = datetime; + } + + public Date getDatetime() + { + return datetime; + } + public void setStatus(Long status) + { + this.status = status; + } + + public Long getStatus() + { + return status; + } + public void setSheepfold(Long sheepfold) + { + this.sheepfold = sheepfold; + } + + public Long getSheepfold() + { + return sheepfold; + } + public void setTecahnician(String tecahnician) + { + this.tecahnician = tecahnician; + } + + public String getTecahnician() + { + return tecahnician; + } + public void setComment(String comment) + { + this.comment = comment; + } + + public String getComment() + { + return comment; + } + + public String getManageTags() { + return manageTags; + } + + public void setManageTags(String manageTags) { + this.manageTags = manageTags; + } + + public List getManageTagsList() { + return manageTagsList; + } + + public void setManageTagsList(List manageTagsList) { + this.manageTagsList = manageTagsList; + } + + public String getVariety() { + return variety; + } + + public void setVariety(String variety) { + this.variety = variety; + } + + public String getSheepfoldName() { + return sheepfoldName; + } + + public void setSheepfoldName(String sheepfoldName) { + this.sheepfoldName = sheepfoldName; + } + + public String getEventType() { + return eventType; + } + + public void setEventType(String eventType) { + this.eventType = eventType; + } + + public List getTechnicianList() { + return technicianList; + } + + public void setTechnicianList(List technicianList) { + this.technicianList = technicianList; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("sheepId", getSheepId()) + .append("datetime", getDatetime()) + .append("status", getStatus()) + .append("sheepfold", getSheepfold()) + .append("tecahnician", getTecahnician()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("comment", getComment()) + .append("manageTags", getManageTags()) + .append("variety", getVariety()) + .append("sheepfoldName", getSheepfoldName()) + .toString(); + } } \ 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 11d57ec..54e7171 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 @@ -2,7 +2,6 @@ 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; @@ -75,22 +74,28 @@ public class ScSheepDeath extends BaseEntity /** 品种 */ 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; /** 死亡时产后天数 */ @@ -102,236 +107,117 @@ 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() { 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 559bef2..9c5088a 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 @@ -3,7 +3,6 @@ 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; @@ -13,9 +12,6 @@ import lombok.NoArgsConstructor; /** * 断奶记录对象 sc_wean_record - * - * @author zhyc - * @date 2024-01-01 */ @Data @NoArgsConstructor @@ -55,8 +51,19 @@ 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; @@ -95,16 +102,4 @@ public class ScWeanRecord extends BaseEntity { /** 繁育状态 */ @Excel(name = "繁育状态") private String breedingStatus; - - /** 全部羊耳号列表(用于多耳号查询) */ - private List allEarNumbers; - - public List getAllEarNumbers() { - return allEarNumbers; - } - - public void setAllEarNumbers(List allEarNumbers) { - this.allEarNumbers = allEarNumbers; - } - } \ 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 04a415b..2fbeff2 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 @@ -7,8 +7,7 @@ import org.apache.ibatis.annotations.Param; /** * 干奶记录Mapper接口 - * - * @author ruoyi + * * @author ruoyi * @date 2025-07-15 */ @Mapper @@ -16,65 +15,58 @@ 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); /** - * 模糊查询母羊耳号列表 - * - * @param query 查询关键字 - * @return 耳号列表 + * 根据耳号查询羊只ID */ - List searchEarNumbers(@Param("query") String query); + public Long selectSheepIdByManageTags(String manageTags); + + /** + * 远程搜索耳号列表 + */ + public List selectSheepEarNumberList(@Param("query") String query); + + /** + * 远程搜索技术员列表 + */ + public List searchTechnicianList(@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 77ba0f3..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,28 +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); /** - * 模糊查询母羊耳号列表 - * - * @param query 查询关键字 - * @return 耳号列表 + * 远程搜索:管理耳号 */ - List searchEarNumbers(@Param("query") String query); + 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 f5b846b..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,86 +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 耳号列表 */ - List searchEarNumbers(@Param("query") String query); + 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 1ebb664..5b3b4e7 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,67 +5,65 @@ 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); /** - * 模糊查询母羊耳号列表 - * - * @param query 查询关键字 - * @return 耳号列表 + * 根据耳号查询羊只ID */ - public List searchEarNumbers(String query); -} + public Long selectSheepIdByManageTags(String manageTags); + + /** + * 远程搜索耳号列表 + */ + public List selectSheepEarNumberList(String query); + + /** + * 远程搜索技术员列表 + */ + public List selectTechnicianList(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 da9d117..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); - /** * 新增羊只死淘记录 * @@ -69,10 +61,25 @@ public interface IScSheepDeathService public int deleteScSheepDeathById(Long id); /** - * 模糊查询母羊耳号列表 + * 根据管理耳号查询sheep_file视图信息 * - * @param query 查询关键字 - * @return 耳号列表 + * @param manageTags 管理耳号 + * @return 羊只信息 */ - public List searchEarNumbers(String query); + 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 1f19fef..ee113bb 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 @@ -6,70 +6,62 @@ 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 耳号列表 */ 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 43dafbc..d699682 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,47 @@ 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); + String[] strIds = new String[ids.length]; + for(int i=0; i searchEarNumbers(String query) { - return scDryMilkMapper.searchEarNumbers(query); + public Long selectSheepIdByManageTags(String manageTags) { + return scDryMilkMapper.selectSheepIdByManageTags(manageTags); } + @Override + public List selectSheepEarNumberList(String query) { + return scDryMilkMapper.selectSheepEarNumberList(query); + } + + @Override + public List selectTechnicianList(String query) { + return scDryMilkMapper.searchTechnicianList(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 6468867..1ae2435 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,123 +32,69 @@ 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) { @@ -168,12 +115,6 @@ public class ScSheepDeathServiceImpl implements IScSheepDeathService return scSheepDeathMapper.updateScSheepDeath(scSheepDeath); } - /** - * 批量删除羊只死淘记录 - * - * @param ids 需要删除的羊只死淘记录主键 - * @return 结果 - */ @Override public int deleteScSheepDeathByIds(Long[] ids) { @@ -189,12 +130,6 @@ public class ScSheepDeathServiceImpl implements IScSheepDeathService return scSheepDeathMapper.deleteScSheepDeathByIds(ids); } - /** - * 删除羊只死淘记录信息 - * - * @param id 羊只死淘记录主键 - * @return 结果 - */ @Override public int deleteScSheepDeathById(Long id) { @@ -208,8 +143,19 @@ public class ScSheepDeathServiceImpl implements IScSheepDeathService return scSheepDeathMapper.deleteScSheepDeathById(id); } + // --- 远程搜索实现 --- @Override - public List searchEarNumbers(String query) { - return scSheepDeathMapper.searchEarNumbers(query); + 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 5f1cbdc..7931efc 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,8 +2,10 @@ 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 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.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -11,127 +13,112 @@ 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); 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/base/SheepFileMapper.xml b/zhyc-module/src/main/resources/mapper/base/SheepFileMapper.xml index 1d6964c..c897edb 100644 --- a/zhyc-module/src/main/resources/mapper/base/SheepFileMapper.xml +++ b/zhyc-module/src/main/resources/mapper/base/SheepFileMapper.xml @@ -1,9 +1,9 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -79,7 +79,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + + + - - - - - - - - - - FROM sheep_file - - AND is_delete = 0 + AND (is_delete = 0 OR is_delete IS NULL) - - + + AND bs_manage_tags IN + + #{item} + + + + AND electronic_tags IN + + #{item} + + + + AND gender IN + + #{item} + + + + AND breed IN + + #{item} + + + + AND name IN + + #{item} + + + + AND bs_manage_tags LIKE CONCAT('%', #{sheepFile.bsManageTags}, '%') - + AND electronic_tags LIKE CONCAT('%', #{sheepFile.electronicTags}, '%') @@ -183,23 +204,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND variety LIKE CONCAT('%', #{sheepFile.variety}, '%') - + AND name LIKE CONCAT('%', #{sheepFile.name}, '%') - + AND gender = #{sheepFile.gender} AND status_id = #{sheepFile.statusId} - + AND breed LIKE CONCAT('%', #{sheepFile.breed}, '%') - - AND ${key} IS NULL @@ -207,12 +226,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND ${key} IS NOT NULL - - - - - + AND ${key} > #{value.toString().substring(3)} @@ -228,21 +243,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - + AND ${key} IN #{item} - - - - + - AND ${key} = #{value} @@ -264,23 +272,234 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY id ASC - - - - - - - - - + + + insert into sheep_file + + bs_manage_tags, + ranch_id, + dr_ranch, + sheepfold_id, + sheepfold_name, + electronic_tags, + variety_id, + variety, + family, + name, + gender, + birthday, + day_age, + month_age, + parity, + birth_weight, + weaning_date, + status_id, + weaning_weight, + current_weight, + weaning_day_age, + weaning_daily_gain, + breed_status_id, + breed, + bs_father_id, + father_manage_tags, + bs_mother_id, + mother_manage_tags, + receptor_id, + receptor_manage_tags, + father_father_id, + grandfather_manage_tags, + father_mother_id, + grandmother_manage_tags, + father_id, + maternal_grandfather_manage_tags, + mother_id, + maternal_grandmother_manage_tags, + mating_date, + mating_type_id, + preg_date, + lambing_date, + lambing_day, + mating_day, + gestation_day, + expected_date, + post_lambing_day, + lactation_day, + anestrous_day, + mating_counts, + mating_total, + miscarriage_counts, + comment, + controlled, + body, + breast, + source, + source_date, + source_ranch_id, + source_ranch, + create_by, + create_time, + update_by, + update_time, + is_delete, + + + #{bsManageTags}, + #{ranchId}, + #{drRanch}, + #{sheepfoldId}, + #{sheepfoldName}, + #{electronicTags}, + #{varietyId}, + #{variety}, + #{family}, + #{name}, + #{gender}, + #{birthday}, + #{dayAge}, + #{monthAge}, + #{parity}, + #{birthWeight}, + #{weaningDate}, + #{statusId}, + #{weaningWeight}, + #{currentWeight}, + #{weaningDayAge}, + #{weaningDailyGain}, + #{breedStatusId}, + #{breed}, + #{bsFatherId}, + #{fatherManageTags}, + #{bsMotherId}, + #{motherManageTags}, + #{receptorId}, + #{receptorManageTags}, + #{fatherFatherId}, + #{grandfatherManageTags}, + #{fatherMotherId}, + #{grandmotherManageTags}, + #{fatherId}, + #{maternalGrandfatherManageTags}, + #{motherId}, + #{maternalGrandmotherManageTags}, + #{matingDate}, + #{matingTypeId}, + #{pregDate}, + #{lambingDate}, + #{lambingDay}, + #{matingDay}, + #{gestationDay}, + #{expectedDate}, + #{postLambingDay}, + #{lactationDay}, + #{anestrousDay}, + #{matingCounts}, + #{matingTotal}, + #{miscarriageCounts}, + #{comment}, + #{controlled}, + #{body}, + #{breast}, + #{source}, + #{sourceDate}, + #{sourceRanchId}, + #{sourceRanch}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{isDelete}, + + + + + update sheep_file + + bs_manage_tags = #{bsManageTags}, + ranch_id = #{ranchId}, + dr_ranch = #{drRanch}, + sheepfold_id = #{sheepfoldId}, + sheepfold_name = #{sheepfoldName}, + electronic_tags = #{electronicTags}, + variety_id = #{varietyId}, + variety = #{variety}, + family = #{family}, + name = #{name}, + gender = #{gender}, + birthday = #{birthday}, + day_age = #{dayAge}, + month_age = #{monthAge}, + parity = #{parity}, + birth_weight = #{birthWeight}, + weaning_date = #{weaningDate}, + status_id = #{statusId}, + weaning_weight = #{weaningWeight}, + current_weight = #{currentWeight}, + weaning_day_age = #{weaningDayAge}, + weaning_daily_gain = #{weaningDailyGain}, + breed_status_id = #{breedStatusId}, + breed = #{breed}, + bs_father_id = #{bsFatherId}, + father_manage_tags = #{fatherManageTags}, + bs_mother_id = #{bsMotherId}, + mother_manage_tags = #{motherManageTags}, + receptor_id = #{receptorId}, + receptor_manage_tags = #{receptorManageTags}, + father_father_id = #{fatherFatherId}, + grandfather_manage_tags = #{grandfatherManageTags}, + father_mother_id = #{fatherMotherId}, + grandmother_manage_tags = #{grandmotherManageTags}, + father_id = #{fatherId}, + maternal_grandfather_manage_tags = #{maternalGrandfatherManageTags}, + mother_id = #{motherId}, + maternal_grandmother_manage_tags = #{maternalGrandmotherManageTags}, + mating_date = #{matingDate}, + mating_type_id = #{matingTypeId}, + preg_date = #{pregDate}, + lambing_date = #{lambingDate}, + lambing_day = #{lambingDay}, + mating_day = #{matingDay}, + gestation_day = #{gestationDay}, + expected_date = #{expectedDate}, + post_lambing_day = #{postLambingDay}, + lactation_day = #{lactationDay}, + anestrous_day = #{anestrousDay}, + mating_counts = #{matingCounts}, + mating_total = #{matingTotal}, + miscarriage_counts = #{miscarriageCounts}, + comment = #{comment}, + controlled = #{controlled}, + body = #{body}, + breast = #{breast}, + source = #{source}, + source_date = #{sourceDate}, + source_ranch_id = #{sourceRanchId}, + source_ranch = #{sourceRanch}, + update_by = #{updateBy}, + update_time = #{updateTime}, + is_delete = #{isDelete}, + + where id = #{id} + + + + update sheep_file set is_delete = 1 where id = #{id} + + + + update sheep_file set is_delete = 1 where id in + + #{id} + + + \ No newline at end of file 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}, diff --git a/zhyc-module/src/main/resources/mapper/dairyProducts/NpFreshMilkInspMapper.xml b/zhyc-module/src/main/resources/mapper/dairyProducts/NpFreshMilkInspMapper.xml index edc367d..be9c5e6 100644 --- a/zhyc-module/src/main/resources/mapper/dairyProducts/NpFreshMilkInspMapper.xml +++ b/zhyc-module/src/main/resources/mapper/dairyProducts/NpFreshMilkInspMapper.xml @@ -31,7 +31,7 @@ bacterial_colony_1, bacterial_colony_2, bacterial_colony_3, bacterial_colony_4, bacterial_colony_5, coli, lactoferrin, ig, commnet, create_by, create_time - FROM np_fresh_milk_insp + FROM np_fresh_milk_insp a @@ -74,6 +76,8 @@ commnet, create_by, create_time, + user_id, + dept_id, #{source}, @@ -93,6 +97,8 @@ #{commnet}, #{createBy}, #{createTime}, + #{userId}, + #{deptId}, diff --git a/zhyc-module/src/main/resources/mapper/dairyProducts/NpMilkInOutStoreMapper.xml b/zhyc-module/src/main/resources/mapper/dairyProducts/NpMilkInOutStoreMapper.xml index ea5eb4c..79dce7f 100644 --- a/zhyc-module/src/main/resources/mapper/dairyProducts/NpMilkInOutStoreMapper.xml +++ b/zhyc-module/src/main/resources/mapper/dairyProducts/NpMilkInOutStoreMapper.xml @@ -1,7 +1,7 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> @@ -93,8 +95,8 @@ - INSERT INTO np_milk_prod_classes (datetime, sheep_id, classes, milk, corrected_milk) - VALUES (#{datetime}, #{sheepId}, #{classes}, #{milk}, #{correctedMilk}) + INSERT INTO np_milk_prod_classes (datetime, sheep_id, classes, milk, corrected_milk, user_id, dept_id) + VALUES (#{datetime}, #{sheepId}, #{classes}, #{milk}, #{correctedMilk}, #{userId}, #{deptId}) @@ -47,6 +47,8 @@ and datetime <= #{params.endTime} and source like concat('%', #{source}, '%') + + ${params.dataScope} @@ -80,6 +82,8 @@ comment, create_by, create_time, + user_id, + dept_id, #{datetime}, @@ -104,6 +108,8 @@ #{comment}, #{createBy}, #{createTime}, + #{userId}, + #{deptId}, diff --git a/zhyc-module/src/main/resources/mapper/dairyProducts/NpYogurtInspMapper.xml b/zhyc-module/src/main/resources/mapper/dairyProducts/NpYogurtInspMapper.xml index 0d47254..3de536a 100644 --- a/zhyc-module/src/main/resources/mapper/dairyProducts/NpYogurtInspMapper.xml +++ b/zhyc-module/src/main/resources/mapper/dairyProducts/NpYogurtInspMapper.xml @@ -30,7 +30,7 @@ acidity, bacterial_colony_1, bacterial_clony_2, bacterial_clony_3, bacterial_clony_4, bacterial_clony_5, yeast, mould, lacto, comment, create_by, create_time - from np_yogurt_insp + from np_yogurt_insp a @@ -73,6 +75,8 @@ comment, create_by, create_time, + user_id, + dept_id, #{source}, @@ -92,6 +96,8 @@ #{comment}, #{createBy}, #{createTime}, + #{userId}, + #{deptId}, @@ -105,7 +111,7 @@ non_fat = #{nonFat}, acidity = #{acidity}, bacterial_colony_1 = #{bacterialColony1}, - bacterial_clony_2 = #{bacterialClony2}, + bacterial_colony_2 = #{bacterialClony2}, bacterial_clony_3 = #{bacterialClony3}, bacterial_clony_4 = #{bacterialClony4}, bacterial_clony_5 = #{bacterialClony5}, diff --git a/zhyc-module/src/main/resources/mapper/dairyProducts/XzDryMatterCorrectionMapper.xml b/zhyc-module/src/main/resources/mapper/dairyProducts/XzDryMatterCorrectionMapper.xml index 37ae656..7470d16 100644 --- a/zhyc-module/src/main/resources/mapper/dairyProducts/XzDryMatterCorrectionMapper.xml +++ b/zhyc-module/src/main/resources/mapper/dairyProducts/XzDryMatterCorrectionMapper.xml @@ -11,51 +11,56 @@ + + SELECT - id, - datetime, - factory, - content, - COALESCE(standard, 18) as standard, + d.id, + d.datetime, + d.factory, + d.content, + COALESCE(d.standard, 18) as standard, CASE - WHEN standard = 0 OR standard IS NULL THEN NULL - ELSE ROUND(content / standard, 2) - END AS coefficient - FROM xz_dry_matter_correction + WHEN d.standard = 0 OR d.standard IS NULL THEN NULL + ELSE ROUND(d.content / d.standard, 2) + END AS coefficient, + d.user_id, + d.dept_id + FROM xz_dry_matter_correction d INSERT INTO xz_dry_matter_correction - datetime, factory, content, standard + datetime, factory, content, standard, user_id, dept_id - #{datetime}, #{factory}, #{content}, #{standard} + #{datetime}, #{factory}, #{content}, #{standard}, #{userId}, #{deptId} diff --git a/zhyc-module/src/main/resources/mapper/dairyProducts/XzWegihCorrectionMapper.xml b/zhyc-module/src/main/resources/mapper/dairyProducts/XzWegihCorrectionMapper.xml index 30d5155..a0b13fa 100644 --- a/zhyc-module/src/main/resources/mapper/dairyProducts/XzWegihCorrectionMapper.xml +++ b/zhyc-module/src/main/resources/mapper/dairyProducts/XzWegihCorrectionMapper.xml @@ -11,38 +11,44 @@ + + select - id, - datetime, - factory, - actual, - system_milk, + w.id, + w.datetime, + w.factory, + w.actual, + w.system_milk, CASE - WHEN system_milk = 0 THEN 0 - ELSE ROUND(actual / system_milk, 4) - END as coefficient - from xz_wegih_correction + WHEN w.system_milk = 0 THEN 0 + ELSE ROUND(w.actual / w.system_milk, 4) + END as coefficient, + w.user_id, + w.dept_id + from xz_wegih_correction w @@ -52,12 +58,14 @@ factory, actual, system_milk, + user_id, dept_id #{datetime}, #{factory}, #{actual}, #{systemMilk}, + #{userId}, #{deptId} 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 16d8bfe..8b0f903 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScDryMilkMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScDryMilkMapper.xml @@ -33,34 +33,53 @@ + + + - select id from sheep_file where bs_manage_tags = #{manageTags} + select id from sheep_file where bs_manage_tags = #{manageTags} limit 1 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 dc7b118..b5ba0c9 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScSheepDeathMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScSheepDeathMapper.xml @@ -22,45 +22,119 @@ + + + + + + + + + + + - 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 d - left join sheep_file s on d.sheep_id = s.id + 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 + + + + + + diff --git a/zhyc-module/src/main/resources/mapper/produce/breed/ScWeanRecordMapper.xml b/zhyc-module/src/main/resources/mapper/produce/breed/ScWeanRecordMapper.xml index 1ee15cc..4ea385d 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScWeanRecordMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScWeanRecordMapper.xml @@ -15,7 +15,7 @@ - + @@ -28,7 +28,6 @@ - select wr.id, wr.sheep_id, wr.datetime, wr.weight, wr.status, wr.technician, @@ -40,7 +39,6 @@ left join sheep_file sf on wr.sheep_id = sf.id - - + + - - insert into sc_wean_record @@ -111,7 +137,6 @@ - update sc_wean_record @@ -128,23 +153,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 @@ -152,13 +164,4 @@ - - \ No newline at end of file