配种计划最终完善,产羔页面bug修复
This commit is contained in:
@@ -9,14 +9,7 @@ import com.zhyc.module.produce.breed.domain.ScBreedPlanGenerate;
|
||||
import com.zhyc.module.produce.breed.service.IScBreedPlanGenerateService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import com.zhyc.common.annotation.Log;
|
||||
import com.zhyc.common.core.controller.BaseController;
|
||||
import com.zhyc.common.core.domain.AjaxResult;
|
||||
@@ -54,9 +47,9 @@ public class ScBreedPlanGenerateController extends BaseController
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('mating_plan:generate:selectEwe')")
|
||||
@GetMapping("/selectEwe")
|
||||
public AjaxResult selectEligibleEwe()
|
||||
public AjaxResult selectEligibleEwe(@RequestParam(value = "manageTags", required = false) String manageTags)
|
||||
{
|
||||
List<Map<String, Object>> eligibleEwe = scBreedPlanGenerateService.selectEligibleEwe();
|
||||
List<Map<String, Object>> eligibleEwe = scBreedPlanGenerateService.selectEligibleEwe(manageTags);
|
||||
return success(eligibleEwe);
|
||||
}
|
||||
|
||||
@@ -65,9 +58,9 @@ public class ScBreedPlanGenerateController extends BaseController
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('mating_plan:generate:selectRam')")
|
||||
@GetMapping("/selectRam")
|
||||
public AjaxResult selectEligibleRam()
|
||||
public AjaxResult selectEligibleRam(@RequestParam(value = "manageTags", required = false) String manageTags)
|
||||
{
|
||||
List<Map<String, Object>> eligibleRam = scBreedPlanGenerateService.selectEligibleRam();
|
||||
List<Map<String, Object>> eligibleRam = scBreedPlanGenerateService.selectEligibleRam(manageTags);
|
||||
return success(eligibleRam);
|
||||
}
|
||||
|
||||
@@ -249,4 +242,19 @@ public class ScBreedPlanGenerateController extends BaseController
|
||||
{
|
||||
return toAjax(scBreedPlanGenerateService.deleteScBreedPlanGenerateByIds(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 模糊查询母羊耳号列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('mating_plan:generate:query')") // 根据实际权限修改
|
||||
@GetMapping("/search_ear_numbers")
|
||||
public AjaxResult searchEarNumbers(@RequestParam("query") String query) {
|
||||
try {
|
||||
List<String> earNumbers = scBreedPlanGenerateService.searchEarNumbers(query);
|
||||
return success(earNumbers);
|
||||
} catch (Exception e) {
|
||||
logger.error("搜索耳号异常", e);
|
||||
return error("搜索耳号失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.zhyc.module.produce.breed.domain;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -65,4 +67,15 @@ public class ScBreedPlanGenerate extends BaseEntity
|
||||
/** 审批意见 */
|
||||
private String approveRemark;
|
||||
|
||||
|
||||
/** 全部羊耳号列表(用于多耳号查询) */
|
||||
private List<String> allEarNumbers;
|
||||
|
||||
public List<String> getAllEarNumbers() {
|
||||
return allEarNumbers;
|
||||
}
|
||||
|
||||
public void setAllEarNumbers(List<String> allEarNumbers) {
|
||||
this.allEarNumbers = allEarNumbers;
|
||||
}
|
||||
}
|
||||
@@ -141,7 +141,7 @@ public class ScLambDetail extends BaseEntity
|
||||
|
||||
/** 是否留养:0-否,1-是 */
|
||||
@Excel(name = "是否留养")
|
||||
private Integer isRetained;
|
||||
private Boolean isRetained;
|
||||
|
||||
/** 家系 */
|
||||
@Excel(name = "家系")
|
||||
|
||||
@@ -128,4 +128,12 @@ public interface ScBreedPlanGenerateMapper
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteTempBreedPlanByPlanId(Long planGenerateId);
|
||||
|
||||
/**
|
||||
* 模糊查询母羊耳号列表
|
||||
*
|
||||
* @param query 查询关键字
|
||||
* @return 耳号列表
|
||||
*/
|
||||
List<String> searchEarNumbers(@Param("query") String query);
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import com.zhyc.module.produce.breed.domain.ScBreedPlanGenerate;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
/**
|
||||
* 配种计划生成Service接口
|
||||
@@ -34,14 +35,14 @@ public interface IScBreedPlanGenerateService
|
||||
*
|
||||
* @return 符合条件的母羊列表
|
||||
*/
|
||||
public List<Map<String, Object>> selectEligibleEwe();
|
||||
public List<Map<String, Object>> selectEligibleEwe(@RequestParam(value = "manageTags", required = false) String manageTags);
|
||||
|
||||
/**
|
||||
* 筛选符合条件的公羊
|
||||
*
|
||||
* @return 符合条件的公羊列表
|
||||
*/
|
||||
public List<Map<String, Object>> selectEligibleRam();
|
||||
public List<Map<String, Object>> selectEligibleRam(@RequestParam(value = "manageTags", required = false) String manageTags);
|
||||
|
||||
/**
|
||||
* 自动生成配种计划
|
||||
@@ -120,4 +121,12 @@ public interface IScBreedPlanGenerateService
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteScBreedPlanGenerateById(Long id);
|
||||
|
||||
/**
|
||||
* 模糊查询母羊耳号列表
|
||||
*
|
||||
* @param query 查询关键字
|
||||
* @return 耳号列表
|
||||
*/
|
||||
public List<String> searchEarNumbers(String query);
|
||||
}
|
||||
@@ -119,4 +119,6 @@ public interface IScBreedRecordService
|
||||
* @return 配种记录集合
|
||||
*/
|
||||
public List<ScBreedRecord> getBreedRecordsByTimeRange(Long sheepId, String startDate, String endDate);
|
||||
|
||||
ScBreedRecord getAutomaticBreedMatch(String manageTags);
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import org.springframework.util.StringUtils;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
/**
|
||||
* 配种计划生成Service业务层处理
|
||||
@@ -67,7 +68,7 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi
|
||||
* @return 符合条件的母羊列表
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> selectEligibleEwe()
|
||||
public List<Map<String, Object>> selectEligibleEwe(@RequestParam(value = "manageTags", required = false) String manageTags)
|
||||
{
|
||||
return scBreedPlanGenerateMapper.selectEligibleEwe();
|
||||
}
|
||||
@@ -78,7 +79,7 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi
|
||||
* @return 符合条件的公羊列表
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> selectEligibleRam()
|
||||
public List<Map<String, Object>> selectEligibleRam(@RequestParam(value = "manageTags", required = false) String manageTags)
|
||||
{
|
||||
return scBreedPlanGenerateMapper.selectEligibleRam();
|
||||
}
|
||||
@@ -102,7 +103,16 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi
|
||||
// 自动生成计划名称:日期+计划类型
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String dateStr = sdf.format(new Date());
|
||||
String planTypeName = (planType == 1) ? "同期发情配种计划" : "本交配种计划";
|
||||
String planTypeName = "";
|
||||
|
||||
switch (planType) {
|
||||
case 1: planTypeName = "供体母羊配种计划"; break;
|
||||
case 2: planTypeName = "同期发情人工授精计划"; break;
|
||||
case 3: planTypeName = "本交配种计划"; break;
|
||||
case 4: planTypeName = "自然发情人工授精计划"; break;
|
||||
default: planTypeName = "未知配种计划"; break;
|
||||
}
|
||||
|
||||
planName = dateStr + planTypeName;
|
||||
|
||||
planGenerate.setPlanName(planName);
|
||||
@@ -137,21 +147,15 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi
|
||||
|
||||
for (int i = 0; i < eweIds.size(); i++) {
|
||||
ScBreedPlan breedPlan = new ScBreedPlan();
|
||||
// 存储公羊ID而不是字符串
|
||||
breedPlan.setRamId(ramIds.get(ramIndex).toString());
|
||||
breedPlan.setEweId(eweIds.get(i).toString());
|
||||
|
||||
// 根据计划类型设置配种类型:同期发情配种计划->同期发情,本交配种计划->本交
|
||||
if (planType == 1) {
|
||||
breedPlan.setBreedType(1L); // 同期发情
|
||||
} else {
|
||||
breedPlan.setBreedType(2L); // 本交
|
||||
}
|
||||
// 2. 修改:直接使用 planType 作为 breedType (假设一一对应)
|
||||
// 1=供体母羊配种, 2=同期发情人工授精, 3=本交, 4=自然发情人工授精
|
||||
breedPlan.setBreedType(Long.valueOf(planType));
|
||||
|
||||
// 插入临时配种计划,关联到生成记录
|
||||
scBreedPlanGenerateMapper.insertTempBreedPlan(planGenerateId, breedPlan);
|
||||
|
||||
// 每个公羊配种指定数量的母羊后,切换到下一个公羊
|
||||
if ((i + 1) % ewesPerRam == 0 && ramIndex < ramIds.size() - 1) {
|
||||
ramIndex++;
|
||||
}
|
||||
@@ -356,10 +360,32 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi
|
||||
// 空行
|
||||
rowNum++;
|
||||
|
||||
String typeName = "";
|
||||
switch (planGenerate.getPlanType()) {
|
||||
case 1: typeName = "供体母羊配种计划"; break;
|
||||
case 2: typeName = "同期发情人工授精计划"; break;
|
||||
case 3: typeName = "本交配种计划"; break;
|
||||
case 4: typeName = "自然发情人工授精计划"; break;
|
||||
default: typeName = "未知"; break;
|
||||
}
|
||||
|
||||
// 基本信息
|
||||
Row infoRow1 = sheet.createRow(rowNum++);
|
||||
infoRow1.createCell(0).setCellValue("计划类型:");
|
||||
infoRow1.createCell(1).setCellValue(planGenerate.getPlanType() == 1 ? "同期发情配种计划" : "本交配种计划");
|
||||
String planTypeNameStr;
|
||||
Integer type = planGenerate.getPlanType();
|
||||
if (type != null) {
|
||||
switch (type) {
|
||||
case 1: planTypeNameStr = "供体母羊配种计划"; break;
|
||||
case 2: planTypeNameStr = "同期发情人工授精计划"; break;
|
||||
case 3: planTypeNameStr = "本交配种计划"; break;
|
||||
case 4: planTypeNameStr = "自然发情人工授精计划"; break;
|
||||
default: planTypeNameStr = "未知类型";
|
||||
}
|
||||
} else {
|
||||
planTypeNameStr = "";
|
||||
}
|
||||
infoRow1.createCell(1).setCellValue(planTypeNameStr);
|
||||
infoRow1.createCell(3).setCellValue("计划日期:");
|
||||
infoRow1.createCell(4).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(planGenerate.getPlanDate()));
|
||||
|
||||
@@ -447,14 +473,23 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi
|
||||
dataRow.createCell(colNum++).setCellValue(getStringValue(detail, "ram_current_weight"));
|
||||
|
||||
// 配种类型
|
||||
Object breedType = detail.get("breed_type");
|
||||
Object breedTypeObj = detail.get("breed_type");
|
||||
String breedTypeName = "未知类型";
|
||||
if (breedType != null) {
|
||||
int typeValue = Integer.parseInt(breedType.toString());
|
||||
breedTypeName = typeValue == 1 ? "同期发情" : (typeValue == 2 ? "本交" : "未知类型");
|
||||
if (breedTypeObj != null) {
|
||||
try {
|
||||
int typeValue = Integer.parseInt(breedTypeObj.toString());
|
||||
switch (typeValue) {
|
||||
case 1: breedTypeName = "供体母羊配种"; break;
|
||||
case 2: breedTypeName = "同期发情人工授精"; break;
|
||||
case 3: breedTypeName = "本交"; break;
|
||||
case 4: breedTypeName = "自然发情人工授精"; break;
|
||||
default: breedTypeName = "未知类型";
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
dataRow.createCell(colNum++).setCellValue(breedTypeName);
|
||||
|
||||
// 应用数据样式
|
||||
for (int j = 0; j < headers.length; j++) {
|
||||
if (dataRow.getCell(j) != null) {
|
||||
@@ -537,4 +572,8 @@ public class ScBreedPlanGenerateServiceImpl implements IScBreedPlanGenerateServi
|
||||
scBreedPlanGenerateMapper.deleteTempBreedPlanByPlanId(id);
|
||||
return scBreedPlanGenerateMapper.deleteScBreedPlanGenerateById(id);
|
||||
}
|
||||
@Override
|
||||
public List<String> searchEarNumbers(String query) {
|
||||
return scBreedPlanGenerateMapper.searchEarNumbers(query);
|
||||
}
|
||||
}
|
||||
@@ -109,11 +109,11 @@ public class ScLambingRecordServiceImpl implements IScLambingRecordService {
|
||||
|
||||
// 设置默认值
|
||||
if (lambDetail.getIsRetained() == null) {
|
||||
lambDetail.setIsRetained(0); // 默认为0(否)
|
||||
lambDetail.setIsRetained(false); // 默认为0(否)
|
||||
}
|
||||
|
||||
// 验证是否留养值的有效性:0-否,1-是
|
||||
if (lambDetail.getIsRetained() != 0 && lambDetail.getIsRetained() != 1) {
|
||||
if (lambDetail.getIsRetained() != false && lambDetail.getIsRetained() != true) {
|
||||
throw new RuntimeException("是否留养值无效,请使用0(否)或1(是)");
|
||||
}
|
||||
|
||||
|
||||
@@ -77,6 +77,9 @@
|
||||
left join da_sheepfold dsf on bs.sheepfold_id = dsf.id
|
||||
where bs.gender = 1
|
||||
and bs.is_delete = 0
|
||||
<if test="manageTags != null and manageTags != ''">
|
||||
and bs.manage_tags like concat('%', #{manageTags}, '%')
|
||||
</if>
|
||||
and (bs.status_id = 1 or bs.status_id is null)
|
||||
and (
|
||||
(bst.name in ('青年羊', '超龄羊') and (
|
||||
@@ -109,6 +112,9 @@
|
||||
left join bas_breed_status bbs on bs.breed_status_id = bbs.id
|
||||
where bs.gender = 2
|
||||
and bs.is_delete = 0
|
||||
<if test="manageTags != null and manageTags != ''">
|
||||
and bs.manage_tags like concat('%', #{manageTags}, '%')
|
||||
</if>
|
||||
and bs.status_id = 1
|
||||
and (
|
||||
(bst.name in ('青年羊', '超龄羊') and (
|
||||
@@ -310,4 +316,13 @@
|
||||
<delete id="deleteTempBreedPlanByPlanId" parameterType="Long">
|
||||
delete from sc_breed_plan_temp where plan_generate_id = #{planGenerateId}
|
||||
</delete>
|
||||
<!-- 模糊查询耳号列表 -->
|
||||
<select id="searchEarNumbers" resultType="java.lang.String">
|
||||
SELECT DISTINCT sf.bs_manage_tags
|
||||
FROM sheep_file sf
|
||||
WHERE sf.bs_manage_tags LIKE CONCAT(#{query}, '%')
|
||||
AND sf.is_delete = 0
|
||||
ORDER BY sf.bs_manage_tags
|
||||
LIMIT 50
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user