代码规范修改

This commit is contained in:
jjLv 2024-04-03 15:49:58 +08:00
parent 06c42e5df8
commit 49503d88b4
11 changed files with 255 additions and 56 deletions

View File

@ -33,4 +33,7 @@ public class ConstructionQualityDto extends ScreenParamDto {
@ApiModelProperty(value = "设备Id") @ApiModelProperty(value = "设备Id")
private String deviceId; private String deviceId;
@ApiModelProperty(value = "施工工艺")
private String construction;
} }

View File

@ -58,6 +58,9 @@ public class ConstructionQualityVo {
@ApiModelProperty(value = "设备Id") @ApiModelProperty(value = "设备Id")
private String deviceId; private String deviceId;
@ApiModelProperty(value = "施工工艺")
private String construction;

View File

@ -55,5 +55,24 @@ public class PersonnelControlVo {
@ApiModelProperty("围栏颜色") @ApiModelProperty("围栏颜色")
private String color; private String color;
@ApiModelProperty("经度")
private String longitude;
@ApiModelProperty("纬度")
private String latitude;
@ApiModelProperty("设备Id")
private String deviceId;
@ApiModelProperty("人员id")
private String userId;
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("手机号")
private String phone;
} }

View File

@ -51,7 +51,7 @@ public class OperatingController extends BaseController {
} }
} }
@RequestMapping(value = "/FiniteSpaceEnvironment", method = RequestMethod.POST) @RequestMapping(value = "/getFiniteSpaceEnvironment", method = RequestMethod.POST)
@ApiOperation(value = "作业环境-有限空间检测环境") @ApiOperation(value = "作业环境-有限空间检测环境")
public AjaxResult getFiniteSpaceEnvironment(@RequestBody OperatingQualityDto dto) { public AjaxResult getFiniteSpaceEnvironment(@RequestBody OperatingQualityDto dto) {
try { try {
@ -87,7 +87,7 @@ public class OperatingController extends BaseController {
} }
} }
@RequestMapping(value = "/GPSInstallation", method = RequestMethod.POST) @RequestMapping(value = "/getGPSInstallation", method = RequestMethod.POST)
@ApiOperation(value = "作业环境-GPS安装检测设备查询") @ApiOperation(value = "作业环境-GPS安装检测设备查询")
public AjaxResult getGPSInstallation(@RequestBody OperatingQualityDto dto) { public AjaxResult getGPSInstallation(@RequestBody OperatingQualityDto dto) {
try { try {
@ -99,7 +99,7 @@ public class OperatingController extends BaseController {
} }
@RequestMapping(value = "/GPSInstallationEnvironment", method = RequestMethod.POST) @RequestMapping(value = "/GPSInstallationEnvironment", method = RequestMethod.POST)
@ApiOperation(value = "作业环境-GPS安装检测设备查询") @ApiOperation(value = "作业环境-GPS安装检测环境查询")
public AjaxResult getGPSInstallationEnvironment(@RequestBody OperatingQualityDto dto) { public AjaxResult getGPSInstallationEnvironment(@RequestBody OperatingQualityDto dto) {
try { try {
List<OperatingQualityVo> list = service.getGPSInstallationEnvironment(dto); List<OperatingQualityVo> list = service.getGPSInstallationEnvironment(dto);

View File

@ -96,21 +96,33 @@ public class PersonnelControlController extends BaseController {
} }
@RequestMapping(value = "/subcontractorSwitchListen", method = RequestMethod.POST) @RequestMapping(value = "/subcontractorSwitchListen", method = RequestMethod.POST)
@ApiOperation(value = "人员管控-人员列表") @ApiOperation(value = "人员管控-围栏状态")
public AjaxResult subcontractorSwitchListen(@RequestBody PersonnelControlDto dto) { public AjaxResult subcontractorSwitchListen(@RequestBody PersonnelControlDto dto) {
return service.subcontractorSwitchListen(dto);
}
@RequestMapping(value = "/delSubcontractorById", method = RequestMethod.POST)
@ApiOperation(value = "人员管控-围栏删除")
public AjaxResult delSubcontractorById(@RequestBody PersonnelControlDto dto) {
return service.delSubcontractorById(dto);
}
@RequestMapping(value = "/getReplicaFence", method = RequestMethod.POST)
@ApiOperation(value = "人员管控-复现围栏")
public AjaxResult getReplicaFence(@RequestBody PersonnelControlDto dto) {
try { try {
List<PersonnelControlVo> list = service.subcontractorSwitchListen(dto); List<PersonnelControlVo> list = service.getReplicaFence(dto);
return AjaxResult.success(list); return AjaxResult.success(list);
} catch (Exception e) { } catch (Exception e) {
return AjaxResult.error(); return AjaxResult.error();
} }
} }
@RequestMapping(value = "/delSubcontractorById", method = RequestMethod.POST) @RequestMapping(value = "/personnelCoordinatePoint", method = RequestMethod.POST)
@ApiOperation(value = "人员管控-人员列表") @ApiOperation(value = "人员管控-人员坐标点")
public AjaxResult delSubcontractorById(@RequestBody PersonnelControlDto dto) { public AjaxResult personnelCoordinatePoint(@RequestBody PersonnelControlDto dto) {
try { try {
List<PersonnelControlVo> list = service.delSubcontractorById(dto); List<PersonnelControlVo> list = service.personnelCoordinatePoint(dto);
return AjaxResult.success(list); return AjaxResult.success(list);
} catch (Exception e) { } catch (Exception e) {
return AjaxResult.error(); return AjaxResult.error();

View File

@ -1,12 +1,7 @@
package com.securitycontrol.screen.mapper; package com.securitycontrol.screen.mapper;
import com.securitycontrol.entity.screen.dto.ConstructionQualityDto;
import com.securitycontrol.entity.screen.dto.OperatingQualityDto;
import com.securitycontrol.entity.screen.dto.PersonnelControlDto; import com.securitycontrol.entity.screen.dto.PersonnelControlDto;
import com.securitycontrol.entity.screen.vo.ConstructionQualityVo;
import com.securitycontrol.entity.screen.vo.OperatingQualityVo;
import com.securitycontrol.entity.screen.vo.PersonnelControlVo; import com.securitycontrol.entity.screen.vo.PersonnelControlVo;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@ -20,9 +15,8 @@ public interface PersonnelControlMapper {
/** /**
* 人员管控-穿戴装备 * 人员管控-穿戴装备
* *
* @param dto
* @return AjaxResult * @return AjaxResult
* @description * &#064;description
* @author jjLV * @author jjLV
* @date 2024/3/27 17:23 * @date 2024/3/27 17:23
*/ */
@ -62,6 +56,15 @@ public interface PersonnelControlMapper {
*/ */
int addNewFence(PersonnelControlDto dto); int addNewFence(PersonnelControlDto dto);
/**
* 人员管控-点位新增
*
* @param dto
* @return AjaxResult
* @description
* @author jjLV
* @date 2024/3/27 17:23
*/
int insertCoordinates(PersonnelControlDto dto); int insertCoordinates(PersonnelControlDto dto);
/** /**
@ -75,7 +78,47 @@ public interface PersonnelControlMapper {
*/ */
List<PersonnelControlVo> getNewFenceList(PersonnelControlDto dto); List<PersonnelControlVo> getNewFenceList(PersonnelControlDto dto);
List<PersonnelControlVo> subcontractorSwitchListen(PersonnelControlDto dto); /**
* 人员管控-围栏是否启用
*
* @param dto
* @return AjaxResult
* @description
* @author jjLV
* @date 2024/3/27 17:23
*/
void subcontractorSwitchListen(PersonnelControlDto dto);
List<PersonnelControlVo> delSubcontractorById(PersonnelControlDto dto); /**
* 人员管控-删除围栏
*
* @param dto
* @return AjaxResult
* @description
* @author jjLV
* @date 2024/3/27 17:23
*/
void delSubcontractorById(PersonnelControlDto dto);
/**
* 人员管控-复现围栏
*
* @param dto
* @return AjaxResult
* @description
* @author jjLV
* @date 2024/3/27 17:23
*/
List<PersonnelControlVo> getReplicaFence(PersonnelControlDto dto);
/**
* 人员管控-人员坐标点
*
* @param dto
* @return AjaxResult
* @description
* @author jjLV
* @date 2024/3/27 17:23
*/
List<PersonnelControlVo> personnelCoordinatePoint(PersonnelControlDto dto);
} }

View File

@ -1,5 +1,6 @@
package com.securitycontrol.screen.service; package com.securitycontrol.screen.service;
import com.securitycontrol.common.core.web.domain.AjaxResult;
import com.securitycontrol.entity.screen.dto.PersonnelControlDto; import com.securitycontrol.entity.screen.dto.PersonnelControlDto;
import com.securitycontrol.entity.screen.vo.PersonnelControlVo; import com.securitycontrol.entity.screen.vo.PersonnelControlVo;
@ -76,7 +77,7 @@ public interface PersonnelControlService {
* @author jjLV * @author jjLV
* @date 2024/3/27 17:23 * @date 2024/3/27 17:23
*/ */
List<PersonnelControlVo> subcontractorSwitchListen(PersonnelControlDto dto); AjaxResult subcontractorSwitchListen(PersonnelControlDto dto);
/** /**
* 人员管控-删除围栏 * 人员管控-删除围栏
@ -87,5 +88,27 @@ public interface PersonnelControlService {
* @author jjLV * @author jjLV
* @date 2024/3/27 17:23 * @date 2024/3/27 17:23
*/ */
List<PersonnelControlVo> delSubcontractorById(PersonnelControlDto dto); AjaxResult delSubcontractorById(PersonnelControlDto dto);
/**
* 人员管控-复现围栏
*
* @param dto
* @return AjaxResult
* @description
* @author jjLV
* @date 2024/3/27 17:23
*/
List<PersonnelControlVo> getReplicaFence(PersonnelControlDto dto);
/**
* 人员管控-人员坐标点
*
* @param dto
* @return AjaxResult
* @description
* @author jjLV
* @date 2024/3/27 17:23
*/
List<PersonnelControlVo> personnelCoordinatePoint(PersonnelControlDto dto);
} }

View File

@ -1,12 +1,14 @@
package com.securitycontrol.screen.service.impl; package com.securitycontrol.screen.service.impl;
import com.securitycontrol.common.core.utils.uuid.IdUtils; import com.securitycontrol.common.core.utils.uuid.IdUtils;
import com.securitycontrol.common.core.web.domain.AjaxResult;
import com.securitycontrol.entity.screen.dto.PersonnelControlDto; import com.securitycontrol.entity.screen.dto.PersonnelControlDto;
import com.securitycontrol.entity.screen.vo.PersonnelControlVo; import com.securitycontrol.entity.screen.vo.PersonnelControlVo;
import com.securitycontrol.screen.mapper.PersonnelControlMapper; import com.securitycontrol.screen.mapper.PersonnelControlMapper;
import com.securitycontrol.screen.service.PersonnelControlService; import com.securitycontrol.screen.service.PersonnelControlService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
@ -116,8 +118,14 @@ public class PersonnelControlImpl implements PersonnelControlService {
* @date 2024/3/27 17:23 * @date 2024/3/27 17:23
*/ */
@Override @Override
public List<PersonnelControlVo> subcontractorSwitchListen(PersonnelControlDto dto) { public AjaxResult subcontractorSwitchListen(PersonnelControlDto dto) {
return mapper.subcontractorSwitchListen(dto); try {
mapper.subcontractorSwitchListen(dto);
} catch (Exception e) {
log.error("更新围栏状态失败", e);
return AjaxResult.error("更新围栏状态失败:" + e.getMessage());
}
return AjaxResult.success();
} }
/** /**
@ -130,7 +138,42 @@ public class PersonnelControlImpl implements PersonnelControlService {
* @date 2024/3/27 17:23 * @date 2024/3/27 17:23
*/ */
@Override @Override
public List<PersonnelControlVo> delSubcontractorById(PersonnelControlDto dto) { public AjaxResult delSubcontractorById(PersonnelControlDto dto) {
return mapper.delSubcontractorById(dto); try {
mapper.delSubcontractorById(dto);
} catch (Exception e) {
log.error("删除围栏失败", e);
return AjaxResult.error("删除围栏失败:" + e.getMessage());
}
return AjaxResult.success();
}
/**
* 人员管控-复现围栏
*
* @param dto
* @return AjaxResult
* @description
* @author jjLV
* @date 2024/3/27 17:23
*/
@Override
public List<PersonnelControlVo> getReplicaFence(PersonnelControlDto dto) {
return mapper.getReplicaFence(dto);
}
/**
* 人员管控-人员坐标点
*
* @param dto
* @return AjaxResult
* @description
* @author jjLV
* @date 2024/3/27 17:23
*/
@Override
public List<PersonnelControlVo> personnelCoordinatePoint(PersonnelControlDto dto) {
return mapper.personnelCoordinatePoint(dto);
} }
} }

View File

@ -9,10 +9,18 @@
DATE_FORMAT(thdv.create_time,'%Y-%m') as month, DATE_FORMAT(thdv.create_time,'%Y-%m') as month,
SUM(CASE WHEN thdv.is_warn = 1 THEN 1 ELSE 0 END) as qualificationNumber SUM(CASE WHEN thdv.is_warn = 1 THEN 1 ELSE 0 END) as qualificationNumber
FROM tb_his_device_value thdv FROM tb_his_device_value thdv
JOIN tb_device_detail tdd ON thdv.id = tdd.id LEFT JOIN tb_device_detail tdd ON thdv.id = tdd.id
JOIN tb_bd_device tbd ON tdd.device_id = tbd.device_id LEFT JOIN tb_bd_device tbd ON tdd.device_id = tbd.device_id
JOIN tb_pro_bd tpb ON tbd.bd_id = tpb.id LEFT JOIN tb_pro_bd tpb ON tbd.bd_id = tpb.id
WHERE tpb.bid_code = #{bidCode} and DATE_FORMAT(thdv.create_time,'%Y-%m') = #{month} WHERE tpb.bid_code = #{bidCode} and DATE_FORMAT(thdv.create_time,'%Y-%m') = #{month}
<choose>
<when test="construction != null and construction != ''">
AND tbd.device_code = #{construction}
</when>
<otherwise>
AND tbd.device_code IN ('1906002', '1906003', '1906004')
</otherwise>
</choose>
GROUP BY DATE_FORMAT(thdv.create_time,'%Y-%m') GROUP BY DATE_FORMAT(thdv.create_time,'%Y-%m')
</select> </select>
<!--施工质量-告警内容--> <!--施工质量-告警内容-->
@ -21,7 +29,8 @@
# tw.warn_id AS warningId, # tw.warn_id AS warningId,
tw.warn_content AS warningContent tw.warn_content AS warningContent
FROM tb_warn tw FROM tb_warn tw
where tw.bid_code = #{bidCode} LEFT JOIN tb_bd_device tbd ON tw.device_id = tbd.device_id
where tw.bid_code = #{bidCode} and tbd.devic_type = 1906
</select> </select>
<!--施工质量-质量检测设备--> <!--施工质量-质量检测设备-->
@ -40,7 +49,7 @@
LEFT JOIN tb_device_detail tdd ON tdd.device_id = tbd.device_id LEFT JOIN tb_device_detail tdd ON tdd.device_id = tbd.device_id
LEFT JOIN tb_device_value tdv ON tdd.id = tdv.attribute_id LEFT JOIN tb_device_value tdv ON tdd.id = tdv.attribute_id
WHERE WHERE
tbd.devic_type = 1806 and tpb.bid_code = #{bidCode} tbd.devic_type = 1906 and tpb.bid_code = #{bidCode} and tbd.device_code = 1906001
</select> </select>
<select id="getConstructionQualityList" <select id="getConstructionQualityList"
@ -54,13 +63,25 @@
tbd.device_name as deviceName, tbd.device_name as deviceName,
ta.area_name as areaName ta.area_name as areaName
FROM tb_his_device_value thdv FROM tb_his_device_value thdv
JOIN tb_device_detail tdd ON thdv.id = tdd.id LEFT JOIN tb_device_detail tdd ON thdv.id = tdd.id
JOIN tb_bd_device tbd ON tdd.device_id = tbd.device_id LEFT JOIN tb_bd_device tbd ON tdd.device_id = tbd.device_id
JOIN tb_pro_bd tpb ON tbd.bd_id = tpb.id LEFT JOIN tb_pro_bd tpb ON tbd.bd_id = tpb.id
JOIN tb_area ta ON tbd.area_id = ta.area_id LEFT JOIN tb_area ta ON tbd.area_id = ta.area_id
WHERE WHERE
tpb.bid_code = #{bidCode} tpb.bid_code = #{bidCode}
<if test="month != null and month != ''">
AND DATE_FORMAT(thdv.create_time,'%Y-%m-%d') = #{month}
</if>
<choose>
<when test="construction != null and construction != ''">
AND tbd.device_code = #{construction}
</when>
<otherwise>
AND tbd.device_code IN ('1906002', '1906003', '1906004')
</otherwise>
</choose>
</select> </select>
</mapper> </mapper>

View File

@ -9,9 +9,9 @@
tdv.val as val, tdv.val as val,
tdv.is_warn as isWarn tdv.is_warn as isWarn
FROM tb_device_detail tdd FROM tb_device_detail tdd
JOIN tb_device_value tdv ON tdd.id = tdv.attribute_id LEFT JOIN tb_device_value tdv ON tdd.id = tdv.attribute_id
JOIN tb_bd_device tbd ON tdd.device_id = tbd.device_id LEFT JOIN tb_bd_device tbd ON tdd.device_id = tbd.device_id
JOIN tb_pro_bd tpb ON tbd.bd_id = tpb.id LEFT JOIN tb_pro_bd tpb ON tbd.bd_id = tpb.id
WHERE tpb.bid_code = #{bidCode} WHERE tpb.bid_code = #{bidCode}
</select> </select>
@ -26,7 +26,7 @@
LEFT JOIN LEFT JOIN
tb_pro_bd tpb ON tpb.bid_code = #{bidCode} AND tpb.id = tbd.bd_id tb_pro_bd tpb ON tpb.bid_code = #{bidCode} AND tpb.id = tbd.bd_id
WHERE WHERE
tbd.devic_type = 1806 tbd.devic_type = 1902 and tbd.device_code = 1902003
</select> </select>
<!--作业环境-边坡位移监测设备--> <!--作业环境-边坡位移监测设备-->
@ -40,7 +40,7 @@
LEFT JOIN LEFT JOIN
tb_pro_bd tpb ON tpb.bid_code = #{bidCode} AND tpb.id = tbd.bd_id tb_pro_bd tpb ON tpb.bid_code = #{bidCode} AND tpb.id = tbd.bd_id
WHERE WHERE
tbd.devic_type = 1806 tbd.devic_type = 1902 and tbd.device_code = 1902001
</select> </select>
<!--作业环境-GPS安装检测--> <!--作业环境-GPS安装检测-->
@ -54,7 +54,7 @@
LEFT JOIN LEFT JOIN
tb_pro_bd tpb ON tpb.bid_code = #{bidCode} AND tpb.id = tbd.bd_id tb_pro_bd tpb ON tpb.bid_code = #{bidCode} AND tpb.id = tbd.bd_id
WHERE WHERE
tbd.devic_type = 1806 tbd.devic_type = 1902 and tbd.device_code = 1902004
</select> </select>
<!--作业环境-有限空间检测环境--> <!--作业环境-有限空间检测环境-->
@ -64,12 +64,12 @@
tdv.val AS val, tdv.val AS val,
tdd.mode_name AS modeName tdd.mode_name AS modeName
FROM tb_device_detail tdd FROM tb_device_detail tdd
JOIN tb_device_value tdv ON tdd.id = tdv.attribute_id LEFT JOIN tb_device_value tdv ON tdd.id = tdv.attribute_id
join tb_bd_device tbd on tdd.device_id = tbd.device_id LEFT JOIN tb_bd_device tbd on tdd.device_id = tbd.device_id
join tb_pro_bd tpb on tbd.bd_id = tpb.id LEFT JOIN tb_pro_bd tpb on tbd.bd_id = tpb.id
WHERE tdd.device_id = #{deviceId} WHERE tpb.bid_code = #{bidCode}
AND tpb.bid_code = #{bidCode} AND tbd.device_id = #{deviceId}
AND tdd.mode_name IN ('温度', '湿度', '毒气浓度'); GROUP BY tdd.mode_name
</select> </select>
<!--作业环境-GPS安装检测设备查询--> <!--作业环境-GPS安装检测设备查询-->
@ -79,13 +79,15 @@
tdv.val AS val, tdv.val AS val,
tdd.mode_name AS modeName tdd.mode_name AS modeName
FROM tb_device_detail tdd FROM tb_device_detail tdd
JOIN tb_device_value tdv ON tdd.id = tdv.attribute_id LEFT JOIN tb_device_value tdv ON tdd.id = tdv.attribute_id
join tb_bd_device tbd on tdd.device_id = tbd.device_id LEFT JOIN tb_bd_device tbd on tdd.device_id = tbd.device_id
join tb_pro_bd tpb on tbd.bd_id = tpb.id LEFT JOIN tb_pro_bd tpb on tbd.bd_id = tpb.id
WHERE tdd.device_id = #{deviceId} WHERE tpb.bid_code = #{bidCode}
AND tpb.bid_code = #{bidCode} AND tbd.device_id = #{deviceId}
AND tdd.mode_name IN ('温度', '湿度', '粉尘度'); GROUP BY tdd.mode_name
</select> </select>
<!--作业环境-边坡位移监测列表-->
<select id="getSlopeDisplacementList" <select id="getSlopeDisplacementList"
resultType="com.securitycontrol.entity.screen.vo.ConstructionQualityVo"> resultType="com.securitycontrol.entity.screen.vo.ConstructionQualityVo">
SELECT SELECT
@ -97,11 +99,12 @@
thdv.source_data AS sourceData, thdv.source_data AS sourceData,
thdv.is_warn AS isWarn thdv.is_warn AS isWarn
FROM tb_bd_device tbd FROM tb_bd_device tbd
JOIN tb_device_detail tdd ON tbd.device_id = tdd.device_id LEFT JOIN tb_device_detail tdd ON tbd.device_id = tdd.device_id
JOIN tb_area ta ON tbd.area_id = ta.area_id LEFT JOIN tb_area ta ON tbd.area_id = ta.area_id
JOIN tb_his_device_value thdv ON tdd.id = thdv.attribute_id LEFT JOIN tb_his_device_value thdv ON tdd.id = thdv.attribute_id
JOIN tb_pro_bd tpb ON tbd.bd_id = tpb.id LEFT JOIN tb_pro_bd tpb ON tbd.bd_id = tpb.id
WHERE tpb.bid_code = #{bidCode} WHERE tpb.bid_code = #{bidCode}
AND tbd.device_code = 1902001
<if test="deviceId != null and deviceId != ''"> <if test="deviceId != null and deviceId != ''">
AND tbd.device_id LIKE CONCAT('%', #{deviceId}, '%') AND tbd.device_id LIKE CONCAT('%', #{deviceId}, '%')
</if> </if>

View File

@ -19,7 +19,10 @@
WHERE id = #{id} WHERE id = #{id}
</update> </update>
<delete id="delSubcontractorById"> <delete id="delSubcontractorById">
delete from tb_pro_fence where id = #{id} DELETE tb_pro_fence, tb_fence_detail
FROM tb_pro_fence
JOIN tb_fence_detail ON tb_pro_fence.id = tb_fence_detail.fence_id
WHERE tb_pro_fence.id = #{id};
</delete> </delete>
<!--人员管控-穿戴装备--> <!--人员管控-穿戴装备-->
@ -95,4 +98,30 @@
GROUP BY GROUP BY
tpf.fence_name tpf.fence_name
</select> </select>
<select id="getReplicaFence" resultType="com.securitycontrol.entity.screen.vo.PersonnelControlVo">
SELECT
tpf.id AS id,
tfd.lat AS latitude,
tfd.lon AS longitude,
tpf.color AS color
FROM tb_fence_detail tfd
LEFT JOIN tb_pro_fence tpf ON tfd.fence_id = tpf.id
WHERE tpf.bid_code = #{bidCode}
</select>
<select id="personnelCoordinatePoint" resultType="com.securitycontrol.entity.screen.vo.PersonnelControlVo">
SELECT
tct.user_id AS userId,
su.user_name AS userName,
su.dept_name AS deptName,
su.phone AS phone,
tct.lat AS latitude,
tct.lon AS longitude
FROM
tb_cap_travel tct
LEFT JOIN tb_bd_device tbd ON tct.device_id = tbd.device_id
LEFT JOIN tb_pro_bd tpb ON tbd.bd_id = tpb.id
LEFT JOIN sys_user su ON tct.user_id = su.user_id
WHERE
tpb.bid_code = #{bidCode}
</select>
</mapper> </mapper>