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 7eba5f7..2d6d496 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 @@ -48,6 +48,9 @@ public class BusinessConstants { public static final String LAT = "纬度"; public static final String LON = "经度"; + public final static Integer CONFIG_TYPE = 1; + public final static Integer CONFIG_TYPE2 = 2; + public final static Integer CELL_1 = 1; public final static Integer CELL_2 = 2; diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/TimeValidator.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/TimeValidator.java new file mode 100644 index 0000000..e0b66d1 --- /dev/null +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/TimeValidator.java @@ -0,0 +1,47 @@ +package com.bonus.common.core.utils; + +import org.apache.commons.lang3.StringUtils; + +import java.util.regex.Pattern; + +/** + * @className:TimeValidator + * @author:cwchen + * @date:2024-08-10-15:15 + * @version:1.0 + * @description:时间验证 + */ +public class TimeValidator { + + private static final Pattern TIME_PATTERN = Pattern.compile("^([01]?[0-9]|2[0-3]):[0-5][0-9]$"); + private static final Pattern TIME_PATTERN2 = Pattern.compile("^[1-9]$|^10$"); + + /** + * 时分校验 + * @param time + * @return boolean + * @author cwchen + * @date 2024/8/10 15:16 + */ + public static boolean isValidTime(String time) { + if (StringUtils.isEmpty(time)) { + return false; + } + return TIME_PATTERN.matcher(time).matches(); + } + + /** + * 1-10 小时验证 + * @param time + * @return boolean + * @author cwchen + * @date 2024/8/10 15:20 + */ + public static boolean isValidTime2(String time) { + if (StringUtils.isEmpty(time)) { + return false; + } + return TIME_PATTERN2.matcher(time).matches(); + } + +} diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/CheckConfigVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/CheckConfigVo.java new file mode 100644 index 0000000..15cd417 --- /dev/null +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/CheckConfigVo.java @@ -0,0 +1,32 @@ +package com.bonus.common.entity.bracelet.vo; + +import lombok.Data; + +import javax.validation.constraints.*; + +/** + * @className:CheckConfigVo + * @author:cwchen + * @date:2024-08-10-14:57 + * @version:1.0 + * @description:自动验证-vo + */ +@Data +public class CheckConfigVo { + + /** + * 配置id + */ + + private Long configId; + + /** + * 1.固定时间验证 2.间隔时间验证 + */ + @NotNull(message = "验证类型不能为空") + private Integer configType; + + @NotBlank(message = "时间不能为空") + private String time; + +} diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ConsControlController.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ConsControlController.java index f3a3804..ef4a294 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ConsControlController.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/ConsControlController.java @@ -5,11 +5,13 @@ 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.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; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -118,4 +120,22 @@ public class ConsControlController extends BaseController { public AjaxResult spotCheck(@RequestBody BraceletParamsDto dto){ return service.spotCheck(dto); } + + @PostMapping("checkConfig") + @SysLog(title = "施工管控", businessType = OperaType.INSERT, logType = 0, module = "施工管控->人员管控", details = "自动验证配置") + public AjaxResult checkConfig(@Validated @RequestBody CheckConfigVo vo){ + return service.checkConfig(vo); + } + + /** + * 获取自动验证配置 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/8/10 15:37 + */ + @GetMapping("getCheckConfig") + public AjaxResult getCheckConfig(BraceletParamsDto dto){ + return service.getCheckConfig(dto); + } } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java index cda4556..f7d5d76 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/ConsControlMapper.java @@ -1,10 +1,7 @@ package com.bonus.bracelet.mapper; import com.bonus.common.entity.bracelet.BraceletParamsDto; -import com.bonus.common.entity.bracelet.vo.BallTreeVo; -import com.bonus.common.entity.bracelet.vo.PersonTreeVo; -import com.bonus.common.entity.bracelet.vo.TeamPeopleTreeVo; -import com.bonus.common.entity.bracelet.vo.WarnInfoVo; +import com.bonus.common.entity.bracelet.vo.*; import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -121,4 +118,42 @@ public interface ConsControlMapper { * @date 2024/8/10 13:12 */ List getTeamPersonByTower(BraceletParamsDto dto); + + /** + * 删除验证时间配置项 + * @return void + * @author cwchen + * @date 2024/8/10 15:27 + */ + void delConfig(); + /** + * 删除验证时间配置内容项 + * @return void + * @author cwchen + * @date 2024/8/10 15:27 + */ + void delConfigItems(); + /** + * 添加验证时间配置项 + * @return void + * @author cwchen + * @date 2024/8/10 15:27 + */ + void addConfig(CheckConfigVo vo); + /** + * 添加验证时间配置内容项 + * @return void + * @author cwchen + * @date 2024/8/10 15:27 + */ + void addConfigItems(@Param("params") CheckConfigVo vo,@Param("val") String time); + + /** + * 获取自动验证配置 + * @param dto + * @return List + * @author cwchen + * @date 2024/8/10 15:39 + */ + List getCheckConfig(BraceletParamsDto dto); } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IConsControlService.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IConsControlService.java index ae9bfb0..dfa74d7 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IConsControlService.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/IConsControlService.java @@ -2,6 +2,7 @@ package com.bonus.bracelet.service; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.entity.bracelet.BraceletParamsDto; +import com.bonus.common.entity.bracelet.vo.CheckConfigVo; import com.bonus.common.entity.bracelet.vo.WarnInfoVo; import java.util.List; @@ -85,4 +86,22 @@ public interface IConsControlService { * @date 2024/8/10 14:27 */ AjaxResult spotCheck(BraceletParamsDto dto); + + /** + * 自动验证配置 + * @param vo + * @return AjaxResult + * @author cwchen + * @date 2024/8/10 14:58 + */ + AjaxResult checkConfig(CheckConfigVo vo); + + /** + * 获取自动验证配置 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/8/10 15:38 + */ + AjaxResult getCheckConfig(BraceletParamsDto dto); } 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 e0ac0fa..64ee3ef 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 @@ -10,20 +10,20 @@ import com.bonus.common.core.constant.HttpStatus; import com.bonus.common.core.constant.SecurityConstants; import com.bonus.common.core.domain.R; 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.bracelet.BraceletParamsDto; import com.bonus.common.core.utils.BuildTreeUtil; -import com.bonus.common.entity.bracelet.vo.BallTreeVo; -import com.bonus.common.entity.bracelet.vo.PersonTreeVo; -import com.bonus.common.entity.bracelet.vo.TeamPeopleTreeVo; -import com.bonus.common.entity.bracelet.vo.WarnInfoVo; +import com.bonus.common.entity.bracelet.vo.*; import com.bonus.system.api.RemoteFileService; import com.bonus.system.api.domain.SysFile; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; 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.*; @@ -250,6 +250,57 @@ public class ConsControlServiceImpl implements IConsControlService { return AjaxResult.success("已下达手环人脸验证抽检指令"); } + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult checkConfig(CheckConfigVo vo) { + try { + // 删除配置项 + mapper.delConfig(); + mapper.delConfigItems(); + if (Objects.equals(vo.getConfigType(), BusinessConstants.CONFIG_TYPE)) { + // 固定时间验证 + String[] timeArr = vo.getTime().split(","); + for (String time : timeArr) { + if(!TimeValidator.isValidTime(time)){ + return AjaxResult.error("时间格式错误(HH:MM)"); + } + } + } else if (Objects.equals(vo.getConfigType(), BusinessConstants.CONFIG_TYPE2)) { + // 间隔时间验证 + if (!TimeValidator.isValidTime2(vo.getTime())) { + return AjaxResult.error("间隔时间应在1-10的正整数范围"); + } + } + // 添加配置项、配置项内容 + mapper.addConfig(vo); + if (Objects.equals(vo.getConfigType(), BusinessConstants.CONFIG_TYPE)) { + String[] timeArr = vo.getTime().split(","); + for (String time : timeArr) { + mapper.addConfigItems(vo,time); + } + } else if (Objects.equals(vo.getConfigType(), BusinessConstants.CONFIG_TYPE2)) { + mapper.addConfigItems(vo,vo.getTime()); + } + + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + log.error(e.toString(), e); + return AjaxResult.error(); + } + return AjaxResult.success(); + } + + @Override + public AjaxResult getCheckConfig(BraceletParamsDto dto) { + List list = new ArrayList<>(); + try { + list = mapper.getCheckConfig(dto); + } catch (Exception e) { + throw new RuntimeException(e); + } + return AjaxResult.success(list); + } + /** * 班组人员/临时人员 是否超出正常施工范围 * 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 e8f7d56..23139d6 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 @@ -3,6 +3,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + INSERT INTO tb_config(config_type,config_id) VALUES ( + #{configType},null + ) + + + + INSERT INTO tb_config_items + + config_time, + id, + config_id, + + + #{val}, + null, + #{params.configId}, + + + + + DELETE FROM tb_config + + + + DELETE FROM tb_config_items + + + \ No newline at end of file