Browse Source

登录增加菜单

lock-dev
wangwei_123 4 days ago
parent
commit
ba3ff90574
  1. 16
      cc-admin-master/dependencies/pom.xml
  2. 2
      cc-admin-master/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PageParam.java
  3. 8
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/controller/admin/PlanItemController.java
  4. 8
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/controller/admin/PlanItemDetailController.java
  5. 10
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/controller/admin/PlanLifeLockController.java
  6. 78
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/controller/admin/PointController.java
  7. 4
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/LockDO.java
  8. 1
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/LockGuideDO.java
  9. 2
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/PlanItemDetailDO.java
  10. 2
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/PlanLifeLockDO.java
  11. 27
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/entity/LockEntity.java
  12. 2
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/entity/PlanLifeLockEntity.java
  13. 19
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/enums/ErrorCodeConstants.java
  14. 6
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/LockMapper.java
  15. 2
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/PlanItemDetailMapper.java
  16. 1
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/PlanItemMapper.java
  17. 3
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/PlanLifeLockMapper.java
  18. 1
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/PlanMapper.java
  19. 5
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/PointMapper.java
  20. 2
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/LockService.java
  21. 18
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/PointService.java
  22. 18
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/impl/IsolationPointServiceImpl.java
  23. 6
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/impl/LockServiceImpl.java
  24. 6
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/impl/PlanItemDetailServiceImpl.java
  25. 22
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/impl/PlanLifeLockServiceImpl.java
  26. 281
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/impl/PointServiceImpl.java
  27. 174
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/util/WordUtils.java
  28. 12
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockGuideSaveReqVO.java
  29. 4
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockPageReqVO.java
  30. 4
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockRespVO.java
  31. 4
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockSaveReqVO.java
  32. 24
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockStatusVo.java
  33. 19
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockWordPointDataVo.java
  34. 19
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockWordPointVo.java
  35. 2
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanLifeLockPageReqVO.java
  36. 2
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanLifeLockRespVO.java
  37. 2
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanLifeLockSaveReqVO.java
  38. 7
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanPageReqVO.java
  39. 3
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanRespVO.java
  40. 5
      cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanSaveReqVO.java
  41. 8
      cc-admin-master/yudao-module-lock/src/main/resources/IsolationPointController.java
  42. 0
      cc-admin-master/yudao-module-lock/src/main/resources/mapper/IsolationPointMapper.xml
  43. 0
      cc-admin-master/yudao-module-lock/src/main/resources/mapper/LockGuideMapper.xml
  44. 5
      cc-admin-master/yudao-module-lock/src/main/resources/mapper/LockMapper.xml
  45. 0
      cc-admin-master/yudao-module-lock/src/main/resources/mapper/LockWordRecordMapper.xml
  46. 19
      cc-admin-master/yudao-module-lock/src/main/resources/mapper/PlanItemDetailMapper.xml
  47. 7
      cc-admin-master/yudao-module-lock/src/main/resources/mapper/PlanItemMapper.xml
  48. 8
      cc-admin-master/yudao-module-lock/src/main/resources/mapper/PlanLifeLockMapper.xml
  49. 6
      cc-admin-master/yudao-module-lock/src/main/resources/mapper/PlanMapper.xml
  50. 10
      cc-admin-master/yudao-module-lock/src/main/resources/mapper/PointMapper.xml
  51. 10
      cc-admin-master/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthRegisterReqVO.java
  52. 3
      cc-admin-master/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java
  53. 11
      cc-admin-master/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java
  54. 2
      cc-admin-master/yudao-server/pom.xml

16
cc-admin-master/dependencies/pom.xml

@ -75,10 +75,26 @@
<jimureport.version>2.0.0</jimureport.version>
<jimubi.version>1.9.5</jimubi.version>
<weixin-java.version>4.7.5.B</weixin-java.version>
<word.version>5.2.3</word.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${word.version}</version> <!-- 建议使用较新稳定版本 -->
</dependency>
<!-- (可选,但建议包含) Apache POI for reading old .doc files -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>${word.version}</version>
</dependency>
<!-- 统一依赖管理 -->
<dependency>
<groupId>io.netty</groupId>

2
cc-admin-master/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PageParam.java

@ -30,7 +30,7 @@ public class PageParam implements Serializable {
@Schema(description = "每页条数,最大值为 100", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
@NotNull(message = "每页条数不能为空")
@Min(value = 1, message = "每页条数最小值为 1")
@Max(value = 99999999, message = "每页条数最大值为 99999999")
@Max(value = 100, message = "每页条数最大值为 100")
private Integer pageSize = PAGE_SIZE;
}

8
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/controller/admin/PlanItemController.java

@ -41,14 +41,14 @@ public class PlanItemController {
@PostMapping("/create")
@Operation(summary = "创建隔离计划子项")
@PreAuthorize("@ss.hasPermission('isolation:plan-item:create')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-item:create')")
public CommonResult<Long> createPlanItem(@Valid @RequestBody PlanItemSaveReqVO createReqVO) {
return success(planItemService.createPlanItem(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新隔离计划子项")
@PreAuthorize("@ss.hasPermission('isolation:plan-item:update')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-item:update')")
public CommonResult<Boolean> updatePlanItem(@Valid @RequestBody PlanItemSaveReqVO updateReqVO) {
planItemService.updatePlanItem(updateReqVO);
return success(true);
@ -75,7 +75,7 @@ public class PlanItemController {
@GetMapping("/get")
@Operation(summary = "获得隔离计划子项")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('isolation:plan-item:query')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-item:query')")
public CommonResult<PlanItemRespVO> getPlanItem(@RequestParam("id") Long id) {
PlanItemDO planItem = planItemService.getPlanItem(id);
return success(BeanUtils.toBean(planItem, PlanItemRespVO.class));
@ -83,7 +83,7 @@ public class PlanItemController {
@GetMapping("/page")
@Operation(summary = "获得隔离计划子项分页")
@PreAuthorize("@ss.hasPermission('isolation:plan-item:query')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-item:query')")
public CommonResult<PageResult<PlanItemRespVO>> getPlanItemPage(@Valid PlanItemPageReqVO pageReqVO) {
PageResult<PlanItemDO> pageResult = planItemService.getPlanItemPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanItemRespVO.class));

8
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/controller/admin/PlanItemDetailController.java

@ -44,14 +44,14 @@ public class PlanItemDetailController {
@PostMapping("/create")
@Operation(summary = "创建隔离计划子项详情")
@PreAuthorize("@ss.hasPermission('isolation:plan-item-detail:create')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-item-detail:create')")
public CommonResult<Long> createPlanItemDetail(@Valid @RequestBody PlanItemDetailSaveReqVO createReqVO) {
return success(planItemDetailService.createPlanItemDetail(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新隔离计划子项详情")
@PreAuthorize("@ss.hasPermission('isolation:plan-item-detail:update')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-item-detail:update')")
public CommonResult<Boolean> updatePlanItemDetail(@Valid @RequestBody PlanItemDetailSaveReqVO updateReqVO) {
planItemDetailService.updatePlanItemDetail(updateReqVO);
return success(true);
@ -78,7 +78,7 @@ public class PlanItemDetailController {
@GetMapping("/get")
@Operation(summary = "获得隔离计划子项详情")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('isolation:plan-item-detail:query')")
// @PreAuthorize("@ss.hasPermission('isolation:plan-item-detail:query')")
public CommonResult<PlanItemDetailRespVO> getPlanItemDetail(@RequestParam("id") Long id) {
PlanItemDetailDO planItemDetail = planItemDetailService.getPlanItemDetail(id);
return success(BeanUtils.toBean(planItemDetail, PlanItemDetailRespVO.class));
@ -86,7 +86,7 @@ public class PlanItemDetailController {
@GetMapping("/page")
@Operation(summary = "获得隔离计划子项详情分页")
@PreAuthorize("@ss.hasPermission('isolation:plan-item-detail:query')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-item-detail:query')")
public CommonResult<PageResult<PlanItemDetailRespVO>> getPlanItemDetailPage(@Valid PlanItemDetailPageReqVO pageReqVO) {
PageResult<PlanItemDetailDO> pageResult = planItemDetailService.getPlanItemDetailPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanItemDetailRespVO.class));

10
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/controller/admin/PlanLifeLockController.java

@ -46,7 +46,7 @@ public class PlanLifeLockController {
@PostMapping("/create")
@Operation(summary = "创建个人生命锁")
@PreAuthorize("@ss.hasPermission('isolation:plan-life-lock:create')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-life-lock:create')")
public CommonResult<Long> createPlanLifeLock(@Valid @RequestBody PlanLifeLockSaveReqVO createReqVO) {
return success(planLifeLockService.createPlanLifeLock(createReqVO));
}
@ -54,7 +54,7 @@ public class PlanLifeLockController {
@PutMapping("/update")
@Operation(summary = "更新个人生命锁")
@PreAuthorize("@ss.hasPermission('isolation:plan-life-lock:update')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-life-lock:update')")
public CommonResult<Boolean> updatePlanLifeLock(@Valid @RequestBody PlanLifeLockSaveReqVO updateReqVO) {
planLifeLockService.updatePlanLifeLock(updateReqVO);
return success(true);
@ -63,7 +63,7 @@ public class PlanLifeLockController {
@DeleteMapping("/delete")
@Operation(summary = "删除个人生命锁")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('isolation:plan-life-lock:delete')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-life-lock:delete')")
public CommonResult<Boolean> deletePlanLifeLock(@RequestParam("id") Long id) {
planLifeLockService.deletePlanLifeLock(id);
return success(true);
@ -81,7 +81,7 @@ public class PlanLifeLockController {
@GetMapping("/get")
@Operation(summary = "获得个人生命锁")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('isolation:plan-life-lock:query')")
//@PreAuthorize("@ss.hasPermission('isolation:plan-life-lock:query')")
public CommonResult<PlanLifeLockRespVO> getPlanLifeLock(@RequestParam("id") Long id) {
PlanLifeLockDO planLifeLock = planLifeLockService.getPlanLifeLock(id);
return success(BeanUtils.toBean(planLifeLock, PlanLifeLockRespVO.class));
@ -89,7 +89,7 @@ public class PlanLifeLockController {
@GetMapping("/page")
@Operation(summary = "获得个人生命锁分页")
@PreAuthorize("@ss.hasPermission('isolation:plan-life-lock:query')")
// @PreAuthorize("@ss.hasPermission('isolation:plan-life-lock:query')")
public CommonResult<PageResult<PlanLifeLockRespVO>> getPlanLifeLockPage(@Valid PlanLifeLockPageReqVO pageReqVO) {
PageResult<PlanLifeLockDO> pageResult = planLifeLockService.getPlanLifeLockPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanLifeLockRespVO.class));

78
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/controller/admin/PointController.java

@ -1,10 +1,19 @@
package cn.iocoder.yudao.module.lock.controller.admin;
import cn.iocoder.yudao.module.lock.dal.PointDO;
import cn.iocoder.yudao.module.lock.dal.entity.LockEntity;
import cn.iocoder.yudao.module.lock.dal.entity.PlanEntity;
import cn.iocoder.yudao.module.lock.enums.ErrorCodeConstants;
import cn.iocoder.yudao.module.lock.service.PointService;
import cn.iocoder.yudao.module.lock.vo.LockStatusVo;
import cn.iocoder.yudao.module.lock.vo.PointPageReqVO;
import cn.iocoder.yudao.module.lock.vo.PointRespVO;
import cn.iocoder.yudao.module.lock.vo.PointSaveReqVO;
import org.apache.poi.extractor.ExtractorFactory;
import org.apache.poi.extractor.POITextExtractor;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -15,18 +24,29 @@ import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.*;
import jakarta.servlet.http.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.*;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import org.springframework.web.multipart.MultipartFile;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
@ -102,4 +122,62 @@ public class PointController {
BeanUtils.toBean(list, PointRespVO.class));
}
@GetMapping("/getListAll")
@Operation(summary = "获取全部")
public CommonResult<LockEntity> getListAll() {
return success(pointService.getListAll());
}
@PutMapping("/bindlock")
@Operation(summary = "修改锁状态")
public CommonResult<Boolean> bindlock(@RequestBody LockStatusVo updateReqVO) {
pointService.bindlock(updateReqVO);
return success(true);
}
@PutMapping("/createLock")
@Operation(summary = "上锁")
public CommonResult<Boolean> createLock(@RequestBody LockStatusVo updateReqVO) {
pointService.createLock(updateReqVO);
return success(true);
}
@PutMapping("/verifyLock")
@Operation(summary = "验证")
public CommonResult<Boolean> verifyLock(@RequestBody LockStatusVo updateReqVO) {
pointService.verifyLock(updateReqVO);
return success(true);
}
@PutMapping("/verifyUnLock")
@Operation(summary = "验证解锁")
public CommonResult<Boolean> verifyUnLock(@RequestBody LockStatusVo updateReqVO) {
pointService.verifyUnLock(updateReqVO);
return success(true);
}
@PutMapping("/unLock")
@Operation(summary = "解锁")
public CommonResult<Boolean> unLock(@RequestBody LockStatusVo updateReqVO) {
pointService.unLock(updateReqVO);
return success(true);
}
@PostMapping(value = "/import", consumes = "multipart/form-data")
@Operation(summary = "从 Word 文件导入隔离点")
public CommonResult<Boolean> importPointsFromWord(@Valid @RequestPart("file") MultipartFile file) {
if (Objects.isNull(file) || file.isEmpty()) {
throw exception(ErrorCodeConstants.IMPORT_ERROR);
}
String contentType = file.getContentType();
if (!"application/vnd.openxmlformats-officedocument.wordprocessingml.document".equals(contentType) &&
!"application/msword".equals(contentType)) {
throw exception(ErrorCodeConstants.IMPORT_FILE_ERROR);
}
pointService.importPointsFromWord(file);
return success(true);
}
}

4
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/LockDO.java

@ -39,11 +39,11 @@ public class LockDO extends BaseDO {
/**
* 状态
*/
private String lockStatus;
private Integer lockStatus;
/**
* 锁具类型
*/
private String lockType;
private Integer lockType;
/**
* 启用状态: 0=未启用, 1=已启用
*/

1
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/LockGuideDO.java

@ -62,4 +62,5 @@ public class LockGuideDO extends BaseDO {
*/
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private Long verifierHelperId;
}

2
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/PlanItemDetailDO.java

@ -40,7 +40,7 @@ public class PlanItemDetailDO extends BaseDO {
*/
private Long lockId;
/**
* 锁状态: 0=未上锁, 1=已上锁, 2=已解锁
* 状态: 0=未上锁, 1=已上锁, 2=已解锁
*/
private Integer lockStatus;

2
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/PlanLifeLockDO.java

@ -40,7 +40,7 @@ public class PlanLifeLockDO extends BaseDO {
/**
* 生命锁类型
*/
private String lockType;
private Integer lockType;
/**
* 锁定状态: 0=未上锁, 1=已上锁
*/

27
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/entity/LockEntity.java

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.lock.dal.entity;
import cn.iocoder.yudao.module.lock.dal.*;
import lombok.Data;
import java.util.List;
@Data
public class LockEntity {
private List<IsolationPointDO> isolationPointList;
private List<LockDO> lockList;
private List<LockGuideDO> lockGuideList;
private List<PlanDO> planList;
private List<PlanItemDetailDO> planItemDetailList;
private List<PlanItemDO> planItemList;
private List<PlanLifeLockDO> planLifeLockList;
private List<PointDO> pointList;
}

2
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/dal/entity/PlanLifeLockEntity.java

@ -30,7 +30,7 @@ public class PlanLifeLockEntity {
/**
* 生命锁类型
*/
private String lockType;
private Integer lockType;
/**
* 锁定状态: 0=未上锁, 1=已上锁
*/

19
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/enums/ErrorCodeConstants.java

@ -10,7 +10,6 @@ public interface ErrorCodeConstants {
ErrorCode LOCK_WORD_RECORD_NOT_EXISTS = new ErrorCode(1_005_000_002, "电子锁操作记录不存在");
ErrorCode ISOLATION_POINT_NOT_EXISTS = new ErrorCode(1_005_000_003, "指导书与隔离点关联不存在");
ErrorCode PLAN_NOT_EXISTS = new ErrorCode(1_005_000_004, "隔离计划不存在");
ErrorCode PLAN_ITEM_NOT_EXISTS = new ErrorCode(1_005_000_005, "隔离计划子项不存在");
@ -22,6 +21,24 @@ public interface ErrorCodeConstants {
ErrorCode PLAN_LIFE_LOCK_NOT_EXISTS = new ErrorCode(1_005_000_008, "个人生命锁不存在");
ErrorCode POINT_NOT_EXISTS = new ErrorCode(1_005_000_009, "隔离点不存在");
ErrorCode POINT_NUMBER_EXISTS = new ErrorCode(1_005_000_009, "隔离点编号已经存在");
ErrorCode CENTRALIZED_LISTING_LOCK_NOT_EXISTS = new ErrorCode(1_005_000_010, "请先创建集中挂牌人锁");
ErrorCode CENTRALIZED_LISTING_LOCK_EXISTS = new ErrorCode(1_005_000_010, "请勿重复创建挂牌人锁");
ErrorCode ISOLATION_POINT_EXISTS = new ErrorCode(1_005_000_011, "指导书与隔离点关联已经存在");
ErrorCode PLAN_LIFE_LOCK_EXISTS = new ErrorCode(1_005_000_001, "需要等受影响人锁全部解开才能开锁");
ErrorCode LOCK_STATUS_ERROR = new ErrorCode(1_005_000_001, "已经上锁无法重复上锁");
ErrorCode DETAIL_UNLOCK_STATUS_ERROR = new ErrorCode(1_005_000_001, "该锁已经解锁");
ErrorCode DETAIL_LOCK_STATUS_ERROR = new ErrorCode(1_005_000_001, "该锁已经验证");
ErrorCode DETAIL_LOCK_VERITY_ERROR = new ErrorCode(1_005_000_001, "该锁未验证");
ErrorCode PLAN_ITEM_DETAIL_LOCK_STATUS_ERROR = new ErrorCode(1_005_000_001, "无法重复上锁");
ErrorCode IMPORT_ERROR = new ErrorCode(1_005_000_001, "上传的 Word 文件不能为空");
ErrorCode IMPORT_FILE_ERROR = new ErrorCode(1_005_000_001, "仅支持 Word 文件(.doc 或 .docx");
}

6
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/LockMapper.java

@ -6,6 +6,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* 电子锁 Mapper
@ -28,4 +32,6 @@ public interface LockMapper extends BaseMapperX<LockDO> {
.orderByDesc(LockDO::getId));
}
void updateStatus(@Param("id") Long id,@Param("status")Integer status);
}

2
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/PlanItemDetailMapper.java

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Update;
/**
@ -26,4 +27,5 @@ public interface PlanItemDetailMapper extends BaseMapperX<PlanItemDetailDO> {
.orderByDesc(PlanItemDetailDO::getId));
}
void updateDetailLockStatus(Integer status,Long planItemDetailId, Long lockId,Long operateRecordId,Long verifyRecordId);
}

1
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/PlanItemMapper.java

@ -28,4 +28,5 @@ public interface PlanItemMapper extends BaseMapperX<PlanItemDO> {
.orderByDesc(PlanItemDO::getId));
}
void updateStatus(Long isolationPlanItemId, Integer status);
}

3
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/PlanLifeLockMapper.java

@ -7,6 +7,8 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
/**
* 个人生命锁 Mapper
*
@ -27,4 +29,5 @@ public interface PlanLifeLockMapper extends BaseMapperX<PlanLifeLockDO> {
.orderByDesc(PlanLifeLockDO::getId));
}
void updateStatus(Long id, Integer status, Date unlockTime);
}

1
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/PlanMapper.java

@ -22,4 +22,5 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
.orderByDesc(PlanDO::getId));
}
void updateStatus(Long planId, Integer status);
}

5
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/PointMapper.java

@ -6,6 +6,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* 隔离点 Mapper
@ -24,4 +28,5 @@ public interface PointMapper extends BaseMapperX<PointDO> {
.orderByDesc(PointDO::getId));
}
void updateStatusBatch(@Param("idList") List<Long> idList, @Param("status") Integer status);
}

2
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/LockService.java

@ -60,4 +60,6 @@ public interface LockService {
*/
PageResult<LockDO> getLockPage(LockPageReqVO pageReqVO);
}

18
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/PointService.java

@ -3,11 +3,15 @@ package cn.iocoder.yudao.module.lock.service;
import java.util.*;
import cn.iocoder.yudao.module.lock.dal.PointDO;
import cn.iocoder.yudao.module.lock.dal.entity.LockEntity;
import cn.iocoder.yudao.module.lock.dal.entity.PlanEntity;
import cn.iocoder.yudao.module.lock.vo.LockStatusVo;
import cn.iocoder.yudao.module.lock.vo.PointPageReqVO;
import cn.iocoder.yudao.module.lock.vo.PointSaveReqVO;
import jakarta.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.springframework.web.multipart.MultipartFile;
/**
* 隔离点 Service 接口
@ -61,4 +65,18 @@ public interface PointService {
*/
PageResult<PointDO> getPointPage(PointPageReqVO pageReqVO);
LockEntity getListAll();
void bindlock(LockStatusVo updateReqVO);
void createLock(LockStatusVo updateReqVO);
void verifyLock(LockStatusVo updateReqVO);
void verifyUnLock(LockStatusVo updateReqVO);
void unLock(LockStatusVo updateReqVO);
void importPointsFromWord(MultipartFile file);
}

18
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/impl/IsolationPointServiceImpl.java

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.lock.mapper.IsolationPointMapper;
import cn.iocoder.yudao.module.lock.service.IsolationPointService;
import cn.iocoder.yudao.module.lock.vo.IsolationPointPageReqVO;
import cn.iocoder.yudao.module.lock.vo.IsolationPointSaveReqVO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -34,6 +35,14 @@ public class IsolationPointServiceImpl implements IsolationPointService {
@Override
public Long createIsolationPoint(IsolationPointSaveReqVO createReqVO) {
// 插入
QueryWrapper<IsolationPointDO> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("guide_id", createReqVO.getGuideId());
objectQueryWrapper.eq("isolation_point_id", createReqVO.getIsolationPointId());
IsolationPointDO isolationPointDO = isolationPointMapper.selectOne(objectQueryWrapper);
if (isolationPointDO != null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.ISOLATION_POINT_EXISTS);
}
IsolationPointDO isolationPoint = BeanUtils.toBean(createReqVO, IsolationPointDO.class);
isolationPointMapper.insert(isolationPoint);
@ -45,6 +54,15 @@ public class IsolationPointServiceImpl implements IsolationPointService {
public void updateIsolationPoint(IsolationPointSaveReqVO updateReqVO) {
// 校验存在
validateIsolationPointExists(updateReqVO.getId());
QueryWrapper<IsolationPointDO> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("guide_id", updateReqVO.getGuideId());
objectQueryWrapper.eq("isolation_point_id", updateReqVO.getIsolationPointId());
IsolationPointDO isolationPointDO = isolationPointMapper.selectOne(objectQueryWrapper);
if (isolationPointDO != null && !isolationPointDO.getId().equals(updateReqVO.getId())) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.ISOLATION_POINT_EXISTS);
}
// 更新
IsolationPointDO updateObj = BeanUtils.toBean(updateReqVO, IsolationPointDO.class);
isolationPointMapper.updateById(updateObj);

6
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/impl/LockServiceImpl.java

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.lock.service.LockService;
import cn.iocoder.yudao.module.lock.vo.LockPageReqVO;
import cn.iocoder.yudao.module.lock.vo.LockSaveReqVO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
@ -49,6 +50,7 @@ public class LockServiceImpl implements LockService {
// 校验存在
log.info("[updateLock][updateReqVO({})]", updateReqVO);
validateLockExists(updateReqVO.getId());
// 更新
LockDO updateObj = BeanUtils.toBean(updateReqVO, LockDO.class);
lockMapper.updateById(updateObj);
@ -70,7 +72,8 @@ public class LockServiceImpl implements LockService {
private void validateLockExists(Long id) {
if (lockMapper.selectById(id) == null) {
LockDO lockDO = lockMapper.selectById(id);
if (lockDO == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.LOCK_NOT_EXISTS);
}
}
@ -85,4 +88,5 @@ public class LockServiceImpl implements LockService {
return lockMapper.selectPage(pageReqVO);
}
}

6
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/impl/PlanItemDetailServiceImpl.java

@ -50,6 +50,12 @@ public class PlanItemDetailServiceImpl implements PlanItemDetailService {
planItemDetailMapper.updateById(updateObj);
}
private void checkLockStatus(PlanItemDetailSaveReqVO updateReqVO) {
if (updateReqVO.getLockStatus() != null){
}
}
@Override
public void deletePlanItemDetail(Long id) {
// 校验存在

22
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/impl/PlanLifeLockServiceImpl.java

@ -1,8 +1,11 @@
package cn.iocoder.yudao.module.lock.service.impl;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import cn.iocoder.yudao.module.lock.dal.LockDO;
import cn.iocoder.yudao.module.lock.dal.PlanItemDetailDO;
import cn.iocoder.yudao.module.lock.dal.PlanLifeLockDO;
import cn.iocoder.yudao.module.lock.enums.ErrorCodeConstants;
import cn.iocoder.yudao.module.lock.mapper.PlanItemDetailMapper;
import cn.iocoder.yudao.module.lock.mapper.PlanLifeLockMapper;
import cn.iocoder.yudao.module.lock.service.PlanLifeLockService;
import cn.iocoder.yudao.module.lock.vo.PlanLifeLockPageReqVO;
@ -32,7 +35,8 @@ public class PlanLifeLockServiceImpl implements PlanLifeLockService {
@Resource
private PlanLifeLockMapper planLifeLockMapper;
@Override
@Resource
private PlanItemDetailMapper planItemDetailMapper;
public Long createPlanLifeLock(PlanLifeLockSaveReqVO createReqVO) {
List<PlanLifeLockDO> listAll = getListAll(createReqVO.getIsolationPlanItemDetailId());
@ -77,9 +81,23 @@ public class PlanLifeLockServiceImpl implements PlanLifeLockService {
private void validatePlanLifeLockExists(Long id) {
if (planLifeLockMapper.selectById(id) == null) {
PlanLifeLockDO planLifeLockDO = planLifeLockMapper.selectById(id);
if (planLifeLockDO == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PLAN_LIFE_LOCK_NOT_EXISTS);
}
PlanItemDetailDO planItemDetailDO = planItemDetailMapper.selectById(planLifeLockDO.getIsolationPlanItemDetailId());
if (!planItemDetailDO.getLockStatus().equals(3)){
throw ServiceExceptionUtil.exception(ErrorCodeConstants.DETAIL_UNLOCK_STATUS_ERROR);
}
QueryWrapper<PlanLifeLockDO> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("isolation_plan_item_detail_id", planLifeLockDO.getIsolationPlanItemDetailId());
objectQueryWrapper.eq("lock_type", 5);//5是受影响人锁
objectQueryWrapper.eq("lock_status", 1);//1是锁已上锁
List<PlanLifeLockDO> planLifeLockDOS = planLifeLockMapper.selectList(objectQueryWrapper);
if (!planLifeLockDOS.isEmpty() && !planLifeLockDO.getLockType().equals(5)){
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PLAN_LIFE_LOCK_EXISTS);
}
}
@Override

281
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/service/impl/PointServiceImpl.java

@ -1,22 +1,34 @@
package cn.iocoder.yudao.module.lock.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import cn.iocoder.yudao.module.lock.dal.PointDO;
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
import cn.iocoder.yudao.module.lock.dal.*;
import cn.iocoder.yudao.module.lock.dal.entity.*;
import cn.iocoder.yudao.module.lock.enums.ErrorCodeConstants;
import cn.iocoder.yudao.module.lock.mapper.PointMapper;
import cn.iocoder.yudao.module.lock.mapper.*;
import cn.iocoder.yudao.module.lock.service.LockWorkRecordService;
import cn.iocoder.yudao.module.lock.service.PointService;
import cn.iocoder.yudao.module.lock.vo.PointPageReqVO;
import cn.iocoder.yudao.module.lock.vo.PointSaveReqVO;
import cn.iocoder.yudao.module.lock.util.WordUtils;
import cn.iocoder.yudao.module.lock.vo.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import java.time.LocalDateTime;
import java.util.*;
import java.util.List;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import org.springframework.web.multipart.MultipartFile;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static java.util.stream.Collectors.groupingBy;
/**
@ -28,13 +40,42 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
@Validated
public class PointServiceImpl implements PointService {
private static final int LOCK_STATUS_UNLOCKED = 0;
private static final int LOCK_STATUS_LOCKED = 5;
private static final int UNLOCK_STATUS_LOCKED = 4;
private static final int PLAN_ITEM_STATUS_UNLOCKED = 1;
private static final int PLAN_STATUS_PARTIALLY_UNLOCKED = 2;
private static final int LOCK_MAIN_STATUS_UNLOCKED = 2;
private static final int CREATE_LOCK_STATUS = 7;
private static final int VERITY_STATUS_UNLOCKED = 3;
@Resource
private PointMapper pointMapper;
@Resource
private IsolationPointMapper isolationPointMapper;
@Resource
private LockGuideMapper lockGuideMapper;
@Resource
private PlanItemDetailMapper planItemDetailMapper;
@Resource
private PlanItemMapper planItemMapper;
@Resource
private PlanLifeLockMapper planLifeLockMapper;
@Resource
private LockMapper lockMapper;
@Resource
private PlanMapper planMapper;
@Override
public Long createPoint(PointSaveReqVO createReqVO) {
// 插入
PointDO point = BeanUtils.toBean(createReqVO, PointDO.class);
QueryWrapper<PointDO> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("ip_number", point.getIpNumber());
PointDO pointDO = pointMapper.selectOne(objectQueryWrapper);
if (pointDO != null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.POINT_NUMBER_EXISTS);
}
pointMapper.insert(point);
// 返回
@ -45,6 +86,14 @@ public class PointServiceImpl implements PointService {
public void updatePoint(PointSaveReqVO updateReqVO) {
// 校验存在
validatePointExists(updateReqVO.getId());
QueryWrapper<PointDO> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("ip_number", updateReqVO.getIpNumber());
PointDO pointDO = pointMapper.selectOne(objectQueryWrapper);
if (pointDO != null && !pointDO.getId().equals(updateReqVO.getId())) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.POINT_NUMBER_EXISTS);
}
// 更新
PointDO updateObj = BeanUtils.toBean(updateReqVO, PointDO.class);
pointMapper.updateById(updateObj);
@ -59,10 +108,10 @@ public class PointServiceImpl implements PointService {
}
@Override
public void deletePointListByIds(List<Long> ids) {
public void deletePointListByIds(List<Long> ids) {
// 删除
pointMapper.deleteByIds(ids);
}
}
private void validatePointExists(Long id) {
@ -81,4 +130,224 @@ public class PointServiceImpl implements PointService {
return pointMapper.selectPage(pageReqVO);
}
@Override
public LockEntity getListAll() {
LockEntity lockEntity = new LockEntity();
lockEntity.setPointList(pointMapper.selectList());
lockEntity.setIsolationPointList(isolationPointMapper.selectList());
lockEntity.setLockGuideList(lockGuideMapper.selectList());
lockEntity.setPlanItemDetailList(planItemDetailMapper.selectList());
lockEntity.setPlanItemList(planItemMapper.selectList());
lockEntity.setPlanLifeLockList(planLifeLockMapper.selectList());
lockEntity.setLockList(lockMapper.selectList());
lockEntity.setPlanList(planMapper.selectList());
return lockEntity;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void bindlock(LockStatusVo updateReqVO) {
QueryWrapper<PlanItemDetailDO> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("id", updateReqVO.getPlanItemDetailId());
List<PlanItemDetailDO> planItemDetailDOS = planItemDetailMapper.selectList(objectQueryWrapper);
if (CollectionUtils.isEmpty(planItemDetailDOS)) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PLAN_ITEM_DETAIL_NOT_EXISTS);
}
if (planItemDetailDOS.get(0).getLockStatus().equals(1)) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PLAN_ITEM_DETAIL_LOCK_STATUS_ERROR);
}
lockMapper.updateStatus(updateReqVO.getLockId(), 7);//上锁已验证
List<Long> pointIdList = planItemDetailDOS.stream().map(PlanItemDetailDO::getIsolationPointId).toList();
pointMapper.updateStatusBatch(pointIdList, 1);
planItemDetailMapper.updateDetailLockStatus(1, updateReqVO.getPlanItemDetailId(), updateReqVO.getLockId(), null, null);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void createLock(LockStatusVo updateReqVO) {
PlanItemDetailDO planItemDetailDO = planItemDetailMapper.selectById(updateReqVO.getPlanItemDetailId());
if (planItemDetailDO == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PLAN_ITEM_DETAIL_NOT_EXISTS);
}
LockDO lockDO = lockMapper.selectById(planItemDetailDO.getLockId());
if (lockDO == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.LOCK_NOT_EXISTS);
}
if (lockDO.getLockStatus() != CREATE_LOCK_STATUS) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.LOCK_STATUS_ERROR);
}
lockMapper.updateStatus(lockDO.getId(), 3);
planItemDetailMapper.updateDetailLockStatus(2, updateReqVO.getPlanItemDetailId(), null, updateReqVO.getOperateRecordld(), null);
createPlanLiteLock(1, updateReqVO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void verifyLock(LockStatusVo updateReqVO) {
PlanItemDetailDO planItemDetailDO = planItemDetailMapper.selectById(updateReqVO.getPlanItemDetailId());
if (planItemDetailDO == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PLAN_ITEM_DETAIL_NOT_EXISTS);
}
if (planItemDetailDO.getLockStatus() != PLAN_STATUS_PARTIALLY_UNLOCKED) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.DETAIL_LOCK_VERITY_ERROR);
}
createPlanLiteLock(3, updateReqVO);
planItemDetailMapper.updateDetailLockStatus(3, updateReqVO.getPlanItemDetailId(), null, null, updateReqVO.getVerifyRecordId());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void verifyUnLock(LockStatusVo updateReqVO) {
PlanItemDetailDO planItemDetailDO = planItemDetailMapper.selectById(updateReqVO.getPlanItemDetailId());
if (planItemDetailDO == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PLAN_ITEM_DETAIL_NOT_EXISTS);
}
if (planItemDetailDO.getLockStatus() != VERITY_STATUS_UNLOCKED) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.DETAIL_LOCK_STATUS_ERROR);
}
QueryWrapper<PlanLifeLockDO> lockDOQueryWrapper = new QueryWrapper<>();
lockDOQueryWrapper.eq("isolation_plan_item_detail_id", planItemDetailDO.getId());
lockDOQueryWrapper.eq("lock_type", 5);
List<PlanLifeLockDO> lockDOS = planLifeLockMapper.selectList(lockDOQueryWrapper);
boolean lockStatus = lockDOS.stream().anyMatch(plan -> plan.getLockStatus() == 1);
if (lockStatus) {
throw exception(ErrorCodeConstants.PLAN_LIFE_LOCK_EXISTS);
}
planItemDetailDO.setLockStatus(UNLOCK_STATUS_LOCKED);
planItemDetailMapper.updateById(planItemDetailDO);
planLifeLockMapper.updateStatus(updateReqVO.getLifelockId(), 0, new Date());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void unLock(LockStatusVo updateReqVO) {
PlanItemDetailDO planItemDetailDO = planItemDetailMapper.selectById(updateReqVO.getPlanItemDetailId());
if (planItemDetailDO == null) {
throw exception(ErrorCodeConstants.PLAN_ITEM_DETAIL_NOT_EXISTS);
}
if (planItemDetailDO.getLockStatus() != UNLOCK_STATUS_LOCKED) {
throw exception(ErrorCodeConstants.DETAIL_UNLOCK_STATUS_ERROR);
}
QueryWrapper<PlanLifeLockDO> lockDOQueryWrapper = new QueryWrapper<>();
lockDOQueryWrapper.eq("isolation_plan_item_detail_id", planItemDetailDO.getId());
lockDOQueryWrapper.eq("lock_type", 5);
List<PlanLifeLockDO> lockDOS = planLifeLockMapper.selectList(lockDOQueryWrapper);
boolean lockStatus = lockDOS.stream().anyMatch(plan -> plan.getLockStatus() == 1);
if (lockStatus) {
throw exception(ErrorCodeConstants.PLAN_LIFE_LOCK_EXISTS);
}
planItemDetailMapper.updateDetailLockStatus(LOCK_STATUS_LOCKED, updateReqVO.getPlanItemDetailId(),
null, null, null);
planLifeLockMapper.updateStatus(updateReqVO.getLifelockId(), LOCK_STATUS_UNLOCKED, new Date());
lockMapper.updateStatus(planItemDetailDO.getLockId(), LOCK_MAIN_STATUS_UNLOCKED);
// 2. 查询关联的生命锁状态
QueryWrapper<PlanLifeLockDO> lifeLockQuery = new QueryWrapper<PlanLifeLockDO>()
.eq("isolation_plan_item_detail_id", updateReqVO.getPlanItemDetailId());
List<PlanLifeLockDO> lifeLocks = planLifeLockMapper.selectList(lifeLockQuery);
boolean allUnlocked = lifeLocks.stream().allMatch(plan -> plan.getLockStatus() == LOCK_STATUS_UNLOCKED);
QueryWrapper<PlanItemDetailDO> objectQueryWrapper11 = new QueryWrapper<>();
objectQueryWrapper11.eq("isolation_plan_item_id", planItemDetailDO.getIsolationPlanItemId());
List<PlanItemDetailDO> planItemDetailDOS1 = planItemDetailMapper.selectList(objectQueryWrapper11);
boolean detailLocked = planItemDetailDOS1.stream().allMatch(plan -> plan.getLockStatus() == LOCK_STATUS_LOCKED);
if (allUnlocked && detailLocked) {
updatePlanAndItemStatus(planItemDetailDO.getIsolationPlanItemId(), updateReqVO.getPlanId());
}
// 3. 更新隔离点位状态
QueryWrapper<PlanItemDetailDO> objectQueryWrapper1 = new QueryWrapper<>();
objectQueryWrapper1.eq("isolation_point_id", planItemDetailDO.getIsolationPointId());
List<PlanItemDetailDO> planItemDetailDOS = planItemDetailMapper.selectList(objectQueryWrapper1);
boolean pointStatus = planItemDetailDOS.stream().allMatch(plan -> plan.getLockStatus() == LOCK_STATUS_LOCKED);
if (pointStatus) {
pointMapper.updateStatusBatch(Collections.singletonList(planItemDetailDO.getIsolationPointId()), 0);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void importPointsFromWord(MultipartFile file) {
try {
String rawContent = WordUtils.extractTextFromWord(file);
LockWordPointVo lockWordPointVo = WordUtils.parseAndPrintStructuredContent(rawContent);
ArrayList<PointDO> objects = new ArrayList<>();
if (CollectionUtil.isNotEmpty(lockWordPointVo.getDataVoList())) {
for (LockWordPointDataVo lockWordPointDataVo : lockWordPointVo.getDataVoList()) {
PointDO pointDO = new PointDO();
pointDO.setStatus(0);
pointDO.setIpName(lockWordPointDataVo.getLocation());
pointDO.setIpNumber(lockWordPointDataVo.getSequence());
pointDO.setIpType("1");
pointDO.setGuideLockNums(Integer.valueOf(lockWordPointVo.getDeviceLock()));
objects.add(pointDO);
}
}
pointMapper.insertBatch(objects);
} catch (Exception e) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.IMPORT_ERROR);
}
}
private void updatePlanAndItemStatus(Long isolationPlanItemId, Long planId) {
// 更新计划项状态
planItemMapper.updateStatus(isolationPlanItemId, PLAN_ITEM_STATUS_UNLOCKED);
// 检查是否需要更新主计划的状态
QueryWrapper<PlanItemDO> planItemQuery = new QueryWrapper<PlanItemDO>()
.eq("isolation_plan_id", planId);
List<PlanItemDO> planItems = planItemMapper.selectList(planItemQuery);
boolean anyPlanItemUnlocked = planItems.stream()
.allMatch(plan -> plan.getStatus() == PLAN_ITEM_STATUS_UNLOCKED);
if (anyPlanItemUnlocked) {
planMapper.updateStatus(planId, PLAN_ITEM_STATUS_UNLOCKED);
}
}
private void createPlanLiteLock(Integer type, LockStatusVo updateReqVO) {
Long userId = WebFrameworkUtils.getLoginUserId();
PlanLifeLockDO planLifeLockDO = new PlanLifeLockDO();
planLifeLockDO.setIsolationPlanItemDetailId(updateReqVO.getPlanItemDetailId());
planLifeLockDO.setUserId(userId);
planLifeLockDO.setLockType(type);
planLifeLockDO.setLockStatus(1);
planLifeLockDO.setLockTime(LocalDateTime.now());
planLifeLockMapper.insert(planLifeLockDO);
}
}

174
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/util/WordUtils.java

@ -0,0 +1,174 @@
package cn.iocoder.yudao.module.lock.util;
import cn.iocoder.yudao.module.lock.vo.LockWordPointDataVo;
import cn.iocoder.yudao.module.lock.vo.LockWordPointVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.extractor.ExtractorFactory;
import org.apache.poi.extractor.POITextExtractor;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.regex.Pattern;
@Slf4j
public class WordUtils {
public static void main(String[] args) {
// =================================================================
// 请将此路径修改为您本地Word文件的实际路径
// 支持 .doc 和 .docx 格式
// =================================================================
var filePath = "C:\\Users\\admin\\Desktop\\1.docx"; // <-- 请确保路径正确
var file = new File(filePath);
if (!file.exists() || !file.isFile()) {
// 2. 使用 log.error 记录错误
log.error("错误:文件不存在或不是一个有效的文件路径 -> {}", filePath);
return;
}
try {
// 1. 从 Word 文件中提取纯文本
var rawContent = extractTextFrom(file);
// 2. 解析提取出的文本并按结构化格式打印
parseAndPrintStructuredContent(rawContent);
} catch (Exception e) {
// 3. 记录异常信息和堆栈
log.error("处理文件时发生未知异常。", e);
}
}
/**
* 整合所有解析逻辑并结构化地打印出来
*
* @param rawContent Word 中提取的完整纯文本
*/
public static LockWordPointVo parseAndPrintStructuredContent(String rawContent) {
var energyPattern = Pattern.compile("☑ ([^、☐\\s]+)");
var energyMatcher = energyPattern.matcher(rawContent);
var selectedEnergies = new ArrayList<String>();
while (energyMatcher.find()) {
selectedEnergies.add(energyMatcher.group(1));
}
if (selectedEnergies.isEmpty()) {
log.info("未找到任何已勾选的能量项。");
} else {
log.info("已勾选的能量: " + String.join(", ", selectedEnergies));
}
LockWordPointVo lockWordPointVo = new LockWordPointVo();
// --- 2. 解析:上锁前准备 ---
String deviceLock = extractAndPrint("设备锁数量", rawContent, "准备设备锁:([^;]+);");
String repairBrand = extractAndPrint("停机大修牌数量", rawContent, "停机大修牌:([^;]+);");
String sixClip = extractAndPrint("6孔锁夹数量", rawContent, "6孔锁夹:([^;]+);");
String locking = extractAndPrint("上锁装置", rawContent, "上锁装置:([^\n\r]+)");
lockWordPointVo.setDeviceLock(deviceLock);
lockWordPointVo.setRepairBrand(repairBrand);
lockWordPointVo.setSixClip(sixClip);
lockWordPointVo.setLocking(locking);
// --- 3. 解析:表格数据 ---
var dataList = new ArrayList<LockWordPointDataVo>();
var lines = rawContent.split("\\r?\\n");
var isParsingTable = false;
for (var line : lines) {
var trimmedLine = line.trim();
if (trimmedLine.isEmpty()) continue;
if (trimmedLine.startsWith("验证方法")) break; // 表格内容结束
if (trimmedLine.contains("隔离序号") && trimmedLine.contains("隔离点编号")) {
isParsingTable = true;
continue; // 这是标题行,跳过
}
if (isParsingTable) {
var parts = trimmedLine.split("\t");
if (parts.length >= 4) { // 确保数据足够,避免数组越界
var data = new LockWordPointDataVo(parts[0], parts[1], parts[2], parts[3]);
dataList.add(data);
} else {
log.warn("检测到格式不正确的表格行,已跳过: {}", trimmedLine);
}
}
}
// 打印解析出的表格数据
if (dataList.isEmpty()) {
log.warn("未找到或未能解析出表格数据。");
} else {
lockWordPointVo.setDataVoList(dataList);
}
return lockWordPointVo;
}
/**
* 辅助方法根据正则表达式从文本中提取信息并打印
*
* @param label 信息的标签
* @param content 原始内容
* @param regex 正则表达式
*/
private static String extractAndPrint(String label, String content, String regex) {
var pattern = Pattern.compile(regex);
var matcher = pattern.matcher(content);
String value = null;
if (matcher.find()) {
value = matcher.group(1).replaceAll("[把个]|至少", "").trim();
log.info(label + ": " + (value.isEmpty() ? "未填写" : value));
} else {
log.error(label + ": 未找到");
}
return value;
}
/**
* 使用 ExtractorFactory 自动识别上传的 Office 文件真实格式并提取纯文本
* 该方法直接处理 MultipartFile避免了先将文件存到本地的需要
*
* @param multipartFile 要处理的上传文件 (e.g., .doc, .docx, .xls, .xlsx, .ppt, .pptx)
* @return 提取出的纯文本
* @throws Exception 如果文件处理失败例如文件为空无法识别格式或读取错误
*/
public static String extractTextFromWord(MultipartFile multipartFile) throws Exception {
// 1. 校验文件是否为空,增加健壮性
if (multipartFile == null || multipartFile.isEmpty()) {
throw new IllegalArgumentException("文件不能为空。");
}
// 2. 使用 try-with-resources 确保 InputStream 和 Extractor 被自动关闭
// 直接从 MultipartFile 获取输入流,而不是从本地文件
try (InputStream inputStream = multipartFile.getInputStream();
POITextExtractor extractor = ExtractorFactory.createExtractor(inputStream)) {
if (extractor == null) {
// 3. 优化了异常提示信息
throw new IllegalArgumentException("无法识别的文件类型或文件已损坏。请确保是标准的Office格式。");
}
// 4. 返回提取的文本
return extractor.getText();
}
}
public static String extractTextFrom(File file) throws Exception {
// Java 7+ try-with-resources 自动关闭资源
try (InputStream inputStream = new FileInputStream(file);
POITextExtractor extractor = ExtractorFactory.createExtractor(inputStream)) {
if (extractor == null) {
throw new IllegalArgumentException("无法识别的文件类型,文件可能已损坏或非标准Office格式。");
}
return extractor.getText();
}
}
}

12
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockGuideSaveReqVO.java

@ -16,6 +16,18 @@ public class LockGuideSaveReqVO {
private String guideContent;
/**
* 隔离指导书名称
*/
@Schema(description = "隔离指导书名称")
private String name;
/**
* 隔离计划编号
*/
@Schema(description = "隔离计划编号")
private String code;
/**
* 集中挂牌人ID
*/
@Schema(description = "集中挂牌人ID")

4
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockPageReqVO.java

@ -20,10 +20,10 @@ public class LockPageReqVO extends PageParam {
private String lockName;
@Schema(description = "状态", example = "2")
private String lockStatus;
private Integer lockStatus;
@Schema(description = "锁具类型", example = "1")
private String lockType;
private Integer lockType;
@Schema(description = "启用状态: 0=未启用, 1=已启用", example = "2")
private Integer lockEnableStatus;

4
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockRespVO.java

@ -30,11 +30,11 @@ public class LockRespVO {
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("状态")
private String lockStatus;
private Integer lockStatus;
@Schema(description = "锁具类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("锁具类型")
private String lockType;
private Integer lockType;
@Schema(description = "启用状态: 0=未启用, 1=已启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("启用状态: 0=未启用, 1=已启用")

4
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockSaveReqVO.java

@ -23,11 +23,11 @@ public class LockSaveReqVO {
private String lockName;
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
private String lockStatus;
private Integer lockStatus;
@Schema(description = "锁具类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
////@NotEmpty(message = "锁具类型不能为空")
private String lockType;
private Integer lockType;
@Schema(description = "启用状态: 0=未启用, 1=已启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
//@NotNull(message = "启用状态: 0=未启用, 1=已启用不能为空")

24
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockStatusVo.java

@ -0,0 +1,24 @@
package cn.iocoder.yudao.module.lock.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 电子锁修改")
@Data
public class LockStatusVo {
private Long planId;
private Long lockId;
private Long planItemDetailId;
private Long operateRecordld;
private Long verifyRecordId;
private Long lifelockId;
}

19
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockWordPointDataVo.java

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.lock.vo;
import lombok.Data;
@Data
public class LockWordPointDataVo {
private String sequence;
private String isolationPointId;
private String deviceName;
private String location;
public LockWordPointDataVo(String sequence, String isolationPointId, String deviceName, String location) {
this.sequence = sequence != null ? sequence.trim() : "";
this.isolationPointId = isolationPointId != null ? isolationPointId.trim() : "";
this.deviceName = deviceName != null ? deviceName.trim() : "";
this.location = location != null ? location.trim() : "";
}
}

19
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/LockWordPointVo.java

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.lock.vo;
import lombok.Data;
import java.util.List;
@Data
public class LockWordPointVo {
private String deviceLock;
private String repairBrand;
private String sixClip;
private String locking;
private List<LockWordPointDataVo> dataVoList;
}

2
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanLifeLockPageReqVO.java

@ -20,7 +20,7 @@ public class PlanLifeLockPageReqVO extends PageParam {
private Long userId;
@Schema(description = "生命锁类型", example = "2")
private String lockType;
private Integer lockType;
@Schema(description = "锁定状态: 0=未上锁, 1=已上锁", example = "1")
private Integer lockStatus;

2
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanLifeLockRespVO.java

@ -26,7 +26,7 @@ public class PlanLifeLockRespVO {
@Schema(description = "生命锁类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("生命锁类型")
private String lockType;
private Integer lockType;
@Schema(description = "锁定状态: 0=未上锁, 1=已上锁", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("锁定状态: 0=未上锁, 1=已上锁")

2
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanLifeLockSaveReqVO.java

@ -24,7 +24,7 @@ public class PlanLifeLockSaveReqVO {
@Schema(description = "生命锁类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
//@NotEmpty(message = "生命锁类型不能为空")
private String lockType;
private Integer lockType;
@Schema(description = "锁定状态: 0=未上锁, 1=已上锁", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
//@NotNull(message = "锁定状态: 0=未上锁, 1=已上锁不能为空")

7
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanPageReqVO.java

@ -16,6 +16,13 @@ public class PlanPageReqVO extends PageParam {
@Schema(description = "计划名称", example = "张三")
private String ipName;
/**
* 计划状态
*/
@Schema(description = "计划状态", example = "1")
private Integer status;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;

3
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanRespVO.java

@ -19,6 +19,9 @@ public class PlanRespVO {
@Schema(description = "计划名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("计划名称")
private String ipName;
@Schema(description = "计划状态", example = "1")
@ExcelProperty("计划状态")
private Integer status;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")

5
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/vo/PlanSaveReqVO.java

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.lock.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -13,7 +14,9 @@ public class PlanSaveReqVO {
private Long id;
@Schema(description = "计划名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@NotEmpty(message = "计划名称不能为空")
//@NotEmpty(message = "计划名称不能为空")
private String ipName;
@Schema(description = "计划状态", example = "1")
private Integer status;
}

8
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/controller/admin/IsolationPointController.java → cc-admin-master/yudao-module-lock/src/main/resources/IsolationPointController.java

@ -41,14 +41,14 @@ public class IsolationPointController {
@PostMapping("/create")
@Operation(summary = "创建指导书与隔离点关联")
@PreAuthorize("@ss.hasPermission('guide:isolation-point:create')")
//@PreAuthorize("@ss.hasPermission('guide:isolation-point:create')")
public CommonResult<Long> createIsolationPoint(@Valid @RequestBody IsolationPointSaveReqVO createReqVO) {
return success(isolationPointService.createIsolationPoint(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新指导书与隔离点关联")
@PreAuthorize("@ss.hasPermission('guide:isolation-point:update')")
//@PreAuthorize("@ss.hasPermission('guide:isolation-point:update')")
public CommonResult<Boolean> updateIsolationPoint(@Valid @RequestBody IsolationPointSaveReqVO updateReqVO) {
isolationPointService.updateIsolationPoint(updateReqVO);
return success(true);
@ -75,7 +75,7 @@ public class IsolationPointController {
@GetMapping("/get")
@Operation(summary = "获得指导书与隔离点关联")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('guide:isolation-point:query')")
//@PreAuthorize("@ss.hasPermission('guide:isolation-point:query')")
public CommonResult<IsolationPointRespVO> getIsolationPoint(@RequestParam("id") Long id) {
IsolationPointDO isolationPoint = isolationPointService.getIsolationPoint(id);
return success(BeanUtils.toBean(isolationPoint, IsolationPointRespVO.class));
@ -83,7 +83,7 @@ public class IsolationPointController {
@GetMapping("/page")
@Operation(summary = "获得指导书与隔离点关联分页")
@PreAuthorize("@ss.hasPermission('guide:isolation-point:query')")
//@PreAuthorize("@ss.hasPermission('guide:isolation-point:query')")
public CommonResult<PageResult<IsolationPointRespVO>> getIsolationPointPage(@Valid IsolationPointPageReqVO pageReqVO) {
PageResult<IsolationPointDO> pageResult = isolationPointService.getIsolationPointPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, IsolationPointRespVO.class));

0
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/xml/IsolationPointMapper.xml → cc-admin-master/yudao-module-lock/src/main/resources/mapper/IsolationPointMapper.xml

0
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/xml/LockGuideMapper.xml → cc-admin-master/yudao-module-lock/src/main/resources/mapper/LockGuideMapper.xml

5
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/xml/LockMapper.xml → cc-admin-master/yudao-module-lock/src/main/resources/mapper/LockMapper.xml

@ -7,4 +7,9 @@
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 -->
<update id="updateStatus">
UPDATE electron_lock
SET lock_status = #{status}
WHERE id = #{id}
</update>
</mapper>

0
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/xml/LockWordRecordMapper.xml → cc-admin-master/yudao-module-lock/src/main/resources/mapper/LockWordRecordMapper.xml

19
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/xml/PlanItemDetailMapper.xml → cc-admin-master/yudao-module-lock/src/main/resources/mapper/PlanItemDetailMapper.xml

@ -9,4 +9,23 @@
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
<update id="updateDetailLockStatus">
UPDATE isolation_plan_item_detail
<set>
<if test="status != null">
lock_status = #{status},
</if>
<if test="lockId != null">
lock_id = #{lockId},
</if>
<if test="operateRecordId != null">
operate_record_id = #{operateRecordId},
</if>
<if test="verifyRecordId != null">
verify_record_id = #{verifyRecordId}
</if>
</set>
WHERE id = #{planItemDetailId}
</update>
</mapper>

7
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/xml/PlanItemMapper.xml → cc-admin-master/yudao-module-lock/src/main/resources/mapper/PlanItemMapper.xml

@ -9,4 +9,11 @@
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
<update id="updateStatus">
update isolation_plan_item
set status = #{status}
where id = #{isolationPlanItemId}
</update>
</mapper>

8
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/xml/PlanLifeLockMapper.xml → cc-admin-master/yudao-module-lock/src/main/resources/mapper/PlanLifeLockMapper.xml

@ -9,4 +9,12 @@
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
<update id="updateStatus">
UPDATE isolation_plan_life_lock
SET lock_status = #{status},
unlock_time = #{unlockTime}
WHERE id = #{id}
</update>
</mapper>

6
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/xml/PlanMapper.xml → cc-admin-master/yudao-module-lock/src/main/resources/mapper/PlanMapper.xml

@ -9,4 +9,10 @@
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
<update id="updateStatus">
UPDATE isolation_plan
SET status = #{status}
WHERE id = #{planId}
</update>
</mapper>

10
cc-admin-master/yudao-module-lock/src/main/java/cn/iocoder/yudao/module/lock/mapper/xml/PointMapper.xml → cc-admin-master/yudao-module-lock/src/main/resources/mapper/PointMapper.xml

@ -9,4 +9,14 @@
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
<update id="updateStatusBatch">
UPDATE isolation_point
SET status = #{status}
WHERE id IN
<foreach item="item" index="index" collection="idList"
open="(" separator="," close=")">
#{item}
</foreach>
</update>
</mapper>

10
cc-admin-master/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthRegisterReqVO.java

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.auth.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.checkerframework.checker.units.qual.min;
import org.hibernate.validator.constraints.Length;
import jakarta.validation.constraints.*;
@ -26,4 +27,13 @@ public class AuthRegisterReqVO extends CaptchaVerificationReqVO {
@NotEmpty(message = "密码不能为空")
@Length(min = 4, max = 16, message = "密码长度为 4-16 位")
private String password;
@Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
@NotEmpty(message = "手机号")
@Size(min = 5, max = 18, message = "手机号长度为 5-18 个字符")
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
private String mobile;
@Schema(description = "注册类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Integer type;
}

3
cc-admin-master/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java

@ -19,7 +19,10 @@ public class UserSimpleRespVO {
@Schema(description = "部门ID", example = "我是一个用户")
private Long deptId;
@Schema(description = "部门名称", example = "IT 部")
private String deptName;
@Schema(description = "部门名称", example = "IT 部")
private String mobile;
}

11
cc-admin-master/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java

@ -21,6 +21,7 @@ import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
import cn.iocoder.yudao.module.system.service.logger.LoginLogService;
import cn.iocoder.yudao.module.system.service.member.MemberService;
import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import cn.iocoder.yudao.module.system.service.social.SocialUserService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import com.anji.captcha.model.common.ResponseModel;
@ -35,11 +36,14 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
import static java.util.Collections.singleton;
/**
* Auth Service 实现类
@ -67,7 +71,8 @@ public class AdminAuthServiceImpl implements AdminAuthService {
private SmsCodeApi smsCodeApi;
@Resource
private SocialUserService socialUserService;
@Resource
private PermissionService permissionService;
/**
* 验证码的开关默认为 true
*/
@ -265,6 +270,10 @@ public class AdminAuthServiceImpl implements AdminAuthService {
// 2. 校验用户名是否已存在
Long userId = userService.registerUser(registerReqVO);
// 分配角色
if (1 == registerReqVO.getType()){
permissionService.assignUserRole(userId, singleton(164L));
}
// 3. 创建 Token 令牌,记录登录日志
return createTokenAfterLoginSuccess(userId, registerReqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME);

2
cc-admin-master/yudao-server/pom.xml

@ -72,7 +72,7 @@
<build>
<!-- 设置构建的 jar 包名 -->
<finalName>${project.artifactId}</finalName>
<finalName>lock-server</finalName>
<plugins>
<!-- 打包 -->
<plugin>

Loading…
Cancel
Save