Browse Source

企业端-投诉事项接口

dev-V1.0.1
niujiyi 6 months ago
parent
commit
5ef1d3ce50
  1. 11
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnterpriseComplaintController.java
  2. 10
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/enterprise/AppEnterpriseComplaintBo.java
  3. 31
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/enterprise/AppEnterpriseComplaintVo.java
  4. 2
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java
  5. 44
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/enterprise/AppEnterpriseComplaintMapper.java
  6. 7
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enterprise/IAppEnterpriseComplaintService.java
  7. 263
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enterprise/impl/AppEnterpriseComplaintServiceImpl.java
  8. 157
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/AppEnterpriseComplaintMapper.xml

11
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnterpriseComplaintController.java

@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
@ -66,12 +67,18 @@ public class AppEnterpriseComplaintController extends BaseController {
/**
* 企业端-投诉建议-查询行政和非行政未被投诉列表
* @param
* @return
* @param bo 查询条件(包含企业信用代码 enterpriseNumber)
* @param pageQuery 分页参数
* @return 分页结果
*/
@ApiResponse(description = "投诉建议-行政和非行政未被投诉列表")
@GetMapping("/listNotComplaint")
public TableDataInfo<AppEnterpriseComplaintVo> listNotComplaint(@ModelAttribute AppEnterpriseComplaintBo bo, PageQuery pageQuery) {
// 校验企业信用代码
if (StringUtils.isBlank(bo.getEnterpriseNumber())) {
throw new IllegalArgumentException("企业信用代码不能为空");
}
TableDataInfo<AppEnterpriseComplaintVo> list = appEnterpriseComplaintService.getAllCheckList(bo, pageQuery);
return list;
}

10
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/enterprise/AppEnterpriseComplaintBo.java

@ -149,6 +149,16 @@ public class AppEnterpriseComplaintBo extends BaseEntity {
*/
private Long recordType;
/**
* 开始时间(执法时间范围起始)
*/
private Date beginTime;
/**
* 结束时间(执法时间范围结束)
*/
private Date endTime;
/**
* 文件列表-
*/

31
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/enterprise/AppEnterpriseComplaintVo.java

@ -170,6 +170,37 @@ public class AppEnterpriseComplaintVo implements Serializable {
@ExcelProperty(value = "数据类型 0行政 1 非行政")
private Long recordType;
/**
* 执法类别代码(用于显示转换后的中文名称)
*/
@ExcelProperty(value = "执法类别")
private String checkCategoryCode;
/**
* 执法人员1 ID
*/
private String lawEnforcerId;
/**
* 其他执法人员姓名
*/
private String lawEnforcerTwo;
/**
* 其他执法人员电话
*/
private String linkmanTelTwo;
/**
* 其他执法人员2 ID
*/
private String lawEnforcerIdTwo;
/**
* 其他执法人员2展示列表(姓名+执法证号)
*/
private List<String> lawEnforcer2List;
/**
* 文件列表
*/

2
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java

@ -26,6 +26,6 @@ public interface EnforcementRegistrationMapper extends BaseMapperPlus<Enforcemen
* @return 执法登记列表
*/
@InterceptorIgnore(dataPermission = "true")
IPage<EnforcementRegistrationListVo> selectEnforcementRegistrationPage(@Param("page") Page<EnforcementRegistrationListVo> page, @Param("bo") EnforcementRegistrationQueryBo dto);
IPage<EnforcementRegistrationListVo> selectEnforcementRegistrationPage(@Param("page") Page<EnforcementRegistrationListVo> page, @Param("bo") EnforcementRegistrationQueryBo bo);
}

44
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/enterprise/AppEnterpriseComplaintMapper.java

@ -1,8 +1,52 @@
package com.zdxt.enforcementcode.mapper.enterprise;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zdxt.enforcementcode.domain.EnterpriseComplaint;
import com.zdxt.enforcementcode.domain.vo.enterprise.AppEnterpriseComplaintVo;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.Date;
import java.util.List;
public interface AppEnterpriseComplaintMapper extends BaseMapperPlus<EnterpriseComplaint, AppEnterpriseComplaintVo> {
/**
* 查询行政和非行政未被投诉的检查记录列表(UNION ALL合并两个表)
* @param enterpriseNumber 企业信用代码
* @param searchValue 关键字搜索
* @param checkCategoryCode 执法类别代码
* @param beginTime 开始时间
* @param endTime 结束时间
* @param deptList 部门ID列表
* @return 检查结果列表
*/
List<AppEnterpriseComplaintVo> selectAllCheckList(
@Param("enterpriseNumber") String enterpriseNumber,
@Param("searchValue") String searchValue,
@Param("checkCategoryCode") String checkCategoryCode,
@Param("beginTime") Date beginTime,
@Param("endTime") Date endTime,
@Param("deptList") List<String> deptList,
Page<AppEnterpriseComplaintVo> page
);
/**
* 统计行政和非行政未被投诉的检查记录总数
* @param enterpriseNumber 企业信用代码
* @param searchValue 关键字搜索
* @param checkCategoryCode 执法类别代码
* @param beginTime 开始时间
* @param endTime 结束时间
* @param deptList 部门ID列表
* @return 总数
*/
Long countAllCheckList(
@Param("enterpriseNumber") String enterpriseNumber,
@Param("searchValue") String searchValue,
@Param("checkCategoryCode") String checkCategoryCode,
@Param("beginTime") Date beginTime,
@Param("endTime") Date endTime,
@Param("deptList") List<String> deptList
);
}

7
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enterprise/IAppEnterpriseComplaintService.java

@ -57,8 +57,9 @@ public interface IAppEnterpriseComplaintService {
/**
* 企业端-投诉建议查询行政和非行政未被投诉列表
* @param pageQuery
* @return
* @param bo 查询条件(包含企业信用代码、关键字、时间范围等)
* @param pageQuery 分页参数
* @return 分页结果
*/
TableDataInfo<AppEnterpriseComplaintVo> getAllCheckList(AppEnterpriseComplaintBo bo,PageQuery pageQuery);
TableDataInfo<AppEnterpriseComplaintVo> getAllCheckList(AppEnterpriseComplaintBo bo, PageQuery pageQuery);
}

263
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/enterprise/impl/AppEnterpriseComplaintServiceImpl.java

@ -26,11 +26,16 @@ import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.domain.vo.SysDictDataVo;
import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysDictDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
* 企业执法-在线投诉Service业务层处理
@ -51,6 +56,12 @@ public class AppEnterpriseComplaintServiceImpl implements IAppEnterpriseComplain
@Autowired
private ZdxtFileMapper zdxtFileMapper;
@Autowired
private ISysDictDataService dictTypeService;
@Autowired
private ISysDeptService deptService;
/**
* 企业端-投诉建议详情
*
@ -181,59 +192,231 @@ public class AppEnterpriseComplaintServiceImpl implements IAppEnterpriseComplain
*/
@Override
public TableDataInfo<AppEnterpriseComplaintVo> getAllCheckList(AppEnterpriseComplaintBo bo, PageQuery pageQuery) {
// 构建查询条件
LambdaQueryWrapper<EnterpriseComplaint> lqw = Wrappers.lambdaQuery();
// 1. 调用 setDept() 处理部门过滤(从投诉事项编码提取信用代码查部门)
List<String> deptList = setDept(bo.getComplaintItemCodes());
// 2. 获取"check_category"字典数据,构建Map映射
Map<String, String> checkCategoryMap = getCheckCategoryMap();
// 3. 处理关键字搜索(匹配执法类别中文名称)
String checkCategoryCode = processSearchValue(bo.getSearchValue(), checkCategoryMap);
// 4. 调用 Mapper 查询数据库
Page<AppEnterpriseComplaintVo> page = pageQuery.build();
List<AppEnterpriseComplaintVo> list = baseMapper.selectAllCheckList(
bo.getEnterpriseNumber(),
bo.getSearchValue(),
checkCategoryCode,
bo.getBeginTime(),
bo.getEndTime(),
deptList,
page
);
// 5. 设置总数
Long total = baseMapper.countAllCheckList(
bo.getEnterpriseNumber(),
bo.getSearchValue(),
checkCategoryCode,
bo.getBeginTime(),
bo.getEndTime(),
deptList
);
page.setRecords(list);
page.setTotal(total);
// 6. 对返回数据进行转换
List<AppEnterpriseComplaintVo> records = page.getRecords();
if (records != null && !records.isEmpty()) {
convertResultData(records, checkCategoryMap);
}
// 根据 relId 过滤
lqw.eq(StringUtils.isNotBlank(bo.getRelId()), EnterpriseComplaint::getRelId, bo.getRelId());
return TableDataInfo.build(page);
}
// 根据搜索值模糊查询(问题描述、联系人、企业名称等)
if (StringUtils.isNotBlank(bo.getSearchValue())) {
lqw.and(wrapper -> wrapper
.like(EnterpriseComplaint::getProblemDescription, bo.getSearchValue())
.or()
.like(EnterpriseComplaint::getLinkman, bo.getSearchValue())
.or()
.like(EnterpriseComplaint::getEnterpriseName, bo.getSearchValue())
);
/**
* 处理部门过滤:从投诉事项编码提取信用代码查部门
* @param complaintItemCodes 投诉事项编码,多个逗号隔开
* @return 部门ID列表
*/
private List<String> setDept(String complaintItemCodes) {
// 判断 complaintItemCodes 是否为空
if (StringUtils.isBlank(complaintItemCodes)) {
return Collections.emptyList();
}
// 根据执法类型过滤
lqw.eq(bo.getEnforceType() != null, EnterpriseComplaint::getEnforceType, bo.getEnforceType());
// 解析编码字符串为 List<String>
String[] codes = complaintItemCodes.split(",");
List<String> deptList = new ArrayList<>();
// 根据投诉类型过滤
lqw.eq(bo.getComplaintType() != null, EnterpriseComplaint::getComplaintType, bo.getComplaintType());
// 遍历每个编码
for (String c : codes) {
if (StringUtils.isBlank(c)) {
continue;
}
// 根据数据类型过滤(0行政 1非行政)
lqw.eq(bo.getRecordType() != null, EnterpriseComplaint::getRecordType, bo.getRecordType());
try {
// 截取前18位作为信用代码(统一社会信用代码固定18位)
String creditCode = c.trim();
if (creditCode.length() > 18) {
creditCode = creditCode.substring(0, 18);
}
SysDeptVo dept = deptService.selectDeptByCreditcode(creditCode);
// 根据状态过滤
lqw.eq(bo.getStatus() != null, EnterpriseComplaint::getStatus, bo.getStatus());
// 查询结果是否为空
if (dept != null && StringUtils.isNotBlank(dept.getDeptId())) {
// 添加到 deptList
deptList.add(dept.getDeptId());
}
} catch (Exception e) {
log.warn("根据信用代码[{}]查询部门失败: {}", c, e.getMessage());
}
}
// 按创建时间降序排列
lqw.orderByDesc(EnterpriseComplaint::getCreateTime);
// 所有编码处理完成,设置 param.setDeptList(deptList)
return deptList;
}
// 执行分页查询
Page<AppEnterpriseComplaintVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
/**
* 获取执法类别字典映射
* @return key=字典值, value=字典标签
*/
private Map<String, String> getCheckCategoryMap() {
List<SysDictDataVo> dictList = dictTypeService.selectDictDataByType("check_category");
if (dictList == null || dictList.isEmpty()) {
return Collections.emptyMap();
}
return dictList.stream()
.collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel, (a, b) -> a));
}
// 处理字典转换和执法人员信息(如果需要)
List<AppEnterpriseComplaintVo> records = result.getRecords();
if (records != null && !records.isEmpty()) {
records.forEach(vo -> {
// 这里可以添加字典转换逻辑
// 例如:执法类型、投诉类型等的字典值转换
// 如果有附件,查询附件列表
if (vo.getId() != null) {
LambdaQueryWrapper<ZdxtFile> fileLqw = Wrappers.lambdaQuery();
fileLqw.eq(ZdxtFile::getBusinessId, vo.getId());
List<ZdxtFileVo> fileList = zdxtFileMapper.selectVoList(fileLqw);
vo.setFileList(fileList);
/**
* 处理关键字搜索,匹配执法类别中文名称
* @param searchValue 搜索关键字
* @param checkCategoryMap 执法类别字典映射
* @return 匹配的执法类别代码
*/
private String processSearchValue(String searchValue, Map<String, String> checkCategoryMap) {
if (StringUtils.isBlank(searchValue) || checkCategoryMap.isEmpty()) {
return null;
}
// 遍历字典,查找匹配的执法类别代码
for (Map.Entry<String, String> entry : checkCategoryMap.entrySet()) {
if (entry.getValue().contains(searchValue)) {
return entry.getKey();
}
}
return null;
}
/**
* 转换结果数据
* @param records 查询结果列表
* @param checkCategoryMap 执法类别字典映射
*/
private void convertResultData(List<AppEnterpriseComplaintVo> records, Map<String, String> checkCategoryMap) {
for (AppEnterpriseComplaintVo vo : records) {
// 执法类别代码 → 中文名称
if (StringUtils.isNotBlank(vo.getCheckCategoryCode()) && checkCategoryMap.containsKey(vo.getCheckCategoryCode())) {
vo.setCheckCategoryCode(checkCategoryMap.get(vo.getCheckCategoryCode()));
}
// 执法人员ID → 姓名+执法证号/加密手机号
if (StringUtils.isNotBlank(vo.getLawEnforcerId())) {
vo.setLinkman(formatLawEnforcer(vo.getLawEnforcerId(), vo.getLinkman(), vo.getLinkmanTel()));
}
// 其他执法人员ID → 姓名+证件号列表
if (StringUtils.isNotBlank(vo.getLawEnforcerIdTwo())) {
List<String> enforcerList = formatOtherLawEnforcers(
vo.getLawEnforcerIdTwo(),
vo.getLawEnforcerTwo(),
vo.getLinkmanTelTwo()
);
vo.setLawEnforcer2List(enforcerList);
}
// 查询附件列表
if (vo.getId() != null) {
LambdaQueryWrapper<ZdxtFile> fileLqw = Wrappers.lambdaQuery();
fileLqw.eq(ZdxtFile::getBusinessId, vo.getId());
List<ZdxtFileVo> fileList = zdxtFileMapper.selectVoList(fileLqw);
vo.setFileList(fileList);
}
}
}
/**
* 格式化执法人员信息
* @param enforcerId 执法人员ID
* @param enforcerName 执法人员姓名
* @param enforcerTel 执法人员电话
* @return 格式化后的执法人员信息
*/
private String formatLawEnforcer(String enforcerId, String enforcerName, String enforcerTel) {
StringBuilder sb = new StringBuilder();
if (StringUtils.isNotBlank(enforcerName)) {
sb.append(enforcerName);
}
if (StringUtils.isNotBlank(enforcerTel)) {
if (sb.length() > 0) {
sb.append("-");
}
// 加密手机号或执法证号
sb.append(encryptPhone(enforcerTel));
}
return sb.toString();
}
/**
* 格式化其他执法人员列表
* @param enforcerIds 其他执法人员ID(多个逗号分隔)
* @param enforcerNames 其他执法人员姓名(多个逗号分隔)
* @param enforcerTels 其他执法人员电话(多个逗号分隔)
* @return 格式化后的执法人员列表
*/
private List<String> formatOtherLawEnforcers(String enforcerIds, String enforcerNames, String enforcerTels) {
List<String> result = new ArrayList<>();
if (StringUtils.isBlank(enforcerIds)) {
return result;
}
String[] idArray = enforcerIds.split(",");
String[] nameArray = enforcerNames != null ? enforcerNames.split(",") : new String[]{};
String[] telArray = enforcerTels != null ? enforcerTels.split(",") : new String[]{};
for (int i = 0; i < idArray.length; i++) {
StringBuilder sb = new StringBuilder();
if (i < nameArray.length && StringUtils.isNotBlank(nameArray[i])) {
sb.append(nameArray[i]);
}
if (i < telArray.length && StringUtils.isNotBlank(telArray[i])) {
if (sb.length() > 0) {
sb.append("-");
}
});
sb.append(telArray[i]);
}
if (sb.length() > 0) {
result.add(sb.toString());
}
}
return TableDataInfo.build(result);
return result;
}
/**
* 加密手机号
* @param phone 手机号
* @return 加密后的手机号
*/
private String encryptPhone(String phone) {
if (StringUtils.isBlank(phone) || phone.length() < 7) {
return phone;
}
// 将中间4位替换为****
return phone.substring(0, 3) + "****" + phone.substring(7);
}
}

157
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/AppEnterpriseComplaintMapper.xml

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zdxt.enforcementcode.mapper.enterprise.AppEnterpriseComplaintMapper">
<!-- 查询行政和非行政未被投诉的检查记录列表 -->
<select id="selectAllCheckList" resultType="com.zdxt.enforcementcode.domain.vo.enterprise.AppEnterpriseComplaintVo">
SELECT * FROM (
<!-- 行政检查 -->
SELECT
er.id,
er.law_enforcer AS lawEnforcer,
er.law_enforcer_id AS lawEnforcerId,
er.law_enforcer_id_two AS lawEnforcerOtherId,
er.law_enforcer_two AS lawEnforcerOther,
er.law_enforcement_item_text AS title,
er.check_category AS lawEnforcementType,
0 AS dataType,
er.bureau_dept_id AS bureauDeptId,
er.bureau_dept_name AS bureauDeptName ,
er.enforcement_time as enforcementTime
FROM enforcement_registration er
WHERE er.is_submit = 1
AND er.is_complaint = 0
AND er.enterprise_number = #{enterpriseNumber}
<if test="checkCategoryCode != null and checkCategoryCode != ''">
AND er.check_category = #{checkCategoryCode}
</if>
<if test="beginTime != null">
AND er.enforcement_time &gt;= #{beginTime}
</if>
<if test="endTime != null">
AND er.enforcement_time &lt;= #{endTime}
</if>
<if test="deptList != null and deptList.size() > 0">
AND er.dept_id IN
<foreach collection="deptList" item="deptId" open="(" separator="," close=")">
#{deptId}
</foreach>
</if>
UNION ALL
<!-- 非行政检查 -->
SELECT
ner.id,
ner.law_enforcer AS lawEnforcer,
ner.law_enforcer_id AS lawEnforcerId,
ner.law_enforcer_id_other AS lawEnforcerOtherId,
ner.law_enforcer_other AS lawEnforcerOther,
ner.law_enforcement_item_text AS title,
ner.law_enforcement_type_text AS lawEnforcementType,
1 AS dataType,
ner.bureau_dept_id AS bureauDeptId,
ner.bureau_dept_name AS bureauDeptName,
ner.enforcement_time as enforcementTime
FROM non_enforcement_registration ner
WHERE ner.has_submit = 1
AND ner.has_complaint = 0
AND ner.enterprise_number = #{enterpriseNumber}
<if test="beginTime != null">
AND ner.enforcement_time &gt;= #{beginTime}
</if>
<if test="endTime != null">
AND ner.enforcement_time &lt;= #{endTime}
</if>
<if test="deptList != null and deptList.size() > 0">
AND ner.law_enforcer_id IN
<foreach collection="deptList" item="deptId" open="(" separator="," close=")">
#{deptId}
</foreach>
</if>
) combined
<!-- 关键字搜索 -->
<if test="searchValue != null and searchValue != ''">
WHERE complaintRecordItem LIKE CONCAT('%', #{searchValue}, '%')
OR complaintDepartments LIKE CONCAT('%', #{searchValue}, '%')
OR linkman LIKE CONCAT('%', #{searchValue}, '%')
OR enterpriseName LIKE CONCAT('%', #{searchValue}, '%')
</if>
ORDER BY enforcementTime DESC
</select>
<!-- 统计行政和非行政未被投诉的检查记录总数 -->
<select id="countAllCheckList" resultType="java.lang.Long">
SELECT COUNT(*) FROM (
<!-- 行政检查 -->
SELECT er.id
FROM enforcement_registration er
WHERE er.is_submit = 1
AND er.is_complaint = 0
AND er.enterprise_number = #{enterpriseNumber}
<if test="checkCategoryCode != null and checkCategoryCode != ''">
AND er.check_category = #{checkCategoryCode}
</if>
<if test="beginTime != null">
AND er.enforcement_time &gt;= #{beginTime}
</if>
<if test="endTime != null">
AND er.enforcement_time &lt;= #{endTime}
</if>
<if test="deptList != null and deptList.size() > 0">
AND er.dept_id IN
<foreach collection="deptList" item="deptId" open="(" separator="," close=")">
#{deptId}
</foreach>
</if>
UNION ALL
<!-- 非行政检查 -->
SELECT ner.id
FROM non_enforcement_registration ner
WHERE ner.has_submit = 1
AND ner.has_complaint = 0
AND ner.enterprise_number = #{enterpriseNumber}
<if test="beginTime != null">
AND ner.enforcement_time &gt;= #{beginTime}
</if>
<if test="endTime != null">
AND ner.enforcement_time &lt;= #{endTime}
</if>
<if test="deptList != null and deptList.size() > 0">
AND ner.law_enforcer_id IN
<foreach collection="deptList" item="deptId" open="(" separator="," close=")">
#{deptId}
</foreach>
</if>
) combined
<!-- 关键字搜索 -->
<if test="searchValue != null and searchValue != ''">
WHERE complaintRecordItem LIKE CONCAT('%', #{searchValue}, '%')
OR complaintDepartments LIKE CONCAT('%', #{searchValue}, '%')
OR linkman LIKE CONCAT('%', #{searchValue}, '%')
OR enterpriseName LIKE CONCAT('%', #{searchValue}, '%')
</if>
</select>
</mapper>
Loading…
Cancel
Save