施工管控

This commit is contained in:
cwchen 2024-08-16 17:51:00 +08:00
parent ba6c9da52b
commit 78f6db37d7
9 changed files with 99 additions and 16 deletions

View File

@ -28,4 +28,9 @@ public class DevInfoVo {
private String leaderPhone;
/**电量*/
private String electricQuantity;
/**班组名称*/
private String teamName;
/**工程名称*/
private String proName;
}

View File

@ -118,6 +118,9 @@ public class BraceletParamsDto {
private List<String> dataName;
/**关键字*/
private String keyWord;
@Data
public static class SpotCheckInfo{
/**人员ID*/

View File

@ -5,6 +5,7 @@ import com.bonus.app.mapper.CraneMonitorMapper;
import com.bonus.app.service.ICraneMonitorService;
import com.bonus.common.core.constant.BusinessConstants;
import com.bonus.common.core.utils.DateTimeHelper;
import com.bonus.common.core.utils.encryption.Sm4Utils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.entity.app.AppParamsDto;
import com.bonus.common.entity.app.vo.DevInfoVo;
@ -44,6 +45,9 @@ public class CraneMonitorServiceImpl implements ICraneMonitorService {
try {
dto.setDevType(BusinessConstants.DZYJ);
list = mapper.getDzWarnList(dto);
for (DevInfoVo vo : list) {
vo.setLeaderPhone(Sm4Utils.decode(vo.getLeaderPhone()));
}
} catch (Exception e) {
log.error(e.toString(), e);
}

View File

@ -25,7 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN tb_dev_ly tdl ON td.id = tdl.dev_id
LEFT JOIN t_work_team twt ON tdl.team_id = twt.team_id AND twt.del_flag = 0
WHERE tdl.team_id = #{id} AND td.dev_type = #{devType} AND td.del_flag = 0
ORDER BY dev_index
ORDER BY tdl.ly_time DESC
</select>
<!--查询班组领用的近电感应设备-->
<select id="getJdList" resultType="com.bonus.common.entity.app.vo.DevInfoVo">

View File

@ -6,7 +6,6 @@ import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.core.web.page.TableDataInfo;
import com.bonus.common.entity.bracelet.BraceletParamsDto;
import com.bonus.common.entity.bracelet.vo.CheckConfigVo;
import com.bonus.common.entity.bracelet.vo.EquipmentReqVo;
import com.bonus.common.entity.bracelet.vo.WarnInfoVo;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
@ -162,4 +161,10 @@ public class ConsControlController extends BaseController {
public AjaxResult getHistoryGj(BraceletParamsDto dto){
return service.getHistoryGj(dto);
}
@GetMapping("getDzWarnList")
@SysLog(title = "施工管控", businessType = OperaType.QUERY, logType = 0, module = "施工管控->吊装管控", details = "吊装管控")
public AjaxResult getDzWarnList(BraceletParamsDto dto){
return service.getDzWarnList(dto);
}
}

View File

@ -1,5 +1,6 @@
package com.bonus.bracelet.mapper;
import com.bonus.common.entity.app.vo.DevInfoVo;
import com.bonus.common.entity.bracelet.BraceletParamsDto;
import com.bonus.common.entity.bracelet.vo.*;
import org.apache.ibatis.annotations.MapKey;
@ -191,4 +192,13 @@ public interface ConsControlMapper {
* @date 2024/8/16 9:55
*/
List<Map<String, Object>> getHistoryGj(BraceletParamsDto dto);
/**
* 吊装预警设备列表
* @param dto
* @return List<DevInfoVo>
* @author cwchen
* @date 2024/8/16 15:33
*/
List<DevInfoVo> getDzWarnList(BraceletParamsDto dto);
}

View File

@ -122,4 +122,13 @@ public interface IConsControlService {
* @date 2024/8/16 9:48
*/
AjaxResult getHistoryGj(BraceletParamsDto dto);
/**
* 吊装预警设备列表
* @param dto
* @return AjaxResult
* @author cwchen
* @date 2024/8/16 15:31
*/
AjaxResult getDzWarnList(BraceletParamsDto dto);
}

View File

@ -14,6 +14,7 @@ import com.bonus.common.core.utils.HaversineUtil;
import com.bonus.common.core.utils.TimeValidator;
import com.bonus.common.core.utils.encryption.Sm4Utils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.entity.app.vo.DevInfoVo;
import com.bonus.common.entity.bracelet.BraceletParamsDto;
import com.bonus.common.core.utils.BuildTreeUtil;
import com.bonus.common.entity.bracelet.vo.*;
@ -328,6 +329,8 @@ public class ConsControlServiceImpl implements IConsControlService {
dto.setId(vo.getTowerId());
Map<String, Object> towerMap = mapper.getTowerInfo(dto);
map = getLatAndLon(shMapDataList, map);
// 设置绑定手环基本信息
vo = setBraceletInfo(vo, shMapDataList);
// 验证施工人员是否超出施工范围/人脸是否验证
Integer isAbnormal = isAbnormal(distanceValue, map, towerMap);
if (!Objects.equals(isAbnormal, BusinessConstants.NO_WARN) || !Objects.equals(vo.getFaceStatus(), BusinessConstants.PASS)) {
@ -335,18 +338,18 @@ public class ConsControlServiceImpl implements IConsControlService {
}
if (!Objects.equals(isAbnormal, BusinessConstants.NO_WARN) && Objects.equals(vo.getFaceStatus(), BusinessConstants.PASS)) {
vo.setWarnName("离开工作区域");
vo.getBracelet().setIsWarn(1);
} else if (Objects.equals(isAbnormal, BusinessConstants.NO_WARN) && !Objects.equals(vo.getFaceStatus(), BusinessConstants.PASS)) {
vo.setWarnName("人脸验证异常");
} else if (!Objects.equals(isAbnormal, BusinessConstants.NO_WARN) && !Objects.equals(vo.getFaceStatus(), BusinessConstants.PASS)) {
vo.setWarnName("离开工作区域/人脸验证异常");
vo.getBracelet().setIsWarn(1);
}
// 设置绑定手环基本信息
vo = setBraceletInfo(vo, shMapDataList);
// 获取手环的预警信息
dto.setStartTime(DateTimeHelper.getNowDay());
dto.setEndTime(DateTimeHelper.getNowDay());
dto.setId(vo.getBraceletId());
List<PersonDetailVo.WarnInfo> warnInfoList = mapper.getWarnInfo(dto);
List<PersonDetailVo.WarnInfo> warnInfoList = mapper.getWarnInfo(dto);
vo.setWarnInfoList(warnInfoList);
dataMap.put("vo", vo);
} catch (Exception e) {
@ -357,33 +360,48 @@ public class ConsControlServiceImpl implements IConsControlService {
@Override
public AjaxResult getHistoryGj(BraceletParamsDto dto) {
List<Map<String,Object>> list = new ArrayList<>();
List<Map<String,Object>> dataList = new ArrayList<>();
List<Map<String, Object>> list = new ArrayList<>();
List<Map<String, Object>> dataList = new ArrayList<>();
try {
List<String> dataNameList = new ArrayList<>();
dataNameList.add(BusinessConstants.LON);
dataNameList.add(BusinessConstants.LAT);
dto.setDataName(dataNameList);
if(StringUtils.isEmpty(dto.getStartTime())){
if (StringUtils.isEmpty(dto.getStartTime())) {
dto.setStartTime(DateTimeHelper.getNowDay());
}
list = mapper.getHistoryGj(dto);
for (Map<String, Object> map : list) {
String value = (String)map.get("value");
String value = (String) map.get("value");
String[] valueArr = value.split(",");
if(valueArr.length == 2 && StringUtils.isNotBlank(valueArr[0]) && StringUtils.isNotBlank(valueArr[1])){
if (valueArr.length == 2 && StringUtils.isNotBlank(valueArr[0]) && StringUtils.isNotBlank(valueArr[1])) {
Map<String, Object> dataMap = new HashMap<>(2);
dataMap.put("lon",valueArr[0]);
dataMap.put("lat",valueArr[1]);
dataMap.put("lon", valueArr[0]);
dataMap.put("lat", valueArr[1]);
dataList.add(dataMap);
}
}
} catch (Exception e) {
log.error(e.toString(),e);
log.error(e.toString(), e);
}
return AjaxResult.success(dataList);
}
@Override
public AjaxResult getDzWarnList(BraceletParamsDto dto) {
List<DevInfoVo> list = new ArrayList<>();
try {
dto.setDevType(BusinessConstants.DZYJ);
list = mapper.getDzWarnList(dto);
for (DevInfoVo vo : list) {
vo.setLeaderPhone(Sm4Utils.decode(vo.getLeaderPhone()));
}
} catch (Exception e) {
log.error(e.toString(), e);
}
return AjaxResult.success(list);
}
/**
* 班组人员/临时人员 是否超出正常施工范围
*
@ -443,9 +461,6 @@ public class ConsControlServiceImpl implements IConsControlService {
if (Objects.equals(String.valueOf(mapData.get("dataCode")), BusinessConstants.DL_CODE)) {
Double value = handleElecValue(mapData);
bracelet.setElec(value);
if (value < 10) {
bracelet.setIsWarn(1);
}
} else if (Objects.equals(String.valueOf(mapData.get("dataCode")), BusinessConstants.XL_CODE)) {
bracelet.setHeartRate(handleValue(mapData));
} else if (Objects.equals(String.valueOf(mapData.get("dataCode")), BusinessConstants.XY_CODE)) {

View File

@ -429,5 +429,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
GROUP BY tdh.data_type
</select>
<!--吊装预警设备列表-->
<select id="getDzWarnList" resultType="com.bonus.common.entity.app.vo.DevInfoVo">
SELECT twt.team_leader AS teamLeader,
twt.leader_phone AS leaderPhone,
td.dev_code AS devCode,
td.id AS devId,
td.dev_index AS devIndex,
td.dev_name AS devName,
twt.team_name AS teamName,
tp.pro_name AS proName
FROM tb_device td
LEFT JOIN tb_dev_ly tdl ON td.id = tdl.dev_id
LEFT JOIN tb_project tp ON tp.id = tdl.pro_id AND tp.del_flag = 0
LEFT JOIN t_work_team twt ON tdl.team_id = twt.team_id AND twt.del_flag = 0
WHERE td.dev_type = #{devType}
<if test="keyWord!=null and keyWord!=''">
AND (
INSTR(td.dev_name,#{keyWord}) > 0 OR
INSTR(tp.pro_name,#{keyWord}) > 0 OR
INSTR(twt.team_leader,#{keyWord}) > 0
)
</if>
<if test="roleCode!='administrators' and roleCode!='depart'">
AND tp.depart_id = -1
</if>
<if test="roleCode=='depart'">
AND tp.depart_id = #{departId}
</if>
AND tp.depart_id IS NOT NULL
AND td.del_flag = 0
ORDER BY tdl.ly_time DESC
</select>
</mapper>