diff --git a/pom.xml b/pom.xml index ff96c7d..3c3a3f0 100644 --- a/pom.xml +++ b/pom.xml @@ -190,7 +190,7 @@ org.apache.poi poi-ooxml-schemas - ${poi.version} + 4.1.2 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/annotation/DataScope.java b/zhyc-common/src/main/java/com/zhyc/common/annotation/DataScope.java index 05265e5..4897ca9 100644 --- a/zhyc-common/src/main/java/com/zhyc/common/annotation/DataScope.java +++ b/zhyc-common/src/main/java/com/zhyc/common/annotation/DataScope.java @@ -11,7 +11,7 @@ import java.lang.annotation.Target; * * @author ruoyi */ -@Target(ElementType.METHOD) +@Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface DataScope 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-framework/src/main/java/com/zhyc/framework/config/SecurityConfig.java b/zhyc-framework/src/main/java/com/zhyc/framework/config/SecurityConfig.java index 3f75552..c9d425f 100644 --- a/zhyc-framework/src/main/java/com/zhyc/framework/config/SecurityConfig.java +++ b/zhyc-framework/src/main/java/com/zhyc/framework/config/SecurityConfig.java @@ -111,10 +111,12 @@ public class SecurityConfig .authorizeHttpRequests((requests) -> { permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); // 对于登录login 注册register 验证码captchaImage 允许匿名访问 - requests.antMatchers("/login", "/register", "/captchaImage").permitAll() + requests.antMatchers("/app/**").permitAll() + .antMatchers("/login", "/register", "/captchaImage").permitAll() // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() + // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated(); }) 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/pom.xml b/zhyc-module/pom.xml index e597815..9555124 100644 --- a/zhyc-module/pom.xml +++ b/zhyc-module/pom.xml @@ -155,6 +155,56 @@ org.projectlombok lombok + + + + org.springframework.boot + spring-boot-starter-web + + + + + net.sourceforge.tess4j + tess4j + 4.5.4 + + + + + commons-fileupload + commons-fileupload + 1.4 + + + + + org.projectlombok + lombok + true + + + junit + junit + + + org.junit.jupiter + junit-jupiter + + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-test + + + org.projectlombok + lombok + \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/app/controller/AppErrorLogController.java b/zhyc-module/src/main/java/com/zhyc/module/app/controller/AppErrorLogController.java new file mode 100644 index 0000000..71dfa9b --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/app/controller/AppErrorLogController.java @@ -0,0 +1,106 @@ +package com.zhyc.module.app.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.zhyc.module.app.domain.AppErrorLog; +import com.zhyc.module.app.service.IAppErrorLogService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import 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.utils.poi.ExcelUtil; +import com.zhyc.common.core.page.TableDataInfo; + +/** + * App错误日志Controller + * + * @author ruoyi + * @date 2026-01-19 + */ +@RestController +@RequestMapping("/app/error") +public class AppErrorLogController extends BaseController +{ + @Autowired + private IAppErrorLogService appErrorLogService; + + /** + * 查询App错误日志列表 + */ +// @PreAuthorize("@ss.hasPermi('app:app:list')") + @GetMapping("/list") + public TableDataInfo list(AppErrorLog appErrorLog) + { + startPage(); + List list = appErrorLogService.selectAppErrorLogList(appErrorLog); + return getDataTable(list); + } + + /** + * 导出App错误日志列表 + */ +// @PreAuthorize("@ss.hasPermi('app:app:export')") + @Log(title = "App错误日志", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, AppErrorLog appErrorLog) + { + List list = appErrorLogService.selectAppErrorLogList(appErrorLog); + ExcelUtil util = new ExcelUtil(AppErrorLog.class); + util.exportExcel(response, list, "App错误日志数据"); + } + + /** + * 获取App错误日志详细信息 + */ +// @PreAuthorize("@ss.hasPermi('app:app:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(appErrorLogService.selectAppErrorLogById(id)); + } + + /** + * 新增App错误日志 + */ +// @PreAuthorize("@ss.hasPermi('app:app:add')") + @Log(title = "App错误日志", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AppErrorLog appErrorLog) + { + return toAjax(appErrorLogService.insertAppErrorLog(appErrorLog)); + } + + /** + * 修改App错误日志 + */ +// @PreAuthorize("@ss.hasPermi('app:app:edit')") + @Log(title = "App错误日志", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AppErrorLog appErrorLog) + { + return toAjax(appErrorLogService.updateAppErrorLog(appErrorLog)); + } + + /** + * 删除App错误日志 + */ +// @PreAuthorize("@ss.hasPermi('app:app:remove')") + @Log(title = "App错误日志", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(appErrorLogService.deleteAppErrorLogByIds(ids)); + } +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/app/controller/AppSettingsController.java b/zhyc-module/src/main/java/com/zhyc/module/app/controller/AppSettingsController.java new file mode 100644 index 0000000..d1a0e6f --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/app/controller/AppSettingsController.java @@ -0,0 +1,106 @@ +package com.zhyc.module.app.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.zhyc.module.app.domain.AppSettings; +import com.zhyc.module.app.service.IAppSettingsService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import 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.utils.poi.ExcelUtil; +import com.zhyc.common.core.page.TableDataInfo; + +/** + * 应用设置Controller + * + * @author ruoyi + * @date 2026-01-20 + */ +@RestController +@RequestMapping("/app/settings") +public class AppSettingsController extends BaseController +{ + @Autowired + private IAppSettingsService appSettingsService; + + /** + * 查询应用设置列表 + */ +// @PreAuthorize("@ss.hasPermi('app:settings:list')") + @GetMapping("/list") + public TableDataInfo list(AppSettings appSettings) + { + startPage(); + List list = appSettingsService.selectAppSettingsList(appSettings); + return getDataTable(list); + } + + /** + * 导出应用设置列表 + */ +// @PreAuthorize("@ss.hasPermi('app:settings:export')") + @Log(title = "应用设置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, AppSettings appSettings) + { + List list = appSettingsService.selectAppSettingsList(appSettings); + ExcelUtil util = new ExcelUtil(AppSettings.class); + util.exportExcel(response, list, "应用设置数据"); + } + + /** + * 获取应用设置详细信息 + */ +// @PreAuthorize("@ss.hasPermi('app:settings:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(appSettingsService.selectAppSettingsById(id)); + } + + /** + * 新增应用设置 + */ +// @PreAuthorize("@ss.hasPermi('app:settings:add')") + @Log(title = "应用设置", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AppSettings appSettings) + { + return toAjax(appSettingsService.insertAppSettings(appSettings)); + } + + /** + * 修改应用设置 + */ +// @PreAuthorize("@ss.hasPermi('app:settings:edit')") + @Log(title = "应用设置", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AppSettings appSettings) + { + return toAjax(appSettingsService.updateAppSettings(appSettings)); + } + + /** + * 删除应用设置 + */ +// @PreAuthorize("@ss.hasPermi('app:settings:remove')") + @Log(title = "应用设置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(appSettingsService.deleteAppSettingsByIds(ids)); + } +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/app/domain/AppErrorLog.java b/zhyc-module/src/main/java/com/zhyc/module/app/domain/AppErrorLog.java new file mode 100644 index 0000000..1376fa4 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/app/domain/AppErrorLog.java @@ -0,0 +1,96 @@ +package com.zhyc.module.app.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +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; + +/** + * App错误日志对象 app_error_log + * + * @author ruoyi + * @date 2026-01-19 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AppErrorLog extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID,自增 */ + private Long id; + + /** 设备唯一标识 */ + @Excel(name = "设备唯一标识") + private String deviceId; + + /** 用户ID */ + @Excel(name = "用户ID") + private Long userId; + + /** App版本号 */ + @Excel(name = "App版本号") + private String appVersion; + + /** App版本号 */ + @Excel(name = "App版本号") + private Long appCode; + + /** 平台类型 */ + @Excel(name = "平台类型") + private String platform; + + /** 操作系统版本 */ + @Excel(name = "操作系统版本") + private String osVersion; + + /** 错误类型分类 */ + @Excel(name = "错误类型分类") + private String errorType; + + /** 错误代码 */ + @Excel(name = "错误代码") + private String errorCode; + + /** 错误描述信息 */ + @Excel(name = "错误描述信息") + private String errorMessage; + + /** 错误堆栈跟踪 */ + @Excel(name = "错误堆栈跟踪") + private String stackTrace; + + /** 页面路径 */ + @Excel(name = "页面路径") + private String pageUrl; + + /** API接口地址 */ + @Excel(name = "API接口地址") + private String apiUrl; + + /** API调用参数 */ + @Excel(name = "API调用参数") + private String apiParams; + + /** 网络类型 */ + @Excel(name = "网络类型") + private String networkType; + + /** 屏幕宽度 */ + @Excel(name = "屏幕宽度") + private Long screenWidth; + + /** 屏幕高度 */ + @Excel(name = "屏幕高度") + private Long screenHeight; + + /** 自定义扩展数据,JSON格式 */ + @Excel(name = "自定义扩展数据,JSON格式") + private String customData; +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/app/domain/AppSettings.java b/zhyc-module/src/main/java/com/zhyc/module/app/domain/AppSettings.java new file mode 100644 index 0000000..5bd120d --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/app/domain/AppSettings.java @@ -0,0 +1,71 @@ +package com.zhyc.module.app.domain; + +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; + +/** + * 应用设置对象 app_settings + * + * @author ruoyi + * @date 2026-01-20 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class AppSettings extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 用户ID,0为全局 */ + @Excel(name = "用户ID,0为全局") + private Long userId; + + /** 设置键名 */ + @Excel(name = "设置键名") + private String settingKey; + + /** 设置 */ + @Excel(name = "设置") + private String settingValue; + + /** 值类型 */ + @Excel(name = "值类型") + private String settingType; + + /** 设置分组 */ + @Excel(name = "设置分组") + private String settingGroup; + + /** 设置描述 */ + @Excel(name = "设置描述") + private String settingDesc; + + /** 适用平台 */ + @Excel(name = "适用平台") + private String platform; + + /** 适用版本范围 */ + @Excel(name = "适用版本范围") + private String versionRange; + + /** 状态 */ + @Excel(name = "状态") + private Integer status; + + /** 逻辑位 */ + @Excel(name = "逻辑位") + private Integer logical; + + /** 自定义扩展数据,JSON格式 */ + @Excel(name = "自定义扩展数据,JSON格式") + private String customData; + +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/app/mapper/AppErrorLogMapper.java b/zhyc-module/src/main/java/com/zhyc/module/app/mapper/AppErrorLogMapper.java new file mode 100644 index 0000000..504db29 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/app/mapper/AppErrorLogMapper.java @@ -0,0 +1,64 @@ +package com.zhyc.module.app.mapper; + +import java.util.List; + +import com.zhyc.module.app.domain.AppErrorLog; +import org.apache.ibatis.annotations.Mapper; + +/** + * App错误日志Mapper接口 + * + * @author ruoyi + * @date 2026-01-19 + */ +@Mapper +public interface AppErrorLogMapper +{ + /** + * 查询App错误日志 + * + * @param id App错误日志主键 + * @return App错误日志 + */ + public AppErrorLog selectAppErrorLogById(Long id); + + /** + * 查询App错误日志列表 + * + * @param appErrorLog App错误日志 + * @return App错误日志集合 + */ + public List selectAppErrorLogList(AppErrorLog appErrorLog); + + /** + * 新增App错误日志 + * + * @param appErrorLog App错误日志 + * @return 结果 + */ + public int insertAppErrorLog(AppErrorLog appErrorLog); + + /** + * 修改App错误日志 + * + * @param appErrorLog App错误日志 + * @return 结果 + */ + public int updateAppErrorLog(AppErrorLog appErrorLog); + + /** + * 删除App错误日志 + * + * @param id App错误日志主键 + * @return 结果 + */ + public int deleteAppErrorLogById(Long id); + + /** + * 批量删除App错误日志 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAppErrorLogByIds(Long[] ids); +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/app/mapper/AppSettingsMapper.java b/zhyc-module/src/main/java/com/zhyc/module/app/mapper/AppSettingsMapper.java new file mode 100644 index 0000000..bb44087 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/app/mapper/AppSettingsMapper.java @@ -0,0 +1,62 @@ +package com.zhyc.module.app.mapper; + +import com.zhyc.module.app.domain.AppSettings; + +import java.util.List; + +/** + * 应用设置Mapper接口 + * + * @author ruoyi + * @date 2026-01-20 + */ +public interface AppSettingsMapper +{ + /** + * 查询应用设置 + * + * @param id 应用设置主键 + * @return 应用设置 + */ + public AppSettings selectAppSettingsById(Long id); + + /** + * 查询应用设置列表 + * + * @param appSettings 应用设置 + * @return 应用设置集合 + */ + public List selectAppSettingsList(AppSettings appSettings); + + /** + * 新增应用设置 + * + * @param appSettings 应用设置 + * @return 结果 + */ + public int insertAppSettings(AppSettings appSettings); + + /** + * 修改应用设置 + * + * @param appSettings 应用设置 + * @return 结果 + */ + public int updateAppSettings(AppSettings appSettings); + + /** + * 删除应用设置 + * + * @param id 应用设置主键 + * @return 结果 + */ + public int deleteAppSettingsById(Long id); + + /** + * 批量删除应用设置 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAppSettingsByIds(Long[] ids); +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/app/service/IAppErrorLogService.java b/zhyc-module/src/main/java/com/zhyc/module/app/service/IAppErrorLogService.java new file mode 100644 index 0000000..c92fd06 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/app/service/IAppErrorLogService.java @@ -0,0 +1,62 @@ +package com.zhyc.module.app.service; + +import com.zhyc.module.app.domain.AppErrorLog; + +import java.util.List; + +/** + * App错误日志Service接口 + * + * @author ruoyi + * @date 2026-01-19 + */ +public interface IAppErrorLogService +{ + /** + * 查询App错误日志 + * + * @param id App错误日志主键 + * @return App错误日志 + */ + public AppErrorLog selectAppErrorLogById(Long id); + + /** + * 查询App错误日志列表 + * + * @param appErrorLog App错误日志 + * @return App错误日志集合 + */ + public List selectAppErrorLogList(AppErrorLog appErrorLog); + + /** + * 新增App错误日志 + * + * @param appErrorLog App错误日志 + * @return 结果 + */ + public int insertAppErrorLog(AppErrorLog appErrorLog); + + /** + * 修改App错误日志 + * + * @param appErrorLog App错误日志 + * @return 结果 + */ + public int updateAppErrorLog(AppErrorLog appErrorLog); + + /** + * 批量删除App错误日志 + * + * @param ids 需要删除的App错误日志主键集合 + * @return 结果 + */ + public int deleteAppErrorLogByIds(Long[] ids); + + /** + * 删除App错误日志信息 + * + * @param id App错误日志主键 + * @return 结果 + */ + public int deleteAppErrorLogById(Long id); +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/app/service/IAppSettingsService.java b/zhyc-module/src/main/java/com/zhyc/module/app/service/IAppSettingsService.java new file mode 100644 index 0000000..fbb184d --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/app/service/IAppSettingsService.java @@ -0,0 +1,63 @@ +package com.zhyc.module.app.service; + +import com.zhyc.module.app.domain.AppSettings; + +import java.util.List; + + +/** + * 应用设置Service接口 + * + * @author ruoyi + * @date 2026-01-20 + */ +public interface IAppSettingsService +{ + /** + * 查询应用设置 + * + * @param id 应用设置主键 + * @return 应用设置 + */ + public AppSettings selectAppSettingsById(Long id); + + /** + * 查询应用设置列表 + * + * @param appSettings 应用设置 + * @return 应用设置集合 + */ + public List selectAppSettingsList(AppSettings appSettings); + + /** + * 新增应用设置 + * + * @param appSettings 应用设置 + * @return 结果 + */ + public int insertAppSettings(AppSettings appSettings); + + /** + * 修改应用设置 + * + * @param appSettings 应用设置 + * @return 结果 + */ + public int updateAppSettings(AppSettings appSettings); + + /** + * 批量删除应用设置 + * + * @param ids 需要删除的应用设置主键集合 + * @return 结果 + */ + public int deleteAppSettingsByIds(Long[] ids); + + /** + * 删除应用设置信息 + * + * @param id 应用设置主键 + * @return 结果 + */ + public int deleteAppSettingsById(Long id); +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/app/service/impl/AppErrorLogServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/app/service/impl/AppErrorLogServiceImpl.java new file mode 100644 index 0000000..ef12dd6 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/app/service/impl/AppErrorLogServiceImpl.java @@ -0,0 +1,97 @@ +package com.zhyc.module.app.service.impl; + +import java.util.List; +import com.zhyc.common.utils.DateUtils; +import com.zhyc.module.app.domain.AppErrorLog; +import com.zhyc.module.app.mapper.AppErrorLogMapper; +import com.zhyc.module.app.service.IAppErrorLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + + +/** + * App错误日志Service业务层处理 + * + * @author ruoyi + * @date 2026-01-19 + */ +@Service +public class AppErrorLogServiceImpl implements IAppErrorLogService +{ + @Autowired + private AppErrorLogMapper appErrorLogMapper; + + /** + * 查询App错误日志 + * + * @param id App错误日志主键 + * @return App错误日志 + */ + @Override + public AppErrorLog selectAppErrorLogById(Long id) + { + return appErrorLogMapper.selectAppErrorLogById(id); + } + + /** + * 查询App错误日志列表 + * + * @param appErrorLog App错误日志 + * @return App错误日志 + */ + @Override + public List selectAppErrorLogList(AppErrorLog appErrorLog) + { + return appErrorLogMapper.selectAppErrorLogList(appErrorLog); + } + + /** + * 新增App错误日志 + * + * @param appErrorLog App错误日志 + * @return 结果 + */ + @Override + public int insertAppErrorLog(AppErrorLog appErrorLog) + { + appErrorLog.setCreateTime(DateUtils.getNowDate()); + return appErrorLogMapper.insertAppErrorLog(appErrorLog); + } + + /** + * 修改App错误日志 + * + * @param appErrorLog App错误日志 + * @return 结果 + */ + @Override + public int updateAppErrorLog(AppErrorLog appErrorLog) + { + return appErrorLogMapper.updateAppErrorLog(appErrorLog); + } + + /** + * 批量删除App错误日志 + * + * @param ids 需要删除的App错误日志主键 + * @return 结果 + */ + @Override + public int deleteAppErrorLogByIds(Long[] ids) + { + return appErrorLogMapper.deleteAppErrorLogByIds(ids); + } + + /** + * 删除App错误日志信息 + * + * @param id App错误日志主键 + * @return 结果 + */ + @Override + public int deleteAppErrorLogById(Long id) + { + return appErrorLogMapper.deleteAppErrorLogById(id); + } +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/app/service/impl/AppSettingsServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/app/service/impl/AppSettingsServiceImpl.java new file mode 100644 index 0000000..13e787b --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/app/service/impl/AppSettingsServiceImpl.java @@ -0,0 +1,96 @@ +package com.zhyc.module.app.service.impl; + +import java.util.List; +import com.zhyc.common.utils.DateUtils; +import com.zhyc.module.app.domain.AppSettings; +import com.zhyc.module.app.mapper.AppSettingsMapper; +import com.zhyc.module.app.service.IAppSettingsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 应用设置Service业务层处理 + * + * @author ruoyi + * @date 2026-01-20 + */ +@Service +public class AppSettingsServiceImpl implements IAppSettingsService +{ + @Autowired + private AppSettingsMapper appSettingsMapper; + + /** + * 查询应用设置 + * + * @param id 应用设置主键 + * @return 应用设置 + */ + @Override + public AppSettings selectAppSettingsById(Long id) + { + return appSettingsMapper.selectAppSettingsById(id); + } + + /** + * 查询应用设置列表 + * + * @param appSettings 应用设置 + * @return 应用设置 + */ + @Override + public List selectAppSettingsList(AppSettings appSettings) + { + return appSettingsMapper.selectAppSettingsList(appSettings); + } + + /** + * 新增应用设置 + * + * @param appSettings 应用设置 + * @return 结果 + */ + @Override + public int insertAppSettings(AppSettings appSettings) + { + appSettings.setCreateTime(DateUtils.getNowDate()); + return appSettingsMapper.insertAppSettings(appSettings); + } + + /** + * 修改应用设置 + * + * @param appSettings 应用设置 + * @return 结果 + */ + @Override + public int updateAppSettings(AppSettings appSettings) + { + appSettings.setUpdateTime(DateUtils.getNowDate()); + return appSettingsMapper.updateAppSettings(appSettings); + } + + /** + * 批量删除应用设置 + * + * @param ids 需要删除的应用设置主键 + * @return 结果 + */ + @Override + public int deleteAppSettingsByIds(Long[] ids) + { + return appSettingsMapper.deleteAppSettingsByIds(ids); + } + + /** + * 删除应用设置信息 + * + * @param id 应用设置主键 + * @return 结果 + */ + @Override + public int deleteAppSettingsById(Long id) + { + return appSettingsMapper.deleteAppSettingsById(id); + } +} 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..3466b17 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,18 @@ 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()); + } + } + /** * 导出羊只基本信息列表 */ @@ -125,7 +137,6 @@ public class BasSheepController extends BaseController { } BasSheep query = new BasSheep(); query.setTypeId(typeId.longValue()); - startPage(); List list = basSheepService.selectBasSheepList(query); return getDataTable(list); } @@ -142,7 +153,6 @@ public class BasSheepController extends BaseController { BasSheep query = new BasSheep(); query.setSheepfoldId(sheepfoldId.longValue()); query.setTypeId(typeId.longValue()); - startPage(); List list = basSheepService.selectBasSheepList(query); return getDataTable(list); } @@ -179,7 +189,6 @@ public class BasSheepController extends BaseController { return success(result); } - /** * 判断耳号是否存在(用于新增羊只时校验) */ diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/controller/DaRanchController.java b/zhyc-module/src/main/java/com/zhyc/module/base/controller/DaRanchController.java index 14a3ac5..203737a 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/controller/DaRanchController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/controller/DaRanchController.java @@ -77,7 +77,7 @@ public class DaRanchController extends BaseController /** * 获取指定牧场下的所有羊只耳号 */ -// @GetMapping("/getSheepByRanchId/{ranchId}") + @GetMapping("/getSheepByRanchId/{ranchId}") public AjaxResult getSheepByRanchId(@PathVariable Long ranchId) { List sheepList = basSheepService.getSheepByRanchId(ranchId); return AjaxResult.success(sheepList); diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/controller/DaSheepfoldController.java b/zhyc-module/src/main/java/com/zhyc/module/base/controller/DaSheepfoldController.java index 0e3275c..de91c69 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/controller/DaSheepfoldController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/controller/DaSheepfoldController.java @@ -8,6 +8,7 @@ import com.zhyc.common.enums.BusinessType; import com.zhyc.common.utils.poi.ExcelUtil; import com.zhyc.module.base.domain.BasSheep; import com.zhyc.module.base.domain.DaSheepfold; +import com.zhyc.module.base.domain.DaSheepfoldSummaryExportVO; import com.zhyc.module.base.service.IDaSheepfoldService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -44,6 +45,17 @@ public class DaSheepfoldController extends BaseController List list = daSheepfoldService.selectDaSheepfoldList(daSheepfold); return getDataTable(list); } + + + /** + * 主表格:羊舍级别汇总列表 + */ + @GetMapping("/summaryList") + public TableDataInfo summaryList(DaSheepfold daSheepfold) { + startPage(); + List list = daSheepfoldService.selectDaSheepfoldSummaryList(daSheepfold); + return getDataTable(list); + } /* * 根据羊舍ids查询羊只id * */ @@ -69,6 +81,73 @@ public class DaSheepfoldController extends BaseController util.exportExcel(response, list, "羊舍管理数据"); } + + /** + * 导出羊舍管理汇总列表(主表格数据)- 新增方法 + */ + @PreAuthorize("@ss.hasPermi('sheepfold_management:sheepfold_management:export')") + @Log(title = "羊舍管理汇总导出", businessType = BusinessType.EXPORT) + @PostMapping("/exportSummary") + public void exportSummary(HttpServletResponse response, DaSheepfold daSheepfold) { + // 1. 查询汇总数据 + List list = daSheepfoldService.selectDaSheepfoldSummaryList(daSheepfold); + + // 2. 转换为导出VO + List exportList = convertToExportVO(list); + + // 3. 使用VO类导出Excel + ExcelUtil util = new ExcelUtil<>(DaSheepfoldSummaryExportVO.class); + util.exportExcel(response, exportList, "羊舍管理汇总数据"); + } + + + /** + * 将DaSheepfold列表转换为导出VO列表 + */ + private List convertToExportVO(List daSheepfoldList) { + List voList = new ArrayList<>(); + + for (DaSheepfold entity : daSheepfoldList) { + DaSheepfoldSummaryExportVO vo = new DaSheepfoldSummaryExportVO(); + + // 字典翻译:牧场ID -> 牧场名称 + if (entity.getRanchId() != null) { + String ranchName = DictUtils.getDictLabel("da_ranch", entity.getRanchId().toString()); + vo.setRanchName(ranchName != null ? ranchName : entity.getRanchId().toString()); + } else { + vo.setRanchName(""); + } + + // 使用汇总查询中的羊舍名称 + vo.setSheepfoldName(entity.getSheepfoldName() != null ? entity.getSheepfoldName() : ""); + + // 字典翻译:羊舍类型ID -> 羊舍类型名称 + if (entity.getSheepfoldTypeId() != null) { + String typeName = DictUtils.getDictLabel("bas_sheepfold_type", entity.getSheepfoldTypeId().toString()); + vo.setSheepfoldTypeName(typeName != null ? typeName : entity.getSheepfoldTypeId().toString()); + } else { + vo.setSheepfoldTypeName(""); + } + + // 羊舍编号 + vo.setSheepfoldNo(entity.getSheepfoldNo() != null ? entity.getSheepfoldNo() : ""); + + // 羊数(确保不为空) + vo.setTotalSheepCount(entity.getTotalSheepCount() != null ? entity.getTotalSheepCount() : 0); + + // 备注 + vo.setComment(entity.getComment() != null ? entity.getComment() : ""); + + voList.add(vo); + } + + return voList; + } + + + + + /** * 获取羊舍管理详细信息 */ @@ -101,16 +180,74 @@ public class DaSheepfoldController extends BaseController return toAjax(daSheepfoldService.updateDaSheepfold(daSheepfold)); } +// /** +// * 删除羊舍管理 +// */ +// @PreAuthorize("@ss.hasPermi('sheepfold_management:sheepfold_management:remove')") +// @Log(title = "羊舍管理", businessType = BusinessType.DELETE) +// @DeleteMapping("/{ids}") +// public AjaxResult remove(@PathVariable Long[] ids) +// { +// return toAjax(daSheepfoldService.deleteDaSheepfoldByIds(ids)); +// } + /** - * 删除羊舍管理 + * 修改后:根据组合条件删除羊圈信息(单条) + * 接收ranch_id/sheepfold_no/sheepfold_type_id/sheepfold_name组合条件 */ - @PreAuthorize("@ss.hasPermi('sheepfold_management:sheepfold_management:remove')") - @Log(title = "羊舍管理", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(daSheepfoldService.deleteDaSheepfoldByIds(ids)); + @PreAuthorize("@ss.hasPermi('sheep:sheepfold:remove')") + @DeleteMapping("/deleteByCondition") + public AjaxResult removeByCondition(@RequestBody DaSheepfold sheepfold) { + // 1. 校验核心条件非空(避免条件缺失导致误删) + if (sheepfold.getRanchId() == null + || sheepfold.getSheepfoldNo() == null || sheepfold.getSheepfoldNo().isEmpty() + || sheepfold.getSheepfoldTypeId() == null) { + return AjaxResult.error("删除失败:核心条件(牧场ID/羊圈编号/羊圈类型ID)不能为空"); + } + // 2. 调用Service执行组合条件删除 + boolean deleteResult = daSheepfoldService.deleteSheepfoldByCondition(sheepfold); + if (deleteResult) { + return AjaxResult.success("删除成功"); + } else { + return AjaxResult.error("删除失败:未找到匹配条件的记录"); + } } + + /** + * 【扩展】批量删除:接收多条组合条件数据,循环删除 + */ + @PreAuthorize("@ss.hasPermi('sheep:sheepfold:remove')") + @DeleteMapping("/batchDeleteByCondition") + public AjaxResult batchRemoveByCondition(@RequestBody List sheepfoldList) { + if (sheepfoldList == null || sheepfoldList.isEmpty()) { + return AjaxResult.error("删除失败:请选择要删除的羊圈数据"); + } + // 统计成功删除的数量 + int successCount = 0; + for (DaSheepfold sheepfold : sheepfoldList) { + // 跳过条件不全的记录 + if (sheepfold.getRanchId() == null + || sheepfold.getSheepfoldNo() == null || sheepfold.getSheepfoldNo().isEmpty() + || sheepfold.getSheepfoldTypeId() == null) { + continue; + } + if (daSheepfoldService.deleteSheepfoldByCondition(sheepfold)) { + successCount++; + } + } + if (successCount == 0) { + return AjaxResult.error("批量删除失败:无符合条件的记录可删除"); + } else { + return AjaxResult.success("批量删除成功,共删除" + successCount + "条记录"); + } + } + + + + + + + /** * 检查羊舍编号是否已存在 */ diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/domain/DaSheepfold.java b/zhyc-module/src/main/java/com/zhyc/module/base/domain/DaSheepfold.java index ab30928..8d48269 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/domain/DaSheepfold.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/domain/DaSheepfold.java @@ -115,5 +115,10 @@ public class DaSheepfold extends BaseEntity @Excel(name = "备注") private String comment; + // 非数据库字段:单栏位羊数(子表格用) + private Integer sheepCount; + // 非数据库字段:羊舍总羊数(主表格用) + private Integer totalSheepCount; + } diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/domain/DaSheepfoldSummaryExportVO.java b/zhyc-module/src/main/java/com/zhyc/module/base/domain/DaSheepfoldSummaryExportVO.java new file mode 100644 index 0000000..14b6829 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/base/domain/DaSheepfoldSummaryExportVO.java @@ -0,0 +1,55 @@ +package com.zhyc.module.base.domain; + +import com.zhyc.common.annotation.Excel; +import com.zhyc.common.core.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +/** + * 羊舍汇总导出VO + */ +@Data +public class DaSheepfoldSummaryExportVO { + + /** 牧场名称 */ + @Excel(name = "牧场") + private String ranchName; + + /** 羊舍名称 */ + @Excel(name = "羊舍名称") + private String sheepfoldName; + + /** 羊舍类型名称 */ + @Excel(name = "羊舍类型") + + private String sheepfoldTypeName; + + /** 羊舍编号 */ + @Excel(name = "羊舍编号") + private String sheepfoldNo; + + /** 羊舍总羊数 */ + @Excel(name = "羊数") + private Integer totalSheepCount; + + /** 备注 */ + @Excel(name = "备注") + private String comment; + + // 构造函数 + public DaSheepfoldSummaryExportVO() { + } + + public DaSheepfoldSummaryExportVO(String ranchName, String sheepfoldName, + String sheepfoldTypeName, String sheepfoldNo, + Integer totalSheepCount, String comment) { + this.ranchName = ranchName; + this.sheepfoldName = sheepfoldName; + this.sheepfoldTypeName = sheepfoldTypeName; + this.sheepfoldNo = sheepfoldNo; + this.totalSheepCount = totalSheepCount; + this.comment = comment; + } +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/domain/ExportConfig.java b/zhyc-module/src/main/java/com/zhyc/module/base/domain/ExportConfig.java new file mode 100644 index 0000000..0b55bc0 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/base/domain/ExportConfig.java @@ -0,0 +1,28 @@ +// 创建文件:ExportConfig.java +package com.zhyc.module.base.domain; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * 导出配置类 + */ +@Data +public class ExportConfig { + /** + * 要导出的列名列表(前端传递的驼峰命名) + */ + private List columnNames; + + /** + * 查询条件 + */ + private Map queryParams; + + /** + * 自定义筛选条件 + */ + private Map customFilterParams; +} \ 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 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/mapper/DaSheepfoldMapper.java b/zhyc-module/src/main/java/com/zhyc/module/base/mapper/DaSheepfoldMapper.java index 9b690ce..afca568 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/mapper/DaSheepfoldMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/mapper/DaSheepfoldMapper.java @@ -2,6 +2,7 @@ package com.zhyc.module.base.mapper; import com.zhyc.module.base.domain.DaSheepfold; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -30,6 +31,12 @@ public interface DaSheepfoldMapper */ public List selectDaSheepfoldList(DaSheepfold daSheepfold); + + /** + * 羊舍级别汇总查询(主表格) + */ + List selectDaSheepfoldSummaryList(DaSheepfold daSheepfold); + /** * 新增羊舍管理 * @@ -63,5 +70,13 @@ public interface DaSheepfoldMapper public int deleteDaSheepfoldByIds(Long[] ids); public int selectCount(DaSheepfold daSheepfold); + + // 新增:按组合条件删除的自定义方法(核心) + int deleteSheepfoldByCondition( + @Param("ranchId") Long ranchId, + @Param("sheepfoldNo") String sheepfoldNo, + @Param("sheepfoldTypeId") Long sheepfoldTypeId + + ); } 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/IDaSheepfoldService.java b/zhyc-module/src/main/java/com/zhyc/module/base/service/IDaSheepfoldService.java index 26bac8f..c0bcaf9 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/service/IDaSheepfoldService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/service/IDaSheepfoldService.java @@ -29,6 +29,8 @@ public interface IDaSheepfoldService */ public List selectDaSheepfoldList(DaSheepfold daSheepfold); + public List selectDaSheepfoldSummaryList(DaSheepfold daSheepfold); + /** * 新增羊舍管理 * @@ -73,4 +75,8 @@ public interface IDaSheepfoldService // 根据羊舍id获取该羊舍的羊 List sheepListById(String id); + + + /** 新增:根据组合条件删除羊圈记录 */ + boolean deleteSheepfoldByCondition(DaSheepfold sheepfold); } 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..bff0d19 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/BasSheepServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/BasSheepServiceImpl.java @@ -1,6 +1,8 @@ package com.zhyc.module.base.service.impl; import java.util.List; + +import com.zhyc.common.annotation.DataScope; import com.zhyc.common.utils.DateUtils; import com.zhyc.module.base.domain.BasSheep; import com.zhyc.module.base.mapper.BasSheepMapper; @@ -44,6 +46,17 @@ public class BasSheepServiceImpl implements IBasSheepService return basSheepMapper.selectBasSheepList(basSheep); } + /** + * 搜索羊只 earNumbers + * + * @param query + * @return + */ + @Override + @DataScope(deptAlias = "b", userAlias = "b") + public List searchEarNumbers(String query) { + return basSheepMapper.searchEarNumbers(query); + } /** * 新增羊只基本信息 * diff --git a/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/DaSheepfoldServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/DaSheepfoldServiceImpl.java index 4753929..389cacf 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/DaSheepfoldServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/base/service/impl/DaSheepfoldServiceImpl.java @@ -1,32 +1,40 @@ package com.zhyc.module.base.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zhyc.module.base.domain.BasSheep; import com.zhyc.module.base.domain.DaSheepfold; import com.zhyc.module.base.mapper.BasSheepMapper; import com.zhyc.module.base.mapper.DaSheepfoldMapper; import com.zhyc.module.base.service.IDaSheepfoldService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; import java.util.List; /** * 羊舍管理Service业务层处理 - * + * * @author wyt * @date 2025-07-11 */ @Service -public class DaSheepfoldServiceImpl implements IDaSheepfoldService +public class DaSheepfoldServiceImpl implements IDaSheepfoldService { @Autowired private DaSheepfoldMapper daSheepfoldMapper; @Autowired private BasSheepMapper basSheepMapper; + // 日志对象 + private static final Logger log = LoggerFactory.getLogger(DaSheepfoldServiceImpl.class); + /** * 查询羊舍管理 - * + * * @param id 羊舍管理主键 * @return 羊舍管理 */ @@ -38,19 +46,27 @@ public class DaSheepfoldServiceImpl implements IDaSheepfoldService /** * 查询羊舍管理列表 - * + * * @param daSheepfold 羊舍管理 * @return 羊舍管理 */ @Override public List selectDaSheepfoldList(DaSheepfold daSheepfold) { - return daSheepfoldMapper.selectDaSheepfoldList(daSheepfold); + List sheepfoldList = daSheepfoldMapper.selectDaSheepfoldList(daSheepfold); + return sheepfoldList; // 修复:原代码重复调用Mapper,改为返回已查询的列表 + } + + /** + * 羊舍级别汇总查询(主表格) + */ + public List selectDaSheepfoldSummaryList(DaSheepfold daSheepfold) { + return daSheepfoldMapper.selectDaSheepfoldSummaryList(daSheepfold); } /** * 新增羊舍管理 - * + * * @param daSheepfold 羊舍管理 * @return 结果 */ @@ -62,7 +78,7 @@ public class DaSheepfoldServiceImpl implements IDaSheepfoldService /** * 修改羊舍管理 - * + * * @param daSheepfold 羊舍管理 * @return 结果 */ @@ -74,7 +90,7 @@ public class DaSheepfoldServiceImpl implements IDaSheepfoldService /** * 批量删除羊舍管理 - * + * * @param ids 需要删除的羊舍管理主键 * @return 结果 */ @@ -86,7 +102,7 @@ public class DaSheepfoldServiceImpl implements IDaSheepfoldService /** * 删除羊舍管理信息 - * + * * @param id 羊舍管理主键 * @return 结果 */ @@ -96,7 +112,6 @@ public class DaSheepfoldServiceImpl implements IDaSheepfoldService return daSheepfoldMapper.deleteDaSheepfoldById(id); } - @Override public boolean checkSheepfoldNoExist(Long ranchId, Long sheepfoldTypeId, String sheepfoldNo) { DaSheepfold query = new DaSheepfold(); @@ -111,4 +126,40 @@ public class DaSheepfoldServiceImpl implements IDaSheepfoldService List basSheep = basSheepMapper.selectBasSheepBySheepfold(id); return basSheep; } -} + + /** + * 核心实现:根据组合条件删除(完全自定义,无MP依赖) + * 条件:ranch_id = ? AND sheepfold_no = ? AND sheepfold_type_id = ? + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean deleteSheepfoldByCondition(DaSheepfold sheepfold) { + // 1. 前置校验:仅校验3个核心字段(移除sheepfoldName的校验) + if (sheepfold.getRanchId() == null + || !StringUtils.hasText(sheepfold.getSheepfoldNo()) + || sheepfold.getSheepfoldTypeId() == null) { + log.error("删除失败:核心条件不能为空!牧场ID={}, 羊舍编号={}, 羊舍类型ID={}", + sheepfold.getRanchId(), sheepfold.getSheepfoldNo(), sheepfold.getSheepfoldTypeId()); + throw new IllegalArgumentException("删除失败:牧场ID、羊舍编号、羊舍类型ID不能为空"); + } + + // 2. 调用Mapper方法:仅传递3个核心字段(移除sheepfoldName) + int deleteCount = daSheepfoldMapper.deleteSheepfoldByCondition( + sheepfold.getRanchId(), + sheepfold.getSheepfoldNo(), + sheepfold.getSheepfoldTypeId() + ); + boolean isSuccess = deleteCount > 0; + + // 3. 日志打印:移除sheepfoldName相关内容 + if (isSuccess) { + log.info("成功删除羊舍记录:牧场ID={}, 羊舍编号={}, 羊舍类型ID={}", + sheepfold.getRanchId(), sheepfold.getSheepfoldNo(), sheepfold.getSheepfoldTypeId()); + } else { + log.warn("未找到匹配条件的羊舍记录:牧场ID={}, 羊舍编号={}, 羊舍类型ID={}", + sheepfold.getRanchId(), sheepfold.getSheepfoldNo(), sheepfold.getSheepfoldTypeId()); + } + + return isSuccess; + } +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DewormController.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DewormController.java index 6fb5fba..1c7c8aa 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DewormController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DewormController.java @@ -78,7 +78,8 @@ public class DewormController extends BaseController @PostMapping public AjaxResult add(@RequestBody Deworm deworm) { - System.out.println(deworm); + deworm.setDeptId(getDeptId()); + deworm.setUserId(getUserId()); return toAjax(dewormService.insertDeworm(deworm)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DiagnosisController.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DiagnosisController.java index 3b7aff6..c7968e8 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DiagnosisController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DiagnosisController.java @@ -77,6 +77,8 @@ public class DiagnosisController extends BaseController @PostMapping public AjaxResult add(@RequestBody Diagnosis diagnosis) { + diagnosis.setDeptId(getDeptId()); + diagnosis.setUserId(getUserId()); return toAjax(diagnosisService.insertDiagnosis(diagnosis)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DisinfectController.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DisinfectController.java index 7e2f934..315196e 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DisinfectController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/DisinfectController.java @@ -78,6 +78,8 @@ public class DisinfectController extends BaseController @PostMapping public AjaxResult add(@RequestBody Disinfect disinfect) { + disinfect.setDeptId(getDeptId()); + disinfect.setUserId(getUserId()); return toAjax(disinfectService.insertDisinfect(disinfect)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/HealthController.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/HealthController.java index c1798ca..4066006 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/HealthController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/HealthController.java @@ -79,6 +79,8 @@ public class HealthController extends BaseController @PostMapping public AjaxResult add(@RequestBody Health health) { + health.setDeptId(getDeptId()); + health.setUserId(getUserId()); return toAjax(healthService.insertHealth(health)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/ImmunityController.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/ImmunityController.java index f49376c..2abc6d6 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/ImmunityController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/ImmunityController.java @@ -78,6 +78,8 @@ public class ImmunityController extends BaseController @PostMapping public AjaxResult add(@RequestBody Immunity immunity) { + immunity.setDeptId(getDeptId()); + immunity.setUserId(getUserId()); return toAjax(immunityService.insertImmunity(immunity)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/QuarantineReportController.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/QuarantineReportController.java index 1c06745..dee5d75 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/QuarantineReportController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/QuarantineReportController.java @@ -78,6 +78,8 @@ public class QuarantineReportController extends BaseController @PostMapping public AjaxResult add(@RequestBody QuarantineReport quarantineReport) { + quarantineReport.setDeptId(getDeptId()); + quarantineReport.setUserId(getUserId()); return toAjax(quarantineReportService.insertQuarantineReport(quarantineReport)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/SwMedicineUsageController.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/SwMedicineUsageController.java index 7e09fd5..d77739a 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/SwMedicineUsageController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/SwMedicineUsageController.java @@ -84,6 +84,8 @@ public class SwMedicineUsageController extends BaseController @PostMapping public AjaxResult add(@RequestBody SwMedicineUsage swMedicineUsage) { + swMedicineUsage.setDeptId(getDeptId()); + swMedicineUsage.setUserId(getUserId()); return toAjax(swMedicineUsageService.insertSwMedicineUsage(swMedicineUsage)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/TreatmentController.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/TreatmentController.java index 85d5591..38c23e3 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/TreatmentController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/controller/TreatmentController.java @@ -78,6 +78,8 @@ public class TreatmentController extends BaseController @PostMapping public AjaxResult add(@RequestBody Treatment treatment) { + treatment.setDeptId(getDeptId()); + treatment.setUserId(getUserId()); return toAjax(treatmentService.insertTreatment(treatment)); } 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..7db3a19 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; @@ -52,7 +54,8 @@ public class Deworm extends BaseEntity @Excel(name = "胎次") private Long parity; - + private Long userId; + private Long deptId; /** 药品使用记录 */ @Excel(name = "药品使用记录") @@ -75,11 +78,9 @@ 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..14cb984 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,26 @@ 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; + + private Long userId; + private Long deptId; + + 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/Disinfect.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Disinfect.java index 4c6847d..6d24d82 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Disinfect.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Disinfect.java @@ -61,6 +61,9 @@ public class Disinfect extends BaseEntity /** 药品名称用于查询*/ private String mediName; + private Long userId; + private Long deptId; + // 药品使用 private List usageDetails; 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..9eadf30 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; @@ -67,14 +69,29 @@ public class Health extends BaseEntity @Excel(name = "备注") private String comment; + private Long userId; + private Long deptId; + // 药品使用 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..70ccaa0 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 = "品种") @@ -75,14 +78,29 @@ public class Immunity extends BaseEntity @Excel(name = "备注") private String comment; + private Long userId; + private Long deptId; + // 药品使用 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..ee9f277 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; @@ -93,6 +98,9 @@ public class QuarantineReport extends BaseEntity @Excel(name = "备注") private String comment; + private Long userId; + private Long deptId; + public void setGender(String gender) { this.gender = gender; this.genderName = Gender.getDescByCode(Integer.valueOf(gender)); 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..62e212f 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,11 @@ 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") @@ -48,6 +53,9 @@ public class SwMedicineUsage extends BaseEntity @Excel(name = "使用类型",width = 20, needMerge = true) private String useType; + private Long userId; + private Long deptId; + /** 药品使用记录详情信息 */ @Excel private List swMedicineUsageDetailsList; 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..f6dce30 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; // 用于批量新增 @@ -101,6 +104,9 @@ public class Treatment extends BaseEntity @Excel(name = "药品使用记录id") private Integer usageId; + private Long userId; + private Long deptId; + // 药品使用 private List usageDetails; diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DewormServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DewormServiceImpl.java index d1d9502..716a333 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DewormServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DewormServiceImpl.java @@ -1,7 +1,10 @@ package com.zhyc.module.biosafety.service.impl; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; + +import com.zhyc.common.annotation.DataScope; import com.zhyc.common.utils.DateUtils; import com.zhyc.common.utils.SecurityUtils; import com.zhyc.common.utils.bean.BeanUtils; @@ -57,17 +60,18 @@ public class DewormServiceImpl implements IDewormService * @return 驱虫 */ @Override + @DataScope(deptAlias = "s", userAlias = "s") public List selectDewormList(Deworm deworm) { String[] sheepNos = null; if (deworm.getSheepNo() != null && !deworm.getSheepNo().isEmpty()) { - if (deworm.getSheepNo().contains(",")) { - sheepNos = deworm.getSheepNo().split(","); - } else { - sheepNos = new String[]{deworm.getSheepNo()}; + if (deworm.getSheepNo().contains(" ")) { + sheepNos = deworm.getSheepNo().split(" "); + deworm.setSheepNos(sheepNos); + deworm.setSheepNo(null); } } - deworm.setSheepNos(sheepNos); + return dewormMapper.selectDewormList(deworm); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DiagnosisServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DiagnosisServiceImpl.java index ac68499..cd247e0 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DiagnosisServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DiagnosisServiceImpl.java @@ -4,6 +4,7 @@ import java.util.Date; import java.util.List; import java.util.Objects; +import com.zhyc.common.annotation.DataScope; import com.zhyc.common.utils.DateUtils; import com.zhyc.common.utils.SecurityUtils; import com.zhyc.module.base.domain.BasSheep; @@ -60,14 +61,13 @@ public class DiagnosisServiceImpl implements IDiagnosisService * @return 诊疗结果 */ @Override + @DataScope(deptAlias = "sd", userAlias = "sd") public List selectDiagnosisList(Diagnosis diagnosis) { String[] sheepNos = null; if (diagnosis.getSheepNo() != null && !diagnosis.getSheepNo().isEmpty()) { - if (diagnosis.getSheepNo().contains(",")) { - sheepNos = diagnosis.getSheepNo().split(","); - } else { - sheepNos = new String[]{diagnosis.getSheepNo()}; + if (diagnosis.getSheepNo().contains(" ")) { + sheepNos = diagnosis.getSheepNo().split(" "); } } diagnosis.setSheepNos(sheepNos); diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DisinfectServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DisinfectServiceImpl.java index 8e98bf4..2b178a5 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DisinfectServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/DisinfectServiceImpl.java @@ -2,6 +2,8 @@ package com.zhyc.module.biosafety.service.impl; import java.util.ArrayList; import java.util.List; + +import com.zhyc.common.annotation.DataScope; import com.zhyc.common.utils.DateUtils; import com.zhyc.common.utils.SecurityUtils; import com.zhyc.common.utils.bean.BeanUtils; @@ -59,6 +61,7 @@ public class DisinfectServiceImpl implements IDisinfectService * @return 消毒记录 */ @Override + @DataScope(deptAlias = "sd", userAlias = "sd") public List selectDisinfectList(Disinfect disinfect) { return disinfectMapper.selectDisinfectList(disinfect); diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/HealthServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/HealthServiceImpl.java index 80140cf..34d0e7b 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/HealthServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/HealthServiceImpl.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; +import com.zhyc.common.annotation.DataScope; import com.zhyc.common.utils.DateUtils; import com.zhyc.common.utils.SecurityUtils; import com.zhyc.common.utils.bean.BeanUtils; @@ -62,14 +63,13 @@ public class HealthServiceImpl implements IHealthService * @return 保健 */ @Override + @DataScope(deptAlias = "s", userAlias = "s") public List selectHealthList(Health health) { String[] sheepNos = null; if (health.getSheepNo() != null && !health.getSheepNo().isEmpty()) { - if (health.getSheepNo().contains(",")) { - sheepNos = health.getSheepNo().split(","); - } else { - sheepNos = new String[]{health.getSheepNo()}; + if (health.getSheepNo().contains(" ")) { + sheepNos = health.getSheepNo().split(" "); } } health.setSheepNos(sheepNos); diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/ImmunityServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/ImmunityServiceImpl.java index 61af3b2..d7f0f1e 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/ImmunityServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/ImmunityServiceImpl.java @@ -2,6 +2,8 @@ package com.zhyc.module.biosafety.service.impl; import java.util.ArrayList; import java.util.List; + +import com.zhyc.common.annotation.DataScope; import com.zhyc.common.utils.DateUtils; import com.zhyc.common.utils.SecurityUtils; import com.zhyc.common.utils.bean.BeanUtils; @@ -61,14 +63,13 @@ public class ImmunityServiceImpl implements IImmunityService * @return 免疫 */ @Override + @DataScope(deptAlias = "s", userAlias = "s") public List selectImmunityList(Immunity immunity) { String[] sheepNos = null; if (immunity.getSheepNo() != null && !immunity.getSheepNo().isEmpty()) { - if (immunity.getSheepNo().contains(",")) { - sheepNos = immunity.getSheepNo().split(","); - } else { - sheepNos = new String[]{immunity.getSheepNo()}; + if (immunity.getSheepNo().contains(" ")) { + sheepNos = immunity.getSheepNo().split(" "); } } immunity.setSheepNos(sheepNos); diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/QuarantineItemsServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/QuarantineItemsServiceImpl.java index 541a759..a4de537 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/QuarantineItemsServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/QuarantineItemsServiceImpl.java @@ -2,6 +2,7 @@ package com.zhyc.module.biosafety.service.impl; import java.util.List; +import com.zhyc.common.annotation.DataScope; import com.zhyc.module.biosafety.domain.QuarantineItems; import com.zhyc.module.biosafety.mapper.QuarantineItemsMapper; import com.zhyc.module.biosafety.service.IQuarantineItemsService; 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 ae6b728..87148e0 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 @@ -2,6 +2,8 @@ package com.zhyc.module.biosafety.service.impl; import java.util.ArrayList; import java.util.List; + +import com.zhyc.common.annotation.DataScope; import com.zhyc.common.utils.DateUtils; import com.zhyc.common.utils.SecurityUtils; import com.zhyc.common.utils.bean.BeanUtils; @@ -46,14 +48,13 @@ public class QuarantineReportServiceImpl implements IQuarantineReportService * @return 检疫记录 */ @Override + @DataScope(deptAlias = "sqr", userAlias = "sqr") public List selectQuarantineReportList(QuarantineReport quarantineReport) { String[] sheepNos = null; if (quarantineReport.getSheepNo() != null && !quarantineReport.getSheepNo().isEmpty()) { - if (quarantineReport.getSheepNo().contains(",")) { - sheepNos = quarantineReport.getSheepNo().split(","); - } else { - sheepNos = new String[]{quarantineReport.getSheepNo()}; + if (quarantineReport.getSheepNo().contains(" ")) { + sheepNos = quarantineReport.getSheepNo().split(" "); } } quarantineReport.setSheepNos(sheepNos); 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..0a1327d 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 @@ -1,6 +1,8 @@ package com.zhyc.module.biosafety.service.impl; import java.util.List; + +import com.zhyc.common.annotation.DataScope; import com.zhyc.common.utils.DateUtils; import com.zhyc.common.utils.SecurityUtils; import com.zhyc.module.biosafety.service.ISwMedicineUsageService; @@ -44,8 +46,17 @@ public class SwMedicineUsageServiceImpl implements ISwMedicineUsageService * @return 药品使用记录 */ @Override + @DataScope(deptAlias = "smu", userAlias = "smu") 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/java/com/zhyc/module/biosafety/service/impl/TreatmentServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/TreatmentServiceImpl.java index 293fdff..1c21aa1 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/TreatmentServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/TreatmentServiceImpl.java @@ -2,6 +2,8 @@ package com.zhyc.module.biosafety.service.impl; import java.util.ArrayList; import java.util.List; + +import com.zhyc.common.annotation.DataScope; import com.zhyc.common.utils.DateUtils; import com.zhyc.common.utils.SecurityUtils; import com.zhyc.common.utils.bean.BeanUtils; @@ -65,6 +67,7 @@ public class TreatmentServiceImpl implements ITreatmentService * @return 治疗记录 */ @Override + @DataScope(deptAlias = "t", userAlias = "t") public List selectTreatmentList(Treatment treatment) { String[] sheepNos = null; diff --git a/zhyc-module/src/main/java/com/zhyc/module/common/controller/UserPostController.java b/zhyc-module/src/main/java/com/zhyc/module/common/controller/UserPostController.java index 6e9fa5e..7b63e2e 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/common/controller/UserPostController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/common/controller/UserPostController.java @@ -26,7 +26,9 @@ public class UserPostController { // 根据岗位编码获取用户 @GetMapping("/getUser") public AjaxResult getUserPost(String postCode){ - List list = userService.getUserListByCode(postCode); + User user = new User(); + user.setPostCode(postCode); + List list = userService.getUserListByCode(user); return AjaxResult.success(list); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/common/domain/Dept.java b/zhyc-module/src/main/java/com/zhyc/module/common/domain/Dept.java new file mode 100644 index 0000000..b840430 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/common/domain/Dept.java @@ -0,0 +1,22 @@ +package com.zhyc.module.common.domain; + +import com.zhyc.common.core.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class Dept extends BaseEntity { + private Long deptId; + private Long parentId; + private String ancestors; + private String deptName; + private String orderNum; + private String leader; + private String phone; + private String email; + private String status; + private String delFlag; +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/common/domain/Post.java b/zhyc-module/src/main/java/com/zhyc/module/common/domain/Post.java index 4af0b53..38125a4 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/common/domain/Post.java +++ b/zhyc-module/src/main/java/com/zhyc/module/common/domain/Post.java @@ -1,6 +1,7 @@ package com.zhyc.module.common.domain; import com.zhyc.common.annotation.Excel; +import com.zhyc.common.core.domain.BaseEntity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,7 +9,7 @@ import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor -public class Post { +public class Post extends BaseEntity { /** 岗位序号 */ @Excel(name = "岗位序号", cellType = Excel.ColumnType.NUMERIC) diff --git a/zhyc-module/src/main/java/com/zhyc/module/common/domain/User.java b/zhyc-module/src/main/java/com/zhyc/module/common/domain/User.java index 75b2c31..a10fb08 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/common/domain/User.java +++ b/zhyc-module/src/main/java/com/zhyc/module/common/domain/User.java @@ -1,5 +1,6 @@ package com.zhyc.module.common.domain; +import com.zhyc.common.core.domain.BaseEntity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -7,9 +8,10 @@ import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor -public class User { +public class User extends BaseEntity { // 用户id - private String userId; + private Long userId; + private Long deptId; // 用户名 private String nickName; // 岗位名称 @@ -17,4 +19,5 @@ public class User { // 岗位编码 private String postCode; + } diff --git a/zhyc-module/src/main/java/com/zhyc/module/common/mapper/DeptMapper.java b/zhyc-module/src/main/java/com/zhyc/module/common/mapper/DeptMapper.java new file mode 100644 index 0000000..8cd72ab --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/common/mapper/DeptMapper.java @@ -0,0 +1,15 @@ +package com.zhyc.module.common.mapper; + +import com.zhyc.module.common.domain.Dept; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface DeptMapper { + /** + * 根据部门ID查询其所属二级部门(排除根部门) + */ + Dept selectTopSecondLevelDept(Long deptId); +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/common/mapper/UserMapper.java b/zhyc-module/src/main/java/com/zhyc/module/common/mapper/UserMapper.java index f6d4a92..9e689a8 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/common/mapper/UserMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/common/mapper/UserMapper.java @@ -8,5 +8,5 @@ import java.util.List; @Mapper public interface UserMapper { - List getUserListByCode(String postCode); + List getUserListByCode(User user); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/common/service/UserService.java b/zhyc-module/src/main/java/com/zhyc/module/common/service/UserService.java index 237ba52..d7ad652 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/common/service/UserService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/common/service/UserService.java @@ -5,5 +5,5 @@ import com.zhyc.module.common.domain.User; import java.util.List; public interface UserService { - List getUserListByCode(String postCode); + List getUserListByCode(User postCode); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/common/service/impl/UserPostServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/common/service/impl/UserPostServiceImpl.java index 49ff427..65bb6de 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/common/service/impl/UserPostServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/common/service/impl/UserPostServiceImpl.java @@ -1,6 +1,10 @@ package com.zhyc.module.common.service.impl; +import com.zhyc.common.annotation.DataScope; +import com.zhyc.common.utils.SecurityUtils; +import com.zhyc.module.common.domain.Dept; import com.zhyc.module.common.domain.User; +import com.zhyc.module.common.mapper.DeptMapper; import com.zhyc.module.common.mapper.UserMapper; import com.zhyc.module.common.service.UserService; import org.springframework.beans.factory.annotation.Autowired; @@ -12,9 +16,16 @@ import java.util.List; public class UserPostServiceImpl implements UserService { @Autowired UserMapper userMapper; + @Autowired + DeptMapper deptMapper; + @Override - public List getUserListByCode(String postCode) { - return userMapper.getUserListByCode(postCode); + public List getUserListByCode(User user) { + Long deptId = SecurityUtils.getLoginUser().getUser().getDeptId(); + Dept secondLevel = deptMapper.selectTopSecondLevelDept(deptId); + user.setDeptId(secondLevel.getDeptId()); + System.out.println(secondLevel); + return userMapper.getUserListByCode(user); } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedListController.java b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedListController.java index db39029..b44fb06 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedListController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedListController.java @@ -109,6 +109,8 @@ public class SgFeedListController extends BaseController { @Log(title = "配料清单", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody SgFeedList sgFeedList) { + sgFeedList.setDeptId(getDeptId()); + sgFeedList.setUserId(getUserId()); return toAjax(sgFeedListService.insertSgFeedList(sgFeedList)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedPlanController.java b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedPlanController.java index 39bde43..480dadd 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedPlanController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedPlanController.java @@ -79,6 +79,8 @@ public class SgFeedPlanController extends BaseController { if (null == sgFeedPlan) { throw new RuntimeException("数据为空"); } + sgFeedPlan.setDeptId(getDeptId()); + sgFeedPlan.setUserId(getUserId()); sgFeedPlan.setCreateDate(new Date()); // 计算其他字段值 setPlan(sgFeedPlan); diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedStatisticController.java b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedStatisticController.java index de0334f..1f827c6 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedStatisticController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFeedStatisticController.java @@ -84,6 +84,8 @@ public class SgFeedStatisticController extends BaseController { if (null == sgFeedStatistic.getFormulaId() && null == sgFeedStatistic.getFormulaBatchId()) { throw new RuntimeException("ERROR: 数据为空"); } + sgFeedStatistic.setUserId(getUserId()); + sgFeedStatistic.setDeptId(getDeptId()); List isExist = sgFeedStatisticService.selectSgFeedStatisticList(sgFeedStatistic); if (null != isExist && !isExist.isEmpty()) { throw new RuntimeException("WARNING: 数据重复"); diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFormulaListController.java b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFormulaListController.java index fb6a83b..61ed922 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFormulaListController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFormulaListController.java @@ -79,6 +79,8 @@ public class SgFormulaListController extends BaseController @PostMapping public AjaxResult add(@RequestBody SgFormulaList sgFormulaList) { + sgFormulaList.setUserId(getUserId()); + sgFormulaList.setDeptId(getDeptId()); return toAjax(sgFormulaListService.insertSgFormulaList(sgFormulaList)); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFormulaManagementController.java b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFormulaManagementController.java index 9284c7a..730e4bb 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFormulaManagementController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgFormulaManagementController.java @@ -95,6 +95,8 @@ public class SgFormulaManagementController extends BaseController { public AjaxResult add(@RequestBody SgFormulaManagement sgFormulaManagement) { if (null == sgFormulaManagement) throw new RuntimeException("ERROR: 数据为空"); + sgFormulaManagement.setUserId(getUserId()); + sgFormulaManagement.setDeptId(getDeptId()); if (Objects.equals(sgFormulaManagement.getBatchId(), "0")) { SgFormulaManagement exist = sgFormulaManagementService.selectSgFormulaManagementByFormulaId(sgFormulaManagement.getFormulaId()); if (exist != null) { diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgMaterialController.java b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgMaterialController.java index 69c51ac..04db12a 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgMaterialController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/controller/SgMaterialController.java @@ -2,6 +2,7 @@ package com.zhyc.module.feed.controller; import java.util.List; 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.GetMapping; @@ -23,14 +24,13 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 原料Controller - * + * * @author HashMap * @date 2026-01-16 */ @RestController @RequestMapping("/feed/material") -public class SgMaterialController extends BaseController -{ +public class SgMaterialController extends BaseController { @Autowired private ISgMaterialService sgMaterialService; @@ -39,8 +39,7 @@ public class SgMaterialController extends BaseController */ @PreAuthorize("@ss.hasPermi('feed:material:list')") @GetMapping("/list") - public TableDataInfo list(SgMaterial sgMaterial) - { + public TableDataInfo list(SgMaterial sgMaterial) { startPage(); List list = sgMaterialService.selectSgMaterialList(sgMaterial); return getDataTable(list); @@ -52,8 +51,7 @@ public class SgMaterialController extends BaseController @PreAuthorize("@ss.hasPermi('feed:material:export')") @Log(title = "原料", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, SgMaterial sgMaterial) - { + public void export(HttpServletResponse response, SgMaterial sgMaterial) { List list = sgMaterialService.selectSgMaterialList(sgMaterial); ExcelUtil util = new ExcelUtil(SgMaterial.class); util.exportExcel(response, list, "原料数据"); @@ -64,8 +62,7 @@ public class SgMaterialController extends BaseController */ @PreAuthorize("@ss.hasPermi('feed:material:query')") @GetMapping(value = "/{materialId}") - public AjaxResult getInfo(@PathVariable("materialId") String materialId) - { + public AjaxResult getInfo(@PathVariable("materialId") String materialId) { return success(sgMaterialService.selectSgMaterialByMaterialId(materialId)); } @@ -75,8 +72,9 @@ public class SgMaterialController extends BaseController @PreAuthorize("@ss.hasPermi('feed:material:add')") @Log(title = "原料", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody SgMaterial sgMaterial) - { + public AjaxResult add(@RequestBody SgMaterial sgMaterial) { + sgMaterial.setUserId(getUserId()); + sgMaterial.setDeptId(getDeptId()); return toAjax(sgMaterialService.insertSgMaterial(sgMaterial)); } @@ -86,8 +84,7 @@ public class SgMaterialController extends BaseController @PreAuthorize("@ss.hasPermi('feed:material:edit')") @Log(title = "原料", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody SgMaterial sgMaterial) - { + public AjaxResult edit(@RequestBody SgMaterial sgMaterial) { return toAjax(sgMaterialService.updateSgMaterial(sgMaterial)); } @@ -96,9 +93,8 @@ public class SgMaterialController extends BaseController */ @PreAuthorize("@ss.hasPermi('feed:material:remove')") @Log(title = "原料", businessType = BusinessType.DELETE) - @DeleteMapping("/{materialIds}") - public AjaxResult remove(@PathVariable String[] materialIds) - { + @DeleteMapping("/{materialIds}") + public AjaxResult remove(@PathVariable String[] materialIds) { return toAjax(sgMaterialService.deleteSgMaterialByMaterialIds(materialIds)); } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedList.java b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedList.java index 41ca828..8ff2292 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedList.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedList.java @@ -19,26 +19,36 @@ import com.zhyc.common.core.domain.BaseEntity; */ @Setter @Getter -public class SgFeedList extends BaseEntity -{ +public class SgFeedList extends BaseEntity { private static final long serialVersionUID = 1L; - - /** 序号 */ + private Long userId; + private Long deptId; + /** + * 序号 + */ private Long id; - /** 配方编号 */ + /** + * 配方编号 + */ @Excel(name = "配方编号") private String formulaId; - /** 配方批号 */ + /** + * 配方批号 + */ @Excel(name = "配方批号") private String formulaBatchId; - /** 饲草班人员 */ + /** + * 饲草班人员 + */ @Excel(name = "饲草班人员") private String zookeeper; - /** 配料日期 */ + /** + * 配料日期 + */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "配料日期", width = 30, dateFormat = "yyyy-MM-dd") private Date deployDate; @@ -51,14 +61,14 @@ public class SgFeedList extends BaseEntity private Double noonTotal; private Double afternoonTotal; - private List formulaList; + private List formulaList; private List planList; @Override public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append("id", getId()) .append("formulaId", getFormulaId()) .append("formulaBatchId", getFormulaBatchId()) diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedPlan.java b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedPlan.java index 7d537c0..23097f7 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedPlan.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedPlan.java @@ -1,6 +1,7 @@ package com.zhyc.module.feed.domain; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Getter; import lombok.Setter; @@ -11,125 +12,144 @@ import com.zhyc.common.core.domain.BaseEntity; /** * 饲喂计划对象 sg_feed_plan - * + * * @author HashMap * @date 2025-08-14 */ @Getter @Setter -public class SgFeedPlan extends BaseEntity -{ +public class SgFeedPlan extends BaseEntity { private static final long serialVersionUID = 1L; - - /** 创建日期 */ + private Long userId; + private Long deptId; + /** + * 创建日期 + */ private Date createDate; - /** 配方编码 */ + /** + * 配方编码 + */ @Excel(name = "配方编码") private String formulaId; - /** 批号 */ + /** + * 批号 + */ @Excel(name = "批号") private String batchId; - /** 羊舍 */ + /** + * 羊舍 + */ @Excel(name = "羊舍") private Integer sheepHouseId; - /** 羊只数量 */ + /** + * 羊只数量 + */ @Excel(name = "羊只数量") private Integer sheepCount; - /** 日均计划量 */ + /** + * 日均计划量 + */ @Excel(name = "日均计划量") private Double planDailySize; - /** 饲喂比例(早) */ + /** + * 饲喂比例(早) + */ @Excel(name = "饲喂比例(早)") private Double ratioMorning; - /** 饲喂比例(中) */ + /** + * 饲喂比例(中) + */ @Excel(name = "饲喂比例(中)") private Double ratioNoon; - /** 饲喂比例(下) */ + /** + * 饲喂比例(下) + */ @Excel(name = "饲喂比例(下)") private Double ratioAfternoon; - /** 计划量(早) */ + /** + * 计划量(早) + */ @Excel(name = "计划量(早)") private Double planMorningSize; - /** 计划总量(早) */ + /** + * 计划总量(早) + */ @Excel(name = "计划总量(早)") private Double planMorningTotal; - /** 实际量(早) */ + /** + * 实际量(早) + */ @Excel(name = "实际量(早)") private Double actualMorningSize; - /** 计划量(中) */ + /** + * 计划量(中) + */ @Excel(name = "计划量(中)") private Double planNoonSize; - /** 计划总量(中) */ + /** + * 计划总量(中) + */ @Excel(name = "计划总量(中)") private Double planNoonTotal; - /** 实际量(中) */ + /** + * 实际量(中) + */ @Excel(name = "实际量(中)") private Double actualNoonSize; - /** 计划量(下) */ + /** + * 计划量(下) + */ @Excel(name = "计划量(下)") private Double planAfternoonSize; - /** 计划总量(下) */ + /** + * 计划总量(下) + */ @Excel(name = "计划总量(下)") private Double planAfternoonTotal; - /** 实际量(下) */ + /** + * 实际量(下) + */ @Excel(name = "实际量(下)") private Double actualAfternoonSize; - /** 计划饲喂总量 */ + /** + * 计划饲喂总量 + */ @Excel(name = "计划饲喂总量") private Double planFeedTotal; - /** 饲草班人员 */ + /** + * 饲草班人员 + */ @Excel(name = "饲草班人员") private String zookeeper; - /** 饲喂计划日期 */ + /** + * 饲喂计划日期 + */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "饲喂计划日期", width = 30, dateFormat = "yyyy-MM-dd") private Date planDate; @Override public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("createDate", getCreateDate()) - .append("formulaId", getFormulaId()) - .append("batchId", getBatchId()) - .append("sheepHouseId", getSheepHouseId()) - .append("sheepCount", getSheepCount()) - .append("planDailySize", getPlanDailySize()) - .append("ratioMorning", getRatioMorning()) - .append("ratioNoon", getRatioNoon()) - .append("ratioAfternoon", getRatioAfternoon()) - .append("planMorningSize", getPlanMorningSize()) - .append("planMorningTotal", getPlanMorningTotal()) - .append("actualMorningSize", getActualMorningSize()) - .append("planNoonSize", getPlanNoonSize()) - .append("planNoonTotal", getPlanNoonTotal()) - .append("actualNoonSize", getActualNoonSize()) - .append("planAfternoonSize", getPlanAfternoonSize()) - .append("planAfternoonTotal", getPlanAfternoonTotal()) - .append("actualAfternoonSize", getActualAfternoonSize()) - .append("planFeedTotal", getPlanFeedTotal()) - .append("zookeeper", getZookeeper()) - .append("planDate", getPlanDate()) - .append("remark", getRemark()) - .toString(); + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("createDate", getCreateDate()).append("formulaId", getFormulaId()).append("batchId", getBatchId()).append("sheepHouseId", getSheepHouseId()).append("sheepCount", getSheepCount()).append("planDailySize", getPlanDailySize()).append("ratioMorning", getRatioMorning()).append("ratioNoon", getRatioNoon()).append("ratioAfternoon", getRatioAfternoon()).append("planMorningSize", getPlanMorningSize()).append("planMorningTotal", getPlanMorningTotal()).append("actualMorningSize", getActualMorningSize()).append("planNoonSize", getPlanNoonSize()).append("planNoonTotal", getPlanNoonTotal()).append("actualNoonSize", getActualNoonSize()).append("planAfternoonSize", getPlanAfternoonSize()).append("planAfternoonTotal", getPlanAfternoonTotal()).append("actualAfternoonSize", getActualAfternoonSize()).append("planFeedTotal", getPlanFeedTotal()).append("zookeeper", getZookeeper()).append("planDate", getPlanDate()).append("remark", getRemark()).toString(); } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedStatistic.java b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedStatistic.java index 2cdc21e..23bc959 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedStatistic.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFeedStatistic.java @@ -23,7 +23,8 @@ import java.util.List; @Getter public class SgFeedStatistic extends BaseEntity { private static final long serialVersionUID = 1L; - + private Long userId; + private Long deptId; /** * UUID */ diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFormulaList.java b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFormulaList.java index aac1fc9..55c7572 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFormulaList.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFormulaList.java @@ -9,33 +9,45 @@ import com.zhyc.common.core.domain.BaseEntity; /** * 配方列表对象 sg_formula_list - * + * * @author HashMap * @date 2025-08-09 */ @Setter @Getter -public class SgFormulaList extends BaseEntity -{ +public class SgFormulaList extends BaseEntity { private static final long serialVersionUID = 1L; - - /** 序号 */ + private Long userId; + private Long deptId; + /** + * 序号 + */ private Long code; - /** 配方编号 */ + /** + * 配方编号 + */ private String formulaId; - /** 配方编号 */ + /** + * 配方编号 + */ private String batchId; - /** 原料编号 */ + /** + * 原料编号 + */ @Excel(name = "原料编号") private String materialId; - /** 原料名称 */ + /** + * 原料名称 + */ @Excel(name = "原料名称") private String materialName; - /** 比例 */ + /** + * 比例 + */ @Excel(name = "比例") private Long ratio; @@ -60,14 +72,14 @@ public class SgFormulaList extends BaseEntity @Override public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("code", getCode()) - .append("formulaId", getFormulaId()) - .append("materialId", getMaterialId()) - .append("materialName", getMaterialName()) - .append("ratio", getRatio()) - .append("isGranular", getIsGranular()) - .append("isSupplement", getIsSupplement()) - .toString(); + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("code", getCode()) + .append("formulaId", getFormulaId()) + .append("materialId", getMaterialId()) + .append("materialName", getMaterialName()) + .append("ratio", getRatio()) + .append("isGranular", getIsGranular()) + .append("isSupplement", getIsSupplement()) + .toString(); } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFormulaManagement.java b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFormulaManagement.java index 3fa8563..b3aaf71 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFormulaManagement.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgFormulaManagement.java @@ -13,67 +13,87 @@ import com.zhyc.common.core.domain.BaseEntity; /** * 配方管理对象 sg_formula_management - * + * * @author HashMap * @date 2025-08-09 */ @Setter @Getter -public class SgFormulaManagement extends BaseEntity -{ +public class SgFormulaManagement extends BaseEntity { private static final long serialVersionUID = 1L; - - /** 配方编号 */ + private Long userId; + private Long deptId; + /** + * 配方编号 + */ private String formulaId; - /** 饲养阶段 */ + /** + * 饲养阶段 + */ @Excel(name = "饲养阶段") private String feedStage; - /** 批号 */ + /** + * 批号 + */ @Excel(name = "批号") private String batchId; - /** 开始使用时间 */ + /** + * 开始使用时间 + */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "开始使用时间", width = 30, dateFormat = "yyyy-MM-dd") private Date useStartDate; - /** 结束使用时间 */ + /** + * 结束使用时间 + */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "结束使用时间", width = 30, dateFormat = "yyyy-MM-dd") private Date useEndDate; - /** 使用状态 */ + /** + * 使用状态 + */ @Excel(name = "使用状态") private String useState; - /** 备注 */ + /** + * 备注 + */ @Excel(name = "备注") private String remark; - /** 配方列表 */ - private List sgFormulaList; + /** + * 配方列表 + */ + private List sgFormulaList; - /** 子配方 */ + /** + * 子配方 + */ private List subFormulaList; - /** 查询类型 * + /** + * 查询类型 * * Sub : 子配方查询 * query : 类型查询 - * */ + * + */ private String queryType; @Override public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("formulaId", getFormulaId()) - .append("feedStage", getFeedStage()) - .append("batchId", getBatchId()) - .append("useStartDate", getUseStartDate()) - .append("useEndDate", getUseEndDate()) - .append("useState", getUseState()) - .append("remark", getRemark()) - .toString(); + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("formulaId", getFormulaId()) + .append("feedStage", getFeedStage()) + .append("batchId", getBatchId()) + .append("useStartDate", getUseStartDate()) + .append("useEndDate", getUseEndDate()) + .append("useState", getUseState()) + .append("remark", getRemark()) + .toString(); } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgMaterial.java b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgMaterial.java index 316b999..9289f72 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgMaterial.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/domain/SgMaterial.java @@ -1,5 +1,6 @@ package com.zhyc.module.feed.domain; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.zhyc.common.annotation.Excel; @@ -7,62 +8,59 @@ import com.zhyc.common.core.domain.BaseEntity; /** * 原料对象 sg_material - * + * * @author HashMap * @date 2026-01-16 */ -public class SgMaterial extends BaseEntity -{ +@Data +public class SgMaterial extends BaseEntity { private static final long serialVersionUID = 1L; - - /** 原料编码 */ + private Long userId; + private Long deptId; + /** + * 原料编码 + */ @Excel(name = "原料编码") private String materialId; - /** 原料名称 */ + /** + * 原料名称 + */ @Excel(name = "原料名称") private String materialName; - /** 颗粒料 */ + /** + * 颗粒料 + */ @Excel(name = "颗粒料") private Integer isGranular; - public void setMaterialId(String materialId) - { + public void setMaterialId(String materialId) { this.materialId = materialId; } - public String getMaterialId() - { + public String getMaterialId() { return materialId; } - public void setMaterialName(String materialName) - { + public void setMaterialName(String materialName) { this.materialName = materialName; } - public String getMaterialName() - { + public String getMaterialName() { return materialName; } - public void setIsGranular(Integer isGranular) - { + public void setIsGranular(Integer isGranular) { this.isGranular = isGranular; } - public Integer getIsGranular() - { + public Integer getIsGranular() { return isGranular; } @Override public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("materialId", getMaterialId()) - .append("materialName", getMaterialName()) - .append("isGranular", getIsGranular()) - .toString(); + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("materialId", getMaterialId()).append("materialName", getMaterialName()).append("isGranular", getIsGranular()).toString(); } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedListServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedListServiceImpl.java index 894ff47..696288c 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedListServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedListServiceImpl.java @@ -2,6 +2,7 @@ package com.zhyc.module.feed.service.impl; import java.util.*; +import com.zhyc.common.annotation.DataScope; import com.zhyc.module.feed.domain.SgFeedPlan; import com.zhyc.module.feed.domain.SgFormulaManagement; import com.zhyc.module.feed.service.ISgFeedPlanService; @@ -56,6 +57,7 @@ public class SgFeedListServiceImpl implements ISgFeedListService { * @return 配料清单 */ @Override + @DataScope(deptAlias = "sg_feed_list_alias", userAlias = "sg_feed_list_alias") public List selectSgFeedListList(SgFeedList sgFeedList) { return sgFeedListMapper.selectSgFeedListList(sgFeedList); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedPlanServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedPlanServiceImpl.java index 79bcfcc..63044e3 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedPlanServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedPlanServiceImpl.java @@ -3,6 +3,7 @@ package com.zhyc.module.feed.service.impl; import java.util.Date; import java.util.List; +import com.zhyc.common.annotation.DataScope; import org.springframework.stereotype.Service; import com.zhyc.module.feed.mapper.SgFeedPlanMapper; import com.zhyc.module.feed.domain.SgFeedPlan; @@ -11,14 +12,13 @@ import org.springframework.transaction.annotation.Transactional; /** * 饲喂计划Service业务层处理 - * + * * @author HashMap * @date 2025-08-14 */ @Service -@Transactional(rollbackFor=Exception.class) -public class SgFeedPlanServiceImpl implements ISgFeedPlanService -{ +@Transactional(rollbackFor = Exception.class) +public class SgFeedPlanServiceImpl implements ISgFeedPlanService { private final SgFeedPlanMapper sgFeedPlanMapper; public SgFeedPlanServiceImpl(SgFeedPlanMapper sgFeedPlanMapper) { @@ -27,73 +27,68 @@ public class SgFeedPlanServiceImpl implements ISgFeedPlanService /** * 查询饲喂计划 - * + * * @param createDate 饲喂计划主键 * @return 饲喂计划 */ @Override - public SgFeedPlan selectSgFeedPlanByCreateDate(Date createDate) - { + public SgFeedPlan selectSgFeedPlanByCreateDate(Date createDate) { return sgFeedPlanMapper.selectSgFeedPlanByCreateDate(createDate); } /** * 查询饲喂计划列表 - * + * * @param sgFeedPlan 饲喂计划 * @return 饲喂计划 */ @Override - public List selectSgFeedPlanList(SgFeedPlan sgFeedPlan) - { + @DataScope(deptAlias = "sg_feed_plan_alias", userAlias = "sg_feed_plan_alias") + public List selectSgFeedPlanList(SgFeedPlan sgFeedPlan) { return sgFeedPlanMapper.selectSgFeedPlanList(sgFeedPlan); } /** * 新增饲喂计划 - * + * * @param sgFeedPlan 饲喂计划 * @return 结果 */ @Override - public int insertSgFeedPlan(SgFeedPlan sgFeedPlan) - { + public int insertSgFeedPlan(SgFeedPlan sgFeedPlan) { return sgFeedPlanMapper.insertSgFeedPlan(sgFeedPlan); } /** * 修改饲喂计划 - * + * * @param sgFeedPlan 饲喂计划 * @return 结果 */ @Override - public int updateSgFeedPlan(SgFeedPlan sgFeedPlan) - { + public int updateSgFeedPlan(SgFeedPlan sgFeedPlan) { return sgFeedPlanMapper.updateSgFeedPlan(sgFeedPlan); } /** * 批量删除饲喂计划 - * + * * @param createDates 需要删除的饲喂计划主键 * @return 结果 */ @Override - public int deleteSgFeedPlanByCreateDates(Date[] createDates) - { + public int deleteSgFeedPlanByCreateDates(Date[] createDates) { return sgFeedPlanMapper.deleteSgFeedPlanByCreateDates(createDates); } /** * 删除饲喂计划信息 - * + * * @param createDate 饲喂计划主键 * @return 结果 */ @Override - public int deleteSgFeedPlanByCreateDate(Date createDate) - { + public int deleteSgFeedPlanByCreateDate(Date createDate) { return sgFeedPlanMapper.deleteSgFeedPlanByCreateDate(createDate); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedStatisticServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedStatisticServiceImpl.java index 43cdde6..4f674f3 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedStatisticServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFeedStatisticServiceImpl.java @@ -3,6 +3,7 @@ package com.zhyc.module.feed.service.impl; import java.util.List; import java.util.stream.Collectors; +import com.zhyc.common.annotation.DataScope; import com.zhyc.module.base.domain.DaSheepfold; import com.zhyc.module.feed.domain.SgFeedList; import com.zhyc.module.feed.domain.SgFeedPlan; @@ -51,6 +52,7 @@ public class SgFeedStatisticServiceImpl implements ISgFeedStatisticService { * @return 饲喂量统计 */ @Override + @DataScope(deptAlias = "sg_feed_statistic_alias", userAlias = "sg_feed_statistic_alias") public List selectSgFeedStatisticList(SgFeedStatistic sgFeedStatistic) { return sgFeedStatisticMapper.selectSgFeedStatisticList(sgFeedStatistic); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFormulaListServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFormulaListServiceImpl.java index 320a9d3..424cdc3 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFormulaListServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFormulaListServiceImpl.java @@ -2,6 +2,7 @@ package com.zhyc.module.feed.service.impl; import java.util.List; +import com.zhyc.common.annotation.DataScope; import org.springframework.stereotype.Service; import com.zhyc.module.feed.mapper.SgFormulaListMapper; import com.zhyc.module.feed.domain.SgFormulaList; @@ -41,6 +42,7 @@ public class SgFormulaListServiceImpl implements ISgFormulaListService { * @return 配方列表 */ @Override + @DataScope(deptAlias = "sg_formula_list_alias", userAlias = "sg_formula_list_alias") public List selectSgFormulaListList(SgFormulaList sgFormulaList) { return sgFormulaListMapper.selectSgFormulaListList(sgFormulaList); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFormulaManagementServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFormulaManagementServiceImpl.java index b07028f..e0cce41 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFormulaManagementServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgFormulaManagementServiceImpl.java @@ -4,6 +4,7 @@ import java.util.Iterator; import java.util.List; import java.util.Objects; +import com.zhyc.common.annotation.DataScope; import com.zhyc.module.feed.domain.SgFormulaList; import com.zhyc.module.feed.mapper.SgFormulaListMapper; import org.springframework.stereotype.Service; @@ -46,6 +47,7 @@ public class SgFormulaManagementServiceImpl implements ISgFormulaManagementServi * @return 配方管理 */ @Override + @DataScope(deptAlias = "sg_formula_management_alias", userAlias = "sg_formula_management_alias") public List selectSgFormulaManagementList(SgFormulaManagement sgFormulaManagement) { List sgFormulaManagements = sgFormulaManagementMapper.selectSgFormulaManagementList(sgFormulaManagement); diff --git a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgMaterialServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgMaterialServiceImpl.java index 60c787b..33225a5 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgMaterialServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/feed/service/impl/SgMaterialServiceImpl.java @@ -2,6 +2,7 @@ package com.zhyc.module.feed.service.impl; import java.util.List; +import com.zhyc.common.annotation.DataScope; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zhyc.module.feed.mapper.SgMaterialMapper; @@ -37,6 +38,7 @@ public class SgMaterialServiceImpl implements ISgMaterialService { * @return 原料 */ @Override + @DataScope(deptAlias = "sg_material_alias", userAlias = "sg_material_alias") public List selectSgMaterialList(SgMaterial sgMaterial) { return sgMaterialMapper.selectSgMaterialList(sgMaterial); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/controller/ScBodyMeasureController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/controller/ScBodyMeasureController.java index 80a3e6a..f1bbb81 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/controller/ScBodyMeasureController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/controller/ScBodyMeasureController.java @@ -3,6 +3,11 @@ package com.zhyc.module.produce.bodyManage.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.zhyc.common.utils.DateUtils; +import com.zhyc.common.utils.SecurityUtils; +import com.zhyc.common.utils.StringUtils; +import com.zhyc.module.base.domain.BasSheep; +import com.zhyc.module.base.service.IBasSheepService; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -14,28 +19,28 @@ import com.zhyc.module.produce.bodyManage.domain.ScBodyMeasure; import com.zhyc.module.produce.bodyManage.service.IScBodyMeasureService; import com.zhyc.common.utils.poi.ExcelUtil; import com.zhyc.common.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; /** * 体尺测量Controller - * + * * @author ruoyi * @date 2025-07-27 */ @RestController @RequestMapping("/body_measure/body_measure") -public class ScBodyMeasureController extends BaseController -{ +public class ScBodyMeasureController extends BaseController { @Autowired private IScBodyMeasureService scBodyMeasureService; - + @Autowired + private IBasSheepService basSheepService; /** * 查询体尺测量列表 */ @PreAuthorize("@ss.hasPermi('body_measure:body_measure:list')") @GetMapping("/list") - public TableDataInfo list(ScBodyMeasure scBodyMeasure) - { + public TableDataInfo list(ScBodyMeasure scBodyMeasure) { startPage(); List list = scBodyMeasureService.selectScBodyMeasureList(scBodyMeasure); return getDataTable(list); @@ -47,8 +52,7 @@ public class ScBodyMeasureController extends BaseController @PreAuthorize("@ss.hasPermi('body_measure:body_measure:export')") @Log(title = "体尺测量", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, ScBodyMeasure scBodyMeasure) - { + public void export(HttpServletResponse response, ScBodyMeasure scBodyMeasure) { List list = scBodyMeasureService.selectScBodyMeasureList(scBodyMeasure); ExcelUtil util = new ExcelUtil(ScBodyMeasure.class); util.exportExcel(response, list, "体尺测量数据"); @@ -59,8 +63,7 @@ public class ScBodyMeasureController extends BaseController */ @PreAuthorize("@ss.hasPermi('body_measure:body_measure:query')") @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { + public AjaxResult getInfo(@PathVariable("id") Long id) { return success(scBodyMeasureService.selectScBodyMeasureById(id)); } @@ -70,8 +73,7 @@ public class ScBodyMeasureController extends BaseController @PreAuthorize("@ss.hasPermi('body_measure:body_measure:add')") @Log(title = "体尺测量", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody ScBodyMeasure scBodyMeasure) - { + public AjaxResult add(@RequestBody ScBodyMeasure scBodyMeasure) { return toAjax(scBodyMeasureService.insertScBodyMeasure(scBodyMeasure)); } @@ -81,8 +83,7 @@ public class ScBodyMeasureController extends BaseController @PreAuthorize("@ss.hasPermi('body_measure:body_measure:edit')") @Log(title = "体尺测量", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody ScBodyMeasure scBodyMeasure) - { + public AjaxResult edit(@RequestBody ScBodyMeasure scBodyMeasure) { return toAjax(scBodyMeasureService.updateScBodyMeasure(scBodyMeasure)); } @@ -91,14 +92,82 @@ public class ScBodyMeasureController extends BaseController */ @PreAuthorize("@ss.hasPermi('body_measure:body_measure:remove')") @Log(title = "体尺测量", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(scBodyMeasureService.deleteScBodyMeasureByIds(ids)); } @GetMapping("/search_ear_numbers") - public AjaxResult searchEarNumbers(@RequestParam("query") String query){ + public AjaxResult searchEarNumbers(@RequestParam("query") String query) { return success(scBodyMeasureService.searchEarNumbers(query.trim())); } + + /** + * 导入体尺测量数据 + */ + @PreAuthorize("@ss.hasPermi('body_measure:body_measure:import')") + @Log(title = "体尺测量", businessType = BusinessType.IMPORT) + @PostMapping("/import") + public AjaxResult importData(@RequestParam("file") MultipartFile file) throws Exception { + ExcelUtil util = new ExcelUtil<>(ScBodyMeasure.class); + List list = util.importExcel(file.getInputStream()); + + // 数据校验和处理 + StringBuilder errorMsg = new StringBuilder(); + int successCount = 0; + int failCount = 0; + + for (int i = 0; i < list.size(); i++) { + ScBodyMeasure measure = list.get(i); + try { + // 根据耳号查询羊只ID + if (StringUtils.isNotBlank(measure.getManageTags())) { + BasSheep sheep = basSheepService.selectBasSheepByManageTags(measure.getManageTags().trim()); + if (sheep == null) { + failCount++; + errorMsg.append("第").append(i + 2).append("行:耳号【") + .append(measure.getManageTags()).append("】不存在;"); + continue; + } + measure.setSheepId(sheep.getId()); + } else { + failCount++; + errorMsg.append("第").append(i + 2).append("行:耳号不能为空;"); + continue; + } + + // 设置默认值 + measure.setCreateTime(DateUtils.getNowDate()); + measure.setCreateBy(SecurityUtils.getUsername()); + + scBodyMeasureService.insertScBodyMeasure(measure); + successCount++; + + // 更新羊只当前体重 + if (measure.getCurrentWeight() != null) { + BasSheep updateSheep = new BasSheep(); + updateSheep.setId(measure.getSheepId()); + updateSheep.setCurrentWeight(measure.getCurrentWeight()); + basSheepService.updateBasSheep(updateSheep); + } + } catch (Exception e) { + failCount++; + errorMsg.append("第").append(i + 2).append("行:").append(e.getMessage()).append(";"); + } + } + + String msg = String.format("导入完成:成功%d条,失败%d条", successCount, failCount); + if (failCount > 0) { + msg += ";失败原因:" + errorMsg.toString(); + } + return success(msg); + } + + /** + * 获取繁殖状态列表(用于下拉选择) + */ + @GetMapping("/breedStatus") + public AjaxResult listBreedStatus() { + return success(scBodyMeasureService.selectBreedStatusList()); + } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBodyMeasure.java b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBodyMeasure.java index a569280..2b1bf5b 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBodyMeasure.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBodyMeasure.java @@ -1,13 +1,16 @@ package com.zhyc.module.produce.bodyManage.domain; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import com.zhyc.common.annotation.Excel; import com.zhyc.common.core.domain.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.Date; import java.util.List; /** @@ -62,8 +65,10 @@ public class ScBodyMeasure extends BaseEntity { /** * 测量日期 */ - @Excel(name = "测量日期") - private LocalDate measureDate; + @Excel(name = "测量日期", dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date measureDate; /** * 羊只类别 */ @@ -82,10 +87,12 @@ public class ScBodyMeasure extends BaseEntity { /** * 出生体重 */ + @Excel(name = "出生体重") private BigDecimal birthWeight; /** * 断奶体重 */ + @Excel(name = "断奶体重") private BigDecimal weaningWeight; /** * 当前体重 @@ -173,6 +180,13 @@ public class ScBodyMeasure extends BaseEntity { */ @Excel(name = "配后天数") private Integer postMatingDay; + + + /** + * 技术员 + */ + @Excel(name = "技术员") + private String technician; /** * 备注 */ @@ -180,12 +194,22 @@ public class ScBodyMeasure extends BaseEntity { private String comment; /** - * 技术员 + * 前端多耳号查询条件,非表字段 */ - @Excel(name = "技术员") - private String technician; - - - /** 前端多耳号查询条件,非表字段 */ private List manageTagsList; + + /** + * 是否在群查询条件(0-在群,1-离群),非数据库字段 + */ + private Integer isDelete; + + /** + * 月龄查询条件(开始),非数据库字段 + */ + private Integer monthAgeStart; + + /** + * 月龄查询条件(结束),非数据库字段 + */ + private Integer monthAgeEnd; } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBodyScore.java b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBodyScore.java index 1c455cc..c37ee77 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBodyScore.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBodyScore.java @@ -78,6 +78,13 @@ public class ScBodyScore extends BaseEntity { @Excel(name = "技术员") private String technician; - /** 前端多耳号查询条件,非表字段 */ + /** + * 前端多耳号查询条件,非表字段 + */ private List manageTagsList; + + /** + * 是否在群查询条件(0-在群,1-离群),非数据库字段 + */ + private Integer isDelete; } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBreastRating.java b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBreastRating.java index e7b0852..fc0859e 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBreastRating.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/domain/ScBreastRating.java @@ -111,7 +111,13 @@ public class ScBreastRating extends BaseEntity { @Excel(name = "技术员") private String technician; - - /** 前端多耳号查询条件,非表字段 */ + /** + * 前端多耳号查询条件,非表字段 + */ private List manageTagsList; + + /** + * 是否在群查询条件(0-在群,1-离群),非数据库字段 + */ + private Integer isDelete; } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/mapper/ScBodyMeasureMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/mapper/ScBodyMeasureMapper.java index f0fd460..7859be9 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/mapper/ScBodyMeasureMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/mapper/ScBodyMeasureMapper.java @@ -1,6 +1,8 @@ package com.zhyc.module.produce.bodyManage.mapper; import java.util.List; +import java.util.Map; + import com.zhyc.module.produce.bodyManage.domain.ScBodyMeasure; import org.apache.ibatis.annotations.Param; @@ -69,4 +71,9 @@ public interface ScBodyMeasureMapper List selectScBodyMeasureList( @Param("sc") ScBodyMeasure sc, @Param("manageTagsList") List manageTagsList); + + /** + * 查询繁殖状态列表 + */ + List> selectBreedStatusList(); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/service/IScBodyMeasureService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/service/IScBodyMeasureService.java index 2ae7c75..8222746 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/service/IScBodyMeasureService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/service/IScBodyMeasureService.java @@ -1,6 +1,8 @@ package com.zhyc.module.produce.bodyManage.service; import java.util.List; +import java.util.Map; + import com.zhyc.module.produce.bodyManage.domain.ScBodyMeasure; /** @@ -60,4 +62,9 @@ public interface IScBodyMeasureService public int deleteScBodyMeasureById(Long id); List searchEarNumbers(String query); + + /** + * 查询繁殖状态列表 + */ + List> selectBreedStatusList(); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/service/impl/ScBodyMeasureServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/service/impl/ScBodyMeasureServiceImpl.java index e528b17..77a334b 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/service/impl/ScBodyMeasureServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/bodyManage/service/impl/ScBodyMeasureServiceImpl.java @@ -1,6 +1,8 @@ package com.zhyc.module.produce.bodyManage.service.impl; import java.util.List; +import java.util.Map; + import com.zhyc.common.utils.DateUtils; import com.zhyc.common.utils.SecurityUtils; import com.zhyc.common.utils.StringUtils; @@ -127,4 +129,9 @@ public class ScBodyMeasureServiceImpl implements IScBodyMeasureService { return scBodyMeasureMapper.deleteScBodyMeasureById(id); } + + @Override + public List> selectBreedStatusList() { + return scBodyMeasureMapper.selectBreedStatusList(); + } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedPlanController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedPlanController.java index 7b6b947..cf3098a 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedPlanController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedPlanController.java @@ -70,6 +70,7 @@ public class ScBreedPlanController extends BaseController return success(scBreedPlanService.selectScBreedPlanById(id)); } + /** * 新增配种计划 */ diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedPlanGenerateController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedPlanGenerateController.java index 80861f8..513d72f 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedPlanGenerateController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedPlanGenerateController.java @@ -9,14 +9,7 @@ import com.zhyc.module.produce.breed.domain.ScBreedPlanGenerate; import com.zhyc.module.produce.breed.service.IScBreedPlanGenerateService; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.zhyc.common.annotation.Log; import com.zhyc.common.core.controller.BaseController; import com.zhyc.common.core.domain.AjaxResult; @@ -54,9 +47,9 @@ public class ScBreedPlanGenerateController extends BaseController */ @PreAuthorize("@ss.hasPermi('mating_plan:generate:selectEwe')") @GetMapping("/selectEwe") - public AjaxResult selectEligibleEwe() + public AjaxResult selectEligibleEwe(@RequestParam(value = "manageTags", required = false) String manageTags) { - List> eligibleEwe = scBreedPlanGenerateService.selectEligibleEwe(); + List> eligibleEwe = scBreedPlanGenerateService.selectEligibleEwe(manageTags); return success(eligibleEwe); } @@ -65,9 +58,9 @@ public class ScBreedPlanGenerateController extends BaseController */ @PreAuthorize("@ss.hasPermi('mating_plan:generate:selectRam')") @GetMapping("/selectRam") - public AjaxResult selectEligibleRam() + public AjaxResult selectEligibleRam(@RequestParam(value = "manageTags", required = false) String manageTags) { - List> eligibleRam = scBreedPlanGenerateService.selectEligibleRam(); + List> eligibleRam = scBreedPlanGenerateService.selectEligibleRam(manageTags); return success(eligibleRam); } @@ -249,4 +242,19 @@ public class ScBreedPlanGenerateController extends BaseController { return toAjax(scBreedPlanGenerateService.deleteScBreedPlanGenerateByIds(ids)); } + + /** + * 模糊查询母羊耳号列表 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:query')") // 根据实际权限修改 + @GetMapping("/search_ear_numbers") + public AjaxResult searchEarNumbers(@RequestParam("query") String query) { + try { + List earNumbers = scBreedPlanGenerateService.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/controller/ScBreedRecordController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedRecordController.java index 499be05..ee0243b 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedRecordController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScBreedRecordController.java @@ -143,8 +143,8 @@ public class ScBreedRecordController extends BaseController if (scBreedRecord.getBreedType() == null) { return error("配种方式不能为空"); } - if (scBreedRecord.getBreedType() < 1 || scBreedRecord.getBreedType() > 4) { - return error("配种方式只能是:1-同期发情、2-本交、3-冲胚、4-自然发情人工授精"); + if (scBreedRecord.getBreedType() < 1 || scBreedRecord.getBreedType() > 5) { + return error("配种方式只能是:1-供体母羊配种、2-同期发情人工授精、3-本交、4-自然发情人工授精、5-胚胎移植"); } // 验证技术员 @@ -239,4 +239,6 @@ public class ScBreedRecordController extends BaseController List records = scBreedRecordService.getBreedRecordsByTimeRange(sheepId, startDate, endDate); return success(records); } + + } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScLambingRecordController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScLambingRecordController.java index 04aa972..607a48e 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScLambingRecordController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScLambingRecordController.java @@ -5,14 +5,7 @@ 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.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.zhyc.common.annotation.Log; import com.zhyc.common.core.controller.BaseController; import com.zhyc.common.core.domain.AjaxResult; @@ -62,7 +55,17 @@ public class ScLambingRecordController extends BaseController { 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 = scLambingRecordService.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/produce/breed/controller/ScMiscarriageRecordController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScMiscarriageRecordController.java index c09c67c..2b21344 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScMiscarriageRecordController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScMiscarriageRecordController.java @@ -5,14 +5,7 @@ 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.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.zhyc.common.annotation.Log; import com.zhyc.common.core.controller.BaseController; import com.zhyc.common.core.domain.AjaxResult; @@ -131,4 +124,19 @@ public class ScMiscarriageRecordController extends BaseController { return toAjax(scMiscarriageRecordService.deleteScMiscarriageRecordByIds(ids)); } + + /** + * 模糊查询母羊耳号列表 + */ + @PreAuthorize("@ss.hasPermi('breed:lambing_records:query')") // 根据实际权限修改 + @GetMapping("/search_ear_numbers") + public AjaxResult searchEarNumbers(@RequestParam("query") String query) { + try { + List earNumbers = scMiscarriageRecordService.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/controller/ScPregnancyRecordController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScPregnancyRecordController.java index 3603440..fae1ab1 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScPregnancyRecordController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScPregnancyRecordController.java @@ -356,4 +356,18 @@ public class ScPregnancyRecordController extends BaseController 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 = scPregnancyRecordService.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/controller/ScWeanRecordController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/controller/ScWeanRecordController.java index 8a8f693..23e0cb7 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 @@ -128,4 +128,20 @@ public class ScWeanRecordController extends BaseController { public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(scWeanRecordService.deleteScWeanRecordByIds(ids)); } + + + /** + * 模糊查询母羊耳号列表 + */ + @PreAuthorize("@ss.hasPermi('breed:lambing_records:query')") // 根据实际权限修改 + @GetMapping("/search_ear_numbers") + public AjaxResult searchEarNumbers(@RequestParam("query") String query) { + try { + List 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/ScBreedPlanGenerate.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScBreedPlanGenerate.java index 2658186..ed8043d 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScBreedPlanGenerate.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScBreedPlanGenerate.java @@ -1,6 +1,8 @@ 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; @@ -65,4 +67,15 @@ public class ScBreedPlanGenerate extends BaseEntity /** 审批意见 */ private String approveRemark; + + /** 全部羊耳号列表(用于多耳号查询) */ + 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/domain/ScBreedRecord.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScBreedRecord.java index 72565f2..ad8b0c9 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScBreedRecord.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScBreedRecord.java @@ -1,5 +1,6 @@ package com.zhyc.module.produce.breed.domain; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -20,135 +21,135 @@ public class ScBreedRecord extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键ID */ + // ===================== 基础主键/关联ID字段 ===================== + // 基础关联ID private Long id; - - /** 羊只id */ - @Excel(name = "羊只id") private Long sheepId; - - /** 配种公羊id */ - @Excel(name = "配种公羊id") private String ramId; - - /** 配种母羊id */ - @Excel(name = "配种母羊id") private String eweId; - /** 技术员 */ - @Excel(name = "技术员") - private String technician; - - /** 繁殖用药/耗精量 */ - @Excel(name = "耗精量") - private String breedDrugs; - - /** 配种方式 1-同期发情 2-本交 */ - @Excel(name = "配种方式", readConverterExp = "1=同期发情,2=本交") - private Integer breedType; - - // ============ 显示字段 ============ - - /** 母羊耳号 */ + // --- 导出及表单顺序 --- @Excel(name = "耳号") - private String eweManageTags; + private String eweManageTags; // 母羊耳号 - /** 母羊品种 */ @Excel(name = "品种") private String eweVariety; - /** 公羊耳号 */ + @Excel(name = "事件类型") + private String eventType = "配种"; + + // 核心注解:指定JSON解析/序列化的日期格式,时区指定为东八区(Asia/Shanghai) + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai") + @Excel(name = "配种日期", dateFormat = "yyyy-MM-dd") + private Date createTime; + @Excel(name = "配种公羊") private String ramManageTags; - /** 公羊品种 */ @Excel(name = "配种公羊品种") private String ramVariety; - /** 胎次 */ - @Excel(name = "胎次") - private Integer eweParity; + @Excel(name = "供体母羊") + private String donorEweNo; + + @Excel(name = "供体母羊品种") + private String donorEweVariety; + + @Excel(name = "供体公羊") + private String donorRamNo; + + @Excel(name = "供体公羊品种") + private String donorRamVariety; + + @Excel(name = "移胚数") + private Integer embryoCount; + + /** 1-同期发情, 2-本交, 3-自然发情, 4-胚胎移植 */ + @Excel(name = "配种方式", readConverterExp = "1=供体母羊配种,2=同期发情人工授精,3=本交,4=胚胎移植,5=自然发情人工授精") + private Integer breedType; + + @Excel(name = "配种子类型") + private String embryoSubType; // 体内/体外 + 冻胚/鲜胚 - /** 月龄 */ @Excel(name = "月龄") private Integer eweMonthAge; - /** 羊舍名称 */ - @Excel(name = "当前羊舍") - private String eweSheepfoldName; - - /** 繁育状态 */ - @Excel(name = "繁育状态") - private String eweBreedStatus; - - /** 是否性控 */ - @Excel(name = "是否性控", readConverterExp = "0=否,1=是") - private Integer eweControlled; - - /** 羊只备注 */ - @Excel(name = "羊只备注") - private String eweComment; - - /** 牧场名称 */ - @Excel(name = "所在牧场") - private String ranchName; - - /** 配种方式显示 */ - @Excel(name = "配种方式") - private String matingType; - - /** 羊只类别 */ @Excel(name = "配种时羊只类别") private String sheepType; - /** 配次 */ + @Excel(name = "胎次") + private Integer eweParity; + + @Excel(name = "孕检记录id") + private Integer pregnancyRecordId; + @Excel(name = "配次") private Integer matingCount; - /** 发情后配种时间 */ - @Excel(name = "发情后配种时间(小时)") + @Excel(name = "发情后配种时间") private Long timeSincePlanning; - /** 牧场ID */ - private Long ranchId; + @Excel(name = "当前羊舍") + private String eweSheepfoldName; - /** 配种计划ID */ - private Long planId; + @Excel(name = "技术员") + private String technician; - // ============ 新增孕检相关字段 ============ + @Excel(name = "繁殖用药") + private String breedDrugs; + + @Excel(name = "羊只备注") + private String eweComment; + + @Excel(name = "繁育状态") + private String eweBreedStatus; - /** 孕检日期 */ @Excel(name = "孕检日期") private Date pregnancyCheckDate; - /** 孕检结果 */ @Excel(name = "孕检结果") private String pregnancyResult; - /** 孕检方式 */ - @Excel(name = "孕检方式") - private String pregnancyWay; - - /** 胎数 */ - @Excel(name = "胎数") - private Integer fetusCount; - - /** 孕检技术员 */ - @Excel(name = "孕检技术员") - private String pregnancyTechnician; - - /** 孕检备注 */ - @Excel(name = "孕检备注") - private String pregnancyRemark; - - /** 孕检记录ID */ - private Long pregnancyRecordId; - - /** 配种到孕检间隔天数 */ @Excel(name = "配种到孕检间隔(天)") private Integer daysToPregnancyCheck; - /** 是否已孕检 */ - @Excel(name = "是否已孕检", readConverterExp = "0=否,1=是") - private Integer isPregnancyChecked; + + @Excel(name = "预产日期") + private Date expectedDate; + + @Excel(name = "实产日期") + private Date actualLambingDate; + + @Excel(name = "配种时产后天数") + private Long daysPostLambing; // 距离上一次产羔 + + @Excel(name = "配种时泌乳天数") + private Long daysLactation; // 距离上一次孕检且怀孕 + + @Excel(name = "配种时配后天数") + private Long daysPostMating; // 距离上一次配种 + + @Excel(name = "上次配种日期") + private Date lastMatingDate; + + @Excel(name = "冻精号") + private String frozenSemenNo; // 新增字段:自行输入 + + @Excel(name = "是否性控", readConverterExp = "0=否,1=是") + private Integer eweControlled; + + @Excel(name = "耗精量") + private String spermConsumption; + + @Excel(name = "创建人") + private String createBy; + + @Excel(name = "创建日期") + private Date createDate; + + @Excel(name = "所在牧场") + private String ranchName; + + @Excel(name = "备注") + private String comment; } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScLambDetail.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScLambDetail.java index 33cd66d..b0dfd7c 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScLambDetail.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScLambDetail.java @@ -141,7 +141,7 @@ public class ScLambDetail extends BaseEntity /** 是否留养:0-否,1-是 */ @Excel(name = "是否留养") - private Integer isRetained; + private Boolean isRetained; /** 家系 */ @Excel(name = "家系") diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScLambingRecord.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScLambingRecord.java index bfb27a0..220effd 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScLambingRecord.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScLambingRecord.java @@ -121,6 +121,17 @@ public class ScLambingRecord extends BaseEntity @Excel(name = "未留养母羔数量") private Integer unretainedFemaleCount; + /** 全部羊耳号列表(用于多耳号查询) */ + private List allEarNumbers; + + public List getAllEarNumbers() { + return allEarNumbers; + } + + public void setAllEarNumbers(List allEarNumbers) { + this.allEarNumbers = allEarNumbers; + } + /** 羔羊信息列表(从羊只信息表查询) */ private List lambInfoList; diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScMiscarriageRecord.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScMiscarriageRecord.java index 5cf4b1a..d62097c 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScMiscarriageRecord.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScMiscarriageRecord.java @@ -1,6 +1,8 @@ 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; @@ -305,4 +307,15 @@ public class ScMiscarriageRecord extends BaseEntity .append("variety", getVariety()) .toString(); } + + /** 全部羊耳号列表(用于多耳号查询) */ + 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/domain/ScPregnancyRecord.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScPregnancyRecord.java index 0dc61cd..0c0893d 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScPregnancyRecord.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScPregnancyRecord.java @@ -1,6 +1,8 @@ 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; @@ -119,4 +121,29 @@ public class ScPregnancyRecord extends BaseEntity /** 配后天数 */ @Excel(name = "配后天数") private Integer daysAfterMating; + /** 全部羊耳号列表(用于多耳号查询) */ + private List allEarNumbers; + // 1. 新增字段 + @Excel(name = "孕检原因") + private String reason; // 初检/复检 + + // 2. 胚胎移植相关字段 (用于前端显示) + @Excel(name = "供体母羊") + private String donorEwe; + @Excel(name = "供体母羊品种") + private String donorEweVariety; + @Excel(name = "供体公羊") + private String donorRam; + @Excel(name = "供体公羊品种") + private String donorRamVariety; + @Excel(name = "移胚数") + private Integer embryoCount; + + 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/domain/ScSheepDeath.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScSheepDeath.java index 91e6d91..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 @@ -70,10 +70,8 @@ public class ScSheepDeath extends BaseEntity @Excel(name = "是否删除(0:未删除 1:已删除)") private Long isDelete; - // --- 扩展字段 --- - - /** 品种 (查询显示用) */ - @Excel(name = "品种") + // 以下字段仅用于前端显示,不存储到数据库 + /** 品种 */ private String variety; /** 羊只类型 (原事假类型改为羊只类型查询) */ @@ -225,8 +223,33 @@ public class ScSheepDeath extends BaseEntity public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("id", getId()) + .append("sheepId", getSheepId()) .append("manageTags", getManageTags()) + .append("eventType", getEventType()) .append("deathDate", getDeathDate()) + .append("diseaseTypeId", getDiseaseTypeId()) + .append("diseaseSubtypeId", getDiseaseSubtypeId()) + .append("disposalDirection", getDisposalDirection()) + .append("technician", getTechnician()) + .append("handler", getHandler()) + .append("workGroup", getWorkGroup()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("comment", getComment()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("isDelete", getIsDelete()) .toString(); } + + /** 全部羊耳号列表(用于多耳号查询) */ + 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/domain/ScWeanRecord.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/domain/ScWeanRecord.java index f53ba46..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 @@ -67,30 +67,39 @@ public class ScWeanRecord extends BaseEntity { @Excel(name = "耳号") private String earNumber; + /** 品种 */ @Excel(name = "品种") private String breed; + /** 事件类型 */ @Excel(name = "事件类型") private String eventType; + /** 性别 */ @Excel(name = "性别") private String gender; + /** 父号 */ @Excel(name = "父号") private String fatherNumber; + /** 母号 */ @Excel(name = "母号") private String motherNumber; + /** 月龄 */ @Excel(name = "月龄") private Integer monthAge; + /** 出生重量 */ @Excel(name = "出生重量") private BigDecimal birthWeight; + /** 羊舍 */ @Excel(name = "羊舍") private String sheepPen; + /** 繁育状态 */ @Excel(name = "繁育状态") private String breedingStatus; } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedPlanGenerateMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedPlanGenerateMapper.java index 0f744e6..a9d1e66 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedPlanGenerateMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedPlanGenerateMapper.java @@ -128,4 +128,12 @@ public interface ScBreedPlanGenerateMapper * @return 结果 */ public int deleteTempBreedPlanByPlanId(Long planGenerateId); + + /** + * 模糊查询母羊耳号列表 + * + * @param query 查询关键字 + * @return 耳号列表 + */ + 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/mapper/ScBreedRecordMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedRecordMapper.java index 13be12c..f630531 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedRecordMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScBreedRecordMapper.java @@ -145,4 +145,12 @@ public interface ScBreedRecordMapper * @return 配种母羊数 */ Long countMatedEwesByRamId(String ramManageTags); + + /** + * 根据受体(母羊)耳号查询最新的冲胚记录信息 + * 用于胚胎移植时自动填充供体和移胚数 + * @param manageTags 受体母羊耳号 + * @return 冲胚记录Map + */ + public Map getFlushRecordByEweNo(@Param("manageTags") String manageTags); } \ 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 a49f6bf..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 @@ -2,6 +2,7 @@ package com.zhyc.module.produce.breed.mapper; import java.util.List; import com.zhyc.module.produce.breed.domain.ScDryMilk; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** @@ -9,6 +10,7 @@ import org.apache.ibatis.annotations.Param; * * @author ruoyi * @date 2025-07-15 */ +@Mapper public interface ScDryMilkMapper { /** diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScLambingRecordMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScLambingRecordMapper.java index 293c56c..f737c60 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScLambingRecordMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScLambingRecordMapper.java @@ -85,4 +85,6 @@ public interface ScLambingRecordMapper * @return 后代总数 */ Long countOffspringByRamId(String ramManageTags); + + 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/mapper/ScMiscarriageRecordMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScMiscarriageRecordMapper.java index 700e5b5..19dadd6 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScMiscarriageRecordMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScMiscarriageRecordMapper.java @@ -3,6 +3,7 @@ package com.zhyc.module.produce.breed.mapper; import java.util.List; import java.util.Map; import com.zhyc.module.produce.breed.domain.ScMiscarriageRecord; +import org.apache.ibatis.annotations.Param; /** * 流产记录Mapper接口 @@ -67,4 +68,12 @@ public interface ScMiscarriageRecordMapper * @return 羊只信息 */ public Map selectSheepByManageTags(String manageTags); + + /** + * 模糊查询母羊耳号列表 + * + * @param query 查询关键字 + * @return 耳号列表 + */ + 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/mapper/ScPregnancyRecordMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScPregnancyRecordMapper.java index 073ec35..7801277 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScPregnancyRecordMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScPregnancyRecordMapper.java @@ -100,4 +100,12 @@ public interface ScPregnancyRecordMapper */ Long countPregnantEwesByRamIdAndBreedType(@Param("ramManageTags") String ramManageTags, @Param("breedType") Integer breedType); + + /** + * 模糊查询母羊耳号列表 + * + * @param query 查询关键字 + * @return 耳号列表 + */ + 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/IScBreedPlanGenerateService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScBreedPlanGenerateService.java index 499438d..cabf073 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScBreedPlanGenerateService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScBreedPlanGenerateService.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import com.zhyc.module.produce.breed.domain.ScBreedPlanGenerate; +import org.springframework.web.bind.annotation.RequestParam; /** * 配种计划生成Service接口 @@ -34,14 +35,14 @@ public interface IScBreedPlanGenerateService * * @return 符合条件的母羊列表 */ - public List> selectEligibleEwe(); + public List> selectEligibleEwe(@RequestParam(value = "manageTags", required = false) String manageTags); /** * 筛选符合条件的公羊 * * @return 符合条件的公羊列表 */ - public List> selectEligibleRam(); + public List> selectEligibleRam(@RequestParam(value = "manageTags", required = false) String manageTags); /** * 自动生成配种计划 @@ -120,4 +121,12 @@ public interface IScBreedPlanGenerateService * @return 结果 */ public int deleteScBreedPlanGenerateById(Long id); + + /** + * 模糊查询母羊耳号列表 + * + * @param query 查询关键字 + * @return 耳号列表 + */ + public List searchEarNumbers(String query); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScBreedRecordService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScBreedRecordService.java index 293d63e..b4a7300 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScBreedRecordService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScBreedRecordService.java @@ -119,4 +119,6 @@ public interface IScBreedRecordService * @return 配种记录集合 */ public List getBreedRecordsByTimeRange(Long sheepId, String startDate, String endDate); + + ScBreedRecord getAutomaticBreedMatch(String manageTags); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScLambingRecordService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScLambingRecordService.java index e71cd10..de24f43 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScLambingRecordService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScLambingRecordService.java @@ -58,4 +58,6 @@ public interface IScLambingRecordService { * 查询羔羊详情 */ public List selectLambDetailByLambingRecordId(Long lambingRecordId); + + public List searchEarNumbers(String query); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScMiscarriageRecordService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScMiscarriageRecordService.java index e260f54..9101f46 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScMiscarriageRecordService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScMiscarriageRecordService.java @@ -67,4 +67,11 @@ public interface IScMiscarriageRecordService * @return 羊只信息 */ public Map selectSheepByManageTags(String manageTags); + /** + * 模糊查询母羊耳号列表 + * + * @param query 查询关键字 + * @return 耳号列表 + */ + public List searchEarNumbers(String query); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScPregnancyRecordService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScPregnancyRecordService.java index 8f89031..6cb75ac 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScPregnancyRecordService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScPregnancyRecordService.java @@ -75,4 +75,11 @@ public interface IScPregnancyRecordService * @return 配种信息 */ public Map getBreedInfoByManageTags(String manageTags); + /** + * 模糊查询母羊耳号列表 + * + * @param query 查询关键字 + * @return 耳号列表 + */ + public List searchEarNumbers(String query); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScWeanRecordService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/IScWeanRecordService.java index d94bd76..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 @@ -1,6 +1,7 @@ package com.zhyc.module.produce.breed.service; import java.util.List; + import com.zhyc.module.produce.breed.domain.ScWeanRecord; /** diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedPlanGenerateServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedPlanGenerateServiceImpl.java index f2073ce..c76eb04 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedPlanGenerateServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedPlanGenerateServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.util.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; +import org.springframework.web.bind.annotation.RequestParam; /** * 配种计划生成Service业务层处理 @@ -67,7 +68,7 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi * @return 符合条件的母羊列表 */ @Override - public List> selectEligibleEwe() + public List> selectEligibleEwe(@RequestParam(value = "manageTags", required = false) String manageTags) { return scBreedPlanGenerateMapper.selectEligibleEwe(); } @@ -78,7 +79,7 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi * @return 符合条件的公羊列表 */ @Override - public List> selectEligibleRam() + public List> selectEligibleRam(@RequestParam(value = "manageTags", required = false) String manageTags) { return scBreedPlanGenerateMapper.selectEligibleRam(); } @@ -102,7 +103,16 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi // 自动生成计划名称:日期+计划类型 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sdf.format(new Date()); - String planTypeName = (planType == 1) ? "同期发情配种计划" : "本交配种计划"; + String planTypeName = ""; + + switch (planType) { + case 1: planTypeName = "供体母羊配种计划"; break; + case 2: planTypeName = "同期发情人工授精计划"; break; + case 3: planTypeName = "本交配种计划"; break; + case 4: planTypeName = "自然发情人工授精计划"; break; + default: planTypeName = "未知配种计划"; break; + } + planName = dateStr + planTypeName; planGenerate.setPlanName(planName); @@ -137,21 +147,15 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi for (int i = 0; i < eweIds.size(); i++) { ScBreedPlan breedPlan = new ScBreedPlan(); - // 存储公羊ID而不是字符串 breedPlan.setRamId(ramIds.get(ramIndex).toString()); breedPlan.setEweId(eweIds.get(i).toString()); - // 根据计划类型设置配种类型:同期发情配种计划->同期发情,本交配种计划->本交 - if (planType == 1) { - breedPlan.setBreedType(1L); // 同期发情 - } else { - breedPlan.setBreedType(2L); // 本交 - } + // 2. 修改:直接使用 planType 作为 breedType (假设一一对应) + // 1=供体母羊配种, 2=同期发情人工授精, 3=本交, 4=自然发情人工授精 + breedPlan.setBreedType(Long.valueOf(planType)); - // 插入临时配种计划,关联到生成记录 scBreedPlanGenerateMapper.insertTempBreedPlan(planGenerateId, breedPlan); - // 每个公羊配种指定数量的母羊后,切换到下一个公羊 if ((i + 1) % ewesPerRam == 0 && ramIndex < ramIds.size() - 1) { ramIndex++; } @@ -356,10 +360,32 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi // 空行 rowNum++; + String typeName = ""; + switch (planGenerate.getPlanType()) { + case 1: typeName = "供体母羊配种计划"; break; + case 2: typeName = "同期发情人工授精计划"; break; + case 3: typeName = "本交配种计划"; break; + case 4: typeName = "自然发情人工授精计划"; break; + default: typeName = "未知"; break; + } + // 基本信息 Row infoRow1 = sheet.createRow(rowNum++); infoRow1.createCell(0).setCellValue("计划类型:"); - infoRow1.createCell(1).setCellValue(planGenerate.getPlanType() == 1 ? "同期发情配种计划" : "本交配种计划"); + String planTypeNameStr; + Integer type = planGenerate.getPlanType(); + if (type != null) { + switch (type) { + case 1: planTypeNameStr = "供体母羊配种计划"; break; + case 2: planTypeNameStr = "同期发情人工授精计划"; break; + case 3: planTypeNameStr = "本交配种计划"; break; + case 4: planTypeNameStr = "自然发情人工授精计划"; break; + default: planTypeNameStr = "未知类型"; + } + } else { + planTypeNameStr = ""; + } + infoRow1.createCell(1).setCellValue(planTypeNameStr); infoRow1.createCell(3).setCellValue("计划日期:"); infoRow1.createCell(4).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(planGenerate.getPlanDate())); @@ -447,14 +473,23 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi dataRow.createCell(colNum++).setCellValue(getStringValue(detail, "ram_current_weight")); // 配种类型 - Object breedType = detail.get("breed_type"); + Object breedTypeObj = detail.get("breed_type"); String breedTypeName = "未知类型"; - if (breedType != null) { - int typeValue = Integer.parseInt(breedType.toString()); - breedTypeName = typeValue == 1 ? "同期发情" : (typeValue == 2 ? "本交" : "未知类型"); + if (breedTypeObj != null) { + try { + int typeValue = Integer.parseInt(breedTypeObj.toString()); + switch (typeValue) { + case 1: breedTypeName = "供体母羊配种"; break; + case 2: breedTypeName = "同期发情人工授精"; break; + case 3: breedTypeName = "本交"; break; + case 4: breedTypeName = "自然发情人工授精"; break; + default: breedTypeName = "未知类型"; + } + } catch (NumberFormatException e) { + // ignore + } } - dataRow.createCell(colNum++).setCellValue(breedTypeName); - + dataRow.createCell(colNum++).setCellValue(breedTypeName); // 应用数据样式 for (int j = 0; j < headers.length; j++) { if (dataRow.getCell(j) != null) { @@ -537,4 +572,8 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi scBreedPlanGenerateMapper.deleteTempBreedPlanByPlanId(id); return scBreedPlanGenerateMapper.deleteScBreedPlanGenerateById(id); } + @Override + public List searchEarNumbers(String query) { + return scBreedPlanGenerateMapper.searchEarNumbers(query); + } } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedRecordServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedRecordServiceImpl.java index c861d1e..beaa5c7 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedRecordServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScBreedRecordServiceImpl.java @@ -1,5 +1,6 @@ package com.zhyc.module.produce.breed.service.impl; +import java.util.HashMap; import java.util.List; import java.util.Map; import com.zhyc.common.utils.DateUtils; @@ -44,31 +45,47 @@ public class ScBreedRecordServiceImpl implements IScBreedRecordService * @param scBreedRecord 配种记录 * @return 配种记录 */ +// @Override +// public List selectScBreedRecordList(ScBreedRecord scBreedRecord) +// { +// // 如果查询条件中有耳号,需要先转换为ID +// if (StringUtils.isNotEmpty(scBreedRecord.getEweManageTags())) +// { +// Long eweId = scBreedRecordMapper.getSheepIdByManageTags(scBreedRecord.getEweManageTags()); +// if (eweId != null) +// { +// scBreedRecord.setEweId(eweId.toString()); +// } +// } +// +// if (StringUtils.isNotEmpty(scBreedRecord.getRamManageTags())) +// { +// Long ramId = scBreedRecordMapper.getRamIdByManageTags(scBreedRecord.getRamManageTags()); +// if (ramId != null) +// { +// scBreedRecord.setRamId(ramId.toString()); +// } +// } +// +// return scBreedRecordMapper.selectScBreedRecordList(scBreedRecord); +// } @Override - public List selectScBreedRecordList(ScBreedRecord scBreedRecord) - { - // 如果查询条件中有耳号,需要先转换为ID + public List selectScBreedRecordList(ScBreedRecord scBreedRecord) { + // ... (耳号转ID逻辑保持不变) ... + // 如果查询条件中有耳号,需要先转换为ID (注意:供体母羊/公羊是直接存字符串的,不需要转ID,只有作为受体的eweId需要转) if (StringUtils.isNotEmpty(scBreedRecord.getEweManageTags())) { Long eweId = scBreedRecordMapper.getSheepIdByManageTags(scBreedRecord.getEweManageTags()); if (eweId != null) { + // 注意:这里仅设置eweId用于查询作为受体的记录 + // 如果用户想搜"供体母羊"是xxx,Mapper XML中的 OR 逻辑会处理 scBreedRecord.setEweId(eweId.toString()); } } - - if (StringUtils.isNotEmpty(scBreedRecord.getRamManageTags())) - { - Long ramId = scBreedRecordMapper.getRamIdByManageTags(scBreedRecord.getRamManageTags()); - if (ramId != null) - { - scBreedRecord.setRamId(ramId.toString()); - } - } - + // ... return scBreedRecordMapper.selectScBreedRecordList(scBreedRecord); } - /** * 新增配种记录 * @@ -172,34 +189,59 @@ public class ScBreedRecordServiceImpl implements IScBreedRecordService * @param manageTags 母羊管理耳号 * @return 配种计划信息 */ +// @Override +// public Map getLatestBreedPlanByEweTags(String manageTags) +// { +// try { +// // 优先从配种计划生成表获取最新计划 +// Map latestPlan = scBreedRecordMapper.getLatestBreedPlanByEweTags(manageTags); +// +// if (latestPlan != null && !latestPlan.isEmpty()) { +// log.info("从配种计划生成表获取到配种计划: {}", latestPlan); +// return latestPlan; +// } +// +// // 如果生成表中没有,则从普通配种计划表获取 +// Map normalPlan = scBreedRecordMapper.getBreedPlanByEweTags(manageTags); +// if (normalPlan != null && !normalPlan.isEmpty()) { +// log.info("从配种计划表获取到配种计划: {}", normalPlan); +// return normalPlan; +// } +// +// log.warn("未找到母羊耳号 {} 的配种计划信息", manageTags); +// return null; +// +// } catch (Exception e) { +// log.error("获取配种计划信息时发生异常,母羊耳号: {}", manageTags, e); +// return null; +// } +// } + /** + * 简化后的获取配种计划方法:移除冲胚记录自动关联 + */ @Override - public Map getLatestBreedPlanByEweTags(String manageTags) - { + public Map getLatestBreedPlanByEweTags(String manageTags) { try { - // 优先从配种计划生成表获取最新计划 + // 1. 仅从配种计划生成表获取(本交、人工授精等普通计划) Map latestPlan = scBreedRecordMapper.getLatestBreedPlanByEweTags(manageTags); - if (latestPlan != null && !latestPlan.isEmpty()) { - log.info("从配种计划生成表获取到配种计划: {}", latestPlan); return latestPlan; } - // 如果生成表中没有,则从普通配种计划表获取 + // 2. 从普通配种计划表获取 Map normalPlan = scBreedRecordMapper.getBreedPlanByEweTags(manageTags); if (normalPlan != null && !normalPlan.isEmpty()) { - log.info("从配种计划表获取到配种计划: {}", normalPlan); return normalPlan; } - log.warn("未找到母羊耳号 {} 的配种计划信息", manageTags); + // 胚胎移植逻辑已移至前端手动输入,此处不再查询 sc_embryo_flush + log.info("未找到母羊 {} 的普通配种计划", manageTags); return null; - } catch (Exception e) { - log.error("获取配种计划信息时发生异常,母羊耳号: {}", manageTags, e); + log.error("获取配种计划异常", e); return null; } } - /** * 同步孕检结果到配种记录 * @@ -248,45 +290,57 @@ public class ScBreedRecordServiceImpl implements IScBreedRecordService /** * 新增配种记录 - * - * @param scBreedRecord 配种记录 - * @return 结果 */ @Override public int insertScBreedRecord(ScBreedRecord scBreedRecord) { - // 设置创建时间 scBreedRecord.setCreateTime(DateUtils.getNowDate()); - // 插入配种记录 + // 如果是胚胎移植(5),且前端没有传移胚数等信息,可以在这里做一次兜底查询 + // 但通常前端 form 表单提交时应该已经通过 getLatestBreedPlanByEweTags 填好了 + + // 插入记录 int result = scBreedRecordMapper.insertScBreedRecord(scBreedRecord); - // 如果插入成功,同步更新羊只的配种日期 + // 同步更新羊只的基础信息(配种次数、配种日期) if (result > 0 && scBreedRecord.getEweId() != null) { try { Long eweId = Long.parseLong(scBreedRecord.getEweId()); - -// // 方案1:只更新配种日期(推荐) -// scBreedRecordMapper.updateSheepMatingDate( -// eweId, -// scBreedRecord.getCreateTime(), -// scBreedRecord.getCreateBy() -// ); - -// 方案2:同时更新配种日期和配种次数(如果需要的话,取消下面注释) - scBreedRecordMapper.incrementSheepMatingCount( - eweId, - scBreedRecord.getCreateTime(), - scBreedRecord.getCreateBy() - ); - - log.info("同步更新羊只 {} 的配种日期成功", eweId); + scBreedRecordMapper.incrementSheepMatingCount( + eweId, + scBreedRecord.getCreateTime(), + scBreedRecord.getCreateBy() + ); } catch (Exception e) { log.error("同步更新羊只配种日期失败", e); - // 不影响主流程,只记录日志 } } - return result; } + @Override + public ScBreedRecord getAutomaticBreedMatch(String manageTags) { + // 1. 尝试从配种计划获取 (breed_type: 1, 2, 3, 4) + Map plan = scBreedRecordMapper.getLatestBreedPlanByEweTags(manageTags); + if (plan != null) { + ScBreedRecord record = new ScBreedRecord(); + record.setBreedType(Integer.parseInt(plan.get("breed_type").toString())); + record.setRamManageTags((String) plan.get("ram_manage_tags")); + return record; + } + + // 2. 尝试从冲胚记录获取 + Map flushRecord = scBreedRecordMapper.getFlushRecordByEweNo(manageTags); + if (flushRecord != null) { + ScBreedRecord record = new ScBreedRecord(); + record.setBreedType(5); // 设定 5 为胚胎移植(您可根据实际调整枚举) + record.setEmbryoCount(Integer.parseInt(flushRecord.get("transferred").toString())); + record.setDonorEweNo((String) flushRecord.get("donor_female_no")); + record.setDonorRamNo((String) flushRecord.get("donor_male_no")); + // 根据冲胚记录的存储方式和类型拼接“配种子类型” + record.setEmbryoSubType(flushRecord.get("embryo_type") + " " + flushRecord.get("storage_method")); + return record; + } + + return null; // 均未找到 + } } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScEmbryoFlushServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScEmbryoFlushServiceImpl.java index 3af35d8..03afbcc 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScEmbryoFlushServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScEmbryoFlushServiceImpl.java @@ -45,10 +45,10 @@ public class ScEmbryoFlushServiceImpl implements IScEmbryoFlushService VARIETY_NAME_MAP.put(4, "级杂一代"); VARIETY_NAME_MAP.put(5, "级杂二代"); VARIETY_NAME_MAP.put(6, "级杂三代"); - VARIETY_NAME_MAP.put(7, "1世代"); - VARIETY_NAME_MAP.put(8, "2世代"); - VARIETY_NAME_MAP.put(9, "3世代"); - VARIETY_NAME_MAP.put(10, "4世代"); + VARIETY_NAME_MAP.put(7, "一世代"); + VARIETY_NAME_MAP.put(8, "二世代"); + VARIETY_NAME_MAP.put(9, "三世代"); + VARIETY_NAME_MAP.put(10, "四世代"); } @Override @@ -142,23 +142,24 @@ public class ScEmbryoFlushServiceImpl implements IScEmbryoFlushService // 2. 查询配种记录获取公羊信息 Map breedRecord = scEmbryoFlushMapper.selectBreedRecordByEwe(donorFemaleNo); if (breedRecord != null && !breedRecord.isEmpty()) { - String ramId = (String) breedRecord.get("ramId"); - result.put("donorMaleNo", ramId); + String maleNo = (String) breedRecord.get("donorMaleNo"); // 这里的 Key 必须对应 SQL 里的别名 + result.put("donorMaleNo", maleNo); result.put("matingDate", breedRecord.get("matingDate")); // 3. 查询公羊品种 - if (ramId != null && !ramId.trim().isEmpty()) { - Map maleInfo = scEmbryoFlushMapper.selectSheepInfoByManageTag(ramId); + if (maleNo != null && !maleNo.trim().isEmpty()) { + Map maleInfo = scEmbryoFlushMapper.selectSheepInfoByManageTag(maleNo); if (maleInfo != null && !maleInfo.isEmpty()) { String maleVariety = (String) maleInfo.get("variety"); - Integer maleVarietyId = getIntValue(maleInfo.get("varietyId")); - result.put("donorMaleVariety", maleVariety); - result.put("donorMaleVarietyId", maleVarietyId); - // 4. 根据品种ID计算胚胎品种 - if (maleVarietyId != null && femaleVarietyId != null) { - String embryoVariety = calculateEmbryoVarietyById(maleVarietyId, femaleVarietyId); + // 4. 【关键修复】使用品种名称计算胚胎品种 + // 这样可以确保无论数据库ID是多少,只要名字是对的就能算出结果 + Integer mId = getVarietyIdByName(maleVariety); + Integer fId = getVarietyIdByName(femaleVariety); + + if (mId != null && fId != null) { + String embryoVariety = calculateEmbryoVarietyById(mId, fId); result.put("embryoVariety", embryoVariety); } } @@ -168,6 +169,7 @@ public class ScEmbryoFlushServiceImpl implements IScEmbryoFlushService return result; } + /** * 安全获取Integer值 */ @@ -292,23 +294,22 @@ public class ScEmbryoFlushServiceImpl implements IScEmbryoFlushService // 级杂二代(BM)或n世代(SM) × 级杂一代/级杂二代/级杂三代/回交(公) → 世代 // 判断公羊是否为可产生世代的品种(级杂一代/二代/三代/回交) - boolean isMaleForShidai = (male == VARIETY_JIZA_1 || male == VARIETY_JIZA_2 || - male == VARIETY_JIZA_3 || male == VARIETY_HUIJIAO); + boolean isMaleCapableOfGeneration = (male >= 3 && male <= 10); - if (isMaleForShidai) { - // 级杂二代(母) × 以上公羊 → 1世代 + if (isMaleCapableOfGeneration) { + // 级杂二代(母) x 任意合格公羊 -> 一世代 if (female == VARIETY_JIZA_2) { return VARIETY_NAME_MAP.get(VARIETY_SHIDAI_1); } - // 1世代(母) × 以上公羊 → 2世代 + // 一世代(母) x 任意合格公羊 -> 二世代 if (female == VARIETY_SHIDAI_1) { return VARIETY_NAME_MAP.get(VARIETY_SHIDAI_2); } - // 2世代(母) × 以上公羊 → 3世代 + // 二世代(母) x 任意合格公羊 -> 三世代 if (female == VARIETY_SHIDAI_2) { return VARIETY_NAME_MAP.get(VARIETY_SHIDAI_3); } - // 3世代(母) × 以上公羊 → 4世代 + // 三世代(母) x 任意合格公羊 -> 四世代 if (female == VARIETY_SHIDAI_3) { return VARIETY_NAME_MAP.get(VARIETY_SHIDAI_4); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScLambingRecordServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScLambingRecordServiceImpl.java index 3bdef87..5325733 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScLambingRecordServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScLambingRecordServiceImpl.java @@ -40,6 +40,10 @@ public class ScLambingRecordServiceImpl implements IScLambingRecordService { return scLambingRecordMapper.getLatestBreedingByEarNumber(earNumber); } + @Override + public List searchEarNumbers(String query) { + return scLambingRecordMapper.searchEarNumbers(query); + } /** * 新增产羔记录(包含羔羊详情) */ @@ -105,11 +109,11 @@ public class ScLambingRecordServiceImpl implements IScLambingRecordService { // 设置默认值 if (lambDetail.getIsRetained() == null) { - lambDetail.setIsRetained(0); // 默认为0(否) + lambDetail.setIsRetained(false); // 默认为0(否) } // 验证是否留养值的有效性:0-否,1-是 - if (lambDetail.getIsRetained() != 0 && lambDetail.getIsRetained() != 1) { + if (lambDetail.getIsRetained() != false && lambDetail.getIsRetained() != true) { throw new RuntimeException("是否留养值无效,请使用0(否)或1(是)"); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScMiscarriageRecordServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScMiscarriageRecordServiceImpl.java index f789984..a9319c8 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScMiscarriageRecordServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScMiscarriageRecordServiceImpl.java @@ -167,4 +167,9 @@ public class ScMiscarriageRecordServiceImpl implements IScMiscarriageRecordServi // 验证通过 } + + @Override + public List searchEarNumbers(String query) { + return scMiscarriageRecordMapper.searchEarNumbers(query); + } } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScPregnancyRecordServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScPregnancyRecordServiceImpl.java index e04df0a..9f75992 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScPregnancyRecordServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/breed/service/impl/ScPregnancyRecordServiceImpl.java @@ -271,4 +271,8 @@ public class ScPregnancyRecordServiceImpl implements IScPregnancyRecordService System.err.println("更新羊只怀孕状态失败: " + e.getMessage()); } } + @Override + public List searchEarNumbers(String query) { + return scPregnancyRecordMapper.searchEarNumbers(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 9cfd039..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 @@ -82,6 +82,7 @@ public class ScSheepDeathServiceImpl implements IScSheepDeathService Long sheepId = sheepInfo.get("sheepId") != null ? Long.valueOf(sheepInfo.get("sheepId").toString()) : null; newRecord.setSheepId(sheepId); + // 插入死淘记录后,同时更新羊只在群状态为"不在群"(状态ID为2) if (sheepId != null) { scSheepDeathMapper.updateSheepStatus(sheepId, "2"); treatmentService.updateTreatmentStatus(sheepId); @@ -97,12 +98,14 @@ public class ScSheepDeathServiceImpl implements IScSheepDeathService @Override public int updateScSheepDeath(ScSheepDeath scSheepDeath) { + // 如果管理耳号发生变化,重新查询并设置羊只ID if (scSheepDeath.getManageTags() != null && !scSheepDeath.getManageTags().isEmpty()) { Map sheepInfo = selectSheepFileByManageTags(scSheepDeath.getManageTags()); if (sheepInfo != null) { Long sheepId = sheepInfo.get("sheepId") != null ? Long.valueOf(sheepInfo.get("sheepId").toString()) : null; scSheepDeath.setSheepId(sheepId); + // 修改死淘记录时,同时更新羊只在群状态为"不在群"(状态ID为2) if (sheepId != null) { scSheepDeathMapper.updateSheepStatus(sheepId, "2"); } @@ -115,22 +118,28 @@ public class ScSheepDeathServiceImpl implements IScSheepDeathService @Override public int deleteScSheepDeathByIds(Long[] ids) { + // 删除死淘记录前,将对应羊只在群状态改回"在群" for (Long id : ids) { ScSheepDeath scSheepDeath = scSheepDeathMapper.selectScSheepDeathById(id); if (scSheepDeath != null && scSheepDeath.getSheepId() != null) { + // 恢复羊只在群状态为"在群"(状态ID为1) scSheepDeathMapper.updateSheepStatus(scSheepDeath.getSheepId(), "1"); } } + return scSheepDeathMapper.deleteScSheepDeathByIds(ids); } @Override public int deleteScSheepDeathById(Long id) { + // 删除死淘记录前,将对应羊只在群状态改回"在群" ScSheepDeath scSheepDeath = scSheepDeathMapper.selectScSheepDeathById(id); if (scSheepDeath != null && scSheepDeath.getSheepId() != null) { + // 恢复羊只在群状态为"在群"(状态ID为1) scSheepDeathMapper.updateSheepStatus(scSheepDeath.getSheepId(), "1"); } + return scSheepDeathMapper.deleteScSheepDeathById(id); } 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 cb3e6ee..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 @@ -7,6 +7,8 @@ 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; import org.springframework.transaction.annotation.Transactional; /** diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/controller/ScTransitionInfoController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/controller/ScTransitionInfoController.java index 49e4578..5863be8 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/controller/ScTransitionInfoController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/controller/ScTransitionInfoController.java @@ -103,9 +103,6 @@ public class ScTransitionInfoController extends BaseController { @PutMapping("/approve") public AjaxResult approveScTransitionInfo(@RequestBody ScTransitionInfo scTransitionInfo) { - if ("转场转入".equals(scTransitionInfo.getEventType()) && scTransitionInfo.getSheepfoldId() == null) { - return AjaxResult.error("转场转入时,接收羊舍ID不能为空"); - } int rows = scTransitionInfoService.approveScTransitionInfo(scTransitionInfo); return toAjax(rows); } @@ -114,4 +111,6 @@ public class ScTransitionInfoController extends BaseController { public AjaxResult searchEarNumbers(@RequestParam("query") String query){ return success(scTransitionInfoService.searchEarNumbers(query.trim())); } + + } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeComment.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeComment.java index 8979aef..3260a90 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeComment.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeComment.java @@ -31,20 +31,23 @@ public class ScChangeComment extends BaseEntity { * 羊只id */ private String sheepId; + @Excel(name = "管理耳号") private String manageTags; - /** 羊舍 */ - private Long sheepfoldId; - @Excel(name = "羊舍") - private String sheepfoldName; - /** * 事件类型 */ @Excel(name = "事件类型") private String eventType; + /** + * 事件日期 + */ + @Excel(name = "事件日期", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date eventDate; + /** * 新备注 */ @@ -58,17 +61,25 @@ public class ScChangeComment extends BaseEntity { private String oldComment; /** - * 事件日期 + * 羊舍 */ - @Excel(name = "事件日期", width = 30, dateFormat = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date eventDate; + private Long sheepfoldId; + @Excel(name = "羊舍") + private String sheepfoldName; + /** * 技术员 */ @Excel(name = "技术员") private String technician; - /** 前端多耳号条件,非数据库字段 */ + /** + * 前端多耳号条件,非数据库字段 + */ private List manageTagsList; + + /** + * 是否在群查询条件(0-在群,1-离群),非数据库字段 + */ + private Integer isDelete; } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeEar.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeEar.java index bd5b584..911a156 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeEar.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeEar.java @@ -36,11 +36,10 @@ public class ScChangeEar extends BaseEntity { private String manageTags; /** - * 羊舍 + * 品种 */ - private Long sheepfoldId; - @Excel(name = "羊舍") - private String sheepfoldName; + @Excel(name = "品种") + private String varietyName; /** * 事件类型(改管理耳号/改电子耳号) @@ -48,6 +47,13 @@ public class ScChangeEar extends BaseEntity { @Excel(name = "事件类型") private String eventType; + /** + * 事件日期 + */ + @Excel(name = "事件日期", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date eventDate; + /** * 选择更改耳号类型(0电子耳号1管理耳号) */ @@ -67,17 +73,11 @@ public class ScChangeEar extends BaseEntity { private String oldTag; /** - * 备注 + * 羊舍 */ - @Excel(name = "备注") - private String comment; - - /** - * 事件日期 - */ - @Excel(name = "事件日期", width = 30, dateFormat = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date eventDate; + private Long sheepfoldId; + @Excel(name = "羊舍") + private String sheepfoldName; /** * 技术员 @@ -85,7 +85,20 @@ public class ScChangeEar extends BaseEntity { @Excel(name = "技术员") private String technician; + /** + * 备注 + */ + @Excel(name = "备注") + private String comment; - /** 前端多耳号查询条件,非表字段 */ + /** + * 前端多耳号查询条件,非表字段 + */ private List manageTagsList; + + + /** + * 在群状态 0-全部 1-在群 2-不在群(列表查询用) + */ + private Integer inGroup; } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeVariety.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeVariety.java index 319de6f..d984268 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeVariety.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScChangeVariety.java @@ -31,9 +31,35 @@ public class ScChangeVariety extends BaseEntity { * 羊只id */ private Integer sheepId; + @Excel(name = "耳号") private String manageTags; + /** + * 事件类型 + */ + @Excel(name = "事件类型") + private String eventType; + + /** + * 事件日期 + */ + @Excel(name = "事件日期", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date eventDate; + + /** + * 新品种 + */ + @Excel(name = "新品种") + private String varietyNew; + + /** + * 旧品种 + */ + @Excel(name = "旧品种") + private String varietyOld; + /** * 羊舍 */ @@ -42,22 +68,10 @@ public class ScChangeVariety extends BaseEntity { private String sheepfoldName; /** - * 事件类型 + * 技术员 */ - @Excel(name = "事件类型") - private String eventType; - - /** - * 原品种 - */ - @Excel(name = "原品种") - private String varietyOld; - - /** - * 新品种 - */ - @Excel(name = "新品种") - private String varietyNew; + @Excel(name = "技术员") + private String technician; /** * 备注 @@ -66,18 +80,12 @@ public class ScChangeVariety extends BaseEntity { private String comment; /** - * 技术员 + * 前端多耳号查询条件,非表字段 */ - @Excel(name = "技术员") - private String technician; + private List manageTagsList; /** - * 事件日期 + * 是否在群查询条件(0-在群,1-离群),非数据库字段 */ - @Excel(name = "事件日期",width = 30, dateFormat = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date eventDate; - - /** 前端多耳号查询条件,非表字段 */ - private List manageTagsList; + private Integer isDelete; } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScTransGroup.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScTransGroup.java index 32edd57..40b7d0b 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScTransGroup.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScTransGroup.java @@ -33,42 +33,6 @@ public class ScTransGroup extends BaseEntity { @Excel(name = "耳号") private String manageTags; - /** - * 事件类型(1-围产转群,2-普通转群,3-育肥转群,4-预售转群) - */ - private Integer eventType; - @Excel(name = "事件类型") - private String eventTypeText; - - /** - * 转入羊舍 - */ - private String foldTo; - - /** - * 转出羊舍 - */ - private String foldFrom; - - /** - * 羊只类型 - */ - private Integer sheepTypeId; - @Excel(name = "羊只类型") - private String sheepTypeName; - - /** - * 转出羊舍名称 - */ - @Excel(name = "转出羊舍") - private String foldFromName; - - /** - * 转入羊舍名称 - */ - @Excel(name = "转入羊舍") - private String foldToName; - /** * 品种id */ @@ -80,40 +44,72 @@ public class ScTransGroup extends BaseEntity { @Excel(name = "品种") private String varietyName; + /** + * 事件类型(1-围产转群,2-普通转群,3-育肥转群,4-预售转群) + */ + private String eventType; + @Excel(name = "事件类型") + private String eventTypeText; - private Integer reason; + /** + * 转群日期 + */ + @Excel(name = "转群日期") + private String transDate; + + /** + * 转入羊舍 + */ + private String foldTo; + /** + * 转入羊舍名称 + */ + @Excel(name = "转入羊舍") + private String foldToName; + + /** + * 转出羊舍 + */ + private String foldFrom; + /** + * 转出羊舍名称 + */ + @Excel(name = "转出羊舍") + private String foldFromName; + + private String reason; /** * 转群原因描述 用于导出 */ @Excel(name = "转群原因") private String reasonText; - /** 转群日期 */ - @Excel(name = "转群日期") - private String transDate; /** * 技术员 */ @Excel(name = "技术员") private String technician; - /** - * 状态 - */ - - private Integer status; - /** - * 状态描述 用于导出 - */ - @Excel(name = "状态") - private String statusText; - /** * 备注 */ @Excel(name = "备注") private String comment; - /** 前端多耳号查询条件,非表字段 */ + /** + * 羊只类型 + */ + private Integer sheepTypeId; + + private String sheepTypeName; + + /** + * 前端多耳号查询条件,非表字段 + */ private List manageTagsList; + + /** + * 是否在群查询条件(0-在群,1-离群) + */ + private Integer isDelete; } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScTransitionInfo.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScTransitionInfo.java index 7aceb3e..e47bf49 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScTransitionInfo.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/domain/ScTransitionInfo.java @@ -33,24 +33,6 @@ public class ScTransitionInfo extends BaseEntity { @Excel(name = "耳号") private String manageTags; - /** - * 事件类型 - */ - @Excel(name = "事件类型") - private String eventType; - - - /** - * 转场类型 - */ - private Integer transType; - @Excel(name = "转场类型") - private String transTypeText; - - /** 转场日期 */ - @Excel(name = "转场日期") - private LocalDate transitionDate; - /** * 品种id */ @@ -62,6 +44,23 @@ public class ScTransitionInfo extends BaseEntity { @Excel(name = "品种") private String varietyName; + /** + * 事件类型 + */ + @Excel(name = "事件类型") + private String eventType; + + /** 转场日期 */ + @Excel(name = "转场日期") + private LocalDate transitionDate; + + /** + * 转场类型 + */ + private Integer transType; + @Excel(name = "转场类型") + private String transTypeText; + /** * 转入牧场 */ @@ -69,21 +68,34 @@ public class ScTransitionInfo extends BaseEntity { private String transTo; /** - * 当前牧场 + * 转出牧场 */ - @Excel(name = "当前牧场") + @Excel(name = "转出牧场") private String transFrom; + /** + * 羊舍 + */ + @Excel(name = "羊舍") + private String sheepfoldName; + /** * 接收羊舍 */ private Long sheepfoldId; + /** * 技术员 */ @Excel(name = "技术员") private String technician; + /** + * 备注 + */ + @Excel(name = "备注") + private String comment; + /** * 状态 */ @@ -91,12 +103,21 @@ public class ScTransitionInfo extends BaseEntity { @Excel(name = "状态") private String statusText; - /** - * 备注 - */ - @Excel(name = "备注") - private String comment; - /** 前端多耳号查询条件,非表字段 */ private List manageTagsList; + + private Integer isDelete; + + /** 羊只类型ID(查询条件,非数据库字段) */ + private Long sheepTypeId; + + /** + * 当前场区ID(查询条件,关联bas_sheep.ranch_id),非数据库字段 + */ + private Long currentRanchId; + + /** + * 当前场区名称(展示用),非数据库字段 + */ + private String currentRanchName; } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/IScTransGroupService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/IScTransGroupService.java index 305438b..3ec3a74 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/IScTransGroupService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/IScTransGroupService.java @@ -59,11 +59,5 @@ public interface IScTransGroupService { */ public int deleteScTransGroupById(Integer id); - - /** - * 审批转群记录 - */ - int approveScTransGroup(ScTransGroup scTransGroup); - List searchEarNumbers(String query); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/impl/ScTransGroupServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/impl/ScTransGroupServiceImpl.java index 59f8d59..f78e247 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/impl/ScTransGroupServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/impl/ScTransGroupServiceImpl.java @@ -42,7 +42,6 @@ public class ScTransGroupServiceImpl implements IScTransGroupService { public ScTransGroup selectScTransGroupById(Integer id) { ScTransGroup group = scTransGroupMapper.selectScTransGroupById(id); group.setReasonText(convertReason(group.getReason())); - group.setStatusText(convertStatus(group.getStatus())); group.setEventTypeText(convertEventType(group.getEventType())); return group; } @@ -60,7 +59,6 @@ public class ScTransGroupServiceImpl implements IScTransGroupService { scTransGroup.getManageTagsList()); list.forEach(group -> { group.setReasonText(convertReason(group.getReason())); - group.setStatusText(convertStatus(group.getStatus())); group.setEventTypeText(convertEventType(group.getEventType())); }); return list; @@ -76,7 +74,6 @@ public class ScTransGroupServiceImpl implements IScTransGroupService { @Override @Transactional(rollbackFor = Exception.class) public int insertScTransGroup(ScTransGroup scTransGroup) { - scTransGroup.setStatus(0); scTransGroup.setCreateTime(DateUtils.getNowDate()); scTransGroup.setCreateBy(SecurityUtils.getUsername()); int rows = scTransGroupMapper.insertScTransGroup(scTransGroup); @@ -123,22 +120,6 @@ public class ScTransGroupServiceImpl implements IScTransGroupService { return scTransGroupMapper.deleteScTransGroupById(id); } - - /** - * 审批转群记录 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int approveScTransGroup(ScTransGroup scTransGroup) { - int rows = scTransGroupMapper.updateScTransGroup(scTransGroup); - - if (rows > 0 && scTransGroup.getStatus() == 1) { - updateSheepFold(scTransGroup); - } - - return rows; - } - /** * 更新羊只所在羊舍 */ @@ -177,38 +158,28 @@ public class ScTransGroupServiceImpl implements IScTransGroupService { /** * 转换转群原因 */ - private String convertReason(Integer reasonCode) { - Map reasonMap = new HashMap<>(); - reasonMap.put(0, "新产羊过抗转群"); - reasonMap.put(1, "治愈转群"); - reasonMap.put(2, "病羊过抗转群"); - return reasonMap.getOrDefault(reasonCode, "未知原因"); - } - - /** - * 转换状态 - */ - private String convertStatus(Integer statusCode) { - Map statusMap = new HashMap<>(); - statusMap.put(0, "待批准"); - statusMap.put(1, "通过"); - statusMap.put(2, "驳回"); - return statusMap.getOrDefault(statusCode, "未知状态"); + private String convertReason(String reasonCode) { + if (reasonCode == null) return "未知原因"; + Map map = new HashMap<>(); + map.put("0","新产羊过抗转群"); + map.put("1","治愈转群"); + map.put("2","病羊过抗转群"); + return map.getOrDefault(reasonCode, reasonCode); } /** * 转换事件类型(1-围产转群,2-普通转群,3-育肥转群,4-预售转群) */ - private String convertEventType(Integer eventType) { + private String convertEventType(String eventType) { if (eventType == null) { return "未知"; } - Map eventTypeMap = new HashMap<>(); - eventTypeMap.put(1, "围产转群"); - eventTypeMap.put(2, "普通转群"); - eventTypeMap.put(3, "育肥转群"); - eventTypeMap.put(4, "预售转群"); - return eventTypeMap.getOrDefault(eventType, "未知"); + Map eventTypeMap = new HashMap<>(); + eventTypeMap.put("1", "围产转群"); + eventTypeMap.put("2", "普通转群"); + eventTypeMap.put("3", "育肥转群"); + eventTypeMap.put("4", "预售转群"); + return eventTypeMap.getOrDefault(eventType, eventType); } @Override diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/impl/ScTransitionInfoServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/impl/ScTransitionInfoServiceImpl.java index 1831c5d..ceafa11 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/impl/ScTransitionInfoServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/service/impl/ScTransitionInfoServiceImpl.java @@ -135,6 +135,11 @@ public class ScTransitionInfoServiceImpl implements IScTransitionInfoService if (existing.getStatus() != 0) { throw new RuntimeException("该记录已完成审批,无法重复操作"); } + if (scTransitionInfo.getStatus() == 1) { // 同意 + if ("转场转入".equals(scTransitionInfo.getEventType()) && scTransitionInfo.getSheepfoldId() == null) { + throw new RuntimeException("转场转入时,接收羊舍ID不能为空"); + } + } int rows = scTransitionInfoMapper.updateScTransitionInfo(scTransitionInfo); if (rows > 0 && scTransitionInfo.getStatus() == 1) { updateSheepRanch(scTransitionInfo); @@ -143,52 +148,47 @@ public class ScTransitionInfoServiceImpl implements IScTransitionInfoService } /** - * 更新羊只的所在牧场(基于现有牧场列表接口) + * 更新羊只的所在牧场及羊舍 */ private void updateSheepRanch(ScTransitionInfo transitionInfo) { + /* 1. 目标牧场 */ String transTo = transitionInfo.getTransTo(); if (StringUtils.isBlank(transTo)) { throw new RuntimeException("转入牧场不能为空"); } - DaRanch query = new DaRanch(); query.setRanch(transTo); List ranchList = daRanchService.selectDaRanchList(query); - Optional matchedRanch = ranchList.stream() .filter(ranch -> transTo.equals(ranch.getRanch())) .findFirst(); - if (!matchedRanch.isPresent()) { throw new RuntimeException("转入牧场 [" + transTo + "] 不存在"); } Long targetRanchId = matchedRanch.get().getId(); - //获取接收羊舍 + /* 2. 接收羊舍(审批通过时必传) */ Long targetSheepfoldId = transitionInfo.getSheepfoldId(); - if ("转场转入".equals(transitionInfo.getEventType()) && targetSheepfoldId == null) { - throw new RuntimeException("转场转入时,接收羊舍不能为空"); + if (targetSheepfoldId == null) { + throw new RuntimeException("接收羊舍不能为空"); } + /* 3. 逐只迁移 */ String manageTags = transitionInfo.getManageTags(); if (StringUtils.isBlank(manageTags)) { throw new RuntimeException("耳号不能为空"); } List tagList = Arrays.asList(manageTags.split(",")); - for (String tag : tagList) { BasSheep sheep = basSheepService.selectBasSheepByManageTags(tag.trim()); if (sheep == null) { throw new RuntimeException("耳号 [" + tag + "] 不存在"); } - - BasSheep updateSheep = new BasSheep(); - updateSheep.setId(sheep.getId()); - updateSheep.setRanchId(targetRanchId); - if ("转场转入".equals(transitionInfo.getEventType())) { - updateSheep.setSheepfoldId(targetSheepfoldId); - } - basSheepMapper.updateBasSheep(updateSheep); + BasSheep upd = new BasSheep(); + upd.setId(sheep.getId()); + upd.setRanchId(targetRanchId); + upd.setSheepfoldId(targetSheepfoldId); // 真正换舍 + basSheepMapper.updateBasSheep(upd); } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/other/domain/ScCastrate.java b/zhyc-module/src/main/java/com/zhyc/module/produce/other/domain/ScCastrate.java index fcbe256..f2bfc4d 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/other/domain/ScCastrate.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/other/domain/ScCastrate.java @@ -48,10 +48,14 @@ public class ScCastrate extends BaseEntity { @Excel(name = "羊舍名称") private String sheepfoldName; - /** 品种id */ + /** + * 品种id + */ private Long varietyId; - /** 品种名称(联表查询返回,非数据库字段) */ + /** + * 品种名称(联表查询返回,非数据库字段) + */ @Excel(name = "品种") private String varietyName; @@ -74,6 +78,13 @@ public class ScCastrate extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd") private String eventDate; - /** 前端多耳号查询条件,非表字段 */ + /** + * 前端多耳号查询条件,非表字段 + */ private List manageTagsList; + + /** + * 是否在群查询条件(0-在群,1-离群),非数据库字段 + */ + private Integer isDelete; } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/other/domain/ScFixHoof.java b/zhyc-module/src/main/java/com/zhyc/module/produce/other/domain/ScFixHoof.java index 5d2fb0d..70867f0 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/other/domain/ScFixHoof.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/other/domain/ScFixHoof.java @@ -18,14 +18,17 @@ import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor -public class ScFixHoof extends BaseEntity -{ +public class ScFixHoof extends BaseEntity { private static final long serialVersionUID = 1L; - /** $column.columnComment */ + /** + * $column.columnComment + */ private Integer id; - /** 羊只id */ + /** + * 羊只id + */ private Integer sheepId; @Excel(name = "管理耳号") private String manageTags; @@ -36,25 +39,37 @@ public class ScFixHoof extends BaseEntity @Excel(name = "事件类型") private String eventType; - /** 羊舍id */ + /** + * 羊舍id + */ private Integer sheepfold; - /** 羊舍名称 */ + /** + * 羊舍名称 + */ @Excel(name = "羊舍名称") private String sheepfoldName; - /** 品种id */ + /** + * 品种id + */ private Long varietyId; - /** 品种名称(联表查询返回,非数据库字段) */ + /** + * 品种名称(联表查询返回,非数据库字段) + */ @Excel(name = "品种") private String varietyName; - /** 备注 */ + /** + * 备注 + */ @Excel(name = "备注") private String comment; - /** 技术员 */ + /** + * 技术员 + */ @Excel(name = "技术员") private String technician; @@ -65,6 +80,13 @@ public class ScFixHoof extends BaseEntity @JsonFormat(pattern = "yyyy-MM-dd") private String eventDate; - /** 前端多耳号查询条件,非表字段 */ + /** + * 前端多耳号查询条件,非表字段 + */ private List manageTagsList; + + /** + * 是否在群查询条件(0-在群,1-离群),非数据库字段 + */ + private Integer isDelete; } diff --git a/zhyc-module/src/main/resources/mapper/app/AppErrorLogMapper.xml b/zhyc-module/src/main/resources/mapper/app/AppErrorLogMapper.xml new file mode 100644 index 0000000..53f3b5a --- /dev/null +++ b/zhyc-module/src/main/resources/mapper/app/AppErrorLogMapper.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, device_id, user_id, app_version, app_code, platform, os_version, error_type, error_code, error_message, stack_trace, page_url, api_url, api_params, network_type, screen_width, screen_height, custom_data, create_time from app_error_log + + + + + + + + insert into app_error_log + + device_id, + user_id, + app_version, + app_code, + platform, + os_version, + error_type, + error_code, + error_message, + stack_trace, + page_url, + api_url, + api_params, + network_type, + screen_width, + screen_height, + custom_data, + create_time, + + + #{deviceId}, + #{userId}, + #{appVersion}, + #{appCode}, + #{platform}, + #{osVersion}, + #{errorType}, + #{errorCode}, + #{errorMessage}, + #{stackTrace}, + #{pageUrl}, + #{apiUrl}, + #{apiParams}, + #{networkType}, + #{screenWidth}, + #{screenHeight}, + #{customData}, + #{createTime}, + + + + + update app_error_log + + device_id = #{deviceId}, + user_id = #{userId}, + app_version = #{appVersion}, + app_code = #{appCode}, + platform = #{platform}, + os_version = #{osVersion}, + error_type = #{errorType}, + error_code = #{errorCode}, + error_message = #{errorMessage}, + stack_trace = #{stackTrace}, + page_url = #{pageUrl}, + api_url = #{apiUrl}, + api_params = #{apiParams}, + network_type = #{networkType}, + screen_width = #{screenWidth}, + screen_height = #{screenHeight}, + custom_data = #{customData}, + create_time = #{createTime}, + + where id = #{id} + + + + delete from app_error_log where id = #{id} + + + + delete from app_error_log where id in + + #{id} + + + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/app/AppSettingsMapper.xml b/zhyc-module/src/main/resources/mapper/app/AppSettingsMapper.xml new file mode 100644 index 0000000..e754912 --- /dev/null +++ b/zhyc-module/src/main/resources/mapper/app/AppSettingsMapper.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + select id, user_id, setting_key, setting_value, setting_type, setting_group, setting_desc, platform, version_range, status, logical, custom_data, create_time, update_time from app_settings + + + + + + + + insert into app_settings + + user_id, + setting_key, + setting_value, + setting_type, + setting_group, + setting_desc, + platform, + version_range, + status, + logical, + custom_data, + create_time, + update_time, + + + #{userId}, + #{settingKey}, + #{settingValue}, + #{settingType}, + #{settingGroup}, + #{settingDesc}, + #{platform}, + #{versionRange}, + #{status}, + #{logical}, + #{customData}, + #{createTime}, + #{updateTime}, + + + + + update app_settings + + user_id = #{userId}, + setting_key = #{settingKey}, + setting_value = #{settingValue}, + setting_type = #{settingType}, + setting_group = #{settingGroup}, + setting_desc = #{settingDesc}, + platform = #{platform}, + version_range = #{versionRange}, + status = #{status}, + logical = #{logical}, + custom_data = #{customData}, + create_time = #{createTime}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from app_settings where id = #{id} + + + + delete from app_settings where id in + + #{id} + + + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml b/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml index 001a2b7..1c81ab7 100644 --- a/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml +++ b/zhyc-module/src/main/resources/mapper/base/BasSheepMapper.xml @@ -148,6 +148,18 @@ WHERE s.id = #{id} + + - and ranch = #{ranch} + and sysRanch = #{sysRanch} @@ -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/base/DaSheepfoldMapper.xml b/zhyc-module/src/main/resources/mapper/base/DaSheepfoldMapper.xml index 4bf15cc..902e4af 100644 --- a/zhyc-module/src/main/resources/mapper/base/DaSheepfoldMapper.xml +++ b/zhyc-module/src/main/resources/mapper/base/DaSheepfoldMapper.xml @@ -13,31 +13,88 @@ + + - - select id, - ranch_id, - sheepfold_name, - sheepfold_type_id, - sheepfold_no, - row_no, - columns, - comment - from da_sheepfold + + + + + + + + + + + + SELECT + ds.id, + ds.ranch_id, + ds.sheepfold_name, + ds.sheepfold_type_id, + ds.sheepfold_no, + ds.row_no, + ds.columns, + ds.comment + FROM da_sheepfold ds - + SELECT + ds.ranch_id, + ds.sheepfold_type_id, + ds.sheepfold_no, + -- 提取羊舍名称(截取栏位名称的羊舍部分,保证唯一) + CONCAT(ds.sheepfold_no, '号', (SELECT dict_label FROM sys_dict_data WHERE dict_value = ds.sheepfold_type_id AND dict_type = 'bas_sheepfold_type')) as sheepfoldName, + MAX(ds.comment) as comment, + -- 汇总该羊舍下所有栏位的羊数总和 + SUM(IFNULL(sheep_group.sheep_count, 0)) as totalSheepCount + FROM da_sheepfold ds + -- 左关联羊只表,统计每个栏位的羊数 + LEFT JOIN ( + SELECT sheepfold_id, COUNT(id) as sheep_count + FROM bas_sheep -- 羊只表 + GROUP BY sheepfold_id -- 按栏位ID分组统计羊数 + ) sheep_group ON ds.id = sheep_group.sheepfold_id -- 关联字段修正为sheepfold_id - and ranch_id = #{ranchId} - and sheepfold_type_id = #{sheepfoldTypeId} + and ds.ranch_id = #{ranchId} + and ds.sheepfold_type_id = #{sheepfoldTypeId} + -- 按羊舍维度分组(牧场+羊舍类型+羊舍编号 唯一标识一个羊舍) + GROUP BY ds.ranch_id, ds.sheepfold_type_id, ds.sheepfold_no + ORDER BY ds.sheepfold_no + - order by - SUBSTRING_INDEX(row_no, '-', 1), - CAST(columns AS UNSIGNED) + + + + + + DELETE FROM da_sheepfold + WHERE ranch_id = #{ranchId} + AND sheepfold_no = #{sheepfoldNo} + AND sheepfold_type_id = #{sheepfoldTypeId} + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml index f15b440..f555fb5 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/DewormMapper.xml @@ -43,11 +43,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + + + AND ( + bs.manage_tags IN + + #{earNumber} + + + ) + and datetime between #{params.beginDatetime} and #{params.endDatetime} and technical = #{technical} + ${params.dataScope} @@ -68,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 11ec16b..242edfa 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/DiagnosisMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/DiagnosisMapper.xml @@ -52,12 +52,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + + + AND ( + bs.manage_tags IN + + #{earNumber} + + + ) + + and datetime between #{params.beginDatetime} and #{params.endDatetime} and disease_pid = #{diseasePid} and disease_id = #{diseaseId} and result = #{result} and treat_day = #{treatDay} and sd.sheepfold_id = #{sheepfoldId} + ${params.dataScope} ORDER BY datetime DESC @@ -90,6 +102,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sheepfold_id, create_by, create_time, + user_id, + dept_id, #{treatId}, @@ -107,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 c769afb..d2faf3d 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/HealthMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/HealthMapper.xml @@ -50,9 +50,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + + + AND ( + bs.manage_tags IN + + #{earNumber} + + ) + and datetime between #{params.beginDatetime} and #{params.endDatetime} and technical = #{technical} + ${params.dataScope} ORDER BY datetime DESC @@ -72,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 4a27ef6..c06c8c6 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/ImmunityMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/ImmunityMapper.xml @@ -48,9 +48,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + + + AND ( + bs.manage_tags IN + + #{earNumber} + + ) + and datetime between #{params.beginDatetime} and #{params.endDatetime} and technical = #{technical} + ${params.dataScope} ORDER BY datetime DESC @@ -70,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 6d18f13..d16f22d 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/QuarantineReportMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/QuarantineReportMapper.xml @@ -54,6 +54,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + + + AND ( + bs.manage_tags IN + + #{earNumber} + + + ) + and quar_item = #{quarItem} and sample_type = #{sampleType} and sampler like concat('%',#{sampler},'%') @@ -61,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 @@ -102,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 @@ -123,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 4089456..72d37e7 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml @@ -73,6 +73,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND bs.manage_tags LIKE CONCAT('%', #{sheepNo}, '%') + + AND ( + + bs.manage_tags LIKE CONCAT('%', #{item}, '%') + + ) + + + + AND ( + bs.manage_tags IN + + #{earNumber} + + + ) + + @@ -93,6 +111,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND sm.name LIKE CONCAT('%', #{name}, '%') ) + ${params.dataScope} ORDER BY smu.datetime DESC @@ -144,6 +163,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time, create_by, create_time, + user_id, + dept_id, #{name}, @@ -155,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 b02ab4a..9164a74 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/TreatmentMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/TreatmentMapper.xml @@ -62,11 +62,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + + + AND ( + bs.manage_tags IN + + #{earNumber} + + + ) + + and datetime between #{params.beginDatetime} and #{params.endDatetime} and disease_id = #{diseaseId} and status = #{status} and veterinary = #{veterinary} + ${params.dataScope} ORDER BY datetime DESC @@ -110,6 +122,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time, create_by, create_time, + #{user_id}, + #{dept_id}, #{diagId}, @@ -133,6 +147,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateTime}, #{createBy}, #{createTime}, + #{userId}, + #{deptId}, @@ -141,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 diff --git a/zhyc-module/src/main/resources/mapper/feed/SgFeedListMapper.xml b/zhyc-module/src/main/resources/mapper/feed/SgFeedListMapper.xml index ae43230..40c1db9 100644 --- a/zhyc-module/src/main/resources/mapper/feed/SgFeedListMapper.xml +++ b/zhyc-module/src/main/resources/mapper/feed/SgFeedListMapper.xml @@ -5,24 +5,28 @@ - - - - - + + + + + - select id, formula_id, formula_batch_id, zookeeper, deploy_date from sg_feed_list + select id, formula_id, formula_batch_id, zookeeper, deploy_date + from sg_feed_list sg_feed_list_alias @@ -39,12 +43,16 @@ formula_batch_id, zookeeper, deploy_date, + user_id, + dept_id, #{formulaId}, #{formulaBatchId}, #{zookeeper}, #{deployDate}, + #{userId}, + #{deptId}, @@ -60,7 +68,9 @@ - delete from sg_feed_list where id = #{id} + delete + from sg_feed_list + where id = #{id} @@ -71,6 +81,7 @@ - DELETE FROM sg_feed_list; + DELETE + FROM sg_feed_list; \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/feed/SgFeedPlanMapper.xml b/zhyc-module/src/main/resources/mapper/feed/SgFeedPlanMapper.xml index 8d7af3f..f02226f 100644 --- a/zhyc-module/src/main/resources/mapper/feed/SgFeedPlanMapper.xml +++ b/zhyc-module/src/main/resources/mapper/feed/SgFeedPlanMapper.xml @@ -30,16 +30,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select create_date, formula_id, batch_id, sheep_house_id, sheep_count, plan_daily_size, ratio_morning, ratio_noon, ratio_afternoon, plan_morning_size, plan_morning_total, actual_morning_size, plan_noon_size, plan_noon_total, actual_noon_size, plan_afternoon_size, plan_afternoon_total, actual_afternoon_size, plan_feed_total, zookeeper, plan_date, remark from sg_feed_plan + select create_date, formula_id, batch_id, sheep_house_id, sheep_count, plan_daily_size, ratio_morning, ratio_noon, ratio_afternoon, plan_morning_size, plan_morning_total, actual_morning_size, plan_noon_size, plan_noon_total, actual_noon_size, plan_afternoon_size, plan_afternoon_total, actual_afternoon_size, plan_feed_total, zookeeper, plan_date, remark from sg_feed_plan sg_feed_plan_alias @@ -74,7 +75,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" zookeeper, plan_date, remark, - + user_id, + dept_id, + #{createDate}, #{formulaId}, @@ -98,7 +101,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{zookeeper}, #{planDate}, #{remark}, - + #{userId}, + #{deptId}, + diff --git a/zhyc-module/src/main/resources/mapper/feed/SgFeedStatisticMapper.xml b/zhyc-module/src/main/resources/mapper/feed/SgFeedStatisticMapper.xml index 4cd4a36..88839c9 100644 --- a/zhyc-module/src/main/resources/mapper/feed/SgFeedStatisticMapper.xml +++ b/zhyc-module/src/main/resources/mapper/feed/SgFeedStatisticMapper.xml @@ -1,42 +1,57 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - + + + + + + + - - + + - - - + + + - select id, formula_id, formula_batch_id, sheep_fold_count, silage_loss_rate, feed_total_size, feed_daily_size, material_list, sheep_fold_list,feed_date from sg_feed_statistic + select id, + formula_id, + formula_batch_id, + sheep_fold_count, + silage_loss_rate, + feed_total_size, + feed_daily_size, + material_list, + sheep_fold_list, + feed_date + from sg_feed_statistic sg_feed_statistic_alias - + @@ -24,10 +25,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" material_id LIKE CONCAT('%',#{materialId},'%') and formula_id LIKE CONCAT('%',#{formulaId},'%') - and batch_id LIKE CONCAT('%',#{batchId},'%') + and batch_id LIKE CONCAT('%',#{batchId},'%') + ${params.dataScope} - + + - + - - and material_id LIKE CONCAT('%',#{materialId},'%') - and material_name like concat('%', #{materialName}, '%') - and is_granular = #{isGranular} + + and material_id LIKE CONCAT('%',#{materialId},'%') + and material_name like concat('%', #{materialName}, + '%') + + and is_granular = #{isGranular} + ${params.dataScope} - + diff --git a/zhyc-module/src/main/resources/mapper/frozen/DdFsMapper.xml b/zhyc-module/src/main/resources/mapper/frozen/DdFsMapper.xml index 20eda36..cd335a9 100644 --- a/zhyc-module/src/main/resources/mapper/frozen/DdFsMapper.xml +++ b/zhyc-module/src/main/resources/mapper/frozen/DdFsMapper.xml @@ -41,6 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and out_dt between #{params.beginOutDt} and #{params.endOutDt} + and stat = #{stat} diff --git a/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBodyMeasureMapper.xml b/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBodyMeasureMapper.xml index c459c40..7f0c262 100644 --- a/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBodyMeasureMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBodyMeasureMapper.xml @@ -103,6 +103,24 @@ and sm.create_time between #{sc.params.beginCreateTime} and #{sc.params.endCreateTime} + + and bs.gender = #{sc.gender} + + + and sm.technician like concat('%', #{sc.technician}, '%') + + + and bs.is_delete = #{sc.isDelete} + + + and = #{sc.monthAgeStart} ]]> + + + and + + + and bbs.breed = #{sc.breedStatusName} + ORDER BY sm.create_time DESC @@ -196,6 +214,11 @@ WHERE bs.manage_tags LIKE CONCAT('%', #{query}, '%') AND bs.is_delete = 0 ORDER BY bs.manage_tags - LIMIT 50 + + + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBodyScoreMapper.xml b/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBodyScoreMapper.xml index c95d978..6dc816f 100644 --- a/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBodyScoreMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBodyScoreMapper.xml @@ -59,6 +59,9 @@ and sbs.create_time between #{sc.params.beginCreateTime} and #{sc.params.endCreateTime} + + and bs.is_delete = #{sc.isDelete} + ORDER BY sbs.create_time DESC diff --git a/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBreastRatingMapper.xml b/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBreastRatingMapper.xml index a8564f2..b674066 100644 --- a/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBreastRatingMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/bodyManage/ScBreastRatingMapper.xml @@ -57,6 +57,9 @@ and sbr.create_time between #{sc.params.beginCreateTime} and #{sc.params.endCreateTime} + + and bs.is_delete = #{sc.isDelete} + ORDER BY sbr.create_time DESC @@ -134,7 +137,6 @@ FROM bas_sheep bs WHERE bs.manage_tags LIKE CONCAT('%', #{query}, '%') AND bs.is_delete = 0 - ORDER BY bs.manage_tags - LIMIT 50 + ORDER BY bs.manage_tags LIMIT 50 \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedPlanGenerateMapper.xml b/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedPlanGenerateMapper.xml index 44d083f..f8cb78b 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedPlanGenerateMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedPlanGenerateMapper.xml @@ -77,6 +77,9 @@ left join da_sheepfold dsf on bs.sheepfold_id = dsf.id where bs.gender = 1 and bs.is_delete = 0 + + and bs.manage_tags like concat('%', #{manageTags}, '%') + and (bs.status_id = 1 or bs.status_id is null) and ( (bst.name in ('青年羊', '超龄羊') and ( @@ -109,6 +112,9 @@ left join bas_breed_status bbs on bs.breed_status_id = bbs.id where bs.gender = 2 and bs.is_delete = 0 + + and bs.manage_tags like concat('%', #{manageTags}, '%') + and bs.status_id = 1 and ( (bst.name in ('青年羊', '超龄羊') and ( @@ -310,4 +316,13 @@ delete from sc_breed_plan_temp where plan_generate_id = #{planGenerateId} + + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedRecordMapper.xml b/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedRecordMapper.xml index bbe7a85..fad17c6 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedRecordMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScBreedRecordMapper.xml @@ -4,6 +4,43 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -12,9 +49,15 @@ - + - + + + + + + + @@ -26,90 +69,93 @@ - + - + + + + + - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select DISTINCT br.id, @@ -119,9 +165,20 @@ br.technician, br.breed_drugs, br.breed_type, + br.frozen_sperm_no, -- 冻精号 + br.embryoSubType, + br.comment, br.create_by, br.create_time, - -- 母羊信息(从视图获取) + + -- 胚胎移植相关字段 (如果不存表里,需要join sc_embryo_flush,这里假设存表或已有字段,如需Join请参考下方注释) + -- 假设表里已有这些列,或者我们通过Join sheep_file 拿(但sheep_file没有donor信息) + -- 这里按照最佳实践,应在插入时将Donor信息固化在breed_record表中 + br.donor_ewe, + br.donor_ram, + br.embryo_count, + + -- 母羊信息 ewe_view.bs_manage_tags as ewe_manage_tags, ewe_view.variety as ewe_variety, ewe_view.parity as ewe_parity, @@ -133,19 +190,52 @@ ewe_view.dr_ranch as ranch_name, ewe_view.name as sheep_type, ewe_view.mating_total as mating_count, - -- 公羊信息(从视图获取) + + -- 公羊信息 ram_view.bs_manage_tags as ram_manage_tags, ram_view.variety as ram_variety, - -- 配种方式显示 - CASE br.breed_type - WHEN 1 THEN '同期发情' - WHEN 2 THEN '本交' - WHEN 3 THEN '冲胚' - WHEN 4 THEN '自然发情人工授精' - ELSE '未知' - END as mating_type, + (SELECT variety FROM sheep_file WHERE bs_manage_tags = br.donor_ewe LIMIT 1) as donorEweVariety, + (SELECT variety FROM sheep_file WHERE bs_manage_tags = br.donor_ram LIMIT 1) as donorRamVariety, -- 发情后配种时间(小时数) TIMESTAMPDIFF(HOUR, br.create_time, NOW()) as time_since_planning, + + -- ================= 计算字段实现 ================= + + -- 1. 配种时产后天数 (距离上一次产羔: 找最近一次小于配种时间的产羔日期) + DATEDIFF(br.create_time, ( + SELECT lambing_date + FROM sheep_file + WHERE id = br.ewe_id + )) as days_post_lambing, + + -- 2. 配种时泌乳天数 (距离上一次孕检且怀孕) + DATEDIFF(br.create_time, ( + SELECT MAX(pr_sub.datetime) + FROM sc_pregnancy_record pr_sub + WHERE pr_sub.sheep_id = br.ewe_id + AND pr_sub.result = '怀孕' + AND pr_sub.is_delete = 0 + AND pr_sub.datetime < br.create_time + )) as days_lactation, + + -- 3. 配种时配后天数 (距离上一次配种) + DATEDIFF(br.create_time, ( + SELECT MAX(br_sub.create_time) + FROM sc_breed_record br_sub + WHERE br_sub.ewe_id = br.ewe_id + AND br_sub.create_time < br.create_time + )) as days_post_mating, + + -- 4. 上次配种日期 + ( + SELECT MAX(br_sub.create_time) + FROM sc_breed_record br_sub + WHERE br_sub.ewe_id = br.ewe_id + AND br_sub.create_time < br.create_time + ) as last_mating_date, + + -- =============================================== + -- 孕检相关信息 pr.datetime as pregnancy_check_date, pr.result as pregnancy_result, @@ -164,10 +254,10 @@ WHEN pr.id IS NOT NULL THEN 1 ELSE 0 END as is_pregnancy_checked + from sc_breed_record br left join sheep_file ewe_view on br.ewe_id = ewe_view.id left join sheep_file ram_view on br.ram_id = ram_view.id - -- 修复:使用子查询确保只返回一条孕检记录 left join sc_pregnancy_record pr on pr.id = ( select pr2.id from sc_pregnancy_record pr2 @@ -178,6 +268,32 @@ limit 1 ) + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -210,6 +324,8 @@ where br.id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + insert into sc_breed_record @@ -343,8 +482,14 @@ technician, breed_drugs, breed_type, + frozen_sperm_no, create_by, create_time, + comment, + embryo_count, + donor_ewe, + donor_ram, + embryoSubType, #{sheepId}, @@ -353,11 +498,31 @@ #{technician}, #{breedDrugs}, #{breedType}, + #{frozenSemenNo}, #{createBy}, #{createTime}, + #{comment}, + #{embryoCount}, + #{donorEweNo}, + #{donorRamNo}, + #{embryoSubType}, + + + + + + + + + + + + + + update sc_breed_record @@ -367,12 +532,35 @@ technician = #{technician}, breed_drugs = #{breedDrugs}, breed_type = #{breedType}, + frozen_sperm_no = #{frozenSemenNo}, create_by = #{createBy}, create_time = #{createTime}, + comment = #{comment}, + embryo_count = #{embryoCount}, + donor_ewe = #{donorEweNo}, + donor_ram = #{donorRamNo}, + embryoSubType = #{embryoSubType}, where id = #{id} - + delete from sc_breed_record where id = #{id} 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 6183ba6..8b0f903 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScDryMilkMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScDryMilkMapper.xml @@ -14,6 +14,7 @@ + @@ -85,6 +86,8 @@ where d.id = #{id} + + @@ -138,4 +141,14 @@ #{id} + + + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/breed/ScEmbryoFlushMapper.xml b/zhyc-module/src/main/resources/mapper/produce/breed/ScEmbryoFlushMapper.xml index fbad983..8382209 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScEmbryoFlushMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScEmbryoFlushMapper.xml @@ -203,13 +203,9 @@ diff --git a/zhyc-module/src/main/resources/mapper/produce/breed/ScLambingRecordMapper.xml b/zhyc-module/src/main/resources/mapper/produce/breed/ScLambingRecordMapper.xml index 910ca4f..ca99ee7 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScLambingRecordMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScLambingRecordMapper.xml @@ -105,7 +105,16 @@ + + \ No newline at end of file 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 161b001..b4bca00 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScPregnancyRecordMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScPregnancyRecordMapper.xml @@ -29,80 +29,146 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select - pr.id, - pr.sheep_id, - pr.datetime, - pr.result, - pr.fetus_count, - pr.technician, - pr.way, - pr.remark, - pr.create_by, - pr.create_time, - sf.bs_manage_tags as manage_tags, - sf.variety, - sf.month_age, - sf.parity, - sf.mating_counts, - sf.sheepfold_name, - sf.breed, - sf.expected_date, - sf.lambing_date as last_event_date, - sf.dr_ranch as ranch, - -- 关联配种信息 + pr.id, pr.sheep_id, pr.datetime, pr.result, pr.fetus_count, pr.technician, pr.way, pr.remark, pr.create_by, pr.create_time,pr.reason, + sf.bs_manage_tags as manage_tags, sf.variety, sf.month_age, sf.parity, sf.mating_counts, sf.sheepfold_name, sf.breed, sf.expected_date, sf.dr_ranch as sysRanch, + (SELECT MAX(datetime) FROM sc_pregnancy_record WHERE sheep_id = pr.sheep_id AND datetime < pr.datetime AND is_delete = 0) as last_event_date, + br.create_time as mating_date, + br.embryo_count, br.donor_ewe, br.donor_ram, + mating_type.dict_label as mating_type_name, ram_sf.bs_manage_tags as father_manage_tags, ram_sf.variety as father_variety, - mating_type.dict_label as mating_type_name, - COALESCE(br.create_time, sf.mating_date) as mating_date, - -- 计算配后天数:孕检日期 - 配种日期 - CASE - WHEN COALESCE(br.create_time, sf.mating_date) IS NOT NULL - THEN DATEDIFF(pr.datetime, COALESCE(br.create_time, sf.mating_date)) - ELSE NULL - END as days_after_mating + donor_e_sf.variety as donor_ewe_variety, + donor_r_sf.variety as donor_ram_variety, + DATEDIFF(pr.datetime, br.create_time) as days_after_mating from sc_pregnancy_record pr - INNER JOIN sheep_file sf on pr.sheep_id = sf.id - -- 关联配种记录表,获取最新的配种记录 - left join ( - select br1.* - from sc_breed_record br1 - inner join ( - select ewe_id, max(create_time) as max_time - from sc_breed_record - group by ewe_id - ) br2 on br1.ewe_id = br2.ewe_id and br1.create_time = br2.max_time - ) br on sf.id = br.ewe_id - -- 关联公羊信息 - left join sheep_file ram_sf on br.ram_id = ram_sf.id - -- 关联配种类型字典 - left join sys_dict_data mating_type on sf.mating_type_id = mating_type.dict_value + LEFT JOIN sheep_file sf on pr.sheep_id = sf.id + LEFT JOIN ( + select t1.* from sc_breed_record t1 + inner join (select ewe_id, max(create_time) as mt from sc_breed_record group by ewe_id) t2 + on t1.ewe_id = t2.ewe_id and t1.create_time = t2.mt + ) br on pr.sheep_id = br.ewe_id + LEFT JOIN sheep_file ram_sf on br.ram_id = ram_sf.id + LEFT JOIN sys_dict_data mating_type on CAST(br.breed_type AS CHAR) = mating_type.dict_value and mating_type.dict_type = 'breed_type' and mating_type.status = '0' + LEFT JOIN sheep_file donor_e_sf on br.donor_ewe = donor_e_sf.bs_manage_tags + LEFT JOIN sheep_file donor_r_sf on br.donor_ram = donor_r_sf.bs_manage_tags SELECT sf.bs_manage_tags as manageTags, - -- 从配种记录表获取公羊耳号 - ram_sf.bs_manage_tags as fatherManageTags, - ram_sf.variety as fatherVariety, + br.donor_ewe as donorEwe, + br.donor_ram as donorRam, + donor_e_sf.variety as donorEweVariety, + donor_r_sf.variety as donorRamVariety, + -- 核心修改:如果是胚胎移植(5),显示供体公羊;否则显示普通配种公羊 + CASE + WHEN br.breed_type = 5 THEN br.donor_ram + ELSE ram_sf.bs_manage_tags + END as fatherManageTags, + -- 品种也需要同步切换 + CASE + WHEN br.breed_type = 5 THEN donor_r_sf.variety + ELSE ram_sf.variety + END as fatherVariety, br.create_time as matingDate, mating_type.dict_label as matingTypeName, - br.technician as breedTechnician, - br.create_time as breedCreateTime + br.technician as breedTechnician FROM sheep_file sf LEFT JOIN sc_breed_record br ON sf.id = br.ewe_id LEFT JOIN sheep_file ram_sf ON br.ram_id = ram_sf.id - LEFT JOIN sys_dict_data mating_type ON sf.mating_type_id = mating_type.dict_value + -- 新增关联:通过耳号获取供体公羊的品种信息 + LEFT JOIN sheep_file donor_r_sf ON br.donor_ram = donor_r_sf.bs_manage_tags + LEFT JOIN sheep_file donor_e_sf ON br.donor_ewe = donor_e_sf.bs_manage_tags + LEFT JOIN sys_dict_data mating_type ON CAST(br.breed_type AS CHAR) = mating_type.dict_value AND mating_type.dict_type = 'breed_type' AND mating_type.status = '0' - WHERE sf.bs_manage_tags = #{manageTags} - AND sf.is_delete = 0 - ORDER BY br.create_time DESC - LIMIT 1 + WHERE sf.bs_manage_tags = #{manageTags} AND sf.is_delete = 0 + ORDER BY br.create_time DESC LIMIT 1 @@ -178,6 +255,7 @@ remark, create_by, create_time, + reason, is_delete @@ -190,6 +268,7 @@ #{remark}, #{createBy}, #{createTime}, + #{reason}, 0 @@ -203,6 +282,7 @@ technician = #{technician}, way = #{way}, remark = #{remark}, + reason = #{reason}, where id = #{id} @@ -242,4 +322,14 @@ AND br.breed_type = #{breedType} AND pr.result IN ('有胎', '阳性', '怀孕') + + + \ No newline at end of file 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 f64dd6f..b5ba0c9 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScSheepDeathMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScSheepDeathMapper.xml @@ -137,6 +137,7 @@ where d.id = #{id} + + SELECT DISTINCT sf.bs_manage_tags + FROM sheep_file sf + WHERE sf.bs_manage_tags LIKE CONCAT(#{query}, '%') + AND sf.is_delete = 0 + ORDER BY sf.bs_manage_tags + LIMIT 50 + \ No newline at end of file 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 05222a7..7fb8b2b 100644 --- a/zhyc-module/src/main/resources/mapper/produce/breed/ScWeanRecordMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/breed/ScWeanRecordMapper.xml @@ -42,6 +42,15 @@ + SELECT DISTINCT sf.bs_manage_tags + FROM sheep_file sf + WHERE sf.bs_manage_tags LIKE CONCAT(#{query}, '%') + AND sf.is_delete = 0 + ORDER BY sf.bs_manage_tags + LIMIT 50 + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeCommentMapper.xml b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeCommentMapper.xml index cb80d10..e2695b3 100644 --- a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeCommentMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeCommentMapper.xml @@ -43,8 +43,11 @@ bs.manage_tags like concat('%', #{tag}, '%') - - and bs.sheepfold_id = #{sc.sheepfoldId} + + + + + and scc.technician like concat('%', #{sc.technician}, '%') and scc.new_comment like concat('%', #{sc.newComment}, '%') @@ -60,6 +63,9 @@ and sc.params.endEventDate != null and sc.params.endEventDate != ''"> and scc.event_date between #{sc.params.beginEventDate} and #{sc.params.endEventDate} + + and bs.is_delete = #{sc.isDelete} + ORDER BY scc.create_time DESC diff --git a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeEarMapper.xml b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeEarMapper.xml index c2c2204..39b26ef 100644 --- a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeEarMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeEarMapper.xml @@ -25,6 +25,7 @@ sce.sheep_id, bs.manage_tags as manage_tags, sf.sheepfold_name as sheepfold_name, + bv.variety as varietyName, case when sce.ear_type = 0 then '改电子耳号' when sce.ear_type = 1 then '改管理耳号' @@ -41,6 +42,7 @@ from sc_change_ear sce LEFT JOIN bas_sheep bs ON sce.sheep_id = bs.id LEFT JOIN da_sheepfold sf ON bs.sheepfold_id = sf.id + LEFT JOIN bas_sheep_variety bv on bs.variety_id = bv.id diff --git a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeVarietyMapper.xml b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeVarietyMapper.xml index 323b692..9119ca8 100644 --- a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeVarietyMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScChangeVarietyMapper.xml @@ -46,15 +46,25 @@ and scv.sheep_id = #{sc.sheepId} - and bs.sheepfold_id = #{sc.sheepfoldId} - and scv.variety_old like concat('%', #{sc.varietyOld}, '%') - and scv.variety_new like concat('%', #{sc.varietyNew}, '%') + + and scv.technician like concat('%', + #{sc.technician}, '%') + + and scv.variety_old like concat('%', + #{sc.varietyOld}, '%') + + and scv.variety_new like concat('%', + #{sc.varietyNew}, '%') + and scv.create_time between #{sc.params.beginCreateTime} and #{sc.params.endCreateTime} and scv.event_date between #{sc.params.beginEventDate} and #{sc.params.endEventDate} + + and bs.is_delete = #{sc.isDelete} + ORDER BY scv.create_time DESC @@ -119,7 +129,6 @@ FROM bas_sheep bs WHERE bs.manage_tags LIKE CONCAT('%', #{query}, '%') AND bs.is_delete = 0 - ORDER BY bs.manage_tags - LIMIT 50 + ORDER BY bs.manage_tags LIMIT 50 \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScTransGroupMapper.xml b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScTransGroupMapper.xml index 60b55ec..b74eb91 100644 --- a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScTransGroupMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScTransGroupMapper.xml @@ -15,7 +15,6 @@ - @@ -25,8 +24,8 @@ SELECT tg.id, tg.sheep_id, s.manage_tags AS manageTags, - tg.event_type AS eventType, - tg.trans_date AS transDate, + tg.event_type AS eventType, + tg.trans_date AS transDate, tg.fold_to, tg.fold_from, tg.reason, @@ -34,7 +33,6 @@ bv.variety AS varietyName, st.id AS sheepTypeId, st.name AS sheepTypeName, - tg.status, tg.comment, tg.create_by, tg.create_time, @@ -54,20 +52,28 @@ @@ -90,7 +96,6 @@ variety_id, reason, technician, - status, comment, create_by, create_time, @@ -104,7 +109,6 @@ #{varietyId}, #{reason}, #{technician}, - #{status}, #{comment}, #{createBy}, #{createTime}, @@ -122,7 +126,6 @@ variety_id = #{varietyId}, reason = #{reason}, technician = #{technician}, - status = #{status}, comment = #{comment}, create_by = #{createBy}, create_time = #{createTime}, @@ -149,6 +152,5 @@ WHERE s.manage_tags LIKE CONCAT('%', #{query}, '%') AND s.is_delete = 0 ORDER BY s.manage_tags - LIMIT 50 \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScTransitionInfoMapper.xml b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScTransitionInfoMapper.xml index 7c7ece3..79073ae 100644 --- a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScTransitionInfoMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/ScTransitionInfoMapper.xml @@ -25,8 +25,10 @@ SELECT t.*, bv.variety AS varietyName, bs.manage_tags AS manageTags, + sf.sheepfold_name AS sheepfoldName, t.event_type AS eventType, t.transition_date AS transitionDate, + dr.ranch AS currentRanchName, CASE t.trans_type WHEN 0 THEN '内部调拨' WHEN 1 THEN '内部销售' @@ -42,6 +44,8 @@ FROM sc_transition_info t LEFT JOIN bas_sheep bs ON t.sheep_id = bs.id LEFT JOIN bas_sheep_variety bv ON bs.variety_id = bv.id + LEFT JOIN da_sheepfold sf ON t.sheepfold_id = sf.id + LEFT JOIN da_ranch dr ON bs.ranch_id = dr.id @@ -155,7 +171,6 @@ FROM bas_sheep bs WHERE bs.manage_tags LIKE CONCAT('%', #{query}, '%') AND bs.is_delete = 0 - ORDER BY bs.manage_tags - LIMIT 50 + ORDER BY bs.manage_tags LIMIT 50 \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/other/ScCastrateMapper.xml b/zhyc-module/src/main/resources/mapper/produce/other/ScCastrateMapper.xml index e56cb4b..92dfb96 100644 --- a/zhyc-module/src/main/resources/mapper/produce/other/ScCastrateMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/other/ScCastrateMapper.xml @@ -57,6 +57,9 @@ and sc.event_date between #{sc.params.beginEventDate} and #{sc.params.endEventDate} + + and bs.is_delete = #{sc.isDelete} + ORDER BY sc.create_time DESC diff --git a/zhyc-module/src/main/resources/mapper/produce/other/ScFixHoofMapper.xml b/zhyc-module/src/main/resources/mapper/produce/other/ScFixHoofMapper.xml index 706675b..cb31739 100644 --- a/zhyc-module/src/main/resources/mapper/produce/other/ScFixHoofMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/other/ScFixHoofMapper.xml @@ -21,7 +21,7 @@ select fh.id, bs.manage_tags as manageTags, - '修蹄' as event_type, + '修蹄' as event_type, bs.sheepfold_id as sheepfold, sf.sheepfold_name as sheepfoldName, bs.variety_id as varietyId, @@ -47,13 +47,18 @@ and bs.sheepfold_id = #{sc.sheepfold} and bs.variety_id = #{sc.varietyId} - and fh.technician like concat('%', #{sc.technician}, '%') + and fh.technician like concat('%', + #{sc.technician}, '%') + and fh.create_time between #{sc.params.beginCreateTime} and #{sc.params.endCreateTime} and fh.event_date between #{sc.params.beginEventDate} and #{sc.params.endEventDate} + + and bs.is_delete = #{sc.isDelete} + ORDER BY fh.create_time DESC @@ -118,6 +123,5 @@ WHERE bs.manage_tags LIKE CONCAT('%', #{query}, '%') AND bs.is_delete = 0 ORDER BY bs.manage_tags - LIMIT 50 \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/stock/WzMaterialsManagementMapper.xml b/zhyc-module/src/main/resources/mapper/stock/WzMaterialsManagementMapper.xml index 7caa4fd..8145bc7 100644 --- a/zhyc-module/src/main/resources/mapper/stock/WzMaterialsManagementMapper.xml +++ b/zhyc-module/src/main/resources/mapper/stock/WzMaterialsManagementMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + diff --git a/zhyc-module/src/main/resources/mapper/work/WorkOrderMapper.xml b/zhyc-module/src/main/resources/mapper/work/WorkOrderMapper.xml index 0937b9a..d38b162 100644 --- a/zhyc-module/src/main/resources/mapper/work/WorkOrderMapper.xml +++ b/zhyc-module/src/main/resources/mapper/work/WorkOrderMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + 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,