干奶录入查询问题

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) public TableDataInfo list(ScDryMilk scDryMilk)
{ {
try { try {
// 兼容逻辑:如果前端传了字符串形式的耳号(如导出或老接口调用),也转为List // 处理耳号多选:将逗号/空格分隔的字符串转为List
if (scDryMilk.getManageTags() != null && !scDryMilk.getManageTags().trim().isEmpty()) { if (scDryMilk.getManageTags() != null && !scDryMilk.getManageTags().trim().isEmpty()) {
if (scDryMilk.getManageTagsList() == null) { if (scDryMilk.getManageTagsList() == null) {
scDryMilk.setManageTagsList(new ArrayList<>()); scDryMilk.setManageTagsList(new ArrayList<>());
} }
// 支持中文逗号、英文逗号、空格分割
String[] tags = scDryMilk.getManageTags().trim().split("[,\\s]+"); String[] tags = scDryMilk.getManageTags().trim().split("[,\\s]+");
scDryMilk.getManageTagsList().addAll(Arrays.asList(tags)); 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(); startPage();
List<ScDryMilk> list = scDryMilkService.selectScDryMilkList(scDryMilk); List<ScDryMilk> list = scDryMilkService.selectScDryMilkList(scDryMilk);
return getDataTable(list); return getDataTable(list);
@@ -75,11 +83,21 @@ public class ScDryMilkController extends BaseController
public AjaxResult searchEarNumbers(@RequestParam(value = "query", required = false) String query) public AjaxResult searchEarNumbers(@RequestParam(value = "query", required = false) String query)
{ {
if (query == null) query = ""; if (query == null) query = "";
// 调用Service层
List<String> list = scDryMilkService.selectSheepEarNumberList(query); List<String> list = scDryMilkService.selectSheepEarNumberList(query);
return AjaxResult.success(list); 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) public void export(HttpServletResponse response, ScDryMilk scDryMilk)
{ {
try { try {
// 导出也需要支持多选查询
if (scDryMilk.getManageTags() != null) { if (scDryMilk.getManageTags() != null) {
String[] tags = scDryMilk.getManageTags().trim().split("[,\\s]+"); String[] tags = scDryMilk.getManageTags().trim().split("[,\\s]+");
scDryMilk.setManageTagsList(Arrays.asList(tags)); 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); List<ScDryMilk> list = scDryMilkService.selectScDryMilkList(scDryMilk);
ExcelUtil<ScDryMilk> util = new ExcelUtil<ScDryMilk>(ScDryMilk.class); ExcelUtil<ScDryMilk> util = new ExcelUtil<ScDryMilk>(ScDryMilk.class);
util.exportExcel(response, list, "干奶记录数据"); util.exportExcel(response, list, "干奶记录数据");
@@ -122,7 +146,7 @@ public class ScDryMilkController extends BaseController
} }
/** /**
* 新增干奶记录 * 新增干奶记录 (支持批量录入)
*/ */
@PreAuthorize("@ss.hasPermi('drymilk:drymilk:add')") @PreAuthorize("@ss.hasPermi('drymilk:drymilk:add')")
@Log(title = "干奶记录", businessType = BusinessType.INSERT) @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.Date;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor; import org.apache.commons.lang3.builder.ToStringBuilder;
import lombok.Data; import org.apache.commons.lang3.builder.ToStringStyle;
import lombok.NoArgsConstructor;
import com.zhyc.common.annotation.Excel; import com.zhyc.common.annotation.Excel;
import com.zhyc.common.core.domain.BaseEntity; import com.zhyc.common.core.domain.BaseEntity;
@@ -15,9 +14,6 @@ import com.zhyc.common.core.domain.BaseEntity;
* @author ruoyi * @author ruoyi
* @date 2025-07-15 * @date 2025-07-15
*/ */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ScDryMilk extends BaseEntity public class ScDryMilk extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -50,13 +46,13 @@ public class ScDryMilk extends BaseEntity
@Excel(name = "备注") @Excel(name = "备注")
private String comment; private String comment;
// --- 联表查询字段 --- // --- 联表查询及辅助字段 ---
/** 管理耳号 (单个) */ /** 管理耳号 (单个,用于接收前端传参或导出显示) */
@Excel(name = "耳号") @Excel(name = "耳号")
private String manageTags; private String manageTags;
/** 多耳号查询列表 (核心修改:用于接收前端多选的数组) */ /** 多耳号查询列表 (用于MyBatis IN查询) */
private List<String> manageTagsList; private List<String> manageTagsList;
/** 品种 */ /** 品种 */
@@ -70,4 +66,137 @@ public class ScDryMilk extends BaseEntity
/** 事件类型 */ /** 事件类型 */
@Excel(name = "事件类型") @Excel(name = "事件类型")
private String eventType; 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); public Long selectSheepIdByManageTags(String manageTags);
/** /**
* 远程搜索耳号列表 (新增) * 远程搜索耳号列表
* @param query 搜索关键字
* @return 耳号列表
*/ */
public List<String> selectSheepEarNumberList(@Param("query") String query); 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); public Long selectSheepIdByManageTags(String manageTags);
/** /**
* 远程搜索耳号列表 (新增方法) * 远程搜索耳号列表
* @param query 搜索关键字
* @return 耳号列表
*/ */
public List<String> selectSheepEarNumberList(String query); public List<String> selectSheepEarNumberList(String query);
/**
* 远程搜索技术员列表
*/
public List<String> selectTechnicianList(String query);
} }

View File

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

View File

@@ -34,24 +34,33 @@
<where> <where>
<if test="manageTagsList != null and manageTagsList.size() > 0"> <if test="manageTagsList != null and manageTagsList.size() > 0">
AND s.bs_manage_tags IN AND s.bs_manage_tags IN
<foreach collection="manageTagsList" item="item" open="(" separator="," close=")"> <foreach collection="manageTagsList" item="tag" open="(" separator="," close=")">
#{item} #{tag}
</foreach> </foreach>
</if> </if>
<if test="(manageTagsList == null or manageTagsList.size() == 0) and manageTags != null and manageTags != ''"> <if test="(manageTagsList == null or manageTagsList.size() == 0) and manageTags != null and manageTags != ''">
AND s.bs_manage_tags like concat('%', #{manageTags}, '%') AND s.bs_manage_tags like concat('%', #{manageTags}, '%')
</if> </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 != ''"> <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>
<if test="params.endTime != null and params.endTime != ''"> <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>
<if test="status != null "> and d.status = #{status}</if> <if test="status != null "> and d.status = #{status}</if>
<if test="sheepfold != null "> and d.sheepfold = #{sheepfold}</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> <if test="variety != null and variety != ''"> and s.variety like concat('%', #{variety}, '%')</if>
</where> </where>
order by d.datetime desc order by d.datetime desc
@@ -64,6 +73,13 @@
LIMIT 20 LIMIT 20
</select> </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"> <select id="selectScDryMilkById" parameterType="Long" resultMap="ScDryMilkResult">
<include refid="selectScDryMilkVo"/> <include refid="selectScDryMilkVo"/>
where d.id = #{id} where d.id = #{id}