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