From 7890c4d7922444f96a94bb32b48cbe44f9c8b105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BC=82=E6=B3=8A?= <1913856125@qq.com> Date: Tue, 27 Jan 2026 15:36:01 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/service/SysPasswordService.java | 33 ++++++++++++++++--- .../web/service/UserDetailsServiceImpl.java | 2 +- .../biosafety/domain/SwMedicineUsage.java | 1 + .../impl/SwMedicineUsageServiceImpl.java | 8 +++++ .../biosafety/SwMedicineUsageMapper.xml | 7 ++++ 5 files changed, 46 insertions(+), 5 deletions(-) diff --git a/zhyc-framework/src/main/java/com/zhyc/framework/web/service/SysPasswordService.java b/zhyc-framework/src/main/java/com/zhyc/framework/web/service/SysPasswordService.java index 5b3b2ec..1f961c0 100644 --- a/zhyc-framework/src/main/java/com/zhyc/framework/web/service/SysPasswordService.java +++ b/zhyc-framework/src/main/java/com/zhyc/framework/web/service/SysPasswordService.java @@ -14,8 +14,8 @@ import com.zhyc.common.utils.SecurityUtils; import com.zhyc.framework.security.context.AuthenticationContextHolder; /** - * 登录密码方法 - * + * 系统密码服务类,用于处理登录密码验证相关的业务逻辑,包括密码错误次数限制、账户锁定等功能 + * * @author ruoyi */ @Component @@ -31,8 +31,8 @@ public class SysPasswordService private int lockTime; /** - * 登录账户密码错误次数缓存键名 - * + * 构建登录账户密码错误次数缓存键名 + * * @param username 用户名 * @return 缓存键key */ @@ -41,12 +41,21 @@ public class SysPasswordService return CacheConstants.PWD_ERR_CNT_KEY + username; } + /** + * 验证用户登录信息,包括密码匹配验证和错误次数限制检查 + * + * @param user 待验证的系统用户对象 + * @throws UserPasswordRetryLimitExceedException 当密码错误次数超过限制时抛出异常 + * @throws UserPasswordNotMatchException 当密码不匹配时抛出异常 + */ public void validate(SysUser user) { + // 获取当前认证的用户名和密码 Authentication usernamePasswordAuthenticationToken = AuthenticationContextHolder.getContext(); String username = usernamePasswordAuthenticationToken.getName(); String password = usernamePasswordAuthenticationToken.getCredentials().toString(); + // 从Redis缓存中获取该用户的密码错误次数 Integer retryCount = redisCache.getCacheObject(getCacheKey(username)); if (retryCount == null) @@ -54,28 +63,44 @@ public class SysPasswordService retryCount = 0; } + // 检查是否达到最大重试次数限制 if (retryCount >= Integer.valueOf(maxRetryCount).intValue()) { throw new UserPasswordRetryLimitExceedException(maxRetryCount, lockTime); } + // 验证密码是否匹配 if (!matches(user, password)) { + // 密码不匹配时,增加错误次数并更新缓存 retryCount = retryCount + 1; redisCache.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES); throw new UserPasswordNotMatchException(); } else { + // 密码匹配成功,清除登录记录缓存 clearLoginRecordCache(username); } } + /** + * 验证原始密码与用户存储密码是否匹配 + * + * @param user 系统用户对象 + * @param rawPassword 原始密码字符串 + * @return 密码匹配返回true,否则返回false + */ public boolean matches(SysUser user, String rawPassword) { return SecurityUtils.matchesPassword(rawPassword, user.getPassword()); } + /** + * 清除指定登录名的登录记录缓存 + * + * @param loginName 登录用户名 + */ public void clearLoginRecordCache(String loginName) { if (redisCache.hasKey(getCacheKey(loginName))) diff --git a/zhyc-framework/src/main/java/com/zhyc/framework/web/service/UserDetailsServiceImpl.java b/zhyc-framework/src/main/java/com/zhyc/framework/web/service/UserDetailsServiceImpl.java index 4bc007f..dd4f583 100644 --- a/zhyc-framework/src/main/java/com/zhyc/framework/web/service/UserDetailsServiceImpl.java +++ b/zhyc-framework/src/main/java/com/zhyc/framework/web/service/UserDetailsServiceImpl.java @@ -54,7 +54,7 @@ public class UserDetailsServiceImpl implements UserDetailsService throw new ServiceException(MessageUtils.message("user.blocked")); } - passwordService.validate(user); +// passwordService.validate(user); return createLoginUser(user); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsage.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsage.java index dd837e9..81c7cc3 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsage.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsage.java @@ -38,6 +38,7 @@ public class SwMedicineUsage extends BaseEntity /** 耳号 */ @Excel(name = "耳号",width = 20, needMerge = true) private String sheepNo; + private String[] sheepNos; private Integer sheepId; /** 使用时间 */ @JsonFormat(pattern = "yyyy-MM-dd") diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/SwMedicineUsageServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/SwMedicineUsageServiceImpl.java index 3f63d29..5d9509f 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/SwMedicineUsageServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/SwMedicineUsageServiceImpl.java @@ -46,6 +46,14 @@ public class SwMedicineUsageServiceImpl implements ISwMedicineUsageService @Override public List selectSwMedicineUsageList(SwMedicineUsage swMedicineUsage) { + String[] sheepNos = null; + if (swMedicineUsage.getSheepNo() != null && !swMedicineUsage.getSheepNo().isEmpty()) { + if (swMedicineUsage.getSheepNo().contains(" ")) { + sheepNos = swMedicineUsage.getSheepNo().split(" "); + swMedicineUsage.setSheepNos(sheepNos); + swMedicineUsage.setSheepNo(null); + } + } return swMedicineUsageMapper.selectSwMedicineUsageList(swMedicineUsage); } diff --git a/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml index 4089456..c1a5b56 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml @@ -73,6 +73,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND bs.manage_tags LIKE CONCAT('%', #{sheepNo}, '%') + + AND ( + + bs.manage_tags LIKE CONCAT('%', #{item}, '%') + + ) + From c9cefa3d334277e2e7a6c2975cf541f39ec6bddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BC=82=E6=B3=8A?= <1913856125@qq.com> Date: Tue, 27 Jan 2026 23:40:51 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E7=94=9F=E7=89=A9=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E5=A4=9A=E7=BE=8A=E5=8F=AA=E8=80=B3=E5=8F=B7=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/controller/BasSheepController.java | 11 ++++++++ .../module/base/mapper/BasSheepMapper.java | 9 +++++++ .../module/base/service/IBasSheepService.java | 7 +++++ .../service/impl/BasSheepServiceImpl.java | 10 +++++++ .../zhyc/module/biosafety/domain/Deworm.java | 7 +++-- .../module/biosafety/domain/Diagnosis.java | 26 +++++++++++++++---- .../zhyc/module/biosafety/domain/Health.java | 24 +++++++++++++---- .../module/biosafety/domain/Immunity.java | 23 +++++++++++++--- .../biosafety/domain/QuarantineReport.java | 5 ++++ .../biosafety/domain/SwMedicineUsage.java | 4 +++ .../module/biosafety/domain/Treatment.java | 3 +++ .../resources/mapper/base/BasSheepMapper.xml | 9 +++++++ .../mapper/biosafety/DewormMapper.xml | 10 +++++++ .../mapper/biosafety/DiagnosisMapper.xml | 11 ++++++++ .../mapper/biosafety/HealthMapper.xml | 9 +++++++ .../mapper/biosafety/ImmunityMapper.xml | 9 +++++++ .../biosafety/QuarantineReportMapper.xml | 10 +++++++ .../biosafety/SwMedicineUsageMapper.xml | 11 ++++++++ .../mapper/biosafety/TreatmentMapper.xml | 11 ++++++++ 19 files changed, 191 insertions(+), 18 deletions(-) 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 007a1dc..49f2c40 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 @@ -46,6 +46,17 @@ public class BasSheepController extends BaseController { return getDataTable(list); } + @GetMapping("/earNumbers") + public AjaxResult searchEarNumbers(@RequestParam("query") String query) { + try { + List earNumbers =basSheepService.searchEarNumbers(query); + return success(earNumbers); + } catch (Exception e) { + logger.error("搜索耳号异常", e); + return error("搜索耳号失败:" + e.getMessage()); + } + } + /** * 导出羊只基本信息列表 */ diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/mapper/BasSheepMapper.java b/zhyc-module/src/main/java/com/zhyc/module/base/mapper/BasSheepMapper.java index a953f9a..7027dca 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 @@ -70,6 +70,15 @@ public interface BasSheepMapper BasSheep selectBasSheepByManageTags(String manageTags); + /** + * 模糊查询母羊耳号列表 + * + * @param query 查询关键字 + * @return 耳号列表 + */ + List searchEarNumbers(@Param("query") String query); + + List selectBasSheepBySheepfold(String id); // 根据牧场ID获取羊只列表 diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/service/IBasSheepService.java b/zhyc-module/src/main/java/com/zhyc/module/base/service/IBasSheepService.java index 18c7351..0d1b0c4 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/service/IBasSheepService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/service/IBasSheepService.java @@ -28,6 +28,13 @@ public interface IBasSheepService */ public List selectBasSheepList(BasSheep basSheep); + /** + * 羊只查询耳号信息 + * + * @param earNumbers 耳号 + * @return 结果 + */ + public List searchEarNumbers(String earNumbers); /** * 新增羊只基本信息 * diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/BasSheepServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/BasSheepServiceImpl.java index 7135f73..938eeec 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/BasSheepServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/BasSheepServiceImpl.java @@ -44,6 +44,16 @@ public class BasSheepServiceImpl implements IBasSheepService return basSheepMapper.selectBasSheepList(basSheep); } + /** + * 搜索羊只 earNumbers + * + * @param query + * @return + */ + @Override + public List searchEarNumbers(String query) { + return basSheepMapper.searchEarNumbers(query); + } /** * 新增羊只基本信息 * diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Deworm.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Deworm.java index dfbf2fa..155e5a1 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Deworm.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Deworm.java @@ -35,6 +35,8 @@ public class Deworm extends BaseEntity @Excel(name = "羊只耳号") private String sheepNo; private String[] sheepNos; + /** 全部羊耳号列表(用于多耳号查询) */ + private List allEarNumbers; @Excel(name = "品种") private String variety; @@ -75,10 +77,7 @@ public class Deworm extends BaseEntity @Excel(name = "备注") private String comment; -// public void setGender(String gender) { -// this.gender = gender; -// this.genderName = Gender.getDescByCode(Integer.valueOf(gender)); -// } + // 排序查询 private String orderByColumn; private String isAsc; diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Diagnosis.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Diagnosis.java index c594ce6..9268f42 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Diagnosis.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Diagnosis.java @@ -1,6 +1,8 @@ package com.zhyc.module.biosafety.domain; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; import com.zhyc.module.enums.Gender; import lombok.AllArgsConstructor; @@ -38,6 +40,9 @@ public class Diagnosis extends BaseEntity @Excel(name = "羊只耳号") private String sheepNo; private String[] sheepNos; + /** 全部羊耳号列表(用于多耳号查询) */ + private List allEarNumbers; + private Long sheepId; @@ -97,12 +102,23 @@ public class Diagnosis extends BaseEntity private Long sheepfoldId; - public void setGender(String gender) { - this.gender = gender; - this.genderName = Gender.getDescByCode(Integer.valueOf(gender)); - } - // 排序查询 private String orderByColumn; private String isAsc; + + public void setGender(String gender) { + this.gender = 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/domain/Health.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Health.java index f61fd2a..8ee82bb 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Health.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Health.java @@ -31,13 +31,15 @@ public class Health extends BaseEntity /** 羊只id */ @Excel(name = "羊只id") private Long sheepId; - private Integer[] sheepIds; /** 羊只id */ @Excel(name = "羊只耳号") private String sheepNo; private String[] sheepNos; + /** 全部羊耳号列表(用于多耳号查询) */ + private List allEarNumbers; + @Excel(name = "品种") private String variety; @@ -70,11 +72,23 @@ public class Health extends BaseEntity // 药品使用 private List usageDetails; - public void setGender(String gender) { - this.gender = gender; - this.genderName = Gender.getDescByCode(Integer.valueOf(gender)); - } // 排序查询 private String orderByColumn; private String isAsc; + + public void setGender(String gender) { + this.gender = 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/domain/Immunity.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Immunity.java index 062069f..e9bcada 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Immunity.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Immunity.java @@ -37,6 +37,9 @@ public class Immunity extends BaseEntity @Excel(name = "羊只耳号") private String sheepNo; private String[] sheepNos; + /** 全部羊耳号列表(用于多耳号查询) */ + private List allEarNumbers; + @Excel(name = "品种") @@ -77,12 +80,24 @@ public class Immunity extends BaseEntity // 药品使用 private List usageDetails; - public void setGender(String gender) { - this.gender = gender; - this.genderName = Gender.getDescByCode(Integer.valueOf(gender)); - } + // 排序查询 private String orderByColumn; private String isAsc; + public void setGender(String gender) { + this.gender = 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/domain/QuarantineReport.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/QuarantineReport.java index 73287f9..0395033 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 @@ -1,6 +1,8 @@ package com.zhyc.module.biosafety.domain; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; import com.zhyc.module.enums.Gender; import lombok.AllArgsConstructor; @@ -37,6 +39,9 @@ public class QuarantineReport extends BaseEntity @Excel(name = "羊只耳号") private String sheepNo; private String[] sheepNos; + /** 全部羊耳号列表(用于多耳号查询) */ + private List allEarNumbers; + @Excel(name = "羊只类别") private String sheepType; diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsage.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsage.java index 81c7cc3..eb11d05 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsage.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsage.java @@ -39,6 +39,10 @@ public class SwMedicineUsage extends BaseEntity @Excel(name = "耳号",width = 20, needMerge = true) private String sheepNo; private String[] sheepNos; + /** 全部羊耳号列表(用于多耳号查询) */ + private List allEarNumbers; + + private Integer sheepId; /** 使用时间 */ @JsonFormat(pattern = "yyyy-MM-dd") diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Treatment.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Treatment.java index ed9c717..994cca8 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Treatment.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Treatment.java @@ -33,6 +33,9 @@ public class Treatment extends BaseEntity @Excel(name = "羊只耳号") private String sheepNo; private String[] sheepNos; + /** 全部羊耳号列表(用于多耳号查询) */ + private List allEarNumbers; + private Long sheepId; // 用于批量新增 diff --git a/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml b/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml index 001a2b7..9e72d5d 100644 --- a/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml +++ b/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml @@ -148,6 +148,15 @@ WHERE s.id = #{id} + + SELECT DISTINCT manage_tags - FROM bas_sheep - WHERE manage_tags LIKE CONCAT(#{query}, '%') + FROM bas_sheep b + + manage_tags LIKE CONCAT(#{query}, '%') AND is_delete = 0 + ${params.dataScope} + ORDER by manage_tags LIMIT 50 diff --git a/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml index b59dca9..f555fb5 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml @@ -58,6 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and datetime between #{params.beginDatetime} and #{params.endDatetime} and technical = #{technical} + ${params.dataScope} @@ -78,13 +79,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into sw_deworm (sheep_id, usage_id, variety, sheep_type, gender, month_age, parity, breed,datetime, technical, comment, - update_by, update_time, create_by, create_time) + update_by, update_time, create_by, create_time,user_id, dept_id) values (#{d.sheepId}, #{d.usageId}, #{d.variety}, #{d.sheepType}, #{d.gender}, #{d.monthAge}, #{d.parity},#{d.breed}, #{d.datetime}, #{d.technical}, #{d.comment}, - #{d.updateBy}, #{d.updateTime}, #{d.createBy}, #{d.createTime}) + #{d.updateBy}, #{d.updateTime}, #{d.createBy}, #{d.createTime},#{d.userId},#{d.deptId}) diff --git a/zhyc-module/src/main/resources/mapper/biosafety/DiagnosisMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/DiagnosisMapper.xml index 854dd0a..242edfa 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/DiagnosisMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/DiagnosisMapper.xml @@ -69,6 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and result = #{result} and treat_day = #{treatDay} and sd.sheepfold_id = #{sheepfoldId} + ${params.dataScope} ORDER BY datetime DESC @@ -101,6 +102,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sheepfold_id, create_by, create_time, + user_id, + dept_id, #{treatId}, @@ -118,6 +121,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{sheepfoldId}, #{createBy}, #{createTime}, + #{userId}, + #{deptId}, diff --git a/zhyc-module/src/main/resources/mapper/biosafety/DisinfectMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/DisinfectMapper.xml index d48020e..89cfa01 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/DisinfectMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/DisinfectMapper.xml @@ -43,7 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ds.sheepfold_name FROM sw_disinfect sd LEFT JOIN da_sheepfold ds ON ds.id = sd.sheepfold_id - WHERE 1 = 1 + 1 = 1 AND sd.sheepfold_id = #{sheepfoldId} AND sd.datetime = #{datetime} AND sd.technician = #{technician} @@ -61,6 +61,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND sm.name like concat('%',#{mediName},'%') ) + ${params.dataScope} + ORDER BY datetime DESC @@ -72,12 +74,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into sw_disinfect - (sheepfold_id, datetime, technician, way, usage_id, ratio, comment, update_by, update_time, create_by, create_time) + (sheepfold_id, datetime, technician, way, usage_id, ratio, comment, update_by, update_time, create_by, create_time, user_id,dept_id) values (#{d.sheepfoldId}, #{d.datetime}, #{d.technician}, #{d.way}, #{d.usageId}, #{d.ratio}, #{d.comment}, - #{d.updateBy}, #{d.updateTime}, #{d.createBy}, #{d.createTime}) + #{d.updateBy}, #{d.updateTime}, #{d.createBy}, #{d.createTime},#{d.userId},#{d.deptId}) diff --git a/zhyc-module/src/main/resources/mapper/biosafety/HealthMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/HealthMapper.xml index ccb208f..d2faf3d 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/HealthMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/HealthMapper.xml @@ -62,6 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and datetime between #{params.beginDatetime} and #{params.endDatetime} and technical = #{technical} + ${params.dataScope} ORDER BY datetime DESC @@ -81,13 +82,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into sw_health (sheep_id, usage_id, variety, sheep_type, gender, month_age, parity, breed,datetime, technical, comment, - update_by, update_time, create_by, create_time) + update_by, update_time, create_by, create_time,user_id,dept_id) values (#{d.sheepId}, #{d.usageId}, #{d.variety}, #{d.sheepType}, #{d.gender}, #{d.monthAge}, #{d.parity},#{d.breed}, #{d.datetime}, #{d.technical}, #{d.comment}, - #{d.updateBy}, #{d.updateTime}, #{d.createBy}, #{d.createTime}) + #{d.updateBy}, #{d.updateTime}, #{d.createBy}, #{d.createTime},#{d.userId},#{d.deptId}) diff --git a/zhyc-module/src/main/resources/mapper/biosafety/ImmunityMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/ImmunityMapper.xml index 4046ba7..c06c8c6 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/ImmunityMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/ImmunityMapper.xml @@ -60,6 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and datetime between #{params.beginDatetime} and #{params.endDatetime} and technical = #{technical} + ${params.dataScope} ORDER BY datetime DESC @@ -79,13 +80,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into sw_immunity (sheep_id, usage_id, variety, sheep_type, gender, month_age, parity, breed,datetime, technical, comment, - update_by, update_time, create_by, create_time) + update_by, update_time, create_by, create_time,user_id,dept_id) values (#{d.sheepId}, #{d.usageId}, #{d.variety}, #{d.sheepType}, #{d.gender}, #{d.monthAge}, #{d.parity},#{d.breed}, #{d.datetime}, #{d.technical}, #{d.comment}, - #{d.updateBy}, #{d.updateTime}, #{d.createBy}, #{d.createTime}) + #{d.updateBy}, #{d.updateTime}, #{d.createBy}, #{d.createTime},#{d.userId},#{d.deptId}) diff --git a/zhyc-module/src/main/resources/mapper/biosafety/QuarantineReportMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/QuarantineReportMapper.xml index db299d2..d16f22d 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/QuarantineReportMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/QuarantineReportMapper.xml @@ -71,6 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and result = #{result} and status = #{status} and sqr.sheep_type=#{sheepType} + ${params.dataScope} ORDER BY datetime DESC @@ -112,7 +113,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by, update_time, create_by, - create_time + create_time, + user_id, + dept_id ) VALUES @@ -133,7 +136,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item.updateBy}, #{item.updateTime}, #{item.createBy}, - #{item.createTime} + #{item.createTime}, + #{item.userId}, + #{item.deptId} ) diff --git a/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml index d155380..72d37e7 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml @@ -111,6 +111,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND sm.name LIKE CONCAT('%', #{name}, '%') ) + ${params.dataScope} ORDER BY smu.datetime DESC @@ -162,6 +163,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time, create_by, create_time, + user_id, + dept_id, #{name}, @@ -173,6 +176,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateTime}, #{createBy}, #{createTime}, + #{userId}, + #{deptId}, diff --git a/zhyc-module/src/main/resources/mapper/biosafety/TreatmentMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/TreatmentMapper.xml index a8fb46e..9164a74 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/TreatmentMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/TreatmentMapper.xml @@ -78,6 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and disease_id = #{diseaseId} and status = #{status} and veterinary = #{veterinary} + ${params.dataScope} ORDER BY datetime DESC @@ -121,6 +122,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time, create_by, create_time, + #{user_id}, + #{dept_id}, #{diagId}, @@ -144,6 +147,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateTime}, #{createBy}, #{createTime}, + #{userId}, + #{deptId}, @@ -152,14 +157,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" (diag_id, sheep_id, variety, sheep_type, month_age, gender, parity, breed, lact_day, gest_day, datetime, disease_id, disease_pid, veterinary, usage_id,status , - comment, update_by, update_time, create_by, create_time) + comment, update_by, update_time, create_by, create_time, user_id, dept_id) values (#{t.diagId}, #{t.sheepId}, #{t.variety}, #{t.sheepType}, #{t.monthAge}, #{t.gender}, #{t.parity}, #{t.breed}, #{t.lactDay}, #{t.gestDay}, #{t.datetime}, #{t.diseaseId}, #{t.diseasePid}, #{t.veterinary},#{t.usageId}, #{t.status}, #{t.comment}, - #{t.updateBy}, #{t.updateTime},#{t.createBy}, #{t.createTime}) + #{t.updateBy}, #{t.updateTime},#{t.createBy}, #{t.createTime},#{t.userId},#{t.deptId}) diff --git a/zhyc-module/src/main/resources/mapper/common/DeptMapper.xml b/zhyc-module/src/main/resources/mapper/common/DeptMapper.xml new file mode 100644 index 0000000..c999c2f --- /dev/null +++ b/zhyc-module/src/main/resources/mapper/common/DeptMapper.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/common/UserMapper.xml b/zhyc-module/src/main/resources/mapper/common/UserMapper.xml index 8e289e2..f01c297 100644 --- a/zhyc-module/src/main/resources/mapper/common/UserMapper.xml +++ b/zhyc-module/src/main/resources/mapper/common/UserMapper.xml @@ -12,14 +12,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + SELECT DISTINCT u.user_id, u.nick_name, p.post_name, p.post_code + FROM sys_user u + JOIN sys_user_post up ON u.user_id = up.user_id + JOIN sys_post p ON up.post_id = p.post_id + WHERE p.post_code LIKE CONCAT('%', #{postCode}, '%') + AND u.status = 0 + AND u.del_flag = 0 + + + + WITH RECURSIVE dept_tree AS ( + SELECT dept_id FROM sys_dept WHERE dept_id = #{deptId} + UNION ALL + SELECT d.dept_id + FROM sys_dept d + INNER JOIN dept_tree dt ON d.parent_id = dt.dept_id + ) + SELECT DISTINCT u.user_id, u.nick_name, p.post_name, p.post_code + FROM dept_tree dt + JOIN sys_user u ON u.dept_id = dt.dept_id + JOIN sys_user_post up ON u.user_id = up.user_id + JOIN sys_post p ON up.post_id = p.post_id + WHERE p.post_code LIKE CONCAT('%', #{postCode}, '%') + AND u.status = 0 + AND u.del_flag = 0 + + + \ No newline at end of file From f0acd149c75c2b8f72e55535d66cb3863d7df084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BC=82=E6=B3=8A?= <1913856125@qq.com> Date: Fri, 30 Jan 2026 15:50:23 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E7=89=A7=E5=9C=BA=E8=B7=9F=E8=B7=9F?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysDeptController.java | 3 ++ .../common/core/domain/entity/SysDept.java | 20 ++++++++ .../common/core/domain/entity/SysRanch.java | 36 ++++++++++++++ .../resources/mapper/base/DaRanchMapper.xml | 12 ++--- .../produce/breed/ScPregnancyRecordMapper.xml | 4 +- .../com/zhyc/system/mapper/SysDeptMapper.java | 48 +++++++++++++------ .../zhyc/system/service/ISysDeptService.java | 4 ++ .../service/impl/SysDeptServiceImpl.java | 29 ++++++++++- .../resources/mapper/system/SysDeptMapper.xml | 24 +++++++--- 9 files changed, 150 insertions(+), 30 deletions(-) create mode 100644 zhyc-common/src/main/java/com/zhyc/common/core/domain/entity/SysRanch.java diff --git a/zhyc-admin/src/main/java/com/zhyc/web/controller/system/SysDeptController.java b/zhyc-admin/src/main/java/com/zhyc/web/controller/system/SysDeptController.java index 8113089..983a84d 100644 --- a/zhyc-admin/src/main/java/com/zhyc/web/controller/system/SysDeptController.java +++ b/zhyc-admin/src/main/java/com/zhyc/web/controller/system/SysDeptController.java @@ -76,6 +76,9 @@ public class SysDeptController extends BaseController @PostMapping public AjaxResult add(@Validated @RequestBody SysDept dept) { + if (!deptService.checkRanchName(dept)){ + return error("新增部门'" + dept.getDeptName() + "'失败,牧场名称已存在"); + } if (!deptService.checkDeptNameUnique(dept)) { return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); diff --git a/zhyc-common/src/main/java/com/zhyc/common/core/domain/entity/SysDept.java b/zhyc-common/src/main/java/com/zhyc/common/core/domain/entity/SysDept.java index 04b80ee..3d1d6b2 100644 --- a/zhyc-common/src/main/java/com/zhyc/common/core/domain/entity/SysDept.java +++ b/zhyc-common/src/main/java/com/zhyc/common/core/domain/entity/SysDept.java @@ -31,6 +31,10 @@ public class SysDept extends BaseEntity /** 部门名称 */ private String deptName; + /** 牧场id */ + private Long ranchId; + private String ranchName; + /** 显示顺序 */ private Integer orderNum; @@ -55,6 +59,22 @@ public class SysDept extends BaseEntity /** 子部门 */ private List children = new ArrayList(); + public String getRanchName() { + return ranchName; + } + + public void setRanchName(String ranchName) { + this.ranchName = ranchName; + } + + public Long getRanchId() { + return ranchId; + } + + public void setRanchId(Long ranchId) { + this.ranchId = ranchId; + } + public Long getDeptId() { return deptId; diff --git a/zhyc-common/src/main/java/com/zhyc/common/core/domain/entity/SysRanch.java b/zhyc-common/src/main/java/com/zhyc/common/core/domain/entity/SysRanch.java new file mode 100644 index 0000000..559132b --- /dev/null +++ b/zhyc-common/src/main/java/com/zhyc/common/core/domain/entity/SysRanch.java @@ -0,0 +1,36 @@ +package com.zhyc.common.core.domain.entity; + +import com.zhyc.common.core.domain.BaseEntity; + +/** + * 牧场管理对象 da_ranch + * + * @author ruoyi + * @date 2025-07-22 + */ +public class SysRanch extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 牧场名称 */ + private String ranch; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getRanch() { + return ranch; + } + + public void setRanch(String ranch) { + this.ranch = ranch; + } +} diff --git a/zhyc-module/src/main/resources/mapper/base/DaRanchMapper.xml b/zhyc-module/src/main/resources/mapper/base/DaRanchMapper.xml index 2b7afb2..abd9129 100644 --- a/zhyc-module/src/main/resources/mapper/base/DaRanchMapper.xml +++ b/zhyc-module/src/main/resources/mapper/base/DaRanchMapper.xml @@ -6,18 +6,18 @@ - + - select id, ranch + select id, sysRanch from da_ranch @@ -29,17 +29,17 @@ insert into da_ranch - ranch, + sysRanch, - #{ranch}, + #{sysRanch}, update da_ranch - ranch = #{ranch}, + sysRanch = #{sysRanch}, where id = #{id} diff --git a/zhyc-module/src/main/resources/mapper/produce/breed/ScPregnancyRecordMapper.xml b/zhyc-module/src/main/resources/mapper/produce/breed/ScPregnancyRecordMapper.xml index ae99b14..39f32c3 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScPregnancyRecordMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScPregnancyRecordMapper.xml @@ -29,7 +29,7 @@ - + @@ -54,7 +54,7 @@ sf.breed, sf.expected_date, sf.lambing_date as last_event_date, - sf.dr_ranch as ranch, + sf.dr_ranch as sysRanch, -- 关联配种信息 ram_sf.bs_manage_tags as father_manage_tags, ram_sf.variety as father_variety, diff --git a/zhyc-system/src/main/java/com/zhyc/system/mapper/SysDeptMapper.java b/zhyc-system/src/main/java/com/zhyc/system/mapper/SysDeptMapper.java index 671fc33..0b77785 100644 --- a/zhyc-system/src/main/java/com/zhyc/system/mapper/SysDeptMapper.java +++ b/zhyc-system/src/main/java/com/zhyc/system/mapper/SysDeptMapper.java @@ -1,7 +1,9 @@ package com.zhyc.system.mapper; import java.util.List; -import org.apache.ibatis.annotations.Param; + +import com.zhyc.common.core.domain.entity.SysRanch; +import org.apache.ibatis.annotations.*; import com.zhyc.common.core.domain.entity.SysDept; /** @@ -13,7 +15,7 @@ public interface SysDeptMapper { /** * 查询部门管理数据 - * + * * @param dept 部门信息 * @return 部门信息集合 */ @@ -21,7 +23,7 @@ public interface SysDeptMapper /** * 根据角色ID查询部门树信息 - * + * * @param roleId 角色ID * @param deptCheckStrictly 部门树选择项是否关联显示 * @return 选中部门列表 @@ -30,7 +32,7 @@ public interface SysDeptMapper /** * 根据部门ID查询信息 - * + * * @param deptId 部门ID * @return 部门信息 */ @@ -38,7 +40,7 @@ public interface SysDeptMapper /** * 根据ID查询所有子部门 - * + * * @param deptId 部门ID * @return 部门列表 */ @@ -46,7 +48,7 @@ public interface SysDeptMapper /** * 根据ID查询所有子部门(正常状态) - * + * * @param deptId 部门ID * @return 子部门数 */ @@ -54,7 +56,7 @@ public interface SysDeptMapper /** * 是否存在子节点 - * + * * @param deptId 部门ID * @return 结果 */ @@ -62,7 +64,7 @@ public interface SysDeptMapper /** * 查询部门是否存在用户 - * + * * @param deptId 部门ID * @return 结果 */ @@ -70,7 +72,7 @@ public interface SysDeptMapper /** * 校验部门名称是否唯一 - * + * * @param deptName 部门名称 * @param parentId 父部门ID * @return 结果 @@ -79,7 +81,7 @@ public interface SysDeptMapper /** * 新增部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -87,7 +89,7 @@ public interface SysDeptMapper /** * 修改部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -95,14 +97,14 @@ public interface SysDeptMapper /** * 修改所在部门正常状态 - * + * * @param deptIds 部门ID组 */ public void updateDeptStatusNormal(Long[] deptIds); /** * 修改子元素关系 - * + * * @param depts 子元素 * @return 结果 */ @@ -110,9 +112,27 @@ public interface SysDeptMapper /** * 删除部门管理信息 - * + * * @param deptId 部门ID * @return 结果 */ public int deleteDeptById(Long deptId); + + @Insert("insert into da_ranch(ranch) values(#{ranch})") + @Options(useGeneratedKeys = true, keyProperty = "id") + public void insertRanch(SysRanch r); + + @Insert("insert into sys_dept_ranch(dept_id,ranch_id) values(#{deptId},#{ranchId})") + void insertRanchDept(@Param("deptId") Long deptId, @Param("ranchId")Long ranchId); + + @Select("select * from da_ranch where ranch = #{ranchName}") + SysRanch checkRanchExist(String ranchName); + + @Select("select ranch_id from sys_dept_ranch where dept_id = #{deptId}") + Long selectSysRanchDeptById(@Param("deptId") Long deptId); + @Delete("delete from sys_dept_ranch where dept_id=#{deptId}") + void deleteSysRanchDeptById(Long deptId); + @Delete("delete from da_ranch where id= #{ranchId}") + void deleteRanchById(Long ranchId); } + diff --git a/zhyc-system/src/main/java/com/zhyc/system/service/ISysDeptService.java b/zhyc-system/src/main/java/com/zhyc/system/service/ISysDeptService.java index 7d8709c..1401c44 100644 --- a/zhyc-system/src/main/java/com/zhyc/system/service/ISysDeptService.java +++ b/zhyc-system/src/main/java/com/zhyc/system/service/ISysDeptService.java @@ -91,6 +91,8 @@ public interface ISysDeptService */ public boolean checkDeptNameUnique(SysDept dept); + boolean checkRanchName(SysDept dept); + /** * 校验部门是否有数据权限 * @@ -121,4 +123,6 @@ public interface ISysDeptService * @return 结果 */ public int deleteDeptById(Long deptId); + + } diff --git a/zhyc-system/src/main/java/com/zhyc/system/service/impl/SysDeptServiceImpl.java b/zhyc-system/src/main/java/com/zhyc/system/service/impl/SysDeptServiceImpl.java index cee10f2..38e81ba 100644 --- a/zhyc-system/src/main/java/com/zhyc/system/service/impl/SysDeptServiceImpl.java +++ b/zhyc-system/src/main/java/com/zhyc/system/service/impl/SysDeptServiceImpl.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; + +import com.zhyc.common.core.domain.entity.SysRanch; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zhyc.common.annotation.DataScope; @@ -20,6 +22,7 @@ import com.zhyc.common.utils.spring.SpringUtils; import com.zhyc.system.mapper.SysDeptMapper; import com.zhyc.system.mapper.SysRoleMapper; import com.zhyc.system.service.ISysDeptService; +import org.springframework.transaction.annotation.Transactional; /** * 部门管理 服务实现 @@ -182,6 +185,18 @@ public class SysDeptServiceImpl implements ISysDeptService return UserConstants.UNIQUE; } + @Override + public boolean checkRanchName(SysDept dept) { + if (!StringUtils.isNull(dept.getRanchName())){ + SysRanch ranch = deptMapper.checkRanchExist(dept.getRanchName()); + if (ranch!=null){ + return false; + } + } + + return true; + } + /** * 校验部门是否有数据权限 * @@ -209,6 +224,7 @@ public class SysDeptServiceImpl implements ISysDeptService * @return 结果 */ @Override + @Transactional public int insertDept(SysDept dept) { SysDept info = deptMapper.selectDeptById(dept.getParentId()); @@ -218,7 +234,15 @@ public class SysDeptServiceImpl implements ISysDeptService throw new ServiceException("部门停用,不允许新增"); } dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); - return deptMapper.insertDept(dept); + int i = deptMapper.insertDept(dept); + if (dept.getRanchName()!=null){ + SysRanch sysRanch = new SysRanch(); + sysRanch.setRanch(dept.getRanchName()); + deptMapper.insertRanch(sysRanch); + deptMapper.insertRanchDept(dept.getDeptId(), sysRanch.getId()); + } + + return i; } /** @@ -290,6 +314,9 @@ public class SysDeptServiceImpl implements ISysDeptService @Override public int deleteDeptById(Long deptId) { + Long ranchId=deptMapper.selectSysRanchDeptById(deptId); + deptMapper.deleteSysRanchDeptById(deptId); + deptMapper.deleteRanchById(ranchId); return deptMapper.deleteDeptById(deptId); } diff --git a/zhyc-system/src/main/resources/mapper/system/SysDeptMapper.xml b/zhyc-system/src/main/resources/mapper/system/SysDeptMapper.xml index 5f1817c..96b8569 100644 --- a/zhyc-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/zhyc-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -20,13 +20,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - + + + - select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time - from sys_dept d - - + select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, + d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, + d.create_time, d.update_by, d.update_time, + r.ranch ranch_name + from sys_dept d + left join sys_dept_ranch dr on d.dept_id = dr.dept_id + left join da_ranch r on dr.ranch_id = r.id + + + - - + + + insert into sys_dept( dept_id, parent_id,