干奶录入查询问题

This commit is contained in:
ll
2026-02-02 00:04:33 +08:00
parent 464126195d
commit b47aa9b269
6 changed files with 208 additions and 36 deletions

View File

@@ -49,16 +49,24 @@ public class ScDryMilkController extends BaseController
public TableDataInfo list(ScDryMilk scDryMilk)
{
try {
// 兼容逻辑:如果前端传了字符串形式的耳号(如导出或老接口调用),也转为List
// 处理耳号多选:将逗号/空格分隔的字符串转为List
if (scDryMilk.getManageTags() != null && !scDryMilk.getManageTags().trim().isEmpty()) {
if (scDryMilk.getManageTagsList() == null) {
scDryMilk.setManageTagsList(new ArrayList<>());
}
// 支持中文逗号、英文逗号、空格分割
String[] tags = scDryMilk.getManageTags().trim().split("[,\\s]+");
scDryMilk.getManageTagsList().addAll(Arrays.asList(tags));
}
// 处理技术员多选将逗号分隔的字符串转为List
if (scDryMilk.getTecahnician() != null && !scDryMilk.getTecahnician().trim().isEmpty()) {
if (scDryMilk.getTechnicianList() == null) {
scDryMilk.setTechnicianList(new ArrayList<>());
}
String[] techs = scDryMilk.getTecahnician().trim().split("[,\\s]+");
scDryMilk.getTechnicianList().addAll(Arrays.asList(techs));
}
startPage();
List<ScDryMilk> list = scDryMilkService.selectScDryMilkList(scDryMilk);
return getDataTable(list);
@@ -75,11 +83,21 @@ public class ScDryMilkController extends BaseController
public AjaxResult searchEarNumbers(@RequestParam(value = "query", required = false) String query)
{
if (query == null) query = "";
// 调用Service层
List<String> list = scDryMilkService.selectSheepEarNumberList(query);
return AjaxResult.success(list);
}
/**
* 远程搜索技术员列表
*/
@GetMapping("/searchTechnicians")
public AjaxResult searchTechnicians(@RequestParam(value = "query", required = false) String query)
{
if (query == null) query = "";
List<String> list = scDryMilkService.selectTechnicianList(query);
return AjaxResult.success(list);
}
/**
* 导出干奶记录列表
*/
@@ -89,10 +107,16 @@ public class ScDryMilkController extends BaseController
public void export(HttpServletResponse response, ScDryMilk scDryMilk)
{
try {
// 导出也需要支持多选查询
if (scDryMilk.getManageTags() != null) {
String[] tags = scDryMilk.getManageTags().trim().split("[,\\s]+");
scDryMilk.setManageTagsList(Arrays.asList(tags));
}
if (scDryMilk.getTecahnician() != null) {
String[] techs = scDryMilk.getTecahnician().trim().split("[,\\s]+");
scDryMilk.setTechnicianList(Arrays.asList(techs));
}
List<ScDryMilk> list = scDryMilkService.selectScDryMilkList(scDryMilk);
ExcelUtil<ScDryMilk> util = new ExcelUtil<ScDryMilk>(ScDryMilk.class);
util.exportExcel(response, list, "干奶记录数据");
@@ -122,7 +146,7 @@ public class ScDryMilkController extends BaseController
}
/**
* 新增干奶记录
* 新增干奶记录 (支持批量录入)
*/
@PreAuthorize("@ss.hasPermi('drymilk:drymilk:add')")
@Log(title = "干奶记录", businessType = BusinessType.INSERT)

View File

@@ -3,9 +3,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;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zhyc.common.annotation.Excel;
import com.zhyc.common.core.domain.BaseEntity;
@@ -15,9 +14,6 @@ import com.zhyc.common.core.domain.BaseEntity;
* @author ruoyi
* @date 2025-07-15
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ScDryMilk extends BaseEntity
{
private static final long serialVersionUID = 1L;
@@ -50,13 +46,13 @@ public class ScDryMilk extends BaseEntity
@Excel(name = "备注")
private String comment;
// --- 联表查询字段 ---
// --- 联表查询及辅助字段 ---
/** 管理耳号 (单个) */
/** 管理耳号 (单个,用于接收前端传参或导出显示) */
@Excel(name = "耳号")
private String manageTags;
/** 多耳号查询列表 (核心修改:用于接收前端多选的数组) */
/** 多耳号查询列表 (用于MyBatis IN查询) */
private List<String> manageTagsList;
/** 品种 */
@@ -70,4 +66,137 @@ public class ScDryMilk extends BaseEntity
/** 事件类型 */
@Excel(name = "事件类型")
private String eventType;
/** 技术员多选列表 (新增用于MyBatis IN查询) */
private List<String> technicianList;
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 String getManageTags() {
return manageTags;
}
public void setManageTags(String manageTags) {
this.manageTags = manageTags;
}
public List<String> getManageTagsList() {
return manageTagsList;
}
public void setManageTagsList(List<String> manageTagsList) {
this.manageTagsList = manageTagsList;
}
public String getVariety() {
return variety;
}
public void setVariety(String variety) {
this.variety = variety;
}
public String getSheepfoldName() {
return sheepfoldName;
}
public void setSheepfoldName(String sheepfoldName) {
this.sheepfoldName = sheepfoldName;
}
public String getEventType() {
return eventType;
}
public void setEventType(String eventType) {
this.eventType = eventType;
}
public List<String> getTechnicianList() {
return technicianList;
}
public void setTechnicianList(List<String> technicianList) {
this.technicianList = technicianList;
}
@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("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("comment", getComment())
.append("manageTags", getManageTags())
.append("variety", getVariety())
.append("sheepfoldName", getSheepfoldName())
.toString();
}
}

View File

@@ -59,9 +59,12 @@ public interface ScDryMilkMapper
public Long selectSheepIdByManageTags(String manageTags);
/**
* 远程搜索耳号列表 (新增)
* @param query 搜索关键字
* @return 耳号列表
* 远程搜索耳号列表
*/
public List<String> selectSheepEarNumberList(@Param("query") String query);
/**
* 远程搜索技术员列表
*/
public List<String> searchTechnicianList(@Param("query") String query);
}

View File

@@ -58,9 +58,12 @@ public interface IScDryMilkService
public Long selectSheepIdByManageTags(String manageTags);
/**
* 远程搜索耳号列表 (新增方法)
* @param query 搜索关键字
* @return 耳号列表
* 远程搜索耳号列表
*/
public List<String> selectSheepEarNumberList(String query);
/**
* 远程搜索技术员列表
*/
public List<String> selectTechnicianList(String query);
}

View File

@@ -72,13 +72,11 @@ public class ScDryMilkServiceImpl implements IScDryMilkService
@Override
public int deleteScDryMilkByIds(Long[] ids)
{
// 假设ids是Long数组需要转为String[]传给Mapper或者修改Mapper接收Long[]
// 这里根据Mapper XML通常接收String[]或Array的习惯做个转换
String[] stringIds = new String[ids.length];
for(int i=0;i<ids.length;i++){
stringIds[i] = String.valueOf(ids[i]);
String[] strIds = new String[ids.length];
for(int i=0; i<ids.length; i++){
strIds[i] = String.valueOf(ids[i]);
}
return scDryMilkMapper.deleteScDryMilkByIds(stringIds);
return scDryMilkMapper.deleteScDryMilkByIds(strIds);
}
/**
@@ -92,19 +90,18 @@ public class ScDryMilkServiceImpl implements IScDryMilkService
return scDryMilkMapper.deleteScDryMilkById(id);
}
/**
* 根据耳号查询羊只ID
*/
@Override
public Long selectSheepIdByManageTags(String manageTags) {
return scDryMilkMapper.selectSheepIdByManageTags(manageTags);
}
/**
* 远程搜索耳号列表 (新增实现)
*/
@Override
public List<String> selectSheepEarNumberList(String query) {
return scDryMilkMapper.selectSheepEarNumberList(query);
}
@Override
public List<String> selectTechnicianList(String query) {
return scDryMilkMapper.searchTechnicianList(query);
}
}

View File

@@ -34,24 +34,33 @@
<where>
<if test="manageTagsList != null and manageTagsList.size() > 0">
AND s.bs_manage_tags IN
<foreach collection="manageTagsList" item="item" open="(" separator="," close=")">
#{item}
<foreach collection="manageTagsList" item="tag" open="(" separator="," close=")">
#{tag}
</foreach>
</if>
<if test="(manageTagsList == null or manageTagsList.size() == 0) and manageTags != null and manageTags != ''">
AND s.bs_manage_tags like concat('%', #{manageTags}, '%')
</if>
<if test="technicianList != null and technicianList.size() > 0">
AND d.tecahnician IN
<foreach collection="technicianList" item="tech" open="(" separator="," close=")">
#{tech}
</foreach>
</if>
<if test="(technicianList == null or technicianList.size() == 0) and tecahnician != null and tecahnician != ''">
AND d.tecahnician like concat('%', #{tecahnician}, '%')
</if>
<if test="params.beginTime != null and params.beginTime != ''">
AND d.datetime &gt;= #{params.beginTime}
AND date_format(d.datetime,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
</if>
<if test="params.endTime != null and params.endTime != ''">
AND d.datetime &lt;= #{params.endTime}
AND date_format(d.datetime,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
</if>
<if test="status != null "> and d.status = #{status}</if>
<if test="sheepfold != null "> and d.sheepfold = #{sheepfold}</if>
<if test="tecahnician != null and tecahnician != ''"> and d.tecahnician like concat('%', #{tecahnician}, '%')</if>
<if test="variety != null and variety != ''"> and s.variety like concat('%', #{variety}, '%')</if>
</where>
order by d.datetime desc
@@ -64,6 +73,13 @@
LIMIT 20
</select>
<select id="searchTechnicianList" resultType="String">
SELECT nick_name
FROM sys_user
WHERE nick_name LIKE concat('%', #{query}, '%')
LIMIT 20
</select>
<select id="selectScDryMilkById" parameterType="Long" resultMap="ScDryMilkResult">
<include refid="selectScDryMilkVo"/>
where d.id = #{id}