修改路径

This commit is contained in:
haozq 2024-03-27 17:35:22 +08:00
parent 35da115d83
commit ab6a0b43df
19 changed files with 744 additions and 17 deletions

View File

@ -23,6 +23,7 @@ public class AreaDto {
*/
private String areaId;
private String keyWord;
}

View File

@ -55,6 +55,11 @@ public class AreaVo {
* 杆塔名称
*/
private String gtName;
/**
* 是否是有些爱你空间
*/
private String areaType;

View File

@ -0,0 +1,60 @@
package com.securitycontrol.entity.background.vo;
import lombok.Data;
/**
* 工程杆塔信息
* @author 黑子
*/
@Data
public class GtVo {
/**
* 杆塔名称
*/
private String gtName;
/**
*
*/
private String lat;
private String lon;
/**
* 杆塔编号
*/
private String gtCode;
/**
* 杆塔id
*/
private String gtId;
/**
* 标段编码
*/
private String bidCode;
/**
*工程名称
*/
private String proName;
/**
* 当前工序id
*/
private String nowGx;
/**
* 更新时间
*/
private String updateTime;
/**
* 创建时间
*/
private String createTime;
/**
* 工序名称
*/
private String gxName;
/**
* 关键字名称
*/
private String keyWord;
}

View File

@ -0,0 +1,105 @@
package com.securitycontrol.entity.background.vo;
import lombok.Data;
/**
* @author 黑子
*/
@Data
public class UserProVo {
/**
* 用户id
*/
private String userId;
/**
* 用户名称
*/
private String userName;
/**
* 登录名称
*/
private String loginName;
/**
* 标段编码
*/
private String bidCode;
/**
* 标段名称
*/
private String bidName;
/**
* 状态
*/
private String status;
/**
* 角色名称
*/
private String roleName;
/**
* 工程数量
*/
private String proNum;
/**
* 部门名称
*/
private String deptName;
/**
* 类型
*/
private String type;
private String orgId;
/**
* 组织机构名称
*/
private String orgName;
/**
* 地市名称
*/
private String cityName;
/**
* 关键字
*/
private String keyWord;
/**
* 监理单位
*/
private String jlUnit;
/**
* 施工单位
*/
private String sgUnit;
/**
* 计划开始时间
*/
private String planStartTime;
/**
* 计划结束时间
*/
private String planEndTime;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
/**
* 工程类型1
*/
private String proType;
/**
* 项目经理
*/
private String manager;
/**
* 当前工序
*/
private String nowGx;
/**
* 角色类型
*/
private String roleCode;
}

View File

@ -15,13 +15,24 @@ public class SystemGlobal {
* 成功数据数量
*/
public final static int SUCCESS_NUM=1;
/**
* 地市
*/
public final static String ROLE_DS="city";
/**
* 值班员
*/
public final static String ROLE_ZB="duty";
/**
* 项目经理
*/
public final static String ROLE_MANAGE="manager";
/**
* 管理员
*/
public final static String ROLE_MAIN="administrators";
public final static String BODY_ERROR="Required request body is missing:";
}

View File

@ -32,6 +32,10 @@ public class GlobalExceptionHandler
{
private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
public final static String BODY_ERROR="Required request body is missing:";
public final static String DATA_ERROR="Data truncation: Data too long for";
/**
* 权限码异常
*/
@ -83,8 +87,16 @@ public class GlobalExceptionHandler
* 拦截未知的运行时异常
*/
@ExceptionHandler(RuntimeException.class)
public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request)
{
public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request) {
String msg=e.getMessage();
if (StringUtils.hasText(msg)) {
if (msg.contains(BODY_ERROR)){
return AjaxResult.error("post请求body参数不能为空");
}
if (msg.contains(DATA_ERROR)){
return AjaxResult.error("数据长度过长");
}
}
String requestUri = request.getRequestURI();
log.error("请求地址'{}',发生未知异常.", requestUri, e);
return AjaxResult.error(e.getMessage());
@ -94,8 +106,8 @@ public class GlobalExceptionHandler
* 系统异常
*/
@ExceptionHandler(Exception.class)
public AjaxResult handleException(Exception e, HttpServletRequest request)
{
public AjaxResult handleException(Exception e, HttpServletRequest request) {
String requestUri = request.getRequestURI();
log.error("请求地址'{}',发生系统异常.", requestUri, e);
return AjaxResult.error(e.getMessage());

View File

@ -45,7 +45,14 @@ class RsaDecryptResponseGatewayFilterFactory extends AbstractGatewayFilterFactor
@Override
public GatewayFilter apply(Object config) {
return (exchange, chain) -> {
ServerHttpRequest serverHttpRequest = exchange.getRequest();
String head= serverHttpRequest.getHeaders().getFirst("decrypt");
if(StringHelper.isNotEmpty(head)&& "decrypt".equals(head)){
return chain.filter(exchange);
}
if(!AQ_JM){
return chain.filter(exchange);
}

View File

@ -11,6 +11,7 @@ import com.securitycontrol.entity.background.dto.AreaDto;
import com.securitycontrol.entity.background.dto.DeviceDto;
import com.securitycontrol.entity.background.vo.AreaVo;
import com.securitycontrol.entity.background.vo.DeviceVo;
import com.securitycontrol.entity.background.vo.GtVo;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -22,6 +23,7 @@ import java.util.List;
/**
* 区域管理接口
* 杆塔 管理接口
* @author 黑子
*/
@RestController
@ -47,6 +49,34 @@ public class TbAreaController extends BaseController {
}
}
@ApiOperation(value = "查询杆塔列表")
@GetMapping("getGtList")
@Log(title = "杆塔管理", menu = "基础管理->区域管理", grade = OperationType.QUERY_BUSINESS, details = "查询杆塔信息", type = "业务日志")
public TableDataInfo getGtList(AreaDto dto) {
try{
startPage();
List<GtVo> list = service.getGtList(dto);
return getDataTable(list);
}catch (Exception e){
log.error(e.toString(),e);
return getDataTableBad(new ArrayList<>(),"请求出错了");
}
}
/**
* 新增区域
*
* @param dto
* @return
*/
@PostMapping("addGtData")
@Log(title = "新增区域", menu = "基础管理->区域管理", grade = OperationType.QUERY_BUSINESS, details = "新增区域", type = "业务日志")
public Result<String> addGtData(@RequestBody @Valid GtVo dto) {
return service.addGtData(dto);
}
/**
* 新增区域
*

View File

@ -0,0 +1,97 @@
package com.securitycontrol.background.controller;
import com.securitycontrol.background.service.DeviceService;
import com.securitycontrol.background.service.UserProService;
import com.securitycontrol.common.core.domain.Result;
import com.securitycontrol.common.core.web.controller.BaseController;
import com.securitycontrol.common.core.web.page.TableDataInfo;
import com.securitycontrol.common.log.annotation.Log;
import com.securitycontrol.common.log.enums.OperationType;
import com.securitycontrol.entity.background.dto.DeviceDto;
import com.securitycontrol.entity.background.vo.DeviceVo;
import com.securitycontrol.entity.background.vo.UserProVo;
import com.securitycontrol.entity.system.SystemGlobal;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
/**
* 用户工程 分配
* 接口层
* @author 黑子
*/
@RestController
@RequestMapping("/user/pro/")
@Slf4j
public class UserProController extends BaseController {
@Autowired
private UserProService service;
@GetMapping("getUserList")
@Log(title = "用户分配", menu = "基础管理->用户分配", grade = OperationType.QUERY_BUSINESS, details = "查询用户分配列表", type = "业务日志")
public TableDataInfo getUserList(UserProVo dto) {
try{
dto.setRoleCode(SystemGlobal.ROLE_MANAGE);
startPage();
List<UserProVo> list = service.getUserList(dto);
return getDataTable(list);
}catch (Exception e){
log.error(e.toString(),e);
return getDataTableBad(new ArrayList<>(),"请求出错了");
}
}
@GetMapping("getFpProList")
public TableDataInfo getFpProList(UserProVo dto) {
try{
startPage();
List<UserProVo> list = service.getFpProList(dto);
return getDataTable(list);
}catch (Exception e){
log.error(e.toString(),e);
return getDataTableBad(new ArrayList<>(),"请求出错了");
}
}
@GetMapping("getProList")
public TableDataInfo getProList(UserProVo dto) {
try{
startPage();
List<UserProVo> list = service.getProList(dto);
return getDataTable(list);
}catch (Exception e){
log.error(e.toString(),e);
return getDataTableBad(new ArrayList<>(),"请求出错了");
}
}
/**
* 新增用户工程
* @param dto
* @return
*/
@PostMapping("addUserPro")
@Log(title = "分配工程", menu = "设备管理->新增设备", grade = OperationType.QUERY_BUSINESS, details = "分配工程", type = "业务日志")
public Result<String> addUserPro(@RequestBody @Valid UserProVo dto) {
return service.addUserPro(dto);
}
/**
* 删除 工程
* @param dto
* @return
*/
@PostMapping("delUserPro")
@Log(title = "移除工程", menu = "设备管理->新增设备", grade = OperationType.QUERY_BUSINESS, details = "移除已分配的工程", type = "业务日志")
public Result<String> delUserPro(@RequestBody @Valid UserProVo dto) {
return service.delUserPro(dto);
}
}

View File

@ -2,6 +2,7 @@ package com.securitycontrol.background.mapper;
import com.securitycontrol.entity.background.dto.AreaDto;
import com.securitycontrol.entity.background.vo.AreaVo;
import com.securitycontrol.entity.background.vo.GtVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@ -47,4 +48,11 @@ public interface TbAreaMapper {
* @return
*/
int deleteArea(@Param("areaId") String id);
/**
* 查询杆塔信息
* @param dto
* @return
*/
List<GtVo> getGtList(AreaDto dto);
}

View File

@ -0,0 +1,50 @@
package com.securitycontrol.background.mapper;
import com.securitycontrol.entity.background.vo.UserProVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 用户工程 分配
* @author 黑子
*/
@Repository
public interface UserProMapper {
/**
* 查询用户结合
* @param dto
* @return
*/
List<UserProVo> getUserList(UserProVo dto);
/**
* 已分配用户信息集合
* @param dto
* @return
*/
List<UserProVo> getFpProList(UserProVo dto);
/**
* 查询未分配的工程数据
* @param dto
* @return
*/
List<UserProVo> getProList(UserProVo dto);
/**
* 删除已分配的用户编码
* @param userId
* @param bidCode
*/
void deleteUserProByCode(@Param("userId") String userId,@Param("bidCode") String bidCode);
/**
* 新增用户 工程
* @param userId
* @param bidCode
*/
void addUserPro(@Param("userId")String userId, @Param("bidCode") String bidCode);
}

View File

@ -4,6 +4,7 @@ package com.securitycontrol.background.service;
import com.securitycontrol.common.core.domain.Result;
import com.securitycontrol.entity.background.dto.AreaDto;
import com.securitycontrol.entity.background.vo.AreaVo;
import com.securitycontrol.entity.background.vo.GtVo;
import java.util.List;
@ -40,4 +41,18 @@ public interface TbAreaService {
* @return
*/
Result<String> deleteArea(AreaDto dto);
/**
* 查询杆塔信息集合
* @param dto
* @return
*/
List<GtVo> getGtList(AreaDto dto);
/**
* 新增杆塔信息
* @param dto
* @return
*/
Result<String> addGtData(GtVo dto);
}

View File

@ -0,0 +1,47 @@
package com.securitycontrol.background.service;
import com.securitycontrol.common.core.domain.Result;
import com.securitycontrol.entity.background.vo.UserProVo;
import java.util.List;
/**
* 用户 工程分配 业务接口层
* @author 黑子
*/
public interface UserProService {
/**
* 用户分配 查询集合
* @param dto
* @return
*/
List<UserProVo> getUserList(UserProVo dto);
/**
* 查询 已分配用户的工程数量
* @param dto
* @return
*/
List<UserProVo> getFpProList(UserProVo dto);
/**
* 查询 工程信息
* @param dto
* @return
*/
List<UserProVo> getProList(UserProVo dto);
/**
* 新增用户工程
* @param dto
* @return
*/
Result<String> addUserPro(UserProVo dto);
/**
* 删除用已分配的工程
* @param dto
* @return
*/
Result<String> delUserPro(UserProVo dto);
}

View File

@ -76,7 +76,7 @@ public class DeviceServiceImpl implements DeviceService {
return Result.fail("系统升级中,请稍后重试");
}catch (Exception e){
log.error(e.toString(),e);
return Result.fail("新增失败");
return Result.fail("系统升级中,请稍后重试");
}
}

View File

@ -7,6 +7,7 @@ import com.securitycontrol.common.core.utils.aes.StringHelper;
import com.securitycontrol.common.core.utils.uuid.IdUtils;
import com.securitycontrol.entity.background.dto.AreaDto;
import com.securitycontrol.entity.background.vo.AreaVo;
import com.securitycontrol.entity.background.vo.GtVo;
import com.securitycontrol.entity.system.SystemGlobal;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -111,12 +112,59 @@ public class TbAreaServiceImpl implements TbAreaService {
}
}
/**
* 杆塔信息查询
* @param dto
* @return
*/
@Override
public List<GtVo> getGtList(AreaDto dto) {
return mapper.getGtList(dto);
}
/**
*
* @param dto
* @return
*/
@Override
public Result<String> addGtData(GtVo dto) {
try{
String result=checkData2(dto);
return null;
}catch (Exception e){
log.error(e.toString());
return Result.fail("系统升级中,请稍后重试!");
}
}
/**
* 数据校验
* @param dto
* @return
*/
public String checkData2(GtVo dto){
if (StringHelper.isEmpty(dto.getGtName())){
return "杆塔名称不能为空";
}
if (StringHelper.isEmpty(dto.getBidCode())) {
return "请选择工程";
}
return null;
}
/**
* 数据校验
* @param dto
* @return
*/
public String checkData(AreaVo dto){
if(StringHelper.isEmpty(dto.getAreaType())){
dto.setAreaType("0");
}
String bidCode=dto.getBidCode();
if (StringHelper.isEmpty(bidCode)) {
return "请选择工程";

View File

@ -0,0 +1,125 @@
package com.securitycontrol.background.service.impl;
import com.securitycontrol.background.mapper.UserProMapper;
import com.securitycontrol.background.service.UserProService;
import com.securitycontrol.common.core.domain.Result;
import com.securitycontrol.common.core.utils.aes.StringHelper;
import com.securitycontrol.common.log.annotation.Log;
import com.securitycontrol.entity.background.vo.UserProVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/**
*
* @author 黑子
*/
@Service
@Slf4j
public class UserProServiceImpl implements UserProService {
@Autowired
private UserProMapper mapper;
/**
*
* @param dto
* @return
*/
@Override
public List<UserProVo> getUserList(UserProVo dto) {
return mapper.getUserList(dto);
}
@Override
public List<UserProVo> getFpProList(UserProVo dto) {
return mapper.getFpProList(dto);
}
/**
* 查询 已分配/未分配的工程
* @param dto
* @return
*/
@Override
public List<UserProVo> getProList(UserProVo dto) {
return mapper.getProList(dto);
}
/**
* 用户工程分配
* @param dto
* @return
*/
@Override
public Result<String> addUserPro(UserProVo dto) {
try{
//删除
String result=checkData(dto);
if (StringHelper.isNotEmpty(result)) {
return Result.fail(result);
}
String userId=dto.getUserId();
List<String> list= Arrays.asList(dto.getBidCode().split("@"));
//工程分配
list.forEach(bidCode->{
mapper.addUserPro(userId,bidCode);
});
return Result.ok("工程分配成功","工程分配成功");
}catch (Exception e){
log.error(e.toString(),e);
return Result.fail("系统升级中,请稍后重试");
}
}
/**
* 删除已分配的工程信息
* @param dto
* @return
*/
@Override
public Result<String> delUserPro(UserProVo dto) {
try{
String userId=dto.getUserId();
if (StringHelper.isEmpty(dto.getUserId())){
return Result.fail("用户不能为空");
}
if(StringHelper.isEmpty(dto.getBidCode())){
mapper.deleteUserProByCode(userId,"");
}else{
List<String> list= Arrays.asList(dto.getBidCode().split("@"));
//工程分配
list.forEach(bidCode->{
mapper.deleteUserProByCode(userId,bidCode);
});
}
return Result.fail("工程分配成功");
}catch (Exception e){
log.error(e.toString(),e);
return Result.fail("系统升级中,请稍后重试");
}
}
/**
* 删除用户工程
* @param dto
* @return
*/
public String checkData(UserProVo dto) {
if (StringHelper.isEmpty(dto.getUserId())){
return "用户不能为空";
}
if (StringHelper.isEmpty(dto.getBidCode())){
return "请选择工程";
}
return null;
}
}

View File

@ -7,7 +7,7 @@
<result property="puId" column="device_code"/>
<result property="macId" column="mac_id"/>
<result property="gbCode" column="gb_code"/>
<result property="createTime" column="device_type"/>
<result property="deviceType" column="device_type"/>
<result property="typeName" column="dict_name"/>
<result property="delFlag" column="del_flag"/>
<result property="manufacturer" column="manufacturer"/>

View File

@ -13,34 +13,54 @@
<result property="gtId" column="gt_id"/>
<result property="gtName" column="gt_name"/>
<result property="proName" column="pro_name"/>
<result property="areaType" column="area_type"/>
</resultMap>
<insert id="insertData">
insert into tb_area(area_id,area_name,bid_code,remarks,
area_code,create_time, gt_id,del_flag)value (
#{areaId},#{areaName},#{bidCode},#{remarks},#{areaCode},now(),#{gtId},0)
area_code,create_time, gt_id,del_flag,area_type)value (
#{areaId},#{areaName},#{bidCode},#{remarks},#{areaCode},now(),#{gtId},0,#{areaType})
</insert>
<update id="updateData">
update tb_area set area_name=#{areaName},bid_code=#{bidCode},remarks=#{remarks},gt_id=#{gtId},
area_code=#{areaCode},update_time=now()
area_code=#{areaCode},update_time=now(),area_type=#{areaType}
where area_id=#{areaId}
</update>
<update id="deleteArea">
update tb_area set del_flag=1 where area_id=#{areaId}
</update>
<select id="getAreaList" resultType="com.securitycontrol.entity.background.vo.AreaVo">
<select id="getAreaList" resultMap="AreaMap">
select area_id,area_name,pro.bid_code, remarks,area_code,pro.pro_name,
area.create_time,area.update_time, area.gt_id,gt.gt_name
area.create_time,area.update_time, area.gt_id,gt.gt_name,area.area_type
from tb_area area
left join tb_project pro on pro.bid_code=area.bid_code and pro.del_flag=0
LEFT JOIN t_pro_gt gt on area.gt_id=gt.gt_id and gt.del_flag=0
where area.del_flag=0
<if test="keyWord!=null and keyWord!=''">
AND INSTR(area_name,#{keyWord}) > 0
</if>
</select>
<select id="getProjectTypeByBidCode" resultType="java.lang.String">
select pro_type
from tb_project pro
where pro.del_flag=0 AND pro.bid_code=#{bidCode}
</select>
<select id="getGtList" resultType="com.securitycontrol.entity.background.vo.GtVo">
select
gt.gt_id gtId,gt_name gtName, gt_code gtCode,
bid_code bidCode, lat,lon,
now_gx nowGx, create_time createTime,update_time updateTime,tgg.gx_name gxName
from t_pro_gt gt
left join tb_gt_gx tgg on gt.now_gx=tgg.gx_id
WHERE gt.del_flag=0 and gt.bid_code=#{bidCode}
<if test="keyWord!=null and keyWord!=''">
AND (
INSTR(gt_name,#{keyWord}) > 0 or
INSTR(gt_code,#{keyWord}) > 0
)
</if>
</select>
</mapper>

View File

@ -0,0 +1,86 @@
<?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.securitycontrol.background.mapper.UserProMapper">
<insert id="addUserPro">
insert into tb_user_pro(user_id ,bid_cod ,del_flag,times)
values(#{userId}, #{bidCode},0, now())
</insert>
<update id="deleteUserProByCode" >
UPDATE tb_user_pro SET del_flag=1 where user_id=#{userId}
<if test="bidCode!=null and bidCode!=''">
and bid_cod=#{bidCode}
</if>
</update>
<!--查询待分配的用户-->
<select id="getUserList" resultType="com.securitycontrol.entity.background.vo.UserProVo">
select su.user_id userId,ANY_VALUE(user_name) userName,ANY_VALUE(dept_name) deptName,
ANY_VALUE(login_name) loginName, ANY_VALUE(org_id) orgId,ANY_VALUE(org_name) orgName,
ANY_VALUE(su.role_name) roleName ,count(pro.pro_id) proNum
from sys_user su
left join sys_role sr on sr.role_id=su.role_id
left join tb_user_pro tup on su.user_id=tup.user_id and tup.del_flag=0
LEFT JOIN tb_project pro on tup.bid_cod=pro.bid_code and pro.del_flag=0
where su.del_flag=0 and sr.role_code=#{roleCode}
<if test="keyWord!=null and keyWord!=''">
AND (
INSTR(su.user_name,#{keyWord}) > 0 OR
INSTR(su.login_name,#{keyWord}) > 0
)
</if>
<if test='orgId!=null and orgId!=""'>
AND su.org_id =#{orgId}
</if>
group BY su.user_id
</select>
<select id="getFpProList" resultType="com.securitycontrol.entity.background.vo.UserProVo">
select pro_id ,pro.bid_code bidCode,pro_name bidName,status,plan_start_time planStartTime,plan_end_time planEndTime,
org orgId,now_gx ,jl_unit jlUnit,sg_unit sgUnit,
pro_type proType,sb.city_name orgName,pro.manager
FROM tb_project pro
left join sys_build sb on pro.org=sb.org_id
left join tb_user_pro tup on tup.bid_cod=pro.bid_code and tup.del_flag=0
where pro.del_flag=0
<if test="userId!=null and userId!=''">
and tup.user_id=#{userId}
</if>
<if test='orgId!=null and orgId!=""'>
AND pro.org =#{orgId}
</if>
<if test='keyWord!=null and keyWord!=""'>
AND (
INSTR(pro.bid_code,#{keyWord}) > 0 OR
INSTR(pro.pro_name,#{keyWord}) > 0 OR
INSTR(pro.sg_unit,#{keyWord}) > 0 OR
INSTR(pro.manager,#{keyWord}) > 0 OR
INSTR(pro.jl_unit,#{keyWord}) > 0
)
</if>
</select>
<select id="getProList" resultType="com.securitycontrol.entity.background.vo.UserProVo">
select pro_id,pro.bid_code bidCode,pro_name bidName,status,plan_start_time planStartTime,plan_end_time planEndTime,
org orgId,now_gx,jl_unit jlUnit,sg_unit sgUnit,
pro_type proType,sb.city_name orgName,pro.manager
FROM tb_project pro
left join sys_build sb on pro.org=sb.org_id
left join tb_user_pro tup on tup.bid_cod=pro.bid_code and tup.del_flag=0
WHERE tup.user_id!=#{userId} and pro.del_flag=0
<if test='type=="1"'>
AND tup.user_id is null
</if>
<if test='type=="2"'>
AND tup.user_id is not null
</if>
<if test='orgId!=null and orgId!=""'>
AND pro.org =#{orgId}
</if>
<if test='keyWord!=null and keyWord!=""'>
AND (
INSTR(pro.bid_code,#{keyWord}) > 0 OR
INSTR(pro.pro_name,#{keyWord}) > 0 OR
INSTR(pro.sg_unit,#{keyWord}) > 0 OR
INSTR(pro.manager,#{keyWord}) > 0 OR
INSTR(pro.jl_unit,#{keyWord}) > 0
)
</if>
</select>
</mapper>