Ver Fonte

1.地铁盘查

wxg há 2 anos atrás
pai
commit
3f0317d886
57 ficheiros alterados com 2505 adições e 508 exclusões
  1. 6 1
      pom.xml
  2. 237 237
      src/main/java/com/metro/controller/AccountController.java
  3. 24 24
      src/main/java/com/metro/controller/AddressController.java
  4. 26 26
      src/main/java/com/metro/controller/CanRecordController.java
  5. 25 14
      src/main/java/com/metro/controller/CompanyController.java
  6. 52 0
      src/main/java/com/metro/controller/JDevicesController.java
  7. 127 0
      src/main/java/com/metro/controller/JPersonsController.java
  8. 34 15
      src/main/java/com/metro/controller/PassreCordsController.java
  9. 95 95
      src/main/java/com/metro/controller/PolicController.java
  10. 21 0
      src/main/java/com/metro/entity/dto/JDeviceUpdateDTO.java
  11. 26 0
      src/main/java/com/metro/entity/dto/JpersonDTO.java
  12. 41 0
      src/main/java/com/metro/entity/dto/JpersonEditDTO.java
  13. 102 0
      src/main/java/com/metro/entity/po/JDevices.java
  14. 42 0
      src/main/java/com/metro/entity/po/JDevicesMetro.java
  15. 104 0
      src/main/java/com/metro/entity/po/JPersons.java
  16. 1 2
      src/main/java/com/metro/entity/po/PassreCords.java
  17. 4 10
      src/main/java/com/metro/entity/ro/account/InsertAccountReq.java
  18. 6 3
      src/main/java/com/metro/entity/ro/account/SelectAccountPageResp.java
  19. 11 6
      src/main/java/com/metro/entity/ro/passrecords/SelectPassreCordsPageListResp.java
  20. 31 0
      src/main/java/com/metro/entity/search/JDevicesSearch.java
  21. 38 0
      src/main/java/com/metro/entity/search/JPersonSearch.java
  22. 32 0
      src/main/java/com/metro/entity/search/WarningSearch.java
  23. 26 0
      src/main/java/com/metro/entity/vo/BranchVO.java
  24. 26 0
      src/main/java/com/metro/entity/vo/CompanyVO.java
  25. 27 0
      src/main/java/com/metro/entity/vo/JDevicesLessVO.java
  26. 90 0
      src/main/java/com/metro/entity/vo/JDevicesVO.java
  27. 57 0
      src/main/java/com/metro/entity/vo/JPersonVO.java
  28. 38 0
      src/main/java/com/metro/entity/vo/MetroVO.java
  29. 61 0
      src/main/java/com/metro/entity/vo/WarningDetailOneVO.java
  30. 43 0
      src/main/java/com/metro/entity/vo/WarningDetailVO.java
  31. 43 0
      src/main/java/com/metro/entity/vo/WarningVO.java
  32. 18 1
      src/main/java/com/metro/mapper/CompanysMapper.java
  33. 22 0
      src/main/java/com/metro/mapper/JDevicesMapper.java
  34. 16 0
      src/main/java/com/metro/mapper/JDevicesMetroMapper.java
  35. 22 0
      src/main/java/com/metro/mapper/JPersonsMapper.java
  36. 16 0
      src/main/java/com/metro/mapper/MetroMapper.java
  37. 7 0
      src/main/java/com/metro/mapper/PassreCordsMapper.java
  38. 8 1
      src/main/java/com/metro/service/AccountService.java
  39. 27 0
      src/main/java/com/metro/service/CompanyService.java
  40. 26 0
      src/main/java/com/metro/service/JDevicesService.java
  41. 30 0
      src/main/java/com/metro/service/JPersonsService.java
  42. 23 3
      src/main/java/com/metro/service/PassreCordsService.java
  43. 32 12
      src/main/java/com/metro/service/impl/AccountServiceImpl.java
  44. 47 2
      src/main/java/com/metro/service/impl/CompanyServiceImpl.java
  45. 118 0
      src/main/java/com/metro/service/impl/JDevicesServiceImpl.java
  46. 208 0
      src/main/java/com/metro/service/impl/JPersonsServiceImpl.java
  47. 129 42
      src/main/java/com/metro/service/impl/PassreCordsServiceImpl.java
  48. 18 0
      src/main/java/com/metro/utils/CompanyUtils.java
  49. 2 2
      src/main/resources/application-dev.yml
  50. 5 5
      src/main/resources/application-local.yml
  51. 5 5
      src/main/resources/application-prod.yml
  52. 1 1
      src/main/resources/application.yml
  53. 65 0
      src/main/resources/mapper/CompanysMapper.xml
  54. 36 0
      src/main/resources/mapper/JDevicesMapper.xml
  55. 62 0
      src/main/resources/mapper/JPersonsMapper.xml
  56. 37 0
      src/main/resources/mapper/MetroMapper.xml
  57. 29 1
      src/main/resources/mapper/PassreCordsMapper.xml

+ 6 - 1
pom.xml

@@ -50,7 +50,12 @@
             <artifactId>spring-boot-devtools</artifactId>
             <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
         </dependency>
-
+        <!--图片压缩-->
+        <dependency>
+            <groupId>net.coobird</groupId>
+            <artifactId>thumbnailator</artifactId>
+            <version>0.4.8</version>
+        </dependency>
 
         <dependency>
             <groupId>io.jsonwebtoken</groupId>

+ 237 - 237
src/main/java/com/metro/controller/AccountController.java

@@ -1,237 +1,237 @@
-package com.metro.controller;
-
-import com.auth0.jwt.JWT;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.metro.baseRe.AjaxResult;
-import com.metro.baseRe.BaseResponse;
-import com.metro.config.Config;
-import com.metro.entity.model.UserOperateModel;
-import com.metro.entity.po.Account;
-import com.metro.entity.ro.account.*;
-import com.metro.restful.RestResponse;
-import com.metro.restful.RestResult;
-import com.metro.security.Authority;
-import com.metro.security.JWTUtils;
-import com.metro.service.AccountService;
-import com.metro.utils.StringUtils;
-import com.metro.utils.file.FileUtils;
-import com.metro.utils.poi.ExcelUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.extern.log4j.Log4j2;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.awt.*;
-import java.util.List;
-
-/**
- * @ClassName: AccountController
- * @Description: TODO
- * @Author: ZS
- * @CreateName: lws
- * @Date 2022/3/9 10:59
- * ...
- */
-@RestController
-@RequestMapping("/account")
-@Api(tags = "账号管理")
-@Log4j2
-public class AccountController extends BaseController {
-
-    @Autowired
-    private AccountService service;
-
-    /**
-     * 登录
-     *
-     * @param req 账号密码
-     * @return 是否成功
-     */
-    @ApiOperation("后台管理登录")
-    @PostMapping("/login")
-    @Authority(required = false)
-    public BaseResponse<LoginAccountResp> doLogin(@Valid @RequestBody LoginAccountReq req) {
-        return BaseResponse.ok(service.login(req));
-    }
-
-    @ApiOperation("后台管理退出登录")
-    @Authority(required = false)
-    @GetMapping("/doLogout")
-    public RestResult<Boolean> doLogout() {
-        return RestResponse.ok(service.logout());
-    }
-
-    /**
-     * 获取用户信息
-     *
-     * @return 是否成功
-     */
-    @ApiOperation("获取用户信息")
-    @GetMapping("/getUserInfo")
-    public RestResult<LoginAccountResp> getUserInfo() {
-        return RestResponse.ok(service.getUserInfo(getUserId()));
-    }
-
-    /**
-     * 账号列表查询
-     *
-     * @param req 查询条件
-     * @return page列表
-     */
-    @PostMapping("/page")
-    @Authority
-    @ApiOperation("账号列表查询")
-    public BaseResponse<IPage<SelectAccountPageResp>> page(@Valid @RequestBody(required = false) SelectAccountPageReq req) {
-        return BaseResponse.ok(service.page(req));
-    }
-
-    /**
-     * 添加账号
-     *
-     * @param req 账号信息
-     * @return 影响行数
-     */
-    @PostMapping("/add")
-    @Authority
-    @ApiOperation("添加账号")
-    public BaseResponse<InsertAccountResp> add(@Valid @RequestBody InsertAccountReq req) {
-        return BaseResponse.ok(service.add(req));
-    }
-
-    /**
-     * 校验账号是否存在
-     *
-     * @param req 账号
-     * @return true/false
-     */
-    @PostMapping("/validAccount")
-    @ApiOperation("校验账号是否存在")
-    public BaseResponse<ValidAccountResp> validAccount(@Valid @RequestBody ValidAccountReq req) {
-        return BaseResponse.ok(service.validAccount(req));
-    }
-
-    /**
-     * 删除账号
-     *
-     * @param req 主键
-     * @return 影响行数
-     */
-    @PostMapping("/delete")
-    @Authority
-    @ApiOperation("删除账号")
-    public BaseResponse<DeleteAccountResp> delete(@Valid @RequestBody DeleteAccountReq req) {
-        return BaseResponse.ok(service.delete(req));
-    }
-
-    /**
-     * 账号详情
-     *
-     * @param req 主键
-     * @return 账号详情
-     */
-    @PostMapping("/detail")
-    @Authority
-    @ApiOperation("帐号详情")
-    public BaseResponse<DetailAccountResp> detail(@Valid @RequestBody DetailAccountReq req) {
-        return BaseResponse.ok(service.detail(req));
-    }
-
-    /**
-     * 修改账号
-     *
-     * @param req 主键
-     * @return 影响行数
-     */
-    @PostMapping("/update")
-    @Authority
-    @ApiOperation("修改账号")
-    public BaseResponse<UpdateAccountResp> update(@Valid @RequestBody UpdateAccountReq req) {
-        return BaseResponse.ok(service.update(req));
-    }
-
-    /**
-     * 上传文件
-     *
-     * @param file 文件
-     * @return 返回信息
-     */
-    @ApiOperation("上传附件")
-    @Authority
-    @PostMapping(value = "/uploadPhoto")
-    public BaseResponse<String> uploadPhoto(@RequestParam("file") @ApiParam(value = "二进制文件流,文件类型后端未做限制,前端只允许上传照片") MultipartFile file) {
-        return service.uploadPhoto(file);
-    }
-
-    /**
-     * 预览照片
-     *
-     * @param response response
-     * @param fileUrl  fileUrl
-     */
-    @ApiOperation("预览照片")
-    @Authority
-    @GetMapping("/showPhoto")
-    public BaseResponse<Integer> showPhoto(HttpServletResponse response, @RequestParam("fileUrl") @ApiParam("文件路径") String fileUrl) {
-        service.showPhoto(response, fileUrl);
-        return BaseResponse.ok();
-    }
-
-    /**
-     * 通用下载请求
-     *
-     * @param fileName 文件名称
-     * @param delete   是否删除
-     */
-    @GetMapping("/download")
-    @ApiOperation("下载文件")
-    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response) {
-        try {
-            if (!FileUtils.checkAllowDownload(fileName)) {
-                throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
-            }
-            String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
-            String filePath = Config.getDownloadPath() + fileName;
-
-            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
-            FileUtils.setAttachmentResponseHeader(response, realFileName);
-            FileUtils.writeBytes(filePath, response.getOutputStream());
-            if (delete) {
-                FileUtils.deleteFile(filePath);
-            }
-        } catch (Exception e) {
-            log.error("下载文件失败", e);
-        }
-    }
-
-
-    /**
-     * 下载模板
-     */
-    @GetMapping("/importTemplate")
-    @ApiOperation("获取下载文件名")
-    public AjaxResult importTemplate() {
-        ExcelUtil<UserOperateModel> util = new ExcelUtil<UserOperateModel>(UserOperateModel.class);
-        return util.importTemplateExcel("用户数据");
-    }
-
-    /*
-     * 导入
-     * */
-    @ApiOperation("导入用户数据")
-    @PostMapping("/importData")
-    public AjaxResult importData(MultipartFile file, String type) throws Exception {
-        ExcelUtil<UserOperateModel> util = new ExcelUtil<>(UserOperateModel.class);
-        List<UserOperateModel> userList = util.importExcel(file.getInputStream());
-        return AjaxResult.success(service.importUser(userList, type));
-    }
-
-
-}
-
-
+//package com.metro.controller;
+//
+//import com.auth0.jwt.JWT;
+//import com.baomidou.mybatisplus.core.metadata.IPage;
+//import com.metro.baseRe.AjaxResult;
+//import com.metro.baseRe.BaseResponse;
+//import com.metro.config.Config;
+//import com.metro.entity.model.UserOperateModel;
+//import com.metro.entity.po.Account;
+//import com.metro.entity.ro.account.*;
+//import com.metro.restful.RestResponse;
+//import com.metro.restful.RestResult;
+//import com.metro.security.Authority;
+//import com.metro.security.JWTUtils;
+//import com.metro.service.AccountService;
+//import com.metro.utils.StringUtils;
+//import com.metro.utils.file.FileUtils;
+//import com.metro.utils.poi.ExcelUtil;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import io.swagger.annotations.ApiParam;
+//import lombok.extern.log4j.Log4j2;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.http.MediaType;
+//import org.springframework.web.bind.annotation.*;
+//import org.springframework.web.multipart.MultipartFile;
+//
+//import javax.servlet.http.HttpServletResponse;
+//import javax.validation.Valid;
+//import java.awt.*;
+//import java.util.List;
+//
+///**
+// * @ClassName: AccountController
+// * @Description: TODO
+// * @Author: ZS
+// * @CreateName: lws
+// * @Date 2022/3/9 10:59
+// * ...
+// */
+//@RestController
+//@RequestMapping("/account")
+//@Api(tags = "账号管理")
+//@Log4j2
+//public class AccountController extends BaseController {
+//
+//    @Autowired
+//    private AccountService service;
+//
+//    /**
+//     * 登录
+//     *
+//     * @param req 账号密码
+//     * @return 是否成功
+//     */
+//    @ApiOperation("后台管理登录")
+//    @PostMapping("/login")
+//    @Authority(required = false)
+//    public BaseResponse<LoginAccountResp> doLogin(@Valid @RequestBody LoginAccountReq req) {
+//        return BaseResponse.ok(service.login(req));
+//    }
+//
+//    @ApiOperation("后台管理退出登录")
+//    @Authority(required = false)
+//    @GetMapping("/doLogout")
+//    public RestResult<Boolean> doLogout() {
+//        return RestResponse.ok(service.logout());
+//    }
+//
+//    /**
+//     * 获取用户信息
+//     *
+//     * @return 是否成功
+//     */
+//    @ApiOperation("获取用户信息")
+//    @GetMapping("/getUserInfo")
+//    public RestResult<LoginAccountResp> getUserInfo() {
+//        return RestResponse.ok(service.getUserInfo(getUserId()));
+//    }
+//
+//    /**
+//     * 账号列表查询
+//     *
+//     * @param req 查询条件
+//     * @return page列表
+//     */
+//    @PostMapping("/page")
+//    @Authority
+//    @ApiOperation("账号列表查询")
+//    public BaseResponse<IPage<SelectAccountPageResp>> page(@Valid @RequestBody(required = false) SelectAccountPageReq req) {
+//        return BaseResponse.ok(service.page(req));
+//    }
+//
+//    /**
+//     * 添加账号
+//     *
+//     * @param req 账号信息
+//     * @return 影响行数
+//     */
+//    @PostMapping("/add")
+//    @Authority
+//    @ApiOperation("添加账号")
+//    public BaseResponse<InsertAccountResp> add(@Valid @RequestBody InsertAccountReq req) {
+//        return BaseResponse.ok(service.add(req));
+//    }
+//
+//    /**
+//     * 校验账号是否存在
+//     *
+//     * @param req 账号
+//     * @return true/false
+//     */
+//    @PostMapping("/validAccount")
+//    @ApiOperation("校验账号是否存在")
+//    public BaseResponse<ValidAccountResp> validAccount(@Valid @RequestBody ValidAccountReq req) {
+//        return BaseResponse.ok(service.validAccount(req));
+//    }
+//
+//    /**
+//     * 删除账号
+//     *
+//     * @param req 主键
+//     * @return 影响行数
+//     */
+//    @PostMapping("/delete")
+//    @Authority
+//    @ApiOperation("删除账号")
+//    public BaseResponse<DeleteAccountResp> delete(@Valid @RequestBody DeleteAccountReq req) {
+//        return BaseResponse.ok(service.delete(req));
+//    }
+//
+//    /**
+//     * 账号详情
+//     *
+//     * @param req 主键
+//     * @return 账号详情
+//     */
+//    @PostMapping("/detail")
+//    @Authority
+//    @ApiOperation("帐号详情")
+//    public BaseResponse<DetailAccountResp> detail(@Valid @RequestBody DetailAccountReq req) {
+//        return BaseResponse.ok(service.detail(req));
+//    }
+//
+//    /**
+//     * 修改账号
+//     *
+//     * @param req 主键
+//     * @return 影响行数
+//     */
+//    @PostMapping("/update")
+//    @Authority
+//    @ApiOperation("修改账号")
+//    public BaseResponse<UpdateAccountResp> update(@Valid @RequestBody UpdateAccountReq req) {
+//        return BaseResponse.ok(service.update(req));
+//    }
+//
+//    /**
+//     * 上传文件
+//     *
+//     * @param file 文件
+//     * @return 返回信息
+//     */
+//    @ApiOperation("上传附件")
+//    @Authority
+//    @PostMapping(value = "/uploadPhoto")
+//    public BaseResponse<String> uploadPhoto(@RequestParam("file") @ApiParam(value = "二进制文件流,文件类型后端未做限制,前端只允许上传照片") MultipartFile file) {
+//        return service.uploadPhoto(file);
+//    }
+//
+//    /**
+//     * 预览照片
+//     *
+//     * @param response response
+//     * @param fileUrl  fileUrl
+//     */
+//    @ApiOperation("预览照片")
+//    @Authority
+//    @GetMapping("/showPhoto")
+//    public BaseResponse<Integer> showPhoto(HttpServletResponse response, @RequestParam("fileUrl") @ApiParam("文件路径") String fileUrl) {
+//        service.showPhoto(response, fileUrl);
+//        return BaseResponse.ok();
+//    }
+//
+//    /**
+//     * 通用下载请求
+//     *
+//     * @param fileName 文件名称
+//     * @param delete   是否删除
+//     */
+//    @GetMapping("/download")
+//    @ApiOperation("下载文件")
+//    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response) {
+//        try {
+//            if (!FileUtils.checkAllowDownload(fileName)) {
+//                throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
+//            }
+//            String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
+//            String filePath = Config.getDownloadPath() + fileName;
+//
+//            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+//            FileUtils.setAttachmentResponseHeader(response, realFileName);
+//            FileUtils.writeBytes(filePath, response.getOutputStream());
+//            if (delete) {
+//                FileUtils.deleteFile(filePath);
+//            }
+//        } catch (Exception e) {
+//            log.error("下载文件失败", e);
+//        }
+//    }
+//
+//
+//    /**
+//     * 下载模板
+//     */
+//    @GetMapping("/importTemplate")
+//    @ApiOperation("获取下载文件名")
+//    public AjaxResult importTemplate() {
+//        ExcelUtil<UserOperateModel> util = new ExcelUtil<UserOperateModel>(UserOperateModel.class);
+//        return util.importTemplateExcel("用户数据");
+//    }
+//
+//    /*
+//     * 导入
+//     * */
+//    @ApiOperation("导入用户数据")
+//    @PostMapping("/importData")
+//    public AjaxResult importData(MultipartFile file, String type) throws Exception {
+//        ExcelUtil<UserOperateModel> util = new ExcelUtil<>(UserOperateModel.class);
+//        List<UserOperateModel> userList = util.importExcel(file.getInputStream());
+//        return AjaxResult.success(service.importUser(userList, type));
+//    }
+//
+//
+//}
+//
+//

+ 24 - 24
src/main/java/com/metro/controller/AddressController.java

@@ -1,24 +1,24 @@
-package com.metro.controller;
-
-import com.metro.service.AddressService;
-import io.swagger.annotations.Api;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * @ClassName: AddressController
- * @Description: TODO
- * @Author: ZS
- * @CreateName: lws
- * @Date 2022/3/9 11:07
- * ...
- */
-@RestController
-@RequestMapping("/address")
-@Api(tags = "地址库管理")
-public class AddressController {
-
-    @Autowired
-    private AddressService service;
-}
+//package com.metro.controller;
+//
+//import com.metro.service.AddressService;
+//import io.swagger.annotations.Api;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+///**
+// * @ClassName: AddressController
+// * @Description: TODO
+// * @Author: ZS
+// * @CreateName: lws
+// * @Date 2022/3/9 11:07
+// * ...
+// */
+//@RestController
+//@RequestMapping("/address")
+//@Api(tags = "地址库管理")
+//public class AddressController {
+//
+//    @Autowired
+//    private AddressService service;
+//}

+ 26 - 26
src/main/java/com/metro/controller/CanRecordController.java

@@ -1,26 +1,26 @@
-package com.metro.controller;
-
-import com.metro.service.CanRecordService;
-import io.swagger.annotations.Api;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * @ClassName: CanRecord
- * @Description: TODO
- * @Author: ZS
- * @CreateName: lws
- * @Date 2022/3/9 11:01
- * ...
- */
-@RestController
-@RequestMapping("/can/record")
-@Api(tags = "盘查记录")
-public class CanRecordController {
-
-    @Autowired
-    private CanRecordService service;
-    
-
-}
+//package com.metro.controller;
+//
+//import com.metro.service.CanRecordService;
+//import io.swagger.annotations.Api;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+///**
+// * @ClassName: CanRecord
+// * @Description: TODO
+// * @Author: ZS
+// * @CreateName: lws
+// * @Date 2022/3/9 11:01
+// * ...
+// */
+//@RestController
+//@RequestMapping("/can/record")
+//@Api(tags = "盘查记录")
+//public class CanRecordController {
+//
+//    @Autowired
+//    private CanRecordService service;
+//
+//
+//}

+ 25 - 14
src/main/java/com/metro/controller/CompanyController.java

@@ -1,15 +1,14 @@
 package com.metro.controller;
 
 import com.metro.baseRe.BaseResponse;
-import com.metro.entity.ro.company.SelectCompanyPageReq;
-import com.metro.entity.ro.company.SelectCompanyPageResp;
+import com.metro.entity.vo.BranchVO;
+import com.metro.entity.vo.CompanyVO;
 import com.metro.service.CompanyService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -22,20 +21,32 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/company")
-@Api(tags = "派出所管理(只有分局可以操作,其他账号无权限)")
+@Api(tags = "地铁地区管理")
 public class CompanyController {
 
     @Autowired
-    private CompanyService service;
+    private CompanyService companyService;
 
-    /**
-     * 公安查询
-     * @param req 查询条件
-     * @return 返回结果
-     */
-    @PostMapping("/select")
-    @ApiOperation("公安查询")
-    public BaseResponse<List<SelectCompanyPageResp>> selectCompany(@Valid @RequestBody SelectCompanyPageReq req){
-        return BaseResponse.ok(service.page(req));
+//    /**
+//     * 公安查询
+//     * @param req 查询条件
+//     * @return 返回结果
+//     */
+//    @PostMapping("/select")
+//    @ApiOperation("公安查询")
+//    public BaseResponse<List<SelectCompanyPageResp>> selectCompany(@Valid @RequestBody SelectCompanyPageReq req){
+//        return BaseResponse.ok(service.page(req));
+//    }
+
+    @PostMapping("/getCompanyList")
+    @ApiOperation("获取地铁列表")
+    public BaseResponse<List<CompanyVO>> getCompanyList(){
+        return BaseResponse.ok(companyService.getCompanyList());
+    }
+
+    @GetMapping("/getBranchList")
+    @ApiOperation("获取地区列表")
+    public BaseResponse<List<BranchVO>> getBranchList(@RequestParam("companyId") String companyId){
+        return BaseResponse.ok(companyService.getBranchList(companyId));
     }
 }

+ 52 - 0
src/main/java/com/metro/controller/JDevicesController.java

@@ -0,0 +1,52 @@
+package com.metro.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.metro.baseRe.BaseResponse;
+import com.metro.entity.dto.JDeviceUpdateDTO;
+import com.metro.entity.search.JDevicesSearch;
+import com.metro.entity.vo.JDevicesLessVO;
+import com.metro.entity.vo.JDevicesVO;
+import com.metro.service.JDevicesService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-04-26
+ */
+@RestController
+@Api(tags = "设备管理")
+@RequestMapping("/jDevices")
+public class JDevicesController {
+
+    @Autowired
+    private JDevicesService jDevicesService;
+
+    @PostMapping("/getPageList")
+    @ApiOperation("设备列表查询")
+    public BaseResponse<IPage<JDevicesVO>> getPageList(@RequestBody JDevicesSearch jDevicesSearch) {
+        return BaseResponse.ok(jDevicesService.getPageList(jDevicesSearch));
+    }
+    @GetMapping("/getList")
+    @ApiOperation("设备列表(id和deviceId)")
+    public BaseResponse<List<JDevicesLessVO>> getList() {
+        return BaseResponse.ok(jDevicesService.getList());
+    }
+
+
+
+    @PostMapping("/updateJDevice")
+    @ApiOperation("修改设备信息(地铁盘口)")
+    public BaseResponse<Boolean> updateJDevice(@RequestBody JDeviceUpdateDTO jDeviceUpdateDTO) {
+        return BaseResponse.ok(jDevicesService.updateJDevice(jDeviceUpdateDTO));
+    }
+}

+ 127 - 0
src/main/java/com/metro/controller/JPersonsController.java

@@ -0,0 +1,127 @@
+package com.metro.controller;
+
+
+import cn.hutool.core.codec.Base64;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.metro.baseRe.BaseResponse;
+import com.metro.entity.dto.JpersonDTO;
+import com.metro.entity.dto.JpersonEditDTO;
+import com.metro.entity.search.JPersonSearch;
+import com.metro.entity.vo.JPersonVO;
+import com.metro.restful.RestResponse;
+import com.metro.restful.RestResult;
+import com.metro.security.Authority;
+import com.metro.service.JPersonsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import net.coobird.thumbnailator.Thumbnails;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.imageio.ImageIO;
+import javax.validation.Valid;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-04-29
+ */
+@RestController
+@Api(tags = "登录管理")
+@RequestMapping("/jPersons")
+public class JPersonsController {
+
+
+    @Autowired
+    private JPersonsService jPersonsService;
+    /**
+     * 登录
+     * @return 是否成功
+     */
+    @ApiOperation("后台管理登录")
+    @PostMapping("/login")
+    @Authority(required = false)
+    public BaseResponse<JPersonVO> doLogin(@Valid @RequestBody JpersonDTO jpersonDTO) {
+        return BaseResponse.ok(jPersonsService.login(jpersonDTO));
+    }
+
+    @ApiOperation("后台管理退出登录")
+    @Authority(required = false)
+    @GetMapping("/doLogout")
+    public RestResult<Boolean> doLogout() {
+        return RestResponse.ok(jPersonsService.logout());
+    }
+
+    /**
+     * 获取当前用户信息
+     */
+    @ApiOperation("获取用户信息")
+    @GetMapping("/getUserInfo")
+    public RestResult<JPersonVO> getUserInfo() {
+        return RestResponse.ok(jPersonsService.getUserInfo());
+    }
+
+    /**
+     * 账号列表查询
+     */
+    @ApiOperation("账号列表查询")
+    @PostMapping("/getPageList")
+    @Authority
+    public BaseResponse<IPage<JPersonVO>> getPageList(@Valid @RequestBody(required = false) JPersonSearch jPersonSearch) {
+        return BaseResponse.ok(jPersonsService.getPageList(jPersonSearch));
+    }
+    /**
+     * 添加账号
+     */
+    @PostMapping("/insertOrUpdate")
+    @Authority
+    @ApiOperation("添加修改账号")
+    public BaseResponse<Boolean> add(@Valid @RequestBody JpersonEditDTO jpersonEditDTO) {
+        Integer insert = jPersonsService.insert(jpersonEditDTO);
+        if(insert == 1){
+            return BaseResponse.ok("添加成功");
+        }else{
+            return BaseResponse.fail("添加失败");
+        }
+    }
+
+     /**
+     * 删除账号
+     */
+    @GetMapping("/delete")
+    @Authority
+    @ApiOperation("删除账号")
+    public BaseResponse<Boolean> delete(@RequestParam("id")Integer id) {
+        Integer integer = jPersonsService.delete(id);
+        if(integer == 1){
+            return BaseResponse.ok("添加成功");
+        }else{
+            return BaseResponse.fail("添加失败");
+        }
+    }
+    //上传图片
+    @ApiOperation(value = "单图片上传接口", notes = "单图片上传接口")
+    @PostMapping(value = "/pictureLocal")
+    public BaseResponse<Object> pictureLocal(@RequestParam MultipartFile file) throws IOException {
+        InputStream inputStream = file.getInputStream();
+
+        BufferedImage image = Thumbnails.of(inputStream).size(400, 300).asBufferedImage();//变为400*300,遵循原图比例缩或放到400*某个高度
+        //输出流
+        ByteArrayOutputStream stream = new ByteArrayOutputStream();
+        ImageIO.write(image, "jpg", stream);
+        Object base64 = Base64.encode(stream.toByteArray());
+
+//        BASE64Encoder base64Encoder =new BASE64Encoder();
+//        String base64EncoderImg = file.getOriginalFilename()+","+ base64Encoder.encode(file.getBytes());
+//        Object substring = base64EncoderImg.substring(base64EncoderImg.indexOf(",")+1);
+        return BaseResponse.ok(base64);
+    }
+}

+ 34 - 15
src/main/java/com/metro/controller/PassreCordsController.java

@@ -2,12 +2,11 @@ package com.metro.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.metro.baseRe.BaseResponse;
-import com.metro.entity.ro.Police.InsertPoliceReq;
-import com.metro.entity.ro.Police.InsertPoliceResp;
-import com.metro.entity.ro.account.InsertAccountReq;
-import com.metro.entity.ro.account.InsertAccountResp;
-import com.metro.entity.ro.passrecords.*;
-import com.metro.security.Authority;
+import com.metro.entity.ro.passrecords.SelectPassreCordsPageListReq;
+import com.metro.entity.ro.passrecords.SelectPassreCordsPageListResp;
+import com.metro.entity.search.WarningSearch;
+import com.metro.entity.vo.WarningDetailOneVO;
+import com.metro.entity.vo.WarningVO;
 import com.metro.service.PassreCordsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -15,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * @ClassName: PassreCordsController
@@ -39,20 +39,39 @@ public class PassreCordsController {
      */
     @PostMapping("/page")
     @ApiOperation("盘查记录")
-    public BaseResponse<IPage<SelectPassreCordsPageListResp>> page (@Valid @RequestBody SelectPassreCordsPageListReq req) {
+    public BaseResponse<IPage<SelectPassreCordsPageListResp>> page(@Valid @RequestBody SelectPassreCordsPageListReq req) {
         return BaseResponse.ok(passreCordsservice.page(req));
     }
-    @PostMapping("/delete")
-    @ApiOperation("删除盘查记录")
-    public BaseResponse<DeletePassreCordsResq> delete(@Valid @RequestBody DeletePassreCordsReq req) {
-        return BaseResponse.ok(passreCordsservice.delete(req));
+
+    @PostMapping("/warningPageList")
+    @ApiOperation("预警人员列表")
+    public BaseResponse<IPage<WarningVO>> warningPageList(@Valid @RequestBody WarningSearch warningSearch) {
+        return BaseResponse.ok(passreCordsservice.warningPageList(warningSearch));
     }
 
-    @PostMapping("/selectById")
-    @ApiOperation("查看详情")
-    public BaseResponse<DetialPassreCordsResq> selectById(@Valid @RequestBody DetailPassreCordsReq req) {
-        return BaseResponse.ok(passreCordsservice.selectById(req));
+    @GetMapping("/warningDeatilList")
+    @ApiOperation("预警详情列表")
+    public BaseResponse<List<SelectPassreCordsPageListResp>> warningDeatilList(@RequestParam("cardId") String cardId) {
+        return BaseResponse.ok(passreCordsservice.warningDeatilList(cardId));
+    }
+    @GetMapping("/warningDeatil")
+    @ApiOperation("单个预警详细信息")
+    public BaseResponse<WarningDetailOneVO> warningDeatil(@RequestParam("id") Integer id) {
+        return BaseResponse.ok(passreCordsservice.warningDeatil(id));
     }
 
 
+//    @PostMapping("/delete")
+//    @ApiOperation("删除盘查记录")
+//    public BaseResponse<DeletePassreCordsResq> delete(@Valid @RequestBody DeletePassreCordsReq req) {
+//        return BaseResponse.ok(passreCordsservice.delete(req));
+//    }
+//
+//    @PostMapping("/selectById")
+//    @ApiOperation("查看详情")
+//    public BaseResponse<DetialPassreCordsResq> selectById(@Valid @RequestBody DetailPassreCordsReq req) {
+//        return BaseResponse.ok(passreCordsservice.selectById(req));
+//    }
+
+
 }

+ 95 - 95
src/main/java/com/metro/controller/PolicController.java

@@ -1,95 +1,95 @@
-package com.metro.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.metro.baseRe.BaseResponse;
-import com.metro.entity.ro.Police.*;
-
-import com.metro.entity.ro.account.*;
-import com.metro.security.Authority;
-import com.metro.service.PoliceService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * @ClassName: PolicController
- * @Description: TODO
- * @Author: ZS
- * @CreateName: lws
- * @Date 2022/3/18 0:53
- * ...
- */
-@RestController
-@RequestMapping("/police")
-@Api(tags = "派出所管理(只有分局可以操作,其他账号无权限)")
-public class PolicController {
-    @Autowired
-    private PoliceService service;
-
-    /**
-     * @param req
-     * @return
-     */
-    @PostMapping("/page")
-    @ApiOperation("派出所列表查询")
-    public BaseResponse<IPage<SelectPolicePageResp>> page(@Valid @RequestBody(required = false) SelectPolicePageReq req) {
-        return BaseResponse.ok(service.page(req));
-    }
-
-    /**
-     * 派出所下拉查询(分局、派出所)
-     * @param req
-     * @return
-     */
-    @PostMapping("/selectLevel")
-    @ApiOperation("派出所查询(分局、派出所)")
-    public BaseResponse<List<SelectPoliceLevelResp>> selectLevel(@Valid @RequestBody(required = false) SelectPoliceLevelReq req) {
-        return BaseResponse.ok(service.selectLevel(req));
-    }
-
-    /**
-     * @param req
-     * @return
-     */
-    @PostMapping("/add")
-    @Authority
-    @ApiOperation("添加账号")
-    public BaseResponse<InsertPoliceResp> add(@Valid @RequestBody InsertPoliceReq req) {
-        return BaseResponse.ok(service.add(req));
-    }
-
-    /**
-     * 账号详情
-     *
-     * @param req 主键
-     * @return 账号详情
-     */
-    @PostMapping("/detail")
-    @Authority
-    @ApiOperation("帐号详情")
-    public BaseResponse<DetailPoliceResp> detail(@Valid @RequestBody DetailPoliceReq req) {
-        return BaseResponse.ok(service.detail(req));
-    }
-
-    @PostMapping("/update")
-    @Authority
-    @ApiOperation("修改账号")
-    public BaseResponse<UpdatePoliceResp> update(@Valid @RequestBody UpdatePoliceReq req) {
-        return BaseResponse.ok(service.update(req));
-    }
-
-    @PostMapping("/delete")
-    @Authority
-    @ApiOperation("删除账号")
-    public BaseResponse<DeleteAccountResp> delete(@Valid @RequestBody DeleteAccountReq req) {
-        return BaseResponse.ok(service.delete(req));
-    }
-
-}
+//package com.metro.controller;
+//
+//import com.baomidou.mybatisplus.core.metadata.IPage;
+//import com.metro.baseRe.BaseResponse;
+//import com.metro.entity.ro.Police.*;
+//
+//import com.metro.entity.ro.account.*;
+//import com.metro.security.Authority;
+//import com.metro.service.PoliceService;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.PostMapping;
+//import org.springframework.web.bind.annotation.RequestBody;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import javax.validation.Valid;
+//import java.util.List;
+//
+///**
+// * @ClassName: PolicController
+// * @Description: TODO
+// * @Author: ZS
+// * @CreateName: lws
+// * @Date 2022/3/18 0:53
+// * ...
+// */
+//@RestController
+//@RequestMapping("/police")
+//@Api(tags = "派出所管理(只有分局可以操作,其他账号无权限)")
+//public class PolicController {
+//    @Autowired
+//    private PoliceService service;
+//
+//    /**
+//     * @param req
+//     * @return
+//     */
+//    @PostMapping("/page")
+//    @ApiOperation("派出所列表查询")
+//    public BaseResponse<IPage<SelectPolicePageResp>> page(@Valid @RequestBody(required = false) SelectPolicePageReq req) {
+//        return BaseResponse.ok(service.page(req));
+//    }
+//
+//    /**
+//     * 派出所下拉查询(分局、派出所)
+//     * @param req
+//     * @return
+//     */
+//    @PostMapping("/selectLevel")
+//    @ApiOperation("派出所查询(分局、派出所)")
+//    public BaseResponse<List<SelectPoliceLevelResp>> selectLevel(@Valid @RequestBody(required = false) SelectPoliceLevelReq req) {
+//        return BaseResponse.ok(service.selectLevel(req));
+//    }
+//
+//    /**
+//     * @param req
+//     * @return
+//     */
+//    @PostMapping("/add")
+//    @Authority
+//    @ApiOperation("添加账号")
+//    public BaseResponse<InsertPoliceResp> add(@Valid @RequestBody InsertPoliceReq req) {
+//        return BaseResponse.ok(service.add(req));
+//    }
+//
+//    /**
+//     * 账号详情
+//     *
+//     * @param req 主键
+//     * @return 账号详情
+//     */
+//    @PostMapping("/detail")
+//    @Authority
+//    @ApiOperation("帐号详情")
+//    public BaseResponse<DetailPoliceResp> detail(@Valid @RequestBody DetailPoliceReq req) {
+//        return BaseResponse.ok(service.detail(req));
+//    }
+//
+//    @PostMapping("/update")
+//    @Authority
+//    @ApiOperation("修改账号")
+//    public BaseResponse<UpdatePoliceResp> update(@Valid @RequestBody UpdatePoliceReq req) {
+//        return BaseResponse.ok(service.update(req));
+//    }
+//
+//    @PostMapping("/delete")
+//    @Authority
+//    @ApiOperation("删除账号")
+//    public BaseResponse<DeleteAccountResp> delete(@Valid @RequestBody DeleteAccountReq req) {
+//        return BaseResponse.ok(service.delete(req));
+//    }
+//
+//}

+ 21 - 0
src/main/java/com/metro/entity/dto/JDeviceUpdateDTO.java

@@ -0,0 +1,21 @@
+package com.metro.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+
+/**
+ *
+ */
+@Data
+public class JDeviceUpdateDTO implements Serializable {
+
+    @ApiModelProperty(value = "设备Id")
+    @NotEmpty(message = "设备Id不能为空")
+    private Integer id;
+    @ApiModelProperty(value = "地铁盘口Id")
+    @NotEmpty(message = "地铁盘口Id不能为空!")
+    private Integer metroId;
+}

+ 26 - 0
src/main/java/com/metro/entity/dto/JpersonDTO.java

@@ -0,0 +1,26 @@
+package com.metro.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+
+/**
+ * @ClassName: RegisterAccountReq
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/14 21:11
+ * ...
+ */
+@Data
+public class JpersonDTO implements Serializable {
+
+    @ApiModelProperty(value = "账号名称")
+    @NotEmpty(message = "账号不能为空!")
+    private String cardId;
+    @ApiModelProperty(value = "密码")
+    @NotEmpty(message = "密码不能为空!")
+    private String password;
+}

+ 41 - 0
src/main/java/com/metro/entity/dto/JpersonEditDTO.java

@@ -0,0 +1,41 @@
+package com.metro.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+
+/**
+ *
+ */
+@Data
+public class JpersonEditDTO implements Serializable {
+
+    private Integer id;
+
+    @ApiModelProperty(value = "账号名称")
+    @NotEmpty(message = "账号不能为空!")
+    private String cardId;
+
+    @ApiModelProperty(value = "管理员姓名")
+    private String xm;
+
+    @ApiModelProperty(value = "密码")
+    @NotEmpty(message = "密码不能为空!")
+    private String passwd;
+
+    @ApiModelProperty(value = "手机号 可空")
+    private String phone;
+
+    @ApiModelProperty(value = "填入部门Id")
+    private String companyId;
+
+    @ApiModelProperty("填入派出所Id")
+    private String branchId;
+
+    @ApiModelProperty(value = "照片")
+    private String photo;
+
+
+}

+ 102 - 0
src/main/java/com/metro/entity/po/JDevices.java

@@ -0,0 +1,102 @@
+package com.metro.entity.po;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-04-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("j_devices")
+public class JDevices implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("device_id")
+    private String deviceId;
+
+    @TableField("full_id")
+    private String fullId;
+
+    @TableField("device_type")
+    private String deviceType;
+
+    @TableField("app_version")
+    private String appVersion;
+
+    @TableField("xzqh")
+    private String xzqh;
+
+    @TableField("area")
+    private String area;
+
+    @TableField("address")
+    private String address;
+
+    @TableField("wxid")
+    private String wxid;
+
+    @TableField("company_id")
+    private String companyId;
+
+    @TableField("branch_id")
+    private String branchId;
+
+    @TableField("contact_people")
+    private String contactPeople;
+
+    @TableField("contact_phone")
+    private String contactPhone;
+
+    @TableField("entry")
+    private String entry;
+
+    @TableField("use_scene")
+    private String useScene;
+
+    @TableField("ip")
+    private String ip;
+
+    @TableField("state")
+    private Integer state;
+
+    @TableField("enabled")
+    private Integer enabled;
+
+    @TableField("licensed")
+    private Integer licensed;
+
+    @TableField("license_start")
+    private LocalDate licenseStart;
+
+    @TableField("license_end")
+    private LocalDate licenseEnd;
+
+    @TableField("first_boot")
+    private LocalDateTime firstBoot;
+
+    @TableField("license_data")
+    private String licenseData;
+
+    @TableField("custom_device_id")
+    private String customDeviceId;
+
+
+}

+ 42 - 0
src/main/java/com/metro/entity/po/JDevicesMetro.java

@@ -0,0 +1,42 @@
+package com.metro.entity.po;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+/**
+ * <p>
+ * 设备与盘口关系表
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-05-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("j_devices_metro")
+public class JDevicesMetro implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备id
+     */
+    @TableField("devices_id")
+    private Integer devicesId;
+
+    /**
+     * 盘口id
+     */
+    @TableField("metro_id")
+    private Integer metroId;
+
+}

+ 104 - 0
src/main/java/com/metro/entity/po/JPersons.java

@@ -0,0 +1,104 @@
+package com.metro.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-04-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("j_persons")
+public class JPersons implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private String companyId;
+
+    @TableField("branch_id")
+    private String branchId;
+
+    @TableField("card_id")
+    private String cardId;
+
+    @TableField("xm")
+    private String xm;
+
+    @TableField("xb")
+    private String xb;
+    /*
+    * 照片 base64
+    * */
+    @TableField("photo")
+    private String photo;
+
+    @TableField("is_admin")
+    private Integer isAdmin;
+
+    @TableField("bz")
+    private String bz;
+
+    @TableField("reg_time")
+    private Date regTime;
+
+    @TableField("update_timestamp")
+    private Long updateTimestamp;
+
+    @TableField("flag")
+    private Integer flag;
+
+    @TableField("account")
+    private String account;
+
+    @TableField("passwd")
+    private String passwd;
+
+    @TableField("area_id")
+    private Integer areaId;
+
+    @TableField("phone")
+    private String phone;
+
+    /**
+     * 是否删除
+     */
+    @TableField("is_delete")
+    private Integer isDelete;
+
+    /**
+     * 有效期始(时间戳)
+     */
+    @TableField("valid_start_time")
+    private Long validStartTime;
+
+    /**
+     * 有效期结束(时间戳)
+     */
+    @TableField("valid_end_time")
+    private Long validEndTime;
+
+    /**
+     * 人脸特征
+     */
+    @TableField("feature")
+    private String feature;
+
+}

+ 1 - 2
src/main/java/com/metro/entity/po/PassreCords.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
-import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -79,7 +78,7 @@ public class PassreCords {
     /**
      * 警示级别  0前科 1警示人员 2正常
      */
-    private String pass;
+    private Integer pass;
 
     /**
      * 警示级别  前科 警示人员 正常

+ 4 - 10
src/main/java/com/metro/entity/ro/account/InsertAccountReq.java

@@ -1,14 +1,9 @@
 package com.metro.entity.ro.account;
 
-import com.metro.enums.vaildated.IsPhone;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.sound.sampled.Mixer;
-import javax.validation.constraints.*;
 import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
 
 /**
  * @ClassName: InsertAccountReq
@@ -39,14 +34,13 @@ public class InsertAccountReq implements Serializable {
     @ApiModelProperty(value = "详细地址")
     private String address;
 
-    @ApiModelProperty(value = "部门Id")
-    @NotEmpty(message = "部门Id不能为空")
+    @ApiModelProperty(value = "type = 1 填入部门Id")
     private String companyId;
 
-    @ApiModelProperty("用户类型")
-    private Integer type;
+    @ApiModelProperty("type =2 填入派出所Id")
+    private String branchId;
 
-    @ApiModelProperty("警号Id")
+    @ApiModelProperty("type = 3 填入警号Id")
     private String policeId;
 
 }

+ 6 - 3
src/main/java/com/metro/entity/ro/account/SelectAccountPageResp.java

@@ -1,7 +1,5 @@
 package com.metro.entity.ro.account;
 
-import com.alibaba.fastjson.annotation.JSONField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.metro.enums.UserEnums;
 import io.swagger.annotations.ApiModel;
@@ -11,7 +9,6 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 
 /**
  * @ClassName: AccountCompanyPageResp
@@ -38,9 +35,15 @@ public class SelectAccountPageResp implements Serializable {
     @ApiModelProperty(value = "部门Id")
     private String companyId;
 
+    @ApiModelProperty(value = "部门名")
+    private String companyName;
+
     @ApiModelProperty(value = "派出所Id")
     private String branchId;
 
+    @ApiModelProperty(value = "派出所名")
+    private String branchName;
+
     /**
      * 管理员手机号
      */

+ 11 - 6
src/main/java/com/metro/entity/ro/passrecords/SelectPassreCordsPageListResp.java

@@ -1,13 +1,12 @@
 package com.metro.entity.ro.passrecords;
 
-import com.metro.enums.UserEnums;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -23,18 +22,27 @@ import java.util.Date;
 @Accessors(chain = true)
 public class SelectPassreCordsPageListResp implements Serializable {
 
-    private int id;
+    private Integer id;
+
     @ApiModelProperty(value = "姓名")
     private String xm;
 
+    @ApiModelProperty(value = "性别")
+    private String xb;
+
     @ApiModelProperty(value = "身份证号")
     private String cardId;
 
     @ApiModelProperty(value = "现场照片")
     private String scenePhoto;
+
     @ApiModelProperty(value = "手机号")
     private String phone;
 
+    @ApiModelProperty("通行时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date passTime;
+
     @ApiModelProperty(value = "住址")
     private String cardAddr;
 
@@ -46,9 +54,6 @@ public class SelectPassreCordsPageListResp implements Serializable {
 
     @ApiModelProperty(value = "验证方式中文")
     private String passName;
-    private String getPassName(){
-        return UserEnums.passEnums.getStatusName(this.pass);
-    }
 
     @ApiModelProperty(value = "人员类型描述")
     private String kind;

+ 31 - 0
src/main/java/com/metro/entity/search/JDevicesSearch.java

@@ -0,0 +1,31 @@
+package com.metro.entity.search;
+
+import com.metro.baseRe.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName: AccountCompanyPageReq
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/10 10:11
+ * ...
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel
+public class JDevicesSearch extends BaseEntity implements Serializable {
+
+
+    @ApiModelProperty(value = "设备编号")
+    private String deviceId;
+
+    @ApiModelProperty(value = "设备类型")
+    private String deviceType;
+
+}

+ 38 - 0
src/main/java/com/metro/entity/search/JPersonSearch.java

@@ -0,0 +1,38 @@
+package com.metro.entity.search;
+
+import com.metro.baseRe.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName: AccountCompanyPageReq
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/10 10:11
+ * ...
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel
+public class JPersonSearch extends BaseEntity implements Serializable {
+
+    @ApiModelProperty(value = "管理员姓名")
+    private String xm;
+
+    @ApiModelProperty(value = "管理员手机号")
+    private String phone;
+
+    @ApiModelProperty(hidden = true)
+    private String companyId;
+
+    @ApiModelProperty(hidden = true)
+    private String branchId;
+
+    @ApiModelProperty(hidden = true)
+    private Integer type;
+}

+ 32 - 0
src/main/java/com/metro/entity/search/WarningSearch.java

@@ -0,0 +1,32 @@
+package com.metro.entity.search;
+
+import com.metro.baseRe.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel
+public class WarningSearch extends BaseEntity implements Serializable {
+
+    @ApiModelProperty(value = "预警人员姓名")
+    private String xm;
+
+    @ApiModelProperty(value = "身份证号")
+    private String cardId;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(hidden = true)
+    private String companyId;
+
+    @ApiModelProperty(hidden = true)
+    private String branchId;
+}

+ 26 - 0
src/main/java/com/metro/entity/vo/BranchVO.java

@@ -0,0 +1,26 @@
+package com.metro.entity.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName: Companys
+ * @Description: TODO
+ * @Author: lws
+ * @CreateName: lws
+ * @Date 2022/3/8 10:50
+ * ...
+ */
+@Data
+@ApiModel
+public class BranchVO{
+
+
+    @ApiModelProperty("地区id")
+    private String BranchId;
+
+    @ApiModelProperty("地区name")
+    private String BranchName;
+
+}

+ 26 - 0
src/main/java/com/metro/entity/vo/CompanyVO.java

@@ -0,0 +1,26 @@
+package com.metro.entity.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName: Companys
+ * @Description: TODO
+ * @Author: lws
+ * @CreateName: lws
+ * @Date 2022/3/8 10:50
+ * ...
+ */
+@Data
+@ApiModel
+public class CompanyVO{
+
+
+    @ApiModelProperty("地铁id")
+    private String companyId;
+
+    @ApiModelProperty("地铁name")
+    private String companyName;
+
+}

+ 27 - 0
src/main/java/com/metro/entity/vo/JDevicesLessVO.java

@@ -0,0 +1,27 @@
+package com.metro.entity.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @ClassName: AccountCompanyPageReq
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/10 10:11
+ * ...
+ */
+@Data
+@ApiModel
+@Accessors(chain = true)
+public class JDevicesLessVO {
+
+    @ApiModelProperty("id")
+    private Long id;
+
+    @ApiModelProperty("设备编号")
+    private String deviceId;
+
+}

+ 90 - 0
src/main/java/com/metro/entity/vo/JDevicesVO.java

@@ -0,0 +1,90 @@
+package com.metro.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * @ClassName: AccountCompanyPageReq
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/10 10:11
+ * ...
+ */
+@Data
+@ApiModel
+@Accessors(chain = true)
+public class JDevicesVO{
+
+    @ApiModelProperty("id")
+    private Long id;
+
+    @ApiModelProperty("设备编号")
+    private String deviceId;
+
+    @ApiModelProperty("设备类型")
+    private String deviceType;
+
+    @ApiModelProperty("app版本")
+    private String appVersion;
+
+    @ApiModelProperty("区域")
+    private String area;
+
+    @ApiModelProperty("地址")
+    private String address;
+
+    @ApiModelProperty("地铁id")
+    private String companyId;
+
+    @ApiModelProperty("区域id")
+    private String branchId;
+
+    @ApiModelProperty("地铁名称")
+    private String companyName;
+
+    @ApiModelProperty("区域名称")
+    private String branchName;
+
+    @ApiModelProperty("联系人")
+    private String contactPeople;
+
+    @ApiModelProperty("联系人手机号")
+    private String contactPhone;
+
+    @ApiModelProperty("IP地址")
+    private String ip;
+
+    @ApiModelProperty("是否允许使用 1.允许 0不允许")
+    private Integer enabled;
+
+    @ApiModelProperty("是否授权 1.授权 0未授权")
+    private Integer licensed;
+
+    @ApiModelProperty("创建时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date firstBoot;
+
+    @ApiModelProperty("线号Id")
+    private Integer lineId;
+
+    @ApiModelProperty("线号名称")
+    private String lineName;
+
+    @ApiModelProperty("站点Id")
+    private Integer siteId;
+
+    @ApiModelProperty("站点名称")
+    private String siteName;
+
+    @ApiModelProperty("盘口Id")
+    private Integer metroId;
+
+    @ApiModelProperty("盘口名称")
+    private String metroName;
+}

+ 57 - 0
src/main/java/com/metro/entity/vo/JPersonVO.java

@@ -0,0 +1,57 @@
+package com.metro.entity.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @ClassName: RegisterAccountResp
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/14 21:11
+ * ...
+ */
+@ApiModel("注册")
+@Data
+@Accessors(chain = true)
+public class JPersonVO {
+
+    @ApiModelProperty(value = "id")
+    private Integer id;
+
+    @ApiModelProperty(value = "账号名称")
+    private String cardId;
+
+    @ApiModelProperty(value = "管理员姓名")
+    private String xm;
+
+    @ApiModelProperty(value = "base64照片")
+    private String photo;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty("用户类型 1-admin 2-公安局 3-派出所")
+    private Integer type;
+
+    @ApiModelProperty("分局Id")
+    private String companyId;
+
+    @ApiModelProperty("分局Id")
+    private String companyName;
+
+    @ApiModelProperty("派出所Id")
+    private String branchId;
+
+    @ApiModelProperty("派出所名称")
+    private String branchName;
+
+    @ApiModelProperty(value = "token")
+    private String token;
+
+    @ApiModelProperty("是否是后台管理员账号 1-是   0-不是")
+    private Integer isAdmin;
+
+}

+ 38 - 0
src/main/java/com/metro/entity/vo/MetroVO.java

@@ -0,0 +1,38 @@
+package com.metro.entity.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName: Metro
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/9 1:24
+ * ...
+ */
+@Data
+@ApiModel
+@Accessors(chain = true)
+public class MetroVO implements Serializable {
+
+
+    @ApiModelProperty("线号Id")
+    private Integer lineId;
+    @ApiModelProperty("线号名称")
+    private String lineName;
+    @ApiModelProperty("站点Id")
+    private Integer siteId;
+    @ApiModelProperty("站点名称")
+    private String siteName;
+    @ApiModelProperty("盘口Id")
+    private Integer metroId;
+    @ApiModelProperty("盘口名称")
+    private String metroName;
+
+
+}

+ 61 - 0
src/main/java/com/metro/entity/vo/WarningDetailOneVO.java

@@ -0,0 +1,61 @@
+package com.metro.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName: Companys
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/8 10:50
+ * ...
+ */
+@Data
+@ApiModel
+@Accessors(chain = true)
+public class WarningDetailOneVO implements Serializable {
+
+    @ApiModelProperty(value = "姓名")
+    private String xm;
+
+    @ApiModelProperty(value = "性别")
+    private String xb;
+
+    @ApiModelProperty(value = "身份证号")
+    private String cardId;
+
+    @ApiModelProperty("抓拍时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date passTime;
+
+    @ApiModelProperty("有效期")
+    private String validRange;
+
+    @ApiModelProperty("家庭住址")
+    private String cardAddr;
+
+    @ApiModelProperty("设备号")
+    private String deviceId;
+
+    @ApiModelProperty("盘口号")
+    private String metroName;
+
+    @ApiModelProperty("现场照片")
+    private String scenePhoto;
+
+    @ApiModelProperty(value = "所属分局名")
+    private String companyName;
+
+    @ApiModelProperty(value = "所属派出所名")
+    private String branchName;
+
+    @ApiModelProperty("预警信息")
+    private String warningMsg;
+}

+ 43 - 0
src/main/java/com/metro/entity/vo/WarningDetailVO.java

@@ -0,0 +1,43 @@
+package com.metro.entity.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName: Companys
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/8 10:50
+ * ...
+ */
+@Data
+@ApiModel
+@Accessors(chain = true)
+public class WarningDetailVO implements Serializable {
+
+    @ApiModelProperty(value = "姓名")
+    private String xm;
+
+    @ApiModelProperty(value = "身份证号")
+    private String cardId;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "所属派出所")
+    private String companyId;
+
+    @ApiModelProperty(value = "所属派出所名")
+    private String companyName;
+
+    @ApiModelProperty(value = "所属派分局")
+    private String branchId;
+
+    @ApiModelProperty(value = "所属派分局名")
+    private String branchName;
+}

+ 43 - 0
src/main/java/com/metro/entity/vo/WarningVO.java

@@ -0,0 +1,43 @@
+package com.metro.entity.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName: Companys
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/8 10:50
+ * ...
+ */
+@Data
+@ApiModel
+@Accessors(chain = true)
+public class WarningVO implements Serializable {
+
+    @ApiModelProperty(value = "姓名")
+    private String xm;
+
+    @ApiModelProperty(value = "身份证号")
+    private String cardId;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "所属派出所")
+    private String companyId;
+
+    @ApiModelProperty(value = "所属派出所名")
+    private String companyName;
+
+    @ApiModelProperty(value = "所属派分局")
+    private String branchId;
+
+    @ApiModelProperty(value = "所属派分局名")
+    private String branchName;
+}

+ 18 - 1
src/main/java/com/metro/mapper/CompanysMapper.java

@@ -2,6 +2,12 @@ package com.metro.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.metro.entity.po.Company;
+import com.metro.entity.vo.BranchVO;
+import com.metro.entity.vo.CompanyVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Set;
 
 /**
  * @ClassName: CompanysMapper
@@ -12,5 +18,16 @@ import com.metro.entity.po.Company;
  * ...
  */
 public interface CompanysMapper extends BaseMapper<Company> {
-
+    /*获取地铁列表*/
+    List<CompanyVO> getCompanyList();
+    /*根据地铁id获取地区列表*/
+    List<BranchVO> getBranchList(String companyId);
+    /*根据set查询去重后的对应company数据*/
+    List<Company> selectByCompanySet(Set<String> companySet);
+    /*根据set查询去重后的对应barnch数据*/
+    List<Company> selectByBarnchSet(Set<String> barnchSet);
+    /*根据companyId和获取company数据*/
+    CompanyVO getCompanyByCompanyId(@Param("companyId") String companyId);
+    /*根据companyId和获取company数据*/
+    BranchVO getCompanyByCompanyIdandBranchId(@Param("companyId") String companyId,@Param("branchId") String branchId);
 }

+ 22 - 0
src/main/java/com/metro/mapper/JDevicesMapper.java

@@ -0,0 +1,22 @@
+package com.metro.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.metro.entity.po.JDevices;
+import com.metro.entity.search.JDevicesSearch;
+import com.metro.entity.vo.JDevicesVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-04-26
+ */
+public interface JDevicesMapper extends BaseMapper<JDevices> {
+
+    IPage<JDevicesVO> getPageList(Page<JDevicesVO> page, @Param("jDevicesSearch")JDevicesSearch jDevicesSearch);
+}

+ 16 - 0
src/main/java/com/metro/mapper/JDevicesMetroMapper.java

@@ -0,0 +1,16 @@
+package com.metro.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.metro.entity.po.JDevicesMetro;
+
+/**
+ * <p>
+ * 设备与盘口关系表 Mapper 接口
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-05-06
+ */
+public interface JDevicesMetroMapper extends BaseMapper<JDevicesMetro> {
+
+}

+ 22 - 0
src/main/java/com/metro/mapper/JPersonsMapper.java

@@ -0,0 +1,22 @@
+package com.metro.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.metro.entity.po.JPersons;
+import com.metro.entity.search.JPersonSearch;
+import com.metro.entity.vo.JPersonVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-04-29
+ */
+public interface JPersonsMapper extends BaseMapper<JPersons> {
+
+    IPage<JPersonVO> getPageList(Page<JPersonVO> page, @Param("jPersonSearch")JPersonSearch jPersonSearch);
+}

+ 16 - 0
src/main/java/com/metro/mapper/MetroMapper.java

@@ -2,6 +2,10 @@ package com.metro.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.metro.entity.po.Metro;
+import com.metro.entity.vo.MetroVO;
+
+import java.util.List;
+import java.util.Set;
 
 /**
  * @ClassName: MetroMapper
@@ -12,5 +16,17 @@ import com.metro.entity.po.Metro;
  * ...
  */
 public interface MetroMapper extends BaseMapper<Metro> {
+    /*
+     * @创建者  WXG
+     * @描述   根据盘查口id查询到对应 盘查口名称以及对应 线号以及站口
+     * @时间  2022/4/27 17:30
+     **/
+    List<MetroVO> selectByMetroIdSet(Set<Integer> metroIdSet);
 
+    /*
+     * @创建者  WXG
+     * @描述   根据盘查口id查询到对应 盘查口名称以及对应 线号以及站口
+     * @时间  2022/4/27 17:30
+     **/
+    MetroVO selectByMetroId(Integer metroId);
 }

+ 7 - 0
src/main/java/com/metro/mapper/PassreCordsMapper.java

@@ -1,7 +1,12 @@
 package com.metro.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.metro.entity.po.PassreCords;
+import com.metro.entity.search.WarningSearch;
+import com.metro.entity.vo.WarningVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @ClassName: PassreCordsMapper
@@ -12,4 +17,6 @@ import com.metro.entity.po.PassreCords;
  * ...
  */
 public interface PassreCordsMapper  extends BaseMapper<PassreCords> {
+
+    IPage<WarningVO> warningPageList(Page<WarningVO> page, @Param("warningSearch")WarningSearch warningSearch);
 }

+ 8 - 1
src/main/java/com/metro/service/AccountService.java

@@ -3,7 +3,6 @@ package com.metro.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.metro.baseRe.BaseResponse;
 import com.metro.entity.model.UserOperateModel;
-import com.metro.entity.po.Account;
 import com.metro.entity.ro.account.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -33,6 +32,14 @@ public interface AccountService {
      *
      * @param req 账号信息
      * @return 影响行数
+     * 说明:
+     *  每一级账号只能创建他下面一级的账号
+     *  type = 1  创建 type = 2的账号以此类推
+     *  type = 2 有companyId
+     *  type 3 4 拥有companyId 和branchId
+     *
+     *
+     *
      */
     InsertAccountResp add(InsertAccountReq req);
 

+ 27 - 0
src/main/java/com/metro/service/CompanyService.java

@@ -1,9 +1,15 @@
 package com.metro.service;
 
+import com.metro.entity.po.Company;
 import com.metro.entity.ro.company.SelectCompanyPageReq;
 import com.metro.entity.ro.company.SelectCompanyPageResp;
+import com.metro.entity.vo.BranchVO;
+import com.metro.entity.vo.CompanyVO;
 
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
 
 /**
  * @ClassName: CompanysService
@@ -21,5 +27,26 @@ public interface CompanyService {
      * @return 返回结果
      */
     List<SelectCompanyPageResp> page(SelectCompanyPageReq req);
+    /*
+    * 获取所有的地铁列表
+    * */
+    List<CompanyVO> getCompanyList();
+    /*
+     * 获取所有的地区列表
+     * */
+    List<BranchVO> getBranchList(String companyId);
+
+    /*
+     * @创建者  WXG
+     * @描述  抽取Company数据通过companyId
+     * @时间  2022/5/9 12:49
+     **/
+    <T> Map<String, Company> getCompanyMapByList(List<T> list , Function<T,String> function);
+    /*
+     * @创建者  WXG
+     * @描述  抽取Company数据通过BranchId
+     * @时间  2022/5/9 12:49
+     **/
+    <T> Map<String, Company> getBranchMapByList(List<T> list , Function<T,String> function);
 
 }

+ 26 - 0
src/main/java/com/metro/service/JDevicesService.java

@@ -0,0 +1,26 @@
+package com.metro.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.metro.entity.dto.JDeviceUpdateDTO;
+import com.metro.entity.search.JDevicesSearch;
+import com.metro.entity.vo.JDevicesLessVO;
+import com.metro.entity.vo.JDevicesVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-05-06
+ */
+public interface JDevicesService {
+    /*设备列表分页*/
+    IPage<JDevicesVO> getPageList(JDevicesSearch jDevicesSearch);
+    /*修改设备的盘口*/
+    Boolean updateJDevice(JDeviceUpdateDTO jDeviceUpdateDTO);
+    /*设备列表(只查询设备编号)*/
+    List<JDevicesLessVO> getList();
+}

+ 30 - 0
src/main/java/com/metro/service/JPersonsService.java

@@ -0,0 +1,30 @@
+package com.metro.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.metro.entity.dto.JpersonDTO;
+import com.metro.entity.dto.JpersonEditDTO;
+import com.metro.entity.search.JPersonSearch;
+import com.metro.entity.vo.JPersonVO;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-05-06
+ */
+public interface JPersonsService{
+    /*账号登录*/
+    JPersonVO login(JpersonDTO jpersonDTO);
+    /*账号退出*/
+    Boolean logout();
+    /*获取账号信息*/
+    JPersonVO getUserInfo();
+    /*账号列表分页  只有 1 2级账号可以调用*/
+    IPage<JPersonVO> getPageList(JPersonSearch jPersonSearch);
+    /*添加账号*/
+    Integer insert(JpersonEditDTO jpersonEditDTO);
+    /*删除账号*/
+    Integer delete(Integer id);
+}

+ 23 - 3
src/main/java/com/metro/service/PassreCordsService.java

@@ -1,9 +1,12 @@
 package com.metro.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.metro.entity.ro.Police.InsertPoliceReq;
-import com.metro.entity.ro.Police.InsertPoliceResp;
 import com.metro.entity.ro.passrecords.*;
+import com.metro.entity.search.WarningSearch;
+import com.metro.entity.vo.WarningDetailOneVO;
+import com.metro.entity.vo.WarningVO;
+
+import java.util.List;
 
 /**
  * @ClassName: PassreCordsService
@@ -25,10 +28,27 @@ public interface PassreCordsService {
     * 删除
     * */
     DeletePassreCordsResq delete(DeletePassreCordsReq req);
-
     /*
     * 详情
     * */
     DetialPassreCordsResq selectById(DetailPassreCordsReq req);
 
+    /*
+     * @创建者  WXG
+     * @描述  预警人员列表
+     * @时间  2022/5/9 12:40
+     **/
+    IPage<WarningVO> warningPageList(WarningSearch warningSearch);
+    /*
+     * @创建者  WXG
+     * @描述  预警人员详情列表
+     * @时间  2022/5/9 12:40
+     **/
+    List<SelectPassreCordsPageListResp> warningDeatilList(String cardId);
+    /*
+     * @创建者  WXG
+     * @描述  预警人员详情带图返回
+     * @时间  2022/5/9 12:40
+     **/
+    WarningDetailOneVO warningDeatil(Integer id);
 }

+ 32 - 12
src/main/java/com/metro/service/impl/AccountServiceImpl.java

@@ -11,16 +11,14 @@ import com.metro.entity.model.UserOperateModel;
 import com.metro.entity.po.Account;
 import com.metro.entity.po.Area;
 import com.metro.entity.po.Company;
-import com.metro.entity.po.Police;
-import com.metro.entity.ro.Police.DetailPoliceResp;
 import com.metro.entity.ro.account.*;
 import com.metro.exception.BusinessException;
 import com.metro.mapper.AccountsMapper;
 import com.metro.mapper.AreaMapper;
-import com.metro.mapper.CompanysMapper;
 import com.metro.restful.ServiceException;
 import com.metro.security.JWTUtils;
 import com.metro.service.AccountService;
+import com.metro.service.CompanyService;
 import com.metro.service.base.BaseService;
 import com.metro.utils.*;
 import com.metro.utils.bean.BeanValidators;
@@ -39,7 +37,6 @@ import javax.validation.Validator;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -63,7 +60,7 @@ public class AccountServiceImpl extends BaseService implements AccountService {
     @Autowired
     protected Validator validator;
     @Autowired
-    private CompanysMapper companysMapper;
+    private CompanyService companyService;
 
     /**
      * 账号查询
@@ -80,21 +77,32 @@ public class AccountServiceImpl extends BaseService implements AccountService {
         Map<Integer, String> areaMap = areaMapper.selectList(new LambdaQueryWrapper<Area>().in(Area::getId, areaIdSet)).stream().collect(Collectors.toMap(Area::getId, p ->
                 Join.join("-", areaMapper.selectList(new LambdaQueryWrapper<Area>().in(Area::getId, StringUtils.split(p.getDistrictSqe(), ","))).stream().map(Area::getName).collect(Collectors.toList()))
         ));
+
+        Map<String, Company> companyMap = companyService.getCompanyMapByList(selectPage.getRecords(), Account::getCompanyId);
+        Map<String, Company> barnchMap = companyService.getBranchMapByList(selectPage.getRecords(),Account::getBranchId);
+
+
+        /*数据填入返回*/
         return selectPage.convert(p -> MapperManager.mapper(p, SelectAccountPageResp.class, q -> {
             q.setAreaDesc(areaMap.get(p.getAreaId()));
+            q.setCompanyName(companyMap.get(p.getCompanyId()).getCompanyName());
+            q.setBranchName(barnchMap.get(p.getCompanyId()+p.getBranchId()).getBranchName());
+            q.setCompanyName(companyMap.get(p.getCompanyId()) == null?"" : companyMap.get(p.getCompanyId()).getCompanyName());
+            q.setBranchName(barnchMap.get(p.getCompanyId()+p.getBranchId()) == null ? "" : barnchMap.get(p.getCompanyId()+p.getBranchId()).getBranchName());
         }));
     }
 
     // page wrapper 查询条件
     private LambdaQueryWrapper<Account> pageWrapper(SelectAccountPageReq req) {
+        Account accountInfo = getAccountInfo();
         LambdaQueryWrapper<Account> wrapper = new LambdaQueryWrapper<>();
         wrapper.like(StringUtils.isNotEmpty(req.getUserName()), Account::getUserName, req.getUserName());
         wrapper.eq(StringUtils.isNotEmpty(req.getPhone()), Account::getPhone, req.getPhone());
         wrapper.eq(Account::getIsDelete, UserConstant.NOT_DELETE);
         wrapper.orderByDesc(Account::getCreateTime);
-        if(getAccountInfo().getType()==2){
-            wrapper.gt(Account::getType, getAccountInfo().getType());
-        } else wrapper.eq(Account::getType, getAccountInfo().getType()+1);
+        if(accountInfo.getType()==2){
+            wrapper.gt(Account::getType, accountInfo.getType());
+        } else wrapper.eq(Account::getType, accountInfo.getType()+1);
 
         return wrapper;
     }
@@ -107,14 +115,26 @@ public class AccountServiceImpl extends BaseService implements AccountService {
      */
     @Override
     public InsertAccountResp add(InsertAccountReq req) {
+        Account accountInfo = getAccountInfo();
+        Integer type = accountInfo.getType();
+        if(type == 3){if(ObjectUtil.isEmpty(req.getPoliceId()))throw new BusinessException("请输入警号");}
+        else{req.setPoliceId(null);}
         if (!StringUtil.isChinese(req.getUserName())) throw new BusinessException(UserConstant.NOT_CHINESE_USERNAME);
         Account account = accountsMapper.selectOne(new LambdaQueryWrapper<Account>().eq(Account::getAccount, req.getAccount()).eq(Account::getIsDelete, UserConstant.NOT_DELETE));
         if (ObjectUtil.isNotEmpty(account)) throw new BusinessException(account.getAccount() + "已经存在!不能注册");
         return new InsertAccountResp().setCount(accountsMapper.insert(MapperManager.mapper(req, Account.class, p -> {
-            p.setPassword(MD5UtilNew.string2MD5(req.getPassword())).setCreateTime(LocalDateTime.now());
-            Integer type = getAccountInfo().getType();
-            if (type == BigDecimal.ROUND_CEILING) p.setType(req.getType());
-            else p.setType(type + 1);
+            p.setPassword(MD5UtilNew.string2MD5(req.getPassword()))
+                    .setCreateTime(LocalDateTime.now())
+                    .setType(type + 1)
+                    .setCreateId(accountInfo.getId());
+            if(type == 2){
+                p.setCompanyId(accountInfo.getCompanyId());
+            }
+            if(type == 3){
+                p.setCompanyId(accountInfo.getCompanyId());
+                p.setBranchId(accountInfo.getBranchId());
+            }
+
         })));
     }
 

+ 47 - 2
src/main/java/com/metro/service/impl/CompanyServiceImpl.java

@@ -1,19 +1,25 @@
 package com.metro.service.impl;
+
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.metro.entity.po.Company;
 import com.metro.entity.ro.company.SelectCompanyPageReq;
 import com.metro.entity.ro.company.SelectCompanyPageResp;
+import com.metro.entity.vo.BranchVO;
+import com.metro.entity.vo.CompanyVO;
 import com.metro.mapper.CompanysMapper;
 import com.metro.service.CompanyService;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -27,7 +33,7 @@ import java.util.stream.Collectors;
 @Service
 public class CompanyServiceImpl implements CompanyService {
 
-    @Autowired
+    @Resource
     private CompanysMapper companysMapper;
 
     /**
@@ -48,4 +54,43 @@ public class CompanyServiceImpl implements CompanyService {
         wrapper.eq(StringUtils.isNotEmpty(req.getCompanyId()),Company::getBranchId,req.getCompanyId());
         return wrapper;
     }
+
+    @Override
+    public List<CompanyVO> getCompanyList() {
+        List<CompanyVO> list = companysMapper.getCompanyList();
+        return list;
+    }
+
+    @Override
+    public List<BranchVO> getBranchList(String companyId) {
+        List<BranchVO> list = companysMapper.getBranchList(companyId);
+        return list;
+    }
+
+
+    private Map<String, Company> getByCompanySet(Set<String> companySet) {
+        List<Company> companyList = null;
+        if(companySet.size() >0) companyList = companysMapper.selectByCompanySet(companySet);
+        else{companyList = new ArrayList<>();}
+        return companyList.stream().collect(Collectors.toMap(Company::getCompanyId, Function.identity()));
+    }
+
+    private Map<String, Company> getByBranchSet(Set<String> barnchSet) {
+        List<Company> barnchList = null ;
+        if(barnchSet.size() >0)barnchList = companysMapper.selectByBarnchSet(barnchSet);
+        else {barnchList = new ArrayList<>();}
+        return barnchList.stream().collect(Collectors.toMap(Company::getBranchId, Function.identity()));
+    }
+
+    @Override
+    public <T> Map<String, Company> getCompanyMapByList(List<T> list, Function<T, String> function) {
+        Set<String> companySet = list.stream().map(function).collect(Collectors.toSet());
+        return this.getByCompanySet(companySet);
+    }
+
+    @Override
+    public <T> Map<String, Company> getBranchMapByList(List<T> list, Function<T, String> function) {
+        Set<String> barnchSet = list.stream().map(function).collect(Collectors.toSet());
+        return this.getByBranchSet(barnchSet);
+    }
 }

+ 118 - 0
src/main/java/com/metro/service/impl/JDevicesServiceImpl.java

@@ -0,0 +1,118 @@
+package com.metro.service.impl;
+
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.metro.entity.dto.JDeviceUpdateDTO;
+import com.metro.entity.po.Company;
+import com.metro.entity.po.JDevices;
+import com.metro.entity.po.JDevicesMetro;
+import com.metro.entity.po.Metro;
+import com.metro.entity.search.JDevicesSearch;
+import com.metro.entity.vo.JDevicesLessVO;
+import com.metro.entity.vo.JDevicesVO;
+import com.metro.entity.vo.MetroVO;
+import com.metro.exception.BusinessException;
+import com.metro.mapper.JDevicesMapper;
+import com.metro.mapper.JDevicesMetroMapper;
+import com.metro.mapper.MetroMapper;
+import com.metro.service.CompanyService;
+import com.metro.service.JDevicesService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-04-26
+ */
+@Service
+public class JDevicesServiceImpl implements JDevicesService {
+
+    @Resource
+    private JDevicesMapper jDevicesMapper;
+    @Resource
+    private CompanyService companyService;
+    @Resource
+    private MetroMapper metroMapper;
+    @Resource
+    private JDevicesMetroMapper jDevicesMetroMapper;
+
+    @Override
+    public IPage<JDevicesVO> getPageList(JDevicesSearch jDevicesSearch) {
+        Page<JDevicesVO> page = new Page<>(jDevicesSearch.getPageNum(),jDevicesSearch.getPageSize());
+        IPage<JDevicesVO>  pageList =jDevicesMapper.getPageList(page,jDevicesSearch);
+        List<JDevicesVO> records = pageList.getRecords();
+
+        /*获取数据中companyMap 和barnchMap*/
+        Map<String, Company> companyMap = companyService.getCompanyMapByList(records, JDevicesVO::getCompanyId);
+        Map<String, Company> barnchMap = companyService.getBranchMapByList(records,JDevicesVO::getBranchId);
+        Set<Integer> metroIdSet = records.stream().map(JDevicesVO::getMetroId).collect(Collectors.toSet());
+        List<MetroVO> metroIdList = null ;
+        if(metroIdSet.size() == 0){metroIdList = new ArrayList<>();}
+        else { metroIdList = metroMapper.selectByMetroIdSet(metroIdSet);}
+        Map<Integer, MetroVO> metroMap = returnMap(metroIdList);
+
+        /*数据填入*/
+        for (JDevicesVO record : records) {
+            record.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName());
+            record.setBranchName(barnchMap.get(record.getCompanyId()+record.getBranchId()) == null ?
+                    "" : barnchMap.get(record.getCompanyId()+record.getBranchId()).getBranchName()).getBranchName();
+            if(metroMap.get(record.getMetroId()) != null){
+                MetroVO metroVO = metroMap.get(record.getMetroId());
+                record.setMetroId(metroVO.getMetroId());
+                record.setMetroName(metroVO.getMetroName());
+                record.setSiteId(metroVO.getSiteId());
+                record.setSiteName(metroVO.getSiteName());
+                record.setLineId(metroVO.getLineId());
+                record.setLineName(metroVO.getLineName());
+            }
+
+        }
+        return pageList;
+    }
+
+    @Override
+    public Boolean updateJDevice(JDeviceUpdateDTO jDeviceUpdateDTO) {
+        Integer metroId = jDeviceUpdateDTO.getMetroId();
+        Metro metro = metroMapper.selectById(metroId);
+        if(metro.getLevel() != 3)throw new BusinessException("请选择具体的地铁盘口");
+        JDevicesMetro jDevicesMetro = jDevicesMetroMapper.selectOne(new LambdaQueryWrapper<JDevicesMetro>().eq(JDevicesMetro::getDevicesId, jDeviceUpdateDTO.getId()));
+        Integer i = null;
+        if(jDevicesMetro == null){
+            jDevicesMetro = new JDevicesMetro();
+            jDevicesMetro.setDevicesId(jDeviceUpdateDTO.getId());
+            jDevicesMetro.setMetroId(jDeviceUpdateDTO.getMetroId());
+            i = jDevicesMetroMapper.insert(jDevicesMetro);
+        }else {
+            jDevicesMetro.setMetroId(jDeviceUpdateDTO.getMetroId());
+            i = jDevicesMetroMapper.updateById(jDevicesMetro);
+        }
+
+        if(i == 1)return true;
+        else return false;
+    }
+
+    @Override
+    public List<JDevicesLessVO> getList() {
+        /*获取id和设备编号*/
+        List<JDevices> jDevices = jDevicesMapper.selectList(new LambdaQueryWrapper<JDevices>().select(JDevices::getId, JDevices::getDeviceId));
+        return jDevices.stream().map(p -> BeanUtil.toBean(p, JDevicesLessVO.class)).collect(Collectors.toList());
+    }
+
+    private Map<Integer,MetroVO> returnMap(List<MetroVO> list){
+        Map<Integer,MetroVO> map = new HashMap<>();
+        list.forEach(p ->
+            map.put(p.getMetroId(),p)
+        );
+        return map;
+    }
+}

+ 208 - 0
src/main/java/com/metro/service/impl/JPersonsServiceImpl.java

@@ -0,0 +1,208 @@
+package com.metro.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.metro.entity.dto.JpersonDTO;
+import com.metro.entity.dto.JpersonEditDTO;
+import com.metro.entity.po.Company;
+import com.metro.entity.po.JPersons;
+import com.metro.entity.search.JPersonSearch;
+import com.metro.entity.vo.JPersonVO;
+import com.metro.exception.BusinessException;
+import com.metro.mapper.CompanysMapper;
+import com.metro.mapper.JPersonsMapper;
+import com.metro.restful.RestCode;
+import com.metro.security.JWTUtils;
+import com.metro.service.CompanyService;
+import com.metro.service.JPersonsService;
+import com.metro.utils.MapperManager;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author wxg
+ * @since 2022-04-29
+ */
+@Service
+public class JPersonsServiceImpl implements JPersonsService {
+
+    @Resource
+    private JPersonsMapper jPersonsMapper;
+    @Resource
+    private CompanysMapper companysMapper;
+    @Autowired
+    private CompanyService companyService;
+
+    @Override
+    public JPersonVO login(JpersonDTO jpersonDTO) {
+        LambdaQueryWrapper<JPersons> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(JPersons::getCardId,jpersonDTO.getCardId());
+        JPersons jPersons = jPersonsMapper.selectOne(wrapper);
+        if (ObjectUtil.isEmpty(jPersons)) throw new BusinessException("账号不存在!请先注册");
+        if(StringUtils.isEmpty(jPersons.getPasswd())){
+            throw new BusinessException("该账号无法登录");
+        }
+
+        if (!(jPersons.getPasswd()).equals(jpersonDTO.getPassword()))
+            throw new BusinessException("密码错误!请重新输入");
+        Integer type  = StringUtils.isEmpty(jPersons.getCompanyId()) ? 1 : (StringUtils.isEmpty(jPersons.getBranchId())? 2 :3);
+
+        JPersonVO mapper = MapperManager.mapper(jPersons, JPersonVO.class, p -> {
+            p.setType(type);
+            p.setToken(JWTUtils.sign(jPersons.getId().toString(), jPersons.getPasswd(), DateUtils.addDays(new Date(), 1)));
+            /*数据填充,将companyName 和 branchName填入*/
+            if(StringUtils.isNotEmpty(jPersons.getCompanyId())){
+                p.setCompanyName(companysMapper.getCompanyByCompanyId(jPersons.getCompanyId()).getCompanyName());
+                if(StringUtils.isNotEmpty(jPersons.getBranchId())){
+                    p.setBranchName(companysMapper.getCompanyByCompanyIdandBranchId(jPersons.getCompanyId(),jPersons.getBranchId()).getBranchName());
+                }
+            }
+        });
+        /*将jperson的数据复制到JpesonVO中 并且设置token返回*/
+        return mapper;
+    }
+
+    /**
+     * 退出登录
+     */
+    @Override
+    public Boolean logout() {
+        return null;
+    }
+
+    @Override
+    public JPersonVO getUserInfo() {
+        Long userId = this.getUserId();
+        JPersons jPersons = jPersonsMapper.selectById(userId);
+        Integer type  = StringUtils.isEmpty(jPersons.getCompanyId()) ? 1 : (StringUtils.isEmpty(jPersons.getBranchId())? 2 :3);
+        return MapperManager.mapper(jPersons, JPersonVO.class, p ->{
+            p.setType(type);
+            if(StringUtils.isNotEmpty(jPersons.getCompanyId())){
+                p.setCompanyName(companysMapper.getCompanyByCompanyId(jPersons.getCompanyId()).getCompanyName());
+                if(StringUtils.isNotEmpty(jPersons.getBranchId())){
+                    p.setBranchName(companysMapper.getCompanyByCompanyIdandBranchId(jPersons.getCompanyId(),jPersons.getBranchId()).getBranchName());
+                }
+            }
+        });
+    }
+
+    @Override
+    public IPage<JPersonVO> getPageList(JPersonSearch jPersonSearch) {
+        Long userId = this.getUserId();
+        JPersons jPersons = jPersonsMapper.selectById(userId);
+        jPersonSearch.setCompanyId(jPersons.getCompanyId() !=null ? jPersons.getCompanyId() : null);
+        jPersonSearch.setBranchId(jPersons.getBranchId() !=null ? jPersons.getBranchId() : null);
+        Integer type = StringUtils.isEmpty(jPersons.getCompanyId()) ? 1 : (StringUtils.isEmpty(jPersons.getBranchId())? 2 :3);
+        jPersonSearch.setType(type);
+        if(type == 3)throw new BusinessException("您无权查看账号列表");
+        Page<JPersonVO> page = new Page<>(jPersonSearch.getPageNum(),jPersonSearch.getPageSize());
+        IPage<JPersonVO>  pageList =jPersonsMapper.getPageList(page,jPersonSearch);
+
+        List<JPersonVO> records = pageList.getRecords();
+        Map<String, Company> companyMap = companyService.getCompanyMapByList(records, JPersonVO::getCompanyId);
+        Map<String, Company> barnchMap = companyService.getBranchMapByList(records,JPersonVO::getBranchId);
+        /*数据填入*/
+        for (JPersonVO record : records) {
+            record.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName());
+            record.setBranchName(barnchMap.get(record.getCompanyId()+record.getBranchId()) == null ?
+                    "" : barnchMap.get(record.getCompanyId()+record.getBranchId()).getBranchName()).getBranchName();
+            record.setType(StringUtils.isEmpty(record.getCompanyId()) ? 1 : (StringUtils.isEmpty(record.getBranchId())? 2 :3));
+        }
+
+
+        return pageList;
+    }
+
+    @Override
+    public Integer insert(JpersonEditDTO jpersonEditDTO) {
+        Date date  = new Date();
+        if(StringUtils.isNotEmpty(jpersonEditDTO.getCompanyId()) && StringUtils.isNotEmpty(jpersonEditDTO.getBranchId())){
+            if(StringUtils.isEmpty(jpersonEditDTO.getPhoto()))throw new BusinessException("部门和区域都有值的情况下,图片不能为空");
+        }else if(StringUtils.isEmpty(jpersonEditDTO.getCompanyId()) && StringUtils.isEmpty(jpersonEditDTO.getBranchId())){
+            throw new BusinessException("创建一级账号,请联系管理员");
+        }
+
+        List<JPersons> jPersons1 = jPersonsMapper.selectList(new LambdaQueryWrapper<JPersons>()
+                .eq(JPersons::getCardId, jpersonEditDTO.getCardId())
+                );
+        if(jPersons1 != null && jPersons1.size() > 0){
+            if(jpersonEditDTO.getId() == null){
+                throw new BusinessException("该账号已经被创建");
+            }else {
+                if(!jpersonEditDTO.getId() .equals( jPersons1.get(0).getId() )){
+                    throw new BusinessException("该账号已经被创建");
+                }
+            }
+        }
+
+        JPersons jPersons = new JPersons();
+        BeanUtils.copyProperties(jpersonEditDTO,jPersons);
+        JPersonVO userInfo = this.getUserInfo();
+        if(StringUtils.isNotEmpty(userInfo.getCompanyId())){
+            jPersons.setCompanyId(userInfo.getCompanyId());
+            if(StringUtils.isEmpty(jpersonEditDTO.getBranchId())){
+                throw new BusinessException("请选择站台");
+            }
+        }else{
+            if(StringUtils.isEmpty(jpersonEditDTO.getCompanyId())){
+                throw new BusinessException("请选择地铁");
+            }
+        }
+        Integer integer = null ;
+        if(jpersonEditDTO.getId() == null ){
+            jPersons.setRegTime(date);
+            jPersons.setIsDelete(0);
+            jPersons.setIsAdmin(0);
+            jPersons.setValidStartTime(date.getTime());
+            jPersons.setValidEndTime(date.getTime());
+            integer = jPersonsMapper.insert(jPersons);
+        }else {
+            jPersons.setUpdateTimestamp(date.getTime());
+            integer = jPersonsMapper.updateById(jPersons);
+        }
+        return integer;
+    }
+
+    @Override
+    public Integer delete(Integer id) {
+        return jPersonsMapper.deleteById(id);
+    }
+
+    public Long getUserId() {
+        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        if (requestAttributes == null) {
+            throw new BusinessException(RestCode.UNAUTHORIZED.getMsg());
+        }
+        HttpServletRequest request = requestAttributes.getRequest();
+        return getUserId(request);
+    }
+
+    public Long getUserId(HttpServletRequest request) {
+        String token = request.getHeader("Authorization");
+        if(StringUtils.isEmpty(token)){
+            throw new BusinessException(RestCode.UNAUTHORIZED.getMsg());
+        }
+        token = JWTUtils.getUserId(token);
+        if (StringUtils.isEmpty(token)) {
+            throw new BusinessException(RestCode.UNAUTHORIZED.getMsg());
+        }
+        return Long.valueOf(token);
+    }
+}

+ 129 - 42
src/main/java/com/metro/service/impl/PassreCordsServiceImpl.java

@@ -1,26 +1,37 @@
 package com.metro.service.impl;
 
-import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.metro.entity.po.Company;
+import com.metro.entity.po.JDevices;
+import com.metro.entity.po.JDevicesMetro;
 import com.metro.entity.po.PassreCords;
 import com.metro.entity.ro.passrecords.*;
-import com.metro.mapper.CompanysMapper;
+import com.metro.entity.search.WarningSearch;
+import com.metro.entity.vo.JPersonVO;
+import com.metro.entity.vo.MetroVO;
+import com.metro.entity.vo.WarningDetailOneVO;
+import com.metro.entity.vo.WarningVO;
+import com.metro.exception.BusinessException;
+import com.metro.mapper.JDevicesMapper;
+import com.metro.mapper.JDevicesMetroMapper;
+import com.metro.mapper.MetroMapper;
 import com.metro.mapper.PassreCordsMapper;
+import com.metro.service.CompanyService;
+import com.metro.service.JPersonsService;
 import com.metro.service.PassreCordsService;
 import com.metro.service.base.BaseService;
 import com.metro.utils.MapperManager;
 import com.metro.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.time.LocalDateTime;
+import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -34,11 +45,18 @@ import java.util.stream.Collectors;
 @Service
 public class PassreCordsServiceImpl extends BaseService implements PassreCordsService {
 
-    @Autowired
+    @Resource
     private PassreCordsMapper passreCordsMapper;
+    @Resource
+    private CompanyService companyService;
     @Autowired
-    private CompanysMapper companysMapper;
-
+    private JPersonsService jPersonsService;
+    @Resource
+    private JDevicesMapper jDevicesMapper;
+    @Resource
+    private JDevicesMetroMapper jDevicesMetroMapper;
+    @Resource
+    private MetroMapper metroMapper;
     /**
      * 警示记录
      *
@@ -47,29 +65,23 @@ public class PassreCordsServiceImpl extends BaseService implements PassreCordsSe
      */
     @Override
     public IPage<SelectPassreCordsPageListResp> page(SelectPassreCordsPageListReq req) {
+        /*分页查询sql*/
         IPage<SelectPassreCordsPageListResp> respPage = new Page<>(req.getPageNum(), req.getPageSize());
-        Page<PassreCords> selectPage = passreCordsMapper.selectPage(new Page<>(req.getPageNum(), req.getPageSize()), pageWrapper(req));
+        Page<PassreCords> selectPage = passreCordsMapper.selectPage(new Page<>(req.getPageNum(), req.getPageSize()), pageWrapper(req,1));
         if (CollectionUtils.isEmpty(selectPage.getRecords())) return respPage;
-        Set<String> getCompanyId = selectPage.getRecords().stream().map(PassreCords::getCompanyId).collect(Collectors.toSet());
-        Set<String> getBranchId = selectPage.getRecords().stream().map(PassreCords::getBranchId).collect(Collectors.toSet());
-        Map<String, String> companyMap = null;
-        Map<String, String> branchMap = null;
-        if (!CollectionUtils.isEmpty(getCompanyId)) {
-            List<Company> companies = companysMapper.selectList(new LambdaQueryWrapper<Company>().in(Company::getCompanyId, getCompanyId));
-            if (!CollectionUtils.isEmpty(companies)) {
-                companyMap = companies.stream().collect(Collectors.toMap(Company::getCompanyId, Company::getCompanyName, (t1, t2) -> t1));
-            }
-        }
-        if (!CollectionUtils.isEmpty(getBranchId)) {
-            List<Company> companies = companysMapper.selectList(new LambdaQueryWrapper<Company>().in(Company::getBranchId, getBranchId));
-            if (!CollectionUtils.isEmpty(companies)) {
-                branchMap = companies.stream().collect(Collectors.toMap(Company::getBranchId, Company::getBranchName, (t1, t2) -> t1));
+
+        List<PassreCords> records = selectPage.getRecords();
+        /*获取数据中companyMap 和barnchMap*/
+        Map<String, Company> companyMap = companyService.getCompanyMapByList(records,PassreCords::getCompanyId);
+        Map<String, Company> barnchMap = companyService.getBranchMapByList(records,PassreCords::getBranchId);
+
+        /*数据回填*/
+        return selectPage.convert(p -> MapperManager.mapper(p, SelectPassreCordsPageListResp.class, q ->{
+            q.setCompanyName(companyMap.get(q.getCompanyId()) == null?"" : companyMap.get(q.getCompanyId()).getCompanyName());
+            q.setBranchName(barnchMap.get(q.getCompanyId()+q.getBranchId()) == null ?
+                    "" : barnchMap.get(q.getCompanyId()+q.getBranchId()).getBranchName()).getBranchName();
             }
-        }
-        Map<String, String> finalCompanyMap = companyMap;
-        Map<String, String> finalBranchMap = branchMap;
-        return selectPage.convert(p -> MapperManager.mapper(p, SelectPassreCordsPageListResp.class, q ->
-                q.setBranchName(finalBranchMap.get(p.getBranchId())).setCompanyName(finalCompanyMap.get(p.getCompanyId()))));
+        ));
     }
 
     /*
@@ -91,30 +103,105 @@ public class PassreCordsServiceImpl extends BaseService implements PassreCordsSe
 
     }
 
+    @Override
+    public IPage<WarningVO> warningPageList(WarningSearch warningSearch) {
+        Page<WarningVO> page = new Page<>(warningSearch.getPageNum(),warningSearch.getPageSize());
+        IPage<WarningVO>  pageList =passreCordsMapper.warningPageList(page,warningSearch);
+        List<WarningVO> records = pageList.getRecords();
+        /*获取数据中companyMap 和barnchMap*/
+        Map<String, Company> companyMap = companyService.getCompanyMapByList(records,WarningVO::getCompanyId);
+        Map<String, Company> barnchMap = companyService.getBranchMapByList(records,WarningVO::getBranchId);
 
-    // page Wrapper
-    private LambdaQueryWrapper<PassreCords> pageWrapper(SelectPassreCordsPageListReq req) {
-        LambdaQueryWrapper<PassreCords> wrapper = new LambdaQueryWrapper<>();
-        if (getAccountInfo().getType() == 2) {
-           wrapper.eq(PassreCords::getCompanyId, getAccountInfo().getCompanyId());
+        /*数据填入*/
+        for (WarningVO record : records) {
+            record.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName());
+            record.setBranchName(barnchMap.get(record.getCompanyId()+record.getBranchId()) == null ?
+                    "" : barnchMap.get(record.getCompanyId()+record.getBranchId()).getBranchName()).getBranchName();
+        }
+
+        return pageList;
+    }
+
+    @Override
+    public List<SelectPassreCordsPageListResp> warningDeatilList(String cardId) {
+        SelectPassreCordsPageListReq req = new SelectPassreCordsPageListReq();
+        req.setCardId(cardId);
+        List<PassreCords> records = passreCordsMapper.selectList(pageWrapper(req,2));
 
+        /*获取数据中companyMap 和barnchMap*/
+        Map<String, Company> companyMap = companyService.getCompanyMapByList(records,PassreCords::getCompanyId);
+        Map<String, Company> barnchMap = companyService.getBranchMapByList(records,PassreCords::getBranchId);
 
+        /*数据填入*/
+        for (PassreCords record : records) {
+            record.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName());
+            record.setBranchName(barnchMap.get(record.getCompanyId()+record.getBranchId()) == null ?
+                    "" : barnchMap.get(record.getCompanyId()+record.getBranchId()).getBranchName()).getBranchName();
         }
-        if (getAccountInfo().getType() == 3) {
-            //显示该分局账号下的所有盘查记录 companyID = 记录companyID branchID = 记录branchId
-            wrapper.eq(PassreCords::getCompanyId, getAccountInfo().getCompanyId()).eq(PassreCords::getBranchId, getAccountInfo().getBranchId());
+
+        List<SelectPassreCordsPageListResp> list = records.stream().map(passreCords -> {
+            SelectPassreCordsPageListResp userCheckData = new SelectPassreCordsPageListResp();
+            BeanUtils.copyProperties(passreCords, userCheckData);
+            return userCheckData;
+        }).collect(Collectors.toList());
+
+        return list;
+    }
+
+    @Override
+    public WarningDetailOneVO warningDeatil(Integer id) {
+        PassreCords passreCords = passreCordsMapper.selectById(id);
+        if(passreCords == null) throw new BusinessException("没有该条记录");
+        WarningDetailOneVO warningDetailOneVO = new WarningDetailOneVO();
+        BeanUtils.copyProperties(passreCords,warningDetailOneVO);
+        /*获取设备信息 (设备编号是msgId字段的前8位)*/
+        String deviceId = passreCords.getMsgId().substring(0,8);
+        JDevices jDevices = jDevicesMapper.selectOne(new LambdaQueryWrapper<JDevices>().eq(JDevices::getDeviceId, deviceId));
+        /*获取盘口信息并填入*/
+        if(jDevices != null){
+            warningDetailOneVO.setDeviceId(jDevices.getDeviceId());
+            JDevicesMetro jDevicesMetro = jDevicesMetroMapper.selectOne(new LambdaQueryWrapper<JDevicesMetro>().eq(JDevicesMetro::getDevicesId, jDevices.getId()));
+            if(jDevicesMetro != null){
+                MetroVO metroVO = metroMapper.selectByMetroId(jDevicesMetro.getMetroId());
+                if(metroVO != null)
+                {warningDetailOneVO.setMetroName(metroVO.getLineName()+"-"+metroVO.getSiteName()+"-"+metroVO.getMetroName());}
+            }
+        }
+        return warningDetailOneVO;
+    }
+
+
+    // page Wrapper
+    private LambdaQueryWrapper<PassreCords> pageWrapper(SelectPassreCordsPageListReq req , Integer type) {
+        LambdaQueryWrapper<PassreCords> wrapper = new LambdaQueryWrapper<>();
+//        if (getAccountInfo().getType() == 2) {
+//           wrapper.eq(PassreCords::getCompanyId, getAccountInfo().getCompanyId());
+//        }
+//        if (getAccountInfo().getType() == 3) {
+//            //显示该分局账号下的所有盘查记录 companyID = 记录companyID branchID = 记录branchId
+//            wrapper.eq(PassreCords::getCompanyId, getAccountInfo().getCompanyId()).eq(PassreCords::getBranchId, getAccountInfo().getBranchId());
+//        }
+//        if (getAccountInfo().getType() == 4) {
+//            //显示该民警产生的盘查记录 companyID = 记录companyID branchID = 记录branchId userName = peopleName
+//            wrapper.eq(PassreCords::getCompanyId, getAccountInfo().getCompanyId()).
+//                    eq(PassreCords::getBranchId, getAccountInfo().getBranchId()).
+//                    eq(PassreCords::getStaffName,getAccountInfo().getUserName());
+//        }
+        if(type == 2){
+            wrapper.select(PassreCords.class,p ->!p.getColumn().equals("scene_photo"));
         }
-        if (getAccountInfo().getType() == 4) {
-            //显示该民警产生的盘查记录 companyID = 记录companyID branchID = 记录branchId userName = peopleName
-            wrapper.eq(PassreCords::getCompanyId, getAccountInfo().getCompanyId()).
-                    eq(PassreCords::getBranchId, getAccountInfo().getBranchId()).
-                    eq(PassreCords::getStaffName,getAccountInfo().getUserName());
 
+        JPersonVO userInfo = jPersonsService.getUserInfo();
+        if(StringUtils.isNotEmpty(userInfo.getCompanyId())){
+            wrapper.eq(PassreCords::getCompanyId, userInfo.getCompanyId());
+            if(StringUtils.isNotEmpty(userInfo.getBranchId())){
+                wrapper.eq(PassreCords::getBranchId, userInfo.getBranchId());
+            }
         }
-        wrapper.eq(StringUtils.isNotEmpty(req.getXm()), PassreCords::getXm, req.getXm());
+        wrapper.like(StringUtils.isNotEmpty(req.getXm()), PassreCords::getXm, req.getXm());
         wrapper.eq(StringUtils.isNotEmpty(req.getCardId()), PassreCords::getCardId, req.getCardId());
         wrapper.eq(StringUtils.isNotEmpty(req.getPhone()), PassreCords::getPhone, req.getPhone());
+        wrapper.orderByDesc(PassreCords::getPassTime);
         return wrapper;
     }
-
 }

+ 18 - 0
src/main/java/com/metro/utils/CompanyUtils.java

@@ -0,0 +1,18 @@
+package com.metro.utils;/*
+ * @Description
+ * @Date 2022/5/9 15:32
+ * @Author wxg
+ * */
+
+import java.util.List;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+public class CompanyUtils {
+
+    public static<T> Set<String> getSetByList(List<T> list , Function<T,String> function){
+        Set<String> set = list.stream().map(function).collect(Collectors.toSet());
+        return set;
+    }
+}

+ 2 - 2
src/main/resources/application-dev.yml

@@ -12,9 +12,9 @@ spring:
     password: rshy # Redis服务器连接密码(默认为空)
     jedis:
       pool:
-        max-active: 20 # 连接池最大连接数(使用负值表示没有限制)
+        max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
         max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-idle: 8 # 连接池中的最大空闲连接
+        max-idle: 20 # 连接池中的最大空闲连接
         min-idle: 0 # 连接池中的最小空闲连接
     timeout: 5000 # 连接超时时间(毫秒)
 

+ 5 - 5
src/main/resources/application-local.yml

@@ -1,8 +1,8 @@
 spring:
   datasource:
-    url: jdbc:mysql://127.0.0.1:3306/rshy?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&pinGlobalTxToPhysicalConnection=true&serverTimezone=UTC
-    username: rshy
-    password: rshy
+    url: jdbc:mysql://127.0.0.1:3306/rshy?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&pinGlobalTxToPhysicalConnection=true&serverTimezone=Asia/Shanghai
+    username: root
+    password: 123456
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
 
@@ -13,9 +13,9 @@ spring:
     password: rshy # Redis服务器连接密码(默认为空)
     jedis:
       pool:
-        max-active: 20 # 连接池最大连接数(使用负值表示没有限制)
+        max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
         max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-idle: 8 # 连接池中的最大空闲连接
+        max-idle: 20 # 连接池中的最大空闲连接
         min-idle: 0 # 连接池中的最小空闲连接
     timeout: 5000 # 连接超时时间(毫秒)
   #redis设置

+ 5 - 5
src/main/resources/application-prod.yml

@@ -1,8 +1,8 @@
 spring:
   datasource:
-    url: jdbc:mysql://127.0.0.1:3306/game?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&pinGlobalTxToPhysicalConnection=true&serverTimezone=UTC
-    username: rshy
-    password: rshy
+    url: jdbc:mysql://41.196.218.12:3306/hxserver?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&pinGlobalTxToPhysicalConnection=true&serverTimezone=Asia/Shanghai
+    username: root
+    password: Root@1234
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
   redis:
@@ -12,9 +12,9 @@ spring:
     password: rshy # Redis服务器连接密码(默认为空)
     jedis:
       pool:
-        max-active: 20 # 连接池最大连接数(使用负值表示没有限制)
+        max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
         max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-idle: 8 # 连接池中的最大空闲连接
+        max-idle: 20 # 连接池中的最大空闲连接
         min-idle: 0 # 连接池中的最小空闲连接
     timeout: 5000 # 连接超时时间(毫秒)
   #redis设置

+ 1 - 1
src/main/resources/application.yml

@@ -40,7 +40,7 @@ spring:
     is-log: false
 
   profiles:
-    active: '@currentConfig@'
+    active: local
   servlet:
     multipart:
       max-file-size: 10MB

+ 65 - 0
src/main/resources/mapper/CompanysMapper.xml

@@ -3,4 +3,69 @@
 <mapper namespace="com.metro.mapper.CompanysMapper">
 
 
+    <select id="getCompanyList" resultType="com.metro.entity.vo.CompanyVO">
+        select
+            distinct
+            company_id,
+            company_name
+        from j_companys
+    </select>
+    <select id="getBranchList" resultType="com.metro.entity.vo.BranchVO">
+        select
+            branch_id,
+            branch_name
+        from j_companys where company_id =#{companyId}
+    </select>
+    <select id="selectByCompanySet" resultType="com.metro.entity.po.Company">
+        select
+            distinct
+            company_id,
+            company_name
+        from j_companys
+        <where>
+            company_id in
+            <foreach collection="companySet" index="index" item="companyId" open="(" close=")" separator=",">
+                #{companyId}
+            </foreach>
+        </where>
+    </select>
+    <select id="selectByBarnchSet" resultType="com.metro.entity.po.Company">
+        select
+            distinct
+            CONCAT(company_id , branch_id) as branchId,
+            branch_name
+        from j_companys
+            <where>
+            branch_id in
+                <foreach collection="barnchSet" index="index" item="barnchId" open="(" close=")" separator=",">
+                    #{barnchId}
+                </foreach>
+            </where>
+    </select>
+    <select id="getCompanyByCompanyId" resultType="com.metro.entity.vo.CompanyVO">
+        select
+        distinct
+        company_id,
+        company_name
+        from j_companys
+        <where>
+            <if test="companyId != null">
+                and company_id =#{companyId}
+            </if>
+        </where>
+    </select>
+    <select id="getCompanyByCompanyIdandBranchId" resultType="com.metro.entity.vo.BranchVO">
+        select
+            branch_id,
+            branch_name
+        from j_companys
+        <where>
+            <if test="companyId != null">
+                and company_id =#{companyId}
+            </if>
+            <if test="branchId != null">
+                and branch_id = #{branchId}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 36 - 0
src/main/resources/mapper/JDevicesMapper.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.metro.mapper.JDevicesMapper">
+
+
+    <select id="getPageList" resultType="com.metro.entity.vo.JDevicesVO">
+        select
+            jd.id,
+            jd.device_id,
+            jd.device_type,
+            jd.app_version,
+            jd.area,
+            jd.address,
+            jd.company_id,
+            jd.branch_id,
+            jd.contact_people,
+            jd.contact_phone,
+            jd.ip,
+            jd.first_boot,
+            jd.state,
+            jd.enabled,
+            jd.licensed,
+            jdm.metro_id
+        from j_devices jd
+        left join j_devices_metro jdm on jd.id = jdm.devices_id
+        <where>
+            <if test="jDevicesSearch.deviceId !=null and jDevicesSearch.deviceId !=''">
+                and jd.device_id = #{jDevicesSearch.deviceId}
+            </if>
+            <if test="jDevicesSearch.deviceType !=null and jDevicesSearch.deviceType !=''">
+                and jd.device_type = #{jPersonSearch.deviceType}
+            </if>
+        </where>
+        order by id desc
+    </select>
+</mapper>

+ 62 - 0
src/main/resources/mapper/JPersonsMapper.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.metro.mapper.JPersonsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.metro.entity.po.JPersons">
+        <id column="id" property="id"/>
+        <result column="company_id" property="companyId"/>
+        <result column="branch_id" property="branchId"/>
+        <result column="card_id" property="cardId"/>
+        <result column="xm" property="xm"/>
+        <result column="xb" property="xb"/>
+        <result column="photo" property="photo"/>
+        <result column="is_admin" property="isAdmin"/>
+        <result column="bz" property="bz"/>
+        <result column="reg_time" property="regTime"/>
+        <result column="update_timestamp" property="updateTimestamp"/>
+        <result column="flag" property="flag"/>
+        <result column="account" property="account"/>
+        <result column="passwd" property="passwd"/>
+        <result column="area_id" property="areaId"/>
+        <result column="phone" property="phone"/>
+        <result column="is_delete" property="isDelete"/>
+        <result column="valid_start_time" property="validStartTime"/>
+        <result column="valid_end_time" property="validEndTime"/>
+        <result column="feature" property="feature"/>
+    </resultMap>
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id
+        , company_id, branch_id, card_id, xm, xb, photo, is_admin, bz, reg_time, update_timestamp, flag, account, passwd, area_id, phone, is_delete, valid_start_time, valid_end_time, feature
+    </sql>
+    <select id="getPageList" resultType="com.metro.entity.vo.JPersonVO">
+        select
+        <include refid="Base_Column_List"></include>
+        from j_persons
+        <where>
+            <if test="jPersonSearch.type == 1 ">
+                and (company_id is not null or company_id != '')
+            </if>
+            <if test="jPersonSearch.type == 2 ">
+                and (branch_id is not null or branch_id != '')
+                and company_id = #{jPersonSearch.companyId}
+            </if>
+
+            <if test="jPersonSearch.companyId !=null and jPersonSearch.companyId !=''">
+                and company_id = #{jPersonSearch.companyId}
+            </if>
+            <if test="jPersonSearch.branchId !=null and jPersonSearch.branchId !=''">
+                and branch_id = #{jPersonSearch.branchId}
+            </if>
+            <if test="jPersonSearch.xm !=null and jPersonSearch.xm !=''">
+                and xm = #{jPersonSearch.xm}
+            </if>
+            <if test="jPersonSearch.phone !=null and jPersonSearch.phone !=''">
+                and phone = #{jPersonSearch.phone}
+            </if>
+        </where>
+        order by id desc
+    </select>
+
+</mapper>

+ 37 - 0
src/main/resources/mapper/MetroMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.metro.mapper.MetroMapper">
+
+
+    <select id="selectByMetroIdSet" resultType="com.metro.entity.vo.MetroVO">
+        select
+            jm3.id as lineId,
+            jm3.name as lineName,
+            jm2.id as siteId,
+            jm2.name as siteName,
+            jm1.id as metroId,
+            jm1.name as metroName
+        from j_metro jm1
+                 LEFT JOIN j_metro jm2 on jm2.id  = jm1.pid
+                 LEFT JOIN j_metro jm3 on jm3.id  = jm2.pid
+        <where>
+            jm1.id in
+            <foreach collection="metroIdSet" index="index" item="metroId" open="(" close=")" separator=",">
+                #{metroId}
+            </foreach>
+        </where>
+    </select>
+    <select id="selectByMetroId" resultType="com.metro.entity.vo.MetroVO">
+        select
+            jm3.id as lineId,
+            jm3.name as lineName,
+            jm2.id as siteId,
+            jm2.name as siteName,
+            jm1.id as metroId,
+            jm1.name as metroName
+        from j_metro jm1
+                 LEFT JOIN j_metro jm2 on jm2.id  = jm1.pid
+                 LEFT JOIN j_metro jm3 on jm3.id  = jm2.pid
+        where jm1.id = #{metroId}
+    </select>
+</mapper>

+ 29 - 1
src/main/resources/mapper/PassreCordsMapper.xml

@@ -2,5 +2,33 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.metro.mapper.PassreCordsMapper">
 
-    
+
+    <select id="warningPageList" resultType="com.metro.entity.vo.WarningVO">
+        SELECT
+            card_id,
+            xm,
+            phone,
+            company_id,
+            branch_id
+        from j_passrecords
+        <where>
+            <if test="warningSearch.companyId !=null">
+                and company_id =# {warningSearch.companyId}
+            </if>
+            <if test="warningSearch.branchId !=null">
+                and branch_id =# {warningSearch.branchId}
+            </if>
+            <if test="warningSearch.xm !=null and warningSearch.xm !=''">
+                and xm = #{warningSearch.xm}
+            </if>
+            <if test="warningSearch.cardId !=null and warningSearch.cardId !=''">
+                and card_id = #{warningSearch.cardId}
+            </if>
+            <if test="warningSearch.phone !=null and warningSearch.phone !=''">
+                and phone = #{warningSearch.phone}
+            </if>
+        </where>
+        GROUP BY card_id,xm,phone,company_id,branch_id
+        order by xm
+    </select>
 </mapper>