Commit 465954d092edb5d67bae622678be6e8e2fcfccc0

Authored by liujun001
1 parent 17f3bc80

对接蓝斯接口

Showing 64 changed files with 3502 additions and 236 deletions
Bsth-admin/src/main/java/com/ruoyi/controller/dss/DriverHeartbeatController.java
@@ -2,7 +2,9 @@ package com.ruoyi.controller.dss; @@ -2,7 +2,9 @@ package com.ruoyi.controller.dss;
2 2
3 import com.ruoyi.common.core.controller.BaseController; 3 import com.ruoyi.common.core.controller.BaseController;
4 import com.ruoyi.common.core.domain.AjaxResult; 4 import com.ruoyi.common.core.domain.AjaxResult;
  5 +import com.ruoyi.equipment.service.IEquipmentService;
5 import io.swagger.annotations.Api; 6 import io.swagger.annotations.Api;
  7 +import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.web.bind.annotation.RequestMapping; 8 import org.springframework.web.bind.annotation.RequestMapping;
7 import org.springframework.web.bind.annotation.RestController; 9 import org.springframework.web.bind.annotation.RestController;
8 10
@@ -11,10 +13,17 @@ import org.springframework.web.bind.annotation.RestController; @@ -11,10 +13,17 @@ import org.springframework.web.bind.annotation.RestController;
11 * @date 2024年06月25日 16:38 13 * @date 2024年06月25日 16:38
12 */ 14 */
13 @RestController 15 @RestController
14 -@RequestMapping("/dss/Driver/Heartbeat") 16 +@RequestMapping("/dss/Driver")
15 @Api(tags = "【蓝斯一期】岗前设备报警信息") 17 @Api(tags = "【蓝斯一期】岗前设备报警信息")
16 public class DriverHeartbeatController extends BaseController { 18 public class DriverHeartbeatController extends BaseController {
17 - public AjaxResult AddHeartbeat(){ 19 + @Autowired
  20 + private IEquipmentService equipmentService;
  21 + public AjaxResult auth(){
18 22
  23 +// Auth
  24 + return null;
19 } 25 }
  26 +// public AjaxResult AddHeartbeat(){
  27 +//
  28 +// }
20 } 29 }
Bsth-admin/src/main/java/com/ruoyi/controller/dss/DssDriverController.java 0 → 100644
  1 +package com.ruoyi.controller.dss;
  2 +
  3 +import cn.hutool.core.convert.Convert;
  4 +import cn.hutool.system.UserInfo;
  5 +import com.ruoyi.common.core.controller.BaseController;
  6 +import com.ruoyi.common.core.domain.AjaxResult;
  7 +import com.ruoyi.domain.driver.NewDriver;
  8 +import com.ruoyi.domain.driver.dss.syn.DrivePosEnum;
  9 +import com.ruoyi.domain.driver.dss.syn.login.dto.LoginDriverDTO;
  10 +import com.ruoyi.domain.driver.dss.syn.login.vo.LoginDriverVo;
  11 +import com.ruoyi.domain.driver.dss.syn.login.vo.LoginUserInfoVo;
  12 +import com.ruoyi.service.driver.NewDriverService;
  13 +import io.swagger.annotations.Api;
  14 +import lombok.extern.slf4j.Slf4j;
  15 +import org.apache.commons.collections4.CollectionUtils;
  16 +import org.springframework.beans.factory.annotation.Autowired;
  17 +import org.springframework.validation.BindingResult;
  18 +import org.springframework.web.bind.annotation.RequestMapping;
  19 +import org.springframework.web.bind.annotation.RestController;
  20 +
  21 +import javax.validation.Valid;
  22 +import java.util.*;
  23 +
  24 +/**
  25 + * @author liujun
  26 + * @date 2024年07月11日 16:37
  27 + */
  28 +@RestController
  29 +@Slf4j
  30 +@RequestMapping("/dss/Driver")
  31 +@Api(tags = "【蓝斯一期】人员信息")
  32 +public class DssDriverController extends BaseController {
  33 + @Autowired
  34 + private NewDriverService newDriverService;
  35 +
  36 + public AjaxResult login(@Valid LoginDriverDTO loginDriverDTO, BindingResult bindingResult) {
  37 + if (bindingResult.hasErrors()) {
  38 + return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
  39 + }
  40 + Integer id = checkFace();
  41 + if (Objects.isNull(id)) {
  42 + return AjaxResult.error("登陆数据错误,无法识别人脸");
  43 + }
  44 + NewDriver newDriver = newDriverService.getById(id);
  45 + return AjaxResult.success(convertNewDriver(newDriver));
  46 + }
  47 +
  48 + /***
  49 + * 第三方识别人脸
  50 + * @author liujun
  51 + * @date 2024/7/11 17:04
  52 + * @return java.lang.Integer
  53 + */
  54 + private Integer checkFace() {
  55 + List<NewDriver> lists = newDriverService.list(new NewDriver());
  56 + if (CollectionUtils.isEmpty(lists)) {
  57 + return null;
  58 + }
  59 + //TODO 对接第三方
  60 +
  61 + return 10;
  62 + }
  63 +
  64 + /***
  65 + * 登陆转换
  66 + * @author liujun
  67 + * @date 2024/7/11 17:26
  68 + * @param newDriver
  69 + * @return com.ruoyi.domain.driver.dss.syn.login.vo.LoginDriverVo
  70 + */
  71 + private LoginDriverVo convertNewDriver(NewDriver newDriver) {
  72 + LoginDriverVo loginDriverVo = new LoginDriverVo();
  73 + loginDriverVo.setDriverCode(newDriver.getIcRfid());
  74 + loginDriverVo.setDriverName(newDriver.getPersonnelName());
  75 + loginDriverVo.setWorkCode(newDriver.getJobCode());
  76 + loginDriverVo.setStaffCode(newDriver.getJobCode());
  77 + loginDriverVo.setStaffType(DrivePosEnum.getObjValueOfLabel(newDriver.getPosts()));
  78 + loginDriverVo.setCropFacePhotoUrl(newDriver.getImage());
  79 + loginDriverVo.setBlueTooth(newDriver.getBlueTooth());
  80 +
  81 + loginDriverVo.setFaceFeature(newDriver.getFaceFeature());
  82 + loginDriverVo.setSynState(newDriver.getInteger());
  83 + loginDriverVo.setSynContent(newDriver.getSyncontent());
  84 + loginDriverVo.setCsn(newDriver.getCsn());
  85 +
  86 + //TODO 是否强制做检查
  87 + loginDriverVo.setHealthCheck(0);
  88 + //TODO 当日最后一次登签的签到状态
  89 + loginDriverVo.setSignInType(0);
  90 + //TODO 当日最后一次登签的签退状态
  91 + loginDriverVo.setSignOutType(0);
  92 +
  93 +
  94 + Set<Integer> postSets = new HashSet<>();
  95 + loginDriverVo.setStaffTypeItem(postSets);
  96 +
  97 + LoginUserInfoVo loginUserInfoVo = new LoginUserInfoVo();
  98 + loginUserInfoVo.setStaffId(Convert.toStr(newDriver.getId()));
  99 + loginUserInfoVo.setStaffName(newDriver.getPersonnelName());
  100 + loginUserInfoVo.setIcCardNo(newDriver.getIcRfid());
  101 + loginUserInfoVo.setFacePhotoPath(newDriver.getImage());
  102 +
  103 + loginDriverVo.setUserInfo(loginUserInfoVo);
  104 +
  105 + return loginDriverVo;
  106 + }
  107 +}
Bsth-admin/src/main/java/com/ruoyi/controller/dss/DssEquipmentController.java 0 → 100644
  1 +package com.ruoyi.controller.dss;
  2 +
  3 +import cn.hutool.core.convert.Convert;
  4 +import com.alibaba.fastjson2.JSON;
  5 +import com.ruoyi.common.constant.Constants;
  6 +import com.ruoyi.common.core.controller.BaseController;
  7 +import com.ruoyi.common.core.domain.AjaxResult;
  8 +import com.ruoyi.common.core.domain.entity.SysDictData;
  9 +import com.ruoyi.common.core.domain.entity.SysDictType;
  10 +import com.ruoyi.common.core.domain.model.LoginUser;
  11 +import com.ruoyi.common.utils.MessageUtils;
  12 +import com.ruoyi.domain.dss.equipment.dto.EquipmentAuthDTO;
  13 +import com.ruoyi.domain.dss.equipment.dto.EquipmentSelfcheckCamerasDto;
  14 +import com.ruoyi.domain.dss.equipment.dto.EquipmentSelfcheckDto;
  15 +import com.ruoyi.domain.dss.equipment.dto.HeartbeatDTO;
  16 +import com.ruoyi.domain.dss.equipment.vo.AuthVo;
  17 +import com.ruoyi.domain.dss.equipment.vo.EquimentAddressParamVo;
  18 +import com.ruoyi.domain.dss.equipment.vo.EquimentVideoParamVo;
  19 +import com.ruoyi.domain.dss.equipment.vo.EquipmentConfigVo;
  20 +import com.ruoyi.domain.equipment.heartbeat.LingangEquipmentHeartbeat;
  21 +import com.ruoyi.domain.equipment.self.check.LingangEquimentSelfCheck;
  22 +import com.ruoyi.equipment.domain.Equipment;
  23 +import com.ruoyi.equipment.service.IEquipmentService;
  24 +import com.ruoyi.framework.manager.AsyncManager;
  25 +import com.ruoyi.framework.manager.factory.AsyncFactory;
  26 +import com.ruoyi.framework.security.context.AuthenticationContextHolder;
  27 +import com.ruoyi.framework.web.service.TokenService;
  28 +import com.ruoyi.service.equipment.heartbeat.LingangEquipmentHeartbeatService;
  29 +import com.ruoyi.service.equipment.self.check.LingangEquimentSelfCheckService;
  30 +import com.ruoyi.system.service.ISysDictDataService;
  31 +import com.ruoyi.system.service.ISysDictTypeService;
  32 +import io.swagger.annotations.Api;
  33 +import io.swagger.annotations.ApiOperation;
  34 +import io.swagger.annotations.ApiParam;
  35 +import io.swagger.v3.oas.annotations.Parameter;
  36 +import lombok.extern.slf4j.Slf4j;
  37 +import org.apache.commons.collections4.CollectionUtils;
  38 +import org.apache.commons.lang3.ArrayUtils;
  39 +import org.apache.commons.lang3.StringUtils;
  40 +import org.springframework.beans.BeanUtils;
  41 +import org.springframework.beans.factory.annotation.Autowired;
  42 +import org.springframework.security.authentication.AuthenticationManager;
  43 +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  44 +import org.springframework.security.core.Authentication;
  45 +import org.springframework.validation.BindingResult;
  46 +import org.springframework.web.bind.annotation.*;
  47 +
  48 +import javax.annotation.Resource;
  49 +import javax.validation.Valid;
  50 +import java.math.BigDecimal;
  51 +import java.util.*;
  52 +import java.util.stream.Collectors;
  53 +
  54 +/**
  55 + * @author liujun
  56 + * @date 2024年07月05日 15:29
  57 + */
  58 +@RestController
  59 +@Slf4j
  60 +@RequestMapping("/dss/Driver")
  61 +@Api(tags = "【蓝斯一期】设备信息")
  62 +public class DssEquipmentController extends BaseController {
  63 + @Autowired
  64 + private IEquipmentService equipmentService;
  65 + @Resource
  66 + private AuthenticationManager authenticationManager;
  67 + @Autowired
  68 + private TokenService tokenService;
  69 + @Autowired
  70 + private LingangEquipmentHeartbeatService lingangEquipmentHeartbeatService;
  71 + @Autowired
  72 + private ISysDictTypeService sysDictTypeService;
  73 + @Autowired
  74 + private ISysDictDataService sysDictDataService;
  75 + @Autowired
  76 + private LingangEquimentSelfCheckService lingangEquimentSelfCheckServicelingangEquimentSelfCheckService;
  77 +
  78 +
  79 + private static final String[] GET_CONFIG_DICT_KEY = {"drinking", "drunkenness", "videoParam", "addressParam"};
  80 +
  81 +
  82 + @ApiOperation("设备获取访问令牌")
  83 + @GetMapping("/Auth")
  84 + public AjaxResult auth(@Valid EquipmentAuthDTO dto, BindingResult bindingResult) {
  85 + if (bindingResult.hasErrors()) {
  86 + return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
  87 + }
  88 +
  89 + Equipment equipment = equipmentService.getOneByDeviceId(dto.getDevice());
  90 + if (Objects.isNull(equipment)) {
  91 + log.info("[{}] equipment is null", dto.getDevice());
  92 + return AjaxResult.error("设备号错误,请检查设备号");
  93 + }
  94 + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(equipment.getDeviceId(), equipment.getId());
  95 + AuthenticationContextHolder.setContext(authenticationToken);
  96 + Authentication authentication = authenticationManager.authenticate(authenticationToken);
  97 + AsyncManager.me().execute(AsyncFactory.recordLogininfor(dto.getDevice(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
  98 + LoginUser loginUser = (LoginUser) authentication.getPrincipal();
  99 + String token = tokenService.createToken(loginUser, Constants.EQUIPMENT_KEY);
  100 +
  101 + AuthVo vo = new AuthVo(token);
  102 +
  103 + return AjaxResult.success(vo);
  104 + }
  105 +
  106 + @PostMapping("/Heartbeat")
  107 + @ApiOperation("设备报警信息(心跳包)")
  108 + public AjaxResult heartbeat(@Valid HeartbeatDTO heartbeatDTO, BindingResult bindingResult) {
  109 + if (bindingResult.hasErrors()) {
  110 + return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
  111 + }
  112 + List<LingangEquipmentHeartbeat> heartbeats = convertHeartbeatDTO(heartbeatDTO);
  113 + if (CollectionUtils.isNotEmpty(heartbeats)) {
  114 + lingangEquipmentHeartbeatService.saveBatch(heartbeats);
  115 + }
  116 + return AjaxResult.success();
  117 + }
  118 +
  119 + @GetMapping(value = "/getConfig")
  120 + @ApiOperation("设备获取远程参数配置")
  121 + @Parameter(name = "device", description = "设备号", required = true)
  122 + public AjaxResult getConfig(@RequestParam(value = "device") String device) {
  123 + if (StringUtils.isEmpty(device)) {
  124 + return AjaxResult.error("设备号不能为空");
  125 + }
  126 +
  127 + Set<String> keys = Arrays.stream(GET_CONFIG_DICT_KEY).collect(Collectors.toSet());
  128 +
  129 + SysDictData sysDictData = new SysDictData();
  130 + sysDictData.setStatus(Constants.ENABLE_STR);
  131 +
  132 + List<SysDictData> list = sysDictDataService.queryDictDateList(sysDictData, keys);
  133 + EquipmentConfigVo configVo = combitionEquipmentConfigVo(list);
  134 + return AjaxResult.success(configVo);
  135 + }
  136 +
  137 +
  138 + @PostMapping("/selfcheck")
  139 + @ApiOperation("设备获取远程参数配置")
  140 + public AjaxResult selfCheck(@Valid EquipmentSelfcheckDto equipmentSelfcheckDto, BindingResult bindingResult) {
  141 + if (bindingResult.hasErrors()) {
  142 + return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
  143 + }
  144 + LingangEquimentSelfCheck selfCheck = convertLingangEquimentSelfCheck(equipmentSelfcheckDto);
  145 + lingangEquimentSelfCheckServicelingangEquimentSelfCheckService.insert(selfCheck);
  146 + return AjaxResult.success();
  147 + }
  148 +
  149 + private List<LingangEquipmentHeartbeat> convertHeartbeatDTO(HeartbeatDTO heartbeatDTO) {
  150 + if (Objects.isNull(heartbeatDTO)) {
  151 + return Collections.emptyList();
  152 + }
  153 + int length = ArrayUtils.getLength(heartbeatDTO.getAlarm());
  154 +
  155 + List<LingangEquipmentHeartbeat> heartbeats = new ArrayList<>(length);
  156 + if (length == 0) {
  157 + heartbeats.add(convertHeartbeatDTO(heartbeatDTO, null));
  158 + } else {
  159 + for (int i = 0; i < length; i++) {
  160 + heartbeats.add(convertHeartbeatDTO(heartbeatDTO, heartbeatDTO.getAlarm()[i]));
  161 + }
  162 + }
  163 + return heartbeats;
  164 + }
  165 +
  166 + private LingangEquipmentHeartbeat convertHeartbeatDTO(HeartbeatDTO heartbeatDTO, Integer alarm) {
  167 + LingangEquipmentHeartbeat heartbeat = new LingangEquipmentHeartbeat();
  168 + heartbeat.setAlarm(alarm);
  169 + heartbeat.setTime(heartbeatDTO.getTime());
  170 + heartbeat.setDevice(heartbeatDTO.getDevice());
  171 + heartbeat.setCreateTime(new Date());
  172 + if (CollectionUtils.isNotEmpty(heartbeatDTO.getExKeys())) {
  173 + heartbeat.setExkeys(JSON.toJSONString(heartbeatDTO.getExKeys()));
  174 + }
  175 + return heartbeat;
  176 + }
  177 +
  178 + private EquipmentConfigVo combitionEquipmentConfigVo(List<SysDictData> sysDictDatas) {
  179 + if (CollectionUtils.isEmpty(sysDictDatas)) {
  180 + return null;
  181 + }
  182 + EquipmentConfigVo configVo = new EquipmentConfigVo();
  183 + EquimentVideoParamVo equimentVideoParamVo = new EquimentVideoParamVo();
  184 + EquimentAddressParamVo equimentAddressParamVo = new EquimentAddressParamVo();
  185 +
  186 + for (SysDictData sysDictData : sysDictDatas) {
  187 + if (Objects.equals(sysDictData.getDictType(), "drinking") && StringUtils.isNotEmpty(sysDictData.getDictValue())) {
  188 + configVo.setDrinking(Convert.toBigDecimal(sysDictData.getDictValue()));
  189 + } else if (Objects.equals(sysDictData.getDictType(), "drunkenness") && StringUtils.isNotEmpty(sysDictData.getDictValue())) {
  190 + configVo.setDrunkenness(Convert.toBigDecimal(sysDictData.getDictValue()));
  191 + } else if (Objects.equals(sysDictData.getDictType(), "videoParam") && StringUtils.isNotEmpty(sysDictData.getDictValue())) {
  192 + if (StringUtils.equals(sysDictData.getDiscKey(), "upflag")) {
  193 + equimentVideoParamVo.setUpflag(Convert.toInt(sysDictData.getDictValue()));
  194 + } else if (StringUtils.equals(sysDictData.getDiscKey(), "timespan")) {
  195 + equimentVideoParamVo.setTimespan(Convert.toInt(sysDictData.getDictValue()));
  196 + } else if (StringUtils.equals(sysDictData.getDiscKey(), "url")) {
  197 + equimentVideoParamVo.setUrl(sysDictData.getDictValue());
  198 + } else if (StringUtils.equals(sysDictData.getDiscKey(), "saveday")) {
  199 + equimentVideoParamVo.setSaveday(Convert.toInt(sysDictData.getDictValue()));
  200 + } else if (StringUtils.equals(sysDictData.getDiscKey(), "videoTimeSlot")) {
  201 + equimentVideoParamVo.setVideoTimeSlot(sysDictData.getDictValue());
  202 + }
  203 + } else if (Objects.equals(sysDictData.getDictType(), "addressParam") && StringUtils.isNotEmpty(sysDictData.getDictValue())) {
  204 + if (StringUtils.equals(sysDictData.getDiscKey(), "upgradeAddress")) {
  205 + equimentAddressParamVo.setUpgradeAddress(sysDictData.getDictValue());
  206 + } else if (StringUtils.equals(sysDictData.getDiscKey(), "integer")) {
  207 + equimentAddressParamVo.setInteger(Convert.toInt(sysDictData.getDictValue()));
  208 + }
  209 + }
  210 + }
  211 +
  212 + configVo.setAddressParam(equimentAddressParamVo);
  213 + configVo.setVideoParam(equimentVideoParamVo);
  214 + return configVo;
  215 + }
  216 +
  217 + private LingangEquimentSelfCheck convertLingangEquimentSelfCheck(EquipmentSelfcheckDto dto) {
  218 + LingangEquimentSelfCheck selfCheck = new LingangEquimentSelfCheck();
  219 + BeanUtils.copyProperties(dto, selfCheck);
  220 + if (CollectionUtils.isNotEmpty(dto.getCameras())) {
  221 + selfCheck.setCameras(JSON.toJSONString(dto.getCameras()));
  222 + Optional<EquipmentSelfcheckCamerasDto> optional = dto.getCameras().stream().filter(c->Objects.equals(c.getStatus(),1)).findFirst();
  223 + selfCheck.setCamerasSaveExceptionFlag(optional.isPresent());
  224 + }
  225 +
  226 + return selfCheck;
  227 + }
  228 +
  229 +
  230 +}
Bsth-admin/src/main/java/com/ruoyi/controller/dss/DssFaceController.java 0 → 100644
  1 +package com.ruoyi.controller.dss;
  2 +
  3 +
  4 +import cn.hutool.core.convert.Convert;
  5 +import com.ruoyi.common.core.controller.BaseController;
  6 +import com.ruoyi.common.core.domain.AjaxResult;
  7 +import com.ruoyi.domain.driver.NewDriver;
  8 +import com.ruoyi.domain.driver.dss.syn.DrivePosEnum;
  9 +import com.ruoyi.domain.driver.dss.syn.dto.DssDriveQueryDTO;
  10 +import com.ruoyi.domain.driver.dss.syn.res.dto.FaceRegisterDTO;
  11 +import com.ruoyi.domain.driver.dss.syn.res.dto.ResDataDriveDTO;
  12 +import com.ruoyi.domain.driver.dss.syn.vo.DssDriveVo;
  13 +import com.ruoyi.service.driver.NewDriverService;
  14 +import io.swagger.annotations.Api;
  15 +import io.swagger.annotations.ApiOperation;
  16 +import lombok.extern.slf4j.Slf4j;
  17 +import org.apache.commons.collections4.CollectionUtils;
  18 +import org.springframework.beans.factory.annotation.Autowired;
  19 +import org.springframework.validation.BindingResult;
  20 +import org.springframework.web.bind.annotation.PostMapping;
  21 +import org.springframework.web.bind.annotation.RequestMapping;
  22 +import org.springframework.web.bind.annotation.RestController;
  23 +
  24 +import javax.validation.Valid;
  25 +import java.util.Collections;
  26 +import java.util.HashSet;
  27 +import java.util.List;
  28 +import java.util.Set;
  29 +import java.util.stream.Collectors;
  30 +
  31 +/**
  32 + * @author liujun
  33 + * @date 2024年07月11日 14:07
  34 + */
  35 +
  36 +@Slf4j
  37 +@RestController
  38 +@RequestMapping("/dss/Driver")
  39 +@Api(tags = "【蓝斯一期】人脸信息")
  40 +public class DssFaceController extends BaseController {
  41 +
  42 + @Autowired
  43 + private NewDriverService newDriverService;
  44 +
  45 + @PostMapping("/syn/reqData")
  46 + @ApiOperation("获取数据库人员信息")
  47 + public List<DssDriveVo> queryDriver(@Valid DssDriveQueryDTO dto, BindingResult bindingResult) {
  48 + List<NewDriver> drivers = newDriverService.list();
  49 + return convertDssDriveVo(drivers);
  50 + }
  51 +
  52 + @ApiOperation("终端同步人脸数据结果上报")
  53 + @PostMapping(value = "/syn/resData")
  54 + public AjaxResult insertDriver(@Valid ResDataDriveDTO dto, BindingResult bindingResult) {
  55 + if (bindingResult.hasErrors()) {
  56 + return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
  57 + }
  58 + NewDriver newDriver = convertNewDriver(dto);
  59 + boolean flag = newDriverService.updateClient(newDriver);
  60 + return flag ? AjaxResult.success() : AjaxResult.error();
  61 + }
  62 +
  63 + @ApiOperation(("人脸注册"))
  64 + @PostMapping(value = "FaceRegister")
  65 + public AjaxResult faceRegister(@Valid FaceRegisterDTO dto, BindingResult bindingResult) {
  66 + if (bindingResult.hasErrors()) {
  67 + return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
  68 + }
  69 + NewDriver newDriver = convertFaceRegister(dto);
  70 + boolean flag = newDriverService.faceRegister(newDriver);
  71 + return flag ? AjaxResult.success() : AjaxResult.error();
  72 + }
  73 +
  74 +
  75 + private List<DssDriveVo> convertDssDriveVo(List<NewDriver> newDrivers) {
  76 + if (CollectionUtils.isEmpty(newDrivers)) {
  77 + return Collections.emptyList();
  78 + }
  79 +
  80 + return newDrivers.stream().map(driver -> {
  81 + DssDriveVo vo = new DssDriveVo();
  82 + vo.setStaffId(driver.getJobCode());
  83 + vo.setStaffName(driver.getPersonnelName());
  84 + vo.setIcCardNo(driver.getIcCardCode());
  85 + vo.setFacePhotoPath(driver.getImage());
  86 + vo.setCsn(driver.getIdRfid());
  87 + vo.setFaceFeature(driver.getFaceFeature());
  88 + vo.setBlueTooth(driver.getBlueTooth());
  89 + vo.setSynContent(driver.getSyncontent());
  90 +
  91 + Integer post = DrivePosEnum.getObjValueOfLabel(driver.getPosts());
  92 + Set<Integer> posts = new HashSet<>();
  93 + posts.add(post);
  94 +
  95 + vo.setStaffTypeItem(posts);
  96 +
  97 + return vo;
  98 + }).collect(Collectors.toList());
  99 + }
  100 +
  101 + private NewDriver convertNewDriver(ResDataDriveDTO dto) {
  102 + NewDriver newDriver = new NewDriver();
  103 + newDriver.setJobCode(dto.getStaffId());
  104 +// newDriver.setPersonnelName(dto.getStaffName());
  105 +// newDriver.setIcCardCode(dto.getIcCardNo());
  106 + newDriver.setImage(dto.getFacePhotoPath());
  107 + newDriver.setFaceFeature(dto.getFaceFeature());
  108 + newDriver.setBlueTooth(dto.getBlueTooth());
  109 + newDriver.setInteger(dto.getInteger());
  110 + newDriver.setSyncontent((dto.getSynContent()));
  111 + newDriver.setCsn(dto.getCsn());
  112 +
  113 + return null;
  114 + }
  115 +
  116 + private NewDriver convertFaceRegister(FaceRegisterDTO dto) {
  117 + NewDriver newDriver = new NewDriver();
  118 + newDriver.setIcCardCode(dto.getFaceValue());
  119 + newDriver.setFaceSignIn(1);
  120 + newDriver.setSignInEquipment(dto.getDriverCode());
  121 + newDriver.setImage(dto.getFaceValue());
  122 +
  123 + return newDriver;
  124 + }
  125 +
  126 +
  127 +}
Bsth-admin/src/main/java/com/ruoyi/controller/equipment/heartbeat/LingangEquipmentHeartbeatController.java 0 → 100644
  1 +package com.ruoyi.controller.equipment.heartbeat;
  2 +
  3 +import com.ruoyi.common.core.controller.BaseController;
  4 +import com.ruoyi.common.core.domain.AjaxResult;
  5 +import com.ruoyi.domain.equipment.heartbeat.LingangEquipmentHeartbeat;
  6 +import com.ruoyi.domain.equipment.heartbeat.dto.LingangEquipmentHeartbeatAddDTO;
  7 +import com.ruoyi.domain.equipment.heartbeat.dto.LingangEquipmentHeartbeatQueryDTO;
  8 +import com.ruoyi.domain.equipment.heartbeat.dto.LingangEquipmentHeartbeatUpdateDTO;
  9 +import com.ruoyi.domain.equipment.heartbeat.vo.LingangEquipmentHeartbeatVO;
  10 +import com.ruoyi.service.equipment.heartbeat.LingangEquipmentHeartbeatService;
  11 +import io.swagger.annotations.Api;
  12 +import io.swagger.annotations.ApiOperation;
  13 +import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.web.bind.annotation.RestController;
  15 +import org.springframework.web.bind.annotation.RequestMapping;
  16 +import org.springframework.web.bind.annotation.*;
  17 +import org.springframework.beans.BeanUtils;
  18 +
  19 +import org.springframework.security.access.prepost.PreAuthorize;
  20 +
  21 +import java.util.List;
  22 +import java.util.Date;
  23 +
  24 +import com.ruoyi.domain.OrderEntity;
  25 +
  26 +
  27 +import com.baomidou.mybatisplus.core.metadata.IPage;
  28 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  29 +
  30 +import com.alibaba.fastjson2.JSON;
  31 +
  32 +import com.ruoyi.common.utils.poi.ExcelUtil;
  33 +
  34 +import javax.servlet.http.HttpServletResponse;
  35 +import javax.validation.Valid;
  36 +
  37 +import org.springframework.validation.BindingResult;
  38 +
  39 +
  40 +@RestController
  41 +@Api(tags = "设备心跳包")
  42 +@RequestMapping("LinGang/equipment/heartbeat")
  43 +public class LingangEquipmentHeartbeatController extends BaseController {
  44 + @Autowired
  45 + private LingangEquipmentHeartbeatService lingangEquipmentHeartbeatService;
  46 +
  47 + @ApiOperation("分页查询")
  48 + @PreAuthorize("@ss.hasPermi('LinGang:equipment:heartbeat:list:limit:page:limit')")
  49 + @PostMapping(value = "/list/limit/{page}/{pageLimit}")
  50 + public String listLimit(@ModelAttribute LingangEquipmentHeartbeatQueryDTO request, @ModelAttribute OrderEntity orderEntity, @PathVariable Integer page, @PathVariable Integer pageLimit, org.springframework.ui.Model model) {
  51 +
  52 + LingangEquipmentHeartbeat entity = convert(request);
  53 + IPage<LingangEquipmentHeartbeat> response = lingangEquipmentHeartbeatService.pageList(new Page<LingangEquipmentHeartbeat>(page, pageLimit), entity, orderEntity);
  54 +
  55 + return JSON.toJSONString(convert(response));
  56 + }
  57 +
  58 + @ApiOperation("根据ID查询详情")
  59 + @GetMapping(value = "/view/{id}")
  60 + public com.ruoyi.common.core.domain.AjaxResult view(@PathVariable("id") Long id, org.springframework.ui.Model model) {
  61 + LingangEquipmentHeartbeat source = lingangEquipmentHeartbeatService.getById(id);
  62 +
  63 + return com.ruoyi.common.core.domain.AjaxResult.success(convert(source));
  64 + }
  65 +
  66 +
  67 + @PreAuthorize("@ss.hasPermi('LinGang:equipment:heartbeat:export')")
  68 + @ApiOperation("导出")
  69 + @PostMapping("/export")
  70 + public void export(HttpServletResponse response, @RequestBody LingangEquipmentHeartbeatQueryDTO request) {
  71 + LingangEquipmentHeartbeat entity = convert(request);
  72 + List<LingangEquipmentHeartbeat> list = lingangEquipmentHeartbeatService.list(entity);
  73 + ExcelUtil<LingangEquipmentHeartbeat> util = new ExcelUtil<LingangEquipmentHeartbeat>(LingangEquipmentHeartbeat.class);
  74 + util.exportExcel(response, list, "LingangEquipmentHeartbeat");
  75 + }
  76 +
  77 + @ApiOperation("添加")
  78 + @PreAuthorize("@ss.hasPermi('LinGang:equipment:heartbeat:add')")
  79 + @PostMapping(value = "/add")
  80 + public com.ruoyi.common.core.domain.AjaxResult add(@Valid @ModelAttribute LingangEquipmentHeartbeatAddDTO request, BindingResult bindingResult) {
  81 + if (bindingResult.hasErrors()) {
  82 + return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
  83 + }
  84 + LingangEquipmentHeartbeat entity = convert(request);
  85 + entity.setCreateBy(getUserId());
  86 + entity.setCreateTime(new Date());
  87 + int count = lingangEquipmentHeartbeatService.insertSelective(entity);
  88 + return count > 0 ? com.ruoyi.common.core.domain.AjaxResult.success(Boolean.TRUE) : com.ruoyi.common.core.domain.AjaxResult.error("添加数据失败,请稍后再试");
  89 + }
  90 +
  91 + @ApiOperation("修改")
  92 + @PreAuthorize("@ss.hasPermi('LinGang:equipment:heartbeat:update')")
  93 + @PostMapping(value = "/update")
  94 + public com.ruoyi.common.core.domain.AjaxResult update(@Valid @ModelAttribute LingangEquipmentHeartbeatUpdateDTO request, BindingResult bindingResult) {
  95 + if (bindingResult.hasErrors()) {
  96 + return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
  97 + }
  98 + LingangEquipmentHeartbeat entity = convert(request);
  99 + entity.setUpdateby(getUserId());
  100 + entity.setUpdateTime(new Date());
  101 + boolean flag = lingangEquipmentHeartbeatService.updateByPrimaryKey(entity);
  102 + return flag ? com.ruoyi.common.core.domain.AjaxResult.success(Boolean.TRUE) : com.ruoyi.common.core.domain.AjaxResult.error("修改数据失败,请稍后再试");
  103 + }
  104 +
  105 + @PreAuthorize("@ss.hasPermi('LinGang:equipment:heartbeat:del')")
  106 + @ApiOperation("删除数据")
  107 + @GetMapping(value = "/del/{id}")
  108 + public com.ruoyi.common.core.domain.AjaxResult delById(@PathVariable("id") Long id) {
  109 + boolean flag = lingangEquipmentHeartbeatService.deleteById(id);
  110 + return flag ? com.ruoyi.common.core.domain.AjaxResult.success(Boolean.TRUE) : com.ruoyi.common.core.domain.AjaxResult.error("操作数据失败,请稍后再试");
  111 + }
  112 +
  113 + private LingangEquipmentHeartbeat convert(LingangEquipmentHeartbeatQueryDTO source) {
  114 + return java.util.Optional.ofNullable(source).map(sc -> {
  115 + LingangEquipmentHeartbeat target = new LingangEquipmentHeartbeat();
  116 + BeanUtils.copyProperties(sc, target);
  117 + return target;
  118 + }).orElse(null);
  119 + }
  120 +
  121 + private LingangEquipmentHeartbeat convert(LingangEquipmentHeartbeatUpdateDTO source) {
  122 + return java.util.Optional.ofNullable(source).map(sc -> {
  123 + LingangEquipmentHeartbeat target = new LingangEquipmentHeartbeat();
  124 + BeanUtils.copyProperties(sc, target);
  125 + return target;
  126 + }).orElse(null);
  127 + }
  128 +
  129 +
  130 + private LingangEquipmentHeartbeat convert(LingangEquipmentHeartbeatAddDTO source) {
  131 + return java.util.Optional.ofNullable(source).map(sc -> {
  132 + LingangEquipmentHeartbeat target = new LingangEquipmentHeartbeat();
  133 + BeanUtils.copyProperties(sc, target);
  134 + return target;
  135 + }).orElseGet(null);
  136 + }
  137 +
  138 + private LingangEquipmentHeartbeatVO convert(LingangEquipmentHeartbeat source) {
  139 + return java.util.Optional.ofNullable(source).map(sc -> {
  140 + LingangEquipmentHeartbeatVO target = new LingangEquipmentHeartbeatVO();
  141 + BeanUtils.copyProperties(source, target);
  142 + return target;
  143 + }).orElseGet(null);
  144 + }
  145 +
  146 + private List<LingangEquipmentHeartbeatVO> convert(List<LingangEquipmentHeartbeat> sources) {
  147 + return java.util.Optional.ofNullable(sources).map(scs -> {
  148 + return scs.stream().map(source -> {
  149 + return convert(source);
  150 + }).collect(java.util.stream.Collectors.toList());
  151 + }).orElseGet(null);
  152 + }
  153 +
  154 + private IPage<LingangEquipmentHeartbeatVO> convert(IPage<LingangEquipmentHeartbeat> sources) {
  155 + return java.util.Optional.ofNullable(sources).map(scs -> {
  156 + IPage<LingangEquipmentHeartbeatVO> target = new Page();
  157 + BeanUtils.copyProperties(scs, target);
  158 + List<LingangEquipmentHeartbeatVO> voNames = convert(scs.getRecords());
  159 + target.setRecords(voNames);
  160 +
  161 + return target;
  162 + }).orElseGet(null);
  163 + }
  164 +}
0 \ No newline at end of file 165 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/controller/equipment/self/check/LingangEquimentSelfCheckController.java 0 → 100644
  1 +package com.ruoyi.controller.equipment.self.check;
  2 +
  3 +import com.ruoyi.common.core.controller.BaseController;
  4 +import com.ruoyi.common.core.domain.AjaxResult;
  5 +import com.ruoyi.domain.equipment.self.check.LingangEquimentSelfCheck;
  6 +import com.ruoyi.domain.equipment.self.check.dto.LingangEquimentSelfCheckAddDTO;
  7 +import com.ruoyi.domain.equipment.self.check.dto.LingangEquimentSelfCheckQueryDTO;
  8 +import com.ruoyi.domain.equipment.self.check.dto.LingangEquimentSelfCheckUpdateDTO;
  9 +import com.ruoyi.domain.equipment.self.check.dto.LingangEquimentSelfCheckUpdateStatusDTO;
  10 +import com.ruoyi.domain.equipment.self.check.vo.LingangEquimentSelfCheckVO;
  11 +import com.ruoyi.service.equipment.self.check.LingangEquimentSelfCheckService;
  12 +import io.swagger.annotations.Api;
  13 +import io.swagger.annotations.ApiOperation;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.web.bind.annotation.RestController;
  16 +import org.springframework.web.bind.annotation.RequestMapping;
  17 +import org.springframework.web.bind.annotation.*;
  18 +import org.springframework.beans.BeanUtils;
  19 +
  20 +import org.springframework.security.access.prepost.PreAuthorize;
  21 +
  22 +import java.util.List;
  23 +import java.util.Date;
  24 +
  25 +import com.ruoyi.domain.OrderEntity;
  26 +
  27 +
  28 +import com.baomidou.mybatisplus.core.metadata.IPage;
  29 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  30 +
  31 +import com.alibaba.fastjson2.JSON;
  32 +
  33 +import com.ruoyi.common.utils.poi.ExcelUtil;
  34 +
  35 +import javax.servlet.http.HttpServletResponse;
  36 +import javax.validation.Valid;
  37 +
  38 +import org.springframework.validation.BindingResult;
  39 +
  40 +
  41 +@RestController
  42 +@Api(tags = "设备自检")
  43 +@RequestMapping("LinGang/equiment/self/check")
  44 +public class LingangEquimentSelfCheckController extends BaseController {
  45 + @Autowired
  46 + private LingangEquimentSelfCheckService lingangEquimentSelfCheckService;
  47 +
  48 + @ApiOperation("分页查询")
  49 + @PreAuthorize("@ss.hasPermi('LinGang:equiment:self:check:list:limit:page:limit')")
  50 + @PostMapping(value = "/list/limit/{page}/{pageLimit}")
  51 + public String listLimit(@ModelAttribute LingangEquimentSelfCheckQueryDTO request, @ModelAttribute OrderEntity orderEntity, @PathVariable Integer page, @PathVariable Integer pageLimit, org.springframework.ui.Model model) {
  52 + LingangEquimentSelfCheck entity = convert(request);
  53 + IPage<LingangEquimentSelfCheck> response = lingangEquimentSelfCheckService.pageList(new Page<LingangEquimentSelfCheck>(page, pageLimit), entity, orderEntity);
  54 +
  55 + return JSON.toJSONString(convert(response));
  56 + }
  57 +
  58 + @ApiOperation("根据ID查询详情")
  59 + @GetMapping(value = "/view/{id}")
  60 + public com.ruoyi.common.core.domain.AjaxResult view(@PathVariable("id") Long id, org.springframework.ui.Model model) {
  61 + LingangEquimentSelfCheck source = lingangEquimentSelfCheckService.getById(id);
  62 +
  63 + return com.ruoyi.common.core.domain.AjaxResult.success(convert(source));
  64 + }
  65 +
  66 +
  67 + @PreAuthorize("@ss.hasPermi('LinGang:equiment:self:check:export')")
  68 + @ApiOperation("导出")
  69 + @PostMapping("/export")
  70 + public void export(HttpServletResponse response, @RequestBody LingangEquimentSelfCheckQueryDTO request) {
  71 + LingangEquimentSelfCheck entity = convert(request);
  72 + List<LingangEquimentSelfCheck> list = lingangEquimentSelfCheckService.list(entity);
  73 + ExcelUtil<LingangEquimentSelfCheck> util = new ExcelUtil<LingangEquimentSelfCheck>(LingangEquimentSelfCheck.class);
  74 + util.exportExcel(response, list, "LingangEquimentSelfCheck");
  75 + }
  76 +
  77 + @ApiOperation("添加")
  78 + @PreAuthorize("@ss.hasPermi('LinGang:equiment:self:check:add')")
  79 + @PostMapping(value = "/add")
  80 + public com.ruoyi.common.core.domain.AjaxResult add(@Valid @ModelAttribute LingangEquimentSelfCheckAddDTO request, BindingResult bindingResult) {
  81 + if (bindingResult.hasErrors()) {
  82 + return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
  83 + }
  84 + LingangEquimentSelfCheck entity = convert(request);
  85 + entity.setCreateBy(getUserId());
  86 + entity.setCreateTime(new Date());
  87 + int count = lingangEquimentSelfCheckService.insertSelective(entity);
  88 + return count > 0 ? com.ruoyi.common.core.domain.AjaxResult.success(Boolean.TRUE) : com.ruoyi.common.core.domain.AjaxResult.error("添加数据失败,请稍后再试");
  89 + }
  90 +
  91 + @ApiOperation("修改")
  92 + @PreAuthorize("@ss.hasPermi('LinGang:equiment:self:check:update')")
  93 + @PostMapping(value = "/update")
  94 + public com.ruoyi.common.core.domain.AjaxResult update(@Valid @ModelAttribute LingangEquimentSelfCheckUpdateDTO request, BindingResult bindingResult) {
  95 + if (bindingResult.hasErrors()) {
  96 + return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
  97 + }
  98 + LingangEquimentSelfCheck entity = convert(request);
  99 + entity.setUpdateBy(getUserId());
  100 + entity.setUpdateTime(new Date());
  101 + boolean flag = lingangEquimentSelfCheckService.updateByPrimaryKey(entity);
  102 + return flag ? com.ruoyi.common.core.domain.AjaxResult.success(Boolean.TRUE) : com.ruoyi.common.core.domain.AjaxResult.error("修改数据失败,请稍后再试");
  103 + }
  104 +
  105 + @ApiOperation("修改状态")
  106 + @PreAuthorize("@ss.hasPermi('LinGang:equiment:self:check:update:status')")
  107 + @PostMapping(value = "/update/status")
  108 + public com.ruoyi.common.core.domain.AjaxResult updateState(@ModelAttribute LingangEquimentSelfCheckUpdateStatusDTO request) {
  109 + LingangEquimentSelfCheck entity = convert(request);
  110 + boolean flag = lingangEquimentSelfCheckService.updateByPrimaryKey(entity);
  111 + return flag ? com.ruoyi.common.core.domain.AjaxResult.success(Boolean.TRUE) : com.ruoyi.common.core.domain.AjaxResult.error("修改数据失败,请稍后再试");
  112 + }
  113 +
  114 + private LingangEquimentSelfCheck convert(LingangEquimentSelfCheckQueryDTO source) {
  115 + return java.util.Optional.ofNullable(source).map(sc -> {
  116 + LingangEquimentSelfCheck target = new LingangEquimentSelfCheck();
  117 + BeanUtils.copyProperties(sc, target);
  118 + return target;
  119 + }).orElse(null);
  120 + }
  121 +
  122 + private LingangEquimentSelfCheck convert(LingangEquimentSelfCheckUpdateDTO source) {
  123 + return java.util.Optional.ofNullable(source).map(sc -> {
  124 + LingangEquimentSelfCheck target = new LingangEquimentSelfCheck();
  125 + BeanUtils.copyProperties(sc, target);
  126 + return target;
  127 + }).orElse(null);
  128 + }
  129 +
  130 + private LingangEquimentSelfCheck convert(LingangEquimentSelfCheckUpdateStatusDTO source) {
  131 + return java.util.Optional.ofNullable(source).map(sc -> {
  132 + LingangEquimentSelfCheck target = new LingangEquimentSelfCheck();
  133 + BeanUtils.copyProperties(sc, target);
  134 + return target;
  135 + }).orElse(null);
  136 + }
  137 +
  138 + private LingangEquimentSelfCheck convert(LingangEquimentSelfCheckAddDTO source) {
  139 + return java.util.Optional.ofNullable(source).map(sc -> {
  140 + LingangEquimentSelfCheck target = new LingangEquimentSelfCheck();
  141 + BeanUtils.copyProperties(sc, target);
  142 + return target;
  143 + }).orElseGet(null);
  144 + }
  145 +
  146 + private LingangEquimentSelfCheckVO convert(LingangEquimentSelfCheck source) {
  147 + return java.util.Optional.ofNullable(source).map(sc -> {
  148 + LingangEquimentSelfCheckVO target = new LingangEquimentSelfCheckVO();
  149 + BeanUtils.copyProperties(source, target);
  150 + return target;
  151 + }).orElseGet(null);
  152 + }
  153 +
  154 + private List<LingangEquimentSelfCheckVO> convert(List<LingangEquimentSelfCheck> sources) {
  155 + return java.util.Optional.ofNullable(sources).map(scs -> {
  156 + return scs.stream().map(source -> {
  157 + return convert(source);
  158 + }).collect(java.util.stream.Collectors.toList());
  159 + }).orElseGet(null);
  160 + }
  161 +
  162 + private IPage<LingangEquimentSelfCheckVO> convert(IPage<LingangEquimentSelfCheck> sources) {
  163 + return java.util.Optional.ofNullable(sources).map(scs -> {
  164 + IPage<LingangEquimentSelfCheckVO> target = new Page();
  165 + BeanUtils.copyProperties(scs, target);
  166 + List<LingangEquimentSelfCheckVO> voNames = convert(scs.getRecords());
  167 + target.setRecords(voNames);
  168 +
  169 + return target;
  170 + }).orElseGet(null);
  171 + }
  172 +}
0 \ No newline at end of file 173 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/driver/NewDriver.java
@@ -128,6 +128,31 @@ public class NewDriver { @@ -128,6 +128,31 @@ public class NewDriver {
128 private String fleetName; 128 private String fleetName;
129 129
130 130
  131 + /***人脸识别特征*/
  132 + @Excel(name = "人脸识别特征")
  133 + private java.lang.String faceFeature;
  134 +
  135 +
  136 + /***手环mac地址*/
  137 + @Excel(name = "手环mac地址")
  138 + private java.lang.String blueTooth;
  139 +
  140 +
  141 + /***同步结果状态;0成功,1失败*/
  142 + @Excel(name = "同步结果状态;0成功,1失败")
  143 + private java.lang.Integer integer;
  144 +
  145 +
  146 + /***同步内容*/
  147 + @Excel(name = "同步内容")
  148 + private java.lang.String syncontent;
  149 +
  150 +
  151 + /***物理卡号*/
  152 + @Excel(name = "物理卡号")
  153 + private java.lang.String csn;
  154 +
  155 +
131 @Override 156 @Override
132 public String toString() { 157 public String toString() {
133 return com.alibaba.fastjson2.JSON.toJSONString(this); 158 return com.alibaba.fastjson2.JSON.toJSONString(this);
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dss/syn/DrivePosEnum.java 0 → 100644
  1 +package com.ruoyi.domain.driver.dss.syn;
  2 +
  3 +import org.apache.commons.lang3.StringUtils;
  4 +
  5 +import java.util.Arrays;
  6 +import java.util.Objects;
  7 +import java.util.Optional;
  8 +
  9 +public enum DrivePosEnum {
  10 + FLIGHT_ATTENDANTS(1, "乘务员"),
  11 + DRIVER(2, "驾驶员"),
  12 + CENTRALIZED_DISPATCH_CENTER(3, "集调中心"),
  13 + INSPECTION(4, "稽查"),
  14 + TICKETING(5, "票务"),
  15 + MANAGEMENT_PERSONNEL(6, "行管员"),
  16 + COLLECTION(7, "采集"),
  17 + MAINTENANCE_PERSONNEL(8, "机务员"),
  18 + DEPUTY_TEAM_LEADER(9, "副队长(工勤岗)"),
  19 + CLERKS(10, "办事员"),
  20 + ACCOUNTING_PERSONNEL(11, "核算员"),
  21 + SCHEDULING(12, "调度"),
  22 + INTERN_DRIVER(13, "实习驾驶员"),
  23 + STATION_STAFF(14, "站员"),
  24 + MECHANIC(15, "机工"),
  25 + STAFF(16, "科员"),
  26 + CAPTAIN(17, "队长"),
  27 + SECRETARY_OF_THE_FLEET_BRANCH(18, "车队支部书记"),
  28 + STATISTICIAN(19, "统计员"),
  29 + BORROWING(20, "借用"),
  30 + DISPATCH_PERSONNEL(21, "调派员"),
  31 + INTERN_FLIGHT_ATTENDANTS(22, "实习乘务员"),
  32 + DEPUTY_TEAM_LEADER_23(23, "副队长"),
  33 + ;
  34 + private Integer value;
  35 + private String label;
  36 +
  37 + DrivePosEnum(Integer value, String label) {
  38 + this.value = value;
  39 + this.label = label;
  40 + }
  41 +
  42 +
  43 + public Integer getValue() {
  44 + return value;
  45 + }
  46 +
  47 + public String getLabel() {
  48 + return label;
  49 + }
  50 +
  51 + public static DrivePosEnum getObjOfLabel(String label) {
  52 + if (StringUtils.isEmpty(label)) {
  53 + return null;
  54 + }
  55 + DrivePosEnum[] drivePosEnums = DrivePosEnum.values();
  56 + Optional<DrivePosEnum> option = Arrays.stream(drivePosEnums).filter(d -> Objects.equals(d.getLabel(), label)).findFirst();
  57 + return option.isPresent() ? option.get() : null;
  58 + }
  59 +
  60 + public static Integer getObjValueOfLabel(String label) {
  61 + DrivePosEnum drivePosEnum = getObjOfLabel(label);
  62 + return Objects.isNull(drivePosEnum) ? null : drivePosEnum.getValue();
  63 + }
  64 +}
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dss/syn/dto/DssDriveQueryDTO.java 0 → 100644
  1 +package com.ruoyi.domain.driver.dss.syn.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +/**
  10 + * @author liujun
  11 + * @date 2024年07月11日 14:14
  12 + */
  13 +@Data
  14 +@ApiModel(value = "司机信息的DTO")
  15 +@Accessors(chain = true)
  16 +@EqualsAndHashCode(callSuper = false)
  17 +public class DssDriveQueryDTO implements java.io.Serializable {
  18 +
  19 + private static final long serialVersionUID = 3923463555521298326L;
  20 + @ApiModelProperty(value = "设备上线号", required = true)
  21 + private String device;
  22 + @ApiModelProperty(value = "设备ID", required = true)
  23 + private String deviceId;
  24 + @ApiModelProperty(value = "终端人脸数据版本 null终端无记录")
  25 + private String versionNo;
  26 +}
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dss/syn/login/dto/LoginDriverDTO.java 0 → 100644
  1 +package com.ruoyi.domain.driver.dss.syn.login.dto;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.experimental.Accessors;
  9 +
  10 +import javax.validation.constraints.NotNull;
  11 +import java.util.Date;
  12 +
  13 +/**
  14 + * @author liujun
  15 + * @date 2024年07月11日 16:39
  16 + */
  17 +@Data
  18 +@ApiModel(value = "人员登录设备")
  19 +@Accessors(chain = true)
  20 +@EqualsAndHashCode(callSuper = false)
  21 +public class LoginDriverDTO implements java.io.Serializable {
  22 +
  23 + private static final long serialVersionUID = -1677262685203673206L;
  24 + @NotNull(message = "设备上线号不能为空")
  25 + @ApiModelProperty(value = "设备上线号", required = true)
  26 + private String device;
  27 +
  28 + @NotNull(message = "登录校验类型不能为空")
  29 + @ApiModelProperty(value = "登录校验类型;0:卡号登录,1:人脸登录", required = true)
  30 + private String authType;
  31 +
  32 + @NotNull(message = "登录校验信息 不能为空")
  33 + @ApiModelProperty(value = "登录校验类型; 登录校验信息 卡号或人脸图片数据,图片数据格式为BASE64", required = true)
  34 + private String authValue;
  35 +
  36 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  37 + @ApiModelProperty(value = "登录校验时间:yyyy-MM-dd HH:mm:ss")
  38 + private Date authTime;
  39 +
  40 +
  41 +}
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dss/syn/login/vo/LoginDriverVo.java 0 → 100644
  1 +package com.ruoyi.domain.driver.dss.syn.login.vo;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonProperty;
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.AllArgsConstructor;
  7 +import lombok.Data;
  8 +import lombok.EqualsAndHashCode;
  9 +import lombok.NoArgsConstructor;
  10 +import lombok.experimental.Accessors;
  11 +
  12 +import java.util.Set;
  13 +
  14 +/**
  15 + * @author liujun
  16 + * @date 2024年07月11日 16:49
  17 + */
  18 +@Data
  19 +@NoArgsConstructor
  20 +@AllArgsConstructor
  21 +@Accessors(chain = true)
  22 +@ApiModel(value = "人员登录设备")
  23 +@EqualsAndHashCode(callSuper = false)
  24 +public class LoginDriverVo {
  25 + @ApiModelProperty("IC卡号")
  26 + private String driverCode;
  27 + @ApiModelProperty("司机名称")
  28 + private String driverName;
  29 + @ApiModelProperty("司机工号")
  30 + private String workCode;
  31 + @ApiModelProperty("司机工号")
  32 + private String staffCode;
  33 + @ApiModelProperty("角色编码")
  34 + private Integer staffType;
  35 +
  36 + @ApiModelProperty("人脸信息")
  37 + @JsonProperty("userInfoDto")
  38 + private LoginUserInfoVo userInfo;
  39 +
  40 + @ApiModelProperty("解析后的访问图片地址")
  41 + private String cropFacePhotoUrl;
  42 + @ApiModelProperty("角色编码列表:1员工,2司机,3钥匙柜管理员,4移车员")
  43 + private Set<Integer> staffTypeItem;
  44 +
  45 + @ApiModelProperty("手环蓝牙名称")
  46 + private String blueTooth;
  47 + @ApiModelProperty("岗前检测要求:0:否,1:强制")
  48 + private Integer healthCheck;
  49 +
  50 + @ApiModelProperty("当日最后一次登签的签到状态:0:未签到,1:已签到")
  51 + private Integer signInType;
  52 + @ApiModelProperty("当日最后一次登签的签退状态:0:未签退,1:已签退")
  53 + private Integer signOutType;
  54 +
  55 + @ApiModelProperty(value = "人脸识别特征值")
  56 + private String faceFeature;
  57 + @ApiModelProperty(value = "同步状态")
  58 + private Integer synState;
  59 + @ApiModelProperty(value = "同步内容")
  60 + private String synContent;
  61 + @ApiModelProperty(value = "员工物理卡号")
  62 + private String csn;
  63 +
  64 +}
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dss/syn/login/vo/LoginUserInfoVo.java 0 → 100644
  1 +package com.ruoyi.domain.driver.dss.syn.login.vo;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.NoArgsConstructor;
  9 +import lombok.experimental.Accessors;
  10 +
  11 +/**
  12 + * @author liujun
  13 + * @date 2024年07月11日 16:57
  14 + */
  15 +@Data
  16 +@NoArgsConstructor
  17 +@AllArgsConstructor
  18 +@Accessors(chain = true)
  19 +@ApiModel(value = "人脸信息")
  20 +@EqualsAndHashCode(callSuper = false)
  21 +public class LoginUserInfoVo implements java.io.Serializable {
  22 + private static final long serialVersionUID = -9051242373397682607L;
  23 +
  24 + @ApiModelProperty("员工id")
  25 + private String staffId;
  26 + @ApiModelProperty("员工姓名")
  27 + private String staffName;
  28 + @ApiModelProperty("IC卡号")
  29 + private String icCardNo;
  30 + @ApiModelProperty("原始图片地址")
  31 + private String facePhotoPath;
  32 +}
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dss/syn/res/dto/FaceRegisterDTO.java 0 → 100644
  1 +package com.ruoyi.domain.driver.dss.syn.res.dto;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.AllArgsConstructor;
  7 +import lombok.Data;
  8 +import lombok.EqualsAndHashCode;
  9 +import lombok.NoArgsConstructor;
  10 +import lombok.experimental.Accessors;
  11 +
  12 +import javax.validation.constraints.NotNull;
  13 +import java.util.Date;
  14 +
  15 +/**
  16 + * @author liujun
  17 + * @date 2024年07月11日 17:29
  18 + */
  19 +@Data
  20 +@NoArgsConstructor
  21 +@AllArgsConstructor
  22 +@Accessors(chain = true)
  23 +@ApiModel(value = "人脸注册")
  24 +@EqualsAndHashCode(callSuper = false)
  25 +public class FaceRegisterDTO implements java.io.Serializable {
  26 +
  27 + private static final long serialVersionUID = 228485023686482474L;
  28 + @NotNull(message = "设备上线号 不能为空")
  29 + @ApiModelProperty(value = "设备上线号", required = true)
  30 + private String device;
  31 + @NotNull(message = "IC卡号 不能为空")
  32 + @ApiModelProperty(value = "IC卡号", required = true)
  33 + private String driverCode;
  34 +
  35 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  36 + @ApiModelProperty(value = "时间")
  37 + private Date regTime;
  38 + @NotNull(message = "人脸图片数据 不能为空")
  39 + @ApiModelProperty(value = "人脸图片数据", required = true)
  40 + private String faceValue;
  41 +}
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dss/syn/res/dto/ResDataDriveDTO.java 0 → 100644
  1 +package com.ruoyi.domain.driver.dss.syn.res.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.NoArgsConstructor;
  9 +import lombok.experimental.Accessors;
  10 +
  11 +import javax.validation.constraints.NotNull;
  12 +import java.util.Set;
  13 +
  14 +/**
  15 + * @author liujun
  16 + * @date 2024年07月11日 15:04
  17 + */
  18 +@Data
  19 +@NoArgsConstructor
  20 +@AllArgsConstructor
  21 +@Accessors(chain = true)
  22 +@ApiModel(value = "终端同步人脸数据结果上报")
  23 +@EqualsAndHashCode(callSuper = false)
  24 +public class ResDataDriveDTO implements java.io.Serializable {
  25 +
  26 + private static final long serialVersionUID = -815323242596921313L;
  27 + @NotNull(message = "服务器人脸信息版本号不能为空")
  28 + @ApiModelProperty(value = "服务器人脸信息版本号", required = true)
  29 + private String versionNo;
  30 +
  31 + @NotNull(message = "设备上线号不能为空")
  32 + @ApiModelProperty(value = "设备上线号", required = true)
  33 + private String device;
  34 +
  35 + @NotNull(message = "设备ID不能为空")
  36 + @ApiModelProperty(value = "设备ID", required = true)
  37 + private String deviceId;
  38 +
  39 + @NotNull(message = "员工id不能为空")
  40 + @ApiModelProperty(value = "员工id", required = true)
  41 + private String staffId;
  42 + @ApiModelProperty(value = "员工姓名")
  43 + private String staffName;
  44 + @ApiModelProperty(value = "IC卡号")
  45 + private String icCardNo;
  46 + @ApiModelProperty(value = "原始图片地址")
  47 + private String facePhotoPath;
  48 + @ApiModelProperty(value = "人脸识别特征值")
  49 + private String faceFeature;
  50 + @ApiModelProperty(value = "手环mac地址")
  51 + private String blueTooth;
  52 + @ApiModelProperty(value = "工号")
  53 + private String staffCode;
  54 +
  55 + @NotNull(message = "同步结果状态不能为空")
  56 + @ApiModelProperty(value = "同步结果状态;0成功,1失败", required = true, example = "1")
  57 + private Integer integer;
  58 +
  59 + @NotNull(message = "同步内容不能为空")
  60 + @ApiModelProperty(value = "同步内容", required = true)
  61 + private String synContent;
  62 +
  63 + @NotNull(message = "物理卡号不能为空")
  64 + @ApiModelProperty(value = "物理卡号", required = true)
  65 + private String csn;
  66 +
  67 + @ApiModelProperty(value = "角色类型列表")
  68 + private Set<Integer> staffTypeItem;
  69 +}
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dss/syn/vo/DssDriveVo.java 0 → 100644
  1 +package com.ruoyi.domain.driver.dss.syn.vo;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.NoArgsConstructor;
  9 +import lombok.experimental.Accessors;
  10 +
  11 +import java.util.Set;
  12 +
  13 +/**
  14 + * @author liujun
  15 + * @date 2024年07月11日 14:02
  16 + */
  17 +@Data
  18 +@NoArgsConstructor
  19 +@AllArgsConstructor
  20 +@Accessors(chain = true)
  21 +@ApiModel(value = "终端同步人脸数据VO")
  22 +@EqualsAndHashCode(callSuper = false)
  23 +public class DssDriveVo {
  24 + @ApiModelProperty("员工id")
  25 + private String staffId;
  26 + @ApiModelProperty("员工姓名")
  27 + private String staffName;
  28 + @ApiModelProperty("IC卡号")
  29 + private String icCardNo;
  30 + @ApiModelProperty("原始图片地址")
  31 + private String facePhotoPath;
  32 + @ApiModelProperty(value = "人脸识别特征值")
  33 + private String faceFeature;
  34 + @ApiModelProperty(value = "手环mac地址")
  35 + private String blueTooth;
  36 + @ApiModelProperty(value = "同步状态", example = "1")
  37 + private Integer synState;
  38 + @ApiModelProperty(value = "同步内容")
  39 + private String synContent;
  40 +
  41 + @ApiModelProperty("物理卡号")
  42 + private String csn;
  43 + @ApiModelProperty("角色类型 1:员工 2:驾驶员 3管理员 4移车员")
  44 + private Set<Integer> staffTypeItem;
  45 +}
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dto/NewDriverAddDTO.java
@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 import lombok.experimental.Accessors; 7 import lombok.experimental.Accessors;
8 8
9 @Data 9 @Data
10 -@ApiModel(value="司机信息的添加DTO") 10 +@ApiModel(value = "司机信息的添加DTO")
11 @Accessors(chain = true) 11 @Accessors(chain = true)
12 @EqualsAndHashCode(callSuper = false) 12 @EqualsAndHashCode(callSuper = false)
13 public class NewDriverAddDTO implements java.io.Serializable { 13 public class NewDriverAddDTO implements java.io.Serializable {
@@ -79,10 +79,26 @@ public class NewDriverAddDTO implements java.io.Serializable { @@ -79,10 +79,26 @@ public class NewDriverAddDTO implements java.io.Serializable {
79 /***车队名称*/ 79 /***车队名称*/
80 @ApiModelProperty(value = "车队名称") 80 @ApiModelProperty(value = "车队名称")
81 private String fleetName; 81 private String fleetName;
  82 + /***人脸识别特征*/
  83 + @ApiModelProperty(value = "人脸识别特征")
  84 + private java.lang.String faceFeature;
  85 + /***手环mac地址*/
  86 + @ApiModelProperty(value = "手环mac地址")
  87 + private java.lang.String blueTooth;
  88 + /***同步结果状态;0成功,1失败*/
  89 + @ApiModelProperty(value = "同步结果状态;0成功,1失败", example = "1")
  90 + private java.lang.Integer integer;
  91 + /***同步内容*/
  92 + @ApiModelProperty(value = "同步内容")
  93 + private java.lang.String syncontent;
  94 + /***物理卡号*/
  95 + @ApiModelProperty(value = "物理卡号")
  96 + private java.lang.String csn;
82 /***操作人员*/ 97 /***操作人员*/
83 @ApiModelProperty(value = "操作人员") 98 @ApiModelProperty(value = "操作人员")
84 private String operator; 99 private String operator;
85 100
  101 +
86 public void clearStrEmpty() { 102 public void clearStrEmpty() {
87 if (org.apache.commons.lang3.StringUtils.isEmpty(this.jobCode)) { 103 if (org.apache.commons.lang3.StringUtils.isEmpty(this.jobCode)) {
88 this.jobCode = null; 104 this.jobCode = null;
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dto/NewDriverQueryDTO.java
@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 import lombok.experimental.Accessors; 7 import lombok.experimental.Accessors;
8 8
9 @Data 9 @Data
10 -@ApiModel(value="司机信息的查询DTO") 10 +@ApiModel(value = "司机信息的查询DTO")
11 @Accessors(chain = true) 11 @Accessors(chain = true)
12 @EqualsAndHashCode(callSuper = false) 12 @EqualsAndHashCode(callSuper = false)
13 public class NewDriverQueryDTO implements java.io.Serializable { 13 public class NewDriverQueryDTO implements java.io.Serializable {
@@ -80,6 +80,22 @@ public class NewDriverQueryDTO implements java.io.Serializable { @@ -80,6 +80,22 @@ public class NewDriverQueryDTO implements java.io.Serializable {
80 @ApiModelProperty(value = "车队名称") 80 @ApiModelProperty(value = "车队名称")
81 private String fleetName; 81 private String fleetName;
82 82
  83 + /***人脸识别特征*/
  84 + @ApiModelProperty(value = "人脸识别特征")
  85 + private java.lang.String faceFeature;
  86 + /***手环mac地址*/
  87 + @ApiModelProperty(value = "手环mac地址")
  88 + private java.lang.String blueTooth;
  89 + /***同步结果状态;0成功,1失败*/
  90 + @ApiModelProperty(value = "同步结果状态;0成功,1失败", example = "1")
  91 + private java.lang.Integer integer;
  92 + /***同步内容*/
  93 + @ApiModelProperty(value = "同步内容")
  94 + private java.lang.String syncontent;
  95 + /***物理卡号*/
  96 + @ApiModelProperty(value = "物理卡号")
  97 + private java.lang.String csn;
  98 +
83 public void clearStrEmpty() { 99 public void clearStrEmpty() {
84 if (org.apache.commons.lang3.StringUtils.isEmpty(this.jobCode)) { 100 if (org.apache.commons.lang3.StringUtils.isEmpty(this.jobCode)) {
85 this.jobCode = null; 101 this.jobCode = null;
Bsth-admin/src/main/java/com/ruoyi/domain/driver/dto/NewDriverUpdateDTO.java
@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 import lombok.experimental.Accessors; 7 import lombok.experimental.Accessors;
8 8
9 @Data 9 @Data
10 -@ApiModel(value="司机信息的修改DTO") 10 +@ApiModel(value = "司机信息的修改DTO")
11 @Accessors(chain = true) 11 @Accessors(chain = true)
12 @EqualsAndHashCode(callSuper = false) 12 @EqualsAndHashCode(callSuper = false)
13 public class NewDriverUpdateDTO implements java.io.Serializable { 13 public class NewDriverUpdateDTO implements java.io.Serializable {
@@ -79,6 +79,22 @@ public class NewDriverUpdateDTO implements java.io.Serializable { @@ -79,6 +79,22 @@ public class NewDriverUpdateDTO implements java.io.Serializable {
79 /***车队名称*/ 79 /***车队名称*/
80 @ApiModelProperty(value = "车队名称") 80 @ApiModelProperty(value = "车队名称")
81 private String fleetName; 81 private String fleetName;
  82 +
  83 + /***人脸识别特征*/
  84 + @ApiModelProperty(value = "人脸识别特征")
  85 + private java.lang.String faceFeature;
  86 + /***手环mac地址*/
  87 + @ApiModelProperty(value = "手环mac地址")
  88 + private java.lang.String blueTooth;
  89 + /***同步结果状态;0成功,1失败*/
  90 + @ApiModelProperty(value = "同步结果状态;0成功,1失败", example = "1")
  91 + private java.lang.Integer integer;
  92 + /***同步内容*/
  93 + @ApiModelProperty(value = "同步内容")
  94 + private java.lang.String syncontent;
  95 + /***物理卡号*/
  96 + @ApiModelProperty(value = "物理卡号")
  97 + private java.lang.String csn;
82 /***操作人员*/ 98 /***操作人员*/
83 @ApiModelProperty(value = "操作人员") 99 @ApiModelProperty(value = "操作人员")
84 private String operator; 100 private String operator;
Bsth-admin/src/main/java/com/ruoyi/domain/driver/vo/NewDriverVO.java
@@ -9,7 +9,7 @@ import lombok.experimental.Accessors; @@ -9,7 +9,7 @@ import lombok.experimental.Accessors;
9 import org.apache.commons.lang3.StringUtils; 9 import org.apache.commons.lang3.StringUtils;
10 10
11 @Data 11 @Data
12 -@ApiModel(value="司机信息的VO") 12 +@ApiModel(value = "司机信息的VO")
13 @Accessors(chain = true) 13 @Accessors(chain = true)
14 @EqualsAndHashCode(callSuper = false) 14 @EqualsAndHashCode(callSuper = false)
15 public class NewDriverVO implements java.io.Serializable { 15 public class NewDriverVO implements java.io.Serializable {
@@ -82,6 +82,22 @@ public class NewDriverVO implements java.io.Serializable { @@ -82,6 +82,22 @@ public class NewDriverVO implements java.io.Serializable {
82 @ApiModelProperty(value = "车队名称") 82 @ApiModelProperty(value = "车队名称")
83 private String fleetName; 83 private String fleetName;
84 84
  85 + /***人脸识别特征*/
  86 + @ApiModelProperty(value = "人脸识别特征")
  87 + private java.lang.String faceFeature;
  88 + /***手环mac地址*/
  89 + @ApiModelProperty(value = "手环mac地址")
  90 + private java.lang.String blueTooth;
  91 + /***同步结果状态;0成功,1失败*/
  92 + @ApiModelProperty(value = "同步结果状态;0成功,1失败", example = "1")
  93 + private java.lang.Integer integer;
  94 + /***同步内容*/
  95 + @ApiModelProperty(value = "同步内容")
  96 + private java.lang.String syncontent;
  97 + /***物理卡号*/
  98 + @ApiModelProperty(value = "物理卡号")
  99 + private java.lang.String csn;
  100 +
85 101
86 public String getPersonnelNameAndJobCode() { 102 public String getPersonnelNameAndJobCode() {
87 if (StringUtils.isNotEmpty(this.getPersonnelName()) && StringUtils.isNotEmpty(this.getJobCode())) { 103 if (StringUtils.isNotEmpty(this.getPersonnelName()) && StringUtils.isNotEmpty(this.getJobCode())) {
Bsth-admin/src/main/java/com/ruoyi/domain/dss/equipment/dto/EquipmentAuthDTO.java 0 → 100644
  1 +package com.ruoyi.domain.dss.equipment.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +import java.util.Date;
  11 +
  12 +/**
  13 + * @author liujun
  14 + * @date 2024年07月05日 15:26
  15 + */
  16 +@Data
  17 +@ApiModel(value = "设备获取访问令牌")
  18 +@Accessors(chain = true)
  19 +@EqualsAndHashCode(callSuper = false)
  20 +public class EquipmentAuthDTO {
  21 + @NotNull(message = "设备号不能为空")
  22 + @ApiModelProperty(value = "设备上线号", required = true)
  23 + private String device;
  24 + @ApiModelProperty(value = "获取token设备时间", required = true)
  25 + private Date authTime;
  26 +}
Bsth-admin/src/main/java/com/ruoyi/domain/dss/equipment/dto/EquipmentSelfcheckCamerasDto.java 0 → 100644
  1 +package com.ruoyi.domain.dss.equipment.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +
  11 +/**
  12 + * @author liujun
  13 + * @date 2024年07月11日 10:54
  14 + */
  15 +@Data
  16 +@ApiModel(value = "设备自检-摄像头状态")
  17 +@Accessors(chain = true)
  18 +@EqualsAndHashCode(callSuper = false)
  19 +public class EquipmentSelfcheckCamerasDto implements java.io.Serializable {
  20 +
  21 +
  22 + private static final long serialVersionUID = 4430525531496917296L;
  23 +
  24 + @NotNull(message = "摄像头编号不能为空")
  25 + @ApiModelProperty(value = "摄像头编号", required = true, example = "1")
  26 + private Integer camera;
  27 + @NotNull(message = "摄像头状态不能为空")
  28 + @ApiModelProperty(value = "状态 0正常,1故障,2未检测到", required = true, example = "1")
  29 + private Integer status;
  30 +}
Bsth-admin/src/main/java/com/ruoyi/domain/dss/equipment/dto/EquipmentSelfcheckDto.java 0 → 100644
  1 +package com.ruoyi.domain.dss.equipment.dto;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import com.fasterxml.jackson.annotation.JsonProperty;
  5 +import io.swagger.annotations.ApiModel;
  6 +import io.swagger.annotations.ApiModelProperty;
  7 +import lombok.Data;
  8 +import lombok.EqualsAndHashCode;
  9 +import lombok.experimental.Accessors;
  10 +
  11 +import javax.validation.constraints.NotNull;
  12 +import java.util.Date;
  13 +import java.util.List;
  14 +
  15 +/**
  16 + * @author liujun
  17 + * @date 2024年07月11日 10:54
  18 + */
  19 +@Data
  20 +@ApiModel(value = "设备自检DTO")
  21 +@Accessors(chain = true)
  22 +@EqualsAndHashCode(callSuper = false)
  23 +public class EquipmentSelfcheckDto implements java.io.Serializable {
  24 +
  25 + private static final long serialVersionUID = 1874941263694729359L;
  26 +
  27 + @NotNull(message = "设备上线号不能为空")
  28 + @ApiModelProperty(value = "设备上线号", required = true)
  29 + private String device;
  30 +
  31 + @NotNull(message = "设备应用版本号不能为空")
  32 + @ApiModelProperty(value = "设备应用版本号", required = true)
  33 + @JsonProperty("app_version")
  34 + private String appVersion;
  35 +
  36 + @ApiModelProperty(value = "酒测仪状态:1正常,2故障,null/3未检测到")
  37 + private Integer wine;
  38 +
  39 + @NotNull(message = "摄像头不能为空")
  40 + @ApiModelProperty(value = "摄像头状态", required = true)
  41 + private List<EquipmentSelfcheckCamerasDto> cameras;
  42 +
  43 + @ApiModelProperty(value = "测温仪状态:1正常,2故障,null/3未检测到", example = "1")
  44 + private Integer therm;
  45 +
  46 + @ApiModelProperty(value = "喇叭状态:1正常,2故障,null/3未检测到", example = "1")
  47 + private Integer horn;
  48 +
  49 + @ApiModelProperty(value = "麦克风状态:1正常,2故障,null/3未检测到", example = "1")
  50 + private Integer mike;
  51 +
  52 + @ApiModelProperty(value = "锁控状态:1正常,2故障,null/3未检测到", example = "1")
  53 + private Integer lock;
  54 +
  55 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  56 + @ApiModelProperty(value = "时间格式为:yyyy-MM-dd HH:mm:ss")
  57 + private Date time;
  58 +
  59 + @ApiModelProperty(value = "设备类型")
  60 + private String deviceTyp;
  61 +
  62 + @ApiModelProperty(value = "是否拥有钥匙柜外设:null/0:否,1:是", example = "1")
  63 + private Integer isKeybox;
  64 +
  65 +
  66 +}
Bsth-admin/src/main/java/com/ruoyi/domain/dss/equipment/dto/ExKeysDTO.java 0 → 100644
  1 +package com.ruoyi.domain.dss.equipment.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +
  11 +/**
  12 + * @author liujun
  13 + * @date 2024年07月05日 16:34
  14 + */
  15 +@Data
  16 +@ApiModel(value = "钥匙孔位异常信息")
  17 +@Accessors(chain = true)
  18 +@EqualsAndHashCode(callSuper = false)
  19 +public class ExKeysDTO implements java.io.Serializable {
  20 +
  21 + private static final long serialVersionUID = -6900289229012374739L;
  22 + @NotNull(message = "设备号不能为空")
  23 + @ApiModelProperty(value = "设备上线号", required = true)
  24 + private String device;
  25 + @NotNull(message = "钥匙位号不能为空")
  26 + @ApiModelProperty(value = "钥匙位号", required = true)
  27 + private Integer key;
  28 + @ApiModelProperty(value = "场站车位编号")
  29 + private String parkCode;
  30 + @ApiModelProperty(value = "车牌")
  31 + private String plate;
  32 +}
Bsth-admin/src/main/java/com/ruoyi/domain/dss/equipment/dto/HeartbeatDTO.java 0 → 100644
  1 +package com.ruoyi.domain.dss.equipment.dto;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.experimental.Accessors;
  9 +
  10 +import javax.validation.constraints.NotNull;
  11 +import java.util.Date;
  12 +import java.util.List;
  13 +
  14 +/**
  15 + * @author liujun
  16 + * @date 2024年07月05日 16:30
  17 + */
  18 +@Data
  19 +@ApiModel(value = "设备报警信息(心跳包)")
  20 +@Accessors(chain = true)
  21 +@EqualsAndHashCode(callSuper = false)
  22 +public class HeartbeatDTO implements java.io.Serializable {
  23 +
  24 +
  25 + private static final long serialVersionUID = 5168784920496912635L;
  26 +
  27 + @NotNull(message = "设备号不能为空")
  28 + @ApiModelProperty(value = "设备上线号", required = true)
  29 + private String device;
  30 +
  31 + @NotNull(message = "时间不能为空")
  32 + @ApiModelProperty(value = "时间 格式:utc:yyyy-MM-dd HH:mm:ss", required = true)
  33 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  34 + private Date time;
  35 +
  36 + @ApiModelProperty(value = "报警类型列表;0:钥匙孔位异常报警")
  37 + private Integer[] alarm;
  38 +
  39 + @ApiModelProperty(value = "钥匙孔位异常信息列表")
  40 + private List<ExKeysDTO> exKeys;
  41 +
  42 +
  43 +}
Bsth-admin/src/main/java/com/ruoyi/domain/dss/equipment/vo/AuthVo.java 0 → 100644
  1 +package com.ruoyi.domain.dss.equipment.vo;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonProperty;
  4 +import io.swagger.annotations.ApiModel;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.NoArgsConstructor;
  9 +import lombok.experimental.Accessors;
  10 +
  11 +/**
  12 + * @author liujun
  13 + * @date 2024年07月05日 15:59
  14 + */
  15 +@Data
  16 +@NoArgsConstructor
  17 +@AllArgsConstructor
  18 +@ApiModel(value = "设备获取访问令牌")
  19 +@Accessors(chain = true)
  20 +@EqualsAndHashCode(callSuper = false)
  21 +public class AuthVo {
  22 + @JsonProperty("access_token")
  23 + private String accessToken;
  24 +}
Bsth-admin/src/main/java/com/ruoyi/domain/dss/equipment/vo/EquimentAddressParamVo.java 0 → 100644
  1 +package com.ruoyi.domain.dss.equipment.vo;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.NoArgsConstructor;
  9 +import lombok.experimental.Accessors;
  10 +
  11 +/**
  12 + * @author liujun
  13 + * @date 2024年07月05日 17:40
  14 + */
  15 +@Data
  16 +@NoArgsConstructor
  17 +@AllArgsConstructor
  18 +@ApiModel(value = "升级设置")
  19 +@Accessors(chain = true)
  20 +@EqualsAndHashCode(callSuper = false)
  21 +public class EquimentAddressParamVo {
  22 + @ApiModelProperty(value = "升级地址")
  23 + private String upgradeAddress;
  24 + @ApiModelProperty(value = "端口", example = "1")
  25 + private Integer integer;
  26 +}
Bsth-admin/src/main/java/com/ruoyi/domain/dss/equipment/vo/EquimentVideoParamVo.java 0 → 100644
  1 +package com.ruoyi.domain.dss.equipment.vo;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.NoArgsConstructor;
  9 +import lombok.experimental.Accessors;
  10 +
  11 +/**
  12 + * @author liujun
  13 + * @date 2024年07月05日 17:39
  14 + */
  15 +@Data
  16 +@NoArgsConstructor
  17 +@AllArgsConstructor
  18 +@ApiModel(value = "升级设置")
  19 +@Accessors(chain = true)
  20 +@EqualsAndHashCode(callSuper = false)
  21 +public class EquimentVideoParamVo {
  22 + @ApiModelProperty(value = "视频是否上传 0 不上传, 1 上传", example = "1")
  23 + private Integer upflag;
  24 + @ApiModelProperty(value = "视频上传上传间隔单位:秒", example = "1")
  25 + private Integer timespan;
  26 + @ApiModelProperty(value = "视频上传地址果为空,采用原先上传地址")
  27 + private String url;
  28 + @ApiModelProperty(value = "本地视频保留天数", example = "1")
  29 + private Integer saveday;
  30 + @ApiModelProperty(value = "上传时间段", example = "1")
  31 + private String videoTimeSlot;
  32 +}
Bsth-admin/src/main/java/com/ruoyi/domain/dss/equipment/vo/EquipmentConfigVo.java 0 → 100644
  1 +package com.ruoyi.domain.dss.equipment.vo;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.NoArgsConstructor;
  9 +import lombok.experimental.Accessors;
  10 +
  11 +import java.math.BigDecimal;
  12 +
  13 +/**
  14 + * @author liujun
  15 + * @date 2024年07月05日 17:37
  16 + */
  17 +@Data
  18 +@NoArgsConstructor
  19 +@AllArgsConstructor
  20 +@ApiModel(value = "设备获取远程参数配置")
  21 +@Accessors(chain = true)
  22 +@EqualsAndHashCode(callSuper = false)
  23 +public class EquipmentConfigVo implements java.io.Serializable {
  24 +
  25 + private static final long serialVersionUID = -3893021736941993364L;
  26 + private Integer promiseSwitch;
  27 +
  28 + @ApiModelProperty(value = "饮酒限制值")
  29 + private BigDecimal drinking;
  30 + @ApiModelProperty(value = "醉酒限制值")
  31 + private BigDecimal drunkenness;
  32 + @ApiModelProperty(value = "视频参数")
  33 + private EquimentVideoParamVo videoParam;
  34 + @ApiModelProperty(value = "升级设置")
  35 + private EquimentAddressParamVo addressParam;
  36 +}
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/heartbeat/LingangEquipmentHeartbeat.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.heartbeat;
  2 +
  3 +import lombok.Data;
  4 +import com.baomidou.mybatisplus.annotation.IdType;
  5 +import com.baomidou.mybatisplus.annotation.TableField;
  6 +import com.baomidou.mybatisplus.annotation.TableId;
  7 +import com.baomidou.mybatisplus.annotation.TableName;
  8 +import org.apache.commons.lang3.StringUtils;
  9 +import lombok.EqualsAndHashCode;
  10 +import lombok.experimental.Accessors;
  11 +import lombok.extern.slf4j.Slf4j;
  12 +import lombok.NoArgsConstructor;
  13 +import lombok.AllArgsConstructor;
  14 +import com.ruoyi.common.annotation.Excel;
  15 +
  16 +
  17 +@Data
  18 +@Slf4j
  19 +@NoArgsConstructor
  20 +@AllArgsConstructor
  21 +@Accessors(chain = true)
  22 +@EqualsAndHashCode(callSuper = false)
  23 +@TableName("equipment_heartbeat")
  24 +/**设备心跳包 实体*/
  25 +public class LingangEquipmentHeartbeat {
  26 + /***主键*/
  27 + @TableId(value = "id", type = IdType.AUTO)
  28 + @Excel(name = "主键")
  29 + private Long id;
  30 +
  31 +
  32 + /***设备号*/
  33 + @Excel(name = "设备号")
  34 + private String device;
  35 +
  36 +
  37 + /***时间*/
  38 + @Excel(name = "时间")
  39 + private java.util.Date time;
  40 +
  41 +
  42 + /***报价类型,0:钥匙孔位异常报警*/
  43 + @Excel(name = "报价类型,0:钥匙孔位异常报警")
  44 + private Integer alarm;
  45 +
  46 +
  47 + /***钥匙孔位异常信息*/
  48 + @Excel(name = "钥匙孔位异常信息")
  49 + private String exkeys;
  50 +
  51 +
  52 + /***创建时间*/
  53 + @Excel(name = "创建时间")
  54 + private java.util.Date createTime;
  55 +
  56 +
  57 + /***创建人员*/
  58 + @Excel(name = "创建人员")
  59 + private Long createBy;
  60 +
  61 +
  62 + /***修改时间*/
  63 + @Excel(name = "修改时间")
  64 + private java.util.Date updateTime;
  65 +
  66 +
  67 + /***修改人员*/
  68 + @Excel(name = "修改人员")
  69 + private Long updateby;
  70 +
  71 +
  72 + @Override
  73 + public String toString() {
  74 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  75 + }
  76 +}
0 \ No newline at end of file 77 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/heartbeat/dto/LingangEquipmentHeartbeatAddDTO.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.heartbeat.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +@Data
  10 +@ApiModel(value = "设备心跳包的添加DTO")
  11 +@Accessors(chain = true)
  12 +@EqualsAndHashCode(callSuper = false)
  13 +/**设备心跳包 DTO*/
  14 +public class LingangEquipmentHeartbeatAddDTO implements java.io.Serializable {
  15 + private static final long serialVersionUID = 215432779L;
  16 +
  17 + /***主键*/
  18 + @ApiModelProperty(value = "主键", example = "1")
  19 + private Long id;
  20 + /***设备号*/
  21 + @ApiModelProperty(value = "设备号")
  22 + private String device;
  23 + /***时间*/
  24 + @ApiModelProperty(value = "时间")
  25 + private java.util.Date time;
  26 + /***报价类型,0:钥匙孔位异常报警*/
  27 + @ApiModelProperty(value = "报价类型,0:钥匙孔位异常报警", example = "1")
  28 + private Integer alarm;
  29 + /***钥匙孔位异常信息*/
  30 + @ApiModelProperty(value = "钥匙孔位异常信息")
  31 + private String exkeys;
  32 + /***创建时间*/
  33 + @ApiModelProperty(value = "创建时间")
  34 + private java.util.Date createTime;
  35 + /***创建人员*/
  36 + @ApiModelProperty(value = "创建人员")
  37 + private String createBy;
  38 + /***修改时间*/
  39 + @ApiModelProperty(value = "修改时间")
  40 + private java.util.Date updateTime;
  41 + /***修改人员*/
  42 + @ApiModelProperty(value = "修改人员")
  43 + private String updateby;
  44 + /***操作人员*/
  45 + @ApiModelProperty(value = "操作人员")
  46 + private String operator;
  47 +
  48 +
  49 + @Override
  50 + public String toString() {
  51 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  52 + }
  53 +}
0 \ No newline at end of file 54 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/heartbeat/dto/LingangEquipmentHeartbeatQueryDTO.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.heartbeat.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +@Data
  10 +@ApiModel(value = "设备心跳包的查询DTO")
  11 +@Accessors(chain = true)
  12 +@EqualsAndHashCode(callSuper = false)
  13 +/**设备心跳包 DTO*/
  14 +public class LingangEquipmentHeartbeatQueryDTO implements java.io.Serializable {
  15 + private static final long serialVersionUID = 324800120L;
  16 +
  17 + /***主键*/
  18 + @ApiModelProperty(value = "主键", example = "1")
  19 + private Long id;
  20 + /***设备号*/
  21 + @ApiModelProperty(value = "设备号")
  22 + private String device;
  23 + /***时间*/
  24 + @ApiModelProperty(value = "时间")
  25 + private java.util.Date time;
  26 + /***报价类型,0:钥匙孔位异常报警*/
  27 + @ApiModelProperty(value = "报价类型,0:钥匙孔位异常报警", example = "1")
  28 + private Integer alarm;
  29 + /***钥匙孔位异常信息*/
  30 + @ApiModelProperty(value = "钥匙孔位异常信息")
  31 + private String exkeys;
  32 + /***创建时间*/
  33 + @ApiModelProperty(value = "创建时间")
  34 + private java.util.Date createTime;
  35 + /***创建人员*/
  36 + @ApiModelProperty(value = "创建人员")
  37 + private String createBy;
  38 + /***修改时间*/
  39 + @ApiModelProperty(value = "修改时间")
  40 + private java.util.Date updateTime;
  41 + /***修改人员*/
  42 + @ApiModelProperty(value = "修改人员")
  43 + private String updateby;
  44 +
  45 +
  46 +
  47 + @Override
  48 + public String toString() {
  49 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  50 + }
  51 +}
0 \ No newline at end of file 52 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/heartbeat/dto/LingangEquipmentHeartbeatUpdateDTO.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.heartbeat.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +@Data
  10 +@ApiModel(value = "设备心跳包的修改DTO")
  11 +@Accessors(chain = true)
  12 +@EqualsAndHashCode(callSuper = false)
  13 +/**设备心跳包 DTO*/
  14 +public class LingangEquipmentHeartbeatUpdateDTO implements java.io.Serializable {
  15 + private static final long serialVersionUID = 216573576L;
  16 +
  17 + /***主键*/
  18 + @ApiModelProperty(value = "主键", example = "1")
  19 + private Long id;
  20 + /***设备号*/
  21 + @ApiModelProperty(value = "设备号")
  22 + private String device;
  23 + /***时间*/
  24 + @ApiModelProperty(value = "时间")
  25 + private java.util.Date time;
  26 + /***报价类型,0:钥匙孔位异常报警*/
  27 + @ApiModelProperty(value = "报价类型,0:钥匙孔位异常报警", example = "1")
  28 + private Integer alarm;
  29 + /***钥匙孔位异常信息*/
  30 + @ApiModelProperty(value = "钥匙孔位异常信息")
  31 + private String exkeys;
  32 + /***创建时间*/
  33 + @ApiModelProperty(value = "创建时间")
  34 + private java.util.Date createTime;
  35 + /***创建人员*/
  36 + @ApiModelProperty(value = "创建人员")
  37 + private String createBy;
  38 + /***修改时间*/
  39 + @ApiModelProperty(value = "修改时间")
  40 + private java.util.Date updateTime;
  41 + /***修改人员*/
  42 + @ApiModelProperty(value = "修改人员")
  43 + private String updateby;
  44 + /***操作人员*/
  45 + @ApiModelProperty(value = "操作人员")
  46 + private String operator;
  47 +
  48 +
  49 + @Override
  50 + public String toString() {
  51 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  52 + }
  53 +}
0 \ No newline at end of file 54 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/heartbeat/vo/LingangEquipmentHeartbeatVO.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.heartbeat.vo;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.experimental.Accessors;
  9 +import lombok.NoArgsConstructor;
  10 +import lombok.AllArgsConstructor;
  11 +
  12 +@Data
  13 +@NoArgsConstructor
  14 +@AllArgsConstructor
  15 +@ApiModel(value = "设备心跳包的VO")
  16 +@Accessors(chain = true)
  17 +@EqualsAndHashCode(callSuper = false)
  18 +/**设备心跳包 VO*/
  19 +public class LingangEquipmentHeartbeatVO implements java.io.Serializable {
  20 + private static final long serialVersionUID = 546198584L;
  21 +
  22 + /***主键*/
  23 + @ApiModelProperty(value = "主键", example = "1")
  24 + private Long id;
  25 + /***设备号*/
  26 + @ApiModelProperty(value = "设备号")
  27 + private String device;
  28 + /***时间*/
  29 + @ApiModelProperty(value = "时间")
  30 + private java.util.Date time;
  31 + /***报价类型,0:钥匙孔位异常报警*/
  32 + @ApiModelProperty(value = "报价类型,0:钥匙孔位异常报警", example = "1")
  33 + private Integer alarm;
  34 + /***钥匙孔位异常信息*/
  35 + @ApiModelProperty(value = "钥匙孔位异常信息")
  36 + private String exkeys;
  37 + /***创建时间*/
  38 + @ApiModelProperty(value = "创建时间")
  39 + private java.util.Date createTime;
  40 + /***创建人员*/
  41 + @ApiModelProperty(value = "创建人员")
  42 + private String createBy;
  43 + /***修改时间*/
  44 + @ApiModelProperty(value = "修改时间")
  45 + private java.util.Date updateTime;
  46 + /***修改人员*/
  47 + @ApiModelProperty(value = "修改人员")
  48 + private String updateby;
  49 +
  50 +
  51 + @Override
  52 + public String toString() {
  53 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  54 + }
  55 +}
0 \ No newline at end of file 56 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/self/check/LingangEquimentSelfCheck.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.self.check;
  2 +
  3 +import lombok.Data;
  4 +import com.baomidou.mybatisplus.annotation.IdType;
  5 +import com.baomidou.mybatisplus.annotation.TableField;
  6 +import com.baomidou.mybatisplus.annotation.TableId;
  7 +import com.baomidou.mybatisplus.annotation.TableName;
  8 +import org.apache.commons.lang3.StringUtils;
  9 +import lombok.EqualsAndHashCode;
  10 +import lombok.experimental.Accessors;
  11 +import lombok.extern.slf4j.Slf4j;
  12 +import lombok.NoArgsConstructor;
  13 +import lombok.AllArgsConstructor;
  14 +import com.ruoyi.common.annotation.Excel;
  15 +
  16 +
  17 +@Data
  18 +@Slf4j
  19 +@NoArgsConstructor
  20 +@AllArgsConstructor
  21 +@Accessors(chain = true)
  22 +@EqualsAndHashCode(callSuper = false)
  23 +@TableName("equiment_self_check")
  24 +/**设备自检 实体*/
  25 +public class LingangEquimentSelfCheck {
  26 + /***ID*/
  27 + @TableId(value = "id", type = IdType.AUTO)
  28 + @Excel(name = "ID")
  29 + private java.lang.Long id;
  30 +
  31 +
  32 + /***设备号*/
  33 + @Excel(name = "设备号")
  34 + private java.lang.String device;
  35 +
  36 +
  37 + /***设备版本号*/
  38 + @Excel(name = "设备版本号")
  39 + private java.lang.String appVersion;
  40 +
  41 +
  42 + /***酒测仪状态 1正常,2故障,null/3未检测到*/
  43 + @Excel(name = "酒测仪状态 1正常,2故障,null/3未检测到")
  44 + private java.lang.Integer wine;
  45 +
  46 +
  47 + /***摄像头状态*/
  48 + @Excel(name = "摄像头状态")
  49 + private java.lang.String cameras;
  50 +
  51 + @TableField(exist = false)
  52 + private Boolean camerasSaveExceptionFlag;
  53 +
  54 +
  55 + /***测温仪状态 1正常,2故障,null/3未检测到*/
  56 + @Excel(name = "测温仪状态 1正常,2故障,null/3未检测到")
  57 + private java.lang.Integer therm;
  58 +
  59 +
  60 + /***喇叭状态 1正常,2故障,null/3未检测到*/
  61 + @Excel(name = "喇叭状态 1正常,2故障,null/3未检测到")
  62 + private java.lang.Integer horn;
  63 +
  64 +
  65 + /***麦克风状态 1正常,2故障,null/3未检测到*/
  66 + @Excel(name = "麦克风状态 1正常,2故障,null/3未检测到")
  67 + private java.lang.Integer mike;
  68 +
  69 +
  70 + /***锁控状态 1正常,2故障,null/3未检测到*/
  71 + @Excel(name = "锁控状态 1正常,2故障,null/3未检测到")
  72 + private java.lang.Integer lock;
  73 +
  74 +
  75 + /***设备传过来的时间*/
  76 + @Excel(name = "设备传过来的时间")
  77 + private java.util.Date time;
  78 +
  79 +
  80 + /***设备类型*/
  81 + @Excel(name = "设备类型")
  82 + private java.lang.String devicetype;
  83 +
  84 +
  85 + /***是否拥有钥匙柜外设 null/0:否,1:是*/
  86 + @Excel(name = "是否拥有钥匙柜外设 null/0:否,1:是")
  87 + private java.lang.Boolean iskeybox;
  88 +
  89 +
  90 + /***异常ID*/
  91 + @Excel(name = "异常ID")
  92 + private java.lang.Long quipmentExceptionId;
  93 +
  94 +
  95 + /***创建人员*/
  96 + @Excel(name = "创建人员")
  97 + private Long createBy;
  98 +
  99 +
  100 + /***创建时间*/
  101 + @Excel(name = "创建时间")
  102 + private java.util.Date createTime;
  103 +
  104 +
  105 + /***修改人员*/
  106 + @Excel(name = "修改人员")
  107 + private Long updateBy;
  108 +
  109 +
  110 + /***修改时间*/
  111 + @Excel(name = "修改时间")
  112 + private java.util.Date updateTime;
  113 +
  114 +
  115 + @Override
  116 + public String toString() {
  117 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  118 + }
  119 +}
0 \ No newline at end of file 120 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/self/check/dto/LingangEquimentSelfCheckAddDTO.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.self.check.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +@Data
  10 +@ApiModel(value = "设备自检的添加DTO")
  11 +@Accessors(chain = true)
  12 +@EqualsAndHashCode(callSuper = false)
  13 +/**设备自检 DTO*/
  14 +public class LingangEquimentSelfCheckAddDTO implements java.io.Serializable {
  15 + private static final long serialVersionUID = 223622531L;
  16 +
  17 + /***ID*/
  18 + @ApiModelProperty(value = "ID", example = "1")
  19 + private Long id;
  20 + /***设备号*/
  21 + @ApiModelProperty(value = "设备号")
  22 + private String device;
  23 + /***设备版本号*/
  24 + @ApiModelProperty(value = "设备版本号")
  25 + private String appVersion;
  26 + /***酒测仪状态 1正常,2故障,null/3未检测到*/
  27 + @ApiModelProperty(value = "酒测仪状态 1正常,2故障,null/3未检测到", example = "1")
  28 + private Integer wine;
  29 + /***摄像头状态*/
  30 + @ApiModelProperty(value = "摄像头状态")
  31 + private String cameras;
  32 + /***测温仪状态 1正常,2故障,null/3未检测到*/
  33 + @ApiModelProperty(value = "测温仪状态 1正常,2故障,null/3未检测到", example = "1")
  34 + private Integer therm;
  35 + /***喇叭状态 1正常,2故障,null/3未检测到*/
  36 + @ApiModelProperty(value = "喇叭状态 1正常,2故障,null/3未检测到", example = "1")
  37 + private Integer horn;
  38 + /***麦克风状态 1正常,2故障,null/3未检测到*/
  39 + @ApiModelProperty(value = "麦克风状态 1正常,2故障,null/3未检测到", example = "1")
  40 + private Integer mike;
  41 + /***锁控状态 1正常,2故障,null/3未检测到*/
  42 + @ApiModelProperty(value = "锁控状态 1正常,2故障,null/3未检测到", example = "1")
  43 + private Integer lock;
  44 + /***设备传过来的时间*/
  45 + @ApiModelProperty(value = "设备传过来的时间")
  46 + private java.util.Date time;
  47 + /***设备类型*/
  48 + @ApiModelProperty(value = "设备类型")
  49 + private String devicetype;
  50 + /***是否拥有钥匙柜外设 null/0:否,1:是*/
  51 + @ApiModelProperty(value = "是否拥有钥匙柜外设 null/0:否,1:是")
  52 + private Boolean iskeybox;
  53 + /***异常ID*/
  54 + @ApiModelProperty(value = "异常ID", example = "1")
  55 + private Long quipmentExceptionId;
  56 +
  57 +
  58 + @Override
  59 + public String toString() {
  60 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  61 + }
  62 +}
0 \ No newline at end of file 63 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/self/check/dto/LingangEquimentSelfCheckQueryDTO.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.self.check.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +@Data
  10 +@ApiModel(value = "设备自检的查询DTO")
  11 +@Accessors(chain = true)
  12 +@EqualsAndHashCode(callSuper = false)
  13 +/**设备自检 DTO*/
  14 +public class LingangEquimentSelfCheckQueryDTO implements java.io.Serializable {
  15 + private static final long serialVersionUID = 242538649L;
  16 +
  17 + /***ID*/
  18 + @ApiModelProperty(value = "ID", example = "1")
  19 + private Long id;
  20 + /***设备号*/
  21 + @ApiModelProperty(value = "设备号")
  22 + private String device;
  23 + /***设备版本号*/
  24 + @ApiModelProperty(value = "设备版本号")
  25 + private String appVersion;
  26 + /***酒测仪状态 1正常,2故障,null/3未检测到*/
  27 + @ApiModelProperty(value = "酒测仪状态 1正常,2故障,null/3未检测到", example = "1")
  28 + private Integer wine;
  29 + /***摄像头状态*/
  30 + @ApiModelProperty(value = "摄像头状态")
  31 + private String cameras;
  32 + /***测温仪状态 1正常,2故障,null/3未检测到*/
  33 + @ApiModelProperty(value = "测温仪状态 1正常,2故障,null/3未检测到", example = "1")
  34 + private Integer therm;
  35 + /***喇叭状态 1正常,2故障,null/3未检测到*/
  36 + @ApiModelProperty(value = "喇叭状态 1正常,2故障,null/3未检测到", example = "1")
  37 + private Integer horn;
  38 + /***麦克风状态 1正常,2故障,null/3未检测到*/
  39 + @ApiModelProperty(value = "麦克风状态 1正常,2故障,null/3未检测到", example = "1")
  40 + private Integer mike;
  41 + /***锁控状态 1正常,2故障,null/3未检测到*/
  42 + @ApiModelProperty(value = "锁控状态 1正常,2故障,null/3未检测到", example = "1")
  43 + private Integer lock;
  44 + /***设备传过来的时间*/
  45 + @ApiModelProperty(value = "设备传过来的时间")
  46 + private java.util.Date time;
  47 + /***设备类型*/
  48 + @ApiModelProperty(value = "设备类型")
  49 + private String devicetype;
  50 + /***是否拥有钥匙柜外设 null/0:否,1:是*/
  51 + @ApiModelProperty(value = "是否拥有钥匙柜外设 null/0:否,1:是")
  52 + private Boolean iskeybox;
  53 + /***异常ID*/
  54 + @ApiModelProperty(value = "异常ID", example = "1")
  55 + private Long quipmentExceptionId;
  56 + /***创建人员*/
  57 + @ApiModelProperty(value = "创建人员")
  58 + private Long createBy;
  59 + /***创建时间*/
  60 + @ApiModelProperty(value = "创建时间")
  61 + private java.util.Date createTime;
  62 + /***修改人员*/
  63 + @ApiModelProperty(value = "修改人员")
  64 + private Long updateBy;
  65 + /***修改时间*/
  66 + @ApiModelProperty(value = "修改时间")
  67 + private java.util.Date updateTime;
  68 +
  69 +
  70 + @Override
  71 + public String toString() {
  72 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  73 + }
  74 +}
0 \ No newline at end of file 75 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/self/check/dto/LingangEquimentSelfCheckUpdateDTO.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.self.check.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +@Data
  10 +@ApiModel(value = "设备自检的修改DTO")
  11 +@Accessors(chain = true)
  12 +@EqualsAndHashCode(callSuper = false)
  13 +/**设备自检 DTO*/
  14 +public class LingangEquimentSelfCheckUpdateDTO implements java.io.Serializable {
  15 + private static final long serialVersionUID = 294106603L;
  16 +
  17 + /***ID*/
  18 + @ApiModelProperty(value = "ID", example = "1")
  19 + private Long id;
  20 + /***设备号*/
  21 + @ApiModelProperty(value = "设备号")
  22 + private String device;
  23 + /***设备版本号*/
  24 + @ApiModelProperty(value = "设备版本号")
  25 + private String appVersion;
  26 + /***酒测仪状态 1正常,2故障,null/3未检测到*/
  27 + @ApiModelProperty(value = "酒测仪状态 1正常,2故障,null/3未检测到", example = "1")
  28 + private Integer wine;
  29 + /***摄像头状态*/
  30 + @ApiModelProperty(value = "摄像头状态")
  31 + private String cameras;
  32 + /***测温仪状态 1正常,2故障,null/3未检测到*/
  33 + @ApiModelProperty(value = "测温仪状态 1正常,2故障,null/3未检测到", example = "1")
  34 + private Integer therm;
  35 + /***喇叭状态 1正常,2故障,null/3未检测到*/
  36 + @ApiModelProperty(value = "喇叭状态 1正常,2故障,null/3未检测到", example = "1")
  37 + private Integer horn;
  38 + /***麦克风状态 1正常,2故障,null/3未检测到*/
  39 + @ApiModelProperty(value = "麦克风状态 1正常,2故障,null/3未检测到", example = "1")
  40 + private Integer mike;
  41 + /***锁控状态 1正常,2故障,null/3未检测到*/
  42 + @ApiModelProperty(value = "锁控状态 1正常,2故障,null/3未检测到", example = "1")
  43 + private Integer lock;
  44 + /***设备传过来的时间*/
  45 + @ApiModelProperty(value = "设备传过来的时间")
  46 + private java.util.Date time;
  47 + /***设备类型*/
  48 + @ApiModelProperty(value = "设备类型")
  49 + private String devicetype;
  50 + /***是否拥有钥匙柜外设 null/0:否,1:是*/
  51 + @ApiModelProperty(value = "是否拥有钥匙柜外设 null/0:否,1:是")
  52 + private Boolean iskeybox;
  53 + /***异常ID*/
  54 + @ApiModelProperty(value = "异常ID", example = "1")
  55 + private Long quipmentExceptionId;
  56 +
  57 +
  58 + @Override
  59 + public String toString() {
  60 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  61 + }
  62 +}
0 \ No newline at end of file 63 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/self/check/dto/LingangEquimentSelfCheckUpdateStatusDTO.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.self.check.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.experimental.Accessors;
  8 +
  9 +@Data
  10 +@ApiModel(value = "设备自检的修改状态DTO")
  11 +@Accessors(chain = true)
  12 +@EqualsAndHashCode(callSuper = false)
  13 +/**设备自检 DTO*/
  14 +public class LingangEquimentSelfCheckUpdateStatusDTO implements java.io.Serializable {
  15 + private static final long serialVersionUID = 507773646L;
  16 +
  17 + /***ID*/
  18 + @ApiModelProperty(value = "ID", example = "1")
  19 + private Long id;
  20 + /***设备号*/
  21 + @ApiModelProperty(value = "设备号")
  22 + private String device;
  23 + /***设备版本号*/
  24 + @ApiModelProperty(value = "设备版本号")
  25 + private String appVersion;
  26 + /***酒测仪状态 1正常,2故障,null/3未检测到*/
  27 + @ApiModelProperty(value = "酒测仪状态 1正常,2故障,null/3未检测到", example = "1")
  28 + private Integer wine;
  29 + /***摄像头状态*/
  30 + @ApiModelProperty(value = "摄像头状态")
  31 + private String cameras;
  32 + /***测温仪状态 1正常,2故障,null/3未检测到*/
  33 + @ApiModelProperty(value = "测温仪状态 1正常,2故障,null/3未检测到", example = "1")
  34 + private Integer therm;
  35 + /***喇叭状态 1正常,2故障,null/3未检测到*/
  36 + @ApiModelProperty(value = "喇叭状态 1正常,2故障,null/3未检测到", example = "1")
  37 + private Integer horn;
  38 + /***麦克风状态 1正常,2故障,null/3未检测到*/
  39 + @ApiModelProperty(value = "麦克风状态 1正常,2故障,null/3未检测到", example = "1")
  40 + private Integer mike;
  41 + /***锁控状态 1正常,2故障,null/3未检测到*/
  42 + @ApiModelProperty(value = "锁控状态 1正常,2故障,null/3未检测到", example = "1")
  43 + private Integer lock;
  44 + /***设备传过来的时间*/
  45 + @ApiModelProperty(value = "设备传过来的时间")
  46 + private java.util.Date time;
  47 + /***设备类型*/
  48 + @ApiModelProperty(value = "设备类型")
  49 + private String devicetype;
  50 + /***是否拥有钥匙柜外设 null/0:否,1:是*/
  51 + @ApiModelProperty(value = "是否拥有钥匙柜外设 null/0:否,1:是")
  52 + private Boolean iskeybox;
  53 + /***异常ID*/
  54 + @ApiModelProperty(value = "异常ID", example = "1")
  55 + private Long quipmentExceptionId;
  56 +
  57 +
  58 + @Override
  59 + public String toString() {
  60 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  61 + }
  62 +}
0 \ No newline at end of file 63 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/domain/equipment/self/check/vo/LingangEquimentSelfCheckVO.java 0 → 100644
  1 +package com.ruoyi.domain.equipment.self.check.vo;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.experimental.Accessors;
  9 +import lombok.NoArgsConstructor;
  10 +import lombok.AllArgsConstructor;
  11 +
  12 +@Data
  13 +@NoArgsConstructor
  14 +@AllArgsConstructor
  15 +@ApiModel(value = "设备自检的VO")
  16 +@Accessors(chain = true)
  17 +@EqualsAndHashCode(callSuper = false)
  18 +/**设备自检 VO*/
  19 +public class LingangEquimentSelfCheckVO implements java.io.Serializable {
  20 + private static final long serialVersionUID = 884043618L;
  21 +
  22 + /***ID*/
  23 + @ApiModelProperty(value = "ID", example = "1")
  24 + private Long id;
  25 + /***设备号*/
  26 + @ApiModelProperty(value = "设备号")
  27 + private String device;
  28 + /***设备版本号*/
  29 + @ApiModelProperty(value = "设备版本号")
  30 + private String appVersion;
  31 + /***酒测仪状态 1正常,2故障,null/3未检测到*/
  32 + @ApiModelProperty(value = "酒测仪状态 1正常,2故障,null/3未检测到", example = "1")
  33 + private Integer wine;
  34 + /***摄像头状态*/
  35 + @ApiModelProperty(value = "摄像头状态")
  36 + private String cameras;
  37 + /***测温仪状态 1正常,2故障,null/3未检测到*/
  38 + @ApiModelProperty(value = "测温仪状态 1正常,2故障,null/3未检测到", example = "1")
  39 + private Integer therm;
  40 + /***喇叭状态 1正常,2故障,null/3未检测到*/
  41 + @ApiModelProperty(value = "喇叭状态 1正常,2故障,null/3未检测到", example = "1")
  42 + private Integer horn;
  43 + /***麦克风状态 1正常,2故障,null/3未检测到*/
  44 + @ApiModelProperty(value = "麦克风状态 1正常,2故障,null/3未检测到", example = "1")
  45 + private Integer mike;
  46 + /***锁控状态 1正常,2故障,null/3未检测到*/
  47 + @ApiModelProperty(value = "锁控状态 1正常,2故障,null/3未检测到", example = "1")
  48 + private Integer lock;
  49 + /***设备传过来的时间*/
  50 + @ApiModelProperty(value = "设备传过来的时间")
  51 + private java.util.Date time;
  52 + /***设备类型*/
  53 + @ApiModelProperty(value = "设备类型")
  54 + private String devicetype;
  55 + /***是否拥有钥匙柜外设 null/0:否,1:是*/
  56 + @ApiModelProperty(value = "是否拥有钥匙柜外设 null/0:否,1:是")
  57 + private Boolean iskeybox;
  58 + /***异常ID*/
  59 + @ApiModelProperty(value = "异常ID", example = "1")
  60 + private Integer quipmentExceptionId;
  61 + /***创建人员*/
  62 + @ApiModelProperty(value = "创建人员")
  63 + private Long createBy;
  64 + /***创建时间*/
  65 + @ApiModelProperty(value = "创建时间")
  66 + private java.util.Date createTime;
  67 + /***修改人员*/
  68 + @ApiModelProperty(value = "修改人员")
  69 + private Long updateBy;
  70 + /***修改时间*/
  71 + @ApiModelProperty(value = "修改时间")
  72 + private java.util.Date updateTime;
  73 +
  74 +
  75 + @Override
  76 + public String toString() {
  77 + return com.alibaba.fastjson2.JSON.toJSONString(this);
  78 + }
  79 +}
0 \ No newline at end of file 80 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/equipment/service/IEquipmentService.java
@@ -11,19 +11,28 @@ import com.ruoyi.pojo.vo.EquipmentResponseVo; @@ -11,19 +11,28 @@ import com.ruoyi.pojo.vo.EquipmentResponseVo;
11 11
12 /** 12 /**
13 * 设备信息Service接口 13 * 设备信息Service接口
14 - * 14 + *
15 * @author guzijian 15 * @author guzijian
16 * @date 2023-07-05 16 * @date 2023-07-05
17 */ 17 */
18 -public interface IEquipmentService extends IService<Equipment>  
19 -{ 18 +public interface IEquipmentService extends IService<Equipment> {
20 /** 19 /**
21 * 查询设备信息 20 * 查询设备信息
22 - * 21 + *
23 * @param id 设备信息主键 22 * @param id 设备信息主键
24 * @return 设备信息 23 * @return 设备信息
25 */ 24 */
26 public Equipment selectEquipmentById(Long id); 25 public Equipment selectEquipmentById(Long id);
  26 +
  27 + /***
  28 + * 根据设备号查询设备信息
  29 + * @author liujun
  30 + * @date 2024/7/5 15:23
  31 + * @param deviceId
  32 + * @return com.ruoyi.equipment.domain.Equipment
  33 + */
  34 + Equipment getOneByDeviceId(String deviceId);
  35 +
27 /*** 36 /***
28 *用于页面选择 37 *用于页面选择
29 * @author liujun 38 * @author liujun
@@ -44,7 +53,7 @@ public interface IEquipmentService extends IService&lt;Equipment&gt; @@ -44,7 +53,7 @@ public interface IEquipmentService extends IService&lt;Equipment&gt;
44 53
45 /** 54 /**
46 * 查询设备信息列表 55 * 查询设备信息列表
47 - * 56 + *
48 * @param equipment 设备信息 57 * @param equipment 设备信息
49 * @return 设备信息集合 58 * @return 设备信息集合
50 */ 59 */
@@ -52,7 +61,7 @@ public interface IEquipmentService extends IService&lt;Equipment&gt; @@ -52,7 +61,7 @@ public interface IEquipmentService extends IService&lt;Equipment&gt;
52 61
53 /** 62 /**
54 * 新增设备信息 63 * 新增设备信息
55 - * 64 + *
56 * @param equipment 设备信息 65 * @param equipment 设备信息
57 * @return 结果 66 * @return 结果
58 */ 67 */
@@ -60,7 +69,7 @@ public interface IEquipmentService extends IService&lt;Equipment&gt; @@ -60,7 +69,7 @@ public interface IEquipmentService extends IService&lt;Equipment&gt;
60 69
61 /** 70 /**
62 * 修改设备信息 71 * 修改设备信息
63 - * 72 + *
64 * @param equipment 设备信息 73 * @param equipment 设备信息
65 * @return 结果 74 * @return 结果
66 */ 75 */
@@ -68,7 +77,7 @@ public interface IEquipmentService extends IService&lt;Equipment&gt; @@ -68,7 +77,7 @@ public interface IEquipmentService extends IService&lt;Equipment&gt;
68 77
69 /** 78 /**
70 * 批量删除设备信息 79 * 批量删除设备信息
71 - * 80 + *
72 * @param ids 需要删除的设备信息主键集合 81 * @param ids 需要删除的设备信息主键集合
73 * @return 结果 82 * @return 结果
74 */ 83 */
@@ -76,7 +85,7 @@ public interface IEquipmentService extends IService&lt;Equipment&gt; @@ -76,7 +85,7 @@ public interface IEquipmentService extends IService&lt;Equipment&gt;
76 85
77 /** 86 /**
78 * 删除设备信息信息 87 * 删除设备信息信息
79 - * 88 + *
80 * @param id 设备信息主键 89 * @param id 设备信息主键
81 * @return 结果 90 * @return 结果
82 */ 91 */
Bsth-admin/src/main/java/com/ruoyi/equipment/service/impl/EquipmentServiceImpl.java
@@ -52,6 +52,13 @@ public class EquipmentServiceImpl extends ServiceImpl&lt;EquipmentMapper, Equipment @@ -52,6 +52,13 @@ public class EquipmentServiceImpl extends ServiceImpl&lt;EquipmentMapper, Equipment
52 } 52 }
53 53
54 @Override 54 @Override
  55 + public Equipment getOneByDeviceId(String deviceId) {
  56 + LambdaQueryWrapper<Equipment> wrapper = new LambdaQueryWrapper<>();
  57 + wrapper.eq(Equipment::getDeviceId, deviceId);
  58 + return getOne(wrapper);
  59 + }
  60 +
  61 + @Override
55 public List<Equipment> listOfSelect(Equipment equipment) { 62 public List<Equipment> listOfSelect(Equipment equipment) {
56 63
57 return equipmentMapper.queryIdsiteNameBypromise(equipment.getPromise()); 64 return equipmentMapper.queryIdsiteNameBypromise(equipment.getPromise());
Bsth-admin/src/main/java/com/ruoyi/mapper/equipment/heartbeat/LingangEquipmentHeartbeatMapper.java 0 → 100644
  1 +package com.ruoyi.mapper.equipment.heartbeat;
  2 +
  3 +import com.ruoyi.domain.equipment.heartbeat.LingangEquipmentHeartbeat;
  4 +import org.apache.ibatis.annotations.Mapper;
  5 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  6 +
  7 +
  8 +@Mapper
  9 +/**设备心跳包 Mapper接口*/
  10 +public interface LingangEquipmentHeartbeatMapper extends BaseMapper<LingangEquipmentHeartbeat> {
  11 + /**
  12 + * 插入有值的列
  13 + */
  14 + int insertSelective(LingangEquipmentHeartbeat name);
  15 +}
0 \ No newline at end of file 16 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/mapper/equipment/self/check/LingangEquimentSelfCheckMapper.java 0 → 100644
  1 +package com.ruoyi.mapper.equipment.self.check;
  2 +
  3 +import com.ruoyi.domain.equipment.self.check.LingangEquimentSelfCheck;
  4 +import org.apache.ibatis.annotations.Mapper;
  5 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  6 +
  7 +
  8 +@Mapper
  9 +/**设备自检 Mapper接口*/
  10 +public interface LingangEquimentSelfCheckMapper extends BaseMapper<LingangEquimentSelfCheck> {
  11 + /**
  12 + * 插入有值的列
  13 + */
  14 + int insertSelective(LingangEquimentSelfCheck name);
  15 +}
0 \ No newline at end of file 16 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/service/driver/NewDriverService.java
1 -package com; 1 +package com.ruoyi.service.driver;
2 2
3 import com.baomidou.mybatisplus.extension.service.IService; 3 import com.baomidou.mybatisplus.extension.service.IService;
4 import com.baomidou.mybatisplus.core.metadata.IPage; 4 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -47,5 +47,24 @@ public interface NewDriverService extends IService&lt;NewDriver&gt; { @@ -47,5 +47,24 @@ public interface NewDriverService extends IService&lt;NewDriver&gt; {
47 */ 47 */
48 boolean updateByPrimaryKey(NewDriver entity); 48 boolean updateByPrimaryKey(NewDriver entity);
49 49
  50 + /**
  51 + * 同步客户端人脸数据
  52 + *
  53 + * @param entity
  54 + * @return boolean
  55 + * @author liujun
  56 + * @date 2024/7/11 16:07
  57 + */
  58 + boolean updateClient(NewDriver entity);
  59 +
  60 + /***
  61 + * 人脸注册
  62 + * @author liujun
  63 + * @date 2024/7/11 17:36
  64 + * @param entity
  65 + * @return boolean
  66 + */
  67 + boolean faceRegister(NewDriver entity);
  68 +
50 boolean deleteById(java.lang.String jobCode); 69 boolean deleteById(java.lang.String jobCode);
51 } 70 }
52 \ No newline at end of file 71 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/service/equipment/heartbeat/LingangEquipmentHeartbeatService.java 0 → 100644
  1 +package com.ruoyi.service.equipment.heartbeat;
  2 +
  3 +import com.baomidou.mybatisplus.extension.service.IService;
  4 +import com.baomidou.mybatisplus.core.metadata.IPage;
  5 +
  6 +import java.util.List;
  7 +
  8 +import com.ruoyi.domain.OrderEntity;
  9 +import com.ruoyi.domain.equipment.heartbeat.LingangEquipmentHeartbeat;
  10 +
  11 +
  12 +/**
  13 + * 设备心跳包 Service接口
  14 + */
  15 +public interface LingangEquipmentHeartbeatService extends IService<LingangEquipmentHeartbeat> {
  16 + /**
  17 + * 分页查询
  18 + */
  19 + IPage<LingangEquipmentHeartbeat> pageList(com.baomidou.mybatisplus.extension.plugins.pagination.Page<LingangEquipmentHeartbeat> page, LingangEquipmentHeartbeat entity, OrderEntity orderEntity);
  20 +
  21 + /**
  22 + * 带条件查询
  23 + */
  24 + List<LingangEquipmentHeartbeat> list(LingangEquipmentHeartbeat entity);
  25 +
  26 +
  27 +
  28 + /**
  29 + * 条件查询只返回一条数据的方法
  30 + */
  31 + LingangEquipmentHeartbeat getOne(LingangEquipmentHeartbeat entity);
  32 +
  33 + Integer countId(LingangEquipmentHeartbeat entity);
  34 +
  35 + /**
  36 + * 插入有值的列
  37 + */
  38 + int insertSelective(LingangEquipmentHeartbeat entity);
  39 +
  40 + /***插入数据*/
  41 + boolean insert(LingangEquipmentHeartbeat entity);
  42 +
  43 +
  44 +
  45 + /**
  46 + * 根据主键修改数据
  47 + */
  48 + boolean updateByPrimaryKey(LingangEquipmentHeartbeat entity);
  49 +
  50 + boolean deleteById(Long id);
  51 +}
0 \ No newline at end of file 52 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/service/equipment/self/check/LingangEquimentSelfCheckService.java 0 → 100644
  1 +package com.ruoyi.service.equipment.self.check;
  2 +
  3 +
  4 +import java.util.List;
  5 +
  6 +import com.baomidou.mybatisplus.core.metadata.IPage;
  7 +import com.baomidou.mybatisplus.extension.service.IService;
  8 +import com.ruoyi.domain.OrderEntity;
  9 +import com.ruoyi.domain.equipment.self.check.LingangEquimentSelfCheck;
  10 +
  11 +
  12 +/**
  13 + * 设备自检 Service接口
  14 + */
  15 +public interface LingangEquimentSelfCheckService extends IService<LingangEquimentSelfCheck> {
  16 + /**
  17 + * 分页查询
  18 + */
  19 + IPage<LingangEquimentSelfCheck> pageList(com.baomidou.mybatisplus.extension.plugins.pagination.Page<LingangEquimentSelfCheck> page, LingangEquimentSelfCheck entity, OrderEntity orderEntity);
  20 +
  21 + /**
  22 + * 带条件查询
  23 + */
  24 + List<LingangEquimentSelfCheck> list(LingangEquimentSelfCheck entity);
  25 +
  26 +
  27 +
  28 + /**
  29 + * 条件查询只返回一条数据的方法
  30 + */
  31 + LingangEquimentSelfCheck getOne(LingangEquimentSelfCheck entity);
  32 +
  33 + Integer countId(LingangEquimentSelfCheck entity);
  34 +
  35 + /**
  36 + * 插入有值的列
  37 + */
  38 + int insertSelective(LingangEquimentSelfCheck entity);
  39 +
  40 + /***插入数据*/
  41 + boolean insert(LingangEquimentSelfCheck entity);
  42 +
  43 + /**
  44 + * 根据主键修改数据
  45 + */
  46 + boolean updateByPrimaryKey(LingangEquimentSelfCheck entity);
  47 +
  48 + boolean deleteById(Long id);
  49 +
  50 +}
0 \ No newline at end of file 51 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/service/impl/driver/NewDriverServiceImpl.java
1 package com.ruoyi.service.impl.driver; 1 package com.ruoyi.service.impl.driver;
2 2
  3 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4 +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  5 +import com.ruoyi.common.utils.StringUtils;
3 import com.ruoyi.domain.driver.NewDriver; 6 import com.ruoyi.domain.driver.NewDriver;
4 import com.ruoyi.mapper.driver.NewDriverMapper; 7 import com.ruoyi.mapper.driver.NewDriverMapper;
  8 +import com.ruoyi.service.driver.NewDriverService;
5 import org.apache.commons.collections4.CollectionUtils; 9 import org.apache.commons.collections4.CollectionUtils;
6 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
@@ -21,7 +25,7 @@ import java.util.List; @@ -21,7 +25,7 @@ import java.util.List;
21 import com.ruoyi.domain.OrderEntity; 25 import com.ruoyi.domain.OrderEntity;
22 26
23 @Service 27 @Service
24 -public class NewDriverServiceImpl extends ServiceImpl<NewDriverMapper, NewDriver> implements com.NewDriverService { 28 +public class NewDriverServiceImpl extends ServiceImpl<NewDriverMapper, NewDriver> implements NewDriverService {
25 @Autowired 29 @Autowired
26 private NewDriverMapper newDriverMapper; 30 private NewDriverMapper newDriverMapper;
27 31
@@ -111,6 +115,29 @@ public class NewDriverServiceImpl extends ServiceImpl&lt;NewDriverMapper, NewDriver @@ -111,6 +115,29 @@ public class NewDriverServiceImpl extends ServiceImpl&lt;NewDriverMapper, NewDriver
111 return updateById(entity); 115 return updateById(entity);
112 } 116 }
113 117
  118 + @Override
  119 + public boolean updateClient(NewDriver entity) {
  120 + LambdaUpdateWrapper<NewDriver> wrapper = new LambdaUpdateWrapper<NewDriver>();
  121 +
  122 + wrapper.set(NewDriver::getImage, entity.getImage()).set(NewDriver::getFaceFeature, entity.getFaceFeature())
  123 + .set(NewDriver::getBlueTooth, entity.getBlueTooth()).set(NewDriver::getInteger, entity.getInteger())
  124 + .set(NewDriver::getSyncontent, entity.getSyncontent()).set(NewDriver::getCsn, entity.getCsn())
  125 + .eq(NewDriver::getJobCode, entity.getJobCode());
  126 +
  127 + return update(wrapper);
  128 + }
  129 +
  130 + @Override
  131 + public boolean faceRegister(NewDriver entity) {
  132 + LambdaUpdateWrapper<NewDriver> wrapper = new LambdaUpdateWrapper<NewDriver>();
  133 + //TODO 保存图片信息
  134 + wrapper.set(NewDriver::getImage, entity.getImage())
  135 + .set(NewDriver::getFaceSignIn, entity.getFaceSignIn())
  136 + .set(NewDriver::getSignInEquipment, entity.getFaceSignIn())
  137 + .eq(NewDriver::getJobCode, entity.getIcCardCode());
  138 + return update(wrapper);
  139 + }
  140 +
114 /***根据主键删除数据*/ 141 /***根据主键删除数据*/
115 @Override 142 @Override
116 public boolean deleteById(java.lang.String jobCode) { 143 public boolean deleteById(java.lang.String jobCode) {
@@ -255,4 +282,5 @@ public class NewDriverServiceImpl extends ServiceImpl&lt;NewDriverMapper, NewDriver @@ -255,4 +282,5 @@ public class NewDriverServiceImpl extends ServiceImpl&lt;NewDriverMapper, NewDriver
255 } 282 }
256 } 283 }
257 } 284 }
  285 +
258 } 286 }
259 \ No newline at end of file 287 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/service/impl/equipment/heartbeat/LingangEquipmentHeartbeatServiceImpl.java 0 → 100644
  1 +package com.ruoyi.service.impl.equipment.heartbeat;
  2 +
  3 +import com.ruoyi.domain.equipment.heartbeat.LingangEquipmentHeartbeat;
  4 +import com.ruoyi.mapper.equipment.heartbeat.LingangEquipmentHeartbeatMapper;
  5 +import com.ruoyi.service.equipment.heartbeat.LingangEquipmentHeartbeatService;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.stereotype.Service;
  8 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  10 +import com.baomidou.mybatisplus.core.metadata.IPage;
  11 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  12 +
  13 +import com.github.pagehelper.PageHelper;
  14 +
  15 +
  16 +import java.util.Collections;
  17 +import java.util.List;
  18 +
  19 +import com.ruoyi.domain.OrderEntity;
  20 +
  21 +@Service
  22 +/**设备心跳包 Service实现类*/
  23 +public class LingangEquipmentHeartbeatServiceImpl extends ServiceImpl<LingangEquipmentHeartbeatMapper, LingangEquipmentHeartbeat> implements LingangEquipmentHeartbeatService {
  24 + @Autowired
  25 + private LingangEquipmentHeartbeatMapper lingangEquipmentHeartbeatMapper;
  26 +
  27 + /**
  28 + * 分页查询
  29 + */
  30 + @Override
  31 + public IPage<LingangEquipmentHeartbeat> pageList(Page<LingangEquipmentHeartbeat> page, LingangEquipmentHeartbeat entity, OrderEntity orderEntity) {
  32 + LambdaQueryWrapper<LingangEquipmentHeartbeat> countWrapper = new LambdaQueryWrapper<>(entity);
  33 + countWrapper.select(LingangEquipmentHeartbeat::getId);
  34 + int count = count(countWrapper);
  35 +
  36 + List<LingangEquipmentHeartbeat> lists = Collections.emptyList();
  37 + if (count > 0) {
  38 + PageHelper.startPage((int) page.getCurrent(), (int) page.getSize(), false);
  39 + LambdaQueryWrapper<LingangEquipmentHeartbeat> selectWrapper = new LambdaQueryWrapper<>(entity);
  40 + orderColumn(selectWrapper, orderEntity);
  41 + lists = list(selectWrapper);
  42 + }
  43 +
  44 + IPage<LingangEquipmentHeartbeat> returnPage = new Page<LingangEquipmentHeartbeat>();
  45 + returnPage.setRecords(lists);
  46 + returnPage.setPages(count % page.getSize() == 0 ? count / page.getSize() : count / page.getSize() + 1);
  47 + returnPage.setCurrent(page.getCurrent());
  48 + returnPage.setSize(page.getSize());
  49 + returnPage.setTotal(count);
  50 +
  51 + return returnPage;
  52 + }
  53 +
  54 + @Override
  55 + public List<LingangEquipmentHeartbeat> list(LingangEquipmentHeartbeat entity) {
  56 + return list(new LambdaQueryWrapper<>(entity));
  57 + }
  58 +
  59 + @Override
  60 + public LingangEquipmentHeartbeat getOne(LingangEquipmentHeartbeat entity) {
  61 + return getOne(new LambdaQueryWrapper<>(entity));
  62 + }
  63 +
  64 + @Override
  65 + public Integer countId(LingangEquipmentHeartbeat entity) {
  66 + LambdaQueryWrapper<LingangEquipmentHeartbeat> wrapper = new LambdaQueryWrapper<>(entity);
  67 + wrapper.select(LingangEquipmentHeartbeat::getId);
  68 + return count(wrapper);
  69 + }
  70 +
  71 +
  72 + /**
  73 + * 插入有值的列
  74 + */
  75 + @Override
  76 + public int insertSelective(LingangEquipmentHeartbeat entity) {
  77 + return lingangEquipmentHeartbeatMapper.insertSelective(entity);
  78 + }
  79 +
  80 + /**
  81 + * 插入数据
  82 + */
  83 + @Override
  84 + public boolean insert(LingangEquipmentHeartbeat entity) {
  85 + return save(entity);
  86 + }
  87 +
  88 + /**
  89 + * 根据主键修改数据
  90 + */
  91 + @Override
  92 + public boolean updateByPrimaryKey(LingangEquipmentHeartbeat entity) {
  93 + return updateById(entity);
  94 + }
  95 +
  96 + /***根据主键删除数据*/
  97 + @Override
  98 + public boolean deleteById(Long id) {
  99 + return removeById(id);
  100 + }
  101 +
  102 +
  103 + public static void orderColumn(LambdaQueryWrapper<LingangEquipmentHeartbeat> wrapper, OrderEntity orderEntity) {
  104 + if (org.apache.commons.lang3.StringUtils.equals("ascending", orderEntity.getOrder())) {
  105 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "id")) {
  106 + wrapper.orderByAsc(LingangEquipmentHeartbeat::getId);
  107 + }
  108 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "device")) {
  109 + wrapper.orderByAsc(LingangEquipmentHeartbeat::getDevice);
  110 + }
  111 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "time")) {
  112 + wrapper.orderByAsc(LingangEquipmentHeartbeat::getTime);
  113 + }
  114 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "alarm")) {
  115 + wrapper.orderByAsc(LingangEquipmentHeartbeat::getAlarm);
  116 + }
  117 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "exkeys")) {
  118 + wrapper.orderByAsc(LingangEquipmentHeartbeat::getExkeys);
  119 + }
  120 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "createTime")) {
  121 + wrapper.orderByAsc(LingangEquipmentHeartbeat::getCreateTime);
  122 + }
  123 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "createBy")) {
  124 + wrapper.orderByAsc(LingangEquipmentHeartbeat::getCreateBy);
  125 + }
  126 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "updateTime")) {
  127 + wrapper.orderByAsc(LingangEquipmentHeartbeat::getUpdateTime);
  128 + }
  129 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "updateby")) {
  130 + wrapper.orderByAsc(LingangEquipmentHeartbeat::getUpdateby);
  131 + }
  132 + } else if (org.apache.commons.lang3.StringUtils.equals("descending", orderEntity.getOrder())) {
  133 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "id")) {
  134 + wrapper.orderByDesc(LingangEquipmentHeartbeat::getId);
  135 + }
  136 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "device")) {
  137 + wrapper.orderByDesc(LingangEquipmentHeartbeat::getDevice);
  138 + }
  139 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "time")) {
  140 + wrapper.orderByDesc(LingangEquipmentHeartbeat::getTime);
  141 + }
  142 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "alarm")) {
  143 + wrapper.orderByDesc(LingangEquipmentHeartbeat::getAlarm);
  144 + }
  145 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "exkeys")) {
  146 + wrapper.orderByDesc(LingangEquipmentHeartbeat::getExkeys);
  147 + }
  148 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "createTime")) {
  149 + wrapper.orderByDesc(LingangEquipmentHeartbeat::getCreateTime);
  150 + }
  151 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "createBy")) {
  152 + wrapper.orderByDesc(LingangEquipmentHeartbeat::getCreateBy);
  153 + }
  154 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "updateTime")) {
  155 + wrapper.orderByDesc(LingangEquipmentHeartbeat::getUpdateTime);
  156 + }
  157 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "updateby")) {
  158 + wrapper.orderByDesc(LingangEquipmentHeartbeat::getUpdateby);
  159 + }
  160 + }
  161 + }
  162 +}
0 \ No newline at end of file 163 \ No newline at end of file
Bsth-admin/src/main/java/com/ruoyi/service/impl/equipment/self/check/LingangEquimentSelfCheckServiceImpl.java 0 → 100644
  1 +package com.ruoyi.service.impl.equipment.self.check;
  2 +
  3 +import com.ruoyi.common.utils.StringUtils;
  4 +import com.ruoyi.domain.equipment.self.check.LingangEquimentSelfCheck;
  5 +import com.ruoyi.eexception.domain.EquipmentException;
  6 +import com.ruoyi.eexception.service.IEquipmentExceptionService;
  7 +import com.ruoyi.mapper.equipment.self.check.LingangEquimentSelfCheckMapper;
  8 +import com.ruoyi.service.equipment.self.check.LingangEquimentSelfCheckService;
  9 +import org.apache.commons.collections4.CollectionUtils;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.stereotype.Service;
  12 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  13 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  14 +import com.baomidou.mybatisplus.core.metadata.IPage;
  15 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  16 +
  17 +import com.github.pagehelper.PageHelper;
  18 +
  19 +import java.util.Collections;
  20 +import java.util.Date;
  21 +import java.util.List;
  22 +import java.util.Objects;
  23 +
  24 +import com.ruoyi.domain.OrderEntity;
  25 +
  26 +@Service
  27 +/**设备自检 Service实现类*/
  28 +public class LingangEquimentSelfCheckServiceImpl extends ServiceImpl<LingangEquimentSelfCheckMapper, LingangEquimentSelfCheck> implements LingangEquimentSelfCheckService {
  29 + @Autowired
  30 + private LingangEquimentSelfCheckMapper lingangEquimentSelfCheckMapper;
  31 + @Autowired
  32 + private IEquipmentExceptionService equipmentExceptionService;
  33 +
  34 + /**
  35 + * 分页查询
  36 + */
  37 + @Override
  38 + public IPage<LingangEquimentSelfCheck> pageList(Page<LingangEquimentSelfCheck> page, LingangEquimentSelfCheck entity, OrderEntity orderEntity) {
  39 + LambdaQueryWrapper<LingangEquimentSelfCheck> countWrapper = new LambdaQueryWrapper<>(entity);
  40 + countWrapper.select(LingangEquimentSelfCheck::getId);
  41 + int count = count(countWrapper);
  42 +
  43 + List<LingangEquimentSelfCheck> lists = Collections.emptyList();
  44 + if (count > 0) {
  45 + PageHelper.startPage((int) page.getCurrent(), (int) page.getSize(), false);
  46 + LambdaQueryWrapper<LingangEquimentSelfCheck> selectWrapper = new LambdaQueryWrapper<>(entity);
  47 + orderColumn(selectWrapper, orderEntity);
  48 + lists = list(selectWrapper);
  49 + }
  50 +
  51 + IPage<LingangEquimentSelfCheck> returnPage = new Page<LingangEquimentSelfCheck>();
  52 + returnPage.setRecords(lists);
  53 + returnPage.setPages(count % page.getSize() == 0 ? count / page.getSize() : count / page.getSize() + 1);
  54 + returnPage.setCurrent(page.getCurrent());
  55 + returnPage.setSize(page.getSize());
  56 + returnPage.setTotal(count);
  57 +
  58 + return returnPage;
  59 + }
  60 +
  61 + @Override
  62 + public List<LingangEquimentSelfCheck> list(LingangEquimentSelfCheck entity) {
  63 + return list(new LambdaQueryWrapper<>(entity));
  64 + }
  65 +
  66 +
  67 + @Override
  68 + public LingangEquimentSelfCheck getOne(LingangEquimentSelfCheck entity) {
  69 + return getOne(new LambdaQueryWrapper<>(entity));
  70 + }
  71 +
  72 + @Override
  73 + public Integer countId(LingangEquimentSelfCheck entity) {
  74 + LambdaQueryWrapper<LingangEquimentSelfCheck> wrapper = new LambdaQueryWrapper<>(entity);
  75 + wrapper.select(LingangEquimentSelfCheck::getId);
  76 + return count(wrapper);
  77 + }
  78 +
  79 +
  80 + /**
  81 + * 插入有值的列
  82 + */
  83 + @Override
  84 + public int insertSelective(LingangEquimentSelfCheck entity) {
  85 + return lingangEquimentSelfCheckMapper.insertSelective(entity);
  86 + }
  87 +
  88 + /**
  89 + * 插入数据
  90 + */
  91 + @Override
  92 + public boolean insert(LingangEquimentSelfCheck entity) {
  93 + if (Objects.equals(entity.getWine(), 2) || Objects.equals(2, entity.getTherm()) || Objects.equals(2, entity.getHorn())
  94 + || Objects.equals(2, entity.getMike()) || Objects.equals(2, entity.getLock()) ||
  95 + Objects.equals(entity.getCamerasSaveExceptionFlag(), Boolean.TRUE)) {
  96 + EquipmentException equipmentException = insertEquipmentException(entity);
  97 + entity.setQuipmentExceptionId(equipmentException.getId());
  98 + }
  99 +
  100 + return save(entity);
  101 + }
  102 +
  103 + /**
  104 + * 根据主键修改数据
  105 + */
  106 + @Override
  107 + public boolean updateByPrimaryKey(LingangEquimentSelfCheck entity) {
  108 + return updateById(entity);
  109 + }
  110 +
  111 + /***根据主键删除数据*/
  112 + @Override
  113 + public boolean deleteById(Long id) {
  114 + return removeById(id);
  115 + }
  116 +
  117 +
  118 + public static void orderColumn(LambdaQueryWrapper<LingangEquimentSelfCheck> wrapper, OrderEntity orderEntity) {
  119 + if (org.apache.commons.lang3.StringUtils.equals("ascending", orderEntity.getOrder())) {
  120 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "id")) {
  121 + wrapper.orderByAsc(LingangEquimentSelfCheck::getId);
  122 + }
  123 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "device")) {
  124 + wrapper.orderByAsc(LingangEquimentSelfCheck::getDevice);
  125 + }
  126 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "appVersion")) {
  127 + wrapper.orderByAsc(LingangEquimentSelfCheck::getAppVersion);
  128 + }
  129 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "wine")) {
  130 + wrapper.orderByAsc(LingangEquimentSelfCheck::getWine);
  131 + }
  132 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "cameras")) {
  133 + wrapper.orderByAsc(LingangEquimentSelfCheck::getCameras);
  134 + }
  135 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "therm")) {
  136 + wrapper.orderByAsc(LingangEquimentSelfCheck::getTherm);
  137 + }
  138 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "horn")) {
  139 + wrapper.orderByAsc(LingangEquimentSelfCheck::getHorn);
  140 + }
  141 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "mike")) {
  142 + wrapper.orderByAsc(LingangEquimentSelfCheck::getMike);
  143 + }
  144 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "lock")) {
  145 + wrapper.orderByAsc(LingangEquimentSelfCheck::getLock);
  146 + }
  147 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "time")) {
  148 + wrapper.orderByAsc(LingangEquimentSelfCheck::getTime);
  149 + }
  150 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "devicetype")) {
  151 + wrapper.orderByAsc(LingangEquimentSelfCheck::getDevicetype);
  152 + }
  153 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "iskeybox")) {
  154 + wrapper.orderByAsc(LingangEquimentSelfCheck::getIskeybox);
  155 + }
  156 + } else if (org.apache.commons.lang3.StringUtils.equals("descending", orderEntity.getOrder())) {
  157 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "id")) {
  158 + wrapper.orderByDesc(LingangEquimentSelfCheck::getId);
  159 + }
  160 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "device")) {
  161 + wrapper.orderByDesc(LingangEquimentSelfCheck::getDevice);
  162 + }
  163 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "appVersion")) {
  164 + wrapper.orderByDesc(LingangEquimentSelfCheck::getAppVersion);
  165 + }
  166 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "wine")) {
  167 + wrapper.orderByDesc(LingangEquimentSelfCheck::getWine);
  168 + }
  169 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "cameras")) {
  170 + wrapper.orderByDesc(LingangEquimentSelfCheck::getCameras);
  171 + }
  172 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "therm")) {
  173 + wrapper.orderByDesc(LingangEquimentSelfCheck::getTherm);
  174 + }
  175 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "horn")) {
  176 + wrapper.orderByDesc(LingangEquimentSelfCheck::getHorn);
  177 + }
  178 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "mike")) {
  179 + wrapper.orderByDesc(LingangEquimentSelfCheck::getMike);
  180 + }
  181 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "lock")) {
  182 + wrapper.orderByDesc(LingangEquimentSelfCheck::getLock);
  183 + }
  184 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "time")) {
  185 + wrapper.orderByDesc(LingangEquimentSelfCheck::getTime);
  186 + }
  187 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "devicetype")) {
  188 + wrapper.orderByDesc(LingangEquimentSelfCheck::getDevicetype);
  189 + }
  190 + if (org.apache.commons.lang3.StringUtils.equals(orderEntity.getProp(), "iskeybox")) {
  191 + wrapper.orderByDesc(LingangEquimentSelfCheck::getIskeybox);
  192 + }
  193 + }
  194 + }
  195 +
  196 + /***
  197 + * 添加设备异常信息
  198 + * @author liujun
  199 + * @date 2024/7/11 13:17
  200 + * @param entity
  201 + */
  202 + private EquipmentException insertEquipmentException(LingangEquimentSelfCheck entity) {
  203 + EquipmentException equipmentException = new EquipmentException();
  204 + equipmentException.setDeviceId(entity.getDevice());
  205 + equipmentException.setStatus(1);
  206 + equipmentException.setCreateTime(new Date());
  207 + equipmentException.setRemark("自检异常");
  208 + equipmentException.setExType(4);
  209 +
  210 + equipmentExceptionService.insertEquipmentException(equipmentException);
  211 +
  212 + return equipmentException;
  213 + }
  214 +}
0 \ No newline at end of file 215 \ No newline at end of file
Bsth-admin/src/main/resources/mapper/driver/NewDriverMapper.xml
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="com.ruoyi.mapper.driver.NewDriverMapper"> 3 <mapper namespace="com.ruoyi.mapper.driver.NewDriverMapper">
4 - 4 + <resultMap id="BaseResultMap" type="com.ruoyi.domain.driver.NewDriver">
  5 + <result column="id" jdbcType="INTEGER" property="id"/>
  6 + <id column="job_code" jdbcType="VARCHAR" property="jobCode"/>
  7 + <result column="company_code" jdbcType="VARCHAR" property="companyCode"/>
  8 + <result column="branche_company_code" jdbcType="VARCHAR" property="brancheCompanyCode"/>
  9 + <result column="personnel_name" jdbcType="VARCHAR" property="personnelName"/>
  10 + <result column="papers_code" jdbcType="VARCHAR" property="papersCode"/>
  11 + <result column="ic_card_code" jdbcType="VARCHAR" property="icCardCode"/>
  12 + <result column="personnel_type" jdbcType="VARCHAR" property="personnelType"/>
  13 + <result column="posts" jdbcType="VARCHAR" property="posts"/>
  14 + <result column="card" jdbcType="VARCHAR" property="card"/>
  15 + <result column="telphone" jdbcType="VARCHAR" property="telphone"/>
  16 + <result column="ic_rfid" jdbcType="VARCHAR" property="icRfid"/>
  17 + <result column="id_rfid" jdbcType="VARCHAR" property="idRfid"/>
  18 + <result column="tag_rfid" jdbcType="VARCHAR" property="tagRfid"/>
  19 + <result column="remark" jdbcType="VARCHAR" property="remark"/>
  20 + <result column="line_name" jdbcType="VARCHAR" property="lineName"/>
  21 + <result column="line_code" jdbcType="VARCHAR" property="lineCode"/>
  22 + <result column="face_sign_in" jdbcType="TINYINT" property="faceSignIn"/>
  23 + <result column="image" jdbcType="VARCHAR" property="image"/>
  24 + <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
  25 + <result column="sign_in_equipment" jdbcType="VARCHAR" property="signInEquipment"/>
  26 + <result column="fleet_name" jdbcType="VARCHAR" property="fleetName"/>
  27 + <result column="face_Feature" jdbcType="VARCHAR" property="faceFeature"/>
  28 + <result column="blue_Tooth" jdbcType="VARCHAR" property="blueTooth"/>
  29 + <result column="integer" jdbcType="INTEGER" property="integer"/>
  30 + <result column="synContent" jdbcType="VARCHAR" property="syncontent"/>
  31 + <result column="csn" jdbcType="VARCHAR" property="csn"/>
  32 + </resultMap>
5 33
6 <insert id="insertSelective" keyColumn="job_code" keyProperty="jobCode" useGeneratedKeys="true" 34 <insert id="insertSelective" keyColumn="job_code" keyProperty="jobCode" useGeneratedKeys="true"
7 parameterType="com.ruoyi.domain.driver.NewDriver"> 35 parameterType="com.ruoyi.domain.driver.NewDriver">
@@ -11,12 +39,12 @@ @@ -11,12 +39,12 @@
11 39
12 <sql id="columns"> 40 <sql id="columns">
13 id 41 id
14 - , job_code , company_code , branche_company_code , personnel_name , papers_code , ic_card_code , personnel_type , posts , card , telphone , ic_rfid , id_rfid , tag_rfid , remark , line_name , line_code , face_sign_in , image , update_time , sign_in_equipment , fleet_name 42 + , job_code , company_code , branche_company_code , personnel_name , papers_code , ic_card_code , personnel_type , posts , card , telphone , ic_rfid , id_rfid , tag_rfid , remark , line_name , line_code , face_sign_in , image , update_time , sign_in_equipment , fleet_name , face_Feature , blue_Tooth , integer , synContent , csn
15 </sql> 43 </sql>
16 44
17 <sql id="insert_columns"> 45 <sql id="insert_columns">
18 id 46 id
19 - , job_code , company_code , branche_company_code , personnel_name , papers_code , ic_card_code , personnel_type , posts , card , telphone , ic_rfid , id_rfid , tag_rfid , remark , line_name , line_code , face_sign_in , image , update_time , sign_in_equipment , fleet_name 47 + , job_code , company_code , branche_company_code , personnel_name , papers_code , ic_card_code , personnel_type , posts , card , telphone , ic_rfid , id_rfid , tag_rfid , remark , line_name , line_code , face_sign_in , image , update_time , sign_in_equipment , fleet_name , face_Feature , blue_Tooth , integer , synContent , csn
20 </sql> 48 </sql>
21 49
22 <sql id="insert_values"> 50 <sql id="insert_values">
@@ -42,7 +70,12 @@ @@ -42,7 +70,12 @@
42 #{image}, 70 #{image},
43 #{updateTime}, 71 #{updateTime},
44 #{signInEquipment}, 72 #{signInEquipment},
45 - #{fleetName} 73 + #{fleetName},
  74 + #{faceFeature},
  75 + #{blueTooth},
  76 + #{integer},
  77 + #{syncontent},
  78 + #{csn}
46 </sql> 79 </sql>
47 80
48 <sql id="insertSelectiveColumn"> 81 <sql id="insertSelectiveColumn">
@@ -69,6 +102,11 @@ @@ -69,6 +102,11 @@
69 <if test="null!=updateTime">update_time,</if> 102 <if test="null!=updateTime">update_time,</if>
70 <if test="null!=signInEquipment">sign_in_equipment,</if> 103 <if test="null!=signInEquipment">sign_in_equipment,</if>
71 <if test="null!=fleetName">fleet_name,</if> 104 <if test="null!=fleetName">fleet_name,</if>
  105 + <if test="null!=faceFeature">face_Feature,</if>
  106 + <if test="null!=blueTooth">blue_Tooth,</if>
  107 + <if test="null!=integer">integer,</if>
  108 + <if test="null!=syncontent">synContent,</if>
  109 + <if test="null!=csn">csn,</if>
72 </trim> 110 </trim>
73 </sql> 111 </sql>
74 112
@@ -96,6 +134,11 @@ @@ -96,6 +134,11 @@
96 <if test="null!=updateTime">#{updateTime,jdbcType=TIMESTAMP},</if> 134 <if test="null!=updateTime">#{updateTime,jdbcType=TIMESTAMP},</if>
97 <if test="null!=signInEquipment">#{signInEquipment,jdbcType=VARCHAR},</if> 135 <if test="null!=signInEquipment">#{signInEquipment,jdbcType=VARCHAR},</if>
98 <if test="null!=fleetName">#{fleetName,jdbcType=VARCHAR},</if> 136 <if test="null!=fleetName">#{fleetName,jdbcType=VARCHAR},</if>
  137 + <if test="null!=faceFeature">#{faceFeature,jdbcType=VARCHAR},</if>
  138 + <if test="null!=blueTooth">#{blueTooth,jdbcType=VARCHAR},</if>
  139 + <if test="null!=integer">#{integer,jdbcType=INTEGER},</if>
  140 + <if test="null!=syncontent">#{syncontent,jdbcType=VARCHAR},</if>
  141 + <if test="null!=csn">#{csn,jdbcType=VARCHAR},</if>
99 </trim> 142 </trim>
100 </sql> 143 </sql>
101 144
@@ -123,6 +166,11 @@ @@ -123,6 +166,11 @@
123 <if test="null!=updateTime">update_time = #{updateTime,jdbcType=TIMESTAMP},</if> 166 <if test="null!=updateTime">update_time = #{updateTime,jdbcType=TIMESTAMP},</if>
124 <if test="null!=signInEquipment">sign_in_equipment = #{signInEquipment,jdbcType=VARCHAR},</if> 167 <if test="null!=signInEquipment">sign_in_equipment = #{signInEquipment,jdbcType=VARCHAR},</if>
125 <if test="null!=fleetName">fleet_name = #{fleetName,jdbcType=VARCHAR},</if> 168 <if test="null!=fleetName">fleet_name = #{fleetName,jdbcType=VARCHAR},</if>
  169 + <if test="null!=faceFeature">face_Feature = #{faceFeature,jdbcType=VARCHAR},</if>
  170 + <if test="null!=blueTooth">blue_Tooth = #{blueTooth,jdbcType=VARCHAR},</if>
  171 + <if test="null!=integer">integer = #{integer,jdbcType=INTEGER},</if>
  172 + <if test="null!=syncontent">synContent = #{syncontent,jdbcType=VARCHAR},</if>
  173 + <if test="null!=csn">csn = #{csn,jdbcType=VARCHAR},</if>
126 </set> 174 </set>
127 </sql> 175 </sql>
128 176
@@ -149,5 +197,10 @@ @@ -149,5 +197,10 @@
149 <if test="null!=updateTime">AND update_time = #{updateTime,jdbcType=TIMESTAMP},</if> 197 <if test="null!=updateTime">AND update_time = #{updateTime,jdbcType=TIMESTAMP},</if>
150 <if test="null!=signInEquipment">AND sign_in_equipment = #{signInEquipment,jdbcType=VARCHAR},</if> 198 <if test="null!=signInEquipment">AND sign_in_equipment = #{signInEquipment,jdbcType=VARCHAR},</if>
151 <if test="null!=fleetName">AND fleet_name = #{fleetName,jdbcType=VARCHAR},</if> 199 <if test="null!=fleetName">AND fleet_name = #{fleetName,jdbcType=VARCHAR},</if>
  200 + <if test="null!=faceFeature">AND face_Feature = #{faceFeature,jdbcType=VARCHAR},</if>
  201 + <if test="null!=blueTooth">AND blue_Tooth = #{blueTooth,jdbcType=VARCHAR},</if>
  202 + <if test="null!=integer">AND integer = #{integer,jdbcType=INTEGER},</if>
  203 + <if test="null!=syncontent">AND synContent = #{syncontent,jdbcType=VARCHAR},</if>
  204 + <if test="null!=csn">AND csn = #{csn,jdbcType=VARCHAR},</if>
152 </sql> 205 </sql>
153 </mapper> 206 </mapper>
154 \ No newline at end of file 207 \ No newline at end of file
Bsth-admin/src/main/resources/mapper/equipment/LingangEquimentSelfCheckMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="com.ruoyi.mapper.equipment.self.check.LingangEquimentSelfCheckMapper">
  4 + <resultMap id="BaseResultMap" type="com.ruoyi.domain.equipment.self.check.LingangEquimentSelfCheck">
  5 + <id column="id" jdbcType="BIGINT" property="id"/>
  6 + <result column="device" jdbcType="VARCHAR" property="device"/>
  7 + <result column="app_version" jdbcType="VARCHAR" property="appVersion"/>
  8 + <result column="wine" jdbcType="INTEGER" property="wine"/>
  9 + <result column="cameras" jdbcType="JSON" property="cameras"/>
  10 + <result column="therm" jdbcType="INTEGER" property="therm"/>
  11 + <result column="horn" jdbcType="INTEGER" property="horn"/>
  12 + <result column="mike" jdbcType="INTEGER" property="mike"/>
  13 + <result column="lock" jdbcType="INTEGER" property="lock"/>
  14 + <result column="time" jdbcType="TIMESTAMP" property="time"/>
  15 + <result column="deviceType" jdbcType="VARCHAR" property="devicetype"/>
  16 + <result column="isKeybox" jdbcType="BIT" property="iskeybox"/>
  17 + <result column="quipment_exception_id" jdbcType="INTEGER" property="quipmentExceptionId"/>
  18 + <result column="create_by" jdbcType="VARCHAR" property="createBy"/>
  19 + <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
  20 + <result column="update_by" jdbcType="VARCHAR" property="updateBy"/>
  21 + <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
  22 + </resultMap>
  23 +
  24 + <insert id="insertSelective" keyColumn="id" keyProperty="id" useGeneratedKeys="true"
  25 + parameterType="com.ruoyi.domain.equipment.self.check.LingangEquimentSelfCheck">
  26 + INSERT INTO equiment_self_check
  27 + <include refid="insertSelectiveColumn"></include>
  28 + <include refid="insertSelectiveValue"></include>
  29 + </insert>
  30 +
  31 + <sql id="columns">
  32 + id
  33 + , device , app_version , wine , cameras , therm , horn , mike , lock , ·time · , deviceType , isKeybox , quipment_exception_id , create_by , create_time , update_by , update_time
  34 + </sql>
  35 +
  36 + <sql id="insert_columns">
  37 + id
  38 + , device , app_version , wine , cameras , therm , horn , mike , lock , ·time · , deviceType , isKeybox , quipment_exception_id , create_by , create_time , update_by , update_time
  39 + </sql>
  40 +
  41 + <sql id="insert_values">
  42 + #{id}
  43 + ,
  44 + #{device},
  45 + #{appVersion},
  46 + #{wine},
  47 + #{cameras},
  48 + #{therm},
  49 + #{horn},
  50 + #{mike},
  51 + #{lock},
  52 + #{time},
  53 + #{devicetype},
  54 + #{iskeybox},
  55 + #{quipmentExceptionId},
  56 + #{createBy},
  57 + #{createTime},
  58 + #{updateBy},
  59 + #{updateTime}
  60 + </sql>
  61 +
  62 + <sql id="insertSelectiveColumn">
  63 + <trim prefix="(" suffix=")" suffixOverrides=",">
  64 + <if test="null!=id">id,</if>
  65 + <if test="null!=device">device,</if>
  66 + <if test="null!=appVersion">app_version,</if>
  67 + <if test="null!=wine">wine,</if>
  68 + <if test="null!=cameras">cameras,</if>
  69 + <if test="null!=therm">therm,</if>
  70 + <if test="null!=horn">horn,</if>
  71 + <if test="null!=mike">mike,</if>
  72 + <if test="null!=lock">lock,</if>
  73 + <if test="null!=time">·time·,</if>
  74 + <if test="null!=devicetype">deviceType,</if>
  75 + <if test="null!=iskeybox">isKeybox,</if>
  76 + <if test="null!=quipmentExceptionId">quipment_exception_id,</if>
  77 + <if test="null!=createBy">create_by,</if>
  78 + <if test="null!=createTime">create_time,</if>
  79 + <if test="null!=updateBy">update_by,</if>
  80 + <if test="null!=updateTime">update_time,</if>
  81 + </trim>
  82 + </sql>
  83 +
  84 + <sql id="insertSelectiveValue">
  85 + <trim prefix="values (" suffix=")" suffixOverrides=",">
  86 + <if test="null!=id">#{id,jdbcType=BIGINT},</if>
  87 + <if test="null!=device">#{device,jdbcType=VARCHAR},</if>
  88 + <if test="null!=appVersion">#{appVersion,jdbcType=VARCHAR},</if>
  89 + <if test="null!=wine">#{wine,jdbcType=INTEGER},</if>
  90 + <if test="null!=cameras">#{cameras,jdbcType=JSON},</if>
  91 + <if test="null!=therm">#{therm,jdbcType=INTEGER},</if>
  92 + <if test="null!=horn">#{horn,jdbcType=INTEGER},</if>
  93 + <if test="null!=mike">#{mike,jdbcType=INTEGER},</if>
  94 + <if test="null!=lock">#{lock,jdbcType=INTEGER},</if>
  95 + <if test="null!=time">#{time,jdbcType=TIMESTAMP},</if>
  96 + <if test="null!=devicetype">#{devicetype,jdbcType=VARCHAR},</if>
  97 + <if test="null!=iskeybox">#{iskeybox,jdbcType=BIT},</if>
  98 + <if test="null!=quipmentExceptionId">#{quipmentExceptionId,jdbcType=INTEGER},</if>
  99 + <if test="null!=createBy">#{createBy,jdbcType=VARCHAR},</if>
  100 + <if test="null!=createTime">#{createTime,jdbcType=TIMESTAMP},</if>
  101 + <if test="null!=updateBy">#{updateBy,jdbcType=VARCHAR},</if>
  102 + <if test="null!=updateTime">#{updateTime,jdbcType=TIMESTAMP},</if>
  103 + </trim>
  104 + </sql>
  105 +
  106 + <sql id="updateByPrimaryKeySelectiveSql">
  107 + <set>
  108 + <if test="null!=id">id = #{id,jdbcType=BIGINT},</if>
  109 + <if test="null!=device">device = #{device,jdbcType=VARCHAR},</if>
  110 + <if test="null!=appVersion">app_version = #{appVersion,jdbcType=VARCHAR},</if>
  111 + <if test="null!=wine">wine = #{wine,jdbcType=INTEGER},</if>
  112 + <if test="null!=cameras">cameras = #{cameras,jdbcType=JSON},</if>
  113 + <if test="null!=therm">therm = #{therm,jdbcType=INTEGER},</if>
  114 + <if test="null!=horn">horn = #{horn,jdbcType=INTEGER},</if>
  115 + <if test="null!=mike">mike = #{mike,jdbcType=INTEGER},</if>
  116 + <if test="null!=lock">lock = #{lock,jdbcType=INTEGER},</if>
  117 + <if test="null!=time">·time· = #{time,jdbcType=TIMESTAMP},</if>
  118 + <if test="null!=devicetype">deviceType = #{devicetype,jdbcType=VARCHAR},</if>
  119 + <if test="null!=iskeybox">isKeybox = #{iskeybox,jdbcType=BIT},</if>
  120 + <if test="null!=quipmentExceptionId">quipment_exception_id = #{quipmentExceptionId,jdbcType=INTEGER},</if>
  121 + <if test="null!=createBy">create_by = #{createBy,jdbcType=VARCHAR},</if>
  122 + <if test="null!=createTime">create_time = #{createTime,jdbcType=TIMESTAMP},</if>
  123 + <if test="null!=updateBy">update_by = #{updateBy,jdbcType=VARCHAR},</if>
  124 + <if test="null!=updateTime">update_time = #{updateTime,jdbcType=TIMESTAMP},</if>
  125 + </set>
  126 + </sql>
  127 +
  128 + <sql id="where">
  129 + <if test="null!=id">AND id = #{id,jdbcType=BIGINT},</if>
  130 + <if test="null!=device">AND device = #{device,jdbcType=VARCHAR},</if>
  131 + <if test="null!=appVersion">AND app_version = #{appVersion,jdbcType=VARCHAR},</if>
  132 + <if test="null!=wine">AND wine = #{wine,jdbcType=INTEGER},</if>
  133 + <if test="null!=cameras">AND cameras = #{cameras,jdbcType=JSON},</if>
  134 + <if test="null!=therm">AND therm = #{therm,jdbcType=INTEGER},</if>
  135 + <if test="null!=horn">AND horn = #{horn,jdbcType=INTEGER},</if>
  136 + <if test="null!=mike">AND mike = #{mike,jdbcType=INTEGER},</if>
  137 + <if test="null!=lock">AND lock = #{lock,jdbcType=INTEGER},</if>
  138 + <if test="null!=time">AND ·time· = #{time,jdbcType=TIMESTAMP},</if>
  139 + <if test="null!=devicetype">AND deviceType = #{devicetype,jdbcType=VARCHAR},</if>
  140 + <if test="null!=iskeybox">AND isKeybox = #{iskeybox,jdbcType=BIT},</if>
  141 + <if test="null!=quipmentExceptionId">AND quipment_exception_id = #{quipmentExceptionId,jdbcType=INTEGER},</if>
  142 + <if test="null!=createBy">AND create_by = #{createBy,jdbcType=VARCHAR},</if>
  143 + <if test="null!=createTime">AND create_time = #{createTime,jdbcType=TIMESTAMP},</if>
  144 + <if test="null!=updateBy">AND update_by = #{updateBy,jdbcType=VARCHAR},</if>
  145 + <if test="null!=updateTime">AND update_time = #{updateTime,jdbcType=TIMESTAMP},</if>
  146 + </sql>
  147 +</mapper>
0 \ No newline at end of file 148 \ No newline at end of file
Bsth-admin/src/main/resources/mapper/equipment/heartbeat/LingangEquipmentHeartbeatMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="com.ruoyi.mapper.equipment.heartbeat.LingangEquipmentHeartbeatMapper">
  4 + <resultMap id="BaseResultMap" type="com.ruoyi.domain.equipment.heartbeat.LingangEquipmentHeartbeat">
  5 + <id column="id" jdbcType="BIGINT" property="id"/>
  6 + <result column="device" jdbcType="VARCHAR" property="device"/>
  7 + <result column="time" jdbcType="TIMESTAMP" property="time"/>
  8 + <result column="alarm" jdbcType="INTEGER" property="alarm"/>
  9 + <result column="exKeys" jdbcType="VARCHAR" property="exkeys"/>
  10 + <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
  11 + <result column="create_by" jdbcType="VARCHAR" property="createBy"/>
  12 + <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
  13 + <result column="updateBy" jdbcType="VARCHAR" property="updateby"/>
  14 + </resultMap>
  15 +
  16 + <insert id="insertSelective" keyColumn="id" keyProperty="id" useGeneratedKeys="true"
  17 + parameterType="com.ruoyi.domain.equipment.heartbeat.LingangEquipmentHeartbeat">
  18 + INSERT INTO equipment_heartbeat
  19 + <include refid="insertSelectiveColumn"></include>
  20 + <include refid="insertSelectiveValue"></include>
  21 + </insert>
  22 +
  23 + <sql id="columns">
  24 + id
  25 + , device , time , alarm , exKeys , create_time , create_by , update_time , updateBy
  26 + </sql>
  27 +
  28 + <sql id="insert_columns">
  29 + id
  30 + , device , time , alarm , exKeys , create_time , create_by , update_time , updateBy
  31 + </sql>
  32 +
  33 + <sql id="insert_values">
  34 + #{id}
  35 + ,
  36 + #{device},
  37 + #{time},
  38 + #{alarm},
  39 + #{exkeys},
  40 + #{createTime},
  41 + #{createBy},
  42 + #{updateTime},
  43 + #{updateby}
  44 + </sql>
  45 +
  46 + <sql id="insertSelectiveColumn">
  47 + <trim prefix="(" suffix=")" suffixOverrides=",">
  48 + <if test="null!=id">id,</if>
  49 + <if test="null!=device">device,</if>
  50 + <if test="null!=time">time,</if>
  51 + <if test="null!=alarm">alarm,</if>
  52 + <if test="null!=exkeys">exKeys,</if>
  53 + <if test="null!=createTime">create_time,</if>
  54 + <if test="null!=createBy">create_by,</if>
  55 + <if test="null!=updateTime">update_time,</if>
  56 + <if test="null!=updateby">updateBy,</if>
  57 + </trim>
  58 + </sql>
  59 +
  60 + <sql id="insertSelectiveValue">
  61 + <trim prefix="values (" suffix=")" suffixOverrides=",">
  62 + <if test="null!=id">#{id,jdbcType=BIGINT},</if>
  63 + <if test="null!=device">#{device,jdbcType=VARCHAR},</if>
  64 + <if test="null!=time">#{time,jdbcType=TIMESTAMP},</if>
  65 + <if test="null!=alarm">#{alarm,jdbcType=INTEGER},</if>
  66 + <if test="null!=exkeys">#{exkeys,jdbcType=VARCHAR},</if>
  67 + <if test="null!=createTime">#{createTime,jdbcType=TIMESTAMP},</if>
  68 + <if test="null!=createBy">#{createBy,jdbcType=VARCHAR},</if>
  69 + <if test="null!=updateTime">#{updateTime,jdbcType=TIMESTAMP},</if>
  70 + <if test="null!=updateby">#{updateby,jdbcType=VARCHAR},</if>
  71 + </trim>
  72 + </sql>
  73 +
  74 + <sql id="updateByPrimaryKeySelectiveSql">
  75 + <set>
  76 + <if test="null!=id">id = #{id,jdbcType=BIGINT},</if>
  77 + <if test="null!=device">device = #{device,jdbcType=VARCHAR},</if>
  78 + <if test="null!=time">time = #{time,jdbcType=TIMESTAMP},</if>
  79 + <if test="null!=alarm">alarm = #{alarm,jdbcType=INTEGER},</if>
  80 + <if test="null!=exkeys">exKeys = #{exkeys,jdbcType=VARCHAR},</if>
  81 + <if test="null!=createTime">create_time = #{createTime,jdbcType=TIMESTAMP},</if>
  82 + <if test="null!=createBy">create_by = #{createBy,jdbcType=VARCHAR},</if>
  83 + <if test="null!=updateTime">update_time = #{updateTime,jdbcType=TIMESTAMP},</if>
  84 + <if test="null!=updateby">updateBy = #{updateby,jdbcType=VARCHAR},</if>
  85 + </set>
  86 + </sql>
  87 +
  88 + <sql id="where">
  89 + <if test="null!=id">AND id = #{id,jdbcType=BIGINT},</if>
  90 + <if test="null!=device">AND device = #{device,jdbcType=VARCHAR},</if>
  91 + <if test="null!=time">AND time = #{time,jdbcType=TIMESTAMP},</if>
  92 + <if test="null!=alarm">AND alarm = #{alarm,jdbcType=INTEGER},</if>
  93 + <if test="null!=exkeys">AND exKeys = #{exkeys,jdbcType=VARCHAR},</if>
  94 + <if test="null!=createTime">AND create_time = #{createTime,jdbcType=TIMESTAMP},</if>
  95 + <if test="null!=createBy">AND create_by = #{createBy,jdbcType=VARCHAR},</if>
  96 + <if test="null!=updateTime">AND update_time = #{updateTime,jdbcType=TIMESTAMP},</if>
  97 + <if test="null!=updateby">AND updateBy = #{updateby,jdbcType=VARCHAR},</if>
  98 + </sql>
  99 +</mapper>
0 \ No newline at end of file 100 \ No newline at end of file
Bsth-common/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -4,11 +4,10 @@ import io.jsonwebtoken.Claims; @@ -4,11 +4,10 @@ import io.jsonwebtoken.Claims;
4 4
5 /** 5 /**
6 * 通用常量信息 6 * 通用常量信息
7 - * 7 + *
8 * @author ruoyi 8 * @author ruoyi
9 */ 9 */
10 -public class Constants  
11 -{ 10 +public class Constants {
12 /** 11 /**
13 * UTF-8 字符集 12 * UTF-8 字符集
14 */ 13 */
@@ -63,7 +62,7 @@ public class Constants @@ -63,7 +62,7 @@ public class Constants
63 * 登录失败 62 * 登录失败
64 */ 63 */
65 public static final String LOGIN_FAIL = "Error"; 64 public static final String LOGIN_FAIL = "Error";
66 - 65 +
67 /** 66 /**
68 * 验证码有效期(分钟) 67 * 验证码有效期(分钟)
69 */ 68 */
@@ -85,6 +84,11 @@ public class Constants @@ -85,6 +84,11 @@ public class Constants
85 public static final String LOGIN_USER_KEY = "login_user_key"; 84 public static final String LOGIN_USER_KEY = "login_user_key";
86 85
87 /** 86 /**
  87 + * 令牌前缀
  88 + */
  89 + public static final String EQUIPMENT_KEY = "equipment_key";
  90 +
  91 + /**
88 * 用户ID 92 * 用户ID
89 */ 93 */
90 public static final String JWT_USERID = "userid"; 94 public static final String JWT_USERID = "userid";
@@ -132,11 +136,16 @@ public class Constants @@ -132,11 +136,16 @@ public class Constants
132 /** 136 /**
133 * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加) 137 * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
134 */ 138 */
135 - public static final String[] JOB_WHITELIST_STR = { "com.ruoyi" }; 139 + public static final String[] JOB_WHITELIST_STR = {"com.ruoyi"};
  140 +
  141 + /**
  142 + * 启用
  143 + */
  144 + public static final String ENABLE_STR = "0";
136 145
137 /** 146 /**
138 * 定时任务违规的字符 147 * 定时任务违规的字符
139 */ 148 */
140 - public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",  
141 - "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config" }; 149 + public static final String[] JOB_ERROR_STR = {"java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
  150 + "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config"};
142 } 151 }
Bsth-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java
@@ -2,6 +2,7 @@ package com.ruoyi.common.core.domain.entity; @@ -2,6 +2,7 @@ package com.ruoyi.common.core.domain.entity;
2 2
3 import javax.validation.constraints.NotBlank; 3 import javax.validation.constraints.NotBlank;
4 import javax.validation.constraints.Size; 4 import javax.validation.constraints.Size;
  5 +
5 import org.apache.commons.lang3.builder.ToStringBuilder; 6 import org.apache.commons.lang3.builder.ToStringBuilder;
6 import org.apache.commons.lang3.builder.ToStringStyle; 7 import org.apache.commons.lang3.builder.ToStringStyle;
7 import com.ruoyi.common.annotation.Excel; 8 import com.ruoyi.common.annotation.Excel;
@@ -11,166 +12,175 @@ import com.ruoyi.common.core.domain.BaseEntity; @@ -11,166 +12,175 @@ import com.ruoyi.common.core.domain.BaseEntity;
11 12
12 /** 13 /**
13 * 字典数据表 sys_dict_data 14 * 字典数据表 sys_dict_data
14 - * 15 + *
15 * @author ruoyi 16 * @author ruoyi
16 */ 17 */
17 -public class SysDictData extends BaseEntity  
18 -{ 18 +public class SysDictData extends BaseEntity {
19 private static final long serialVersionUID = 1L; 19 private static final long serialVersionUID = 1L;
20 20
21 - /** 字典编码 */ 21 + /**
  22 + * 字典编码
  23 + */
22 @Excel(name = "字典编码", cellType = ColumnType.NUMERIC) 24 @Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
23 private Long dictCode; 25 private Long dictCode;
24 26
25 - /** 字典排序 */ 27 + /**
  28 + * 字典排序
  29 + */
26 @Excel(name = "字典排序", cellType = ColumnType.NUMERIC) 30 @Excel(name = "字典排序", cellType = ColumnType.NUMERIC)
27 private Long dictSort; 31 private Long dictSort;
28 32
29 - /** 字典标签 */ 33 + /**
  34 + * 字典标签
  35 + */
30 @Excel(name = "字典标签") 36 @Excel(name = "字典标签")
31 private String dictLabel; 37 private String dictLabel;
32 38
33 - /** 字典键值 */ 39 + /**
  40 + * 字典键值
  41 + */
34 @Excel(name = "字典键值") 42 @Excel(name = "字典键值")
35 private String dictValue; 43 private String dictValue;
36 44
37 - /** 字典类型 */ 45 + /**
  46 + * 字典类型
  47 + */
38 @Excel(name = "字典类型") 48 @Excel(name = "字典类型")
39 private String dictType; 49 private String dictType;
40 50
41 - /** 样式属性(其他样式扩展) */ 51 + @Excel(name = "字典关键字")
  52 + private String discKey;
  53 +
  54 + /**
  55 + * 样式属性(其他样式扩展)
  56 + */
42 private String cssClass; 57 private String cssClass;
43 58
44 - /** 表格字典样式 */ 59 + /**
  60 + * 表格字典样式
  61 + */
45 private String listClass; 62 private String listClass;
46 63
47 - /** 是否默认(Y是 N否) */ 64 + /**
  65 + * 是否默认(Y是 N否)
  66 + */
48 @Excel(name = "是否默认", readConverterExp = "Y=是,N=否") 67 @Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
49 private String isDefault; 68 private String isDefault;
50 69
51 - /** 状态(0正常 1停用) */ 70 + /**
  71 + * 状态(0正常 1停用)
  72 + */
52 @Excel(name = "状态", readConverterExp = "0=正常,1=停用") 73 @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
53 private String status; 74 private String status;
54 75
55 - public Long getDictCode()  
56 - { 76 + public Long getDictCode() {
57 return dictCode; 77 return dictCode;
58 } 78 }
59 79
60 - public void setDictCode(Long dictCode)  
61 - { 80 + public void setDictCode(Long dictCode) {
62 this.dictCode = dictCode; 81 this.dictCode = dictCode;
63 } 82 }
64 83
65 - public Long getDictSort()  
66 - { 84 + public Long getDictSort() {
67 return dictSort; 85 return dictSort;
68 } 86 }
69 87
70 - public void setDictSort(Long dictSort)  
71 - { 88 + public void setDictSort(Long dictSort) {
72 this.dictSort = dictSort; 89 this.dictSort = dictSort;
73 } 90 }
74 91
75 @NotBlank(message = "字典标签不能为空") 92 @NotBlank(message = "字典标签不能为空")
76 @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符") 93 @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
77 - public String getDictLabel()  
78 - { 94 + public String getDictLabel() {
79 return dictLabel; 95 return dictLabel;
80 } 96 }
81 97
82 - public void setDictLabel(String dictLabel)  
83 - { 98 + public void setDictLabel(String dictLabel) {
84 this.dictLabel = dictLabel; 99 this.dictLabel = dictLabel;
85 } 100 }
86 101
87 @NotBlank(message = "字典键值不能为空") 102 @NotBlank(message = "字典键值不能为空")
88 @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符") 103 @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
89 - public String getDictValue()  
90 - { 104 + public String getDictValue() {
91 return dictValue; 105 return dictValue;
92 } 106 }
93 107
94 - public void setDictValue(String dictValue)  
95 - { 108 + public void setDictValue(String dictValue) {
96 this.dictValue = dictValue; 109 this.dictValue = dictValue;
97 } 110 }
98 111
99 @NotBlank(message = "字典类型不能为空") 112 @NotBlank(message = "字典类型不能为空")
100 @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符") 113 @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
101 - public String getDictType()  
102 - { 114 + public String getDictType() {
103 return dictType; 115 return dictType;
104 } 116 }
105 117
106 - public void setDictType(String dictType)  
107 - { 118 + public void setDictType(String dictType) {
108 this.dictType = dictType; 119 this.dictType = dictType;
109 } 120 }
110 121
111 @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符") 122 @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
112 - public String getCssClass()  
113 - { 123 + public String getCssClass() {
114 return cssClass; 124 return cssClass;
115 } 125 }
116 126
117 - public void setCssClass(String cssClass)  
118 - { 127 + public void setCssClass(String cssClass) {
119 this.cssClass = cssClass; 128 this.cssClass = cssClass;
120 } 129 }
121 130
122 - public String getListClass()  
123 - { 131 + public String getListClass() {
124 return listClass; 132 return listClass;
125 } 133 }
126 134
127 - public void setListClass(String listClass)  
128 - { 135 + public void setListClass(String listClass) {
129 this.listClass = listClass; 136 this.listClass = listClass;
130 } 137 }
131 138
132 - public boolean getDefault()  
133 - { 139 + public boolean getDefault() {
134 return UserConstants.YES.equals(this.isDefault); 140 return UserConstants.YES.equals(this.isDefault);
135 } 141 }
136 142
137 - public String getIsDefault()  
138 - { 143 + public String getIsDefault() {
139 return isDefault; 144 return isDefault;
140 } 145 }
141 146
142 - public void setIsDefault(String isDefault)  
143 - { 147 + public void setIsDefault(String isDefault) {
144 this.isDefault = isDefault; 148 this.isDefault = isDefault;
145 } 149 }
146 150
147 - public String getStatus()  
148 - { 151 + public String getStatus() {
149 return status; 152 return status;
150 } 153 }
151 154
152 - public void setStatus(String status)  
153 - { 155 + public void setStatus(String status) {
154 this.status = status; 156 this.status = status;
155 } 157 }
156 - 158 +
  159 + public String getDiscKey() {
  160 + return discKey;
  161 + }
  162 +
  163 + public void setDiscKey(String discKey) {
  164 + this.discKey = discKey;
  165 + }
  166 +
157 @Override 167 @Override
158 public String toString() { 168 public String toString() {
159 - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)  
160 - .append("dictCode", getDictCode())  
161 - .append("dictSort", getDictSort())  
162 - .append("dictLabel", getDictLabel())  
163 - .append("dictValue", getDictValue())  
164 - .append("dictType", getDictType())  
165 - .append("cssClass", getCssClass())  
166 - .append("listClass", getListClass())  
167 - .append("isDefault", getIsDefault())  
168 - .append("status", getStatus())  
169 - .append("createBy", getCreateBy())  
170 - .append("createTime", getCreateTime())  
171 - .append("updateBy", getUpdateBy())  
172 - .append("updateTime", getUpdateTime())  
173 - .append("remark", getRemark())  
174 - .toString(); 169 + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
  170 + .append("dictCode", getDictCode())
  171 + .append("dictSort", getDictSort())
  172 + .append("dictLabel", getDictLabel())
  173 + .append("dictValue", getDictValue())
  174 + .append("dictType", getDictType())
  175 + .append("cssClass", getCssClass())
  176 + .append("listClass", getListClass())
  177 + .append("isDefault", getIsDefault())
  178 + .append("status", getStatus())
  179 + .append("createBy", getCreateBy())
  180 + .append("createTime", getCreateTime())
  181 + .append("updateBy", getUpdateBy())
  182 + .append("updateTime", getUpdateTime())
  183 + .append("remark", getRemark())
  184 + .toString();
175 } 185 }
176 } 186 }
Bsth-framework/pom.xml
@@ -63,6 +63,17 @@ @@ -63,6 +63,17 @@
63 <groupId>com.Bsth</groupId> 63 <groupId>com.Bsth</groupId>
64 <artifactId>Bsth-system</artifactId> 64 <artifactId>Bsth-system</artifactId>
65 </dependency> 65 </dependency>
  66 + <dependency>
  67 + <groupId>cn.hutool</groupId>
  68 + <artifactId>hutool-all</artifactId>
  69 + <version>5.7.12</version>
  70 + <scope>compile</scope>
  71 + </dependency>
  72 + <dependency>
  73 + <groupId>org.projectlombok</groupId>
  74 + <artifactId>lombok</artifactId>
  75 + <scope>provided</scope>
  76 + </dependency>
66 77
67 </dependencies> 78 </dependencies>
68 79
Bsth-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -111,7 +111,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter @@ -111,7 +111,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
111 // 过滤请求 111 // 过滤请求
112 .authorizeRequests() 112 .authorizeRequests()
113 // 对于登录login 注册register 验证码captchaImage 允许匿名访问 113 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
114 - .antMatchers("/big/view/queryNumberByType","/big/view/queryLineInfo/*","/big/view/querySignDetails","/report/list/**","/system/dict/data/**","/app/version/check/**","/app/checkDeviceHeart","/app/download","/driver/**","/in/**","/eexception/**","/equipment/**","/report/**","/login", "/register", "/captchaImage").permitAll() 114 + .antMatchers("/big/view/queryNumberByType","/big/view/queryLineInfo/*","/big/view/querySignDetails","/report/list/**","/system/dict/data/**",
  115 + "/app/version/check/**","/app/checkDeviceHeart","/app/download","/driver/**","/in/**","/eexception/**","/equipment/**",
  116 + "/report/**","/login", "/register", "/captchaImage","/dss/Driver/Auth").permitAll()
115 // 静态资源,可匿名访问 117 // 静态资源,可匿名访问
116 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() 118 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
117 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() 119 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
Bsth-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
@@ -5,8 +5,10 @@ import java.util.Map; @@ -5,8 +5,10 @@ import java.util.Map;
5 import java.util.concurrent.TimeUnit; 5 import java.util.concurrent.TimeUnit;
6 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletRequest;
7 7
  8 +import cn.hutool.core.convert.Convert;
8 import com.ruoyi.common.core.domain.entity.SysUser; 9 import com.ruoyi.common.core.domain.entity.SysUser;
9 import com.ruoyi.system.service.ISysUserService; 10 import com.ruoyi.system.service.ISysUserService;
  11 +import lombok.extern.slf4j.Slf4j;
10 import org.springframework.beans.factory.annotation.Autowired; 12 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.beans.factory.annotation.Value; 13 import org.springframework.beans.factory.annotation.Value;
12 import org.springframework.stereotype.Component; 14 import org.springframework.stereotype.Component;
@@ -30,8 +32,8 @@ import io.jsonwebtoken.SignatureAlgorithm; @@ -30,8 +32,8 @@ import io.jsonwebtoken.SignatureAlgorithm;
30 * @author ruoyi 32 * @author ruoyi
31 */ 33 */
32 @Component 34 @Component
33 -public class TokenService  
34 -{ 35 +@Slf4j
  36 +public class TokenService {
35 // 令牌自定义标识 37 // 令牌自定义标识
36 @Value("${token.header}") 38 @Value("${token.header}")
37 private String header; 39 private String header;
@@ -61,23 +63,27 @@ public class TokenService @@ -61,23 +63,27 @@ public class TokenService
61 * 63 *
62 * @return 用户信息 64 * @return 用户信息
63 */ 65 */
64 - public LoginUser getLoginUser(HttpServletRequest request)  
65 - { 66 + public LoginUser getLoginUser(HttpServletRequest request) {
66 // 获取请求携带的令牌 67 // 获取请求携带的令牌
67 String token = getToken(request); 68 String token = getToken(request);
68 - if (StringUtils.isNotEmpty(token))  
69 - {  
70 - try  
71 - { 69 + if (StringUtils.isNotEmpty(token)) {
  70 + try {
72 Claims claims = parseToken(token); 71 Claims claims = parseToken(token);
  72 + String uuid = null;
  73 + if (claims.containsKey(Constants.LOGIN_USER_KEY)) {
  74 + uuid = Convert.toStr(claims.get(Constants.LOGIN_USER_KEY));
  75 + } else if (claims.containsKey(Constants.EQUIPMENT_KEY)) {
  76 + uuid = Convert.toStr(claims.get(Constants.EQUIPMENT_KEY));
  77 + } else {
  78 + return null;
  79 + }
73 // 解析对应的权限以及用户信息 80 // 解析对应的权限以及用户信息
74 - String uuid = (String) claims.get(Constants.LOGIN_USER_KEY); 81 +// String uuid = (String) claims.get(Constants.LOGIN_USER_KEY);
75 String userKey = getTokenKey(uuid); 82 String userKey = getTokenKey(uuid);
76 LoginUser user = redisCache.getCacheObject(userKey); 83 LoginUser user = redisCache.getCacheObject(userKey);
77 return user; 84 return user;
78 - }  
79 - catch (Exception e)  
80 - { 85 + } catch (Exception e) {
  86 + log.error("解下token异常:[{}]", token, e);
81 } 87 }
82 } 88 }
83 return null; 89 return null;
@@ -86,10 +92,8 @@ public class TokenService @@ -86,10 +92,8 @@ public class TokenService
86 /** 92 /**
87 * 设置用户身份信息 93 * 设置用户身份信息
88 */ 94 */
89 - public void setLoginUser(LoginUser loginUser)  
90 - {  
91 - if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken()))  
92 - { 95 + public void setLoginUser(LoginUser loginUser) {
  96 + if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken())) {
93 refreshToken(loginUser); 97 refreshToken(loginUser);
94 } 98 }
95 } 99 }
@@ -97,10 +101,8 @@ public class TokenService @@ -97,10 +101,8 @@ public class TokenService
97 /** 101 /**
98 * 删除用户身份信息 102 * 删除用户身份信息
99 */ 103 */
100 - public void delLoginUser(String token)  
101 - {  
102 - if (StringUtils.isNotEmpty(token))  
103 - { 104 + public void delLoginUser(String token) {
  105 + if (StringUtils.isNotEmpty(token)) {
104 String userKey = getTokenKey(token); 106 String userKey = getTokenKey(token);
105 redisCache.deleteObject(userKey); 107 redisCache.deleteObject(userKey);
106 } 108 }
@@ -112,15 +114,24 @@ public class TokenService @@ -112,15 +114,24 @@ public class TokenService
112 * @param loginUser 用户信息 114 * @param loginUser 用户信息
113 * @return 令牌 115 * @return 令牌
114 */ 116 */
115 - public String createToken(LoginUser loginUser)  
116 - { 117 + public String createToken(LoginUser loginUser) {
  118 + return createToken(loginUser, Constants.LOGIN_USER_KEY);
  119 + }
  120 +
  121 + /**
  122 + * 创建令牌
  123 + *
  124 + * @param loginUser 用户信息
  125 + * @return 令牌
  126 + */
  127 + public String createToken(LoginUser loginUser, String key) {
117 String token = IdUtils.fastUUID(); 128 String token = IdUtils.fastUUID();
118 loginUser.setToken(token); 129 loginUser.setToken(token);
119 setUserAgent(loginUser); 130 setUserAgent(loginUser);
120 refreshToken(loginUser); 131 refreshToken(loginUser);
121 132
122 Map<String, Object> claims = new HashMap<>(); 133 Map<String, Object> claims = new HashMap<>();
123 - claims.put(Constants.LOGIN_USER_KEY, token); 134 + claims.put(key, token);
124 return createToken(claims); 135 return createToken(claims);
125 } 136 }
126 137
@@ -130,8 +141,7 @@ public class TokenService @@ -130,8 +141,7 @@ public class TokenService
130 * @param loginUser 用户信息 141 * @param loginUser 用户信息
131 * @return 令牌 142 * @return 令牌
132 */ 143 */
133 - public String getLocalToken(LoginUser loginUser)  
134 - { 144 + public String getLocalToken(LoginUser loginUser) {
135 String token = IdUtils.fastUUID(); 145 String token = IdUtils.fastUUID();
136 loginUser.setToken(token); 146 loginUser.setToken(token);
137 setUserAgent(loginUser); 147 setUserAgent(loginUser);
@@ -141,6 +151,7 @@ public class TokenService @@ -141,6 +151,7 @@ public class TokenService
141 claims.put(Constants.LOGIN_USER_KEY, token); 151 claims.put(Constants.LOGIN_USER_KEY, token);
142 return getUserToken(loginUser.getUserId()); 152 return getUserToken(loginUser.getUserId());
143 } 153 }
  154 +
144 private String getUserToken(Long userId) { 155 private String getUserToken(Long userId) {
145 SysUser sysUser = userService.selectUserById(userId); 156 SysUser sysUser = userService.selectUserById(userId);
146 return sysUser.getRemark(); 157 return sysUser.getRemark();
@@ -153,12 +164,10 @@ public class TokenService @@ -153,12 +164,10 @@ public class TokenService
153 * @param loginUser 164 * @param loginUser
154 * @return 令牌 165 * @return 令牌
155 */ 166 */
156 - public void verifyToken(LoginUser loginUser)  
157 - { 167 + public void verifyToken(LoginUser loginUser) {
158 long expireTime = loginUser.getExpireTime(); 168 long expireTime = loginUser.getExpireTime();
159 long currentTime = System.currentTimeMillis(); 169 long currentTime = System.currentTimeMillis();
160 - if (expireTime - currentTime <= MILLIS_MINUTE_TEN)  
161 - { 170 + if (expireTime - currentTime <= MILLIS_MINUTE_TEN) {
162 refreshToken(loginUser); 171 refreshToken(loginUser);
163 } 172 }
164 } 173 }
@@ -168,8 +177,7 @@ public class TokenService @@ -168,8 +177,7 @@ public class TokenService
168 * 177 *
169 * @param loginUser 登录信息 178 * @param loginUser 登录信息
170 */ 179 */
171 - public void refreshToken(LoginUser loginUser)  
172 - { 180 + public void refreshToken(LoginUser loginUser) {
173 loginUser.setLoginTime(System.currentTimeMillis()); 181 loginUser.setLoginTime(System.currentTimeMillis());
174 loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); 182 loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
175 // 根据uuid将loginUser缓存 183 // 根据uuid将loginUser缓存
@@ -182,8 +190,7 @@ public class TokenService @@ -182,8 +190,7 @@ public class TokenService
182 * 190 *
183 * @param loginUser 登录信息 191 * @param loginUser 登录信息
184 */ 192 */
185 - public void setUserAgent(LoginUser loginUser)  
186 - { 193 + public void setUserAgent(LoginUser loginUser) {
187 UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); 194 UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent"));
188 String ip = IpUtils.getIpAddr(); 195 String ip = IpUtils.getIpAddr();
189 loginUser.setIpaddr(ip); 196 loginUser.setIpaddr(ip);
@@ -198,8 +205,7 @@ public class TokenService @@ -198,8 +205,7 @@ public class TokenService
198 * @param claims 数据声明 205 * @param claims 数据声明
199 * @return 令牌 206 * @return 令牌
200 */ 207 */
201 - private String createToken(Map<String, Object> claims)  
202 - { 208 + private String createToken(Map<String, Object> claims) {
203 String token = Jwts.builder() 209 String token = Jwts.builder()
204 .setClaims(claims) 210 .setClaims(claims)
205 .signWith(SignatureAlgorithm.HS512, secret).compact(); 211 .signWith(SignatureAlgorithm.HS512, secret).compact();
@@ -212,8 +218,7 @@ public class TokenService @@ -212,8 +218,7 @@ public class TokenService
212 * @param token 令牌 218 * @param token 令牌
213 * @return 数据声明 219 * @return 数据声明
214 */ 220 */
215 - private Claims parseToken(String token)  
216 - { 221 + private Claims parseToken(String token) {
217 return Jwts.parser() 222 return Jwts.parser()
218 .setSigningKey(secret) 223 .setSigningKey(secret)
219 .parseClaimsJws(token) 224 .parseClaimsJws(token)
@@ -226,8 +231,7 @@ public class TokenService @@ -226,8 +231,7 @@ public class TokenService
226 * @param token 令牌 231 * @param token 令牌
227 * @return 用户名 232 * @return 用户名
228 */ 233 */
229 - public String getUsernameFromToken(String token)  
230 - { 234 + public String getUsernameFromToken(String token) {
231 Claims claims = parseToken(token); 235 Claims claims = parseToken(token);
232 return claims.getSubject(); 236 return claims.getSubject();
233 } 237 }
@@ -238,18 +242,15 @@ public class TokenService @@ -238,18 +242,15 @@ public class TokenService
238 * @param request 242 * @param request
239 * @return token 243 * @return token
240 */ 244 */
241 - private String getToken(HttpServletRequest request)  
242 - { 245 + private String getToken(HttpServletRequest request) {
243 String token = request.getHeader(header); 246 String token = request.getHeader(header);
244 - if (StringUtils.isNotEmpty(token) && token.startsWith(Constants.TOKEN_PREFIX))  
245 - { 247 + if (StringUtils.isNotEmpty(token) && token.startsWith(Constants.TOKEN_PREFIX)) {
246 token = token.replace(Constants.TOKEN_PREFIX, ""); 248 token = token.replace(Constants.TOKEN_PREFIX, "");
247 } 249 }
248 return token; 250 return token;
249 } 251 }
250 252
251 - private String getTokenKey(String uuid)  
252 - { 253 + private String getTokenKey(String uuid) {
253 return CacheConstants.LOGIN_TOKEN_KEY + uuid; 254 return CacheConstants.LOGIN_TOKEN_KEY + uuid;
254 } 255 }
255 } 256 }
Bsth-system/pom.xml
@@ -22,6 +22,12 @@ @@ -22,6 +22,12 @@
22 <groupId>com.Bsth</groupId> 22 <groupId>com.Bsth</groupId>
23 <artifactId>Bsth-common</artifactId> 23 <artifactId>Bsth-common</artifactId>
24 </dependency> 24 </dependency>
  25 + <dependency>
  26 + <groupId>com.baomidou</groupId>
  27 + <artifactId>mybatis-plus-extension</artifactId>
  28 + <version>3.4.1</version>
  29 + <scope>compile</scope>
  30 + </dependency>
25 31
26 </dependencies> 32 </dependencies>
27 33
Bsth-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
1 package com.ruoyi.system.mapper; 1 package com.ruoyi.system.mapper;
2 2
3 import java.util.List; 3 import java.util.List;
  4 +
  5 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 import org.apache.ibatis.annotations.Param; 6 import org.apache.ibatis.annotations.Param;
5 import com.ruoyi.common.core.domain.entity.SysDictData; 7 import com.ruoyi.common.core.domain.entity.SysDictData;
6 8
@@ -9,7 +11,7 @@ import com.ruoyi.common.core.domain.entity.SysDictData; @@ -9,7 +11,7 @@ import com.ruoyi.common.core.domain.entity.SysDictData;
9 * 11 *
10 * @author ruoyi 12 * @author ruoyi
11 */ 13 */
12 -public interface SysDictDataMapper 14 +public interface SysDictDataMapper extends BaseMapper<SysDictData>
13 { 15 {
14 /** 16 /**
15 * 根据条件分页查询字典数据 17 * 根据条件分页查询字典数据
Bsth-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
1 package com.ruoyi.system.mapper; 1 package com.ruoyi.system.mapper;
2 2
3 import java.util.List; 3 import java.util.List;
  4 +
  5 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 import com.ruoyi.common.core.domain.entity.SysDictType; 6 import com.ruoyi.common.core.domain.entity.SysDictType;
5 7
6 /** 8 /**
@@ -8,7 +10,7 @@ import com.ruoyi.common.core.domain.entity.SysDictType; @@ -8,7 +10,7 @@ import com.ruoyi.common.core.domain.entity.SysDictType;
8 * 10 *
9 * @author ruoyi 11 * @author ruoyi
10 */ 12 */
11 -public interface SysDictTypeMapper 13 +public interface SysDictTypeMapper extends BaseMapper<SysDictType>
12 { 14 {
13 /** 15 /**
14 * 根据条件分页查询字典类型 16 * 根据条件分页查询字典类型
Bsth-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
1 package com.ruoyi.system.service; 1 package com.ruoyi.system.service;
2 2
  3 +import java.util.Collection;
3 import java.util.List; 4 import java.util.List;
  5 +
  6 +import com.baomidou.mybatisplus.extension.service.IService;
4 import com.ruoyi.common.core.domain.entity.SysDictData; 7 import com.ruoyi.common.core.domain.entity.SysDictData;
5 8
6 /** 9 /**
7 * 字典 业务层 10 * 字典 业务层
8 - * 11 + *
9 * @author ruoyi 12 * @author ruoyi
10 */ 13 */
11 -public interface ISysDictDataService  
12 -{ 14 +public interface ISysDictDataService extends IService<SysDictData> {
13 /** 15 /**
14 * 根据条件分页查询字典数据 16 * 根据条件分页查询字典数据
15 - * 17 + *
16 * @param dictData 字典数据信息 18 * @param dictData 字典数据信息
17 * @return 字典数据集合信息 19 * @return 字典数据集合信息
18 */ 20 */
19 public List<SysDictData> selectDictDataList(SysDictData dictData); 21 public List<SysDictData> selectDictDataList(SysDictData dictData);
20 22
  23 + List<SysDictData> queryDictDateList(SysDictData dictData);
  24 +
  25 + List<SysDictData> queryDictDateList(SysDictData dictData, Collection<String> types);
  26 +
21 /** 27 /**
22 * 根据字典类型和字典键值查询字典数据信息 28 * 根据字典类型和字典键值查询字典数据信息
23 - *  
24 - * @param dictType 字典类型 29 + *
  30 + * @param dictType 字典类型
25 * @param dictValue 字典键值 31 * @param dictValue 字典键值
26 * @return 字典标签 32 * @return 字典标签
27 */ 33 */
@@ -29,7 +35,7 @@ public interface ISysDictDataService @@ -29,7 +35,7 @@ public interface ISysDictDataService
29 35
30 /** 36 /**
31 * 根据字典数据ID查询信息 37 * 根据字典数据ID查询信息
32 - * 38 + *
33 * @param dictCode 字典数据ID 39 * @param dictCode 字典数据ID
34 * @return 字典数据 40 * @return 字典数据
35 */ 41 */
@@ -37,14 +43,14 @@ public interface ISysDictDataService @@ -37,14 +43,14 @@ public interface ISysDictDataService
37 43
38 /** 44 /**
39 * 批量删除字典数据信息 45 * 批量删除字典数据信息
40 - * 46 + *
41 * @param dictCodes 需要删除的字典数据ID 47 * @param dictCodes 需要删除的字典数据ID
42 */ 48 */
43 public void deleteDictDataByIds(Long[] dictCodes); 49 public void deleteDictDataByIds(Long[] dictCodes);
44 50
45 /** 51 /**
46 * 新增保存字典数据信息 52 * 新增保存字典数据信息
47 - * 53 + *
48 * @param dictData 字典数据信息 54 * @param dictData 字典数据信息
49 * @return 结果 55 * @return 结果
50 */ 56 */
@@ -52,7 +58,7 @@ public interface ISysDictDataService @@ -52,7 +58,7 @@ public interface ISysDictDataService
52 58
53 /** 59 /**
54 * 修改保存字典数据信息 60 * 修改保存字典数据信息
55 - * 61 + *
56 * @param dictData 字典数据信息 62 * @param dictData 字典数据信息
57 * @return 结果 63 * @return 结果
58 */ 64 */
Bsth-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
1 package com.ruoyi.system.service; 1 package com.ruoyi.system.service;
2 2
  3 +import java.util.Collection;
3 import java.util.List; 4 import java.util.List;
  5 +
  6 +import com.baomidou.mybatisplus.extension.service.IService;
4 import com.ruoyi.common.core.domain.entity.SysDictData; 7 import com.ruoyi.common.core.domain.entity.SysDictData;
5 import com.ruoyi.common.core.domain.entity.SysDictType; 8 import com.ruoyi.common.core.domain.entity.SysDictType;
6 9
@@ -9,7 +12,7 @@ import com.ruoyi.common.core.domain.entity.SysDictType; @@ -9,7 +12,7 @@ import com.ruoyi.common.core.domain.entity.SysDictType;
9 * 12 *
10 * @author ruoyi 13 * @author ruoyi
11 */ 14 */
12 -public interface ISysDictTypeService 15 +public interface ISysDictTypeService extends IService<SysDictType>
13 { 16 {
14 /** 17 /**
15 * 根据条件分页查询字典类型 18 * 根据条件分页查询字典类型
@@ -19,6 +22,8 @@ public interface ISysDictTypeService @@ -19,6 +22,8 @@ public interface ISysDictTypeService
19 */ 22 */
20 public List<SysDictType> selectDictTypeList(SysDictType dictType); 23 public List<SysDictType> selectDictTypeList(SysDictType dictType);
21 24
  25 + List<SysDictType> queryDicTypeList(SysDictType dictType, Collection<String> types);
  26 +
22 /** 27 /**
23 * 根据所有字典类型 28 * 根据所有字典类型
24 * 29 *
Bsth-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
1 package com.ruoyi.system.service.impl; 1 package com.ruoyi.system.service.impl;
2 2
  3 +import java.util.Collection;
3 import java.util.List; 4 import java.util.List;
  5 +
  6 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8 +import org.apache.commons.collections4.CollectionUtils;
4 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
5 import org.springframework.stereotype.Service; 10 import org.springframework.stereotype.Service;
6 import com.ruoyi.common.core.domain.entity.SysDictData; 11 import com.ruoyi.common.core.domain.entity.SysDictData;
@@ -10,62 +15,71 @@ import com.ruoyi.system.service.ISysDictDataService; @@ -10,62 +15,71 @@ import com.ruoyi.system.service.ISysDictDataService;
10 15
11 /** 16 /**
12 * 字典 业务层处理 17 * 字典 业务层处理
13 - * 18 + *
14 * @author ruoyi 19 * @author ruoyi
15 */ 20 */
16 @Service 21 @Service
17 -public class SysDictDataServiceImpl implements ISysDictDataService  
18 -{ 22 +public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService {
19 @Autowired 23 @Autowired
20 private SysDictDataMapper dictDataMapper; 24 private SysDictDataMapper dictDataMapper;
21 25
22 /** 26 /**
23 * 根据条件分页查询字典数据 27 * 根据条件分页查询字典数据
24 - * 28 + *
25 * @param dictData 字典数据信息 29 * @param dictData 字典数据信息
26 * @return 字典数据集合信息 30 * @return 字典数据集合信息
27 */ 31 */
28 @Override 32 @Override
29 - public List<SysDictData> selectDictDataList(SysDictData dictData)  
30 - { 33 + public List<SysDictData> selectDictDataList(SysDictData dictData) {
31 return dictDataMapper.selectDictDataList(dictData); 34 return dictDataMapper.selectDictDataList(dictData);
32 } 35 }
33 36
  37 + @Override
  38 + public List<SysDictData> queryDictDateList(SysDictData dictData) {
  39 + LambdaQueryWrapper<SysDictData> wrapper = new LambdaQueryWrapper<>(dictData);
  40 + return list(wrapper);
  41 + }
  42 +
  43 + @Override
  44 + public List<SysDictData> queryDictDateList(SysDictData dictData, Collection<String> types) {
  45 + LambdaQueryWrapper<SysDictData> wrapper = new LambdaQueryWrapper<>(dictData);
  46 + if (CollectionUtils.isNotEmpty(types)) {
  47 + wrapper.in(SysDictData::getDictType, types);
  48 + }
  49 + return list(wrapper);
  50 + }
  51 +
34 /** 52 /**
35 * 根据字典类型和字典键值查询字典数据信息 53 * 根据字典类型和字典键值查询字典数据信息
36 - *  
37 - * @param dictType 字典类型 54 + *
  55 + * @param dictType 字典类型
38 * @param dictValue 字典键值 56 * @param dictValue 字典键值
39 * @return 字典标签 57 * @return 字典标签
40 */ 58 */
41 @Override 59 @Override
42 - public String selectDictLabel(String dictType, String dictValue)  
43 - { 60 + public String selectDictLabel(String dictType, String dictValue) {
44 return dictDataMapper.selectDictLabel(dictType, dictValue); 61 return dictDataMapper.selectDictLabel(dictType, dictValue);
45 } 62 }
46 63
47 /** 64 /**
48 * 根据字典数据ID查询信息 65 * 根据字典数据ID查询信息
49 - * 66 + *
50 * @param dictCode 字典数据ID 67 * @param dictCode 字典数据ID
51 * @return 字典数据 68 * @return 字典数据
52 */ 69 */
53 @Override 70 @Override
54 - public SysDictData selectDictDataById(Long dictCode)  
55 - { 71 + public SysDictData selectDictDataById(Long dictCode) {
56 return dictDataMapper.selectDictDataById(dictCode); 72 return dictDataMapper.selectDictDataById(dictCode);
57 } 73 }
58 74
59 /** 75 /**
60 * 批量删除字典数据信息 76 * 批量删除字典数据信息
61 - * 77 + *
62 * @param dictCodes 需要删除的字典数据ID 78 * @param dictCodes 需要删除的字典数据ID
63 */ 79 */
64 @Override 80 @Override
65 - public void deleteDictDataByIds(Long[] dictCodes)  
66 - {  
67 - for (Long dictCode : dictCodes)  
68 - { 81 + public void deleteDictDataByIds(Long[] dictCodes) {
  82 + for (Long dictCode : dictCodes) {
69 SysDictData data = selectDictDataById(dictCode); 83 SysDictData data = selectDictDataById(dictCode);
70 dictDataMapper.deleteDictDataById(dictCode); 84 dictDataMapper.deleteDictDataById(dictCode);
71 List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); 85 List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
@@ -75,16 +89,14 @@ public class SysDictDataServiceImpl implements ISysDictDataService @@ -75,16 +89,14 @@ public class SysDictDataServiceImpl implements ISysDictDataService
75 89
76 /** 90 /**
77 * 新增保存字典数据信息 91 * 新增保存字典数据信息
78 - * 92 + *
79 * @param data 字典数据信息 93 * @param data 字典数据信息
80 * @return 结果 94 * @return 结果
81 */ 95 */
82 @Override 96 @Override
83 - public int insertDictData(SysDictData data)  
84 - { 97 + public int insertDictData(SysDictData data) {
85 int row = dictDataMapper.insertDictData(data); 98 int row = dictDataMapper.insertDictData(data);
86 - if (row > 0)  
87 - { 99 + if (row > 0) {
88 List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); 100 List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
89 DictUtils.setDictCache(data.getDictType(), dictDatas); 101 DictUtils.setDictCache(data.getDictType(), dictDatas);
90 } 102 }
@@ -93,16 +105,14 @@ public class SysDictDataServiceImpl implements ISysDictDataService @@ -93,16 +105,14 @@ public class SysDictDataServiceImpl implements ISysDictDataService
93 105
94 /** 106 /**
95 * 修改保存字典数据信息 107 * 修改保存字典数据信息
96 - * 108 + *
97 * @param data 字典数据信息 109 * @param data 字典数据信息
98 * @return 结果 110 * @return 结果
99 */ 111 */
100 @Override 112 @Override
101 - public int updateDictData(SysDictData data)  
102 - { 113 + public int updateDictData(SysDictData data) {
103 int row = dictDataMapper.updateDictData(data); 114 int row = dictDataMapper.updateDictData(data);
104 - if (row > 0)  
105 - { 115 + if (row > 0) {
106 List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); 116 List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
107 DictUtils.setDictCache(data.getDictType(), dictDatas); 117 DictUtils.setDictCache(data.getDictType(), dictDatas);
108 } 118 }
Bsth-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
1 package com.ruoyi.system.service.impl; 1 package com.ruoyi.system.service.impl;
2 2
  3 +import java.util.Collection;
3 import java.util.Comparator; 4 import java.util.Comparator;
4 import java.util.List; 5 import java.util.List;
5 import java.util.Map; 6 import java.util.Map;
6 import java.util.stream.Collectors; 7 import java.util.stream.Collectors;
7 import javax.annotation.PostConstruct; 8 import javax.annotation.PostConstruct;
  9 +
  10 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  11 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  12 +import org.apache.commons.collections4.CollectionUtils;
8 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.stereotype.Service; 14 import org.springframework.stereotype.Service;
10 import org.springframework.transaction.annotation.Transactional; 15 import org.springframework.transaction.annotation.Transactional;
@@ -20,12 +25,11 @@ import com.ruoyi.system.service.ISysDictTypeService; @@ -20,12 +25,11 @@ import com.ruoyi.system.service.ISysDictTypeService;
20 25
21 /** 26 /**
22 * 字典 业务层处理 27 * 字典 业务层处理
23 - * 28 + *
24 * @author ruoyi 29 * @author ruoyi
25 */ 30 */
26 @Service 31 @Service
27 -public class SysDictTypeServiceImpl implements ISysDictTypeService  
28 -{ 32 +public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictType> implements ISysDictTypeService {
29 @Autowired 33 @Autowired
30 private SysDictTypeMapper dictTypeMapper; 34 private SysDictTypeMapper dictTypeMapper;
31 35
@@ -36,51 +40,54 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService @@ -36,51 +40,54 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService
36 * 项目启动时,初始化字典到缓存 40 * 项目启动时,初始化字典到缓存
37 */ 41 */
38 @PostConstruct 42 @PostConstruct
39 - public void init()  
40 - { 43 + public void init() {
41 loadingDictCache(); 44 loadingDictCache();
42 } 45 }
43 46
44 /** 47 /**
45 * 根据条件分页查询字典类型 48 * 根据条件分页查询字典类型
46 - * 49 + *
47 * @param dictType 字典类型信息 50 * @param dictType 字典类型信息
48 * @return 字典类型集合信息 51 * @return 字典类型集合信息
49 */ 52 */
50 @Override 53 @Override
51 - public List<SysDictType> selectDictTypeList(SysDictType dictType)  
52 - { 54 + public List<SysDictType> selectDictTypeList(SysDictType dictType) {
53 return dictTypeMapper.selectDictTypeList(dictType); 55 return dictTypeMapper.selectDictTypeList(dictType);
54 } 56 }
55 57
  58 + @Override
  59 + public List<SysDictType> queryDicTypeList(SysDictType dictType, Collection<String> types) {
  60 + LambdaQueryWrapper<SysDictType> wrapper = new LambdaQueryWrapper<>(dictType);
  61 + if (CollectionUtils.isNotEmpty(types)) {
  62 + wrapper.in(SysDictType::getDictType, types);
  63 + }
  64 + return list(wrapper);
  65 + }
  66 +
56 /** 67 /**
57 * 根据所有字典类型 68 * 根据所有字典类型
58 - * 69 + *
59 * @return 字典类型集合信息 70 * @return 字典类型集合信息
60 */ 71 */
61 @Override 72 @Override
62 - public List<SysDictType> selectDictTypeAll()  
63 - { 73 + public List<SysDictType> selectDictTypeAll() {
64 return dictTypeMapper.selectDictTypeAll(); 74 return dictTypeMapper.selectDictTypeAll();
65 } 75 }
66 76
67 /** 77 /**
68 * 根据字典类型查询字典数据 78 * 根据字典类型查询字典数据
69 - * 79 + *
70 * @param dictType 字典类型 80 * @param dictType 字典类型
71 * @return 字典数据集合信息 81 * @return 字典数据集合信息
72 */ 82 */
73 @Override 83 @Override
74 - public List<SysDictData> selectDictDataByType(String dictType)  
75 - { 84 + public List<SysDictData> selectDictDataByType(String dictType) {
76 List<SysDictData> dictDatas = DictUtils.getDictCache(dictType); 85 List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);
77 - if (StringUtils.isNotEmpty(dictDatas))  
78 - { 86 + if (StringUtils.isNotEmpty(dictDatas)) {
79 return dictDatas; 87 return dictDatas;
80 } 88 }
81 dictDatas = dictDataMapper.selectDictDataByType(dictType); 89 dictDatas = dictDataMapper.selectDictDataByType(dictType);
82 - if (StringUtils.isNotEmpty(dictDatas))  
83 - { 90 + if (StringUtils.isNotEmpty(dictDatas)) {
84 DictUtils.setDictCache(dictType, dictDatas); 91 DictUtils.setDictCache(dictType, dictDatas);
85 return dictDatas; 92 return dictDatas;
86 } 93 }
@@ -89,41 +96,36 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService @@ -89,41 +96,36 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService
89 96
90 /** 97 /**
91 * 根据字典类型ID查询信息 98 * 根据字典类型ID查询信息
92 - * 99 + *
93 * @param dictId 字典类型ID 100 * @param dictId 字典类型ID
94 * @return 字典类型 101 * @return 字典类型
95 */ 102 */
96 @Override 103 @Override
97 - public SysDictType selectDictTypeById(Long dictId)  
98 - { 104 + public SysDictType selectDictTypeById(Long dictId) {
99 return dictTypeMapper.selectDictTypeById(dictId); 105 return dictTypeMapper.selectDictTypeById(dictId);
100 } 106 }
101 107
102 /** 108 /**
103 * 根据字典类型查询信息 109 * 根据字典类型查询信息
104 - * 110 + *
105 * @param dictType 字典类型 111 * @param dictType 字典类型
106 * @return 字典类型 112 * @return 字典类型
107 */ 113 */
108 @Override 114 @Override
109 - public SysDictType selectDictTypeByType(String dictType)  
110 - { 115 + public SysDictType selectDictTypeByType(String dictType) {
111 return dictTypeMapper.selectDictTypeByType(dictType); 116 return dictTypeMapper.selectDictTypeByType(dictType);
112 } 117 }
113 118
114 /** 119 /**
115 * 批量删除字典类型信息 120 * 批量删除字典类型信息
116 - * 121 + *
117 * @param dictIds 需要删除的字典ID 122 * @param dictIds 需要删除的字典ID
118 */ 123 */
119 @Override 124 @Override
120 - public void deleteDictTypeByIds(Long[] dictIds)  
121 - {  
122 - for (Long dictId : dictIds)  
123 - { 125 + public void deleteDictTypeByIds(Long[] dictIds) {
  126 + for (Long dictId : dictIds) {
124 SysDictType dictType = selectDictTypeById(dictId); 127 SysDictType dictType = selectDictTypeById(dictId);
125 - if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0)  
126 - { 128 + if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) {
127 throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName())); 129 throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName()));
128 } 130 }
129 dictTypeMapper.deleteDictTypeById(dictId); 131 dictTypeMapper.deleteDictTypeById(dictId);
@@ -135,13 +137,11 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService @@ -135,13 +137,11 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService
135 * 加载字典缓存数据 137 * 加载字典缓存数据
136 */ 138 */
137 @Override 139 @Override
138 - public void loadingDictCache()  
139 - { 140 + public void loadingDictCache() {
140 SysDictData dictData = new SysDictData(); 141 SysDictData dictData = new SysDictData();
141 dictData.setStatus("0"); 142 dictData.setStatus("0");
142 Map<String, List<SysDictData>> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType)); 143 Map<String, List<SysDictData>> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType));
143 - for (Map.Entry<String, List<SysDictData>> entry : dictDataMap.entrySet())  
144 - { 144 + for (Map.Entry<String, List<SysDictData>> entry : dictDataMap.entrySet()) {
145 DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList())); 145 DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList()));
146 } 146 }
147 } 147 }
@@ -150,8 +150,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService @@ -150,8 +150,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService
150 * 清空字典缓存数据 150 * 清空字典缓存数据
151 */ 151 */
152 @Override 152 @Override
153 - public void clearDictCache()  
154 - { 153 + public void clearDictCache() {
155 DictUtils.clearDictCache(); 154 DictUtils.clearDictCache();
156 } 155 }
157 156
@@ -159,24 +158,21 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService @@ -159,24 +158,21 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService
159 * 重置字典缓存数据 158 * 重置字典缓存数据
160 */ 159 */
161 @Override 160 @Override
162 - public void resetDictCache()  
163 - { 161 + public void resetDictCache() {
164 clearDictCache(); 162 clearDictCache();
165 loadingDictCache(); 163 loadingDictCache();
166 } 164 }
167 165
168 /** 166 /**
169 * 新增保存字典类型信息 167 * 新增保存字典类型信息
170 - * 168 + *
171 * @param dict 字典类型信息 169 * @param dict 字典类型信息
172 * @return 结果 170 * @return 结果
173 */ 171 */
174 @Override 172 @Override
175 - public int insertDictType(SysDictType dict)  
176 - { 173 + public int insertDictType(SysDictType dict) {
177 int row = dictTypeMapper.insertDictType(dict); 174 int row = dictTypeMapper.insertDictType(dict);
178 - if (row > 0)  
179 - { 175 + if (row > 0) {
180 DictUtils.setDictCache(dict.getDictType(), null); 176 DictUtils.setDictCache(dict.getDictType(), null);
181 } 177 }
182 return row; 178 return row;
@@ -184,19 +180,17 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService @@ -184,19 +180,17 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService
184 180
185 /** 181 /**
186 * 修改保存字典类型信息 182 * 修改保存字典类型信息
187 - * 183 + *
188 * @param dict 字典类型信息 184 * @param dict 字典类型信息
189 * @return 结果 185 * @return 结果
190 */ 186 */
191 @Override 187 @Override
192 @Transactional 188 @Transactional
193 - public int updateDictType(SysDictType dict)  
194 - { 189 + public int updateDictType(SysDictType dict) {
195 SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId()); 190 SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId());
196 dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType()); 191 dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType());
197 int row = dictTypeMapper.updateDictType(dict); 192 int row = dictTypeMapper.updateDictType(dict);
198 - if (row > 0)  
199 - { 193 + if (row > 0) {
200 List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType()); 194 List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType());
201 DictUtils.setDictCache(dict.getDictType(), dictDatas); 195 DictUtils.setDictCache(dict.getDictType(), dictDatas);
202 } 196 }
@@ -205,17 +199,15 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService @@ -205,17 +199,15 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService
205 199
206 /** 200 /**
207 * 校验字典类型称是否唯一 201 * 校验字典类型称是否唯一
208 - * 202 + *
209 * @param dict 字典类型 203 * @param dict 字典类型
210 * @return 结果 204 * @return 结果
211 */ 205 */
212 @Override 206 @Override
213 - public boolean checkDictTypeUnique(SysDictType dict)  
214 - { 207 + public boolean checkDictTypeUnique(SysDictType dict) {
215 Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId(); 208 Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId();
216 SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType()); 209 SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType());
217 - if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue())  
218 - { 210 + if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) {
219 return UserConstants.NOT_UNIQUE; 211 return UserConstants.NOT_UNIQUE;
220 } 212 }
221 return UserConstants.UNIQUE; 213 return UserConstants.UNIQUE;