From d98ef3292f8baa2cdf65225cd698bd3f8872a443 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Tue, 20 Aug 2024 16:00:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E6=B5=8B=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/entity/app/vo/SafetyHatVo.java | 5 ++ .../entity/bracelet/vo/TeamPeopleVo.java | 5 ++ .../controller/AppSafetyHatController.java | 17 +++-- .../app/service/IAppSafetyHatService.java | 5 +- .../service/impl/AppSafetyHatServiceImpl.java | 7 +- .../resources/mapper/AppSafetyHatMapper.xml | 3 +- .../bonus/bracelet/mapper/TeamMgeMapper.java | 36 +++++++++- .../service/impl/TeamMgeServiceImpl.java | 70 ++++++++++++++++--- .../mapper/bracelet/TeamMgeMapper.xml | 70 +++++++++++++------ 9 files changed, 177 insertions(+), 41 deletions(-) diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/app/vo/SafetyHatVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/app/vo/SafetyHatVo.java index 512a34b..02d9d04 100644 --- a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/app/vo/SafetyHatVo.java +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/app/vo/SafetyHatVo.java @@ -45,6 +45,11 @@ public class SafetyHatVo { * */ private Long teamId; + /** + * 班组名称 + * */ + private String teamName; + /** * 工程ID * */ diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/TeamPeopleVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/TeamPeopleVo.java index 4f5199a..e8dc53a 100644 --- a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/TeamPeopleVo.java +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/TeamPeopleVo.java @@ -43,4 +43,9 @@ public class TeamPeopleVo { * 手环编码 */ private String braceletCode; + + /** + * 是否是班组长 + */ + private Integer isTeamLeader; } diff --git a/bonus-modules/bonus-app/src/main/java/com/bonus/app/controller/AppSafetyHatController.java b/bonus-modules/bonus-app/src/main/java/com/bonus/app/controller/AppSafetyHatController.java index d88c6ec..ddefd38 100644 --- a/bonus-modules/bonus-app/src/main/java/com/bonus/app/controller/AppSafetyHatController.java +++ b/bonus-modules/bonus-app/src/main/java/com/bonus/app/controller/AppSafetyHatController.java @@ -1,14 +1,20 @@ package com.bonus.app.controller; import com.bonus.app.service.IAppSafetyHatService; +import com.bonus.common.core.constant.BusinessConstants; +import com.bonus.common.core.text.Convert; +import com.bonus.common.core.utils.ServletUtils; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.page.TableDataInfo; import com.bonus.common.entity.app.AppParamsDto; import com.bonus.common.entity.app.vo.SafetyHatDataVo; import com.bonus.common.entity.app.vo.SafetyHatVo; +import com.bonus.common.entity.bracelet.vo.EquipmentReqVo; import com.bonus.common.log.annotation.SysLog; import com.bonus.common.log.enums.OperaType; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -33,10 +39,13 @@ public class AppSafetyHatController extends BaseController { // @RequiresPermissions("app:safetyHat:list") @GetMapping("list") @SysLog(title = "智能安全帽", businessType = OperaType.QUERY,logType = 0,module = "智能安全帽->设备列表",details ="查询智能安全帽列表") - public TableDataInfo list(AppParamsDto dto) { - startPage(); - List list = service.getSafetyHatLists(dto); - return getDataTable(list); + public AjaxResult list(AppParamsDto dto) { + Integer pageNum = Convert.toInt(ServletUtils.getParameter(BusinessConstants.PAGE_NUM), 1); + Integer pageSize = Convert.toInt(ServletUtils.getParameter(BusinessConstants.PAGE_SIZE), 10); + PageHelper.startPage(pageNum, pageSize); + PageInfo pageInfo = service.getSafetyHatLists(dto); +// List list = service.getSafetyHatLists(dto); + return AjaxResult.success(pageInfo.getList()); } // @RequiresPermissions("app:safetyHat:distributionHelmet") diff --git a/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/IAppSafetyHatService.java b/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/IAppSafetyHatService.java index 4ec64a7..dddac78 100644 --- a/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/IAppSafetyHatService.java +++ b/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/IAppSafetyHatService.java @@ -4,6 +4,7 @@ import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.entity.app.AppParamsDto; import com.bonus.common.entity.app.vo.SafetyHatDataVo; import com.bonus.common.entity.app.vo.SafetyHatVo; +import com.github.pagehelper.PageInfo; import java.util.List; @@ -18,11 +19,11 @@ public interface IAppSafetyHatService { /** * 安全帽设备列表 * @param dto - * @return List + * @return PageInfo * @author cwchen * @date 2024/8/7 16:28 */ - List getSafetyHatLists(AppParamsDto dto); + PageInfo getSafetyHatLists(AppParamsDto dto); /** * 分配安全帽 diff --git a/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/impl/AppSafetyHatServiceImpl.java b/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/impl/AppSafetyHatServiceImpl.java index 2fa42a0..ab7976b 100644 --- a/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/impl/AppSafetyHatServiceImpl.java +++ b/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/impl/AppSafetyHatServiceImpl.java @@ -8,7 +8,9 @@ import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.entity.app.AppParamsDto; import com.bonus.common.entity.app.vo.SafetyHatDataVo; import com.bonus.common.entity.app.vo.SafetyHatVo; +import com.bonus.common.entity.bracelet.vo.EquipmentReqVo; import com.bonus.common.security.utils.SecurityUtils; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -37,7 +39,7 @@ public class AppSafetyHatServiceImpl implements IAppSafetyHatService { private AppEquipmentReqMapper appEquipmentReqMapper; @Override - public List getSafetyHatLists(AppParamsDto dto) { + public PageInfo getSafetyHatLists(AppParamsDto dto) { List list = new ArrayList<>(); try { list = mapper.getSafetyHatLists(dto); @@ -49,7 +51,8 @@ public class AppSafetyHatServiceImpl implements IAppSafetyHatService { } catch (Exception e) { log.error(e.toString(),e); } - return list; + PageInfo pageInfo = new PageInfo<>(list); + return pageInfo; } @Override diff --git a/bonus-modules/bonus-app/src/main/resources/mapper/AppSafetyHatMapper.xml b/bonus-modules/bonus-app/src/main/resources/mapper/AppSafetyHatMapper.xml index 40eb730..1f3b041 100644 --- a/bonus-modules/bonus-app/src/main/resources/mapper/AppSafetyHatMapper.xml +++ b/bonus-modules/bonus-app/src/main/resources/mapper/AppSafetyHatMapper.xml @@ -51,6 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" tpe.name AS name, tpe.phone, tdu.team_id AS teamId, + twt.team_name AS teamName, IF(tdl.ly_user IS NULL,0,1) AS useStatus, tdu.pro_id AS proId, tdu.gt_id AS gtId, @@ -68,7 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" INSTR(twt.team_name,#{teamName}) > 0 - AND INSTR(twt.team_name,#{useName}) > 0 + AND INSTR(tpe.name,#{useName}) > 0 AND tdu.team_id = -1 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 ec31774..ff534f9 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 @@ -151,5 +151,39 @@ public interface TeamMgeMapper { */ List getWorkPersonList(BraceletParamsDto dto); - int existworkPerson(BraceletParamsDto dto); + /** + * 判断班组长是否已经创建班组 + * @param vo + * @return int + * @author cwchen + * @date 2024/8/20 13:51 + */ + List isDistribution(TeamVo vo); + + /** + * 班组是否已分配设备 + * @param teamId + * @return List + * @author cwchen + * @date 2024/8/20 14:54 + */ + List isHasDevice(Long teamId); + + /** + * 获取班组成员ID + * @param teamId + * @return List + * @author cwchen + * @date 2024/8/20 15:22 + */ + List getTeamMembers(Long teamId); + + /** + * 判断移除的班组成员是否绑定设备 + * @param id + * @return List + * @author cwchen + * @date 2024/8/20 15:46 + */ + List isBandDevice(Long id); } 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 fc47223..01e3215 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 @@ -17,6 +17,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; /** * @className:TeamMgeServiceImpl @@ -55,9 +56,18 @@ public class TeamMgeServiceImpl implements ITeamMgeService { @Transactional(rollbackFor = Exception.class) public AjaxResult addTeam(TeamVo vo) { try { + if (vo.getUserIdArr() == null || vo.getUserIdArr().length == 0) { + return AjaxResult.error("未添加班组成员"); + } + // 同一工程下,不允许存在相同班组名称,已解散的班组除外 int result = mapper.isExist(vo); if (result > 0) { - return AjaxResult.error("班组名称已存在"); + return AjaxResult.error("所属工程的班组已存在"); + } + // 判断班组长是否已经创建班组 + List isDistributionList = mapper.isDistribution(vo); + if (isDistributionList.get(0) > 0) { + return AjaxResult.error("所选班组长已分配班组"); } vo.setLeaderPhone(Sm4Utils.encode(vo.getLeaderPhone())); mapper.addTeam(vo); @@ -76,9 +86,32 @@ public class TeamMgeServiceImpl implements ITeamMgeService { @Transactional(rollbackFor = Exception.class) public AjaxResult editTeam(TeamVo vo) { try { + if (vo.getUserIdArr() == null || vo.getUserIdArr().length == 0) { + return AjaxResult.error("未添加班组成员"); + } + // 同一工程下,不允许存在相同班组名称,已解散的班组除外 int result = mapper.isExist(vo); if (result > 0) { - return AjaxResult.error("班组名称已存在"); + return AjaxResult.error("所属工程的班组已存在"); + } + // 判断班组长是否已经创建班组 + List isDistributionList = mapper.isDistribution(vo); + if (isDistributionList.get(0) != 1 || isDistributionList.get(1) > 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); + if (isBandDevices.get(0) > 0) { + return AjaxResult.error("班组人员已分配手环,请先归还手环"); + } + if (isBandDevices.get(1) > 0) { + return AjaxResult.error("班组人员已分配设备,请先归还设备"); + } + } } vo.setLeaderPhone(Sm4Utils.encode(vo.getLeaderPhone())); mapper.updateTeam(vo); @@ -94,20 +127,35 @@ public class TeamMgeServiceImpl implements ITeamMgeService { } } + /** + * 获取两个集合的差集 + * @param userIdArr + * @param list + * @return List + * @author cwchen + * @date 2024/8/20 15:39 + */ + public static List getNotExistData(Long[] userIdArr, List list) { + List userIdList = Arrays.asList(userIdArr); + List newList = list.stream() + .filter(element -> !userIdList.contains(element)) + .collect(Collectors.toList()); + return newList; + } + @Override @Transactional(rollbackFor = Exception.class) public AjaxResult dissolutionTeam(BraceletParamsDto dto) { try { TeamVo teamVo = new TeamVo(); teamVo.setTeamId(dto.getId()); - // 班组下有在施工人员,无法删除 - List workPersonList = getWorkPersonList(dto); - if(CollectionUtils.isNotEmpty(workPersonList)){ - for (TeamPeopleVo teamPeopleVo : workPersonList) { - if(Objects.equals(teamPeopleVo.getWorkStatus(), BusinessConstants.WORK_STATUS)){ - return AjaxResult.error("班组下有施工中人员,无法解散班组"); - } - } + // 班组是否已分配手环箱或者设备 + List isHasDeviceList = mapper.isHasDevice(dto.getId()); + if (isHasDeviceList.get(0) > 0) { + return AjaxResult.error("班组已分配手环箱,请先归还手环箱"); + } + if (isHasDeviceList.get(1) > 0) { + return AjaxResult.error("班组已分配设备,请先归还设备"); } // 清空班组下的人员 mapper.updatePersonsByTeamId(teamVo); @@ -115,7 +163,7 @@ public class TeamMgeServiceImpl implements ITeamMgeService { return AjaxResult.success(); } catch (Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - log.error(e.toString(),e); + log.error(e.toString(), e); return AjaxResult.error(); } } diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/TeamMgeMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/TeamMgeMapper.xml index 6297297..40323e8 100644 --- a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/TeamMgeMapper.xml +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/TeamMgeMapper.xml @@ -80,16 +80,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND INSTR(twt.team_leader,#{teamLeader}) > 0 - - + + AND INSTR(tp.pro_name,#{proName}) > 0 - - + + AND ( + INSTR(twt.team_name,#{keyWord}) > 0 OR + INSTR(twt.team_leader,#{keyWord}) > 0 OR + INSTR(tp.pro_name,#{proName}) > 0 + ) - - - - ORDER BY twt.create_time + ORDER BY twt.create_time DESC - + @@ -124,15 +125,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" id_card AS idCard, phone AS phone FROM tb_people - WHERE del_flag = 0 AND post = 'team_leader' + WHERE del_flag = 0 AND post = 'team_leader' AND team_id IS NULL UNION ALL - SELECT tp.id, - tp.name, - tp.id_card AS idCard, - tp.phone AS phone - FROM t_work_team twt - LEFT JOIN tb_people tp ON twt.team_leader_id = tp.id AND tp.del_flag = 0 - WHERE twt.del_flag = 0 AND twt.team_id = #{teamId} + SELECT id, + name, + id_card AS idCard, + phone AS phone + FROM tb_people + WHERE del_flag = 0 AND post = 'team_leader' AND team_id = #{teamId} SELECT id, @@ -170,8 +170,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" tp.phone, tp.sex, IF(tb.id IS NULL,1,0) AS workStatus, - tb.sh_code AS braceletCode + tb.sh_code AS braceletCode, + IF(twt.team_id IS NULL,0,1) AS isTeamLeader FROM tb_people tp + LEFT JOIN t_work_team twt ON tp.id = twt.team_leader_id AND twt.del_flag = 0 LEFT JOIN tb_bracelet tb ON tp.id = tb.bid_id AND tb.del_flag = 0 WHERE tp.team_id = #{teamId} AND tp.del_flag = 0 @@ -180,5 +182,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND tp.sex = #{sex} + ORDER BY isTeamLeader DESC + + + + + + + + + \ No newline at end of file