Browse Source

新增出入管理

zhulu 1 year ago
parent
commit
60f120074e
24 changed files with 1558 additions and 217 deletions
  1. 14 40
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreIntroduceLetter.java
  2. 13 12
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreIntroduceLetterApproveLog.java
  3. 154 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreOutInRecord.java
  4. 29 9
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterAddDto.java
  5. 45 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterApproveRequestDto.java
  6. 44 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterRequestDto.java
  7. 22 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterUpdateStatusDto.java
  8. 22 14
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterUserAddDto.java
  9. 70 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreOutInRecordRequestDto.java
  10. 114 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterApproveVo.java
  11. 90 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterApprovedPersonVo.java
  12. 30 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterInfoVo.java
  13. 20 20
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterVo.java
  14. 109 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreOutInRecordVo.java
  15. 42 12
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/controller/CoreIntroduceLetterController.java
  16. 85 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/controller/CoreOutInRecordController.java
  17. 15 13
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterMapper.java
  18. 70 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreOutInRecordMapper.java
  19. 15 10
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/ICoreIntroduceLetterService.java
  20. 73 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/ICoreOutInRecordService.java
  21. 65 58
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreIntroduceLetterServiceImpl.java
  22. 147 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreOutInRecordServiceImpl.java
  23. 76 25
      soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreIntroduceLetterMapper.xml
  24. 194 0
      soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreOutInRecordMapper.xml

+ 14 - 40
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreIntroduceLetter.java

@@ -43,6 +43,18 @@ public class CoreIntroduceLetter extends BaseEntity {
     private String letterName;
 
     /**
+     * 介绍信编号
+     */
+    @ApiModelProperty(value = "介绍信编号")
+    private String letterNo;
+
+    /**
+     * 来访事由
+     */
+    @ApiModelProperty(value = "来访事由")
+    private String reasons;
+
+    /**
      * 有效开始时间
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@@ -76,41 +88,15 @@ public class CoreIntroduceLetter extends BaseEntity {
      */
     private String orgName;
 
-    /**
-     * 审核人
-     */
-    /*private String checkUser;
-
-    *//**
-     * 审核时间
-     *//*
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @ApiModelProperty(value = "审核时间")
-    private Date checkTime;
-
-    *//**
-     * 状态
-     *//*
-    @ApiModelProperty(value = "审核状态1通过2不通过")
-    private Integer checkStatus;
-
-    @ApiModelProperty(value = "状态0待审批1已审批2已过期")
-    private Integer status;
-
-    *//**
-     * 备注
-     *//*
-    @ApiModelProperty(value = "审批备注")
-    private String checkRemark;*/
-
     @ApiModelProperty(value = "备注")
     private String description;
 
     private Integer deleted;
 
-   @TableField(exist = false)
     private Integer status;
 
+    private Integer type;
+
 
     @Override
     public String toString() {
@@ -141,18 +127,6 @@ public class CoreIntroduceLetter extends BaseEntity {
                 .append("orgName", getOrgName())
 
 
-            /*    .append("checkUser", getCheckUser())
-
-
-                .append("checkTime", getCheckTime())
-
-
-                .append("checkStatus", getCheckStatus())
-
-
-                .append("checkRemark", getCheckRemark())*/
-
-
                 .append("createBy", getCreateBy())
 
 

+ 13 - 12
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreIntroduceLetterCheckLog.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreIntroduceLetterApproveLog.java

@@ -22,9 +22,9 @@ import java.util.Date;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@TableName("core_introduce_letter_check_log")
-@ApiModel(value = "CoreIntroduceLetterCheckLog对象", description = "介绍信审核记录")
-public class CoreIntroduceLetterCheckLog extends BaseEntity {
+@TableName("core_introduce_letter_approve_log")
+@ApiModel(value = "CoreIntroduceLetterApproveLog对象", description = "介绍信审核记录")
+public class CoreIntroduceLetterApproveLog extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
     /**
@@ -32,29 +32,30 @@ public class CoreIntroduceLetterCheckLog extends BaseEntity {
      */
     private Long id;
 
-    private String checkUser;
+    @ApiModelProperty(value = "审核用户")
+    private String approveUser;
 
+    @ApiModelProperty(value = "审核用户Id")
+    private Long approveUserId;
     /**
      * 审核时间
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @ApiModelProperty(value = "审核时间")
-    private Date checkTime;
-
+    private Date approveTime;
     /**
      * 状态
      */
-    @ApiModelProperty(value = "审核状态1通过2不通过")
-    private Integer checkStatus;
+    @ApiModelProperty(value = "审核状态:0待审批1通过2不通过3逾期")
+    private Integer approveStatus;
 
     @ApiModelProperty(value = "审批备注")
-    private String checkRemark;
+    private String approveRemark;
 
+    @ApiModelProperty(value = "介绍信编码")
     private Long letterId;
+
     @ApiModelProperty(value = "接待机构")
     private Long orgId;
 
-    @ApiModelProperty(value = "状态0待审批1已审批2已过期")
-    private Integer status;
-
 }

+ 154 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreOutInRecord.java

@@ -0,0 +1,154 @@
+package com.xunmei.common.core.domain.letter.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.xunmei.common.core.web.domain.BaseEntity;
+
+/**
+ * 人员出入登记对象 core_out_in_record
+ *
+ * @author xunmei
+ * @date 2023-11-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("core_out_in_record")
+@ApiModel(value = "CoreOutInRecord对象", description = "人员出入登记")
+public class CoreOutInRecord extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    /**
+     * 出入人员姓名
+     */
+    @ApiModelProperty(value = "出入人员姓名")
+    private String userName;
+
+    /**
+     * 单位
+     */
+    @ApiModelProperty(value = "单位")
+    private String companyName;
+
+    /**
+     * 证件号
+     */
+    @ApiModelProperty(value = "证件号")
+    private String idCard;
+
+    /**
+     * 证件照
+     */
+    @ApiModelProperty(value = "证件照")
+    private String imgFile;
+
+    /**
+     * 出入申请ID
+     */
+    @ApiModelProperty(value = "出入申请ID")
+    private Long letterId;
+
+    /**
+     * 到达时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "到达时间")
+    private Date arrivalTime;
+
+    /**
+     * 离开时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "离开时间")
+    private Date departureTime;
+
+    /**
+     * 出入机构
+     */
+    @ApiModelProperty(value = "出入机构")
+    private Long orgId;
+
+    /**
+     * 陪同人员
+     */
+    @ApiModelProperty(value = "陪同人员")
+    private String accompanyingPerson;
+
+    /**
+     * 介绍信文件
+     */
+    @ApiModelProperty(value = "介绍信文件")
+    private String letterFile;
+
+    /**
+     * 核验照片
+     */
+    @ApiModelProperty(value = "核验照片")
+    private String checkImage;
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+
+
+                .append("id", getId())
+
+
+                .append("userName", getUserName())
+
+
+                .append("companyName", getCompanyName())
+
+
+                .append("idCard", getIdCard())
+
+
+                .append("imgFile", getImgFile())
+
+
+                .append("letterId", getLetterId())
+
+
+                .append("createBy", getCreateBy())
+
+
+                .append("createTime", getCreateTime())
+
+
+                .append("arrivalTime", getArrivalTime())
+
+
+                .append("departureTime", getDepartureTime())
+
+
+                .append("orgId", getOrgId())
+
+
+                .append("accompanyingPerson", getAccompanyingPerson())
+
+
+                .append("letterFile", getLetterFile())
+
+
+
+                .append("checkImage", getCheckImage())
+                .toString();
+    }
+}

+ 29 - 9
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterAddDto.java

@@ -1,12 +1,8 @@
 package com.xunmei.common.core.domain.letter.dto;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterCheckLog;
-import com.xunmei.common.core.web.domain.BaseEntity;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import java.util.Date;
 import java.util.List;
@@ -34,6 +30,21 @@ public class CoreIntroduceLetterAddDto{
     private String letterName;
 
     /**
+     * 来访事由
+     */
+    @ApiModelProperty(value = "来访事由")
+    private String reasons;
+
+    /**
+     * 介绍信编号
+     */
+    @ApiModelProperty(value = "介绍信编号")
+    private String letterNo;
+
+    @ApiModelProperty(value = "介绍信有效期")
+    private List<Date> range;
+
+    /**
      * 有效开始时间
      */
     @ApiModelProperty(value = "有效开始时间")
@@ -46,11 +57,19 @@ public class CoreIntroduceLetterAddDto{
     private Date endTime;
 
     /**
-     * 介绍信文件
+     * 介绍信图片
      */
     private List<String> letterFile;
 
     /**
+     * 接待机构
+     */
+    @ApiModelProperty(value = "接待机构")
+    private List<Long> receptionOrgIds;
+
+//    private List<Long> orgIds;
+
+    /**
      * 创建机构
      */
     private Long orgId;
@@ -84,6 +103,8 @@ public class CoreIntroduceLetterAddDto{
     @ApiModelProperty(value = "状态0待审批1已审批2已过期")
     private Integer status;
 
+    @ApiModelProperty(value = "类型:1 职能部门出入, 2 临时出入,3 紧急出入")
+    private Integer type;
 
     /**
      * 备注
@@ -95,7 +116,6 @@ public class CoreIntroduceLetterAddDto{
     private String description;
 
     private List<CoreIntroduceLetterUserAddDto> userInfos;
-    @ApiModelProperty(value = "接待机构")
-    private List<Long> orgIds;
-    private CoreIntroduceLetterCheckLog checkLog;
+
+    private CoreIntroduceLetterApproveLog checkLog;
 }

+ 45 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterApproveRequestDto.java

@@ -0,0 +1,45 @@
+package com.xunmei.common.core.domain.letter.dto;
+
+import com.xunmei.common.core.web.domain.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 介绍信对象 core_introduce_letter
+ *
+ * @author xunmei
+ * @date 2023-10-12
+ */
+@Data
+
+public class CoreIntroduceLetterApproveRequestDto extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "编码")
+    private Long id;
+
+    /**
+     * 来访事由
+     */
+    @ApiModelProperty(value = "来访事由")
+    private String reasons;
+
+    private Long orgId;
+
+    @ApiModelProperty(value = "介绍信有效期")
+    private List<Date> range;
+
+    @ApiModelProperty(value = "审批状态")
+    private Integer approveStatus;
+
+    @ApiModelProperty(value = "审批说明")
+    private Integer approveRemark;
+
+    @ApiModelProperty(value = "类型:1 职能部门出入, 2 临时出入,3 紧急出入")
+    private Integer type;
+
+    private Date arrivalTime;
+}

+ 44 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterRequestDto.java

@@ -0,0 +1,44 @@
+package com.xunmei.common.core.domain.letter.dto;
+
+import com.xunmei.common.core.web.domain.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 介绍信对象 core_introduce_letter
+ *
+ * @author xunmei
+ * @date 2023-10-12
+ */
+@Data
+
+public class CoreIntroduceLetterRequestDto extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 来访事由
+     */
+    @ApiModelProperty(value = "来访事由")
+    private String reasons;
+
+    private Long orgId;
+    /**
+     * 介绍信编号
+     */
+    @ApiModelProperty(value = "介绍信编号")
+    private String letterNo;
+
+    @ApiModelProperty(value = "介绍信有效期")
+    private List<Date> range;
+
+    @ApiModelProperty(value = "状态:0 草稿 ,1 使用中, 2 已逾期")
+    private Integer status;
+
+    @ApiModelProperty(value = "类型:1 职能部门出入, 2 临时出入,3 紧急出入")
+    private Integer type;
+
+    @ApiModelProperty(value = "请求来源")
+    private Boolean requestFromWeb;
+}

+ 22 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterUpdateStatusDto.java

@@ -0,0 +1,22 @@
+package com.xunmei.common.core.domain.letter.dto;
+
+import lombok.Data;
+
+/**
+ * 介绍信对象 core_introduce_letter
+ *
+ * @author xunmei
+ * @date 2023-10-12
+ */
+@Data
+
+public class CoreIntroduceLetterUpdateStatusDto {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    private Integer status;
+}

+ 22 - 14
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterUserAddDto.java

@@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 介绍信对象 core_introduce_letter
@@ -20,27 +21,36 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @TableName("core_introduce_letter_user")
-@ApiModel(value = "CoreIntroduceLetter对象" , description = "介绍信")
-public class CoreIntroduceLetterUserAddDto
-        {
-private static final long serialVersionUID=1L;
+@ApiModel(value = "CoreIntroduceLetter对象", description = "介绍信")
+public class CoreIntroduceLetterUserAddDto {
+    private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
+    /**
+     * $column.columnComment
+     */
     private Long id;
 
-    /** 介绍信名称 */
-            @ApiModelProperty(value = "人员名称")
+    /**
+     * 介绍信名称
+     */
+    @ApiModelProperty(value = "人员名称")
     private String userName;
-            /** 介绍信名称 */
-            @ApiModelProperty(value = "单位名称")
+    /**
+     * 介绍信名称
+     */
+    @ApiModelProperty(value = "单位名称")
     private String companyName;
 
     private String imgFile;
 
-    /** 介绍信文件 */
+    /**
+     * 介绍信文件
+     */
     private String idCard;
 
-    /** 创建机构 */
+    /**
+     * 创建机构
+     */
     private Long letterId;
 
 
@@ -50,6 +60,4 @@ private static final long serialVersionUID=1L;
     private Date createTime;
 
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
-
-        }
+}

+ 70 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreOutInRecordRequestDto.java

@@ -0,0 +1,70 @@
+package com.xunmei.common.core.domain.letter.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xunmei.common.core.web.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 人员出入登记对象 core_out_in_record
+ *
+ * @author xunmei
+ * @date 2023-11-10
+ */
+@Data
+public class CoreOutInRecordRequestDto extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    /**
+     * 出入人员姓名
+     */
+    @ApiModelProperty(value = "出入人员姓名")
+    private String userName;
+
+    /**
+     * 单位
+     */
+    @ApiModelProperty(value = "单位")
+    private String companyName;
+
+    /**
+     * 证件号
+     */
+    @ApiModelProperty(value = "证件号")
+    private String idCard;
+
+    /**
+     * 出入机构
+     */
+    @ApiModelProperty(value = "出入机构")
+    private Long orgId;
+
+    private String orgPath;
+    /**
+     * 出入类型
+     */
+    @ApiModelProperty(value = "出入类型")
+    private Integer type;
+
+    @ApiModelProperty(value = "出入时间范围", notes = "web端传递此参数")
+    private Date[] range;
+
+    private Date arrivalTime;
+
+    private Date startTime;
+
+    private Date endTime;
+}

+ 114 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterApproveVo.java

@@ -0,0 +1,114 @@
+package com.xunmei.common.core.domain.letter.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterUserAddDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 介绍信对象 core_introduce_letter
+ *
+ * @author xunmei
+ * @date 2023-10-12
+ */
+@Data
+
+public class CoreIntroduceLetterApproveVo {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    /**
+     * 来访事由
+     */
+    @ApiModelProperty(value = "来访事由")
+    private String reasons;
+
+    /**
+     * 介绍信名称
+     */
+//    @ApiModelProperty(value = "介绍信名称")
+//    private String letterName;
+
+//    /**
+//     * 介绍信编号
+//     */
+//    @ApiModelProperty(value = "介绍信编号")
+//    private String letterId;
+
+    /**
+     * 介绍信编号
+     */
+    @ApiModelProperty(value = "介绍信编号")
+    private String letterNo;
+
+    /**
+     * 有效开始时间
+     */
+    @ApiModelProperty(value = "有效开始时间")
+    @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
+    private Date startTime;
+
+    /**
+     * 有效结束时间
+     */
+    @ApiModelProperty(value = "有效结束时间")
+    @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
+    private Date endTime;
+
+
+    /**
+     * 介绍信文件
+     */
+    private List<String> letterFile;
+    private String letterFileStr;
+
+    /**
+     * 创建机构
+     */
+    private Long orgId;
+
+    /**
+     * 创建机构
+     */
+    private String orgPath;
+
+    /**
+     * 创建机构
+     */
+    private String orgName;
+
+
+    @ApiModelProperty(value = "状态:0 草稿 ,1 使用中, 2 已逾期")
+    private Integer status;
+
+    @ApiModelProperty(value = "类型:1 职能部门出入, 2 临时出入,3 紧急出入")
+    private Integer type;
+
+
+    @ApiModelProperty(value = "审批备注")
+    private String approveRemark;
+
+    @ApiModelProperty(value = "审批状态:0 草稿 ,1 使用中, 2 已逾期")
+    private Integer approveStatus;
+
+    /**
+     * 审核时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "审批时间")
+    private Date approveTime;
+
+//    private List<CoreIntroduceLetterUserAddDto> userInfos;
+//    @ApiModelProperty(value = "接待机构")
+//    private List<Long> receptionOrgIds;
+//
+//    @ApiModelProperty(value = "接待机构名称")
+//    private String receptionOrgNames;
+}

+ 90 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterApprovedPersonVo.java

@@ -0,0 +1,90 @@
+package com.xunmei.common.core.domain.letter.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 介绍信对象 core_introduce_letter
+ *
+ * @author xunmei
+ * @date 2023-10-12
+ */
+@Data
+
+public class CoreIntroduceLetterApprovedPersonVo {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    /**
+     * 来访事由
+     */
+    @ApiModelProperty(value = "来访事由")
+    private String reasons;
+
+    /**
+     * 介绍信编号
+     */
+    @ApiModelProperty(value = "介绍信编号")
+    private String letterNo;
+
+    /**
+     * 介绍信名称
+     */
+    @ApiModelProperty(value = "人员名称")
+    private String userName;
+    /**
+     * 介绍信名称
+     */
+    @ApiModelProperty(value = "单位名称")
+    private String companyName;
+
+    private String imgFile;
+
+    /**
+     * 介绍信文件
+     */
+    private String idCard;
+
+    /**
+     * 创建机构
+     */
+    private Long letterId;
+
+
+    /**
+     * 介绍信文件
+     */
+    private List<String> letterFile;
+    private String letterFileStr;
+
+    /**
+     * 创建机构
+     */
+    private Long orgId;
+
+//    /**
+//     * 创建机构
+//     */
+//    private String orgPath;
+//
+//    /**
+//     * 创建机构
+//     */
+//    private String orgName;
+
+
+    @ApiModelProperty(value = "状态:0 草稿 ,1 使用中, 2 已逾期")
+    private Integer status;
+
+    @ApiModelProperty(value = "类型:1 职能部门出入, 2 临时出入,3 紧急出入")
+    private Integer type;
+
+}

+ 30 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterInfoVo.java

@@ -1,7 +1,8 @@
 package com.xunmei.common.core.domain.letter.vo;
 
+import cn.hutool.core.date.DateTime;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterCheckLog;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
 import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterUserAddDto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -26,6 +27,18 @@ public class CoreIntroduceLetterInfoVo {
     private Long id;
 
     /**
+     * 来访事由
+     */
+    @ApiModelProperty(value = "来访事由")
+    private String reasons;
+
+    /**
+     * 介绍信编号
+     */
+    @ApiModelProperty(value = "介绍信编号")
+    private String letterNo;
+
+    /**
      * 介绍信名称
      */
     @ApiModelProperty(value = "介绍信名称")
@@ -103,8 +116,21 @@ public class CoreIntroduceLetterInfoVo {
     private String description;
 
     private List<CoreIntroduceLetterUserAddDto> userInfos;
+
     @ApiModelProperty(value = "接待机构")
-    private List<Long> orgIds;
-    private String orgNames;
-    private CoreIntroduceLetterCheckLog checkLog;
+    private List<Long> receptionOrgIds;
+
+    @ApiModelProperty(value = "接待机构")
+    private String receptionOrgNames;
+
+    private CoreIntroduceLetterApproveLog approveLog;
+
+    @ApiModelProperty(value = "状态:0 草稿 ,1 使用中, 2 已逾期")
+    private Integer status;
+
+    @ApiModelProperty(value = "类型:1 职能部门出入, 2 临时出入,3 紧急出入")
+    private Integer type;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:MM:ss", timezone = "GMT+8")
+    private Date createTime;
 }

+ 20 - 20
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterVo.java

@@ -25,12 +25,24 @@ public class CoreIntroduceLetterVo {
     private Long id;
 
     /**
+     * 来访事由
+     */
+    @ApiModelProperty(value = "来访事由")
+    private String reasons;
+
+    /**
      * 介绍信名称
      */
     @ApiModelProperty(value = "介绍信名称")
     private String letterName;
 
     /**
+     * 介绍信编号
+     */
+    @ApiModelProperty(value = "介绍信编号")
+    private String letterNo;
+
+    /**
      * 有效开始时间
      */
     @ApiModelProperty(value = "有效开始时间")
@@ -44,6 +56,7 @@ public class CoreIntroduceLetterVo {
     @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
     private Date endTime;
 
+
     /**
      * 介绍信文件
      */
@@ -64,28 +77,13 @@ public class CoreIntroduceLetterVo {
      */
     private String orgName;
 
-/*    *//**
-     * 审核人
-     *//*
-    private String checkUser;
-
-    *//**
-     * 审核时间
-     *//*
-    private Date checkTime;
 
-    *//**
-     * 状态
-     *//*
-    @ApiModelProperty(value = "审核状态1通过2不通过")
-    private Integer checkStatus;*/
-
-    @ApiModelProperty(value = "状态0待审批1已审批2已过期")
+    @ApiModelProperty(value = "状态:0 草稿 ,1 使用中, 2 已逾期")
     private Integer status;
 
+    @ApiModelProperty(value = "类型:1 职能部门出入, 2 临时出入,3 紧急出入")
+    private Integer type;
 
-/*
-    */
 /**
      * 备注
      */
@@ -99,6 +97,8 @@ public class CoreIntroduceLetterVo {
 
     private List<CoreIntroduceLetterUserAddDto> userInfos;
     @ApiModelProperty(value = "接待机构")
-    private List<Long> orgIds;
-    private String orgNames;
+    private List<Long> receptionOrgIds;
+
+    @ApiModelProperty(value = "接待机构名称")
+    private String receptionOrgNames;
 }

+ 109 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreOutInRecordVo.java

@@ -0,0 +1,109 @@
+package com.xunmei.common.core.domain.letter.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xunmei.common.core.web.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 人员出入登记对象 core_out_in_record
+ *
+ * @author xunmei
+ * @date 2023-11-10
+ */
+@Data
+
+public class CoreOutInRecordVo{
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    /**
+     * 出入人员姓名
+     */
+    @ApiModelProperty(value = "出入人员姓名")
+    private String userName;
+
+    /**
+     * 单位
+     */
+    @ApiModelProperty(value = "单位")
+    private String companyName;
+
+    /**
+     * 证件号
+     */
+    @ApiModelProperty(value = "证件号")
+    private String idCard;
+
+    /**
+     * 证件照
+     */
+    @ApiModelProperty(value = "证件照")
+    private String imgFile;
+
+    /**
+     * 出入申请ID
+     */
+    @ApiModelProperty(value = "出入申请ID")
+    private Long letterId;
+
+    /**
+     * 到达时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "到达时间")
+    private Date arrivalTime;
+
+    /**
+     * 离开时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "离开时间")
+    private Date departureTime;
+
+    /**
+     * 出入机构
+     */
+    @ApiModelProperty(value = "出入机构")
+    private Long orgId;
+
+    private String orgName;
+    /**
+     * 陪同人员
+     */
+    @ApiModelProperty(value = "陪同人员")
+    private String accompanyingPerson;
+
+    /**
+     * 介绍信文件
+     */
+    @ApiModelProperty(value = "介绍信文件")
+    private String letterFile;
+
+    /**
+     * 出入类型
+     */
+    @ApiModelProperty(value = "出入类型")
+    private Integer type;
+
+    /**
+     * 核验照片
+     */
+    @ApiModelProperty(value = "核验照片")
+    private String checkImage;
+
+    private String reasons;
+
+}

+ 42 - 12
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/controller/CoreIntroduceLetterController.java

@@ -1,7 +1,11 @@
 package com.xunmei.core.letter.controller;
 
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetter;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
 import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterAddDto;
+import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterApproveRequestDto;
+import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterRequestDto;
+import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterUpdateStatusDto;
+import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterApproveVo;
 import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterVo;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
@@ -35,16 +39,16 @@ public class CoreIntroduceLetterController extends BaseController {
 @ApiOperation(value = "查询CoreIntroduceLetter列表")
 @RequiresPermissions("core:letter:list")
 @GetMapping("/list")
-    public TableDataInfo<CoreIntroduceLetterVo> list(CoreIntroduceLetter coreIntroduceLetter) {
+    public TableDataInfo<CoreIntroduceLetterVo> list(CoreIntroduceLetterRequestDto requestDto) {
 
-        return coreIntroduceLetterService.selectPage( coreIntroduceLetter);
+        return coreIntroduceLetterService.selectPage(requestDto);
     }
 
     @ApiOperation(value = "查询CoreIntroduceLetter审批列表")
-    @RequiresPermissions("core:letter:auditList")
-    @GetMapping("/auditList")
-    public TableDataInfo<CoreIntroduceLetterVo> auditList(CoreIntroduceLetter coreIntroduceLetter) {
-        return coreIntroduceLetterService.selectAuditListPage( coreIntroduceLetter);
+    @RequiresPermissions("core:letter:approveList")
+    @GetMapping("/approve/list")
+    public TableDataInfo<CoreIntroduceLetterApproveVo> approveList(CoreIntroduceLetterApproveRequestDto requestDto) {
+        return coreIntroduceLetterService.selectApproveListPage(requestDto);
     }
 
 
@@ -53,7 +57,7 @@ public class CoreIntroduceLetterController extends BaseController {
      * 获取介绍信详细信息
      */
     @ApiOperation(value = "获取CoreIntroduceLetter详细信息")
-    @RequiresPermissions("core:letter:query")
+//    @RequiresPermissions("core:letter:query")
     @GetMapping(value = "/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(coreIntroduceLetterService.selectCoreIntroduceLetterById(id));
@@ -82,12 +86,25 @@ public class CoreIntroduceLetterController extends BaseController {
         coreIntroduceLetterService.updateCoreIntroduceLetter(coreIntroduceLetter);
         return success();
     }
+
+    /**
+     * 使用介绍信
+     */
+    @ApiOperation(value = "使用CoreIntroduceLetter")
+    @RequiresPermissions("core:letter:edit")
+    @Log(title = "介绍信" , businessType = BusinessType.UPDATE)
+    @PutMapping("/status")
+    public AjaxResult updateLetterStatus(@RequestBody CoreIntroduceLetterUpdateStatusDto request) {
+        coreIntroduceLetterService.updateCoreIntroduceLetterStatus(request);
+        return success();
+    }
+
     @ApiOperation(value = "审批")
-    @RequiresPermissions("core:letter:audit")
+    @RequiresPermissions("core:letter:approve")
     @Log(title = "介绍信" , businessType = BusinessType.UPDATE)
-    @PostMapping("/auditLetter")
-    public AjaxResult auditLetter(@RequestBody CoreIntroduceLetterAddDto coreIntroduceLetter) {
-        coreIntroduceLetterService.auditLetter(coreIntroduceLetter);
+    @PutMapping("/approve")
+    public AjaxResult approveLetter(@RequestBody CoreIntroduceLetterApproveLog request) {
+        coreIntroduceLetterService.auditLetter(request);
         return success();
     }
 
@@ -110,4 +127,17 @@ public class CoreIntroduceLetterController extends BaseController {
     public AjaxResult auditAllList(@PathVariable("id") Long id) {
         return success(coreIntroduceLetterService.auditAllList(id));
     }
+
+//    @ApiOperation(value = "获取机构当前已审核通过的来访人员")
+////    @RequiresPermissions("core:letter:auditAllList")
+//    @GetMapping(value = "/approved/person")
+//    public AjaxResult getOutInApprovedPersonList(CoreIntroduceLetterApproveRequestDto request) {
+//        return success(coreIntroduceLetterService.getOutInApprovedPersonList(request));
+//    }
+
+    @ApiOperation(value = "获取机构当前已审核通过的来访人员")
+    @GetMapping("/approved/person")
+    public AjaxResult getOutInApprovedPersonList(CoreIntroduceLetterApproveRequestDto request) {
+        return success(coreIntroduceLetterService.getOutInApprovedPersonList(request));
+    }
 }

+ 85 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/controller/CoreOutInRecordController.java

@@ -0,0 +1,85 @@
+package com.xunmei.core.letter.controller;
+
+import com.xunmei.common.core.domain.letter.domain.CoreOutInRecord;
+import com.xunmei.common.core.domain.letter.dto.CoreOutInRecordRequestDto;
+import com.xunmei.common.core.domain.letter.vo.CoreOutInRecordVo;
+import com.xunmei.common.core.web.controller.BaseController;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.log.annotation.Log;
+import com.xunmei.common.log.enums.BusinessType;
+import com.xunmei.common.security.annotation.RequiresPermissions;
+import com.xunmei.core.letter.service.ICoreOutInRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 人员出入登记Controller
+ *
+ * @author xunmei
+ * @date 2023-11-10
+ */
+@Api(tags = {"CoreOutInRecord" })
+@RestController
+@RequestMapping("/outinrecord")
+public class CoreOutInRecordController extends BaseController {
+    @Autowired
+    private ICoreOutInRecordService coreOutInRecordService;
+
+/**
+ * 查询人员出入登记列表
+ */
+@ApiOperation(value = "查询CoreOutInRecord列表")
+@RequiresPermissions("core:record:list")
+@GetMapping("/list")
+    public TableDataInfo<CoreOutInRecordVo> list(CoreOutInRecordRequestDto requestDto) {
+        return coreOutInRecordService.selectPage(requestDto);
+    }
+
+
+
+    /**
+     * 获取人员出入登记详细信息
+     */
+    @ApiOperation(value = "获取CoreOutInRecord详细信息")
+    @RequiresPermissions("core:record:list")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(coreOutInRecordService.selectCoreOutInRecordById(id));
+    }
+
+    /**
+     * 新增人员出入登记
+     */
+    @ApiOperation(value = "新增CoreOutInRecord")
+//    @RequiresPermissions("core:record:add")
+    @Log(title = "人员出入登记" , businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CoreOutInRecord coreOutInRecord) {
+        return toAjax(coreOutInRecordService.insertCoreOutInRecord(coreOutInRecord));
+    }
+
+    /**
+     * 修改人员出入登记
+     */
+    @ApiOperation(value = "修改CoreOutInRecord")
+    @RequiresPermissions("core:record:edit")
+    @Log(title = "人员出入登记" , businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CoreOutInRecord coreOutInRecord) {
+        return toAjax(coreOutInRecordService.updateCoreOutInRecord(coreOutInRecord));
+    }
+
+    /**
+     * 删除人员出入登记
+     */
+    @ApiOperation(value = "删除CoreOutInRecord")
+    @RequiresPermissions("core:record:remove")
+    @Log(title = "人员出入登记" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(coreOutInRecordService.deleteCoreOutInRecordByIds(ids));
+    }
+}

+ 15 - 13
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterMapper.java

@@ -1,20 +1,20 @@
 package com.xunmei.core.letter.mapper;
 
-import java.util.List;
-
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetter;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterCheckLog;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
 import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterToOrg;
 import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterUser;
 import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterAddDto;
+import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterApproveRequestDto;
+import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterRequestDto;
 import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterUserAddDto;
-import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterCheckLogVo;
-import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterInfoVo;
-import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterVo;
+import com.xunmei.common.core.domain.letter.vo.*;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 介绍信Mapper接口
  *
@@ -78,7 +78,7 @@ public interface CoreIntroduceLetterMapper extends BaseMapper<CoreIntroduceLette
 
     void deleteToOrgList(@Param("letterId") Long letterId);
 
-    Page<CoreIntroduceLetterVo> selectPageList(@Param("page") Page<CoreIntroduceLetterVo> page, @Param("coreIntroduceLetter")CoreIntroduceLetter coreIntroduceLetter);
+    Page<CoreIntroduceLetterVo> selectPageList(@Param("page") Page<CoreIntroduceLetterVo> page, @Param("coreIntroduceLetter") CoreIntroduceLetterRequestDto coreIntroduceLetter);
 
     List<CoreIntroduceLetterToOrg> findToOrgListA(@Param("records")  List<CoreIntroduceLetterVo> records);
     List<CoreIntroduceLetterToOrg> findToOrgListB(@Param("records")  List<CoreIntroduceLetterInfoVo> records);
@@ -89,17 +89,19 @@ public interface CoreIntroduceLetterMapper extends BaseMapper<CoreIntroduceLette
 
     CoreIntroduceLetterInfoVo selectOneById(@Param("id")  Long id);
 
-    void auditLetter(@Param("coreIntroduceLetter") CoreIntroduceLetterAddDto coreIntroduceLetter);
+    void approveLetter(@Param("coreIntroduceLetter") CoreIntroduceLetterApproveLog coreIntroduceLetter);
 
-    void updateCheckLog(@Param("checkLog")  CoreIntroduceLetterCheckLog checkLog);
+    void updateCheckLog(@Param("checkLog") CoreIntroduceLetterApproveLog checkLog);
 
-    Page<CoreIntroduceLetterVo> selectAuditListPage(@Param("page") Page<CoreIntroduceLetterVo> page, @Param("coreIntroduceLetter")CoreIntroduceLetter coreIntroduceLetter);
+    Page<CoreIntroduceLetterApproveVo> selectApproveListPage(@Param("page") Page<CoreIntroduceLetterApproveVo> page, @Param("coreIntroduceLetter") CoreIntroduceLetterApproveRequestDto coreIntroduceLetter);
 
-    void saveCheckLogs(@Param("checkLogs") List<CoreIntroduceLetterCheckLog> checkLogs);
+    void saveCheckLogs(@Param("checkLogs") List<CoreIntroduceLetterApproveLog> checkLogs);
 
-    CoreIntroduceLetterCheckLog findCheckLog(@Param("letterId") Long letterId, @Param("orgId") Long orgId);
+    CoreIntroduceLetterApproveLog findCheckLog(@Param("letterId") Long letterId, @Param("orgId") Long orgId);
 
     void deleteCheckLogs(@Param("letterId") Long letterId);
 
     List<CoreIntroduceLetterCheckLogVo> auditAllList(@Param("letterId") Long letterId);
+    List<CoreIntroduceLetterApprovedPersonVo> getOutInApprovedPersonList(@Param("request") CoreIntroduceLetterApproveRequestDto request);
+
 }

+ 70 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreOutInRecordMapper.java

@@ -0,0 +1,70 @@
+package com.xunmei.core.letter.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.domain.letter.domain.CoreOutInRecord;
+import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterRequestDto;
+import com.xunmei.common.core.domain.letter.dto.CoreOutInRecordRequestDto;
+import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterVo;
+import com.xunmei.common.core.domain.letter.vo.CoreOutInRecordVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 人员出入登记Mapper接口
+ *
+ * @author xunmei
+ * @date 2023-11-10
+ */
+public interface CoreOutInRecordMapper extends BaseMapper<CoreOutInRecord> {
+    /**
+     * 查询人员出入登记
+     *
+     * @param id 人员出入登记主键
+     * @return 人员出入登记
+     */
+    CoreOutInRecord selectCoreOutInRecordById(Long id);
+
+    /**
+     * 查询人员出入登记列表
+     *
+     * @param coreOutInRecord 人员出入登记
+     * @return 人员出入登记集合
+     */
+//    List<CoreOutInRecord> selectCoreOutInRecordPageList(CoreOutInRecord coreOutInRecord);
+
+    Page<CoreOutInRecordVo> selectCoreOutInRecordPageList(@Param("page") Page<CoreOutInRecordVo> page, @Param("request") CoreOutInRecordRequestDto coreOutInRecord);
+
+    /**
+     * 新增人员出入登记
+     *
+     * @param coreOutInRecord 人员出入登记
+     * @return 结果
+     */
+    int insertCoreOutInRecord(CoreOutInRecord coreOutInRecord);
+
+    /**
+     * 修改人员出入登记
+     *
+     * @param coreOutInRecord 人员出入登记
+     * @return 结果
+     */
+    int updateCoreOutInRecord(CoreOutInRecord coreOutInRecord);
+
+    /**
+     * 删除人员出入登记
+     *
+     * @param id 人员出入登记主键
+     * @return 结果
+     */
+    int deleteCoreOutInRecordById(Long id);
+
+    /**
+     * 批量删除人员出入登记
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCoreOutInRecordByIds(Long[] ids);
+}

+ 15 - 10
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/ICoreIntroduceLetterService.java

@@ -1,16 +1,17 @@
 package com.xunmei.core.letter.service;
 
-import java.util.List;
-
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetter;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterCheckLog;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetter;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
 import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterAddDto;
-import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterCheckLogVo;
-import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterInfoVo;
-import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterVo;
+import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterApproveRequestDto;
+import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterRequestDto;
+import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterUpdateStatusDto;
+import com.xunmei.common.core.domain.letter.vo.*;
 import com.xunmei.common.core.web.page.TableDataInfo;
 
+import java.util.List;
+
 /**
  * 介绍信Service接口
  *
@@ -50,6 +51,8 @@ public interface ICoreIntroduceLetterService extends IService<CoreIntroduceLette
      */
     void updateCoreIntroduceLetter(CoreIntroduceLetterAddDto coreIntroduceLetter);
 
+    void updateCoreIntroduceLetterStatus(CoreIntroduceLetterUpdateStatusDto coreIntroduceLetter);
+
     /**
      * 批量删除介绍信
      *
@@ -72,15 +75,17 @@ public interface ICoreIntroduceLetterService extends IService<CoreIntroduceLette
      * @param coreIntroduceLetter 查询条件对象
      * @return Page
      */
-    TableDataInfo<CoreIntroduceLetterVo> selectPage(CoreIntroduceLetter coreIntroduceLetter);
+    TableDataInfo<CoreIntroduceLetterVo> selectPage(CoreIntroduceLetterRequestDto coreIntroduceLetter);
 
     /**
      * 介绍信审批
      * @param coreIntroduceLetter
      */
-    void auditLetter(CoreIntroduceLetterAddDto coreIntroduceLetter);
+    void auditLetter(CoreIntroduceLetterApproveLog coreIntroduceLetter);
 
-    TableDataInfo<CoreIntroduceLetterVo> selectAuditListPage(CoreIntroduceLetter coreIntroduceLetter);
+    TableDataInfo<CoreIntroduceLetterApproveVo> selectApproveListPage(CoreIntroduceLetterApproveRequestDto requestDto);
 
     List<CoreIntroduceLetterCheckLogVo> auditAllList(Long id);
+
+    List<CoreIntroduceLetterApprovedPersonVo> getOutInApprovedPersonList(CoreIntroduceLetterApproveRequestDto requestDto);
 }

+ 73 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/ICoreOutInRecordService.java

@@ -0,0 +1,73 @@
+package com.xunmei.core.letter.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.letter.domain.CoreOutInRecord;
+import com.xunmei.common.core.domain.letter.dto.CoreOutInRecordRequestDto;
+import com.xunmei.common.core.domain.letter.vo.CoreOutInRecordVo;
+import com.xunmei.common.core.web.page.TableDataInfo;
+
+import java.util.List;
+
+/**
+ * 人员出入登记Service接口
+ *
+ * @author xunmei
+ * @date 2023-11-10
+ */
+public interface ICoreOutInRecordService extends IService<CoreOutInRecord> {
+    /**
+     * 查询人员出入登记
+     *
+     * @param id 人员出入登记主键
+     * @return 人员出入登记
+     */
+     CoreOutInRecord selectCoreOutInRecordById(Long id);
+
+    /**
+     * 查询人员出入登记列表
+     *
+     * @param coreOutInRecord 人员出入登记
+     * @return 人员出入登记集合
+     */
+    List<CoreOutInRecord> selectCoreOutInRecordList(CoreOutInRecord coreOutInRecord);
+
+    /**
+     * 新增人员出入登记
+     *
+     * @param coreOutInRecord 人员出入登记
+     * @return 结果
+     */
+    int insertCoreOutInRecord(CoreOutInRecord coreOutInRecord);
+
+    /**
+     * 修改人员出入登记
+     *
+     * @param coreOutInRecord 人员出入登记
+     * @return 结果
+     */
+    int updateCoreOutInRecord(CoreOutInRecord coreOutInRecord);
+
+    /**
+     * 批量删除人员出入登记
+     *
+     * @param ids 需要删除的人员出入登记主键集合
+     * @return 结果
+     */
+    int deleteCoreOutInRecordByIds(Long[] ids);
+
+    /**
+     * 删除人员出入登记信息
+     *
+     * @param id 人员出入登记主键
+     * @return 结果
+     */
+    int deleteCoreOutInRecordById(Long id);
+
+    /**
+     * 查询人员出入登记分页数据
+     *
+     * @param coreOutInRecord 查询条件对象
+     * @return Page
+     */
+    TableDataInfo<CoreOutInRecordVo> selectPage(CoreOutInRecordRequestDto coreOutInRecord);
+}

+ 65 - 58
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreIntroduceLetterServiceImpl.java

@@ -1,25 +1,22 @@
 package com.xunmei.core.letter.service.impl;
 
-import java.util.*;
-import java.util.stream.Collectors;
-
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetter;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterCheckLog;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
 import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterToOrg;
 import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterUser;
-import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterAddDto;
-import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterUserAddDto;
-import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterCheckLogVo;
-import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterInfoVo;
-import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterVo;
+import com.xunmei.common.core.domain.letter.dto.*;
+import com.xunmei.common.core.domain.letter.vo.*;
 import com.xunmei.common.core.util.BeanHelper;
-import com.xunmei.common.core.utils.DateUtils;
+import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.letter.mapper.CoreIntroduceLetterMapper;
 import com.xunmei.core.letter.service.ICoreIntroduceLetterService;
@@ -27,13 +24,11 @@ import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.xunmei.common.core.web.page.TableDataInfo;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 介绍信Service业务层处理
@@ -49,23 +44,21 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
     private RemoteOrgService orgService;
 
     @Override
-    public TableDataInfo<CoreIntroduceLetterVo> selectPage(CoreIntroduceLetter coreIntroduceLetter) {
+    public TableDataInfo<CoreIntroduceLetterVo> selectPage(CoreIntroduceLetterRequestDto request) {
         //未删除
         Page<CoreIntroduceLetterVo> page;
         //分页
-        if (coreIntroduceLetter.getPageNum()!=null&&coreIntroduceLetter.getPageSize()!=null)
+        if (request.getPageNum()!=null&&request.getPageSize()!=null)
         {
-            page = new Page<>(coreIntroduceLetter.getPageNum(), coreIntroduceLetter.getPageSize());
+            page = new Page<>(request.getPageNum(), request.getPageSize());
         }else{
             page = new Page<>();
         }
- /*       if (coreIntroduceLetter.getCheckSub()) {
-            SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgById(coreIntroduceLetter.getOrgId(),SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-            coreIntroduceLetter.setOrgPath(sysOrg.getPath());
-            coreIntroduceLetter.setOrgId(null);
-        }*/
+//        if (ObjectUtil.isNotNull(request.getRequestFromWeb()) && request.getRequestFromWeb() ) {
+//            request.setType(1);
+//        }
         //获取数据
-        page = coreIntroduceLetterMapper.selectPageList(page, coreIntroduceLetter);
+        page = coreIntroduceLetterMapper.selectPageList(page, request);
         if(CollectionUtils.isNotEmpty(page.getRecords())){
             List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
             page = this.buildPageVo(page, orgList);
@@ -79,26 +72,25 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
     }
 
     @Override
-    public TableDataInfo<CoreIntroduceLetterVo> selectAuditListPage(CoreIntroduceLetter coreIntroduceLetter) {
+    public TableDataInfo<CoreIntroduceLetterApproveVo> selectApproveListPage(CoreIntroduceLetterApproveRequestDto requestDto) {
         //未删除
-        Page<CoreIntroduceLetterVo> page;
+        Page<CoreIntroduceLetterApproveVo> page;
         //分页
-        if (coreIntroduceLetter.getPageNum()!=null&&coreIntroduceLetter.getPageSize()!=null)
+        if (requestDto.getPageNum()!=null&&requestDto.getPageSize()!=null)
         {
-            page = new Page<>(coreIntroduceLetter.getPageNum(), coreIntroduceLetter.getPageSize());
+            page = new Page<>(requestDto.getPageNum(), requestDto.getPageSize());
         }else{
             page = new Page<>();
         }
- /*       if (coreIntroduceLetter.getCheckSub()) {
-            SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgById(coreIntroduceLetter.getOrgId(),SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-            coreIntroduceLetter.setOrgPath(sysOrg.getPath());
-            coreIntroduceLetter.setOrgId(null);
-        }*/
         //获取数据
-        page = coreIntroduceLetterMapper.selectAuditListPage(page, coreIntroduceLetter);
+        page = coreIntroduceLetterMapper.selectApproveListPage(page, requestDto);
         if(CollectionUtils.isNotEmpty(page.getRecords())){
-            List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-            page = this.buildPageVo(page, orgList);
+            page.getRecords().stream().forEach(vo->{
+                vo.setLetterFile(ObjectUtil.isNotEmpty(vo.getLetterFileStr()) ? JSON.parseArray(vo.getLetterFileStr(), String.class) : null);
+            });
+
+//            List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+
         }
 
         //抓换为TableDataInfo适配前端
@@ -112,14 +104,22 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
     }
 
     @Override
-    public void auditLetter(CoreIntroduceLetterAddDto coreIntroduceLetter) {
-
-        CoreIntroduceLetterCheckLog checkLog =coreIntroduceLetter.getCheckLog();
-        checkLog.setCheckTime(new Date());
-        checkLog.setCheckUser(SecurityUtils.getUsername());
-        checkLog.setStatus(1);
-        coreIntroduceLetterMapper.updateCheckLog(checkLog);
+    public List<CoreIntroduceLetterApprovedPersonVo> getOutInApprovedPersonList(CoreIntroduceLetterApproveRequestDto requestDto) {
+         List<CoreIntroduceLetterApprovedPersonVo> outInApprovedPersonList = coreIntroduceLetterMapper.getOutInApprovedPersonList(requestDto);
+         if(ObjectUtil.isNotEmpty(outInApprovedPersonList)){
+             outInApprovedPersonList.stream().forEach(vo->{
+                 vo.setLetterFile(ObjectUtil.isNotEmpty(vo.getLetterFileStr()) ? JSON.parseArray(vo.getLetterFileStr(), String.class) : null);
+             });
+         }
+        return outInApprovedPersonList;
+    }
 
+    @Override
+    public void auditLetter(CoreIntroduceLetterApproveLog approveLog) {
+        approveLog.setApproveTime(new Date());
+        approveLog.setApproveUser(SecurityUtils.getUsername());
+        approveLog.setApproveUserId(SecurityUtils.getUserId());
+        coreIntroduceLetterMapper.approveLetter(approveLog);
     }
 
 
@@ -129,9 +129,9 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
         List<CoreIntroduceLetterVo> records = page.getRecords();
         for (CoreIntroduceLetterVo record : records) {
              List<Long> orgIds = toOrgList.stream().filter(toOrg -> toOrg.getLetterId().equals(record.getId())).map(CoreIntroduceLetterToOrg::getOrgId).collect(Collectors.toList());
-             String  orgNames = orgIds.stream().map(orgId -> orgList.stream().filter(org -> org.getId().equals(orgId)).findFirst().get().getName()).collect(Collectors.joining(","));
-             record.setOrgNames(orgNames);
-             record.setOrgIds(orgIds);
+             String  orgNames = orgIds.stream().map(orgId -> orgList.stream().filter(org -> org.getId().equals(orgId)).findFirst().get().getShortName()).collect(Collectors.joining(","));
+             record.setReceptionOrgIds(orgIds);
+             record.setReceptionOrgNames(orgNames);
         }
       return page;
     }
@@ -157,18 +157,18 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
         List<CoreIntroduceLetterToOrg> toOrgList = coreIntroduceLetterMapper.findToOrgListB(list);
         if(CollectionUtils.isNotEmpty(toOrgList)){
             List<Long> orgIds = toOrgList.stream().filter(toOrg -> toOrg.getLetterId().equals(coreIntroduceLetterVo.getId())).map(CoreIntroduceLetterToOrg::getOrgId).collect(Collectors.toList());
-            String  orgNames = orgIds.stream().map(orgId -> orgList.stream().filter(org -> org.getId().equals(orgId)).findFirst().get().getName()).collect(Collectors.joining(","));
-            coreIntroduceLetterVo.setOrgIds(orgIds);
-            coreIntroduceLetterVo.setOrgNames(orgNames);
+            String  orgNames = orgIds.stream().map(orgId -> orgList.stream().filter(org -> org.getId().equals(orgId)).findFirst().get().getShortName()).collect(Collectors.joining(","));
+            coreIntroduceLetterVo.setReceptionOrgIds(orgIds);
+            coreIntroduceLetterVo.setReceptionOrgNames(orgNames);
         }
         //获取人员信息
         List<CoreIntroduceLetterUserAddDto> userList = coreIntroduceLetterMapper.findUserList(list);
          if (CollectionUtils.isNotEmpty(userList)){
              coreIntroduceLetterVo.setUserInfos(userList);
          }
-        CoreIntroduceLetterCheckLog
+        CoreIntroduceLetterApproveLog
                 checkLog = coreIntroduceLetterMapper.findCheckLog(id,SecurityUtils.getLoginUser().getOrgId());
-        coreIntroduceLetterVo.setCheckLog(checkLog);
+        coreIntroduceLetterVo.setApproveLog(checkLog);
         return coreIntroduceLetterVo;
     }
 
@@ -197,7 +197,7 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
              CoreIntroduceLetter introduceLetter = (CoreIntroduceLetter) map.get("introduceLetter");
              List<CoreIntroduceLetterUser> userList = (List<CoreIntroduceLetterUser>)map.get("userList");
              List<CoreIntroduceLetterToOrg> toOrgList = (List<CoreIntroduceLetterToOrg>)map.get("toOrgList");
-             List<CoreIntroduceLetterCheckLog> checkLogs = (List<CoreIntroduceLetterCheckLog>) map.get("checkLogs");
+             List<CoreIntroduceLetterApproveLog> checkLogs = (List<CoreIntroduceLetterApproveLog>) map.get("checkLogs");
              coreIntroduceLetterMapper.insert(introduceLetter);
              coreIntroduceLetterMapper.saveUserList(userList);
              coreIntroduceLetterMapper.saveToOrgList(toOrgList);
@@ -217,11 +217,14 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
             introduceLetter.setId(letterId);
             introduceLetter.setCreateTime(date);
             introduceLetter.setCreateBy(username);
+//            introduceLetter.setStatus(0);
         }
         introduceLetter.setLetterFile( ObjectUtil.isNotEmpty(coreIntroduceLetter.getLetterFile()) ? JSON.toJSONString(coreIntroduceLetter.getLetterFile()) : null);
         introduceLetter.setOrgId(sysOrg.getId());
         introduceLetter.setOrgPath(sysOrg.getPath());
         introduceLetter.setOrgName(sysOrg.getName());
+        introduceLetter.setStartTime(coreIntroduceLetter.getRange().get(0));
+        introduceLetter.setEndTime(coreIntroduceLetter.getRange().get(1));
 
         //封装人员信息
         List<CoreIntroduceLetterUserAddDto> userAddVoList =coreIntroduceLetter.getUserInfos();
@@ -239,19 +242,19 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
         });
        //封装接待机构
         List<CoreIntroduceLetterToOrg> toOrgList =new ArrayList<>();
-        List<CoreIntroduceLetterCheckLog> checkLogs = new ArrayList<>();
-        List<Long> orgIds =  coreIntroduceLetter.getOrgIds();
+        List<CoreIntroduceLetterApproveLog> checkLogs = new ArrayList<>();
+        List<Long> orgIds =  coreIntroduceLetter.getReceptionOrgIds();
         orgIds.forEach(r->{
             CoreIntroduceLetterToOrg toOrg = new CoreIntroduceLetterToOrg();
             toOrg.setLetterId(introduceLetter.getId());
             toOrg.setOrgId(r);
             toOrgList.add(toOrg);
 
-            CoreIntroduceLetterCheckLog checkLog = new CoreIntroduceLetterCheckLog();
+            CoreIntroduceLetterApproveLog checkLog = new CoreIntroduceLetterApproveLog();
             checkLog.setId(IdWorker.getId());
             checkLog.setOrgId(r);
             checkLog.setLetterId(introduceLetter.getId());
-            checkLog.setStatus(0);
+            checkLog.setApproveStatus(0);
             checkLogs.add(checkLog);
         });
 
@@ -275,7 +278,7 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
         CoreIntroduceLetter introduceLetter = (CoreIntroduceLetter) map.get("introduceLetter");
         List<CoreIntroduceLetterUser> userList = (List<CoreIntroduceLetterUser>)map.get("userList");
         List<CoreIntroduceLetterToOrg> toOrgList = (List<CoreIntroduceLetterToOrg>)map.get("toOrgList");
-        List<CoreIntroduceLetterCheckLog> checkLogs = (List<CoreIntroduceLetterCheckLog>) map.get("checkLogs");
+        List<CoreIntroduceLetterApproveLog> checkLogs = (List<CoreIntroduceLetterApproveLog>) map.get("checkLogs");
 
         coreIntroduceLetterMapper.updateById(introduceLetter);
         coreIntroduceLetterMapper.deleteUserList(introduceLetter.getId());
@@ -286,9 +289,13 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
         //删除审核信息
         coreIntroduceLetterMapper.deleteCheckLogs(introduceLetter.getId());
         coreIntroduceLetterMapper.saveCheckLogs(checkLogs);
+    }
 
-
-
+    @Override
+    public void updateCoreIntroduceLetterStatus(CoreIntroduceLetterUpdateStatusDto letterDto) {
+        CoreIntroduceLetter coreIntroduceLetter = coreIntroduceLetterMapper.selectById(letterDto.getId());
+        coreIntroduceLetter.setStatus(letterDto.getStatus());
+        coreIntroduceLetterMapper.updateById(coreIntroduceLetter);
     }
 
     /**

+ 147 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreOutInRecordServiceImpl.java

@@ -0,0 +1,147 @@
+package com.xunmei.core.letter.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.ErrorMsgConstants;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.letter.domain.CoreOutInRecord;
+import com.xunmei.common.core.domain.letter.dto.CoreOutInRecordRequestDto;
+import com.xunmei.common.core.domain.letter.vo.CoreOutInRecordVo;
+import com.xunmei.common.core.utils.DateUtils;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.letter.mapper.CoreOutInRecordMapper;
+import com.xunmei.core.letter.service.ICoreOutInRecordService;
+
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 人员出入登记Service业务层处理
+ *
+ * @author xunmei
+ * @date 2023-11-10
+ */
+@Service
+public class CoreOutInRecordServiceImpl extends ServiceImpl<CoreOutInRecordMapper, CoreOutInRecord> implements ICoreOutInRecordService {
+    @Autowired
+    private CoreOutInRecordMapper coreOutInRecordMapper;
+    @Resource
+    private RemoteOrgService orgService;
+
+    @Override
+    public TableDataInfo<CoreOutInRecordVo> selectPage(CoreOutInRecordRequestDto request) {
+        //未删除
+        Page<CoreOutInRecordVo> page;
+        //分页
+        if (request.getPageNum() != null && request.getPageSize() != null) {
+            page = new Page<>(request.getPageNum(), request.getPageSize());
+        } else {
+            page = new Page<>();
+        }
+        if(ObjectUtil.isNotEmpty( request.getRange()))
+        {
+            request.setStartTime(DateUtil.beginOfDay(request.getRange()[0]));
+            request.setEndTime(DateUtil.endOfDay(request.getRange()[1]));
+        }
+        if(ObjectUtil.isNotEmpty(request.getArrivalTime()))
+        {
+            request.setStartTime(DateUtil.beginOfDay(request.getArrivalTime()));
+            request.setEndTime(DateUtil.endOfDay(request.getArrivalTime()));
+        }
+        if (Boolean.TRUE.equals(request.getCheckSub())) {
+            SysOrg org = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+            request.setOrgPath(org.getPath());
+        }
+        //获取数据
+        page = coreOutInRecordMapper.selectCoreOutInRecordPageList(page, request);
+        //抓换为TableDataInfo适配前端
+        return TableDataInfo.build(page);
+
+
+    }
+
+
+    /**
+     * 查询人员出入登记
+     *
+     * @param id 人员出入登记主键
+     * @return 人员出入登记
+     */
+    @Override
+    public CoreOutInRecord selectCoreOutInRecordById(Long id) {
+        return coreOutInRecordMapper.selectById(id);
+    }
+
+    /**
+     * 查询人员出入登记列表
+     *
+     * @param coreOutInRecord 人员出入登记
+     * @return 人员出入登记
+     */
+    @Override
+    public List<CoreOutInRecord> selectCoreOutInRecordList(CoreOutInRecord coreOutInRecord) {
+        return coreOutInRecordMapper.selectList(new QueryWrapper<>(coreOutInRecord));
+    }
+
+    /**
+     * 新增人员出入登记
+     *
+     * @param coreOutInRecord 人员出入登记
+     * @return 结果
+     */
+    @Override
+    public int insertCoreOutInRecord(CoreOutInRecord coreOutInRecord) {
+        if(ObjectUtil.isEmpty(coreOutInRecord.getId()))
+        {
+            coreOutInRecord.setId(IdWorker.getId());
+        }
+        coreOutInRecord.setCreateTime(DateUtils.getNowDate());
+        coreOutInRecord.setCreateBy(SecurityUtils.getUsername());
+        return coreOutInRecordMapper.insert(coreOutInRecord);
+    }
+
+    /**
+     * 修改人员出入登记
+     *
+     * @param coreOutInRecord 人员出入登记
+     * @return 结果
+     */
+    @Override
+    public int updateCoreOutInRecord(CoreOutInRecord coreOutInRecord) {
+        return coreOutInRecordMapper.updateById(coreOutInRecord);
+    }
+
+    /**
+     * 批量删除人员出入登记
+     *
+     * @param ids 需要删除的人员出入登记主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCoreOutInRecordByIds(Long[] ids) {
+        return coreOutInRecordMapper.deleteBatchIds(Arrays.asList((ids)));
+    }
+
+    /**
+     * 删除人员出入登记信息
+     *
+     * @param id 人员出入登记主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCoreOutInRecordById(Long id) {
+        return coreOutInRecordMapper.deleteById(id);
+    }
+}

+ 76 - 25
soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreIntroduceLetterMapper.xml

@@ -53,12 +53,21 @@
        <!-- <if test="coreIntroduceLetter.orgPath != null  and coreIntroduceLetter.orgPath != ''">
             and a.org_path like concat( #{coreIntroduceLetter.orgPath}, '%')
         </if>-->
-        <if test="coreIntroduceLetter.letterName !=null  and coreIntroduceLetter.letterName !=''">
-            and a.letter_name like concat('%', #{coreIntroduceLetter.letterName}, '%')
+        <if test="coreIntroduceLetter.letterNo !=null  and coreIntroduceLetter.letterNo !=''">
+            and a.letter_no like concat('%', #{coreIntroduceLetter.letterNo}, '%')
         </if>
-       <!-- <if test="coreIntroduceLetter.status != null  and coreIntroduceLetter.status != ''">
+        <if test="coreIntroduceLetter.reasons !=null  and coreIntroduceLetter.reasons !=''">
+            and a.reasons like concat('%', #{coreIntroduceLetter.reasons}, '%')
+        </if>
+        <if test="coreIntroduceLetter.type !=null  and coreIntroduceLetter.type !=''">
+            and a.type = #{coreIntroduceLetter.type}
+        </if>
+        <if test="(coreIntroduceLetter.type ==null  or coreIntroduceLetter.type =='') and !coreIntroduceLetter.getRequestFromWeb">
+            and a.type in (2,3)
+        </if>
+        <if test="coreIntroduceLetter.status != null  and coreIntroduceLetter.status != ''">
             and a.status = #{coreIntroduceLetter.status}
-        </if>-->
+        </if>
     </select>
 
 
@@ -142,14 +151,14 @@
         </foreach>
     </insert>
     <insert id="updateCheckLog">
-        update core_introduce_letter_check_log set check_status=#{checkLog.checkStatus},check_remark=#{checkLog.checkRemark},check_user=#{checkLog.checkUser},check_time=#{checkLog.checkTime},status=#{checkLog.status}
+        update core_introduce_letter_approve_log set check_status=#{checkLog.checkStatus},check_remark=#{checkLog.checkRemark},check_user=#{checkLog.checkUser},check_time=#{checkLog.checkTime},status=#{checkLog.status}
         where id=#{checkLog.id}
     </insert>
     <insert id="saveCheckLogs">
         insert into
-            core_introduce_letter_check_log (id,letter_id,org_id,status)values
+            core_introduce_letter_approve_log (id,letter_id,org_id,approve_status)values
             <foreach collection="checkLogs" item="item" index="index"  separator="," >
-                (#{item.id},#{item.letterId},#{item.orgId},#{item.status})
+                (#{item.id},#{item.letterId},#{item.orgId},#{item.approveStatus})
             </foreach>
     </insert>
 
@@ -198,13 +207,14 @@
         </trim>
         where id = #{id}
     </update>
-    <update id="auditLetter">
-        update core_introduce_letter set check_user=#{coreIntroduceLetter.checkUser},
-                                         check_time=#{coreIntroduceLetter.checkTime},
-                                         check_status=#{coreIntroduceLetter.checkStatus},
-                                         check_remark=#{coreIntroduceLetter.checkRemark},
-                                         status=#{coreIntroduceLetter.status}
-                                     where id=#{coreIntroduceLetter.id}
+    <update id="approveLetter">
+        update core_introduce_letter_approve_log
+        set  approve_user=#{coreIntroduceLetter.approveUser},
+             approve_user_id=#{coreIntroduceLetter.approveUserId},
+             approve_time=#{coreIntroduceLetter.approveTime},
+             approve_status=#{coreIntroduceLetter.approveStatus},
+             approve_remark=#{coreIntroduceLetter.approveRemark}
+         where id=#{coreIntroduceLetter.id}
     </update>
 
     <delete id="deleteCoreIntroduceLetterById" parameterType="Long">
@@ -233,7 +243,7 @@
         </foreach>
     </delete>
     <delete id="deleteCheckLogs">
-        delete from core_introduce_letter_check_log
+        delete from core_introduce_letter_approve_log
         where letter_id = #{letterId}
     </delete>
     <select id="findToOrgListA" resultType="com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterToOrg">
@@ -257,23 +267,64 @@
     <select id="selectOneById" resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterInfoVo">
      select a.*,a.letter_file as letterFileStr from core_introduce_letter a where a.id =#{id}
     </select>
-    <select id="selectAuditListPage"
-            resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterVo">
-        select a.*,c.status as status,c.check_remark as checkRemark from core_introduce_letter a  left join core_introduce_letter_check_log c on a.id=c.letter_id where a.deleted=0
+    <select id="selectApproveListPage"
+            resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterApproveVo">
+        select
+        a.*,
+        a.letter_file as letterFileStr,
+        c.approve_status as approveStatus,
+        c.approve_remark as approveRemark,
+        c.approve_time
+        from core_introduce_letter a
+        left join core_introduce_letter_approve_log c on a.id=c.letter_id
+        where a.deleted=0 ANd a.status!=0
+        <if test="coreIntroduceLetter.orgId !=null  and coreIntroduceLetter.orgId !=''">
             and c.org_id = #{coreIntroduceLetter.orgId}
-        <if test="coreIntroduceLetter.letterName !=null  and coreIntroduceLetter.letterName !=''">
-            and a.letter_name like concat('%', #{coreIntroduceLetter.letterName}, '%')
         </if>
-        <if test="coreIntroduceLetter.status !=null">
-            and c.status = #{coreIntroduceLetter.status}
+        <if test="coreIntroduceLetter.reasons !=null  and coreIntroduceLetter.reasons !=''">
+            and a.reasons like concat('%', #{coreIntroduceLetter.reasons}, '%')
+        </if>
+        <if test="coreIntroduceLetter.type !=null  and coreIntroduceLetter.type !=''">
+            and a.type like concat('%', #{coreIntroduceLetter.type}, '%')
+        </if>
+        <if test="coreIntroduceLetter.approveStatus !=null">
+            and c.approve_status = #{coreIntroduceLetter.approveStatus}
         </if>
     </select>
     <select id="findCheckLog"
-            resultType="com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterCheckLog">
-        select * from core_introduce_letter_check_log where  letter_id=#{letterId} and org_id=#{orgId}
+            resultType="com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog">
+        select * from core_introduce_letter_approve_log where  letter_id=#{letterId} and org_id=#{orgId}
     </select>
     <select id="auditAllList"
             resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterCheckLogVo">
-        select a.*,b.short_name as orgName from core_introduce_letter_check_log a left join sys_org b on a.org_id=b.id where  letter_id=#{letterId}
+        select a.*,b.short_name as orgName from core_introduce_letter_approve_log a left join sys_org b on a.org_id=b.id where  letter_id=#{letterId}
+    </select>
+
+    <select id="getOutInApprovedPersonList"
+            resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterApprovedPersonVo">
+        SELECT
+        u.*,
+        a.type,
+        a.reasons,
+        a.letter_file,
+        a.letter_file as letterFileStr,
+        c.org_id,
+        a.status
+        FROM
+        core_introduce_letter a
+        LEFT JOIN core_introduce_letter_approve_log c ON a.id = c.letter_id
+        INNER JOIN core_introduce_letter_user u On a.id =u.letter_id
+        WHERE
+        a.deleted = 0
+        AND a.STATUS =1
+        AND c.approve_status=1
+        <if test="request.orgId !=null  and request.orgId !=''">
+            and c.org_id = #{request.orgId}
+        </if>
+        <if test="request.arrivalTime !=null">
+            and #{request.arrivalTime}   <![CDATA[>=]]> a.start_time
+            and #{request.arrivalTime}     <![CDATA[<=]]> a.end_time
+        </if>
     </select>
+
 </mapper>

+ 194 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreOutInRecordMapper.xml

@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.core.letter.mapper.CoreOutInRecordMapper">
+
+    <sql id="selectCoreOutInRecordVo">
+        select id, user_name, company_name, id_card, img_file, letter_id, create_by, create_time, arrival_time, departure_time, org_id, accompanying_person, letter_file, type, check_image
+        from core_out_in_record
+    </sql>
+
+    <select id="selectCoreOutInRecordPageList" resultType="com.xunmei.common.core.domain.letter.vo.CoreOutInRecordVo">
+        SELECT
+            r.*,
+            o.short_name as orgName,
+            l.reasons,
+            l.type
+        FROM
+        core_out_in_record r
+        INNER JOIN sys_org o ON r.org_id=o.id
+        LEFT JOIN core_introduce_letter l ON r.letter_id =l.id
+        <where>
+            <choose>
+                <when test="request.checkSub==true">
+                    o.path like concat(#{request.orgPath}, '%')
+                </when>
+                <otherwise>
+                    r.org_id = #{request.orgId}
+                </otherwise>
+            </choose>
+            <if test="request.userName != null  and request.userName != ''">
+                and r.user_name like concat('%', #{request.userName}, '%')
+            </if>
+            <if test="request.companyName != null  and request.companyName != ''">
+                and r.company_name like concat('%', #{request.companyName}, '%')
+            </if>
+            <if test="request.startTime != null and request.endTime != null">
+                and (
+                (
+                #{request.startTime}   <![CDATA[<=]]> r.arrival_time
+                and #{request.endTime}     <![CDATA[>=]]> r.arrival_time
+                )
+                or
+                (
+                #{request.startTime}   <![CDATA[<=]]> r.departure_time
+                and #{request.endTime}     <![CDATA[>=]]> r.departure_time
+                )
+                or (
+                #{request.startTime}   <![CDATA[>=]]> r.arrival_time
+                and #{request.endTime}     <![CDATA[<=]]> r.departure_time
+                )
+                )
+            </if>
+            <if test="request.type != null  and request.type != ''">
+                and l.type = #{request.type}
+            </if>
+
+        </where>
+    </select>
+
+    <select id="selectCoreOutInRecordById" parameterType="Long">
+            <include refid="selectCoreOutInRecordVo"/>
+            where id = #{id}
+    </select>
+
+    <insert id="insertCoreOutInRecord" parameterType="com.xunmei.common.core.domain.letter.domain.CoreOutInRecord">
+        insert into core_out_in_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,
+            </if>
+            <if test="userName != null">user_name,
+            </if>
+            <if test="companyName != null">company_name,
+            </if>
+            <if test="idCard != null">id_card,
+            </if>
+            <if test="imgFile != null">img_file,
+            </if>
+            <if test="letterId != null">letter_id,
+            </if>
+            <if test="createBy != null">create_by,
+            </if>
+            <if test="createTime != null">create_time,
+            </if>
+            <if test="arrivalTime != null">arrival_time,
+            </if>
+            <if test="departureTime != null">departure_time,
+            </if>
+            <if test="orgId != null">org_id,
+            </if>
+            <if test="accompanyingPerson != null">accompanying_person,
+            </if>
+            <if test="letterFile != null">letter_file,
+            </if>
+            <if test="type != null">type,
+            </if>
+            <if test="checkImage != null">check_image,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+                    <if test="id != null">#{id},
+                    </if>
+                    <if test="userName != null">#{userName},
+                    </if>
+                    <if test="companyName != null">#{companyName},
+                    </if>
+                    <if test="idCard != null">#{idCard},
+                    </if>
+                    <if test="imgFile != null">#{imgFile},
+                    </if>
+                    <if test="letterId != null">#{letterId},
+                    </if>
+                    <if test="createBy != null">#{createBy},
+                    </if>
+                    <if test="createTime != null">#{createTime},
+                    </if>
+                    <if test="arrivalTime != null">#{arrivalTime},
+                    </if>
+                    <if test="departureTime != null">#{departureTime},
+                    </if>
+                    <if test="orgId != null">#{orgId},
+                    </if>
+                    <if test="accompanyingPerson != null">#{accompanyingPerson},
+                    </if>
+                    <if test="letterFile != null">#{letterFile},
+                    </if>
+                    <if test="type != null">#{type},
+                    </if>
+                    <if test="checkImage != null">#{checkImage},
+                    </if>
+        </trim>
+    </insert>
+
+    <update id="updateCoreOutInRecord" parameterType="com.xunmei.common.core.domain.letter.domain.CoreOutInRecord">
+        update core_out_in_record
+        <trim prefix="SET" suffixOverrides=",">
+                    <if test="userName != null">user_name =
+                        #{userName},
+                    </if>
+                    <if test="companyName != null">company_name =
+                        #{companyName},
+                    </if>
+                    <if test="idCard != null">id_card =
+                        #{idCard},
+                    </if>
+                    <if test="imgFile != null">img_file =
+                        #{imgFile},
+                    </if>
+                    <if test="letterId != null">letter_id =
+                        #{letterId},
+                    </if>
+                    <if test="createBy != null">create_by =
+                        #{createBy},
+                    </if>
+                    <if test="createTime != null">create_time =
+                        #{createTime},
+                    </if>
+                    <if test="arrivalTime != null">arrival_time =
+                        #{arrivalTime},
+                    </if>
+                    <if test="departureTime != null">departure_time =
+                        #{departureTime},
+                    </if>
+                    <if test="orgId != null">org_id =
+                        #{orgId},
+                    </if>
+                    <if test="accompanyingPerson != null">accompanying_person =
+                        #{accompanyingPerson},
+                    </if>
+                    <if test="letterFile != null">letter_file =
+                        #{letterFile},
+                    </if>
+                    <if test="type != null">type =
+                        #{type},
+                    </if>
+                    <if test="checkImage != null">check_image =
+                        #{checkImage},
+                    </if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCoreOutInRecordById" parameterType="Long">
+        delete
+        from core_out_in_record where id = #{id}
+    </delete>
+
+    <delete id="deleteCoreOutInRecordByIds" parameterType="String">
+        delete from core_out_in_record where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>