问题修改

This commit is contained in:
cwchen 2024-09-19 09:42:37 +08:00
parent 60d2311057
commit 02656d8110
9 changed files with 131 additions and 32 deletions

View File

@ -30,6 +30,9 @@ public class BusinessConstants {
public static final int TYPE3 = 0;
public static final Long PARENT_ID = 0L;
public static final Integer LEVEL = 4;
public static final Integer LEVEL1 = 1;
public static final Integer LEVEL2 = 2;
public static final Integer LEVEL3 = 3;
/**
* 资源类型 1-人员

View File

@ -35,6 +35,10 @@ public class PersonTreeVo {
private Long devId;
/**杆塔ID*/
private Long gtId;
/**工程ID*/
private Long proId;
/**班组ID*/
private Long teamId;
private List<PersonTreeVo> children = new ArrayList<>();
}

View File

@ -185,5 +185,14 @@ public interface TeamMgeMapper {
* @author cwchen
* @date 2024/8/20 15:46
*/
List<Integer> isBandDevice(Long id);
List<Integer> isBandDevice(@Param("id") Long id,@Param("teamId") Long teamId);
/**
* 班组成员/班组临时人员是否存在未归还的设备
* @param id
* @return int
* @author cwchen
* @date 2024/9/14 16:10
*/
int hasNoReturnDevice(Long id);
}

View File

@ -189,19 +189,43 @@ public class ConsControlServiceImpl implements IConsControlService {
JSONArray resultTree = new JSONArray();
try {
List<PersonTreeVo> list = new ArrayList<>();
List<Long> proIds = new ArrayList<>();
List<Long> gtIds = new ArrayList<>();
List<Long> teamIds = new ArrayList<>();
list = mapper.getPersonsTree(dto);
list.forEach(item->{
if (Objects.equals(item.getLevel(), BusinessConstants.LEVEL)) {
String[] valArr = item.getLabel().split("-");
if (StringUtils.isNotEmpty(valArr[1])) {
item.setLabel(valArr[0] + "-" + Sm4Utils.decode(valArr[1]));
}
// 判断施工人员是否预警
Integer isWarn = beyondTheScopeOfConstruction(dto, item.getDevId(), item.getGtId());
if(!Objects.equals(isWarn,BusinessConstants.NO_WARN)){
proIds.add(item.getProId());
gtIds.add(item.getGtId());
teamIds.add(item.getTeamId());
}
item.setIsWarn(isWarn);
}
});
Set<Long> proIdsSet = new HashSet<>(proIds);
Set<Long> gtIdsSet = new HashSet<>(gtIds);
Set<Long> teamIdsSet = new HashSet<>(teamIds);
for (PersonTreeVo vo : list) {
//忽略工程数据杆塔班组数据 1.工程 2.杆塔 3.班组 4.班组成员/临时人员
if (!Objects.equals(vo.getLevel(), BusinessConstants.LEVEL)) {
continue;
if(Objects.equals(vo.getLevel(),BusinessConstants.LEVEL1)){
// 工程
vo.setIsWarn(warnValue(vo.getId(),proIdsSet));
}else if(Objects.equals(vo.getLevel(),BusinessConstants.LEVEL2)){
// 杆塔
vo.setIsWarn(warnValue(vo.getId(),gtIdsSet));
}else if(Objects.equals(vo.getLevel(),BusinessConstants.LEVEL3)){
// 班组
vo.setIsWarn(warnValue(vo.getId(),teamIdsSet));
}
}
String[] valArr = vo.getLabel().split("-");
if (StringUtils.isNotEmpty(valArr[1])) {
vo.setLabel(valArr[0] + "-" + Sm4Utils.decode(valArr[1]));
}
// 判断施工人员是否预警
Integer isWarn = beyondTheScopeOfConstruction(dto, vo.getDevId(), vo.getGtId());
vo.setIsWarn(isWarn);
}
//构建人员树
resultTree = BuildTreeUtil.listInfoToTree(JSONArray.parseArray(JSON.toJSONString(list)), "id", "parentId", "children");
@ -211,6 +235,18 @@ public class ConsControlServiceImpl implements IConsControlService {
return AjaxResult.success(resultTree);
}
public Integer warnValue(String value,Set<Long> setList){
Long id = Long.parseLong(value.replace("tower-", "").replace("team-", ""));
if(CollectionUtils.isEmpty(setList)){
return 0;
}else{
if (setList.contains(id)) {
return 1;
}
}
return 0;
}
@Override
public AjaxResult getWorkInfo(BraceletParamsDto dto) {
Map<String, Object> mapData = new HashMap<>();

View File

@ -349,9 +349,12 @@ public class PersonMgeServiceImpl implements IPersonMgeService {
List<Integer> isLyDevices = mapper.isLyDevices(vo);
if (isLyDevices.get(0) > 0) {
return AjaxResult.error("该人员已绑定手环");
}
if (isLyDevices.get(1) > 0) {
}else if (isLyDevices.get(1) > 0) {
return AjaxResult.error("该人员已绑定设备");
}else if (isLyDevices.get(2) > 0) {
return AjaxResult.error("该人员已领用手环箱");
}else if (isLyDevices.get(3) > 0) {
return AjaxResult.error("该人员已领用设备");
}
// 删除人员资源文件人脸照片
mapper.delPerson(dto);

View File

@ -86,6 +86,7 @@ public class TeamMgeServiceImpl implements ITeamMgeService {
@Transactional(rollbackFor = Exception.class)
public AjaxResult editTeam(TeamVo vo) {
try {
log.info("班组长ID:{}",vo.getTeamLeaderId());
if (vo.getUserIdArr() == null || vo.getUserIdArr().length == 0) {
return AjaxResult.error("未添加班组成员");
}
@ -94,23 +95,25 @@ public class TeamMgeServiceImpl implements ITeamMgeService {
if (result > 0) {
return AjaxResult.error("所属工程的班组已存在");
}
// 判断班组长是否已经创建班组
// 更换班组长时选了已经分配的班组长
List<Integer> isDistributionList = mapper.isDistribution(vo);
// 1. 班组长不变 2.选了已经分配的班组长
if (isDistributionList.get(0) != 1 || isDistributionList.get(1) > 0) {
if (isDistributionList.get(0) > 0) {
return AjaxResult.error("所选班组长已分配班组");
}
// 移除人员 判断人员是否已经分配手环或者设备
// 移除人员/更换班组长时 判断人员/班组长是否已经分配手环/设备/手环箱
List<Long> teamMembers = mapper.getTeamMembers(vo.getTeamId());
List<Long> notExistData = getNotExistData(vo.getUserIdArr(), teamMembers);
if(CollectionUtils.isNotEmpty(notExistData)){
for (Long id : notExistData) {
List<Integer> isBandDevices = mapper.isBandDevice(id);
List<Integer> isBandDevices = mapper.isBandDevice(id,vo.getTeamId());
if (isBandDevices.get(0) > 0) {
return AjaxResult.error("班组人员已分配手环,请先归还手环");
}
if (isBandDevices.get(1) > 0) {
return AjaxResult.error("班组人员已分配设备,请先归还设备");
return AjaxResult.error("班组长/班组人员已分配手环,无法移除班组人员或更换班长");
}else if (isBandDevices.get(1) > 0) {
return AjaxResult.error("班组长/班组人员已领用设备,无法移除班组人员或更换班长");
}else if (isBandDevices.get(2) > 0) {
return AjaxResult.error("班组长已领用手环箱,无法更换班组长");
}else if (isBandDevices.get(3) > 0) {
return AjaxResult.error("班组长已领用设备,无法更换班组长");
}
}
}
@ -150,13 +153,18 @@ public class TeamMgeServiceImpl implements ITeamMgeService {
try {
TeamVo teamVo = new TeamVo();
teamVo.setTeamId(dto.getId());
// 班组是否已分配手环箱或者设备
// 班组成员/班组临时人员是否存在未归还的设备
int result = mapper.hasNoReturnDevice(dto.getId());
if (result > 0) {
return AjaxResult.error("班组中存在未归还手环设备的班组长/班组成员/临时人员");
}
// 班组是否已领用手环箱或者设备
List<Integer> isHasDeviceList = mapper.isHasDevice(dto.getId());
if (isHasDeviceList.get(0) > 0) {
return AjaxResult.error("班组已分配手环箱,请先归还手环箱");
return AjaxResult.error("班组已领用手环箱,请先归还手环箱");
}
if (isHasDeviceList.get(1) > 0) {
return AjaxResult.error("班组已分配设备,请先归还设备");
return AjaxResult.error("班组已领用设备,请先归还设备");
}
// 清空班组下的人员
mapper.updatePersonsByTeamId(teamVo);

View File

@ -138,7 +138,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
0 AS isWarn,
0 AS type,
0 AS devId,
0 AS gtId
0 AS gtId,
0 AS proId,
0 AS teamId
FROM tb_project tp
LEFT JOIN tb_sh_box tsb ON tp.id = tsb.pro_id AND tsb.del_flag = 0
LEFT JOIN tb_bracelet tb ON tsb.id = tb.box_id AND tb.del_flag = 0
@ -153,7 +155,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
0 AS isWarn,
0 AS type,
0 AS devId,
0 AS gtId
0 AS gtId,
0 AS proId,
0 AS teamId
FROM tb_project_power tpp
LEFT JOIN tb_project tp ON tpp.pro_id = tp.id AND tp.del_flag = 0
LEFT JOIN tb_sh_box tsb ON tpp.id = tsb.gt_id AND tsb.del_flag = 0
@ -169,7 +173,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
0 AS isWarn,
0 AS type,
0 AS devId,
0 AS gtId
0 AS gtId,
0 AS proId,
0 AS teamId
FROM tb_sh_box tsb
LEFT JOIN tb_bracelet tb ON tsb.id = tb.box_id AND tb.del_flag = 0
LEFT JOIN t_work_team twt ON tsb.team_id = twt.team_id AND twt.del_flag = 0
@ -185,7 +191,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
0 AS isWarn,
0 AS type,
tb.id AS devId,
tsb.gt_id AS gtId
tsb.gt_id AS gtId,
tsb.pro_id AS proId,
tpe.team_id AS teamId
FROM tb_bracelet tb
LEFT JOIN tb_sh_box tsb ON tb.box_id = tsb.id AND tsb.del_flag = 0
LEFT JOIN tb_people tpe ON tb.bid_id = tpe.id AND tpe.del_flag = 0
@ -202,7 +210,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
0 AS isWarn,
1 AS type,
tb.id AS devId,
tsb.gt_id AS gtId
tsb.gt_id AS gtId,
tsb.pro_id AS proId,
tlu.team_id AS teamId
FROM tb_bracelet tb
LEFT JOIN tb_sh_box tsb ON tb.box_id = tsb.id AND tsb.del_flag = 0
LEFT JOIN tb_ls_user tlu ON tb.bid_id = tlu.id

View File

@ -259,11 +259,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT dict_label AS name, dict_value AS value FROM sys_dict_data sdd
WHERE sdd.dict_type = 'post_type' AND sdd.status = '0'
</select>
<!--判断人员是否绑定了手环设备以及其他设备-->
<!--判断人员是否绑定了手环/其他设备/领用手环箱/领用设备-->
<select id="isLyDevices" resultType="java.lang.Integer">
SELECT COUNT(*) FROM tb_bracelet WHERE bid_id = #{id} AND peopel_type = 0 AND del_flag = 0
UNION ALL
SELECT COUNT(*) FROM tb_dev_ly WHERE ly_user = #{id}
UNION ALL
SELECT COUNT(*)
FROM tb_sh_box tsb
LEFT JOIN t_work_team twt ON tsb.team_id = twt.team_id AND twt.del_flag = 0 AND twt.team_status = 0
WHERE twt.team_leader_id = #{id} AND tsb.del_flag = 0
UNION ALL
SELECT COUNT(*)
FROM tb_dev_ly tdl
LEFT JOIN t_work_team twt ON tdl.team_id = twt.team_id AND twt.del_flag = 0 AND twt.team_status = 0
WHERE twt.team_leader_id = #{id}
</select>
<!--人员已分配班组,岗位限制修改 -->
<select id="canItBeModified" resultType="java.lang.Integer">

View File

@ -190,8 +190,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT COUNT(*) FROM tb_people WHERE id = #{teamLeaderId} AND team_id IS NOT NULL AND del_flag = 0
</if>
<if test="teamId != null">
SELECT COUNT(*) FROM tb_people WHERE id = #{teamLeaderId} AND team_id = #{teamId} AND del_flag = 0
UNION ALL
SELECT COUNT(*) FROM tb_people WHERE id = #{teamLeaderId} AND team_id != #{teamId} AND del_flag = 0 AND team_id IS NOT NULL
</if>
</select>
@ -205,10 +203,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="getTeamMembers" resultType="java.lang.Long">
SELECT id FROM tb_people WHERE team_id = #{teamId} AND del_flag = 0
</select>
<!--判断移除的班组成员是否绑定手环、设备-->
<!--判断移除的班组成员是否绑定手环、设备/班组长是否领用手环箱-->
<select id="isBandDevice" resultType="java.lang.Integer">
SELECT COUNT(*) FROM tb_bracelet WHERE bid_id = #{id} AND peopel_type = 0 AND del_flag = 0
UNION ALL
SELECT COUNT(*) FROM tb_dev_ly WHERE ly_user = #{id}
UNION ALL
SELECT COUNT(*)
FROM tb_sh_box tsb
LEFT JOIN t_work_team twt ON tsb.team_id = twt.team_id AND twt.del_flag = 0 AND twt.team_status = 0
WHERE tsb.team_id = #{teamId} AND twt.team_leader_id = #{id}
UNION ALL
SELECT COUNT(*)
FROM tb_dev_ly tdl
LEFT JOIN t_work_team twt ON tdl.team_id = twt.team_id AND twt.del_flag = 0 AND twt.team_status = 0
WHERE tdl.team_id = #{teamId} AND twt.team_leader_id = #{id}
</select>
<!--班组成员/班组临时人员是否存在未归还的设备-->
<select id="hasNoReturnDevice" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM tb_bracelet tb
INNER JOIN tb_people tp ON tb.bid_id = tp.id AND tb.peopel_type = 0 AND tp.team_id = #{id}
INNER JOIN tb_ls_user tlu ON tb.bid_id = tlu.id AND tb.peopel_type = 1 AND tlu.team_id = #{id}
WHERE tb.del_flag = 0
</select>
</mapper>