Merge remote-tracking branch 'main/main'

# Conflicts:
#	zhyc-module/src/main/java/com/zhyc/module/produce/breed/mapper/ScPregnancyRecordMapper.java
#	zhyc-module/src/main/java/com/zhyc/module/produce/other/mapper/ScFixHoofMapper.java
This commit is contained in:
piaobo 2025-07-23 10:24:40 +08:00
commit 68c1ec1524
28 changed files with 1158 additions and 185 deletions

View File

@ -1,5 +1,6 @@
package com.zhyc.module.base.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
@ -18,26 +19,22 @@ import com.zhyc.common.core.page.TableDataInfo;
/**
* 羊只基本信息Controller
*
*
* @author ruoyi
* @date 2025-07-15
*/
@RestController
@RequestMapping("/sheep/sheep")
public class BasSheepController extends BaseController
{
public class BasSheepController extends BaseController {
@Autowired
private IBasSheepService basSheepService;
@Autowired
private BasSheepMapper basSheepMapper;
/**
* 查询羊只基本信息列表
*/
@PreAuthorize("@ss.hasPermi('sheep:sheep:list')")
@GetMapping("/list")
public TableDataInfo list(BasSheep basSheep)
{
public TableDataInfo list(BasSheep basSheep) {
startPage();
List<BasSheep> list = basSheepService.selectBasSheepList(basSheep);
return getDataTable(list);
@ -49,8 +46,7 @@ public class BasSheepController extends BaseController
@PreAuthorize("@ss.hasPermi('sheep:sheep:export')")
@Log(title = "羊只基本信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, BasSheep basSheep)
{
public void export(HttpServletResponse response, BasSheep basSheep) {
List<BasSheep> list = basSheepService.selectBasSheepList(basSheep);
ExcelUtil<BasSheep> util = new ExcelUtil<BasSheep>(BasSheep.class);
util.exportExcel(response, list, "羊只基本信息数据");
@ -61,8 +57,7 @@ public class BasSheepController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('sheep:sheep:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(basSheepService.selectBasSheepById(id));
}
@ -72,8 +67,7 @@ public class BasSheepController extends BaseController
@PreAuthorize("@ss.hasPermi('sheep:sheep:add')")
@Log(title = "羊只基本信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BasSheep basSheep)
{
public AjaxResult add(@RequestBody BasSheep basSheep) {
return toAjax(basSheepService.insertBasSheep(basSheep));
}
@ -83,8 +77,7 @@ public class BasSheepController extends BaseController
@PreAuthorize("@ss.hasPermi('sheep:sheep:edit')")
@Log(title = "羊只基本信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BasSheep basSheep)
{
public AjaxResult edit(@RequestBody BasSheep basSheep) {
return toAjax(basSheepService.updateBasSheep(basSheep));
}
@ -93,19 +86,52 @@ public class BasSheepController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('sheep:sheep:remove')")
@Log(title = "羊只基本信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(basSheepService.deleteBasSheepByIds(ids));
}
/**
* 根据耳号查询
*/
@GetMapping("/byManageTags/{manageTags}")
public AjaxResult byManageTags(@PathVariable String manageTags){
public AjaxResult byManageTags(@PathVariable String manageTags) {
BasSheep sheep = basSheepService.selectBasSheepByManageTags(manageTags.trim());
return success(sheep);
}
/**
* 根据羊只类型ID查询羊只列表
*/
@PreAuthorize("@ss.hasPermi('sheep:sheep:query')")
@GetMapping("/listByTypeId")
public TableDataInfo listByTypeId(Integer typeId) {
if (typeId == null) {
// Java 8 中返回空列表的方式替代 List.of()
return getDataTable(new ArrayList<>());
}
BasSheep query = new BasSheep();
query.setTypeId(typeId.longValue());
startPage();
List<BasSheep> list = basSheepService.selectBasSheepList(query);
return getDataTable(list);
}
/**
* 根据羊舍ID和羊只类型ID组合查询羊只列表
*/
@PreAuthorize("@ss.hasPermi('sheep:sheep:query')")
@GetMapping("/listBySheepfoldAndType")
public TableDataInfo listBySheepfoldAndType(Integer sheepfoldId, Integer typeId) {
if (sheepfoldId == null || typeId == null) {
// Java 8 中返回空列表的方式替代 List.of()
return getDataTable(new ArrayList<>());
}
BasSheep query = new BasSheep();
query.setSheepfoldId(sheepfoldId.longValue());
query.setTypeId(typeId.longValue());
startPage();
List<BasSheep> list = basSheepService.selectBasSheepList(query);
return getDataTable(list);
}
}

View File

@ -0,0 +1,114 @@
package com.zhyc.module.base.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
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.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.module.base.domain.BasSheepType;
import com.zhyc.module.base.service.IBasSheepTypeService;
import com.zhyc.common.utils.poi.ExcelUtil;
import com.zhyc.common.core.page.TableDataInfo;
/**
* 羊只类型Controller
*
* @author ruoyi
* @date 2025-07-22
*/
@RestController
@RequestMapping("/base/base")
public class BasSheepTypeController extends BaseController
{
@Autowired
private IBasSheepTypeService basSheepTypeService;
@Autowired
private IBasSheepService basSheepService;
/**
* 查询羊只类型列表
*/
@PreAuthorize("@ss.hasPermi('base:base:list')")
@GetMapping("/list")
public TableDataInfo list(BasSheepType basSheepType)
{
startPage();
List<BasSheepType> list = basSheepTypeService.selectBasSheepTypeList(basSheepType);
return getDataTable(list);
}
/**
* 导出羊只类型列表
*/
@PreAuthorize("@ss.hasPermi('base:base:export')")
@Log(title = "羊只类型", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, BasSheepType basSheepType)
{
List<BasSheepType> list = basSheepTypeService.selectBasSheepTypeList(basSheepType);
ExcelUtil<BasSheepType> util = new ExcelUtil<BasSheepType>(BasSheepType.class);
util.exportExcel(response, list, "羊只类型数据");
}
/**
* 获取羊只类型详细信息
*/
@PreAuthorize("@ss.hasPermi('base:base:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Integer id)
{
return success(basSheepTypeService.selectBasSheepTypeById(id));
}
/**
* 新增羊只类型
*/
@PreAuthorize("@ss.hasPermi('base:base:add')")
@Log(title = "羊只类型", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BasSheepType basSheepType)
{
return toAjax(basSheepTypeService.insertBasSheepType(basSheepType));
}
/**
* 修改羊只类型
*/
@PreAuthorize("@ss.hasPermi('base:base:edit')")
@Log(title = "羊只类型", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BasSheepType basSheepType)
{
return toAjax(basSheepTypeService.updateBasSheepType(basSheepType));
}
/**
* 删除羊只类型
*/
@PreAuthorize("@ss.hasPermi('base:base:remove')")
@Log(title = "羊只类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Integer[] ids)
{
return toAjax(basSheepTypeService.deleteBasSheepTypeByIds(ids));
}
}

View File

@ -0,0 +1,51 @@
package com.zhyc.module.base.domain;
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;
/**
* 羊只类型对象 bas_sheep_type
*
* @author ruoyi
* @date 2025-07-22
*/
public class BasSheepType extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Integer id;
/** 羊只类型 */
private String name;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("name", getName())
.toString();
}
}

View File

@ -70,4 +70,6 @@ public interface BasSheepMapper
List<BasSheep> selectBasSheepBySheepfold(String id);
}

View File

@ -0,0 +1,61 @@
package com.zhyc.module.base.mapper;
import java.util.List;
import com.zhyc.module.base.domain.BasSheepType;
/**
* 羊只类型Mapper接口
*
* @author ruoyi
* @date 2025-07-22
*/
public interface BasSheepTypeMapper
{
/**
* 查询羊只类型
*
* @param id 羊只类型主键
* @return 羊只类型
*/
public BasSheepType selectBasSheepTypeById(Integer id);
/**
* 查询羊只类型列表
*
* @param basSheepType 羊只类型
* @return 羊只类型集合
*/
public List<BasSheepType> selectBasSheepTypeList(BasSheepType basSheepType);
/**
* 新增羊只类型
*
* @param basSheepType 羊只类型
* @return 结果
*/
public int insertBasSheepType(BasSheepType basSheepType);
/**
* 修改羊只类型
*
* @param basSheepType 羊只类型
* @return 结果
*/
public int updateBasSheepType(BasSheepType basSheepType);
/**
* 删除羊只类型
*
* @param id 羊只类型主键
* @return 结果
*/
public int deleteBasSheepTypeById(Integer id);
/**
* 批量删除羊只类型
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteBasSheepTypeByIds(Integer[] ids);
}

View File

@ -61,4 +61,13 @@ public interface BasSheepVarietyMapper
* @return 结果
*/
public int deleteBasSheepVarietyByIds(Long[] ids);
/**
* 根据品种名称查询品种 ID 用于导入羊只
*
* @param varietyName 品种名称
* @return 品种 ID
*/
Long selectIdByName(String varietyName);
}

View File

@ -61,4 +61,6 @@ public interface IBasSheepService
public int deleteBasSheepById(Long id);
BasSheep selectBasSheepByManageTags(String trim);
}

View File

@ -0,0 +1,65 @@
package com.zhyc.module.base.service;
import java.util.List;
import com.zhyc.module.base.domain.BasSheep;
import com.zhyc.module.base.domain.BasSheepType;
/**
* 羊只类型Service接口
*
* @author ruoyi
* @date 2025-07-22
*/
public interface IBasSheepTypeService
{
/**
* 查询羊只类型
*
* @param id 羊只类型主键
* @return 羊只类型
*/
public BasSheepType selectBasSheepTypeById(Integer id);
/**
* 查询羊只类型列表
*
* @param basSheepType 羊只类型
* @return 羊只类型集合
*/
public List<BasSheepType> selectBasSheepTypeList(BasSheepType basSheepType);
/**
* 新增羊只类型
*
* @param basSheepType 羊只类型
* @return 结果
*/
public int insertBasSheepType(BasSheepType basSheepType);
/**
* 修改羊只类型
*
* @param basSheepType 羊只类型
* @return 结果
*/
public int updateBasSheepType(BasSheepType basSheepType);
/**
* 批量删除羊只类型
*
* @param ids 需要删除的羊只类型主键集合
* @return 结果
*/
public int deleteBasSheepTypeByIds(Integer[] ids);
/**
* 删除羊只类型信息
*
* @param id 羊只类型主键
* @return 结果
*/
public int deleteBasSheepTypeById(Integer id);
}

View File

@ -99,4 +99,7 @@ public class BasSheepServiceImpl implements IBasSheepService
public BasSheep selectBasSheepByManageTags(String manageTags){
return basSheepMapper.selectBasSheepByManageTags(manageTags);
}
}

View File

@ -0,0 +1,89 @@
package com.zhyc.module.base.service.impl;
import java.util.List;
import com.zhyc.module.base.domain.BasSheep;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhyc.module.base.mapper.BasSheepTypeMapper;
import com.zhyc.module.base.domain.BasSheepType;
import com.zhyc.module.base.service.IBasSheepTypeService;
/**
* 羊只类型Service业务层处理
*
* @author ruoyi
* @date 2025-07-22
*/
@Service
public class BasSheepTypeServiceImpl implements IBasSheepTypeService {
@Autowired
private BasSheepTypeMapper basSheepTypeMapper;
/**
* 查询羊只类型
*
* @param id 羊只类型主键
* @return 羊只类型
*/
@Override
public BasSheepType selectBasSheepTypeById(Integer id) {
return basSheepTypeMapper.selectBasSheepTypeById(id);
}
/**
* 查询羊只类型列表
*
* @param basSheepType 羊只类型
* @return 羊只类型
*/
@Override
public List<BasSheepType> selectBasSheepTypeList(BasSheepType basSheepType) {
return basSheepTypeMapper.selectBasSheepTypeList(basSheepType);
}
/**
* 新增羊只类型
*
* @param basSheepType 羊只类型
* @return 结果
*/
@Override
public int insertBasSheepType(BasSheepType basSheepType) {
return basSheepTypeMapper.insertBasSheepType(basSheepType);
}
/**
* 修改羊只类型
*
* @param basSheepType 羊只类型
* @return 结果
*/
@Override
public int updateBasSheepType(BasSheepType basSheepType) {
return basSheepTypeMapper.updateBasSheepType(basSheepType);
}
/**
* 批量删除羊只类型
*
* @param ids 需要删除的羊只类型主键
* @return 结果
*/
@Override
public int deleteBasSheepTypeByIds(Integer[] ids) {
return basSheepTypeMapper.deleteBasSheepTypeByIds(ids);
}
/**
* 删除羊只类型信息
*
* @param id 羊只类型主键
* @return 结果
*/
@Override
public int deleteBasSheepTypeById(Integer id) {
return basSheepTypeMapper.deleteBasSheepTypeById(id);
}
}

View File

@ -1,10 +1,8 @@
package com.zhyc.module.produce.breed.controller;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import com.zhyc.module.produce.breed.domain.ScPregnancyRecord;
import com.zhyc.module.produce.breed.service.IScPregnancyRecordService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@ -14,20 +12,22 @@ import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.zhyc.common.annotation.Log;
import com.zhyc.common.core.controller.BaseController;
import com.zhyc.common.core.domain.AjaxResult;
import com.zhyc.common.enums.BusinessType;
import com.zhyc.module.produce.breed.domain.ScPregnancyRecord;
import com.zhyc.module.produce.breed.service.IScPregnancyRecordService;
import com.zhyc.common.utils.poi.ExcelUtil;
import com.zhyc.common.core.page.TableDataInfo;
/**
* 孕检记录Controller
*
* @author ruoyi
* @date 2025-07-17
*
* @author zhyc
* @date 2025-01-21
*/
@RestController
@RequestMapping("/Pregnancy_Test/Pregnancy_Test")
@ -98,9 +98,19 @@ public class ScPregnancyRecordController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('Pregnancy_Test:Pregnancy_Test:remove')")
@Log(title = "孕检记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(scPregnancyRecordService.deleteScPregnancyRecordByIds(ids));
}
}
/**
* 根据耳号获取羊只信息
*/
@GetMapping("/getSheepByManageTags")
public AjaxResult getSheepByManageTags(@RequestParam("manageTags") String manageTags)
{
Map<String, Object> sheepInfo = scPregnancyRecordService.getSheepByManageTags(manageTags);
return success(sheepInfo);
}
}

View File

@ -1,5 +1,6 @@
package com.zhyc.module.produce.breed.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
@ -9,17 +10,25 @@ import com.zhyc.common.core.domain.BaseEntity;
/**
* 孕检记录对象 sc_pregnancy_record
*
* @author ruoyi
* @date 2025-07-17
*
* @author zhyc
* @date 2025-01-21
*/
public class ScPregnancyRecord extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
/** 主键ID */
private Long id;
/** 羊只ID */
@Excel(name = "羊只ID")
private Long sheepId;
/** 耳号 */
@Excel(name = "耳号")
private String manageTags;
/** 孕检日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "孕检日期", width = 30, dateFormat = "yyyy-MM-dd")
@ -29,89 +38,302 @@ public class ScPregnancyRecord extends BaseEntity
@Excel(name = "孕检结果")
private String result;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long number;
/** 胎儿数量 */
@Excel(name = "胎儿数量")
private Integer fetusCount;
/** 技术员 */
@Excel(name = "技术员")
private String technician;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long way;
/** 孕检方式 */
@Excel(name = "孕检方式")
private String way;
public void setId(Long id)
/** 备注 */
@Excel(name = "备注")
private String remark;
/** 是否删除 */
private Integer isDelete;
// 关联查询字段
/** 品种 */
@Excel(name = "品种")
private String variety;
/** 月龄 */
@Excel(name = "月龄")
private Long monthAge;
/** 胎次 */
@Excel(name = "胎次")
private Integer parity;
/** 配次 */
@Excel(name = "配次")
private Integer matingCounts;
/** 当前羊舍 */
@Excel(name = "当前羊舍")
private String sheepfoldName;
/** 繁育状态 */
@Excel(name = "繁育状态")
private String breedStatus;
/** 配种公羊耳号 */
@Excel(name = "配种公羊")
private String fatherManageTags;
/** 配种公羊品种 */
@Excel(name = "配种公羊品种")
private String fatherVariety;
/** 配种类型 */
@Excel(name = "配种类型")
private String matingTypeName;
/** 配种日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "配种日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date matingDate;
/** 预产日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "预产日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date expectedDate;
/** 上次事件日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "上次事件日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date lastEventDate;
/** 所在牧场 */
@Excel(name = "所在牧场")
private String ranchName;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
public Long getId()
{
return id;
}
public void setDatetime(Date datetime)
public void setSheepId(Long sheepId)
{
this.sheepId = sheepId;
}
public Long getSheepId()
{
return sheepId;
}
public void setManageTags(String manageTags)
{
this.manageTags = manageTags;
}
public String getManageTags()
{
return manageTags;
}
public void setDatetime(Date datetime)
{
this.datetime = datetime;
}
public Date getDatetime()
public Date getDatetime()
{
return datetime;
}
public void setResult(String result)
public void setResult(String result)
{
this.result = result;
}
public String getResult()
public String getResult()
{
return result;
}
public void setNumber(Long number)
public void setFetusCount(Integer fetusCount)
{
this.number = number;
this.fetusCount = fetusCount;
}
public Long getNumber()
public Integer getFetusCount()
{
return number;
return fetusCount;
}
public void setTechnician(String technician)
public void setTechnician(String technician)
{
this.technician = technician;
}
public String getTechnician()
public String getTechnician()
{
return technician;
}
public void setWay(Long way)
public void setWay(String way)
{
this.way = way;
}
public Long getWay()
public String getWay()
{
return way;
}
public void setRemark(String remark)
{
this.remark = remark;
}
public String getRemark()
{
return remark;
}
public void setIsDelete(Integer isDelete)
{
this.isDelete = isDelete;
}
public Integer getIsDelete()
{
return isDelete;
}
public String getVariety() {
return variety;
}
public void setVariety(String variety) {
this.variety = variety;
}
public Long getMonthAge() {
return monthAge;
}
public void setMonthAge(Long monthAge) {
this.monthAge = monthAge;
}
public Integer getParity() {
return parity;
}
public void setParity(Integer parity) {
this.parity = parity;
}
public Integer getMatingCounts() {
return matingCounts;
}
public void setMatingCounts(Integer matingCounts) {
this.matingCounts = matingCounts;
}
public String getSheepfoldName() {
return sheepfoldName;
}
public void setSheepfoldName(String sheepfoldName) {
this.sheepfoldName = sheepfoldName;
}
public String getBreedStatus() {
return breedStatus;
}
public void setBreedStatus(String breedStatus) {
this.breedStatus = breedStatus;
}
public String getFatherManageTags() {
return fatherManageTags;
}
public void setFatherManageTags(String fatherManageTags) {
this.fatherManageTags = fatherManageTags;
}
public String getFatherVariety() {
return fatherVariety;
}
public void setFatherVariety(String fatherVariety) {
this.fatherVariety = fatherVariety;
}
public String getMatingTypeName() {
return matingTypeName;
}
public void setMatingTypeName(String matingTypeName) {
this.matingTypeName = matingTypeName;
}
public Date getMatingDate() {
return matingDate;
}
public void setMatingDate(Date matingDate) {
this.matingDate = matingDate;
}
public Date getExpectedDate() {
return expectedDate;
}
public void setExpectedDate(Date expectedDate) {
this.expectedDate = expectedDate;
}
public Date getLastEventDate() {
return lastEventDate;
}
public void setLastEventDate(Date lastEventDate) {
this.lastEventDate = lastEventDate;
}
public String getRanchName() {
return ranchName;
}
public void setRanchName(String ranchName) {
this.ranchName = ranchName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("datetime", getDatetime())
.append("result", getResult())
.append("number", getNumber())
.append("technician", getTechnician())
.append("way", getWay())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.toString();
.append("id", getId())
.append("sheepId", getSheepId())
.append("manageTags", getManageTags())
.append("datetime", getDatetime())
.append("result", getResult())
.append("fetusCount", getFetusCount())
.append("technician", getTechnician())
.append("way", getWay())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("isDelete", getIsDelete())
.toString();
}
}
}

View File

@ -1,21 +1,20 @@
package com.zhyc.module.produce.breed.service;
import java.util.List;
import java.util.Map;
import com.zhyc.module.produce.breed.domain.ScPregnancyRecord;
/**
* 孕检记录Service接口
*
* @author ruoyi
* @date 2025-07-17
*
* @author zhyc
* @date 2025-01-21
*/
public interface IScPregnancyRecordService
public interface IScPregnancyRecordService
{
/**
* 查询孕检记录
*
*
* @param id 孕检记录主键
* @return 孕检记录
*/
@ -23,7 +22,7 @@ public interface IScPregnancyRecordService
/**
* 查询孕检记录列表
*
*
* @param scPregnancyRecord 孕检记录
* @return 孕检记录集合
*/
@ -31,7 +30,7 @@ public interface IScPregnancyRecordService
/**
* 新增孕检记录
*
*
* @param scPregnancyRecord 孕检记录
* @return 结果
*/
@ -39,7 +38,7 @@ public interface IScPregnancyRecordService
/**
* 修改孕检记录
*
*
* @param scPregnancyRecord 孕检记录
* @return 结果
*/
@ -47,7 +46,7 @@ public interface IScPregnancyRecordService
/**
* 批量删除孕检记录
*
*
* @param ids 需要删除的孕检记录主键集合
* @return 结果
*/
@ -55,9 +54,17 @@ public interface IScPregnancyRecordService
/**
* 删除孕检记录信息
*
*
* @param id 孕检记录主键
* @return 结果
*/
public int deleteScPregnancyRecordById(Long id);
}
/**
* 根据耳号查询羊只信息
*
* @param manageTags 耳号
* @return 羊只信息
*/
public Map<String, Object> getSheepByManageTags(String manageTags);
}

View File

@ -1,19 +1,24 @@
package com.zhyc.module.produce.breed.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Date;
import java.util.Calendar;
import com.zhyc.common.utils.DateUtils;
import com.zhyc.module.produce.breed.domain.ScPregnancyRecord;
import com.zhyc.module.produce.breed.mapper.ScPregnancyRecordMapper;
import com.zhyc.module.produce.breed.service.IScPregnancyRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.zhyc.module.produce.breed.mapper.ScPregnancyRecordMapper;
import com.zhyc.module.produce.breed.domain.ScPregnancyRecord;
import com.zhyc.module.produce.breed.service.IScPregnancyRecordService;
/**
* 孕检记录Service业务层处理
*
* @author ruoyi
* @date 2025-07-17
*
* @author zhyc
* @date 2025-01-21
*/
@Service
public class ScPregnancyRecordServiceImpl implements IScPregnancyRecordService
@ -23,7 +28,7 @@ public class ScPregnancyRecordServiceImpl implements IScPregnancyRecordService
/**
* 查询孕检记录
*
*
* @param id 孕检记录主键
* @return 孕检记录
*/
@ -35,7 +40,7 @@ public class ScPregnancyRecordServiceImpl implements IScPregnancyRecordService
/**
* 查询孕检记录列表
*
*
* @param scPregnancyRecord 孕检记录
* @return 孕检记录
*/
@ -47,32 +52,68 @@ public class ScPregnancyRecordServiceImpl implements IScPregnancyRecordService
/**
* 新增孕检记录
*
*
* @param scPregnancyRecord 孕检记录
* @return 结果
*/
@Override
@Transactional
public int insertScPregnancyRecord(ScPregnancyRecord scPregnancyRecord)
{
scPregnancyRecord.setCreateTime(DateUtils.getNowDate());
return scPregnancyRecordMapper.insertScPregnancyRecord(scPregnancyRecord);
scPregnancyRecord.setIsDelete(0);
// 根据耳号获取羊只ID
if (scPregnancyRecord.getManageTags() != null) {
Map<String, Object> sheepInfo = scPregnancyRecordMapper.selectSheepByManageTags(scPregnancyRecord.getManageTags());
if (sheepInfo != null && sheepInfo.get("id") != null) {
scPregnancyRecord.setSheepId(Long.valueOf(sheepInfo.get("id").toString()));
}
}
int result = scPregnancyRecordMapper.insertScPregnancyRecord(scPregnancyRecord);
// 如果孕检结果为怀孕更新羊只基础表相关字段
if ("怀孕".equals(scPregnancyRecord.getResult()) && scPregnancyRecord.getSheepId() != null) {
updateSheepPregnancyStatus(scPregnancyRecord);
}
return result;
}
/**
* 修改孕检记录
*
*
* @param scPregnancyRecord 孕检记录
* @return 结果
*/
@Override
@Transactional
public int updateScPregnancyRecord(ScPregnancyRecord scPregnancyRecord)
{
return scPregnancyRecordMapper.updateScPregnancyRecord(scPregnancyRecord);
scPregnancyRecord.setUpdateTime(DateUtils.getNowDate());
// 根据耳号获取羊只ID
if (scPregnancyRecord.getManageTags() != null) {
Map<String, Object> sheepInfo = scPregnancyRecordMapper.selectSheepByManageTags(scPregnancyRecord.getManageTags());
if (sheepInfo != null && sheepInfo.get("id") != null) {
scPregnancyRecord.setSheepId(Long.valueOf(sheepInfo.get("id").toString()));
}
}
int result = scPregnancyRecordMapper.updateScPregnancyRecord(scPregnancyRecord);
// 如果孕检结果为怀孕更新羊只基础表相关字段
if ("怀孕".equals(scPregnancyRecord.getResult()) && scPregnancyRecord.getSheepId() != null) {
updateSheepPregnancyStatus(scPregnancyRecord);
}
return result;
}
/**
* 批量删除孕检记录
*
*
* @param ids 需要删除的孕检记录主键
* @return 结果
*/
@ -84,7 +125,7 @@ public class ScPregnancyRecordServiceImpl implements IScPregnancyRecordService
/**
* 删除孕检记录信息
*
*
* @param id 孕检记录主键
* @return 结果
*/
@ -93,4 +134,46 @@ public class ScPregnancyRecordServiceImpl implements IScPregnancyRecordService
{
return scPregnancyRecordMapper.deleteScPregnancyRecordById(id);
}
}
/**
* 根据耳号查询羊只信息
*
* @param manageTags 耳号
* @return 羊只信息
*/
@Override
public Map<String, Object> getSheepByManageTags(String manageTags)
{
return scPregnancyRecordMapper.selectSheepByManageTags(manageTags);
}
/**
* 更新羊只怀孕状态
*
* @param scPregnancyRecord 孕检记录
*/
private void updateSheepPregnancyStatus(ScPregnancyRecord scPregnancyRecord) {
Map<String, Object> params = new HashMap<>();
params.put("sheepId", scPregnancyRecord.getSheepId());
params.put("pregDate", scPregnancyRecord.getDatetime());
// 设置繁育状态为怀孕状态假设怀孕状态ID为2
params.put("breedStatusId", 2);
// 计算预产日期羊的妊娠期大约150天
if (scPregnancyRecord.getDatetime() != null) {
Calendar cal = Calendar.getInstance();
cal.setTime(scPregnancyRecord.getDatetime());
cal.add(Calendar.DAY_OF_YEAR, 150);
params.put("expectedDate", cal.getTime());
}
// 计算怀孕天数
if (scPregnancyRecord.getDatetime() != null) {
long days = (System.currentTimeMillis() - scPregnancyRecord.getDatetime().getTime()) / (1000 * 60 * 60 * 24);
params.put("gestationDay", (int) days);
}
scPregnancyRecordMapper.updateSheepPregnancyInfo(params);
}
}

View File

@ -29,9 +29,11 @@ public class ScTransGroup extends BaseEntity {
/**
* 羊只id
*/
@Excel(name = "羊只id")
// @Excel(name = "羊只id")
private Integer sheepId;
@Excel(name = "耳号")
private String manageTags;
/**
* 转入羊舍
*/

View File

@ -2,6 +2,7 @@ package com.zhyc.module.produce.manage_sheep.service.impl;
import com.zhyc.common.exception.ServiceException;
import com.zhyc.common.utils.StringUtils;
import com.zhyc.module.base.mapper.BasSheepVarietyMapper;
import com.zhyc.module.produce.manage_sheep.domain.ScAddSheep;
import com.zhyc.module.produce.manage_sheep.mapper.ScAddSheepMapper;
import com.zhyc.module.produce.manage_sheep.service.IScAddSheepService;
@ -27,6 +28,8 @@ public class ScAddSheepServiceImpl implements IScAddSheepService {
@Autowired
private IBasSheepService basSheepService;
@Autowired
private BasSheepVarietyMapper basSheepVarietyMapper; // 假设你有这个 mapper
@Override
public boolean insertScAddSheep(ScAddSheep scAddSheep) {
// 1. 重复校验
@ -75,7 +78,7 @@ public class ScAddSheepServiceImpl implements IScAddSheepService {
return scAddSheepMapper.deleteScAddSheepByIds(ids) > 0;
}
/* ------------------ 导入:羊舍名称 → ID ------------------ */
/* ------------------ 导入 ------------------ */
@Override
public String importSheep(List<ScAddSheep> list, boolean updateSupport, String operName) {
if (list == null || list.isEmpty()) {
@ -88,12 +91,32 @@ public class ScAddSheepServiceImpl implements IScAddSheepService {
for (int i = 0; i < list.size(); i++) {
ScAddSheep sheep = list.get(i);
try {
/* 0. 品种名称 → 品种 ID必须最先处理 */
if (StringUtils.isNotBlank(sheep.getVarietyName())) {
Long varietyId = basSheepVarietyMapper.selectIdByName(sheep.getVarietyName());
if (varietyId == null) {
failure++;
failureMsg.append("<br/>第")
.append(i + 1)
.append("行:品种名称不存在【")
.append(sheep.getVarietyName())
.append("");
continue;
}
sheep.setVarietyId(varietyId.intValue());
} else {
failure++;
failureMsg.append("<br/>第")
.append(i + 1)
.append("行:品种不能为空");
continue;
}
/* 1. 羊舍名称 → ID */
if (StringUtils.isNotBlank(sheep.getSheepfoldNameExcel())) {
DaSheepfold param = new DaSheepfold();
param.setSheepfoldName(sheep.getSheepfoldNameExcel());
List<DaSheepfold> foldList = daSheepfoldMapper.selectDaSheepfoldList(param);
if (foldList == null || foldList.isEmpty()) {
failure++;
failureMsg.append("<br/>第")
@ -115,7 +138,7 @@ public class ScAddSheepServiceImpl implements IScAddSheepService {
continue;
}
/* 3. 耳号重复校验(增量导入核心) */
/* 3. 耳号重复校验 */
ScAddSheep exist = scAddSheepMapper.selectByEarNumber(sheep.getEarNumber());
if (exist != null) {
failure++;
@ -136,6 +159,7 @@ public class ScAddSheepServiceImpl implements IScAddSheepService {
insertScAddSheep(sheep);
}
success++;
} catch (Exception e) {
failure++;
failureMsg.append("<br/>第")

View File

@ -3,18 +3,12 @@ package com.zhyc.module.produce.other.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.zhyc.common.utils.StringUtils;
import com.zhyc.module.produce.other.domain.ScFixHoof;
import com.zhyc.module.produce.other.service.IScFixHoofService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.zhyc.common.annotation.Log;
import com.zhyc.common.core.controller.BaseController;
import com.zhyc.common.core.domain.AjaxResult;
@ -24,7 +18,7 @@ import com.zhyc.common.core.page.TableDataInfo;
/**
* 修蹄Controller
*
*
* @author ruoyi
* @date 2025-07-10
*/
@ -72,14 +66,26 @@ public class ScFixHoofController extends BaseController
}
/**
* 新增修蹄
* 新增修蹄记录支持批量
* @return 结果
*/
@PreAuthorize("@ss.hasPermi('produce:fixHoof:add')")
@Log(title = "修蹄", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody ScFixHoof dto){
dto.setSheepId(scFixHoofService.findIdByManageTags(dto.getManageTags()).intValue());
return toAjax(scFixHoofService.insertScFixHoof(dto));
public AjaxResult add(@RequestBody List<ScFixHoof> dtos) {
// 处理多条修蹄记录
for (ScFixHoof dto : dtos) {
// 验证羊只ID
if (dto.getSheepId() == null && StringUtils.isNotBlank(dto.getManageTags())) {
// 通过管理耳号查找羊只ID
Long sheepId = scFixHoofService.findIdByManageTags(dto.getManageTags());
dto.setSheepId(sheepId.intValue());
}
// 保存修蹄记录
scFixHoofService.insertScFixHoof(dto);
}
return toAjax(dtos.size());
}
/**
@ -98,11 +104,13 @@ public class ScFixHoofController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('produce:fixHoof:remove')")
@Log(title = "修蹄", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Integer[] ids)
{
return toAjax(scFixHoofService.deleteScFixHoofByIds(ids));
}
}

View File

@ -28,8 +28,11 @@ public class ScCastrate extends BaseEntity {
/**
* 羊只id
*/
@Excel(name = "羊只id")
// @Excel(name = "羊只id")
private String sheepId;
/** 耳号(非数据库字段,用于前端) */
@Excel(name = "耳号")
private String manageTags; // 新增
/**
* 羊舍id

View File

@ -10,7 +10,7 @@ import com.zhyc.common.core.domain.BaseEntity;
/**
* 修蹄对象 sc_fix_hoof
*
*
* @author ruoyi
* @date 2025-07-10
*/
@ -28,7 +28,6 @@ public class ScFixHoof extends BaseEntity
private Integer sheepId;
/** 管理耳号(仅用于接收参数/返回视图,不存库) */
@Excel(name = "管理耳号")
// @TableField(exist = false) // 非数据库字段
private String manageTags;
/** 羊舍id */

View File

@ -1,20 +1,19 @@
package com.zhyc.module.produce.other.service;
import java.util.List;
import com.zhyc.module.produce.other.domain.ScFixHoof;
/**
* 修蹄Service接口
*
*
* @author ruoyi
* @date 2025-07-10
*/
public interface IScFixHoofService
public interface IScFixHoofService
{
/**
* 查询修蹄
*
*
* @param id 修蹄主键
* @return 修蹄
*/
@ -22,7 +21,7 @@ public interface IScFixHoofService
/**
* 查询修蹄列表
*
*
* @param scFixHoof 修蹄
* @return 修蹄集合
*/
@ -30,7 +29,7 @@ public interface IScFixHoofService
/**
* 新增修蹄
*
*
* @param scFixHoof 修蹄
* @return 结果
*/
@ -38,7 +37,7 @@ public interface IScFixHoofService
/**
* 修改修蹄
*
*
* @param scFixHoof 修蹄
* @return 结果
*/
@ -46,7 +45,7 @@ public interface IScFixHoofService
/**
* 批量删除修蹄
*
*
* @param ids 需要删除的修蹄主键集合
* @return 结果
*/
@ -54,7 +53,7 @@ public interface IScFixHoofService
/**
* 删除修蹄信息
*
*
* @param id 修蹄主键
* @return 结果
*/

View File

@ -5,13 +5,15 @@ import java.util.List;
import com.zhyc.common.exception.ServiceException;
import com.zhyc.common.utils.DateUtils;
import com.zhyc.common.utils.StringUtils;
import com.zhyc.module.produce.other.domain.ScFixHoof;
import com.zhyc.module.produce.other.mapper.ScFixHoofMapper;
import com.zhyc.module.base.domain.BasSheep;
import com.zhyc.module.base.mapper.BasSheepMapper;
import com.zhyc.module.base.service.IDaSheepfoldService;
import com.zhyc.module.produce.other.domain.ScFixHoof;
import com.zhyc.module.produce.other.mapper.ScFixHoofMapper;
import com.zhyc.module.produce.other.service.IScFixHoofService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhyc.module.produce.other.service.IScFixHoofService;
import org.springframework.transaction.annotation.Transactional;
/**
* 修蹄Service业务层处理
@ -27,6 +29,8 @@ public class ScFixHoofServiceImpl implements IScFixHoofService {
@Autowired
private BasSheepMapper basSheepMapper;
@Autowired
private IDaSheepfoldService daSheepfoldService;
/**
* 查询修蹄
*
@ -115,4 +119,4 @@ public class ScFixHoofServiceImpl implements IScFixHoofService {
}
}

View File

@ -92,7 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<select id="selectBasSheepById" parameterType="java.lang.Long" resultType="BasSheep">
<select id="selectBasSheepById" parameterType="java.lang.Long" resultType="com.zhyc.module.base.domain.BasSheep">
SELECT s.id,
s.sheepfold_id AS sheepfoldId,
sf.sheepfold_name AS sheepfoldName,
@ -119,6 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<insert id="insertBasSheep" parameterType="BasSheep" useGeneratedKeys="true" keyProperty="id">
insert into bas_sheep
<trim prefix="(" suffix=")" suffixOverrides=",">

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhyc.module.base.mapper.BasSheepTypeMapper">
<resultMap type="BasSheepType" id="BasSheepTypeResult">
<result property="id" column="id" />
<result property="name" column="name" />
</resultMap>
<sql id="selectBasSheepTypeVo">
select id, name from bas_sheep_type
</sql>
<select id="selectBasSheepTypeList" parameterType="BasSheepType" resultMap="BasSheepTypeResult">
<include refid="selectBasSheepTypeVo"/>
<where>
<if test="name != null and name != ''"> and name = #{name}</if>
</where>
</select>
<select id="selectBasSheepTypeById" parameterType="Integer" resultMap="BasSheepTypeResult">
<include refid="selectBasSheepTypeVo"/>
where id = #{id}
</select>
<insert id="insertBasSheepType" parameterType="BasSheepType" useGeneratedKeys="true" keyProperty="id">
insert into bas_sheep_type
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="name != null">name,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">#{name},</if>
</trim>
</insert>
<update id="updateBasSheepType" parameterType="BasSheepType">
update bas_sheep_type
<trim prefix="SET" suffixOverrides=",">
<if test="name != null">name = #{name},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteBasSheepTypeById" parameterType="Integer">
delete from bas_sheep_type where id = #{id}
</delete>
<delete id="deleteBasSheepTypeByIds" parameterType="String">
delete from bas_sheep_type where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -53,4 +53,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id}
</foreach>
</delete>
<select id="selectIdByName" parameterType="string" resultType="java.lang.Long">
SELECT id
FROM bas_sheep_variety
WHERE variety = #{varietyName}
LIMIT 1
</select>
</mapper>

View File

@ -1,60 +1,147 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhyc.module.produce.breed.mapper.ScPregnancyRecordMapper">
<resultMap type="ScPregnancyRecord" id="ScPregnancyRecordResult">
<result property="id" column="id" />
<result property="sheepId" column="sheep_id" />
<result property="manageTags" column="manage_tags" />
<result property="datetime" column="datetime" />
<result property="result" column="result" />
<result property="number" column="number" />
<result property="fetusCount" column="fetus_count" />
<result property="technician" column="technician" />
<result property="way" column="way" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="create_by" />
<result property="updateTime" column="create_time" />
<!-- 关联羊只信息字段 -->
<result property="variety" column="variety" />
<result property="monthAge" column="month_age" />
<result property="parity" column="parity" />
<result property="matingCounts" column="mating_counts" />
<result property="sheepfoldName" column="sheepfold_name" />
<result property="breedStatus" column="breed" />
<result property="fatherManageTags" column="father_manage_tags" />
<result property="fatherVariety" column="father_variety" />
<result property="matingTypeName" column="mating_type_name" />
<result property="matingDate" column="mating_date" />
<result property="expectedDate" column="expected_date" />
<result property="lastEventDate" column="last_event_date" />
<result property="ranchName" column="ranch" />
</resultMap>
<sql id="selectScPregnancyRecordVo">
select id, datetime, result, number, technician, way, create_by, create_time from sc_pregnancy_record
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,
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.father_manage_tags,
father_sf.variety as father_variety,
mating_type.dict_label as mating_type_name,
sf.mating_date,
sf.expected_date,
sf.lambing_date as last_event_date,
r.ranch as ranch
from sc_pregnancy_record pr
left join sheep_file sf on pr.sheep_id = sf.id
left join sys_dict_data mating_type on sf.mating_type_id = mating_type.dict_value and mating_type.dict_type = 'breed_type' and mating_type.status = '0'
left join da_ranch r on sf.ranch_id = r.id
left join sheep_file father_sf on sf.bs_father_id = father_sf.id
</sql>
<select id="selectScPregnancyRecordList" parameterType="ScPregnancyRecord" resultMap="ScPregnancyRecordResult">
<include refid="selectScPregnancyRecordVo"/>
<where>
<if test="datetime != null "> and datetime = #{datetime}</if>
<if test="result != null and result != ''"> and result = #{result}</if>
<if test="number != null "> and number = #{number}</if>
<if test="technician != null and technician != ''"> and technician = #{technician}</if>
<if test="way != null "> and way = #{way}</if>
<where>
pr.is_delete = 0
<if test="manageTags != null and manageTags != ''">
<choose>
<when test="manageTags.contains(',')">
and sf.bs_manage_tags in
<foreach item="tag" collection="manageTags.split(',')" open="(" separator="," close=")">
#{tag}
</foreach>
</when>
<otherwise>
and sf.bs_manage_tags like concat('%', #{manageTags}, '%')
</otherwise>
</choose>
</if>
<if test="datetime != null "> and pr.datetime = #{datetime}</if>
<if test="result != null and result != ''"> and pr.result = #{result}</if>
<if test="technician != null and technician != ''"> and pr.technician like concat('%', #{technician}, '%')</if>
<if test="way != null and way != ''"> and pr.way = #{way}</if>
</where>
order by pr.create_time desc
</select>
<select id="selectScPregnancyRecordById" parameterType="Long" resultMap="ScPregnancyRecordResult">
<include refid="selectScPregnancyRecordVo"/>
where id = #{id}
where pr.id = #{id} and pr.is_delete = 0
</select>
<!-- 根据耳号查询羊只信息 -->
<select id="selectSheepByManageTags" parameterType="String" resultType="map">
select
id,
bs_manage_tags as manageTags,
variety,
month_age as monthAge,
parity,
mating_counts as matingCounts,
sheepfold_name as sheepfoldName,
breed as breedStatus
from sheep_file
where bs_manage_tags = #{manageTags}
and is_delete = 0
limit 1
</select>
<insert id="insertScPregnancyRecord" parameterType="ScPregnancyRecord" useGeneratedKeys="true" keyProperty="id">
insert into sc_pregnancy_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="sheepId != null">sheep_id,</if>
<if test="datetime != null">datetime,</if>
<if test="result != null">result,</if>
<if test="number != null">number,</if>
<if test="fetusCount != null">fetus_count,</if>
<if test="technician != null">technician,</if>
<if test="way != null">way,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
</trim>
is_delete
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="sheepId != null">#{sheepId},</if>
<if test="datetime != null">#{datetime},</if>
<if test="result != null">#{result},</if>
<if test="number != null">#{number},</if>
<if test="fetusCount != null">#{fetusCount},</if>
<if test="technician != null">#{technician},</if>
<if test="way != null">#{way},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
</trim>
0
</trim>
</insert>
<update id="updateScPregnancyRecord" parameterType="ScPregnancyRecord">
@ -62,23 +149,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=",">
<if test="datetime != null">datetime = #{datetime},</if>
<if test="result != null">result = #{result},</if>
<if test="number != null">number = #{number},</if>
<if test="fetusCount != null">fetus_count = #{fetusCount},</if>
<if test="technician != null">technician = #{technician},</if>
<if test="way != null">way = #{way},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">create_by = #{updateBy},</if>
<if test="updateTime != null">create_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteScPregnancyRecordById" parameterType="Long">
delete from sc_pregnancy_record where id = #{id}
</delete>
<update id="deleteScPregnancyRecordById" parameterType="Long">
update sc_pregnancy_record set is_delete = 1 where id = #{id}
</update>
<delete id="deleteScPregnancyRecordByIds" parameterType="String">
delete from sc_pregnancy_record where id in
<update id="deleteScPregnancyRecordByIds" parameterType="String">
update sc_pregnancy_record set is_delete = 1 where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</update>
<!-- 更新羊只基础表中的孕检相关字段 -->
<update id="updateSheepPregnancyInfo" parameterType="map">
update bas_sheep
<set>
<if test="pregDate != null">preg_date = #{pregDate},</if>
<if test="breedStatusId != null">breed_status_id = #{breedStatusId},</if>
<if test="expectedDate != null">expected_date = #{expectedDate},</if>
<if test="gestationDay != null">gestation_day = #{gestationDay},</if>
create_time = now()
</set>
where id = #{sheepId}
</update>
</mapper>

View File

@ -7,6 +7,7 @@
<resultMap type="ScTransGroup" id="ScTransGroupResult">
<result property="id" column="id"/>
<result property="sheepId" column="sheep_id"/>
<result property="manageTags" column="manageTags"/>
<result property="foldTo" column="fold_to"/>
<result property="foldFrom" column="fold_from"/>
<result property="reason" column="reason"/>
@ -22,6 +23,7 @@
<sql id="selectScTransGroupVo">
SELECT tg.id,
tg.sheep_id,
s.manage_tags AS manageTags,
tg.fold_to,
tg.fold_from,
tg.reason,
@ -35,6 +37,7 @@
sf_from.sheepfold_name AS foldFromName,
sf_to.sheepfold_name AS foldToName
FROM sc_trans_group tg
LEFT JOIN bas_sheep s ON tg.sheep_id = s.id
LEFT JOIN da_sheepfold sf_from ON tg.fold_from = sf_from.id
LEFT JOIN da_sheepfold sf_to ON tg.fold_to = sf_to.id
LEFT JOIN bas_sheep_variety bv ON tg.variety_id = bv.id
@ -44,6 +47,9 @@
<include refid="selectScTransGroupVo"/>
<where>
<if test="sheepId != null">and sheep_id = #{sheepId}</if>
<if test="manageTags != null and manageTags != ''">
and s.manage_tags like concat('%', #{manageTags}, '%')
</if>
<if test="foldTo != null and foldTo != ''">and fold_to = #{foldTo}</if>
<if test="foldFrom != null and foldFrom != ''">and fold_from = #{foldFrom}</if>
<if test="status != null">and status = #{status}</if>

View File

@ -7,9 +7,12 @@
<resultMap type="ScCastrate" id="ScCastrateResult">
<result property="id" column="id"/>
<result property="sheepId" column="sheep_id"/>
<result property="manageTags" column="manageTags"/> <!-- 新增耳号映射 -->
<result property="sheepfold" column="sheepfold"/>
<result property="comment" column="comment"/>
<result property="sheepfoldName" column="sheepfoldName"/>
<result property="varietyId" column="variety_id"/>
<result property="varietyName" column="varietyName"/>
<result property="comment" column="comment"/>
<result property="technician" column="technician"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
@ -18,15 +21,17 @@
<sql id="selectScCastrateVo">
select sc.id,
sc.sheep_id,
bs.manage_tags as manageTags, -- 关联羊只表的耳号
sc.sheepfold,
sf.sheepfold_name as sheepfoldName,
sc.variety_id,
bv.variety as varietyName,
bv.variety as varietyName,
sc.comment,
sc.technician,
sc.create_by,
sc.create_time
from sc_castrate sc
left join bas_sheep bs on sc.sheep_id = bs.id -- 关联羊只表获取耳号
left join da_sheepfold sf on sc.sheepfold = sf.id
left join bas_sheep_variety bv on sc.variety_id = bv.id
</sql>
@ -34,16 +39,16 @@
<select id="selectScCastrateList" parameterType="ScCastrate" resultMap="ScCastrateResult">
<include refid="selectScCastrateVo"/>
<where>
<if test="sheepId != null and sheepId != ''">and sheep_id like concat('%', #{sheepId}, '%')</if>
<if test="sheepfold != null ">and sheepfold like concat('%', #{sheepfold}, '%')</if>
<if test="varietyId != null">
and sc.variety_id = #{varietyId}
<!-- 替换原sheepId条件为耳号条件 -->
<if test="manageTags != null and manageTags != ''">
and bs.manage_tags like concat('%', #{manageTags}, '%')
</if>
<if test="technician != null and technician != ''">and technician like concat('%', #{technician}, '%')</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''">
and create_time between #{params.beginCreateTime} and #{params.endCreateTime}
<if test="sheepfold != null ">and sc.sheepfold = #{sheepfold}</if>
<if test="varietyId != null">and sc.variety_id = #{varietyId}</if>
<if test="technician != null and technician != ''">and sc.technician like concat('%', #{technician}, '%')</if>
<if test="params.beginCreateTime != null and params.endCreateTime != null">
and sc.create_time between #{params.beginCreateTime} and #{params.endCreateTime}
</if>
</where>
</select>

View File

@ -6,8 +6,9 @@
<resultMap type="ScFixHoof" id="ScFixHoofResult">
<result property="id" column="id"/>
<result property="sheepId" column="sheep_id"/>
<result property="manageTags" column="manageTags"/>
<result property="sheepfold" column="sheepfold"/>
<result property="varietyId" column="variety_id"/>
<result property="sheepfoldName" column="sheepfoldName"/>
<result property="comment" column="comment"/>
<result property="technician" column="technician"/>
@ -17,15 +18,19 @@
<sql id="selectScFixHoofVo">
select fh.id,
fh.sheep_id,
bs.manage_tags AS manageTags,
fh.sheepfold,
sf.sheepfold_name as sheepfoldName,
sf.sheepfold_name AS sheepfoldName,
fh.variety_id,
bv.variety AS varietyName,
fh.comment,
fh.technician,
fh.create_by,
fh.create_time
from sc_fix_hoof fh
left join bas_sheep bs on fh.sheep_id = bs.id
left join da_sheepfold sf on fh.sheepfold = sf.id
left join bas_sheep_variety bv on fh.variety_id = bv.id
</sql>
<select id="selectScFixHoofList" parameterType="ScFixHoof" resultMap="ScFixHoofResult">
@ -33,9 +38,15 @@
<where>
<if test="sheepId != null ">and sheep_id = #{sheepId}</if>
<if test="sheepfold != null ">and sheepfold = #{sheepfold}</if>
<if test="varietyId != null">
and fh.variety_id = #{varietyId}
</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''">
and create_time between #{params.beginCreateTime} and #{params.endCreateTime}
</if>
<if test="manageTags != null and manageTags != ''">
and bs.manage_tags like concat('%', #{manageTags}, '%')
</if>
</where>
</select>
@ -44,24 +55,24 @@
where fh.id = #{id}
</select>
<insert id="insertScFixHoof" parameterType="ScFixHoof" useGeneratedKeys="true" keyProperty="id">
insert into sc_fix_hoof
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="sheepId != null and sheepId != ''">and fh.sheep_id like concat('%', #{sheepId}, '%')</if>
<if test="sheepfold != null">and fh.sheepfold = #{sheepfold}</if>
<if test="comment != null">comment,</if>
<if test="technician != null and technician != ''">technician,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="sheepId != null">#{sheepId},</if>
<if test="sheepfold != null">#{sheepfold},</if>
<if test="comment != null">#{comment},</if>
<if test="technician != null and technician != ''">#{technician},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
</trim>
<insert id="insertScFixHoof" parameterType="ScFixHoof"
useGeneratedKeys="true" keyProperty="id">
INSERT INTO sc_fix_hoof
(sheep_id,
sheepfold,
variety_id,
<if test="comment != null">comment,</if>
<if test="technician != null and technician != ''">technician,</if>
create_by,
create_time)
VALUES
(#{sheepId},
#{sheepfold},
<if test="varietyId != null">#{varietyId},</if>
<if test="comment != null">#{comment},</if>
<if test="technician != null and technician != ''">#{technician},</if>
#{createBy},
#{createTime})
</insert>
<update id="updateScFixHoof" parameterType="ScFixHoof">
@ -69,6 +80,7 @@
<trim prefix="SET" suffixOverrides=",">
<if test="sheepId != null">sheep_id = #{sheepId},</if>
<if test="sheepfold != null">sheepfold = #{sheepfold},</if>
<if test="varietyId != null">variety_id=#{varietyId},</if>
<if test="comment != null">comment = #{comment},</if>
<if test="technician != null and technician != ''">technician = #{technician},</if>
<if test="createBy != null">create_by = #{createBy},</if>
@ -89,4 +101,6 @@
#{id}
</foreach>
</delete>
</mapper>