Kaynağa Gözat

派出所管理

renruixin 3 yıl önce
ebeveyn
işleme
1f1e4f40dd
21 değiştirilmiş dosya ile 420 ekleme ve 113 silme
  1. 7 6
      src/main/java/com/metro/controller/AccountController.java
  2. 1 1
      src/main/java/com/metro/controller/CompanyController.java
  3. 26 6
      src/main/java/com/metro/controller/PolicController.java
  4. 3 1
      src/main/java/com/metro/entity/po/Company.java
  5. 1 0
      src/main/java/com/metro/entity/ro/Police/DetailPoliceReq.java
  6. 3 35
      src/main/java/com/metro/entity/ro/Police/DetailPoliceResp.java
  7. 14 3
      src/main/java/com/metro/entity/ro/Police/InsertPoliceReq.java
  8. 32 0
      src/main/java/com/metro/entity/ro/Police/SelectPoliceLevelReq.java
  9. 49 0
      src/main/java/com/metro/entity/ro/Police/SelectPoliceLevelResp.java
  10. 54 0
      src/main/java/com/metro/entity/ro/Police/UpdatePoliceReq.java
  11. 23 0
      src/main/java/com/metro/entity/ro/Police/UpdatePoliceResp.java
  12. 4 0
      src/main/java/com/metro/entity/ro/account/InsertAccountReq.java
  13. 10 5
      src/main/java/com/metro/entity/ro/account/UpdateAccountReq.java
  14. 1 1
      src/main/java/com/metro/entity/ro/company/SelectCompanyPageResp.java
  15. 24 4
      src/main/java/com/metro/entity/ro/passrecords/SelectPassreCordsPageListResp.java
  16. 31 0
      src/main/java/com/metro/enums/UserEnums.java
  17. 7 12
      src/main/java/com/metro/service/PoliceService.java
  18. 4 4
      src/main/java/com/metro/service/impl/AccountServiceImpl.java
  19. 39 9
      src/main/java/com/metro/service/impl/PassreCordsServiceImpl.java
  20. 86 25
      src/main/java/com/metro/service/impl/PoliceServiceImpl.java
  21. 1 1
      src/main/resources/application.yml

+ 7 - 6
src/main/java/com/metro/controller/AccountController.java

@@ -216,19 +216,20 @@ public class AccountController extends BaseController {
      */
     @GetMapping("/importTemplate")
     @ApiOperation("获取下载文件名")
-    public AjaxResult importTemplate()
-    {
+    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 {
+    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));
+        return AjaxResult.success(service.importUser(userList, type));
     }
 
 

+ 1 - 1
src/main/java/com/metro/controller/CompanyController.java

@@ -22,7 +22,7 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/company")
-@Api(tags = "根据id查询公安局和派出所")
+@Api(tags = "派出所管理(只有分局可以操作,其他账号无权限)")
 public class CompanyController {
 
     @Autowired

+ 26 - 6
src/main/java/com/metro/controller/PolicController.java

@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * @ClassName: PolicController
@@ -27,24 +28,43 @@ import javax.validation.Valid;
  */
 @RestController
 @RequestMapping("/police")
-@Api(tags = "派出所管理")
+@Api(tags = "派出所管理(只有分局可以操作,其他账号无权限)")
 public class PolicController {
     @Autowired
     private PoliceService service;
 
-
+    /**
+     * @param req
+     * @return
+     */
     @PostMapping("/page")
-    @Authority
-    @ApiOperation("账号列表查询")
+    @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));
     }
+
     /**
      * 账号详情
      *
@@ -61,9 +81,10 @@ public class PolicController {
     @PostMapping("/update")
     @Authority
     @ApiOperation("修改账号")
-    public BaseResponse<UpdateAccountResp> update(@Valid @RequestBody UpdateAccountReq req) {
+    public BaseResponse<UpdatePoliceResp> update(@Valid @RequestBody UpdatePoliceReq req) {
         return BaseResponse.ok(service.update(req));
     }
+
     @PostMapping("/delete")
     @Authority
     @ApiOperation("删除账号")
@@ -71,5 +92,4 @@ public class PolicController {
         return BaseResponse.ok(service.delete(req));
     }
 
-
 }

+ 3 - 1
src/main/java/com/metro/entity/po/Company.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
+import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 
@@ -17,6 +18,7 @@ import java.io.Serializable;
  */
 @Data
 @TableName("j_companys")
+@Accessors(chain = true)
 public class Company implements Serializable {
 
     @TableId(value = "id")
@@ -44,6 +46,6 @@ public class Company implements Serializable {
      * 分局(派出所Id)
      */
     @TableField("branch_name")
-    private String brachName;
+    private String branchName;
 
 }

+ 1 - 0
src/main/java/com/metro/entity/ro/Police/DetailPoliceReq.java

@@ -17,6 +17,7 @@ import java.io.Serializable;
 @Data
 @ApiModel
 public class DetailPoliceReq  implements Serializable {
+
     @ApiModelProperty("id")
     private Integer id;
 

+ 3 - 35
src/main/java/com/metro/entity/ro/Police/DetailPoliceResp.java

@@ -30,49 +30,17 @@ public class DetailPoliceResp {
     @ApiModelProperty(value = "管理员手机号")
     private String phone;
 
-    @ApiModelProperty(value = "地区Id")
-    private String areaId;
-
-    @ApiModelProperty(value = "地区中文")
-    private String areaDesc;
-
-    @ApiModelProperty(value = "省区id")
-    private String provinceId;
-
-    @ApiModelProperty(value = "市区id,")
-    private String cityId;
-
-    @ApiModelProperty(value = "用户类行 1admin 2分局管理员 3,")
-    private Integer type;
-
     @ApiModelProperty(value = "详细地址")
     private String address;
 
+    @ApiModelProperty(value = "派出所名称")
+    private String branchName;
+
     @ApiModelProperty(value = "创建时间")
     private LocalDateTime createTime;
 
-    @ApiModelProperty(value = "创建人")
-    private LocalDateTime createId;
-
     @ApiModelProperty(value = "修改时间")
     private LocalDateTime updateTime;
 
-    @ApiModelProperty(value = "修改人")
-    private LocalDateTime updateId;
-
-    @ApiModelProperty(value = "是否删除")
-    private boolean isDelete;
-    public String getIsDeleteName(){
-        return UserEnums.deleteEnums.getStatusName(this.isDelete);
-    }
-
-    @ApiModelProperty(value = "账号状态码")
-    private boolean status;
-
-    @ApiModelProperty(value = "账号状态")
-    private String statusNme;
-    public String getStatusName(){
-        return UserEnums.statusEnums.getStatusName(this.status);
-    }
 
 }

+ 14 - 3
src/main/java/com/metro/entity/ro/Police/InsertPoliceReq.java

@@ -3,6 +3,7 @@ package com.metro.entity.ro.Police;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.Size;
 import java.io.Serializable;
 
@@ -16,21 +17,31 @@ import java.io.Serializable;
  */
 @Data
 public class InsertPoliceReq implements Serializable {
-    @ApiModelProperty(value = "账号名称")
+
+    @ApiModelProperty(value = "账号")
+    @NotEmpty(message = "账号不能为空")
     private String account;
 
+    @NotEmpty(message = "派出所名称不能为空")
+    @ApiModelProperty(value = "派出所名称")
+    private String branchName;
+
+    @NotEmpty(message = "管理员姓名不能为空")
     @ApiModelProperty(value = "管理员姓名")
     private String userName;
 
+    @NotEmpty(message = "派出所管理员手机号不能为空")
     @ApiModelProperty(value = "管理员手机号")
     private String phone;
 
+    @NotEmpty(message = "密码不能为空")
     @ApiModelProperty(value = "密码")
     private String password;
 
-    @ApiModelProperty(value = "地区Id")
-    private Integer areaId;
+    @ApiModelProperty(value = "用户等级(3:派出所管理员)",hidden = true)
+    private Integer type = 3;
 
+    @NotEmpty(message = "详细地址不能为空")
     @ApiModelProperty(value = "详细地址")
     private String address;
 

+ 32 - 0
src/main/java/com/metro/entity/ro/Police/SelectPoliceLevelReq.java

@@ -0,0 +1,32 @@
+package com.metro.entity.ro.Police;
+
+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: SelectPersonsPageListReq
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/13 14:47
+ * ...
+ */
+@Data
+@ApiModel
+public class SelectPoliceLevelReq implements Serializable {
+
+    @ApiModelProperty("分局Id")
+    private String companyId;
+
+    @ApiModelProperty("派出所Id")
+    private String branchId;
+
+    @ApiModelProperty("是否查询派出所 默认true,分局管理员需要传递")
+    private Boolean isQueryBranch = true;
+
+}

+ 49 - 0
src/main/java/com/metro/entity/ro/Police/SelectPoliceLevelResp.java

@@ -0,0 +1,49 @@
+package com.metro.entity.ro.Police;
+
+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.List;
+
+/**
+ * @ClassName: SelectPassreCordsPageListResp
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/13 14:48
+ * ...
+ */
+@Data
+@ApiModel
+@Accessors(chain = true)
+public class SelectPoliceLevelResp implements Serializable {
+
+    @ApiModelProperty(value = "Id")
+    private Integer id;
+
+    @ApiModelProperty(value = "分局Id")
+    private String companyId;
+
+    @ApiModelProperty(value = "分局名称")
+    private String companyName;
+
+    @ApiModelProperty("派出所")
+    private List<BranchList> branchList;
+
+    @Data
+    public static class BranchList implements Serializable {
+
+        @ApiModelProperty(value = "Id")
+        private Integer id;
+
+        @ApiModelProperty(value = "派出所Id")
+        private String branchId;
+
+        @ApiModelProperty(value = "派出所名称")
+        private String branchName;
+    }
+}

+ 54 - 0
src/main/java/com/metro/entity/ro/Police/UpdatePoliceReq.java

@@ -0,0 +1,54 @@
+package com.metro.entity.ro.Police;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+
+/**
+ * @ClassName: InsertPoliceReq
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/18 9:33
+ * ...
+ */
+@Data
+public class UpdatePoliceReq implements Serializable {
+
+    @ApiModelProperty(value = "id")
+    @NotEmpty(message = "id不能为空")
+    private Integer id;
+
+    @ApiModelProperty(value = "账号")
+    @NotEmpty(message = "账号不能为空")
+    private String account;
+
+    @NotEmpty(message = "派出所名称不能为空")
+    @ApiModelProperty(value = "派出所名称")
+    private String branchName;
+
+    @NotEmpty(message = "管理员姓名不能为空")
+    @ApiModelProperty(value = "管理员姓名")
+    private String userName;
+
+    @NotEmpty(message = "派出所管理员手机号不能为空")
+    @ApiModelProperty(value = "管理员手机号")
+    private String phone;
+
+    @NotEmpty(message = "密码不能为空")
+    @ApiModelProperty(value = "密码")
+    private String password;
+
+    @ApiModelProperty(value = "用户等级(3:派出所管理员)",hidden = true)
+    private Integer type = 3;
+
+    @NotEmpty(message = "详细地址不能为空")
+    @ApiModelProperty(value = "详细地址")
+    private String address;
+
+    @ApiModelProperty("警号Id")
+    private String policeId;
+
+}

+ 23 - 0
src/main/java/com/metro/entity/ro/Police/UpdatePoliceResp.java

@@ -0,0 +1,23 @@
+package com.metro.entity.ro.Police;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @ClassName: InsertPoliceResp
+ * @Description: TODO
+ * @Author: ZS
+ * @CreateName: lws
+ * @Date 2022/3/18 9:35
+ * ...
+ */
+
+@Data
+@Accessors(chain = true)
+public class UpdatePoliceResp {
+
+    @ApiModelProperty("影响行数")
+    private Integer count;
+
+}

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

@@ -39,6 +39,10 @@ public class InsertAccountReq implements Serializable {
     @ApiModelProperty(value = "详细地址")
     private String address;
 
+    @ApiModelProperty(value = "部门Id")
+    @NotEmpty(message = "部门Id不能为空")
+    private String companyId;
+
     @ApiModelProperty("用户类型")
     private Integer type;
 

+ 10 - 5
src/main/java/com/metro/entity/ro/account/UpdateAccountReq.java

@@ -21,35 +21,40 @@ import java.io.Serializable;
 public class UpdateAccountReq implements Serializable {
 
     @ApiModelProperty("主键")
+    @NotNull(message = "主键为必传参数")
     private Integer id;
 
     @ApiModelProperty(value = "账号名称")
+    @NotEmpty(message = "修改账号为必填参数")
     private String account;
 
     @ApiModelProperty(value = "管理员姓名")
+    @NotEmpty(message = "姓名不能为空")
     private String userName;
 
     @ApiModelProperty(value = "管理员手机号")
+    @NotEmpty(message = "手机号不能为空")
     private String phone;
 
     @ApiModelProperty(value = "密码")
+    @NotEmpty(message = "密码不能为空")
     private String password;
 
+    @ApiModelProperty(value = "部门Id")
+    @NotEmpty(message = "部门Id不能为空")
+    private String companyId;
+
     @ApiModelProperty(value = "地区Id")
+    @NotNull(message = "请选择地区")
     private Integer areaId;
 
     @ApiModelProperty(value = "详细地址")
     private String address;
 
-    @ApiModelProperty(value = "人员类型")
-    private Integer type;
-
     @ApiModelProperty("文件路径")
     private String fileUrl;
 
     @ApiModelProperty("警号Id")
     private String policeId;
 
-    @ApiModelProperty("修改人")
-    private Integer updateId;
 }

+ 1 - 1
src/main/java/com/metro/entity/ro/company/SelectCompanyPageResp.java

@@ -24,7 +24,7 @@ public class SelectCompanyPageResp extends BaseEntity implements Serializable {
     @ApiModelProperty("主键")
     private Integer id;
 
-    @ApiModelProperty("公安id")
+    @ApiModelProperty("派出所id")
     private String companyId;
 
     @ApiModelProperty("公安局name")

+ 24 - 4
src/main/java/com/metro/entity/ro/passrecords/SelectPassreCordsPageListResp.java

@@ -1,5 +1,6 @@
 package com.metro.entity.ro.passrecords;
 
+import com.metro.enums.UserEnums;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -38,20 +39,39 @@ public class SelectPassreCordsPageListResp implements Serializable {
     @ApiModelProperty(value = "住址")
     private String cardAddr;
 
-    @ApiModelProperty(value = "验证方式")
+    @ApiModelProperty(value = "身份证类型")
     private String cardType;
 
-    @ApiModelProperty(value = "是否通行0 = 阻止通行 1 = 可通行,警示信息 2 = 正常通行")
-    private String pass;
+    @ApiModelProperty(value = "验证方式码 是否通行0 = 阻止通行 1 = 可通行,警示信息 2 = 正常通行")
+    private Integer pass;
+
+    @ApiModelProperty(value = "验证方式中文")
+    private String passName;
+    private String getPassName(){
+        return UserEnums.passEnums.getStatusName(this.pass);
+    }
+
+    @ApiModelProperty(value = "人员类型描述")
+    private String kind;
 
     @ApiModelProperty(value = "所属派出所")
     private String companyId;
 
+    @ApiModelProperty(value = "所属派出所名")
+    private String companyName;
+
     @ApiModelProperty(value = "所属派分局")
     private String branchId;
 
+    @ApiModelProperty(value = "所属派分局名")
+    private String branchName;
+
+    @ApiModelProperty(value = "民警名")
+    private String peopleName;
+    public String getPeopleName(){return "李时兴";}
+
     @ApiModelProperty(value = "创建时间")
-    private String createTime;
+    private LocalDateTime createTime;
 
 
 

+ 31 - 0
src/main/java/com/metro/enums/UserEnums.java

@@ -73,4 +73,35 @@ public class UserEnums implements Serializable {
             return "";
         }
     }
+
+    /**
+     * 用户状态枚举
+     */
+    @Getter
+    public enum passEnums {
+
+        STOP(0, "阻止通行"),
+        PASS(1, "可通行"),
+        PASS_NO(2, "可通行"),
+        ;
+
+        private Integer status;
+
+        private String statusName;
+
+        passEnums(Integer status, String statusName) {
+            this.status = status;
+            this.statusName = statusName;
+        }
+
+        // 获取状态名称
+        public static String getStatusName(Integer status) {
+            for (passEnums c : passEnums.values()) {
+                if (c.getStatus().equals(status)) {
+                    return c.getStatusName();
+                }
+            }
+            return "";
+        }
+    }
 }

+ 7 - 12
src/main/java/com/metro/service/PoliceService.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.metro.entity.ro.Police.*;
 import com.metro.entity.ro.account.*;
 
+import java.util.List;
+
 /**
  * @ClassName: PoliceService
  * @Description: TODO
@@ -15,22 +17,15 @@ import com.metro.entity.ro.account.*;
 public interface PoliceService {
 
     IPage<SelectPolicePageResp> page(SelectPolicePageReq req);
-    /**
-     * 添加
-     *
-     * @param req 账号信息
-     * @return 影响行数
-     */
-    InsertPoliceResp add(InsertPoliceReq req);
 
+    InsertPoliceResp add(InsertPoliceReq req);
 
-    /*
-     *
-     * 修改回显
-     * */
     DetailPoliceResp detail(DetailPoliceReq req);
 
-    UpdateAccountResp update(UpdateAccountReq req);
+    UpdatePoliceResp update(UpdatePoliceReq req);
 
     DeleteAccountResp delete(DeleteAccountReq req);
+
+    List<SelectPoliceLevelResp> selectLevel(SelectPoliceLevelReq req);
+
 }

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

@@ -170,15 +170,16 @@ public class AccountServiceImpl extends BaseService implements AccountService {
      */
     @Override
     public UpdateAccountResp update(UpdateAccountReq req) {
-        return getUpdateAccountResp(req, accountsMapper);
+        Integer id = getAccountInfo().getId();
+        return getUpdateAccountResp(req, accountsMapper,id);
     }
 
-    static UpdateAccountResp getUpdateAccountResp(UpdateAccountReq req, AccountsMapper accountsMapper) {
+    static UpdateAccountResp getUpdateAccountResp(UpdateAccountReq req, AccountsMapper accountsMapper,Integer id) {
         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.isEmpty(account)) throw new BusinessException(account.getAccount() + "不存在!不能修改");
         return new UpdateAccountResp().setCount(accountsMapper.updateById(MapperManager.mapper(req, Account.class, p -> p.setPassword(MD5UtilNew.string2MD5(req.getPassword()))
-                .setUpdateTime(LocalDateTime.now()).setType(req.getType()).setUpdateId(req.getUpdateId()))));
+                .setUpdateTime(LocalDateTime.now()).setUpdateId(id))));
     }
 
     /**
@@ -297,7 +298,6 @@ public class AccountServiceImpl extends BaseService implements AccountService {
                     successNum++;
                     Account mapper = MapperManager.mapper(user, Account.class, p -> {
                         p.setPassword(MD5UtilNew.string2MD5(user.getPassword())).setAreaId(3230).setType(Integer.valueOf(type)).setCreateTime(LocalDateTime.now());
-                        p.setType(1);
                     });
                     accountsMapper.insert(mapper);
                     successMsg.append("<br/>" + successNum + "、账号 " + user.getAccount() + " 导入成功");

+ 39 - 9
src/main/java/com/metro/service/impl/PassreCordsServiceImpl.java

@@ -1,11 +1,14 @@
 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.constant.UserConstant;
+import com.metro.entity.po.Company;
 import com.metro.entity.po.PassreCords;
 import com.metro.entity.ro.passrecords.*;
+import com.metro.mapper.CompanysMapper;
 import com.metro.mapper.PassreCordsMapper;
 import com.metro.service.PassreCordsService;
 import com.metro.utils.MapperManager;
@@ -15,6 +18,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName: PassreCordsServiceImpl
@@ -29,6 +36,8 @@ public class PassreCordsServiceImpl implements PassreCordsService {
 
     @Autowired
     private PassreCordsMapper passreCordsMapper;
+    @Autowired
+    private CompanysMapper companysMapper;
 
     /**
      * 警示记录
@@ -41,20 +50,41 @@ public class PassreCordsServiceImpl implements PassreCordsService {
         IPage<SelectPassreCordsPageListResp> respPage = new Page<>(req.getPageNum(), req.getPageSize());
         Page<PassreCords> selectPage = passreCordsMapper.selectPage(new Page<>(req.getPageNum(), req.getPageSize()), pageWrapper(req));
         if (CollectionUtils.isEmpty(selectPage.getRecords())) return respPage;
-        return selectPage.convert(p -> BeanUtil.toBean(p, SelectPassreCordsPageListResp.class));
+        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));
+            }
+        }
+        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()))));
     }
+
     /*
-    * 删除
-    * */
+     * 删除
+     * */
     @Override
     public DeletePassreCordsResq delete(DeletePassreCordsReq req) {
-            return new DeletePassreCordsResq().setCount(passreCordsMapper.updateById(new PassreCords().setId(req.getId())
-                    .setIsDelete(UserConstant.DELETE).setUpdateTimestamp(LocalDateTime.now())));
+        return new DeletePassreCordsResq().setCount(passreCordsMapper.updateById(new PassreCords().setId(req.getId())
+                .setIsDelete(UserConstant.DELETE).setUpdateTimestamp(LocalDateTime.now())));
 
     }
+
     /*
-    * 详情
-    * */
+     * 详情
+     * */
     @Override
     public DetialPassreCordsResq selectById(DetailPassreCordsReq req) {
         PassreCords passreCords = passreCordsMapper.selectById(req.getId());
@@ -68,8 +98,8 @@ public class PassreCordsServiceImpl implements PassreCordsService {
         LambdaQueryWrapper<PassreCords> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(PassreCords::getIsDelete, UserConstant.NOT_DELETE);
         wrapper.eq(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.eq(StringUtils.isNotEmpty(req.getCardId()), PassreCords::getCardId, req.getCardId());
+        wrapper.eq(StringUtils.isNotEmpty(req.getPhone()), PassreCords::getPhone, req.getPhone());
         return wrapper;
     }
 

+ 86 - 25
src/main/java/com/metro/service/impl/PoliceServiceImpl.java

@@ -22,15 +22,17 @@ import com.metro.utils.MD5UtilNew;
 import com.metro.utils.MapperManager;
 import com.metro.utils.StringUtil;
 import io.github.classgraph.utils.Join;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.assertj.core.util.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.metro.service.impl.AccountServiceImpl.getUpdateAccountResp;
@@ -55,25 +57,31 @@ public class PoliceServiceImpl extends BaseService implements PoliceService {
 
     @Override
     public IPage<SelectPolicePageResp> page(SelectPolicePageReq req) {
-        IPage<SelectPolicePageResp> respPage = new Page<>(req.getPageNum(), req.getPageSize());
-        IPage<Police> selectPage = mapper.selectPage(new Page<>(req.getPageNum(), req.getPageSize()), pageWrapper(req));
-        if (org.springframework.util.CollectionUtils.isEmpty(selectPage.getRecords())) return respPage;
-        Set<String> deptSet = selectPage.getRecords().stream().map(Police::getCompanyId).collect(Collectors.toSet());
-        Map<String, String> companysMap = companysMapper.selectList(new LambdaQueryWrapper<Company>().in(Company::getCompanyId, deptSet)).stream().collect(Collectors.toMap(Company::getCompanyId, Company::getCompanyName, (t1, t2) -> t1));
-        return selectPage.convert(p -> MapperManager.mapper(p, SelectPolicePageResp.class, t -> t.setCompanyName(companysMap.get(p.getCompanyId()))));
+        Page<Company> companyPage = companysMapper.selectPage(new Page<>(req.getPageNum(), req.getPageSize()), pageWrapper(req));
+        if (CollectionUtils.isEmpty(companyPage.getRecords())) return new Page<>();
+        List<Account> accounts = accountsMapper.selectList(new LambdaQueryWrapper<Account>()
+                .like(StringUtils.isNotEmpty(req.getAddress()), Account::getAddress, req.getAddress())
+                .like(StringUtils.isNotEmpty(req.getUserName()), Account::getUserName, req.getUserName())
+                .like(StringUtils.isNotEmpty(req.getPhone()), Account::getPhone, req.getPhone())
+                .in(Account::getCompanyId, companyPage.getRecords().stream().map(Company::getCompanyId).collect(Collectors.toSet())));
+        if (CollectionUtils.isEmpty(accounts)) return new Page<>();
+        Map<String, Account> collect = accounts.stream().collect(Collectors.toMap(Account::getCompanyId, p -> p, (t1, t2) -> t1));
+        return companyPage.convert(p -> MapperManager.mapper(p, SelectPolicePageResp.class, q -> {
+            q.setCompanyName(p.getBranchName()).setId(p.getId());
+            if (!CollectionUtils.isEmpty(collect)) {
+                Account account = collect.get(p.getId()+"");
+                q.setCreateTime(account.getCreateTime()).setAddress(account.getAddress()).setPhone(account.getPhone()).setUserName(account.getUserName());
+            }
+        }));
     }
 
     /*
      * 查询条件
      * */
-    private LambdaQueryWrapper<Police> pageWrapper(SelectPolicePageReq req) {
-        LambdaQueryWrapper<Police> wrapper = new LambdaQueryWrapper<>();
-        wrapper.like(StringUtils.isNotEmpty(req.getUserName()), Police::getUserName, req.getUserName());
-        wrapper.eq(StringUtils.isNotEmpty(req.getPhone()), Police::getPhone, req.getPhone());
-        wrapper.eq(Police::getIsDelete, UserConstant.NOT_DELETE);
-        wrapper.like(StringUtils.isNotEmpty(req.getAddress()), Police::getAddress, req.getAddress());
-        wrapper.eq(StringUtils.isNotEmpty(req.getCompanyId()), Police::getCompanyId, req.getCompanyId());
-        wrapper.gt(Police::getType,getAccountInfo().getType());
+    private LambdaQueryWrapper<Company> pageWrapper(SelectPolicePageReq req) {
+        LambdaQueryWrapper<Company> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Company::getCompanyId, getAccountInfo().getCompanyId());
+        wrapper.like(Company::getBranchName, req.getCompanyId());
         return wrapper;
     }
 
@@ -81,10 +89,19 @@ public class PoliceServiceImpl extends BaseService implements PoliceService {
      * 新增
      * */
     @Override
+    @Transactional
     public InsertPoliceResp add(InsertPoliceReq req) {
+        if(getAccountInfo().getType() != 2) throw new BusinessException("非分局管理员不能注册");
         Police account = mapper.selectOne(new LambdaQueryWrapper<Police>().eq(Police::getAccount, req.getAccount()).eq(Police::getIsDelete, UserConstant.NOT_DELETE));
         if (ObjectUtil.isNotEmpty(account)) throw new BusinessException(account.getAccount() + "已经存在!不能注册");
-        return new InsertPoliceResp().setCount(mapper.insert(MapperManager.mapper(req, Police.class, p -> p.setPassword(MD5UtilNew.string2MD5(req.getPassword())).setType(getAccountInfo().getType() + 1))));
+        int insert = mapper.insert(MapperManager.mapper(req, Police.class, p -> p.setPassword(MD5UtilNew.string2MD5(req.getPassword())).setType(getAccountInfo().getType() + 1)));
+        if (insert == BigDecimal.ZERO.intValue()) throw new BusinessException("创建派出所管理员账号异常!");
+        List<Company> companies = companysMapper.selectList(new LambdaQueryWrapper<Company>().eq(Company::getCompanyId, getAccountInfo().getCompanyId()).eq(Company::getBranchName, req.getBranchName()));
+        if (!CollectionUtils.isEmpty(companies)) throw new BusinessException("派出所已经存在,请重新填写派所名");
+        Company company = companysMapper.selectList(new LambdaQueryWrapper<Company>().eq(Company::getCompanyId, getAccountInfo().getCompanyId()).orderByDesc(Company::getBranchId)).stream().findFirst().orElse(null);
+        int insert1 = companysMapper.insert(company.setCompanyId(Integer.valueOf(company.getBranchId()) + 1 + "").setBranchName(req.getBranchName()));
+        if (insert1 == BigDecimal.ZERO.intValue()) throw new BusinessException("创建派出所失败!");
+        return new InsertPoliceResp().setCount(insert + insert1);
     }
 
     /*
@@ -92,25 +109,69 @@ public class PoliceServiceImpl extends BaseService implements PoliceService {
      * */
     @Override
     public DetailPoliceResp detail(DetailPoliceReq req) {
-        Police Police = mapper.selectById(req.getId());
-        return MapperManager.mapper(Police, DetailPoliceResp.class);
+        if(getAccountInfo().getType() != 2) throw new BusinessException("非分局管理员不能修改!");
+        Company selectOne = companysMapper.selectOne(new LambdaQueryWrapper<Company>().eq(Company::getId, req.getId()));
+        if(ObjectUtils.isEmpty(selectOne)) throw new BusinessException("未获取到派出所信息");
+        Police police = mapper.selectList(new LambdaQueryWrapper<Police>().eq(Police::getId, selectOne.getId()).eq(Police::getIsDelete, UserConstant.NOT_DELETE)).stream().findFirst().orElse(null);
+        return MapperManager.mapper(police, DetailPoliceResp.class, p -> p.setBranchName(selectOne.getBranchName()));
     }
 
     /*
      * 修改账号
      * */
     @Override
-    public UpdateAccountResp update(UpdateAccountReq req) {
-        return getUpdateAccountResp(req, accountsMapper);
+    @Transactional
+    public UpdatePoliceResp update(UpdatePoliceReq req) {
+        if(getAccountInfo().getType() != 2) throw new BusinessException("非分局管理员不能修改!");
+        Police account = mapper.selectOne(new LambdaQueryWrapper<Police>().eq(Police::getAccount, req.getAccount()).eq(Police::getIsDelete, UserConstant.NOT_DELETE));
+        if (ObjectUtil.isEmpty(account)) throw new BusinessException(account.getAccount() + "不存在!不能修改");
+        int insert = mapper.update(MapperManager.mapper(req, Police.class, p -> p.setPassword(MD5UtilNew.string2MD5(req.getPassword())).setUpdateTime(LocalDateTime.now())),new LambdaQueryWrapper<Police>().eq(Police::getAccount,account.getAccount())
+                .eq(Police::getIsDelete,UserConstant.NOT_DELETE));
+        if (insert == BigDecimal.ZERO.intValue()) throw new BusinessException("修改派出所管理员账号异常!");
+        Company selectOne = companysMapper.selectOne(new LambdaQueryWrapper<Company>().eq(Company::getId, req.getId()).ne(Company::getBranchName,req.getBranchName()));
+        if (ObjectUtils.isEmpty(selectOne)) throw new BusinessException("派出所已经存在,请重新填写派所名");
+        int insert1 = companysMapper.updateById(new Company().setBranchName(req.getBranchName()).setId(req.getId()));
+        if (insert1 == BigDecimal.ZERO.intValue()) throw new BusinessException("修改派出所失败!");
+        return new UpdatePoliceResp().setCount(insert+insert1);
     }
 
     /*
      * 删除账号
      * */
     @Override
+    @Transactional
     public DeleteAccountResp delete(DeleteAccountReq req) {
-        return new DeleteAccountResp().setCount(accountsMapper.updateById(new Account().setId(req.getId())
-                .setIsDelete(UserConstant.DELETE).setUpdateTime(LocalDateTime.now())));
+        if(getAccountInfo().getType() != 2) throw new BusinessException("非分局管理员不能删除!");
+        Company selectOne = companysMapper.selectOne(new LambdaQueryWrapper<Company>().eq(Company::getId, req.getId()));
+        if(ObjectUtils.isEmpty(selectOne)) throw new BusinessException("未获取到派出所信息");
+        List<Police> police = mapper.selectList(new LambdaQueryWrapper<Police>().eq(Police::getId, selectOne.getId()).eq(Police::getIsDelete, UserConstant.NOT_DELETE));
+        if(CollectionUtils.isEmpty(police)) throw new BusinessException("派出所下有用户,不能删除");
+        return new DeleteAccountResp().setCount(companysMapper.deleteById(req.getId()));
+    }
+
+    /**
+     * 派出所下拉查询(分局、派出所)
+     *
+     * @param req
+     * @return
+     */
+    @Override
+    public List<SelectPoliceLevelResp> selectLevel(SelectPoliceLevelReq req) {
+        List<Company> companies = companysMapper.selectList(new LambdaQueryWrapper<Company>().eq(StringUtils.isNotEmpty(req.getCompanyId()), Company::getCompanyId, req.getCompanyId()));
+        if (CollectionUtils.isEmpty(companies)) return Lists.newArrayList();
+        ArrayList<Company> companyList = companies.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Company::getCompanyId))), ArrayList::new));
+        if (!req.getIsQueryBranch()) {
+            return companyList.stream().map(p -> MapperManager.mapper(p, SelectPoliceLevelResp.class)).collect(Collectors.toList());
+        }
+        return companyList.stream().map(p -> MapperManager.mapper(p, SelectPoliceLevelResp.class, q -> {
+            List<Company> selectList = companysMapper.selectList(new LambdaQueryWrapper<Company>().eq(Company::getCompanyId, p.getCompanyId())
+                    .eq(StringUtils.isNotEmpty(req.getBranchId()), Company::getBranchId, req.getBranchId()));
+            if (!CollectionUtils.isEmpty(selectList)) {
+                q.setBranchList(selectList.stream().map(
+                        t -> MapperManager.mapper(t, SelectPoliceLevelResp.BranchList.class)
+                ).collect(Collectors.toList()));
+            }
+        })).collect(Collectors.toList());
     }
 
 }

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

@@ -8,7 +8,7 @@ metro:
   # 版权年份
   copyrightYear: 2022
   # 文件路径 示例( Windows配置D:/lws/uploadPath,Linux配置 /home/lws/uploadPath)
-  profile: D:/uploadPath
+  profile: C:/uploadPath
   # 获取ip地址开关
   addressEnabled: false