From 02656d8110a068fb616e6f283b4439f1c86ce72f Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Thu, 19 Sep 2024 09:42:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/BusinessConstants.java | 3 ++ .../entity/bracelet/vo/PersonTreeVo.java | 4 ++ .../bonus/bracelet/mapper/TeamMgeMapper.java | 11 +++- .../service/impl/ConsControlServiceImpl.java | 52 ++++++++++++++++--- .../service/impl/PersonMgeServiceImpl.java | 7 ++- .../service/impl/TeamMgeServiceImpl.java | 32 +++++++----- .../mapper/bracelet/ConsControlMapper.xml | 20 +++++-- .../mapper/bracelet/PersonMgeMapper.xml | 12 ++++- .../mapper/bracelet/TeamMgeMapper.xml | 22 ++++++-- 9 files changed, 131 insertions(+), 32 deletions(-) diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java index 675abce..32aed79 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java @@ -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-人员 diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonTreeVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonTreeVo.java index 94d422e..056fb05 100644 --- a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonTreeVo.java +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonTreeVo.java @@ -35,6 +35,10 @@ public class PersonTreeVo { private Long devId; /**杆塔ID*/ private Long gtId; + /**工程ID*/ + private Long proId; + /**班组ID*/ + private Long teamId; private List children = new ArrayList<>(); } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/TeamMgeMapper.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/TeamMgeMapper.java index ff534f9..26680f1 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/TeamMgeMapper.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/TeamMgeMapper.java @@ -185,5 +185,14 @@ public interface TeamMgeMapper { * @author cwchen * @date 2024/8/20 15:46 */ - List isBandDevice(Long id); + List 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); } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java index 2e61ce0..137bb88 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java @@ -189,19 +189,43 @@ public class ConsControlServiceImpl implements IConsControlService { JSONArray resultTree = new JSONArray(); try { List list = new ArrayList<>(); + List proIds = new ArrayList<>(); + List gtIds = new ArrayList<>(); + List 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 proIdsSet = new HashSet<>(proIds); + Set gtIdsSet = new HashSet<>(gtIds); + Set 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 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 mapData = new HashMap<>(); diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/PersonMgeServiceImpl.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/PersonMgeServiceImpl.java index 1667506..f90ccea 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/PersonMgeServiceImpl.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/PersonMgeServiceImpl.java @@ -349,9 +349,12 @@ public class PersonMgeServiceImpl implements IPersonMgeService { List 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); diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/TeamMgeServiceImpl.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/TeamMgeServiceImpl.java index 5ce7e1b..5c4f19a 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/TeamMgeServiceImpl.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/TeamMgeServiceImpl.java @@ -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 isDistributionList = mapper.isDistribution(vo); - // 1. 班组长不变 2.选了已经分配的班组长 - if (isDistributionList.get(0) != 1 || isDistributionList.get(1) > 0) { + if (isDistributionList.get(0) > 0) { return AjaxResult.error("所选班组长已分配班组"); } - // 移除人员时 判断人员是否已经分配手环或者设备 + // 移除人员/更换班组长时 判断人员/班组长是否已经分配手环/设备/手环箱 List teamMembers = mapper.getTeamMembers(vo.getTeamId()); List notExistData = getNotExistData(vo.getUserIdArr(), teamMembers); if(CollectionUtils.isNotEmpty(notExistData)){ for (Long id : notExistData) { - List isBandDevices = mapper.isBandDevice(id); + List 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 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); diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml index 2932cbb..b08f070 100644 --- a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml @@ -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 diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/PersonMgeMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/PersonMgeMapper.xml index 0a47c80..9c5cc0c 100644 --- a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/PersonMgeMapper.xml +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/PersonMgeMapper.xml @@ -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' - + @@ -205,10 +203,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + + \ No newline at end of file