diff --git a/zhyc-admin/src/main/resources/application.yml b/zhyc-admin/src/main/resources/application.yml index 96c7d6e..49cc5ba 100644 --- a/zhyc-admin/src/main/resources/application.yml +++ b/zhyc-admin/src/main/resources/application.yml @@ -51,6 +51,10 @@ spring: messages: # 国际化资源文件路径 basename: i18n/messages + + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 profiles: active: druid # 文件上传 @@ -112,6 +116,7 @@ pagehelper: supportMethodsArguments: true params: count=countSql + # Swagger配置 swagger: # 是否开启swagger @@ -127,3 +132,6 @@ xss: excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* + + + 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 0e7605e..85d5591 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 @@ -97,7 +97,7 @@ public class TreatmentController extends BaseController */ @PreAuthorize("@ss.hasPermi('treatment:treatment:remove')") @Log(title = "治疗记录", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") + @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(treatmentService.deleteTreatmentByIds(ids)); diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwPrescription.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwPrescription.java index 9afe41d..b8466e1 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwPrescription.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwPrescription.java @@ -28,7 +28,7 @@ public class SwPrescription extends BaseEntity private String name; /** 类型(免疫/保健/驱虫/消毒/疾病治疗) */ - @Excel(name = "类型", readConverterExp = "免=疫/保健/驱虫/消毒/疾病治疗") + @Excel(name = "类型", readConverterExp = "免疫/保健/驱虫/消毒/疾病治疗") private Integer persType; /** 备注 */ 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 4ace5d1..67777b8 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 @@ -1,7 +1,11 @@ package com.zhyc.module.biosafety.domain; +import java.util.ArrayList; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.zhyc.common.annotation.Excel; @@ -13,6 +17,7 @@ import com.zhyc.common.core.domain.BaseEntity; * @author ruoyi * @date 2025-07-15 */ +@Data public class Treatment extends BaseEntity { private static final long serialVersionUID = 1L; @@ -80,204 +85,11 @@ public class Treatment extends BaseEntity @Excel(name = "药品使用记录id") private Long usageId; +// 药品使用 + private List usageDetails; + /** 备注 */ @Excel(name = "备注") private String comment; - public void setId(Long id) - { - this.id = id; - } - - public Long getId() - { - return id; - } - - public void setDiagId(Long diagId) - { - this.diagId = diagId; - } - - public Long getDiagId() - { - return diagId; - } - - public void setSheepId(Long sheepId) - { - this.sheepId = sheepId; - } - - public Long getSheepId() - { - return sheepId; - } - - public void setVariety(String variety) - { - this.variety = variety; - } - - public String getVariety() - { - return variety; - } - - public void setSheepType(String sheepType) - { - this.sheepType = sheepType; - } - - public String getSheepType() - { - return sheepType; - } - - public void setMonthAge(Long monthAge) - { - this.monthAge = monthAge; - } - - public Long getMonthAge() - { - return monthAge; - } - - public void setGender(String gender) - { - this.gender = gender; - } - - public String getGender() - { - return gender; - } - - public void setParity(Long parity) - { - this.parity = parity; - } - - public Long getParity() - { - return parity; - } - - public void setBreed(String breed) - { - this.breed = breed; - } - - public String getBreed() - { - return breed; - } - - public void setLactDay(Long lactDay) - { - this.lactDay = lactDay; - } - - public Long getLactDay() - { - return lactDay; - } - - public void setGestDay(Long gestDay) - { - this.gestDay = gestDay; - } - - public Long getGestDay() - { - return gestDay; - } - - public void setDatetime(Date datetime) - { - this.datetime = datetime; - } - - public Date getDatetime() - { - return datetime; - } - - public void setDiseaseId(Long diseaseId) - { - this.diseaseId = diseaseId; - } - - public Long getDiseaseId() - { - return diseaseId; - } - - public void setDiseasePid(String diseasePid) - { - this.diseasePid = diseasePid; - } - - public String getDiseasePid() - { - return diseasePid; - } - - public void setVeterinary(String veterinary) - { - this.veterinary = veterinary; - } - - public String getVeterinary() - { - return veterinary; - } - - public void setUsageId(Long usageId) - { - this.usageId = usageId; - } - - public Long getUsageId() - { - return usageId; - } - - public void setComment(String comment) - { - this.comment = comment; - } - - public String getComment() - { - return comment; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("diagId", getDiagId()) - .append("sheepId", getSheepId()) - .append("variety", getVariety()) - .append("sheepType", getSheepType()) - .append("monthAge", getMonthAge()) - .append("gender", getGender()) - .append("parity", getParity()) - .append("breed", getBreed()) - .append("lactDay", getLactDay()) - .append("gestDay", getGestDay()) - .append("datetime", getDatetime()) - .append("diseaseId", getDiseaseId()) - .append("diseasePid", getDiseasePid()) - .append("veterinary", getVeterinary()) - .append("usageId", getUsageId()) - .append("comment", getComment()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .toString(); - } } 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 502a05b..1d576f5 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,11 +2,14 @@ package com.zhyc.module.biosafety.service.impl; import java.util.List; import com.zhyc.common.utils.DateUtils; +import com.zhyc.module.biosafety.domain.SwMedicineUsage; +import com.zhyc.module.biosafety.domain.SwPrescription; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zhyc.module.biosafety.mapper.TreatmentMapper; import com.zhyc.module.biosafety.domain.Treatment; import com.zhyc.module.biosafety.service.ITreatmentService; +import org.springframework.transaction.annotation.Transactional; /** * 治疗记录Service业务层处理 @@ -19,6 +22,8 @@ public class TreatmentServiceImpl implements ITreatmentService { @Autowired private TreatmentMapper treatmentMapper; + @Autowired + private SwMedicineUsageServiceImpl medicineUsageService; /** * 查询治疗记录 @@ -51,8 +56,15 @@ public class TreatmentServiceImpl implements ITreatmentService * @return 结果 */ @Override + @Transactional public int insertTreatment(Treatment treatment) { + SwMedicineUsage medicineUsage = new SwMedicineUsage(); + medicineUsage.setName("羊只治疗"); + medicineUsage.setUseType("4"); +// 药品使用记录 + medicineUsage.setSwMedicineUsageDetailsList(treatment.getUsageDetails()); + medicineUsageService.insertSwMedicineUsage(medicineUsage); treatment.setCreateTime(DateUtils.getNowDate()); return treatmentMapper.insertTreatment(treatment); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/controller/ScDryMilkController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/controller/ScDryMilkController.java new file mode 100644 index 0000000..a319379 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/controller/ScDryMilkController.java @@ -0,0 +1,115 @@ +package com.zhyc.module.produce.drymilk.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; +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.produce.drymilk.domain.ScDryMilk; +import com.zhyc.module.produce.drymilk.service.IScDryMilkService; +import com.zhyc.common.utils.poi.ExcelUtil; +import com.zhyc.common.core.page.TableDataInfo; + +/** + * 干奶记录Controller + * + * @author ruoyi + * @date 2025-07-15 + */ +@RestController +@RequestMapping("/drymilk/drymilk") +public class ScDryMilkController extends BaseController +{ + @Autowired + private IScDryMilkService scDryMilkService; + + /** + * 查询干奶记录列表 + */ + @PreAuthorize("@ss.hasPermi('drymilk:drymilk:list')") + @GetMapping("/list") + public TableDataInfo list(ScDryMilk scDryMilk) + { + startPage(); + List list = scDryMilkService.selectScDryMilkList(scDryMilk); + return getDataTable(list); + } + + /** + * 导出干奶记录列表 + */ + @PreAuthorize("@ss.hasPermi('drymilk:drymilk:export')") + @Log(title = "干奶记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ScDryMilk scDryMilk) + { + List list = scDryMilkService.selectScDryMilkList(scDryMilk); + ExcelUtil util = new ExcelUtil(ScDryMilk.class); + util.exportExcel(response, list, "干奶记录数据"); + } + + /** + * 获取干奶记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('drymilk:drymilk:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(scDryMilkService.selectScDryMilkById(id)); + } + + /** + * 根据耳号查询羊只ID + */ + @PreAuthorize("@ss.hasPermi('drymilk:drymilk:query')") + @GetMapping(value = "/sheep/{manageTags}") + public AjaxResult getSheepIdByManageTags(@PathVariable("manageTags") String manageTags) + { + Long sheepId = scDryMilkService.selectSheepIdByManageTags(manageTags); + return success(sheepId); + } + + /** + * 新增干奶记录 + */ + @PreAuthorize("@ss.hasPermi('drymilk:drymilk:add')") + @Log(title = "干奶记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ScDryMilk scDryMilk) + { + return toAjax(scDryMilkService.insertScDryMilk(scDryMilk)); + } + + /** + * 修改干奶记录 + */ + @PreAuthorize("@ss.hasPermi('drymilk:drymilk:edit')") + @Log(title = "干奶记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ScDryMilk scDryMilk) + { + return toAjax(scDryMilkService.updateScDryMilk(scDryMilk)); + } + + /** + * 删除干奶记录 + */ + @PreAuthorize("@ss.hasPermi('drymilk:drymilk:remove')") + @Log(title = "干奶记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(scDryMilkService.deleteScDryMilkByIds(ids)); + } +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/domain/ScDryMilk.java b/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/domain/ScDryMilk.java new file mode 100644 index 0000000..115e443 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/domain/ScDryMilk.java @@ -0,0 +1,189 @@ +package com.zhyc.module.produce.drymilk.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +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; + +/** + * 干奶记录对象 sc_dry_milk + * + * @author ruoyi + * @date 2025-07-15 + */ +public class ScDryMilk extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键id */ + private Long id; + + /** 羊只id */ + @Excel(name = "羊只id") + private String sheepId; + + /** 干奶日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "干奶日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date datetime; + + /** 是否使用乳头封闭剂 */ + @Excel(name = "是否使用乳头封闭剂") + private Long status; + + /** 转入羊舍id */ + @Excel(name = "转入羊舍id") + private Long sheepfold; + + /** 技术员 */ + @Excel(name = "技术员") + private String tecahnician; + + /** 备注 */ + @Excel(name = "备注") + private String comment; + + // 以下为联表查询字段,不存储在sc_dry_milk表中 + + /** 管理耳号 */ + @Excel(name = "耳号") + private String manageTags; + + /** 品种 */ + @Excel(name = "品种") + private String variety; + + /** 羊舍名称 */ + @Excel(name = "转入羊舍") + private String sheepfoldName; + + /** 事件类型 */ + @Excel(name = "事件类型") + private String eventType; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setSheepId(String sheepId) + { + this.sheepId = sheepId; + } + + public String getSheepId() + { + return sheepId; + } + public void setDatetime(Date datetime) + { + this.datetime = datetime; + } + + public Date getDatetime() + { + return datetime; + } + public void setStatus(Long status) + { + this.status = status; + } + + public Long getStatus() + { + return status; + } + public void setSheepfold(Long sheepfold) + { + this.sheepfold = sheepfold; + } + + public Long getSheepfold() + { + return sheepfold; + } + public void setTecahnician(String tecahnician) + { + this.tecahnician = tecahnician; + } + + public String getTecahnician() + { + return tecahnician; + } + + public void setComment(String comment) + { + this.comment = comment; + } + + public String getComment() + { + return comment; + } + + public void setManageTags(String manageTags) + { + this.manageTags = manageTags; + } + + public String getManageTags() + { + return manageTags; + } + + public void setVariety(String variety) + { + this.variety = variety; + } + + public String getVariety() + { + return variety; + } + + public void setSheepfoldName(String sheepfoldName) + { + this.sheepfoldName = sheepfoldName; + } + + public String getSheepfoldName() + { + return sheepfoldName; + } + + public void setEventType(String eventType) + { + this.eventType = eventType; + } + + public String getEventType() + { + return eventType; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("sheepId", getSheepId()) + .append("datetime", getDatetime()) + .append("status", getStatus()) + .append("sheepfold", getSheepfold()) + .append("tecahnician", getTecahnician()) + .append("comment", getComment()) + .append("manageTags", getManageTags()) + .append("variety", getVariety()) + .append("sheepfoldName", getSheepfoldName()) + .append("eventType", getEventType()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .toString(); + } +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/mapper/ScDryMilkMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/mapper/ScDryMilkMapper.java new file mode 100644 index 0000000..9d5522b --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/mapper/ScDryMilkMapper.java @@ -0,0 +1,69 @@ +package com.zhyc.module.produce.drymilk.mapper; + +import java.util.List; +import com.zhyc.module.produce.drymilk.domain.ScDryMilk; + +/** + * 干奶记录Mapper接口 + * + * @author ruoyi + * @date 2025-07-15 + */ +public interface ScDryMilkMapper +{ + /** + * 查询干奶记录 + * + * @param id 干奶记录主键 + * @return 干奶记录 + */ + public ScDryMilk selectScDryMilkById(Long id); + + /** + * 查询干奶记录列表 + * + * @param scDryMilk 干奶记录 + * @return 干奶记录集合 + */ + public List selectScDryMilkList(ScDryMilk scDryMilk); + + /** + * 根据耳号查询羊只ID + * + * @param manageTags 管理耳号 + * @return 羊只ID + */ + public Long selectSheepIdByManageTags(String manageTags); + + /** + * 新增干奶记录 + * + * @param scDryMilk 干奶记录 + * @return 结果 + */ + public int insertScDryMilk(ScDryMilk scDryMilk); + + /** + * 修改干奶记录 + * + * @param scDryMilk 干奶记录 + * @return 结果 + */ + public int updateScDryMilk(ScDryMilk scDryMilk); + + /** + * 删除干奶记录 + * + * @param id 干奶记录主键 + * @return 结果 + */ + public int deleteScDryMilkById(Long id); + + /** + * 批量删除干奶记录 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteScDryMilkByIds(Long[] ids); +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/service/IScDryMilkService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/service/IScDryMilkService.java new file mode 100644 index 0000000..3ec0649 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/service/IScDryMilkService.java @@ -0,0 +1,63 @@ +package com.zhyc.module.produce.drymilk.service; + +import java.util.List; +import com.zhyc.module.produce.drymilk.domain.ScDryMilk; + +/** + * 干奶记录Service接口 + * + * @author ruoyi + * @date 2025-07-15 + */ +public interface IScDryMilkService +{ + /** + * 查询干奶记录 + * + * @param id 干奶记录主键 + * @return 干奶记录 + */ + public ScDryMilk selectScDryMilkById(Long id); + + /** + * 查询干奶记录列表 + * + * @param scDryMilk 干奶记录 + * @return 干奶记录集合 + */ + public List selectScDryMilkList(ScDryMilk scDryMilk); + + Long selectSheepIdByManageTags(String manageTags); + + /** + * 新增干奶记录 + * + * @param scDryMilk 干奶记录 + * @return 结果 + */ + public int insertScDryMilk(ScDryMilk scDryMilk); + + /** + * 修改干奶记录 + * + * @param scDryMilk 干奶记录 + * @return 结果 + */ + public int updateScDryMilk(ScDryMilk scDryMilk); + + /** + * 批量删除干奶记录 + * + * @param ids 需要删除的干奶记录主键集合 + * @return 结果 + */ + public int deleteScDryMilkByIds(Long[] ids); + + /** + * 删除干奶记录信息 + * + * @param id 干奶记录主键 + * @return 结果 + */ + public int deleteScDryMilkById(Long id); +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/service/impl/ScDryMilkServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/service/impl/ScDryMilkServiceImpl.java new file mode 100644 index 0000000..3e7bf5d --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/drymilk/service/impl/ScDryMilkServiceImpl.java @@ -0,0 +1,127 @@ +package com.zhyc.module.produce.drymilk.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.zhyc.module.produce.drymilk.mapper.ScDryMilkMapper; +import com.zhyc.module.produce.drymilk.domain.ScDryMilk; +import com.zhyc.module.produce.drymilk.service.IScDryMilkService; +import com.zhyc.common.utils.StringUtils; +import com.zhyc.common.exception.ServiceException; + +/** + * 干奶记录Service业务层处理 + * + * @author ruoyi + * @date 2025-07-15 + */ +@Service +public class ScDryMilkServiceImpl implements IScDryMilkService +{ + @Autowired + private ScDryMilkMapper scDryMilkMapper; + + /** + * 查询干奶记录 + * + * @param id 干奶记录主键 + * @return 干奶记录 + */ + @Override + public ScDryMilk selectScDryMilkById(Long id) + { + return scDryMilkMapper.selectScDryMilkById(id); + } + + /** + * 查询干奶记录列表 + * + * @param scDryMilk 干奶记录 + * @return 干奶记录 + */ + @Override + public List selectScDryMilkList(ScDryMilk scDryMilk) + { + return scDryMilkMapper.selectScDryMilkList(scDryMilk); + } + + /** + * 根据耳号查询羊只ID + * + * @param manageTags 管理耳号 + * @return 羊只ID + */ + @Override + public Long selectSheepIdByManageTags(String manageTags) + { + return scDryMilkMapper.selectSheepIdByManageTags(manageTags); + } + + /** + * 新增干奶记录 + * + * @param scDryMilk 干奶记录 + * @return 结果 + */ + @Override + public int insertScDryMilk(ScDryMilk scDryMilk) + { + // 如果传入的是耳号,需要转换为羊只ID + if (StringUtils.isNotEmpty(scDryMilk.getManageTags()) && StringUtils.isEmpty(scDryMilk.getSheepId())) + { + Long sheepId = scDryMilkMapper.selectSheepIdByManageTags(scDryMilk.getManageTags()); + if (sheepId == null) + { + throw new ServiceException("未找到对应耳号的羊只信息"); + } + scDryMilk.setSheepId(String.valueOf(sheepId)); + } + return scDryMilkMapper.insertScDryMilk(scDryMilk); + } + + /** + * 修改干奶记录 + * + * @param scDryMilk 干奶记录 + * @return 结果 + */ + @Override + public int updateScDryMilk(ScDryMilk scDryMilk) + { + // 如果传入的是耳号,需要转换为羊只ID + if (StringUtils.isNotEmpty(scDryMilk.getManageTags()) && StringUtils.isEmpty(scDryMilk.getSheepId())) + { + Long sheepId = scDryMilkMapper.selectSheepIdByManageTags(scDryMilk.getManageTags()); + if (sheepId == null) + { + throw new ServiceException("未找到对应耳号的羊只信息"); + } + scDryMilk.setSheepId(String.valueOf(sheepId)); + } + return scDryMilkMapper.updateScDryMilk(scDryMilk); + } + + /** + * 批量删除干奶记录 + * + * @param ids 需要删除的干奶记录主键 + * @return 结果 + */ + @Override + public int deleteScDryMilkByIds(Long[] ids) + { + return scDryMilkMapper.deleteScDryMilkByIds(ids); + } + + /** + * 删除干奶记录信息 + * + * @param id 干奶记录主键 + * @return 结果 + */ + @Override + public int deleteScDryMilkById(Long id) + { + return scDryMilkMapper.deleteScDryMilkById(id); + } +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/controller/ScTransGroupController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/controller/ScTransGroupController.java index 44b8ccf..3c303ff 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/controller/ScTransGroupController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/controller/ScTransGroupController.java @@ -25,14 +25,13 @@ import com.zhyc.common.core.page.TableDataInfo; /** * 转群记录Controller - * + * * @author ruoyi * @date 2025-07-10 */ @RestController @RequestMapping("produce/manage_sheep/trans_group") -public class ScTransGroupController extends BaseController -{ +public class ScTransGroupController extends BaseController { @Autowired private IScTransGroupService scTransGroupService; @@ -41,8 +40,7 @@ public class ScTransGroupController extends BaseController */ @PreAuthorize("@ss.hasPermi('produce:trans_group:list')") @GetMapping("/list") - public TableDataInfo list(ScTransGroup scTransGroup) - { + public TableDataInfo list(ScTransGroup scTransGroup) { startPage(); List list = scTransGroupService.selectScTransGroupList(scTransGroup); return getDataTable(list); @@ -65,8 +63,7 @@ public class ScTransGroupController extends BaseController */ @PreAuthorize("@ss.hasPermi('produce:trans_group:query')") @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Integer id) - { + public AjaxResult getInfo(@PathVariable("id") Integer id) { return success(scTransGroupService.selectScTransGroupById(id)); } @@ -76,8 +73,7 @@ public class ScTransGroupController extends BaseController @PreAuthorize("@ss.hasPermi('produce:trans_group:add')") @Log(title = "转群记录", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody ScTransGroup scTransGroup) - { + public AjaxResult add(@RequestBody ScTransGroup scTransGroup) { return toAjax(scTransGroupService.insertScTransGroup(scTransGroup)); } @@ -87,8 +83,7 @@ public class ScTransGroupController extends BaseController @PreAuthorize("@ss.hasPermi('produce:trans_group:edit')") @Log(title = "转群记录", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody ScTransGroup scTransGroup) - { + public AjaxResult edit(@RequestBody ScTransGroup scTransGroup) { return toAjax(scTransGroupService.updateScTransGroup(scTransGroup)); } @@ -98,8 +93,7 @@ public class ScTransGroupController extends BaseController @PreAuthorize("@ss.hasPermi('produce:trans_group:remove')") @Log(title = "转群记录", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Integer[] ids) - { + public AjaxResult remove(@PathVariable Integer[] ids) { return toAjax(scTransGroupService.deleteScTransGroupByIds(ids)); } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/domain/ScTransGroup.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/domain/ScTransGroup.java index 8ae62eb..bee29eb 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/domain/ScTransGroup.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/domain/ScTransGroup.java @@ -11,66 +11,90 @@ import org.springframework.beans.factory.annotation.Autowired; /** * 转群记录对象 sc_trans_group - * + * * @author ruoyi * @date 2025-07-10 */ @Data @AllArgsConstructor @NoArgsConstructor -public class ScTransGroup extends BaseEntity -{ +public class ScTransGroup extends BaseEntity { private static final long serialVersionUID = 1L; - /** $column.columnComment */ + /** + * $column.columnComment + */ private Integer id; - /** 羊只id */ + /** + * 羊只id + */ @Excel(name = "羊只id") private Integer sheepId; - /** 转入羊舍 */ + /** + * 转入羊舍 + */ private String foldTo; - /** 转出羊舍 */ + /** + * 转出羊舍 + */ private String foldFrom; - /** 转出羊舍名称 */ + /** + * 转出羊舍名称 + */ @Excel(name = "转出羊舍") private String foldFromName; - /** 转入羊舍名称 */ + /** + * 转入羊舍名称 + */ @Excel(name = "转入羊舍") private String foldToName; /** 转群原因 */ - /** 品种id */ + /** + * 品种id + */ private Long varietyId; - /** 品种名称(联表查询返回,非数据库字段) */ + /** + * 品种名称(联表查询返回,非数据库字段) + */ @Excel(name = "品种") private String varietyName; private Integer reason; - /** 转群原因描述 用于导出*/ + /** + * 转群原因描述 用于导出 + */ @Excel(name = "转群原因") private String reasonText; - /** 技术员 */ + /** + * 技术员 + */ @Excel(name = "技术员") private String technician; - /** 状态 */ + /** + * 状态 + */ private Integer status; - /** 状态描述 用于导出*/ + /** + * 状态描述 用于导出 + */ @Excel(name = "状态") private String statusText; - /** 备注 */ + /** + * 备注 + */ @Excel(name = "备注") private String comment; - } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/mapper/ScTransGroupMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/mapper/ScTransGroupMapper.java index 288f672..3e4820e 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/mapper/ScTransGroupMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/mapper/ScTransGroupMapper.java @@ -1,19 +1,19 @@ package com.zhyc.module.produce.manage_sheep.trans_group.mapper; import java.util.List; + import com.zhyc.module.produce.manage_sheep.trans_group.domain.ScTransGroup; /** * 转群记录Mapper接口 - * + * * @author ruoyi * @date 2025-07-10 */ -public interface ScTransGroupMapper -{ +public interface ScTransGroupMapper { /** * 查询转群记录 - * + * * @param id 转群记录主键 * @return 转群记录 */ @@ -21,7 +21,7 @@ public interface ScTransGroupMapper /** * 查询转群记录列表 - * + * * @param scTransGroup 转群记录 * @return 转群记录集合 */ @@ -29,7 +29,7 @@ public interface ScTransGroupMapper /** * 新增转群记录 - * + * * @param scTransGroup 转群记录 * @return 结果 */ @@ -37,7 +37,7 @@ public interface ScTransGroupMapper /** * 修改转群记录 - * + * * @param scTransGroup 转群记录 * @return 结果 */ @@ -45,7 +45,7 @@ public interface ScTransGroupMapper /** * 删除转群记录 - * + * * @param id 转群记录主键 * @return 结果 */ @@ -53,7 +53,7 @@ public interface ScTransGroupMapper /** * 批量删除转群记录 - * + * * @param ids 需要删除的数据主键集合 * @return 结果 */ diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/service/IScTransGroupService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/service/IScTransGroupService.java index 2e249f5..a5053db 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/service/IScTransGroupService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/trans_group/service/IScTransGroupService.java @@ -1,19 +1,19 @@ package com.zhyc.module.produce.manage_sheep.trans_group.service; import java.util.List; + import com.zhyc.module.produce.manage_sheep.trans_group.domain.ScTransGroup; /** * 转群记录Service接口 - * + * * @author ruoyi * @date 2025-07-10 */ -public interface IScTransGroupService -{ +public interface IScTransGroupService { /** * 查询转群记录 - * + * * @param id 转群记录主键 * @return 转群记录 */ @@ -21,7 +21,7 @@ public interface IScTransGroupService /** * 查询转群记录列表 - * + * * @param scTransGroup 转群记录 * @return 转群记录集合 */ @@ -29,7 +29,7 @@ public interface IScTransGroupService /** * 新增转群记录 - * + * * @param scTransGroup 转群记录 * @return 结果 */ @@ -37,7 +37,7 @@ public interface IScTransGroupService /** * 修改转群记录 - * + * * @param scTransGroup 转群记录 * @return 结果 */ @@ -45,7 +45,7 @@ public interface IScTransGroupService /** * 批量删除转群记录 - * + * * @param ids 需要删除的转群记录主键集合 * @return 结果 */ @@ -53,7 +53,7 @@ public interface IScTransGroupService /** * 删除转群记录信息 - * + * * @param id 转群记录主键 * @return 结果 */ diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/transition_info/domain/ScTransitionInfo.java b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/transition_info/domain/ScTransitionInfo.java index bce520a..419d406 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/transition_info/domain/ScTransitionInfo.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/manage_sheep/transition_info/domain/ScTransitionInfo.java @@ -10,45 +10,76 @@ import com.zhyc.common.core.domain.BaseEntity; /** * 转场对象 sc_transition_info - * + * * @author ruoyi * @date 2025-07-10 */ @Data @AllArgsConstructor @NoArgsConstructor -public class ScTransitionInfo extends BaseEntity -{ +public class ScTransitionInfo extends BaseEntity { private static final long serialVersionUID = 1L; - /** */ + /** + * + */ private Integer id; - /** 羊只id */ + /** + * 羊只id + */ @Excel(name = "羊只id") private Integer sheepId; - /** 转入牧场 */ + /** + * 品种id + */ + private Long varietyId; + + /** + * 品种名称(联表返回,非数据库字段) + */ + @Excel(name = "品种") + private String varietyName; + + /** + * 转入牧场 + */ @Excel(name = "转入牧场") private String transTo; - /** 当前牧场 */ + /** + * 当前牧场 + */ @Excel(name = "当前牧场") private String transFrom; - /** 转场类型 */ - @Excel(name = "转场类型") + /** + * 转场类型 + */ private Integer transType; - /** 技术员 */ + /** + * 转场类型名称 只用于导出 + */ + @Excel(name = "转场类型") + private String transTypeText; + + /** + * 技术员 + */ @Excel(name = "技术员") private String technician; - /** 状态 */ + /** + * 状态 + */ @Excel(name = "状态") private Integer status; - /** 备注 */ + /** + * 备注 + */ @Excel(name = "备注") private String comment; diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/controller/ScBreedPlanController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/controller/ScBreedPlanController.java new file mode 100644 index 0000000..3dbfd57 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/controller/ScBreedPlanController.java @@ -0,0 +1,104 @@ +package com.zhyc.module.produce.mating_plan.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; +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.produce.mating_plan.domain.ScBreedPlan; +import com.zhyc.module.produce.mating_plan.service.IScBreedPlanService; +import com.zhyc.common.utils.poi.ExcelUtil; +import com.zhyc.common.core.page.TableDataInfo; + +/** + * 配种计划Controller + * + * @author ruoyi + * @date 2025-07-16 + */ +@RestController +@RequestMapping("/mating_plan/mating_plan") +public class ScBreedPlanController extends BaseController +{ + @Autowired + private IScBreedPlanService scBreedPlanService; + + /** + * 查询配种计划列表 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:mating_plan:list')") + @GetMapping("/list") + public TableDataInfo list(ScBreedPlan scBreedPlan) + { + startPage(); + List list = scBreedPlanService.selectScBreedPlanList(scBreedPlan); + return getDataTable(list); + } + + /** + * 导出配种计划列表 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:mating_plan:export')") + @Log(title = "配种计划", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ScBreedPlan scBreedPlan) + { + List list = scBreedPlanService.selectScBreedPlanList(scBreedPlan); + ExcelUtil util = new ExcelUtil(ScBreedPlan.class); + util.exportExcel(response, list, "配种计划数据"); + } + + /** + * 获取配种计划详细信息 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:mating_plan:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(scBreedPlanService.selectScBreedPlanById(id)); + } + + /** + * 新增配种计划 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:mating_plan:add')") + @Log(title = "配种计划", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ScBreedPlan scBreedPlan) + { + return toAjax(scBreedPlanService.insertScBreedPlan(scBreedPlan)); + } + + /** + * 修改配种计划 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:mating_plan:edit')") + @Log(title = "配种计划", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ScBreedPlan scBreedPlan) + { + return toAjax(scBreedPlanService.updateScBreedPlan(scBreedPlan)); + } + + /** + * 删除配种计划 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:mating_plan:remove')") + @Log(title = "配种计划", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(scBreedPlanService.deleteScBreedPlanByIds(ids)); + } +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/controller/ScBreedPlanGenerateController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/controller/ScBreedPlanGenerateController.java new file mode 100644 index 0000000..48daa6d --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/controller/ScBreedPlanGenerateController.java @@ -0,0 +1,188 @@ +package com.zhyc.module.produce.mating_plan.controller; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +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 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.mating_plan.domain.ScBreedPlan; +import com.zhyc.module.produce.mating_plan.domain.ScBreedPlanGenerate; +import com.zhyc.module.produce.mating_plan.service.IScBreedPlanService; +import com.zhyc.module.produce.mating_plan.service.IScBreedPlanGenerateService; +import com.zhyc.common.utils.poi.ExcelUtil; +import com.zhyc.common.core.page.TableDataInfo; + +/** + * 配种计划生成Controller + * + * @author ruoyi + * @date 2025-07-16 + */ +@RestController +@RequestMapping("/mating_plan/generate") +public class ScBreedPlanGenerateController extends BaseController +{ + @Autowired + private IScBreedPlanGenerateService scBreedPlanGenerateService; + + /** + * 查询配种计划生成列表 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:list')") + @GetMapping("/list") + public TableDataInfo list(ScBreedPlanGenerate scBreedPlanGenerate) + { + startPage(); + List list = scBreedPlanGenerateService.selectScBreedPlanGenerateList(scBreedPlanGenerate); + return getDataTable(list); + } + + /** + * 筛选符合条件的母羊 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:selectEwe')") + @GetMapping("/selectEwe") + public AjaxResult selectEligibleEwe() + { + List> eligibleEwe = scBreedPlanGenerateService.selectEligibleEwe(); + return success(eligibleEwe); + } + + /** + * 筛选符合条件的公羊 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:selectRam')") + @GetMapping("/selectRam") + public AjaxResult selectEligibleRam() + { + List> eligibleRam = scBreedPlanGenerateService.selectEligibleRam(); + return success(eligibleRam); + } + + /** + * 自动生成配种计划 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:auto')") + @PostMapping("/auto") + @Log(title = "自动生成配种计划", businessType = BusinessType.INSERT) + public AjaxResult autoGenerateBreedPlan(@RequestBody Map params) + { + try { + // 安全的类型转换 + List eweIdsRaw = (List) params.get("eweIds"); + List ramIdsRaw = (List) params.get("ramIds"); + + if (eweIdsRaw == null || ramIdsRaw == null) { + return error("参数不能为空"); + } + + List eweIds = eweIdsRaw.stream() + .map(obj -> { + if (obj instanceof Integer) { + return ((Integer) obj).longValue(); + } else if (obj instanceof Long) { + return (Long) obj; + } else { + return Long.valueOf(obj.toString()); + } + }) + .collect(Collectors.toList()); + + List ramIds = ramIdsRaw.stream() + .map(obj -> { + if (obj instanceof Integer) { + return ((Integer) obj).longValue(); + } else if (obj instanceof Long) { + return (Long) obj; + } else { + return Long.valueOf(obj.toString()); + } + }) + .collect(Collectors.toList()); + + ScBreedPlanGenerate planGenerate = scBreedPlanGenerateService.autoGenerateBreedPlan(eweIds, ramIds); + return success(planGenerate); + } catch (Exception e) { + logger.error("自动生成配种计划失败", e); + return error("自动生成配种计划失败:" + e.getMessage()); + } + } + + /** + * 获取配种计划生成详细信息 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(scBreedPlanGenerateService.selectScBreedPlanGenerateById(id)); + } + + /** + * 保存配种计划生成 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:add')") + @Log(title = "配种计划生成", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ScBreedPlanGenerate scBreedPlanGenerate) + { + return toAjax(scBreedPlanGenerateService.insertScBreedPlanGenerate(scBreedPlanGenerate)); + } + + /** + * 修改配种计划生成 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:edit')") + @Log(title = "配种计划生成", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ScBreedPlanGenerate scBreedPlanGenerate) + { + return toAjax(scBreedPlanGenerateService.updateScBreedPlanGenerate(scBreedPlanGenerate)); + } + + /** + * 审批配种计划 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:approve')") + @Log(title = "审批配种计划", businessType = BusinessType.UPDATE) + @PutMapping("/approve/{id}") + public AjaxResult approve(@PathVariable Long id) + { + return toAjax(scBreedPlanGenerateService.approveBreedPlan(id)); + } + + /** + * 获取配种计划详情 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:view')") + @GetMapping("/view/{id}") + public AjaxResult viewBreedPlan(@PathVariable Long id) + { + Map planDetails = scBreedPlanGenerateService.getBreedPlanDetails(id); + return success(planDetails); + } + + /** + * 删除配种计划生成 + */ + @PreAuthorize("@ss.hasPermi('mating_plan:generate:remove')") + @Log(title = "配种计划生成", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(scBreedPlanGenerateService.deleteScBreedPlanGenerateByIds(ids)); + } +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/domain/ScBreedPlan.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/domain/ScBreedPlan.java new file mode 100644 index 0000000..92380fc --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/domain/ScBreedPlan.java @@ -0,0 +1,82 @@ +package com.zhyc.module.produce.mating_plan.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; + +/** + * 配种计划对象 sc_breed_plan + * + * @author ruoyi + * @date 2025-07-16 + */ +public class ScBreedPlan extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 公羊id */ + @Excel(name = "公羊id") + private String ramId; + + /** 母羊id */ + @Excel(name = "母羊id") + private String eweId; + + /** 配种类型 */ + @Excel(name = "配种类型") + private Long breedType; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setRamId(String ramId) + { + this.ramId = ramId; + } + + public String getRamId() + { + return ramId; + } + + public void setEweId(String eweId) + { + this.eweId = eweId; + } + + public String getEweId() + { + return eweId; + } + + public void setBreedType(Long breedType) + { + this.breedType = breedType; + } + + public Long getBreedType() + { + return breedType; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("ramId", getRamId()) + .append("eweId", getEweId()) + .append("breedType", getBreedType()) + .toString(); + } +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/domain/ScBreedPlanGenerate.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/domain/ScBreedPlanGenerate.java new file mode 100644 index 0000000..a09c184 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/domain/ScBreedPlanGenerate.java @@ -0,0 +1,194 @@ +package com.zhyc.module.produce.mating_plan.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +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; + +/** + * 配种计划生成对象 sc_breed_plan_generate + * + * @author ruoyi + * @date 2025-07-16 + */ +public class ScBreedPlanGenerate extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 计划名称 */ + @Excel(name = "计划名称") + private String planName; + + /** 计划类型:1-同期发情配种计划 */ + @Excel(name = "计划类型") + private Integer planType; + + /** 计划日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "计划日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date planDate; + + /** 总母羊数 */ + @Excel(name = "总母羊数") + private Integer totalEweCount; + + /** 总公羊数 */ + @Excel(name = "总公羊数") + private Integer totalRamCount; + + /** 配种比例 */ + @Excel(name = "配种比例") + private String breedRatio; + + /** 状态:0-待审批,1-已审批,2-已拒绝 */ + @Excel(name = "状态") + private Integer status; + + /** 审批人 */ + @Excel(name = "审批人") + private String approver; + + /** 审批时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date approveTime; + + /** 审批意见 */ + private String approveRemark; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setPlanName(String planName) + { + this.planName = planName; + } + + public String getPlanName() + { + return planName; + } + + public void setPlanType(Integer planType) + { + this.planType = planType; + } + + public Integer getPlanType() + { + return planType; + } + + public void setPlanDate(Date planDate) + { + this.planDate = planDate; + } + + public Date getPlanDate() + { + return planDate; + } + + public void setTotalEweCount(Integer totalEweCount) + { + this.totalEweCount = totalEweCount; + } + + public Integer getTotalEweCount() + { + return totalEweCount; + } + + public void setTotalRamCount(Integer totalRamCount) + { + this.totalRamCount = totalRamCount; + } + + public Integer getTotalRamCount() + { + return totalRamCount; + } + + public void setBreedRatio(String breedRatio) + { + this.breedRatio = breedRatio; + } + + public String getBreedRatio() + { + return breedRatio; + } + + public void setStatus(Integer status) + { + this.status = status; + } + + public Integer getStatus() + { + return status; + } + + public void setApprover(String approver) + { + this.approver = approver; + } + + public String getApprover() + { + return approver; + } + + public void setApproveTime(Date approveTime) + { + this.approveTime = approveTime; + } + + public Date getApproveTime() + { + return approveTime; + } + + public void setApproveRemark(String approveRemark) + { + this.approveRemark = approveRemark; + } + + public String getApproveRemark() + { + return approveRemark; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("planName", getPlanName()) + .append("planType", getPlanType()) + .append("planDate", getPlanDate()) + .append("totalEweCount", getTotalEweCount()) + .append("totalRamCount", getTotalRamCount()) + .append("breedRatio", getBreedRatio()) + .append("status", getStatus()) + .append("approver", getApprover()) + .append("approveTime", getApproveTime()) + .append("approveRemark", getApproveRemark()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/domain/ScBreedPlanTemp.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/domain/ScBreedPlanTemp.java new file mode 100644 index 0000000..4bcefbe --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/domain/ScBreedPlanTemp.java @@ -0,0 +1,172 @@ +package com.zhyc.module.produce.mating_plan.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; + +/** + * 配种计划详情对象 sc_breed_plan_temp + * + * @author ruoyi + * @date 2025-07-16 + */ +public class ScBreedPlanTemp extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 配种计划生成ID */ + private Long planGenerateId; + + /** 公羊ID */ + @Excel(name = "公羊ID") + private String ramId; + + /** 母羊ID */ + @Excel(name = "母羊ID") + private String eweId; + + /** 配种类型 */ + @Excel(name = "配种类型") + private Long breedType; + + /** 公羊管理耳号 */ + @Excel(name = "公羊管理耳号") + private String ramManageTags; + + /** 公羊品种 */ + @Excel(name = "公羊品种") + private String ramVariety; + + /** 母羊管理耳号 */ + @Excel(name = "母羊管理耳号") + private String eweManageTags; + + /** 母羊品种 */ + @Excel(name = "母羊品种") + private String eweVariety; + + /** 母羊体重 */ + @Excel(name = "母羊体重") + private Double eweWeight; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setPlanGenerateId(Long planGenerateId) + { + this.planGenerateId = planGenerateId; + } + + public Long getPlanGenerateId() + { + return planGenerateId; + } + + public void setRamId(String ramId) + { + this.ramId = ramId; + } + + public String getRamId() + { + return ramId; + } + + public void setEweId(String eweId) + { + this.eweId = eweId; + } + + public String getEweId() + { + return eweId; + } + + public void setBreedType(Long breedType) + { + this.breedType = breedType; + } + + public Long getBreedType() + { + return breedType; + } + + public void setRamManageTags(String ramManageTags) + { + this.ramManageTags = ramManageTags; + } + + public String getRamManageTags() + { + return ramManageTags; + } + + public void setRamVariety(String ramVariety) + { + this.ramVariety = ramVariety; + } + + public String getRamVariety() + { + return ramVariety; + } + + public void setEweManageTags(String eweManageTags) + { + this.eweManageTags = eweManageTags; + } + + public String getEweManageTags() + { + return eweManageTags; + } + + public void setEweVariety(String eweVariety) + { + this.eweVariety = eweVariety; + } + + public String getEweVariety() + { + return eweVariety; + } + + public void setEweWeight(Double eweWeight) + { + this.eweWeight = eweWeight; + } + + public Double getEweWeight() + { + return eweWeight; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("planGenerateId", getPlanGenerateId()) + .append("ramId", getRamId()) + .append("eweId", getEweId()) + .append("breedType", getBreedType()) + .append("ramManageTags", getRamManageTags()) + .append("ramVariety", getRamVariety()) + .append("eweManageTags", getEweManageTags()) + .append("eweVariety", getEweVariety()) + .append("eweWeight", getEweWeight()) + .append("createTime", getCreateTime()) + .toString(); + } +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/mapper/ScBreedPlanGenerateMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/mapper/ScBreedPlanGenerateMapper.java new file mode 100644 index 0000000..f889fcc --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/mapper/ScBreedPlanGenerateMapper.java @@ -0,0 +1,104 @@ +package com.zhyc.module.produce.mating_plan.mapper; + +import java.util.List; +import java.util.Map; +import org.apache.ibatis.annotations.Param; +import com.zhyc.module.produce.mating_plan.domain.ScBreedPlanGenerate; +import com.zhyc.module.produce.mating_plan.domain.ScBreedPlan; + +/** + * 配种计划生成Mapper接口 + * + * @author ruoyi + * @date 2025-07-16 + */ +public interface ScBreedPlanGenerateMapper +{ + /** + * 查询配种计划生成 + * + * @param id 配种计划生成主键 + * @return 配种计划生成 + */ + public ScBreedPlanGenerate selectScBreedPlanGenerateById(Long id); + + /** + * 查询配种计划生成列表 + * + * @param scBreedPlanGenerate 配种计划生成 + * @return 配种计划生成集合 + */ + public List selectScBreedPlanGenerateList(ScBreedPlanGenerate scBreedPlanGenerate); + + /** + * 筛选符合条件的母羊 + * + * @return 符合条件的母羊列表 + */ + public List> selectEligibleEwe(); + + /** + * 筛选符合条件的公羊 + * + * @return 符合条件的公羊列表 + */ + public List> selectEligibleRam(); + + /** + * 新增配种计划生成 + * + * @param scBreedPlanGenerate 配种计划生成 + * @return 结果 + */ + public int insertScBreedPlanGenerate(ScBreedPlanGenerate scBreedPlanGenerate); + + /** + * 插入临时配种计划 + * + * @param planGenerateId 配种计划生成ID + * @param breedPlan 配种计划 + * @return 结果 + */ + public int insertTempBreedPlan(@Param("planGenerateId") Long planGenerateId, + @Param("breedPlan") ScBreedPlan breedPlan); + + /** + * 修改配种计划生成 + * + * @param scBreedPlanGenerate 配种计划生成 + * @return 结果 + */ + public int updateScBreedPlanGenerate(ScBreedPlanGenerate scBreedPlanGenerate); + + /** + * 将临时配种计划转为正式配种计划 + * + * @param planGenerateId 配种计划生成ID + * @return 结果 + */ + public int transferTempToFormal(Long planGenerateId); + + /** + * 获取配种计划详情 + * + * @param planGenerateId 配种计划生成ID + * @return 配种计划详情列表 + */ + public List> selectBreedPlanDetails(Long planGenerateId); + + /** + * 删除配种计划生成 + * + * @param id 配种计划生成主键 + * @return 结果 + */ + public int deleteScBreedPlanGenerateById(Long id); + + /** + * 批量删除配种计划生成 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteScBreedPlanGenerateByIds(Long[] ids); +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/mapper/ScBreedPlanMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/mapper/ScBreedPlanMapper.java new file mode 100644 index 0000000..9890750 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/mapper/ScBreedPlanMapper.java @@ -0,0 +1,61 @@ +package com.zhyc.module.produce.mating_plan.mapper; + +import java.util.List; +import com.zhyc.module.produce.mating_plan.domain.ScBreedPlan; + +/** + * 配种计划Mapper接口 + * + * @author ruoyi + * @date 2025-07-16 + */ +public interface ScBreedPlanMapper +{ + /** + * 查询配种计划 + * + * @param id 配种计划主键 + * @return 配种计划 + */ + public ScBreedPlan selectScBreedPlanById(Long id); + + /** + * 查询配种计划列表 + * + * @param scBreedPlan 配种计划 + * @return 配种计划集合 + */ + public List selectScBreedPlanList(ScBreedPlan scBreedPlan); + + /** + * 新增配种计划 + * + * @param scBreedPlan 配种计划 + * @return 结果 + */ + public int insertScBreedPlan(ScBreedPlan scBreedPlan); + + /** + * 修改配种计划 + * + * @param scBreedPlan 配种计划 + * @return 结果 + */ + public int updateScBreedPlan(ScBreedPlan scBreedPlan); + + /** + * 删除配种计划 + * + * @param id 配种计划主键 + * @return 结果 + */ + public int deleteScBreedPlanById(Long id); + + /** + * 批量删除配种计划 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteScBreedPlanByIds(Long[] ids); +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/IScBreedPlanGenerateService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/IScBreedPlanGenerateService.java new file mode 100644 index 0000000..d54afc4 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/IScBreedPlanGenerateService.java @@ -0,0 +1,101 @@ +package com.zhyc.module.produce.mating_plan.service; + +import java.util.List; +import java.util.Map; +import com.zhyc.module.produce.mating_plan.domain.ScBreedPlanGenerate; + +/** + * 配种计划生成Service接口 + * + * @author ruoyi + * @date 2025-07-16 + */ +public interface IScBreedPlanGenerateService +{ + /** + * 查询配种计划生成 + * + * @param id 配种计划生成主键 + * @return 配种计划生成 + */ + public ScBreedPlanGenerate selectScBreedPlanGenerateById(Long id); + + /** + * 查询配种计划生成列表 + * + * @param scBreedPlanGenerate 配种计划生成 + * @return 配种计划生成集合 + */ + public List selectScBreedPlanGenerateList(ScBreedPlanGenerate scBreedPlanGenerate); + + /** + * 筛选符合条件的母羊 + * + * @return 符合条件的母羊列表 + */ + public List> selectEligibleEwe(); + + /** + * 筛选符合条件的公羊 + * + * @return 符合条件的公羊列表 + */ + public List> selectEligibleRam(); + + /** + * 自动生成配种计划 + * + * @param eweIds 母羊ID列表 + * @param ramIds 公羊ID列表 + * @return 生成的配种计划 + */ + public ScBreedPlanGenerate autoGenerateBreedPlan(List eweIds, List ramIds); + + /** + * 新增配种计划生成 + * + * @param scBreedPlanGenerate 配种计划生成 + * @return 结果 + */ + public int insertScBreedPlanGenerate(ScBreedPlanGenerate scBreedPlanGenerate); + + /** + * 修改配种计划生成 + * + * @param scBreedPlanGenerate 配种计划生成 + * @return 结果 + */ + public int updateScBreedPlanGenerate(ScBreedPlanGenerate scBreedPlanGenerate); + + /** + * 审批配种计划 + * + * @param id 配种计划ID + * @return 结果 + */ + public int approveBreedPlan(Long id); + + /** + * 获取配种计划详情 + * + * @param id 配种计划ID + * @return 配种计划详情 + */ + public Map getBreedPlanDetails(Long id); + + /** + * 批量删除配种计划生成 + * + * @param ids 需要删除的配种计划生成主键集合 + * @return 结果 + */ + public int deleteScBreedPlanGenerateByIds(Long[] ids); + + /** + * 删除配种计划生成信息 + * + * @param id 配种计划生成主键 + * @return 结果 + */ + public int deleteScBreedPlanGenerateById(Long id); +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/IScBreedPlanService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/IScBreedPlanService.java new file mode 100644 index 0000000..44002cb --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/IScBreedPlanService.java @@ -0,0 +1,61 @@ +package com.zhyc.module.produce.mating_plan.service; + +import java.util.List; +import com.zhyc.module.produce.mating_plan.domain.ScBreedPlan; + +/** + * 配种计划Service接口 + * + * @author ruoyi + * @date 2025-07-16 + */ +public interface IScBreedPlanService +{ + /** + * 查询配种计划 + * + * @param id 配种计划主键 + * @return 配种计划 + */ + public ScBreedPlan selectScBreedPlanById(Long id); + + /** + * 查询配种计划列表 + * + * @param scBreedPlan 配种计划 + * @return 配种计划集合 + */ + public List selectScBreedPlanList(ScBreedPlan scBreedPlan); + + /** + * 新增配种计划 + * + * @param scBreedPlan 配种计划 + * @return 结果 + */ + public int insertScBreedPlan(ScBreedPlan scBreedPlan); + + /** + * 修改配种计划 + * + * @param scBreedPlan 配种计划 + * @return 结果 + */ + public int updateScBreedPlan(ScBreedPlan scBreedPlan); + + /** + * 批量删除配种计划 + * + * @param ids 需要删除的配种计划主键集合 + * @return 结果 + */ + public int deleteScBreedPlanByIds(Long[] ids); + + /** + * 删除配种计划信息 + * + * @param id 配种计划主键 + * @return 结果 + */ + public int deleteScBreedPlanById(Long id); +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/impl/ScBreedPlanGenerateServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/impl/ScBreedPlanGenerateServiceImpl.java new file mode 100644 index 0000000..b67865f --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/impl/ScBreedPlanGenerateServiceImpl.java @@ -0,0 +1,240 @@ +package com.zhyc.module.produce.mating_plan.service.impl; + +import java.util.List; +import java.util.Map; +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Date; +import java.text.SimpleDateFormat; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.zhyc.common.utils.SecurityUtils; +import com.zhyc.module.produce.mating_plan.mapper.ScBreedPlanGenerateMapper; +import com.zhyc.module.produce.mating_plan.mapper.ScBreedPlanMapper; +import com.zhyc.module.produce.mating_plan.domain.ScBreedPlanGenerate; +import com.zhyc.module.produce.mating_plan.domain.ScBreedPlan; +import com.zhyc.module.produce.mating_plan.service.IScBreedPlanGenerateService; + +/** + * 配种计划生成Service业务层处理 + * + * @author ruoyi + * @date 2025-07-16 + */ +@Service +public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateService +{ + @Autowired + private ScBreedPlanGenerateMapper scBreedPlanGenerateMapper; + + @Autowired + private ScBreedPlanMapper scBreedPlanMapper; + + /** + * 查询配种计划生成 + * + * @param id 配种计划生成主键 + * @return 配种计划生成 + */ + @Override + public ScBreedPlanGenerate selectScBreedPlanGenerateById(Long id) + { + return scBreedPlanGenerateMapper.selectScBreedPlanGenerateById(id); + } + + /** + * 查询配种计划生成列表 + * + * @param scBreedPlanGenerate 配种计划生成 + * @return 配种计划生成 + */ + @Override + public List selectScBreedPlanGenerateList(ScBreedPlanGenerate scBreedPlanGenerate) + { + return scBreedPlanGenerateMapper.selectScBreedPlanGenerateList(scBreedPlanGenerate); + } + + /** + * 筛选符合条件的母羊 + * + * @return 符合条件的母羊列表 + */ + @Override + public List> selectEligibleEwe() + { + return scBreedPlanGenerateMapper.selectEligibleEwe(); + } + + /** + * 筛选符合条件的公羊 + * + * @return 符合条件的公羊列表 + */ + @Override + public List> selectEligibleRam() + { + return scBreedPlanGenerateMapper.selectEligibleRam(); + } + + /** + * 自动生成配种计划 + * + * @param eweIds 母羊ID列表 + * @param ramIds 公羊ID列表 + * @return 生成的配种计划 + */ + @Override + @Transactional + public ScBreedPlanGenerate autoGenerateBreedPlan(List eweIds, List ramIds) + { + // 创建配种计划生成记录 + ScBreedPlanGenerate planGenerate = new ScBreedPlanGenerate(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String dateStr = sdf.format(new Date()); + planGenerate.setPlanName(dateStr + "同期发情配种计划"); + planGenerate.setPlanType(1); + planGenerate.setPlanDate(new Date()); + planGenerate.setTotalEweCount(eweIds.size()); + planGenerate.setTotalRamCount(ramIds.size()); + + // 计算配种比例 + double ratio = (double) eweIds.size() / ramIds.size(); + planGenerate.setBreedRatio(String.format("%.1f:1", ratio)); + planGenerate.setStatus(0); // 待审批 + planGenerate.setCreateBy(SecurityUtils.getUsername()); + planGenerate.setCreateTime(new Date()); + + // 保存配种计划生成记录 + scBreedPlanGenerateMapper.insertScBreedPlanGenerate(planGenerate); + + // 生成具体的配种计划 + generateBreedPlanDetails(planGenerate.getId(), eweIds, ramIds); + + return planGenerate; + } + + /** + * 生成具体的配种计划详情 + */ + private void generateBreedPlanDetails(Long planGenerateId, List eweIds, List ramIds) + { + int ramIndex = 0; + int ewesPerRam = (int) Math.ceil((double) eweIds.size() / ramIds.size()); + + for (int i = 0; i < eweIds.size(); i++) { + ScBreedPlan breedPlan = new ScBreedPlan(); + breedPlan.setRamId(ramIds.get(ramIndex).toString()); + breedPlan.setEweId(eweIds.get(i).toString()); + breedPlan.setBreedType(1L); // 默认配种类型 + + // 插入临时配种计划,关联到生成记录 + scBreedPlanGenerateMapper.insertTempBreedPlan(planGenerateId, breedPlan); + + // 每个公羊配种指定数量的母羊后,切换到下一个公羊 + if ((i + 1) % ewesPerRam == 0 && ramIndex < ramIds.size() - 1) { + ramIndex++; + } + } + } + + /** + * 新增配种计划生成 + * + * @param scBreedPlanGenerate 配种计划生成 + * @return 结果 + */ + @Override + public int insertScBreedPlanGenerate(ScBreedPlanGenerate scBreedPlanGenerate) + { + scBreedPlanGenerate.setCreateTime(new Date()); + return scBreedPlanGenerateMapper.insertScBreedPlanGenerate(scBreedPlanGenerate); + } + + /** + * 修改配种计划生成 + * + * @param scBreedPlanGenerate 配种计划生成 + * @return 结果 + */ + @Override + public int updateScBreedPlanGenerate(ScBreedPlanGenerate scBreedPlanGenerate) + { + scBreedPlanGenerate.setUpdateTime(new Date()); + return scBreedPlanGenerateMapper.updateScBreedPlanGenerate(scBreedPlanGenerate); + } + + /** + * 审批配种计划 + * + * @param id 配种计划ID + * @return 结果 + */ + @Override + @Transactional + public int approveBreedPlan(Long id) + { + // 更新审批状态 + ScBreedPlanGenerate planGenerate = new ScBreedPlanGenerate(); + planGenerate.setId(id); + planGenerate.setStatus(1); // 已审批 + planGenerate.setApprover(SecurityUtils.getUsername()); + planGenerate.setApproveTime(new Date()); + planGenerate.setUpdateTime(new Date()); + + int result = scBreedPlanGenerateMapper.updateScBreedPlanGenerate(planGenerate); + + // 将临时配种计划转为正式配种计划 + if (result > 0) { + scBreedPlanGenerateMapper.transferTempToFormal(id); + } + + return result; + } + + /** + * 获取配种计划详情 + * + * @param id 配种计划ID + * @return 配种计划详情 + */ + @Override + public Map getBreedPlanDetails(Long id) + { + Map result = new HashMap<>(); + + // 获取配种计划基本信息 + ScBreedPlanGenerate planGenerate = scBreedPlanGenerateMapper.selectScBreedPlanGenerateById(id); + result.put("planInfo", planGenerate); + + // 获取配种计划详情列表 + List> planDetails = scBreedPlanGenerateMapper.selectBreedPlanDetails(id); + result.put("planDetails", planDetails); + + return result; + } + + /** + * 批量删除配种计划生成 + * + * @param ids 需要删除的配种计划生成主键 + * @return 结果 + */ + @Override + public int deleteScBreedPlanGenerateByIds(Long[] ids) + { + return scBreedPlanGenerateMapper.deleteScBreedPlanGenerateByIds(ids); + } + + /** + * 删除配种计划生成信息 + * + * @param id 配种计划生成主键 + * @return 结果 + */ + @Override + public int deleteScBreedPlanGenerateById(Long id) + { + return scBreedPlanGenerateMapper.deleteScBreedPlanGenerateById(id); + } +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/impl/ScBreedPlanServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/impl/ScBreedPlanServiceImpl.java new file mode 100644 index 0000000..7e4fc56 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/mating_plan/service/impl/ScBreedPlanServiceImpl.java @@ -0,0 +1,93 @@ +package com.zhyc.module.produce.mating_plan.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.zhyc.module.produce.mating_plan.mapper.ScBreedPlanMapper; +import com.zhyc.module.produce.mating_plan.domain.ScBreedPlan; +import com.zhyc.module.produce.mating_plan.service.IScBreedPlanService; + +/** + * 配种计划Service业务层处理 + * + * @author ruoyi + * @date 2025-07-16 + */ +@Service +public class ScBreedPlanServiceImpl implements IScBreedPlanService +{ + @Autowired + private ScBreedPlanMapper scBreedPlanMapper; + + /** + * 查询配种计划 + * + * @param id 配种计划主键 + * @return 配种计划 + */ + @Override + public ScBreedPlan selectScBreedPlanById(Long id) + { + return scBreedPlanMapper.selectScBreedPlanById(id); + } + + /** + * 查询配种计划列表 + * + * @param scBreedPlan 配种计划 + * @return 配种计划 + */ + @Override + public List selectScBreedPlanList(ScBreedPlan scBreedPlan) + { + return scBreedPlanMapper.selectScBreedPlanList(scBreedPlan); + } + + /** + * 新增配种计划 + * + * @param scBreedPlan 配种计划 + * @return 结果 + */ + @Override + public int insertScBreedPlan(ScBreedPlan scBreedPlan) + { + return scBreedPlanMapper.insertScBreedPlan(scBreedPlan); + } + + /** + * 修改配种计划 + * + * @param scBreedPlan 配种计划 + * @return 结果 + */ + @Override + public int updateScBreedPlan(ScBreedPlan scBreedPlan) + { + return scBreedPlanMapper.updateScBreedPlan(scBreedPlan); + } + + /** + * 批量删除配种计划 + * + * @param ids 需要删除的配种计划主键 + * @return 结果 + */ + @Override + public int deleteScBreedPlanByIds(Long[] ids) + { + return scBreedPlanMapper.deleteScBreedPlanByIds(ids); + } + + /** + * 删除配种计划信息 + * + * @param id 配种计划主键 + * @return 结果 + */ + @Override + public int deleteScBreedPlanById(Long id) + { + return scBreedPlanMapper.deleteScBreedPlanById(id); + } +} diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/controller/ScFixHoofController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/controller/ScFixHoofController.java index fe6de0d..4fabe07 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/controller/ScFixHoofController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/controller/ScFixHoofController.java @@ -77,9 +77,9 @@ public class ScFixHoofController extends BaseController @PreAuthorize("@ss.hasPermi('produce:fixHoof:add')") @Log(title = "修蹄", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody ScFixHoof scFixHoof) - { - return toAjax(scFixHoofService.insertScFixHoof(scFixHoof)); + public AjaxResult add(@RequestBody ScFixHoof dto){ + dto.setSheepId(scFixHoofService.findIdByManageTags(dto.getManageTags()).intValue()); + return toAjax(scFixHoofService.insertScFixHoof(dto)); } /** @@ -88,9 +88,9 @@ public class ScFixHoofController extends BaseController @PreAuthorize("@ss.hasPermi('produce:fixHoof:edit')") @Log(title = "修蹄", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody ScFixHoof scFixHoof) - { - return toAjax(scFixHoofService.updateScFixHoof(scFixHoof)); + public AjaxResult edit(@RequestBody ScFixHoof dto){ + dto.setSheepId(scFixHoofService.findIdByManageTags(dto.getManageTags()).intValue()); + return toAjax(scFixHoofService.updateScFixHoof(dto)); } /** diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/domain/ScFixHoof.java b/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/domain/ScFixHoof.java index 57bd187..03cd9e3 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/domain/ScFixHoof.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/domain/ScFixHoof.java @@ -25,8 +25,11 @@ public class ScFixHoof extends BaseEntity private Integer id; /** 羊只id */ - @Excel(name = "羊只id") private Integer sheepId; + /** 管理耳号(仅用于接收参数/返回视图,不存库) */ + @Excel(name = "管理耳号") +// @TableField(exist = false) // ← 非数据库字段 + private String manageTags; /** 羊舍id */ private Integer sheepfold; diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/mapper/ScFixHoofMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/mapper/ScFixHoofMapper.java index a5d71a1..e2bea53 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/mapper/ScFixHoofMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/mapper/ScFixHoofMapper.java @@ -1,19 +1,21 @@ package com.zhyc.module.produce.other.fixHoof.mapper; import java.util.List; + import com.zhyc.module.produce.other.fixHoof.domain.ScFixHoof; +import com.zhyc.module.produce.sheep.domain.BasSheep; +import org.apache.ibatis.annotations.Param; /** * 修蹄Mapper接口 - * + * * @author ruoyi * @date 2025-07-10 */ -public interface ScFixHoofMapper -{ +public interface ScFixHoofMapper { /** * 查询修蹄 - * + * * @param id 修蹄主键 * @return 修蹄 */ @@ -21,7 +23,7 @@ public interface ScFixHoofMapper /** * 查询修蹄列表 - * + * * @param scFixHoof 修蹄 * @return 修蹄集合 */ @@ -29,7 +31,7 @@ public interface ScFixHoofMapper /** * 新增修蹄 - * + * * @param scFixHoof 修蹄 * @return 结果 */ @@ -37,7 +39,7 @@ public interface ScFixHoofMapper /** * 修改修蹄 - * + * * @param scFixHoof 修蹄 * @return 结果 */ @@ -45,7 +47,7 @@ public interface ScFixHoofMapper /** * 删除修蹄 - * + * * @param id 修蹄主键 * @return 结果 */ @@ -53,9 +55,11 @@ public interface ScFixHoofMapper /** * 批量删除修蹄 - * + * * @param ids 需要删除的数据主键集合 * @return 结果 */ public int deleteScFixHoofByIds(Integer[] ids); + + } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/service/IScFixHoofService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/service/IScFixHoofService.java index 01a2272..11cda69 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/service/IScFixHoofService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/service/IScFixHoofService.java @@ -58,4 +58,13 @@ public interface IScFixHoofService * @return 结果 */ public int deleteScFixHoofById(Integer id); + + /** + * 根据管理耳号查询 + * @param manageTags + * @return + */ + Long findIdByManageTags(String manageTags); + + } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/service/impl/ScFixHoofServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/service/impl/ScFixHoofServiceImpl.java index 5bf5e2a..e60ec7a 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/service/impl/ScFixHoofServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/other/fixHoof/service/impl/ScFixHoofServiceImpl.java @@ -1,95 +1,119 @@ package com.zhyc.module.produce.other.fixHoof.service.impl; 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.fixHoof.domain.ScFixHoof; import com.zhyc.module.produce.other.fixHoof.mapper.ScFixHoofMapper; +import com.zhyc.module.produce.sheep.domain.BasSheep; +import com.zhyc.module.produce.sheep.mapper.BasSheepMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zhyc.module.produce.other.fixHoof.service.IScFixHoofService; +import org.springframework.transaction.annotation.Transactional; /** * 修蹄Service业务层处理 - * + * * @author ruoyi * @date 2025-07-10 */ @Service -public class ScFixHoofServiceImpl implements IScFixHoofService -{ +public class ScFixHoofServiceImpl implements IScFixHoofService { @Autowired private ScFixHoofMapper scFixHoofMapper; + @Autowired + private BasSheepMapper basSheepMapper; + /** * 查询修蹄 - * + * * @param id 修蹄主键 * @return 修蹄 */ @Override - public ScFixHoof selectScFixHoofById(Integer id) - { + public ScFixHoof selectScFixHoofById(Integer id) { return scFixHoofMapper.selectScFixHoofById(id); } /** * 查询修蹄列表 - * + * * @param scFixHoof 修蹄 * @return 修蹄 */ @Override - public List selectScFixHoofList(ScFixHoof scFixHoof) - { + public List selectScFixHoofList(ScFixHoof scFixHoof) { return scFixHoofMapper.selectScFixHoofList(scFixHoof); } /** * 新增修蹄 - * + * * @param scFixHoof 修蹄 * @return 结果 */ @Override - public int insertScFixHoof(ScFixHoof scFixHoof) - { + public int insertScFixHoof(ScFixHoof scFixHoof) { + // 校验羊只是否存在 + BasSheep sheep = basSheepMapper.selectBasSheepById(scFixHoof.getSheepId().longValue()); + if (sheep == null) { + throw new ServiceException("该羊只ID不存在,请检查后再添加"); + } scFixHoof.setCreateTime(DateUtils.getNowDate()); return scFixHoofMapper.insertScFixHoof(scFixHoof); } /** * 修改修蹄 - * + * * @param scFixHoof 修蹄 * @return 结果 */ @Override - public int updateScFixHoof(ScFixHoof scFixHoof) - { + public int updateScFixHoof(ScFixHoof scFixHoof) { return scFixHoofMapper.updateScFixHoof(scFixHoof); } /** * 批量删除修蹄 - * + * * @param ids 需要删除的修蹄主键 * @return 结果 */ @Override - public int deleteScFixHoofByIds(Integer[] ids) - { + public int deleteScFixHoofByIds(Integer[] ids) { return scFixHoofMapper.deleteScFixHoofByIds(ids); } /** * 删除修蹄信息 - * + * * @param id 修蹄主键 * @return 结果 */ @Override - public int deleteScFixHoofById(Integer id) - { + public int deleteScFixHoofById(Integer id) { return scFixHoofMapper.deleteScFixHoofById(id); } + + + /** + * 根据管理耳号查询 + */ + @Override + public Long findIdByManageTags(String manageTags){ + if(StringUtils.isBlank(manageTags)) + throw new ServiceException("管理耳号不能为空"); + BasSheep sheep = basSheepMapper.selectBasSheepByManageTags(manageTags.trim()); + if(sheep == null) + throw new ServiceException("管理耳号不存在:" + manageTags); + return sheep.getId(); + } + + + } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/controller/BasSheepController.java b/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/controller/BasSheepController.java index 7efd886..4726cf1 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/controller/BasSheepController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/controller/BasSheepController.java @@ -1,20 +1,17 @@ package com.zhyc.module.produce.sheep.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.produce.sheep.domain.BasSheep; +import com.zhyc.module.produce.sheep.mapper.BasSheepMapper; import com.zhyc.module.produce.sheep.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 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; @@ -35,6 +32,8 @@ public class BasSheepController extends BaseController @Autowired private IBasSheepService basSheepService; + @Autowired + private BasSheepMapper basSheepMapper; /** * 查询羊只基本信息列表 */ @@ -102,4 +101,14 @@ public class BasSheepController extends BaseController { return toAjax(basSheepService.deleteBasSheepByIds(ids)); } + + + @GetMapping("/byManageTags/{manageTags}") + public AjaxResult byManageTags(@PathVariable String manageTags){ + BasSheep sheep = basSheepService.selectBasSheepByManageTags(manageTags.trim()); + return success(sheep); + } + + + } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/domain/BasSheep.java b/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/domain/BasSheep.java index 84e2ac6..c75cf31 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/domain/BasSheep.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/domain/BasSheep.java @@ -38,6 +38,7 @@ public class BasSheep extends BaseEntity /** 羊舍id */ @Excel(name = "羊舍id") private Long sheepfoldId; + private String sheepfoldName; /** 电子耳号 */ @Excel(name = "电子耳号") diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/mapper/BasSheepMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/mapper/BasSheepMapper.java index e223d22..d31d003 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/mapper/BasSheepMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/mapper/BasSheepMapper.java @@ -2,6 +2,7 @@ package com.zhyc.module.produce.sheep.mapper; import java.util.List; import com.zhyc.module.produce.sheep.domain.BasSheep; +import org.apache.ibatis.annotations.Param; /** * 羊只基本信息Mapper接口 @@ -58,4 +59,12 @@ public interface BasSheepMapper * @return 结果 */ public int deleteBasSheepByIds(Long[] ids); + + + /** + * 根据管理耳号查询 + */ + BasSheep selectBasSheepByManageTags(String manageTags); + + } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/service/IBasSheepService.java b/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/service/IBasSheepService.java index 76efcf7..3d94ce2 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/service/IBasSheepService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/service/IBasSheepService.java @@ -58,4 +58,6 @@ public interface IBasSheepService * @return 结果 */ public int deleteBasSheepById(Long id); + + BasSheep selectBasSheepByManageTags(String trim); } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/service/impl/BasSheepServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/service/impl/BasSheepServiceImpl.java index cdc9cdd..5c4aa1c 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/service/impl/BasSheepServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/sheep/service/impl/BasSheepServiceImpl.java @@ -93,4 +93,10 @@ public class BasSheepServiceImpl implements IBasSheepService { return basSheepMapper.deleteBasSheepById(id); } + + + @Override + public BasSheep selectBasSheepByManageTags(String manageTags){ + return basSheepMapper.selectBasSheepByManageTags(manageTags); + } } diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/wean/mapper/ScWeanRecordMapper.java b/zhyc-module/src/main/java/com/zhyc/module/produce/wean/mapper/ScWeanRecordMapper.java index b8b5d5e..1d56581 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/wean/mapper/ScWeanRecordMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/wean/mapper/ScWeanRecordMapper.java @@ -65,4 +65,12 @@ public interface ScWeanRecordMapper { * @return 羊只ID */ public Long selectSheepIdByEarNumber(String earNumber); + + /** + * 根据耳号更新bas_sheep表中的断奶信息 + * + * @param scWeanRecord 断奶记录 + * @return 结果 + */ + public int updateBasSheepWeaningInfo(ScWeanRecord scWeanRecord); } \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/produce/wean/service/impl/ScWeanRecordServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/produce/wean/service/impl/ScWeanRecordServiceImpl.java index 2bc63c2..1bf5e54 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/produce/wean/service/impl/ScWeanRecordServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/produce/wean/service/impl/ScWeanRecordServiceImpl.java @@ -4,6 +4,7 @@ import java.util.List; import com.zhyc.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import com.zhyc.module.produce.wean.mapper.ScWeanRecordMapper; import com.zhyc.module.produce.wean.domain.ScWeanRecord; import com.zhyc.module.produce.wean.service.IScWeanRecordService; @@ -48,6 +49,7 @@ public class ScWeanRecordServiceImpl implements IScWeanRecordService { * @return 结果 */ @Override + @Transactional public int insertScWeanRecord(ScWeanRecord scWeanRecord) { // 如果前端传递的是耳号,需要先获取羊只ID if (scWeanRecord.getEarNumber() != null && scWeanRecord.getSheepId() == null) { @@ -57,7 +59,16 @@ public class ScWeanRecordServiceImpl implements IScWeanRecordService { } } scWeanRecord.setCreateTime(DateUtils.getNowDate()); - return scWeanRecordMapper.insertScWeanRecord(scWeanRecord); + + // 插入断奶记录 + int result = scWeanRecordMapper.insertScWeanRecord(scWeanRecord); + + // 同步更新bas_sheep表中的断奶信息 + if (result > 0 && scWeanRecord.getEarNumber() != null) { + scWeanRecordMapper.updateBasSheepWeaningInfo(scWeanRecord); + } + + return result; } /** @@ -67,6 +78,7 @@ public class ScWeanRecordServiceImpl implements IScWeanRecordService { * @return 结果 */ @Override + @Transactional public int updateScWeanRecord(ScWeanRecord scWeanRecord) { // 如果前端传递的是耳号,需要先获取羊只ID if (scWeanRecord.getEarNumber() != null && scWeanRecord.getSheepId() == null) { @@ -75,7 +87,16 @@ public class ScWeanRecordServiceImpl implements IScWeanRecordService { scWeanRecord.setSheepId(sheepId); } } - return scWeanRecordMapper.updateScWeanRecord(scWeanRecord); + + // 更新断奶记录 + int result = scWeanRecordMapper.updateScWeanRecord(scWeanRecord); + + // 同步更新bas_sheep表中的断奶信息 + if (result > 0 && scWeanRecord.getEarNumber() != null) { + scWeanRecordMapper.updateBasSheepWeaningInfo(scWeanRecord); + } + + return result; } /** diff --git a/zhyc-module/src/main/resources/mapper/Weaning/ScWeanRecordMapper.xml b/zhyc-module/src/main/resources/mapper/Weaning/ScWeanRecordMapper.xml index a5cdc3b..c1d76f3 100644 --- a/zhyc-module/src/main/resources/mapper/Weaning/ScWeanRecordMapper.xml +++ b/zhyc-module/src/main/resources/mapper/Weaning/ScWeanRecordMapper.xml @@ -119,6 +119,17 @@ where id = #{id} + + + update bas_sheep + + weaning_date = #{datetime}, + weaning_weight = #{weight}, + electronic_tags = #{electronicTags}, + + where manage_tags = #{earNumber} + + delete from sc_wean_record where id = #{id} diff --git a/zhyc-module/src/main/resources/mapper/drymilk/ScDryMilkMapper.xml b/zhyc-module/src/main/resources/mapper/drymilk/ScDryMilkMapper.xml new file mode 100644 index 0000000..338841f --- /dev/null +++ b/zhyc-module/src/main/resources/mapper/drymilk/ScDryMilkMapper.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + select d.id, d.sheep_id, d.datetime, d.status, d.sheepfold, d.tecahnician, + d.create_by, d.create_time, d.comment, + s.bs_manage_tags, s.variety, s.sheepfold_name, + '干奶' as event_type + from sc_dry_milk d + left join sheep_file s on d.sheep_id = s.id + + + + + + + + + + + insert into sc_dry_milk + + sheep_id, + datetime, + status, + sheepfold, + tecahnician, + create_by, + create_time, + comment, + + + #{sheepId}, + #{datetime}, + #{status}, + #{sheepfold}, + #{tecahnician}, + #{createBy}, + #{createTime}, + #{comment}, + + + + + update sc_dry_milk + + sheep_id = #{sheepId}, + datetime = #{datetime}, + status = #{status}, + sheepfold = #{sheepfold}, + tecahnician = #{tecahnician}, + create_by = #{createBy}, + create_time = #{createTime}, + comment = #{comment}, + + where id = #{id} + + + + delete from sc_dry_milk where id = #{id} + + + + delete from sc_dry_milk where id in + + #{id} + + + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/mating_plan/ScBreedPlanGenerateMapper.xml b/zhyc-module/src/main/resources/mapper/mating_plan/ScBreedPlanGenerateMapper.xml new file mode 100644 index 0000000..12123e8 --- /dev/null +++ b/zhyc-module/src/main/resources/mapper/mating_plan/ScBreedPlanGenerateMapper.xml @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + select id, plan_name, plan_type, plan_date, total_ewe_count, total_ram_count, + breed_ratio, status, approver, approve_time, approve_remark, + create_by, create_time, update_by, update_time + from sc_breed_plan_generate + + + + + + + + + + + + + + insert into sc_breed_plan_generate + + plan_name, + plan_type, + plan_date, + total_ewe_count, + total_ram_count, + breed_ratio, + status, + approver, + approve_time, + approve_remark, + create_by, + create_time, + update_by, + update_time, + + + #{planName}, + #{planType}, + #{planDate}, + #{totalEweCount}, + #{totalRamCount}, + #{breedRatio}, + #{status}, + #{approver}, + #{approveTime}, + #{approveRemark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + + insert into sc_breed_plan_temp (plan_generate_id, ram_id, ewe_id, breed_type, create_time) + values (#{planGenerateId}, #{breedPlan.ramId}, #{breedPlan.eweId}, #{breedPlan.breedType}, now()) + + + + update sc_breed_plan_generate + + plan_name = #{planName}, + plan_type = #{planType}, + plan_date = #{planDate}, + total_ewe_count = #{totalEweCount}, + total_ram_count = #{totalRamCount}, + breed_ratio = #{breedRatio}, + status = #{status}, + approver = #{approver}, + approve_time = #{approveTime}, + approve_remark = #{approveRemark}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + + insert into sc_breed_plan (ram_id, ewe_id, breed_type) + select ram_id, ewe_id, breed_type + from sc_breed_plan_temp + where plan_generate_id = #{planGenerateId} + + + + + + + delete from sc_breed_plan_generate where id = #{id} + + + + delete from sc_breed_plan_generate where id in + + #{id} + + + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/mating_plan/ScBreedPlanMapper.xml b/zhyc-module/src/main/resources/mapper/mating_plan/ScBreedPlanMapper.xml new file mode 100644 index 0000000..8262ba3 --- /dev/null +++ b/zhyc-module/src/main/resources/mapper/mating_plan/ScBreedPlanMapper.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + select id, ram_id, ewe_id, breed_type from sc_breed_plan + + + + + + + + insert into sc_breed_plan + + ram_id, + ewe_id, + breed_type, + + + #{ramId}, + #{eweId}, + #{breedType}, + + + + + update sc_breed_plan + + ram_id = #{ramId}, + ewe_id = #{eweId}, + breed_type = #{breedType}, + + where id = #{id} + + + + delete from sc_breed_plan where id = #{id} + + + + delete from sc_breed_plan where id in + + #{id} + + + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/transition_info/ScTransitionInfoMapper.xml b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/transition_info/ScTransitionInfoMapper.xml index dc1c5c5..027b6f3 100644 --- a/zhyc-module/src/main/resources/mapper/produce/manage_sheep/transition_info/ScTransitionInfoMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/manage_sheep/transition_info/ScTransitionInfoMapper.xml @@ -1,45 +1,60 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - + + + + + + + + + + + + + - select id, sheep_id, trans_to, trans_from, trans_type, technician, status, comment, create_by, create_time from sc_transition_info + SELECT t.*, bv.variety AS varietyName, + CASE t.trans_type + WHEN 0 THEN '内部转场' + WHEN 1 THEN '跨场转场' + WHEN 2 THEN '销售转场' + ELSE '未知' + END AS trans_type_text + FROM sc_transition_info t + LEFT JOIN bas_sheep_variety bv ON t.variety_id = bv.id - + insert into sc_transition_info sheep_id, + variety_id, trans_to, trans_from, trans_type, @@ -48,9 +63,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" comment, create_by, create_time, - + #{sheepId}, + #{varietyId}, #{transTo}, #{transFrom}, #{transType}, @@ -59,13 +75,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{comment}, #{createBy}, #{createTime}, - + update sc_transition_info sheep_id = #{sheepId}, + variety_id = #{varietyId}, trans_to = #{transTo}, trans_from = #{transFrom}, trans_type = #{transType}, @@ -79,11 +96,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from sc_transition_info where id = #{id} + delete + from sc_transition_info + where id = #{id} - delete from sc_transition_info where id in + delete from sc_transition_info where id in #{id} diff --git a/zhyc-module/src/main/resources/mapper/produce/other/fixHoof/ScFixHoofMapper.xml b/zhyc-module/src/main/resources/mapper/produce/other/fixHoof/ScFixHoofMapper.xml index d3e7661..fdd5659 100644 --- a/zhyc-module/src/main/resources/mapper/produce/other/fixHoof/ScFixHoofMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/other/fixHoof/ScFixHoofMapper.xml @@ -6,7 +6,7 @@ - + @@ -18,16 +18,17 @@ 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, + 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 @@ -43,6 +44,9 @@ and create_time between #{params.beginCreateTime} and #{params.endCreateTime} + + and bs.manage_tags like concat('%', #{manageTags}, '%') + @@ -97,4 +101,6 @@ #{id} + + \ No newline at end of file diff --git a/zhyc-module/src/main/resources/mapper/produce/sheep/BasSheepMapper.xml b/zhyc-module/src/main/resources/mapper/produce/sheep/BasSheepMapper.xml index 18ece91..de4fe9f 100644 --- a/zhyc-module/src/main/resources/mapper/produce/sheep/BasSheepMapper.xml +++ b/zhyc-module/src/main/resources/mapper/produce/sheep/BasSheepMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -53,7 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - + SELECT s.id, + s.sheepfold_id AS sheepfoldId, + sf.sheepfold_name AS sheepfoldName, + s.variety_id AS varietyId, + bv.variety AS varietyName + FROM bas_sheep s + LEFT JOIN da_sheepfold sf ON s.sheepfold_id = sf.id + LEFT JOIN bas_sheep_variety bv ON s.variety_id = bv.id + WHERE s.id = #{id} + + + @@ -234,9 +249,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from bas_sheep where id in + delete from bas_sheep where id in #{id} + + \ No newline at end of file