From 2e20cfe179d4fed32eafd8a2a8c8f1972fe40819 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 20 Nov 2024 11:10:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=A0=B8=E5=AF=B9?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visit/api/VisitMainInnerController.java | 28 ++++-- .../modules/visit/api/VisitMainOuterApi.java | 3 +- .../controller/VisitCheckLogController.java | 91 +++++++++++++++++ .../modules/visit/entity/VisitCheckLog.java | 97 +++++++++++++++++++ .../visit/mapper/VisitCheckLogMapper.java | 14 +++ .../visit/service/VisitCheckLogService.java | 14 +++ .../impl/VisitCheckLogServiceImpl.java | 22 +++++ 7 files changed, 261 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/visit/controller/VisitCheckLogController.java create mode 100644 src/main/java/com/qs/serve/modules/visit/entity/VisitCheckLog.java create mode 100644 src/main/java/com/qs/serve/modules/visit/mapper/VisitCheckLogMapper.java create mode 100644 src/main/java/com/qs/serve/modules/visit/service/VisitCheckLogService.java create mode 100644 src/main/java/com/qs/serve/modules/visit/service/impl/VisitCheckLogServiceImpl.java diff --git a/src/main/java/com/qs/serve/modules/visit/api/VisitMainInnerController.java b/src/main/java/com/qs/serve/modules/visit/api/VisitMainInnerController.java index 1ceec49..7292151 100644 --- a/src/main/java/com/qs/serve/modules/visit/api/VisitMainInnerController.java +++ b/src/main/java/com/qs/serve/modules/visit/api/VisitMainInnerController.java @@ -6,17 +6,16 @@ import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; -import com.qs.serve.common.util.AuthContextUtils; -import com.qs.serve.common.util.CopierUtil; -import com.qs.serve.common.util.PageUtil; -import com.qs.serve.common.util.StringUtils; +import com.qs.serve.common.util.*; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.visit.common.VisitMainConst; +import com.qs.serve.modules.visit.entity.VisitCheckLog; import com.qs.serve.modules.visit.entity.VisitMain; import com.qs.serve.modules.visit.entity.VisitTheme; import com.qs.serve.modules.visit.entity.bo.VisitCheckIn; import com.qs.serve.modules.visit.entity.vo.VisitMainVo; +import com.qs.serve.modules.visit.service.VisitCheckLogService; import com.qs.serve.modules.visit.service.VisitMainService; import com.qs.serve.modules.visit.service.VisitThemeService; import lombok.AllArgsConstructor; @@ -38,6 +37,7 @@ import java.util.List; @RequestMapping("/mApi/visit") public class VisitMainInnerController { + private VisitCheckLogService visitCheckLogService; private VisitMainService visitMainService; private VisitThemeService visitThemeService; private SysUserService sysUserService; @@ -83,8 +83,15 @@ public class VisitMainInnerController { @SysLog(module = SystemModule.VISIT, title = "拜访", biz = BizType.QUERY) public R checkIn(@PathVariable String id, @RequestBody VisitCheckIn param){ VisitMain visitMain = visitMainService.getById(id); - if(visitMain.getCheckState().equals(VisitMainConst.CheckState_1) - &&visitMain.getVisitStatus().equals(VisitMainConst.VisitStatus_1)){ + // 判断是否超过2小时 + if(visitMain.getVisitTime()!=null){ + LocalDateTime time = visitMain.getVisitTime().plusHours(2); + if(LocalDateTime.now().isAfter(time)){ + Assert.throwEx("已超过2小时,无法核对"); + } + } + // 状态为待核对 + if(visitMain.getCheckState().equals(VisitMainConst.CheckState_1)){ SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); visitMain.setCheckUserId(sysUser.getId()); visitMain.setCheckUserCode(sysUser.getCode()); @@ -92,8 +99,15 @@ public class VisitMainInnerController { visitMain.setVisitTime(LocalDateTime.now()); visitMain.setRemark2(param.getRemark2()); visitMain.setVisitStatus(VisitMainConst.VisitStatus_3); - visitMainService.updateById(visitMain); + // 添加核对日志 + VisitCheckLog checkLog = new VisitCheckLog(); + checkLog.setMainId(id); + visitMain.setCheckUserId(sysUser.getId()); + visitMain.setCheckUserCode(sysUser.getCode()); + visitMain.setCheckUserName(sysUser.getName()); + checkLog.setRemark(param.getRemark2()); + visitCheckLogService.save(checkLog); return R.ok(); } return R.ok(); diff --git a/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java b/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java index f6dc5cb..0b7b591 100644 --- a/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java +++ b/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java @@ -173,10 +173,11 @@ public class VisitMainOuterApi { public R submit(@RequestBody @Valid VisitMain param){ long count = visitMainService.count(new LambdaQueryWrapper() .eq(VisitMain::getThemeId,param.getThemeId()) + .eq(VisitMain::getVisitStatus,1) .eq(VisitMain::getVisitorMobile,param.getVisitorMobile()) ); if(count>0){ - return R.error("请勿重复提交"); + return R.error("来访已通过,无需再次提交"); } VisitTheme visitTheme = visitThemeService.getById(param.getThemeId()); if(visitTheme==null){ diff --git a/src/main/java/com/qs/serve/modules/visit/controller/VisitCheckLogController.java b/src/main/java/com/qs/serve/modules/visit/controller/VisitCheckLogController.java new file mode 100644 index 0000000..0e76169 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/visit/controller/VisitCheckLogController.java @@ -0,0 +1,91 @@ +package com.qs.serve.modules.visit.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.AuthContextUtils; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.StringUtils; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.visit.entity.VisitCheckLog; +import com.qs.serve.modules.visit.service.VisitCheckLogService; + +import javax.validation.Valid; +import java.util.List; + +/** + * 系统 门卫核对日志 + * @author YenHex + * @since 2024-11-20 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("visit/checkLog") +public class VisitCheckLogController { + + private VisitCheckLogService visitCheckLogService; + + /** + * 翻页我的 + * @param param + * @return + */ + @GetMapping("/pageMy") + public R> getPageMy(VisitCheckLog param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + param.setCheckUserId(AuthContextUtils.getSysUserId()); + PageUtil.startPage(); + List list = visitCheckLogService.list(lqw); + return R.byPageHelperList(list); + } + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(VisitCheckLog param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + PageUtil.startPage(); + List list = visitCheckLogService.list(lqw); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + //@GetMapping("/getById/{id}") + @PreAuthorize("hasRole('visit:checkLog:query')") + public R getById(@PathVariable("id") String id){ + VisitCheckLog visitCheckLog = visitCheckLogService.getById(id); + return R.ok(visitCheckLog); + } + + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + //@PreAuthorize("hasRole('visit:checkLog:delete')") + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + boolean result = visitCheckLogService.removeByIds(idsLong); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/visit/entity/VisitCheckLog.java b/src/main/java/com/qs/serve/modules/visit/entity/VisitCheckLog.java new file mode 100644 index 0000000..8635fee --- /dev/null +++ b/src/main/java/com/qs/serve/modules/visit/entity/VisitCheckLog.java @@ -0,0 +1,97 @@ +package com.qs.serve.modules.visit.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 门卫核对日志 实体类 + * @author YenHex + * @since 2024-11-20 + */ +@Data +@TableName("visit_check_log") +public class VisitCheckLog implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 来访实例id */ + @Length(max = 255,message = "来访实例id长度不能超过255字") + private String mainId; + + /** 门卫id */ + @Length(max = 255,message = "门卫id长度不能超过255字") + private String checkUserId; + + /** 门卫工号 */ + @Length(max = 255,message = "门卫工号长度不能超过255字") + private String checkUserCode; + + /** 门卫名称 */ + @Length(max = 255,message = "门卫名称长度不能超过255字") + private String checkUserName; + + /** 门卫填写的备注 */ + @Length(max = 255,message = "门卫填写的备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + + + public static VisitCheckLog toNewObject(VisitCheckLog source){ + VisitCheckLog checkLog = new VisitCheckLog(); + checkLog.setId(source.getId()); + checkLog.setMainId(source.getMainId()); + checkLog.setCheckUserId(source.getCheckUserId()); + checkLog.setCheckUserCode(source.getCheckUserCode()); + checkLog.setCheckUserName(source.getCheckUserName()); + checkLog.setRemark(source.getRemark()); + checkLog.setCreateTime(source.getCreateTime()); + checkLog.setCreateBy(source.getCreateBy()); + checkLog.setUpdateTime(source.getUpdateTime()); + checkLog.setUpdateBy(source.getUpdateBy()); + checkLog.setDelFlag(source.getDelFlag()); + return checkLog; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/visit/mapper/VisitCheckLogMapper.java b/src/main/java/com/qs/serve/modules/visit/mapper/VisitCheckLogMapper.java new file mode 100644 index 0000000..f10db69 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/visit/mapper/VisitCheckLogMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.visit.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.visit.entity.VisitCheckLog; + +/** + * 门卫核对日志 Mapper + * @author YenHex + * @date 2024-11-20 + */ +public interface VisitCheckLogMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/visit/service/VisitCheckLogService.java b/src/main/java/com/qs/serve/modules/visit/service/VisitCheckLogService.java new file mode 100644 index 0000000..1a7b8f5 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/visit/service/VisitCheckLogService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.visit.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.visit.entity.VisitCheckLog; + +/** + * 门卫核对日志 服务接口 + * @author YenHex + * @date 2024-11-20 + */ +public interface VisitCheckLogService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/visit/service/impl/VisitCheckLogServiceImpl.java b/src/main/java/com/qs/serve/modules/visit/service/impl/VisitCheckLogServiceImpl.java new file mode 100644 index 0000000..d65c939 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/visit/service/impl/VisitCheckLogServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.visit.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.visit.entity.VisitCheckLog; +import com.qs.serve.modules.visit.service.VisitCheckLogService; +import com.qs.serve.modules.visit.mapper.VisitCheckLogMapper; + +/** + * 门卫核对日志 服务实现类 + * @author YenHex + * @since 2024-11-20 + */ +@Slf4j +@Service +@AllArgsConstructor +public class VisitCheckLogServiceImpl extends ServiceImpl implements VisitCheckLogService { + +} +