APP智能安全帽

This commit is contained in:
cwchen 2024-08-07 19:58:50 +08:00
parent cb542fd619
commit 88c5bd9fd3
20 changed files with 453 additions and 17 deletions

View File

@ -121,4 +121,9 @@ public class AppParamsDto {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date backTime = new Date();
/**
* 使用人
*/
private String useName;
}

View File

@ -0,0 +1,48 @@
package com.bonus.common.entity.app.vo;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @className:SafetyHatDataVo
* @author:cwchen
* @date:2024-08-07-16:21
* @version:1.0
* @description:智能安全帽-vo
*/
@Data
public class SafetyHatDataVo {
/**ID*/
private Long id;
/**工程id*/
@NotNull(message = "工程ID不能为空")
private Long proId;
/**班组id*/
@NotNull(message = "班组ID不能为空")
private Long teamId;
/**绑定id(人员)*/
@NotNull(message = "绑定人不能为空")
private Long bidId;
/**绑定类型 1 手环 2 安全帽*/
private Integer bidType;
/**设备id(手环/安全帽)*/
@NotNull(message = "设备ID不能为空")
private Long devId;
/**绑定时间/领用时间*/
private Date bidTime = new Date();
/**解绑时间/归还时间*/
private Date unbidTime;
/**时间类型 0 解绑 1绑定*/
private Integer timeType;
/**人员类型(绑定是手环时) 0 正常 1 临时人员*/
private Integer peopleType;
/**设备领用ID*/
@NotNull(message = "设备领用ID不能为空")
private Long useId;
@NotNull(message = "杆塔ID不能为空")
private Long gtId;
}

View File

@ -0,0 +1,59 @@
package com.bonus.common.entity.app.vo;
import lombok.Data;
/**
* @className:SafetyHatVo
* @author:cwchen
* @date:2024-08-07-16:21
* @version:1.0
* @description:智能安全帽-vo
*/
@Data
public class SafetyHatVo {
/**
* 领用ID
*/
private Long id;
/**
* 设备ID
*/
private Long devId;
/**
* 设备名称
*/
private String devName;
/**
* 设备编号
*/
private String devCode;
/**
* 姓名
*/
private String name;
/**
* 手机号
*/
private String phone;
/**
* 使用状态 0.未使用 1.在用
*/
private Integer useStatus;
/**
* 班组ID
* */
private Long teamId;
/**
* 工程ID
* */
private Long proId;
/**
* 杆塔ID
* */
private Long gtId;
/**人员领用ID*/
private Long bidId;
}

View File

@ -31,6 +31,10 @@ public class TeamVo {
@NotBlank(message = "班组名称不能为空")
@Length(max = 64, message = "班组名称字符长度不能超过64")
private String teamName;
// @NotNull(message = "班组长ID不能为空")
private Long teamLeaderId;
/**
* 班组长名称
*/

View File

@ -162,4 +162,18 @@ public class SecurityUtils
}
return false;
}
/**
* 是否是班组长角色/管理员角色
* @return boolean
* @author cwchen
* @date 2024/8/7 18:51
*/
public static boolean isTeamRoleCode(){
String roleCode = getRoleCode();
if(Objects.equals(roleCode, BusinessConstants.TEAM) || Objects.equals(roleCode, BusinessConstants.ADMINISTRATORS)){
return true;
}
return false;
}
}

View File

@ -34,7 +34,7 @@ public class AppEquipmentReqController extends BaseController {
// @RequiresPermissions("app:equipmentReq:list")
@GetMapping("list")
@SysLog(title = "施工管控", businessType = OperaType.QUERY,logType = 0,module = "施工管控->设备领用",details ="查询设备领用列表")
@SysLog(title = "设备领用", businessType = OperaType.QUERY,logType = 0,module = "设备领用->设备领用列表",details ="查询设备领用列表")
public TableDataInfo list(AppParamsDto dto) {
startPage();
List<EquipmentReqVo> list = service.getEquipmentReqLists(dto);
@ -43,7 +43,7 @@ public class AppEquipmentReqController extends BaseController {
// @RequiresPermissions("app:equipmentReq:addData")
@PostMapping("addData")
@SysLog(title = "施工管控", businessType = OperaType.INSERT,logType = 0,module = "施工管控->设备领用",details ="设备领用")
@SysLog(title = "设备领用", businessType = OperaType.INSERT,logType = 0,module = "设备领用->设备领用",details ="设备领用")
public AjaxResult addData(@Validated @RequestBody EquipmentReqDataVo vo) {
return service.addData(vo);
}
@ -56,14 +56,14 @@ public class AppEquipmentReqController extends BaseController {
* @date 2024/8/5 18:05
*/
@GetMapping("getUseDevices")
public AjaxResult getUseDevices(BraceletParamsDto dto) {
public AjaxResult getUseDevices(AppParamsDto dto) {
return service.getUseDevices(dto);
}
// @RequiresPermissions("app:equipmentReq:returnDevice")
@PostMapping("returnDevice")
@SysLog(title = "施工管控", businessType = OperaType.INSERT,logType = 0,module = "施工管控->设备领用",details ="归还设备")
public AjaxResult returnDevice(@RequestBody BraceletParamsDto dto) {
@SysLog(title = "设备领用", businessType = OperaType.INSERT,logType = 0,module = "设备领用->归还",details ="归还设备")
public AjaxResult returnDevice(@RequestBody AppParamsDto dto) {
return service.returnDevice(dto);
}
}

View File

@ -1,11 +1,19 @@
package com.bonus.app.controller;
import com.bonus.app.service.IAppSafetyHatService;
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.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @className:AppSafetyHatController
@ -17,9 +25,32 @@ import javax.annotation.Resource;
@RestController
@RequestMapping("/appSafetyHat/")
@Slf4j
public class AppSafetyHatController {
public class AppSafetyHatController extends BaseController {
@Resource(name = "IAppSafetyHatService")
private IAppSafetyHatService service;
// @RequiresPermissions("app:safetyHat:list")
@GetMapping("list")
@SysLog(title = "智能安全帽", businessType = OperaType.QUERY,logType = 0,module = "智能安全帽->设备列表",details ="查询智能安全帽列表")
public TableDataInfo list(AppParamsDto dto) {
startPage();
List<SafetyHatVo> list = service.getSafetyHatLists(dto);
return getDataTable(list);
}
// @RequiresPermissions("app:safetyHat:distributionHelmet")
@PostMapping("distributionHelmet")
@SysLog(title = "智能安全帽", businessType = OperaType.UPDATE,logType = 0,module = "智能安全帽->分配设备",details ="分配设备")
public AjaxResult distributionHelmet(@RequestBody SafetyHatDataVo vo){
return service.distributionHelmet(vo);
}
// @RequiresPermissions("app:safetyHat:returnHelmet")
@PostMapping("returnHelmet")
@SysLog(title = "智能安全帽", businessType = OperaType.UPDATE,logType = 0,module = "智能安全帽->分配设备",details ="归还设备")
public AjaxResult returnHelmet(@RequestBody AppParamsDto vo){
return service.returnHelmet(vo);
}
}

View File

@ -78,16 +78,16 @@ public interface AppEquipmentReqMapper {
* @date 2024/8/5 18:08
*/
@MapKey("devId")
List<Map<String, Object>> getUseDevices(BraceletParamsDto dto);
List<Map<String, Object>> getUseDevices(AppParamsDto dto);
/**
* 更新手环箱/手环箱状态
* 更新手环箱/设备状态
* @param dto
* @return void
* @author cwchen
* @date 2024/8/6 9:16
*/
void updateReturnDeviceData(@Param("params") BraceletParamsDto dto,@Param("type") int type);
void updateReturnDeviceData(@Param("params") AppParamsDto dto,@Param("type") int type);
/**
* 更新设备归还状态
@ -96,7 +96,7 @@ public interface AppEquipmentReqMapper {
* @author cwchen
* @date 2024/8/6 9:19
*/
void returnDevice(BraceletParamsDto dto);
void returnDevice(AppParamsDto dto);
/**
* 判断设备是否全部归还
@ -105,7 +105,7 @@ public interface AppEquipmentReqMapper {
* @author cwchen
* @date 2024/8/6 11:10
*/
int isAllDeviceReturn(@Param("params") BraceletParamsDto dto,@Param("type") int type);
int isAllDeviceReturn(@Param("params") AppParamsDto dto,@Param("type") int type);
/**
* 获取绑定班组的班组长

View File

@ -1,7 +1,12 @@
package com.bonus.app.mapper;
import com.bonus.common.entity.app.AppParamsDto;
import com.bonus.common.entity.app.vo.SafetyHatDataVo;
import com.bonus.common.entity.app.vo.SafetyHatVo;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @className:AppSafetyHatMapper
* @author:cwchen
@ -11,4 +16,39 @@ import org.springframework.stereotype.Repository;
*/
@Repository(value = "AppSafetyHatMapper")
public interface AppSafetyHatMapper {
/**
* 班组分配的智能安全帽列表
* @param dto
* @return List<SafetyHatVo>
* @author cwchen
* @date 2024/8/7 16:30
*/
List<SafetyHatVo> getSafetyHatLists(AppParamsDto dto);
/**
* 班组长分配安全帽设备
* @param vo
* @return void
* @author cwchen
* @date 2024/8/7 18:51
*/
void distributionHelmet(SafetyHatDataVo vo);
/**
* 更新设备表领用状态
* @param vo
* @return void
* @author cwchen
* @date 2024/8/7 19:10
*/
void updateDevLyStatus(SafetyHatDataVo vo);
/**
* 更新人员领用的归还状态
* @param dto
* @return void
* @author cwchen
* @date 2024/8/7 19:30
*/
void returnHelmet(AppParamsDto dto);
}

View File

@ -42,7 +42,7 @@ public interface IAppEquipmentReqService {
* @author cwchen
* @date 2024/8/5 18:06
*/
AjaxResult getUseDevices(BraceletParamsDto dto);
AjaxResult getUseDevices(AppParamsDto dto);
/**
* 归还设备
@ -51,5 +51,5 @@ public interface IAppEquipmentReqService {
* @author cwchen
* @date 2024/8/6 9:14
*/
AjaxResult returnDevice(BraceletParamsDto dto);
AjaxResult returnDevice(AppParamsDto dto);
}

View File

@ -1,5 +1,12 @@
package com.bonus.app.service;
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 java.util.List;
/**
* @className:IAppSafetyHatService
* @author:cwchen
@ -8,4 +15,30 @@ package com.bonus.app.service;
* @description:APP-智能安全帽
*/
public interface IAppSafetyHatService {
/**
* 安全帽设备列表
* @param dto
* @return List<SafetyHatVo>
* @author cwchen
* @date 2024/8/7 16:28
*/
List<SafetyHatVo> getSafetyHatLists(AppParamsDto dto);
/**
* 分配安全帽
* @param dto
* @return AjaxResult
* @author cwchen
* @date 2024/8/7 18:15
*/
AjaxResult distributionHelmet(SafetyHatDataVo dto);
/**
* 归还设备
* @param dto
* @return AjaxResult
* @author cwchen
* @date 2024/8/7 19:23
*/
AjaxResult returnHelmet(AppParamsDto dto);
}

View File

@ -95,7 +95,7 @@ public class AppEquipmentReqServiceImpl implements IAppEquipmentReqService {
}
@Override
public AjaxResult getUseDevices(BraceletParamsDto dto) {
public AjaxResult getUseDevices(AppParamsDto dto) {
List<Map<String, Object>> list = new ArrayList<>();
try {
if(StringUtils.isNotBlank(dto.getDevType())){
@ -109,7 +109,7 @@ public class AppEquipmentReqServiceImpl implements IAppEquipmentReqService {
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult returnDevice(BraceletParamsDto dto) {
public AjaxResult returnDevice(AppParamsDto dto) {
try {
boolean isDepartRoleCode = SecurityUtils.isDepartRoleCode();
if(!isDepartRoleCode){

View File

@ -1,11 +1,23 @@
package com.bonus.app.service.impl;
import com.bonus.app.mapper.AppEquipmentReqMapper;
import com.bonus.app.mapper.AppSafetyHatMapper;
import com.bonus.app.service.IAppSafetyHatService;
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.SafetyHatDataVo;
import com.bonus.common.entity.app.vo.SafetyHatVo;
import com.bonus.common.security.utils.SecurityUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @className:AppSafetyHatServiceImpl
@ -20,4 +32,62 @@ public class AppSafetyHatServiceImpl implements IAppSafetyHatService {
@Resource(name = "AppSafetyHatMapper")
private AppSafetyHatMapper mapper;
@Resource(name = "AppEquipmentReqMapper")
private AppEquipmentReqMapper appEquipmentReqMapper;
@Override
public List<SafetyHatVo> getSafetyHatLists(AppParamsDto dto) {
List<SafetyHatVo> list = new ArrayList<>();
try {
list = mapper.getSafetyHatLists(dto);
for (SafetyHatVo vo : list) {
if(StringUtils.isNotBlank(vo.getPhone())){
vo.setPhone(Sm4Utils.decode(vo.getPhone()));
}
}
} catch (Exception e) {
log.error(e.toString(),e);
}
return list;
}
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult distributionHelmet(SafetyHatDataVo vo) {
try {
boolean isTeamRoleCode = SecurityUtils.isTeamRoleCode();
if(!isTeamRoleCode){
return AjaxResult.error("非班组角色,无分配安全帽设备权限");
}
// 班组分配安全帽设备
mapper.distributionHelmet(vo);
// 更新设备表领用状态
mapper.updateDevLyStatus(vo);
return AjaxResult.success();
} catch (Exception e) {
log.error(e.toString(),e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}
@Override
public AjaxResult returnHelmet(AppParamsDto dto) {
try {
boolean isTeamRoleCode = SecurityUtils.isTeamRoleCode();
if(!isTeamRoleCode){
return AjaxResult.error("非班组角色,无归还安全帽设备权限");
}
// 更新人员领用的归还状态
mapper.returnHelmet(dto);
// 更新设备表解绑状态
appEquipmentReqMapper.updateReturnDeviceData(dto,2);
return AjaxResult.success();
} catch (Exception e) {
log.error(e.toString(),e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}
}

View File

@ -3,5 +3,83 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.app.mapper.AppSafetyHatMapper">
<!--班组长分配安全帽设备-->
<insert id="distributionHelmet">
INSERT INTO tb_sh_use
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="proId != null">pro_id,</if>
<if test="teamId">team_id,</if>
<if test="bidId">bid_id,</if>
bid_type,
<if test="devId != null">dev_id,</if>
<if test="bidTime != null">bid_time,</if>
time_type,
people_type,
<if test="useId != null">use_id,</if>
id
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="proId != null">#{proId},</if>
<if test="teamId != null">#{teamId},</if>
<if test="bidId != null">#{bidId},</if>
2,
<if test="devId != null">#{devId},</if>
<if test="bidTime != null">#{bidTime},</if>
1,
0,
<if test="useId != null">#{useId},</if>
null
</trim>
</insert>
<!--更新设备表领用状态-->
<update id="updateDevLyStatus">
UPDATE tb_dev_ly SET pro_id = #{proId},team_id = #{teamId},ly_user = #{bidId},ly_status = 0,ly_time = #{bidTime},user_type = 0,gt_id = #{gtId} WHERE dev_id = #{devId}
</update>
<!--更新人员领用的归还状态-->
<update id="returnHelmet">
UPDATE tb_sh_use SET unbid_time = #{backTime} ,time_type = 0 WHERE id = #{id}
</update>
<!--智能安全帽列表-->
<select id="getSafetyHatLists" resultType="com.bonus.common.entity.app.vo.SafetyHatVo">
SELECT td.dev_name AS devName,
td.dev_code AS devCode,
tdub.id AS id,
tdub.dev_id AS devId,
tdub.ly_time AS lyTime,
tdub.gh_time AS ghTime,
tpe.name AS name,
tpe.phone,
tdu.team_id AS teamId,
IF(tdl.ly_user IS NULL,0,1) AS useStatus,
tdu.pro_id AS proId,
tdu.gt_id AS gtId,
tsu.id AS bidId
FROM tb_dev_use tdu
LEFT JOIN t_work_team twt ON tdu.team_id = twt.team_id AND twt.del_flag = 0
LEFT JOIN tb_dev_use_bid tdub ON tdu.id = tdub.id
LEFT JOIN tb_sh_use tsu ON tdub.id = tsu.use_id AND tdub.dev_id = tsu.dev_id AND tsu.bid_type = 2 AND tsu.time_type = 1
LEFT JOIN tb_dev_ly tdl ON tdub.dev_id = tdl.dev_id
LEFT JOIN tb_people tpe ON tdl.ly_user = tpe.id AND tpe.del_flag = 0
LEFT JOIN tb_project tp ON tp.id = tdu.pro_id AND tp.del_flag = 0
LEFT JOIN tb_device td ON tdub.dev_id = td.id AND td.del_flag = 0
<where>
<if test="teamName!=null and teamName!=''">
INSTR(twt.team_name,#{teamName}) > 0
</if>
<if test="useName!=null and useName!=''">
AND INSTR(twt.team_name,#{useName}) > 0
</if>
<if test="roleCode!='team' and roleCode!='administrators'">
AND tdu.team_id = -1
</if>
<if test="roleCode=='team'">
AND tdu.team_id = #{teamId} AND tdub.gh_time IS NULL
</if>
<if test="roleCode=='depart'">
AND tp.depart_id = #{departId} AND tdl.ly_user IS NOT NULL
</if>
AND td.dev_type = 'aqm' AND tdu.del_flag = 0
</where>
</select>
</mapper>

View File

@ -76,4 +76,16 @@ public class SelectController {
public AjaxResult getPowerLists(SysParamsDto dto) {
return service.getPowerLists(dto);
}
/**
* 根据班组id获取班组所属人员
* @param dto
* @return AjaxResult
* @author cwchen
* @date 2024/8/7 18:24
*/
@GetMapping("/getTeamPeople")
public AjaxResult getTeamPeople(SysParamsDto dto) {
return service.getTeamPeople(dto);
}
}

View File

@ -21,4 +21,5 @@ public class SysSelectVo {
* 名称
*/
private String name;
}

View File

@ -55,4 +55,13 @@ public interface SelectMapper {
* @date 2024/8/5 17:55
*/
List<SysSelectVo> getPowerLists(SysParamsDto dto);
/**
* 根据班组id获取班组所属人员
* @param dto
* @return List<SysSelectVo>
* @author cwchen
* @date 2024/8/7 18:25
*/
List<SysSelectVo> getTeamPeople(SysParamsDto dto);
}

View File

@ -48,4 +48,13 @@ public interface ISelectService {
* @date 2024/8/5 17:55
*/
AjaxResult getPowerLists(SysParamsDto dto);
/**
* 根据班组id获取班组所属人员
* @param dto
* @return AjaxResult
* @author cwchen
* @date 2024/8/7 18:25
*/
AjaxResult getTeamPeople(SysParamsDto dto);
}

View File

@ -1,5 +1,7 @@
package com.bonus.system.service.impl;
import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.core.utils.encryption.Sm4Utils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.system.domain.SysParamsDto;
import com.bonus.system.domain.vo.SysSelectVo;
@ -69,4 +71,21 @@ public class SelectServiceImpl implements ISelectService {
return AjaxResult.error();
}
}
@Override
public AjaxResult getTeamPeople(SysParamsDto dto) {
try {
List<SysSelectVo> list = mapper.getTeamPeople(dto);
for (SysSelectVo vo : list) {
String[] valArr = vo.getName().split("-");
if(StringUtils.isNotEmpty(valArr[1])){
vo.setName(valArr[0] + "-" + Sm4Utils.decode(valArr[1]));
}
}
return AjaxResult.success(list);
} catch (Exception e) {
log.error(e.toString(),e);
return AjaxResult.error();
}
}
}

View File

@ -43,4 +43,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND del_flag = 0
</where>
</select>
<!--根据班组id获取班组所属人员-->
<select id="getTeamPeople" resultType="com.bonus.system.domain.vo.SysSelectVo">
SELECT id,CONCAT(name,'-',phone) AS name FROM tb_people WHERE team_id = #{teamId}
</select>
</mapper>