فهرست منبع

来访管理 功能流程调整

zhulu 1 سال پیش
والد
کامیت
068ff3cf26
23فایلهای تغییر یافته به همراه698 افزوده شده و 197 حذف شده
  1. 71 23
      project_data/sql/0.0.7/soc/soc.sql
  2. 54 6
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreIntroduceLetterOutInRequest.java
  3. 54 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreIntroduceLetterOutInRequestUser.java
  4. 39 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreOutInRecord.java
  5. 2 2
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterAddDto.java
  6. 28 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterAddOutInRequestDto.java
  7. 0 2
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreIntroduceLetterUserAddDto.java
  8. 2 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/dto/CoreOutInRecordRequestDto.java
  9. 3 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterInfoVo.java
  10. 28 9
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterOutInRequestVo.java
  11. 26 2
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreOutInRecordVo.java
  12. 29 10
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/controller/CoreIntroduceLetterController.java
  13. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/controller/CoreOutInRecordController.java
  14. 14 13
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterMapper.java
  15. 2 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterOutInRequestMapper.java
  16. 7 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterOutInRequestUserMapper.java
  17. 0 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterUserMapper.java
  18. 8 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreOutInRecordMapper.java
  19. 22 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/ICoreIntroduceLetterService.java
  20. 176 52
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreIntroduceLetterServiceImpl.java
  21. 37 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreOutInRecordServiceImpl.java
  22. 47 43
      soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreIntroduceLetterMapper.xml
  23. 48 11
      soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreOutInRecordMapper.xml

+ 71 - 23
project_data/sql/0.0.7/soc/soc.sql

@@ -6,45 +6,93 @@ CREATE TABLE `core_monitoring_retrieval_plan_to_exec_org`  (
                                                                `org_id` bigint NOT NULL COMMENT '机构id'
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '监控调阅计划与执行机构关系表' ROW_FORMAT = Dynamic;
 
+DROP TABLE IF EXISTS `core_introduce_letter_out_in_request_user`;
+CREATE TABLE `core_introduce_letter_out_in_request_user` (
+                                                      `id` bigint NOT NULL,
+                                                      `user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                                      `company_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                                      `id_type` int DEFAULT NULL COMMENT '证件类型',
+                                                      `id_card` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                                      `img_file` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                                      `out_in_request_id` bigint DEFAULT NULL,
+                                                      `create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                                      `create_time` datetime DEFAULT NULL,
+                                                      PRIMARY KEY (`id`),
+                                                      KEY `index_out_in_request_id` (`out_in_request_id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='出入申请人员表';
+
 
 DELIMITER ??
 DROP PROCEDURE IF EXISTS schema_change ??
 CREATE PROCEDURE schema_change () BEGIN
 
+
+	IF NOT EXISTS(SELECT *
+                  FROM information_schema.columns
+                  WHERE table_schema = DATABASE()
+                    AND table_name = 'sys_org_extend'
+                    AND column_name = 'hd_camera_count') THEN
+        ALTER TABLE `sys_org_extend`
+            ADD COLUMN `hd_camera_count` int NULL COMMENT '高清摄像头路数' AFTER `outside_count`,
+            ADD COLUMN `total_camera_count` int NULL COMMENT '摄像头总路数' AFTER `hd_camera_count`;
+    END IF;
+
 	IF NOT EXISTS(SELECT *
                   FROM information_schema.columns
                   WHERE table_schema = DATABASE()
                     AND table_name = 'core_out_in_record'
                     AND column_name = 'status') THEN
-            ALTER TABLE `soc_iot`.`core_out_in_record`
-                ADD COLUMN `status` int NULL COMMENT '出入状态 :0待审批 1 同意 2 不同意 3 已失效' AFTER `check_image`,
-                MODIFY COLUMN `letter_id` bigint NULL DEFAULT NULL COMMENT '介绍信/出入申请ID' AFTER `pdf_url`,
-                ADD COLUMN `letter_name` varchar(255) NULL COMMENT '介绍信名称' AFTER `letter_id`,
-                ADD COLUMN `letter_file` varchar(500) NULL COMMENT '介绍信附件' AFTER `letter_name`,
-                ADD COLUMN `letter_no` varchar(20) NULL COMMENT '介绍信编号' AFTER `letter_file`,
-                ADD COLUMN `letter_description` varchar(500) NULL COMMENT '介绍信备注' AFTER `letter_no`,
-                ADD COLUMN `letter_reasons` varchar(100) NULL COMMENT '出入事由' AFTER `letter_description`,
-                ADD COLUMN `letter_type` int NULL COMMENT '类型:1 职能部门出入, 2 临时出入,3 紧急出入' AFTER `letter_reasons`,
-                ADD COLUMN `letter_effective_start_time` datetime NULL COMMENT '出入申请生效开始时间' AFTER `letter_type`,
-                ADD COLUMN `letter_effective_end_time` datetime NULL COMMENT '出入申请生效结束时间' AFTER `letter_effective_start_time`,
-                MODIFY COLUMN `letter_user_id` bigint NULL DEFAULT NULL COMMENT '介绍信/出入申请中 人员ID' AFTER `letter_id`,
-                ADD COLUMN `letter_user_name` varchar(255) NULL COMMENT '出入人名称' AFTER `letter_user_id`,
-                ADD COLUMN `company_name` varchar(255) NULL COMMENT '出入人所属公司' AFTER `letter_user_name`,
-                ADD COLUMN `img_file` varchar(255) NULL COMMENT '出入人证件照片' AFTER `company_name`,
-                ADD COLUMN `id_type` varchar(255) NULL COMMENT '出入人证件类型' AFTER `img_file`,
-                ADD COLUMN `id_card` varchar(255) NULL COMMENT '出入人证件号' AFTER `id_type`;
+        ALTER TABLE `core_out_in_record`
+            DROP COLUMN `letter_id`,
+            DROP COLUMN `letter_user_id`,
+            ADD COLUMN `status` int NULL COMMENT '出入状态 :0待审批 1 同意 2 不同意 3 已失效' AFTER `check_image`,
+            ADD COLUMN `out_in_request_effective_start_time` datetime NULL COMMENT '出入申请生效开始时间' AFTER `pdf_url`,
+            ADD COLUMN `out_in_request_effective_end_time` datetime NULL COMMENT '出入申请生效结束时间' AFTER `out_in_request_effective_start_time`,
+            ADD COLUMN `out_in_request_id` bigint NULL COMMENT '出入申请Id' AFTER `out_in_request_effective_end_time`,
+            ADD COLUMN `out_in_request_user_id` bigint NULL COMMENT '出入人员在出入申请中的人员ID' AFTER `out_in_request_id`,
+            ADD COLUMN `submit_sign` bigint NULL COMMENT '登记人签名' AFTER `out_in_request_user_id`,
+            ADD COLUMN `update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改人' AFTER `submit_sign`,
+            ADD COLUMN `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间' AFTER `update_by`;
     END IF;
 
-	IF NOT EXISTS(SELECT *
+    IF EXISTS(SELECT *
                   FROM information_schema.columns
                   WHERE table_schema = DATABASE()
-                    AND table_name = 'sys_org_extend'
-                    AND column_name = 'hd_camera_count') THEN
-            ALTER TABLE `sys_org_extend`
-                ADD COLUMN `hd_camera_count` int NULL COMMENT '高清摄像头路数' AFTER `outside_count`,
-                ADD COLUMN `non_hd_camera_count` int NULL COMMENT '非高清摄像头路数' AFTER `hd_camera_count`;
+                    AND table_name = 'core_introduce_letter_approve_log'
+                    ) THEN
+
+            ALTER TABLE core_introduce_letter_approve_log RENAME TO core_introduce_letter_out_in_request;
+    END IF;
+
+    IF NOT EXISTS(SELECT *
+                  FROM information_schema.columns
+                  WHERE table_schema = DATABASE()
+                    AND table_name = 'core_introduce_letter_approve_log'
+                    AND column_name = 'letter_name') THEN
+            ALTER TABLE `core_introduce_letter_out_in_request`
+                ADD COLUMN `approve_sign_img` varchar(255) NULL COMMENT '审批人签名' AFTER `approve_remark`,
+                ADD COLUMN `letter_name` varchar(255) NULL COMMENT '介绍信名称' AFTER `org_id`,
+                ADD COLUMN `letter_file` varchar(500) NULL COMMENT '介绍信附件' AFTER `letter_name`,
+                ADD COLUMN `letter_no` varchar(20) NULL COMMENT '介绍信编号' AFTER `letter_file`,
+                ADD COLUMN `letter_description` varchar(500) NULL COMMENT '介绍信备注' AFTER `letter_no`,
+                ADD COLUMN `letter_reasons` varchar(100) NULL COMMENT '出入事由' AFTER `letter_description`,
+                ADD COLUMN `letter_type` int NULL COMMENT '类型:1 电子, 2 纸质,3 紧急' AFTER `letter_reasons`,
+                ADD COLUMN `deleted` int NULL DEFAULT 0 COMMENT '0正常1删除' AFTER `letter_type`,
+                ADD COLUMN `start_time` datetime(0) NULL DEFAULT NULL COMMENT '有效开始时间,开具时间' AFTER `deleted`,
+                ADD COLUMN `end_time` datetime(0) NULL DEFAULT NULL COMMENT '有效结束时间' AFTER `start_time`,
+                ADD COLUMN `effective_days` int NULL DEFAULT NULL COMMENT '有效天数' AFTER `end_time`;
+                ADD COLUMN `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人' AFTER `end_time`,
+                ADD COLUMN `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间' AFTER `create_by`,
+                ADD COLUMN `update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改人' AFTER `create_time`,
+                ADD COLUMN `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间' AFTER `update_by`,
+                ADD COLUMN `deleted` int NULL DEFAULT 0 COMMENT '0正常1删除' AFTER `update_time`,
+                COMMENT = '出入申请表';
     END IF;
 
 END ??
 DELIMITER ;
 CALL schema_change ();
+
+-- 清空 来访申请和 来访记录数据
+delete from core_introduce_letter_out_in_request;
+delete from core_out_in_record;

+ 54 - 6
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreIntroduceLetterApproveLog.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreIntroduceLetterOutInRequest.java

@@ -8,13 +8,11 @@ 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_introduce_letter
+ * 介绍信出入申请表 core_introduce_letter_out_in_request
  *
  * @author xunmei
  * @date 2023-10-12
@@ -22,9 +20,9 @@ import java.util.Date;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@TableName("core_introduce_letter_approve_log")
-@ApiModel(value = "CoreIntroduceLetterApproveLog对象", description = "介绍信审核记录")
-public class CoreIntroduceLetterApproveLog extends BaseEntity {
+@TableName("core_introduce_letter_out_in_request")
+@ApiModel(value = "CoreIntroduceLetterOutInRequest对象", description = "出入申请表")
+public class CoreIntroduceLetterOutInRequest extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
     /**
@@ -52,10 +50,60 @@ public class CoreIntroduceLetterApproveLog extends BaseEntity {
     @ApiModelProperty(value = "审批备注")
     private String approveRemark;
 
+    @ApiModelProperty(value = "审批人签名")
+    private String approveSignImg;
+
+
     @ApiModelProperty(value = "介绍信编码")
     private Long letterId;
 
     @ApiModelProperty(value = "接待机构")
     private Long orgId;
 
+    /**
+     * 介绍信名称
+     */
+    @ApiModelProperty(value = "介绍信名称")
+    private String letterName;
+
+    /**
+     * 介绍信文件
+     */
+    private String letterFile;
+
+    /**
+     * 介绍信编号
+     */
+    @ApiModelProperty(value = "介绍信编号")
+    private String letterNo;
+
+    @ApiModelProperty(value = "备注")
+    private String letterDescription;
+
+    /**
+     * 来访事由
+     */
+    @ApiModelProperty(value = "来访事由")
+    private String letterReasons;
+
+    /**
+     * 介绍信 类型:1 电子, 2 纸质,3 紧急
+     */
+    private Integer letterType;
+
+    private Integer deleted;
+
+    @ApiModelProperty(value = "有效开始时间")
+    private Date startTime;
+
+    /**
+     * 有效结束时间
+     */
+    @ApiModelProperty(value = "有效结束时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "有效天数")
+    private Integer effectiveDays;
+
+
 }

+ 54 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreIntroduceLetterOutInRequestUser.java

@@ -0,0 +1,54 @@
+package com.xunmei.common.core.domain.letter.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * 介绍信出入申请人员表 core_introduce_letter_out_in_request_user
+ *
+ * @author xunmei
+ * @date 2023-10-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("core_introduce_letter_out_in_request_user")
+@ApiModel(value = "CoreIntroduceLetterOutInRequestUser对象" , description = "出入申请人员表")
+public class CoreIntroduceLetterOutInRequestUser
+{
+    private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 出入人员名称 */
+    @ApiModelProperty(value = "人员名称")
+    private String userName;
+
+    /** 出入人员单位名称 */
+    @ApiModelProperty(value = "单位名称")
+    private String companyName;
+
+    private String imgFile;
+
+    /** 证件类型 */
+    private Integer idType;
+
+    /** 介绍信证件号 */
+    private String idCard;
+
+    /** 出入申请Id */
+    private Long outInRequestId;
+
+    private String createBy;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+}

+ 39 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/domain/CoreOutInRecord.java

@@ -62,14 +62,14 @@ public class CoreOutInRecord extends BaseEntity {
     /**
      * 出入申请中人员ID
      */
-    @ApiModelProperty(value = "出入申请中人员ID")
-    private Long letterUserId;
+//    @ApiModelProperty(value = "出入申请中人员ID")
+//    private Long letterUserId;
 
     /**
      * 出入申请ID
      */
-    @ApiModelProperty(value = "出入申请ID")
-    private Long letterId;
+//    @ApiModelProperty(value = "出入申请ID")
+//    private Long letterId;
 
     /**
      * 到达时间
@@ -85,6 +85,10 @@ public class CoreOutInRecord extends BaseEntity {
     @ApiModelProperty(value = "离开时间")
     private Date departureTime;
 
+    @ApiModelProperty(value = "提交人签名")
+    private String submitSign;
+
+
     /**
      * 出入机构
      */
@@ -112,4 +116,35 @@ public class CoreOutInRecord extends BaseEntity {
     @TableField("pdf_url")
     @ApiModelProperty(value = "登记簿url")
     private String pdfUrl;
+
+    /**
+     *  出入状态 :0待审批 1 同意 2 不同意 3 已失效
+     */
+    @ApiModelProperty(value = "出入状态")
+    private Integer status;
+
+    /**
+     *  出入申请有效开始时间
+     */
+    @ApiModelProperty(value = "出入申请有效开始时间")
+    private Date outInRequestEffectiveStartTime;
+
+    /**
+     *  出入申请有效结束时间
+     */
+    @ApiModelProperty(value = "出入申请有效结束时间")
+    private Date outInRequestEffectiveEndTime;
+
+    /**
+     *  出入申请Id
+     */
+    @ApiModelProperty(value = "出入申请Id")
+    private Long outInRequestId;
+
+    /**
+     *  出入人员Id
+     */
+    @ApiModelProperty(value = "出入人员Id")
+    private Long outInRequestUserId;
+
 }

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

@@ -1,6 +1,6 @@
 package com.xunmei.common.core.domain.letter.dto;
 
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterOutInRequest;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -120,5 +120,5 @@ public class CoreIntroduceLetterAddDto{
 
     private List<CoreIntroduceLetterUserAddDto> userInfos;
 
-    private CoreIntroduceLetterApproveLog checkLog;
+    private CoreIntroduceLetterOutInRequest checkLog;
 }

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

@@ -0,0 +1,28 @@
+package com.xunmei.common.core.domain.letter.dto;
+
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterOutInRequest;
+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 CoreIntroduceLetterAddOutInRequestDto {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    private List<CoreIntroduceLetterUserAddDto> userInfos;
+
+}

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

@@ -20,8 +20,6 @@ import java.util.List;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@TableName("core_introduce_letter_user")
-@ApiModel(value = "CoreIntroduceLetter对象", description = "介绍信")
 public class CoreIntroduceLetterUserAddDto {
     private static final long serialVersionUID = 1L;
 

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

@@ -67,4 +67,6 @@ public class CoreOutInRecordRequestDto extends BaseEntity {
     private Date startTime;
 
     private Date endTime;
+
+    private Integer approveStatus;
 }

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

@@ -1,8 +1,7 @@
 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.CoreIntroduceLetterApproveLog;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterOutInRequest;
 import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterUserAddDto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -120,7 +119,7 @@ public class CoreIntroduceLetterInfoVo {
 
     private List<CoreIntroduceLetterUserAddDto> userInfos;
 
-    private List<CoreIntroduceLetterApproveVo> approveInfos;
+    private List<CoreIntroduceLetterOutInRequestVo> approveInfos;
 
     @ApiModelProperty(value = "接待机构")
     private List<Long> receptionOrgIds;
@@ -128,7 +127,7 @@ public class CoreIntroduceLetterInfoVo {
     @ApiModelProperty(value = "接待机构")
     private String receptionOrgNames;
 
-    private CoreIntroduceLetterApproveLog approveLog;
+    private CoreIntroduceLetterOutInRequest approveLog;
 
     @ApiModelProperty(value = "状态:0 草稿 ,1 使用中, 2 已逾期")
     private Integer status;

+ 28 - 9
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterApproveVo.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/letter/vo/CoreIntroduceLetterOutInRequestVo.java

@@ -1,7 +1,7 @@
 package com.xunmei.common.core.domain.letter.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.xunmei.common.core.domain.letter.dto.CoreIntroduceLetterUserAddDto;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterOutInRequestUser;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -16,7 +16,7 @@ import java.util.List;
  */
 @Data
 
-public class CoreIntroduceLetterApproveVo {
+public class CoreIntroduceLetterOutInRequestVo {
     private static final long serialVersionUID = 1L;
 
     /**
@@ -28,7 +28,7 @@ public class CoreIntroduceLetterApproveVo {
      * 来访事由
      */
     @ApiModelProperty(value = "来访事由")
-    private String reasons;
+    private String letterReasons;
 
     /**
      * 介绍信名称
@@ -54,6 +54,8 @@ public class CoreIntroduceLetterApproveVo {
     @ApiModelProperty(value = "有效开始时间")
     @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
     private Date startTime;
+    @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
+    private Date startTimeStr;
 
     @ApiModelProperty(value = "有效天数")
     private Integer effectiveDays;
@@ -63,7 +65,8 @@ public class CoreIntroduceLetterApproveVo {
     @ApiModelProperty(value = "有效结束时间")
     @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
     private Date endTime;
-
+    @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
+    private Date endTimeStr;
 
     /**
      * 介绍信文件
@@ -91,7 +94,10 @@ public class CoreIntroduceLetterApproveVo {
     private Integer status;
 
     @ApiModelProperty(value = "类型:1 职能部门出入, 2 临时出入,3 紧急出入")
-    private Integer type;
+    private Integer letterType;
+
+//    @ApiModelProperty(value = "描述")
+//    private String letterDescription;
 
 
     @ApiModelProperty(value = "审批备注")
@@ -107,10 +113,23 @@ public class CoreIntroduceLetterApproveVo {
     @ApiModelProperty(value = "审批时间")
     private Date approveTime;
 
-//    private List<CoreIntroduceLetterUserAddDto> userInfos;
-//    @ApiModelProperty(value = "接待机构")
+    @ApiModelProperty(value = "审批人签名")
+    private String approveSignImg;
+
+    @ApiModelProperty(value = "类型:1 职能部门出入, 2 临时出入,3 紧急出入")
+    private String letterDescription;
+
+
+
+    private List<CoreIntroduceLetterOutInRequestUser> userInfos;
+
+
+    //    @ApiModelProperty(value = "接待机构")
 //    private List<Long> receptionOrgIds;
 //
-//    @ApiModelProperty(value = "接待机构名称")
-//    private String receptionOrgNames;
+    @ApiModelProperty(value = "接待机构名称")
+    private String receptionOrgNames;
+
+    @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
+    private Date createTime;
 }

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

@@ -79,6 +79,9 @@ public class CoreOutInRecordVo{
     @ApiModelProperty(value = "离开时间")
     private Date departureTime;
 
+    @ApiModelProperty(value = "提交人签名")
+    private String submitSign;
+
     /**
      * 出入机构
      */
@@ -111,7 +114,7 @@ public class CoreOutInRecordVo{
      * 出入类型
      */
     @ApiModelProperty(value = "出入类型")
-    private Integer type;
+    private Integer letterType;
 
     /**
      * 核验照片
@@ -119,7 +122,7 @@ public class CoreOutInRecordVo{
     @ApiModelProperty(value = "核验照片")
     private String checkImage;
 
-    private String reasons;
+    private String letterReasons;
 
     @ApiModelProperty(value = "介绍信有效期开始时间")
     @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
@@ -140,9 +143,30 @@ public class CoreOutInRecordVo{
 
     private String pdfUrl;
 
+    @ApiModelProperty(value = "出入记录状态")
+    private Integer status;
     @ApiModelProperty(value = "登记人员")
     private String createBy;
 
+    @ApiModelProperty(value = "审批备注")
+    private String approveRemark;
+
+    @ApiModelProperty(value = "审批状态:0待审批1通过2不通过3逾期")
+    private Integer approveStatus;
+
+    /**
+     * 审核时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "审批时间")
+    private Date approveTime;
+
+    @ApiModelProperty(value = "审批人签名")
+    private String approveSignImg;
+
+    private Long outInRequestId;
+
+    private Long outInRequestUserId;
 
 
 }

+ 29 - 10
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/controller/CoreIntroduceLetterController.java

@@ -1,11 +1,8 @@
 package com.xunmei.core.letter.controller;
 
-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.domain.CoreIntroduceLetterOutInRequest;
+import com.xunmei.common.core.domain.letter.dto.*;
+import com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterOutInRequestVo;
 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;
@@ -40,14 +37,13 @@ public class CoreIntroduceLetterController extends BaseController {
 @RequiresPermissions("core:letter:query")
 @GetMapping("/list")
     public TableDataInfo<CoreIntroduceLetterVo> list(CoreIntroduceLetterRequestDto requestDto) {
-
         return coreIntroduceLetterService.selectPage(requestDto);
     }
 
     @ApiOperation(value = "查询CoreIntroduceLetter审批列表")
     @RequiresPermissions("core:letter:approveList")
     @GetMapping("/approve/list")
-    public TableDataInfo<CoreIntroduceLetterApproveVo> approveList(CoreIntroduceLetterApproveRequestDto requestDto) {
+    public TableDataInfo<CoreIntroduceLetterOutInRequestVo> approveList(CoreIntroduceLetterApproveRequestDto requestDto) {
         return coreIntroduceLetterService.selectApproveListPage(requestDto);
     }
 
@@ -103,7 +99,7 @@ public class CoreIntroduceLetterController extends BaseController {
     @RequiresPermissions("core:letter:approve")
     @Log(title = "介绍信" , businessType = BusinessType.UPDATE)
     @PutMapping("/approve")
-    public AjaxResult approveLetter(@RequestBody CoreIntroduceLetterApproveLog request) {
+    public AjaxResult approveLetter(@RequestBody CoreIntroduceLetterOutInRequest request) {
         coreIntroduceLetterService.auditLetter(request);
         return success();
     }
@@ -142,7 +138,30 @@ public class CoreIntroduceLetterController extends BaseController {
     @Log(title = "介绍信" , businessType = BusinessType.OTHER)
     @GetMapping("timedTask/updateStatus")
     public AjaxResult timedTaskUpdateLetterStatus() {
-        coreIntroduceLetterService.timedTaskUpdateLetterStatus();
+        coreIntroduceLetterService.timedTaskUpdateOutInRequestStatus();
+        return success();
+    }
+
+
+    /**
+     * 新增介绍信
+     */
+    @ApiOperation(value = "新增出入申请")
+    @Log(title = "介绍信出入申请" , businessType = BusinessType.INSERT)
+    @PostMapping("outInRequest")
+    public AjaxResult addOutInRequest(@RequestBody CoreIntroduceLetterAddOutInRequestDto coreIntroduceLetter) {
+        coreIntroduceLetterService.insertOutInRequest(coreIntroduceLetter);
         return success();
     }
+
+    /**
+     * 获取出入申请详细信息
+     */
+    @ApiOperation(value = "获取CoreIntroduceLetter详细信息")
+    @RequiresPermissions("core:letter:query")
+    @GetMapping(value = "/outinrequest/{id}")
+    public AjaxResult getOutInRequestInfo(@PathVariable("id") Long id) {
+        return success(coreIntroduceLetterService.selectOutInRequestInfoById(id));
+    }
+
 }

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

@@ -76,7 +76,7 @@ public class CoreOutInRecordController extends BaseController {
      * 删除人员出入登记
      */
     @ApiOperation(value = "删除CoreOutInRecord")
-    @RequiresPermissions("core:record:remove")
+//    @RequiresPermissions("core:record:remove")
     @Log(title = "人员出入登记" , businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public AjaxResult remove(@PathVariable Long[] ids) {

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

@@ -2,11 +2,7 @@ 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.CoreIntroduceLetter;
-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.domain.*;
 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;
@@ -92,17 +88,17 @@ public interface CoreIntroduceLetterMapper extends BaseMapper<CoreIntroduceLette
 
     CoreIntroduceLetterInfoVo selectOneById(@Param("id")  Long id);
 
-    void approveLetter(@Param("coreIntroduceLetter") CoreIntroduceLetterApproveLog coreIntroduceLetter);
+    void approveLetter(@Param("coreIntroduceLetter") CoreIntroduceLetterOutInRequest coreIntroduceLetter);
 
-    void updateCheckLog(@Param("checkLog") CoreIntroduceLetterApproveLog checkLog);
+    void updateCheckLog(@Param("checkLog") CoreIntroduceLetterOutInRequest checkLog);
 
-    Page<CoreIntroduceLetterApproveVo> selectApproveListPage(@Param("page") Page<CoreIntroduceLetterApproveVo> page, @Param("coreIntroduceLetter") CoreIntroduceLetterApproveRequestDto coreIntroduceLetter);
+    Page<CoreIntroduceLetterOutInRequestVo> selectApproveListPage(@Param("page") Page<CoreIntroduceLetterOutInRequestVo> page, @Param("coreIntroduceLetter") CoreIntroduceLetterApproveRequestDto coreIntroduceLetter);
 
-    void saveCheckLogs(@Param("checkLogs") List<CoreIntroduceLetterApproveLog> checkLogs);
+    void saveCheckLogs(@Param("checkLogs") List<CoreIntroduceLetterOutInRequest> checkLogs);
 
-    List<CoreIntroduceLetterApproveVo> findLetterApproveInfos(@Param("letterId") Long letterId);
+    List<CoreIntroduceLetterOutInRequestVo> findLetterApproveInfos(@Param("letterId") Long letterId);
 
-    CoreIntroduceLetterApproveLog findCheckLog(@Param("letterId") Long letterId, @Param("orgId") Long orgId);
+    CoreIntroduceLetterOutInRequest findCheckLog(@Param("id") Long id, @Param("orgId") Long orgId);
     void deleteCheckLogs(@Param("letterId") Long letterId);
 
     List<CoreIntroduceLetterCheckLogVo> auditAllList(@Param("letterId") Long letterId);
@@ -111,8 +107,13 @@ public interface CoreIntroduceLetterMapper extends BaseMapper<CoreIntroduceLette
     List<PanelListVo> selectToDoApproveListForAPP(@Param("request") CoreIntroduceLetterApproveRequestDto request);
 
 
-    void batchUpdateApproveLogStatus(@Param("requestList") List<CoreIntroduceLetterApproveLog> requestList);
-    void updateApproveLogStatus(@Param("request") CoreIntroduceLetterApproveLog request);
+    void batchUpdateOutInRequestStatus(@Param("requestList") List<CoreIntroduceLetterOutInRequest> requestList);
+    void updateOutInRequestStatus(@Param("request") CoreIntroduceLetterOutInRequest request);
 
     int selectWebIndexNums(@Param("orgId") Long orgId);
+
+    void saveOutInRequestUserList(@Param("userList")List<CoreIntroduceLetterOutInRequestUser> userList);
+
+    CoreIntroduceLetterOutInRequestVo selectOneOutInRequestById(@Param("id")  Long id);
+
 }

+ 2 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterApproveLogMapper.java → soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterOutInRequestMapper.java

@@ -1,12 +1,11 @@
 package com.xunmei.core.letter.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
-import org.apache.ibatis.annotations.Select;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterOutInRequest;
 
 /**
  * @author jingyuanchao
  * @date 2023/12/5 10:15
  */
-public interface CoreIntroduceLetterApproveLogMapper  extends BaseMapper<CoreIntroduceLetterApproveLog> {
+public interface CoreIntroduceLetterOutInRequestMapper extends BaseMapper<CoreIntroduceLetterOutInRequest> {
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterOutInRequestUserMapper.java

@@ -0,0 +1,7 @@
+package com.xunmei.core.letter.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterOutInRequestUser;
+
+public interface CoreIntroduceLetterOutInRequestUserMapper extends BaseMapper<CoreIntroduceLetterOutInRequestUser> {
+}

+ 0 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/mapper/CoreIntroduceLetterUserMapper.java

@@ -1,7 +1,6 @@
 package com.xunmei.core.letter.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
 import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterUser;
 
 /**

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

@@ -70,5 +70,13 @@ public interface CoreOutInRecordMapper extends BaseMapper<CoreOutInRecord> {
 
     List<CoreOutInRecord> findLetterOutInRecordList(Long[] ids);
 
+    int saveOutInRecordList(@Param("list")List<CoreOutInRecord> list);
+
+    int updateCoreOutInRecordStatus(@Param("status")Integer status,@Param("outInRequestId") Long outInRequestId);
+
+    int batchUpdateCoreOutInRecordStatus(@Param("list")List<CoreOutInRecord> list);
+
+
+
 
 }

+ 22 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/ICoreIntroduceLetterService.java

@@ -2,11 +2,8 @@ package com.xunmei.core.letter.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 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.domain.CoreIntroduceLetterOutInRequest;
+import com.xunmei.common.core.domain.letter.dto.*;
 import com.xunmei.common.core.domain.letter.vo.*;
 import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
@@ -84,15 +81,15 @@ public interface ICoreIntroduceLetterService extends IService<CoreIntroduceLette
      * 介绍信审批
      * @param coreIntroduceLetter
      */
-    void auditLetter(CoreIntroduceLetterApproveLog coreIntroduceLetter);
+    void auditLetter(CoreIntroduceLetterOutInRequest coreIntroduceLetter);
 
-    TableDataInfo<CoreIntroduceLetterApproveVo> selectApproveListPage(CoreIntroduceLetterApproveRequestDto requestDto);
+    TableDataInfo<CoreIntroduceLetterOutInRequestVo> selectApproveListPage(CoreIntroduceLetterApproveRequestDto requestDto);
 
     List<CoreIntroduceLetterCheckLogVo> auditAllList(Long id);
 
     List<CoreIntroduceLetterApprovedPersonVo> getOutInApprovedPersonList(CoreIntroduceLetterApproveRequestDto requestDto);
 
-    void timedTaskUpdateLetterStatus();
+    void timedTaskUpdateOutInRequestStatus();
 
     WebPanelResult selectWebIndexData(PanelListDto req);
 
@@ -102,4 +99,21 @@ public interface ICoreIntroduceLetterService extends IService<CoreIntroduceLette
      * @return
      */
     List<PanelListVo> selectToDoApproveListForAPP(PanelListDto panelListDto);
+
+    /**
+     * 新增介绍信出入申请
+     *
+     * @param coreIntroduceLetter 介绍信
+     * @return 结果
+     */
+    void insertOutInRequest(CoreIntroduceLetterAddOutInRequestDto coreIntroduceLetter);
+
+    /**
+     * 查询介绍信
+     *
+     * @param id 介绍信主键
+     * @return 介绍信
+     */
+    CoreIntroduceLetterOutInRequestVo selectOutInRequestInfoById(Long id);
+
 }

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

@@ -20,11 +20,13 @@ import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.domain.panel.vo.WebPanelResult;
 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.DictUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.core.letter.mapper.CoreIntroduceLetterApproveLogMapper;
+import com.xunmei.core.letter.mapper.CoreIntroduceLetterOutInRequestMapper;
 import com.xunmei.core.letter.mapper.CoreIntroduceLetterMapper;
+import com.xunmei.core.letter.mapper.CoreIntroduceLetterOutInRequestUserMapper;
 import com.xunmei.core.letter.mapper.CoreOutInRecordMapper;
 import com.xunmei.core.letter.service.ICoreIntroduceLetterService;
 import com.xunmei.system.api.RemoteOrgService;
@@ -50,13 +52,17 @@ import java.util.stream.Collectors;
  */
 @Service
 public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLetterMapper, CoreIntroduceLetter> implements ICoreIntroduceLetterService {
-    @Resource
+    @Autowired
     private CoreIntroduceLetterMapper coreIntroduceLetterMapper;
 
-    @Resource
+    @Autowired
     private CoreOutInRecordMapper coreOutInRecordMapper;
-    @Resource
-    private CoreIntroduceLetterApproveLogMapper approveLogMapper;
+
+    @Autowired
+    private CoreIntroduceLetterOutInRequestMapper outInRequestMapper;
+
+    @Autowired
+    private CoreIntroduceLetterOutInRequestUserMapper outInRequestUserMapper;
 
     @Autowired
     private RemoteRoleService roleService;
@@ -78,7 +84,7 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
 //        if (ObjectUtil.isNotNull(request.getRequestFromWeb()) && request.getRequestFromWeb() ) {
 //            request.setType(1);
 //        }
-        if (ObjectUtil.equal(request.getRequestFromWeb(), true)) {
+            if (ObjectUtil.equal(request.getRequestFromWeb(), true)) {
             //获取数据
             page = coreIntroduceLetterMapper.selectPageList(page, request);
         } else {
@@ -97,9 +103,9 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
     }
 
     @Override
-    public TableDataInfo<CoreIntroduceLetterApproveVo> selectApproveListPage(CoreIntroduceLetterApproveRequestDto requestDto) {
+    public TableDataInfo<CoreIntroduceLetterOutInRequestVo> selectApproveListPage(CoreIntroduceLetterApproveRequestDto requestDto) {
         //未删除
-        Page<CoreIntroduceLetterApproveVo> page;
+        Page<CoreIntroduceLetterOutInRequestVo> page;
         //分页
         if (requestDto.getPageNum() != null && requestDto.getPageSize() != null) {
             page = new Page<>(requestDto.getPageNum(), requestDto.getPageSize());
@@ -140,11 +146,14 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
 
 
     @Override
-    public void auditLetter(CoreIntroduceLetterApproveLog approveLog) {
-        approveLog.setApproveTime(new Date());
-        approveLog.setApproveUser(SecurityUtils.getUsername());
-        approveLog.setApproveUserId(SecurityUtils.getUserId());
-        coreIntroduceLetterMapper.approveLetter(approveLog);
+    @Transactional(rollbackFor = Exception.class)
+    public void auditLetter(CoreIntroduceLetterOutInRequest outInRequest) {
+        outInRequest.setApproveTime(new Date());
+        outInRequest.setApproveUser(SecurityUtils.getUsername());
+        outInRequest.setApproveUserId(SecurityUtils.getUserId());
+        coreIntroduceLetterMapper.approveLetter(outInRequest);
+        coreOutInRecordMapper.updateCoreOutInRecordStatus(outInRequest.getApproveStatus(),outInRequest.getId());
+
     }
 
 
@@ -152,24 +161,22 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
         List<CoreIntroduceLetterVo> records = page.getRecords();
         if (ObjectUtil.isNotEmpty(records)) {
             List<CoreIntroduceLetterToOrg> toOrgList = coreIntroduceLetterMapper.findToOrgListA(page.getRecords());
-            List<CoreOutInRecord> letterOutInRecordList = coreOutInRecordMapper.findLetterOutInRecordList(records.stream().map(x -> x.getId()).collect(Collectors.toList()).toArray(new Long[records.size()]));
+//            List<CoreOutInRecord> letterOutInRecordList = coreOutInRecordMapper.findLetterOutInRecordList(records.stream().map(x -> x.getId()).collect(Collectors.toList()).toArray(new Long[records.size()]));
             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 ->{
+                String orgNames = orgIds.stream().map(orgId -> {
                     final SysOrg sysOrg = orgList.stream().filter(org -> org.getId().equals(orgId)).findFirst().get();
-                    if(ObjectUtil.isNotEmpty(sysOrg))
-                    {
-                        if(StringUtil.isNullOrEmpty(sysOrg.getAffiliatedArea()) || sysOrg.getType()<4 || sysOrg.getShortName().endsWith("地区行社"))
-                        {
+                    if (ObjectUtil.isNotEmpty(sysOrg)) {
+                        if (StringUtil.isNullOrEmpty(sysOrg.getAffiliatedArea()) || sysOrg.getType() < 4 || sysOrg.getShortName().endsWith("地区行社")) {
                             return sysOrg.getShortName();
                         }
-                        return sysOrg.getAffiliatedBank()+"-"+ sysOrg.getShortName();
+                        return sysOrg.getAffiliatedBank() + "-" + sysOrg.getShortName();
                     }
                     return StringUtil.EMPTY_STRING;
                 }).collect(Collectors.joining(","));
                 record.setReceptionOrgIds(orgIds);
                 record.setReceptionOrgNames(orgNames);
-                record.setHaveOutInRecord(letterOutInRecordList.stream().anyMatch(x -> ObjectUtil.equal(x.getLetterId(), record.getId())));
+//                record.setHaveOutInRecord(letterOutInRecordList.stream().anyMatch(x -> ObjectUtil.equal(x.getLetterId(), record.getId())));
             }
         }
         return page;
@@ -205,14 +212,14 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
         if (CollectionUtils.isNotEmpty(userList)) {
             coreIntroduceLetterVo.setUserInfos(userList);
         }
-        CoreIntroduceLetterApproveLog
-                checkLog = coreIntroduceLetterMapper.findCheckLog(id, SecurityUtils.getLoginUser().getOrgId());
-        coreIntroduceLetterVo.setApproveLog(checkLog);
-
-        List<CoreIntroduceLetterApproveVo> approveVoList = coreIntroduceLetterMapper.findLetterApproveInfos(id);
-        if (CollectionUtils.isNotEmpty(approveVoList)) {
-            coreIntroduceLetterVo.setApproveInfos(approveVoList);
-        }
+//        CoreIntroduceLetterOutInRequest
+//                checkLog = coreIntroduceLetterMapper.findCheckLog(id, SecurityUtils.getLoginUser().getOrgId());
+//        coreIntroduceLetterVo.setApproveLog(checkLog);
+//
+//        List<CoreIntroduceLetterOutInRequestVo> approveVoList = coreIntroduceLetterMapper.findLetterApproveInfos(id);
+//        if (CollectionUtils.isNotEmpty(approveVoList)) {
+//            coreIntroduceLetterVo.setApproveInfos(approveVoList);
+//        }
         return coreIntroduceLetterVo;
     }
 
@@ -241,11 +248,11 @@ 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<CoreIntroduceLetterApproveLog> checkLogs = (List<CoreIntroduceLetterApproveLog>) map.get("checkLogs");
+//        List<CoreIntroduceLetterOutInRequest> checkLogs = (List<CoreIntroduceLetterOutInRequest>) map.get("checkLogs");
         coreIntroduceLetterMapper.insert(introduceLetter);
         coreIntroduceLetterMapper.saveUserList(userList);
         coreIntroduceLetterMapper.saveToOrgList(toOrgList);
-        coreIntroduceLetterMapper.saveCheckLogs(checkLogs);
+//        coreIntroduceLetterMapper.saveCheckLogs(checkLogs);
     }
 
     private Map<String, Object> buildEditLetterMap(CoreIntroduceLetterAddDto coreIntroduceLetter) {
@@ -294,7 +301,7 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
         });
         //封装接待机构
         List<CoreIntroduceLetterToOrg> toOrgList = new ArrayList<>();
-        List<CoreIntroduceLetterApproveLog> checkLogs = new ArrayList<>();
+        List<CoreIntroduceLetterOutInRequest> checkLogs = new ArrayList<>();
         List<Long> orgIds = coreIntroduceLetter.getReceptionOrgIds();
         orgIds.forEach(r -> {
             CoreIntroduceLetterToOrg toOrg = new CoreIntroduceLetterToOrg();
@@ -302,7 +309,7 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
             toOrg.setOrgId(r);
             toOrgList.add(toOrg);
 
-            CoreIntroduceLetterApproveLog checkLog = new CoreIntroduceLetterApproveLog();
+            CoreIntroduceLetterOutInRequest checkLog = new CoreIntroduceLetterOutInRequest();
             checkLog.setId(IdWorker.getId());
             checkLog.setOrgId(r);
             checkLog.setLetterId(introduceLetter.getId());
@@ -370,7 +377,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<CoreIntroduceLetterApproveLog> checkLogs = (List<CoreIntroduceLetterApproveLog>) map.get("checkLogs");
+        List<CoreIntroduceLetterOutInRequest> checkLogs = (List<CoreIntroduceLetterOutInRequest>) map.get("checkLogs");
 
         coreIntroduceLetterMapper.updateById(introduceLetter);
         coreIntroduceLetterMapper.deleteUserList(introduceLetter.getId());
@@ -379,8 +386,8 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
         coreIntroduceLetterMapper.deleteToOrgList(introduceLetter.getId());
         coreIntroduceLetterMapper.saveToOrgList(toOrgList);
         //删除审核信息
-        coreIntroduceLetterMapper.deleteCheckLogs(introduceLetter.getId());
-        coreIntroduceLetterMapper.saveCheckLogs(checkLogs);
+//        coreIntroduceLetterMapper.deleteCheckLogs(introduceLetter.getId());
+//        coreIntroduceLetterMapper.saveCheckLogs(checkLogs);
     }
 
     @Override
@@ -418,34 +425,151 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
      * 定时任务修改 出入申请状态
      */
     @Override
-    public void timedTaskUpdateLetterStatus() {
-        final LambdaQueryWrapper<CoreIntroduceLetter> oqw = new LambdaQueryWrapper<CoreIntroduceLetter>();
-        oqw.ne(CoreIntroduceLetter::getStatus, 2).eq(CoreIntroduceLetter::getDeleted, 0);
-        List<CoreIntroduceLetter> coreIntroduceLetters = coreIntroduceLetterMapper.selectList(oqw);
+    public void timedTaskUpdateOutInRequestStatus() {
+
+        final LambdaQueryWrapper<CoreIntroduceLetter> oqwletter = new LambdaQueryWrapper<CoreIntroduceLetter>();
+        oqwletter.ne(CoreIntroduceLetter::getStatus, 2).eq(CoreIntroduceLetter::getDeleted, 0);
+        List<CoreIntroduceLetter> coreIntroduceLetters = coreIntroduceLetterMapper.selectList(oqwletter);
         List<CoreIntroduceLetter> overdueLettersList = new ArrayList<>();
-        List<CoreIntroduceLetterApproveLog> approveLogs = new ArrayList<>();
         if (ObjectUtil.isNotEmpty(coreIntroduceLetters)) {
             Date currentDate = DateUtil.beginOfDay(new Date());
-
             coreIntroduceLetters.stream().forEach(x -> {
                 final int result = currentDate.compareTo(x.getEndTime());
                 if (result > 0) {
                     x.setStatus(2);
                     overdueLettersList.add(x);
-                    CoreIntroduceLetterApproveLog approveLog = new CoreIntroduceLetterApproveLog();
-                    approveLog.setLetterId(x.getId());
-                    approveLog.setApproveStatus(3);
-                    approveLogs.add(approveLog);
                 }
             });
         }
-        if (ObjectUtil.isNotEmpty(overdueLettersList)) {
-            approveLogs.forEach(x -> {
-                coreIntroduceLetterMapper.updateApproveLogStatus(x);
+        // 将介绍信过期的设置为 已过期状态
+        saveOrUpdateBatch(overdueLettersList);
+
+        final LambdaQueryWrapper<CoreIntroduceLetterOutInRequest> oqw = new LambdaQueryWrapper<CoreIntroduceLetterOutInRequest>();
+        oqw.eq(CoreIntroduceLetterOutInRequest::getApproveStatus, 0).eq(CoreIntroduceLetterOutInRequest::getDeleted, 0);
+        List<CoreIntroduceLetterOutInRequest> outInRequestList = outInRequestMapper.selectList(oqw);
+        List<CoreIntroduceLetterOutInRequest> overdueOutInRequestList = new ArrayList<>();
+        Date currentDate = DateUtil.beginOfDay(new Date());
+        if (ObjectUtil.isNotEmpty(outInRequestList)) {
+            outInRequestList.stream().forEach(x -> {
+                // 出入申请当天有效
+                final int result = currentDate.compareTo(x.getCreateTime());
+                if (result > 0) {
+                    x.setApproveStatus(3);
+                    overdueOutInRequestList.add(x);
+                }
             });
-            // 批量修改需要修改连接字符串添加 &allowMultiQueries=true
-            //coreIntroduceLetterMapper.batchUpdateApproveLogStatus(approveLogs);
-            saveOrUpdateBatch(overdueLettersList);
         }
+
+        // 将出入申请设置为已失效状态
+        if (ObjectUtil.isNotEmpty(overdueOutInRequestList)) {
+            coreIntroduceLetterMapper.batchUpdateOutInRequestStatus(overdueOutInRequestList);
+        }
+
+        final LambdaQueryWrapper<CoreOutInRecord> oqw1 = new LambdaQueryWrapper<CoreOutInRecord>();
+        oqw1.notIn(CoreOutInRecord::getStatus, 2,3)
+            .isNull(CoreOutInRecord::getDepartureTime)
+            .le(CoreOutInRecord::getOutInRequestEffectiveEndTime,currentDate);
+        List<CoreOutInRecord> outInRecords = coreOutInRecordMapper.selectList(oqw1);
+        outInRecords.stream().forEach(x->x.setStatus(3));
+
+        // 将出入记录设置为已失效状态
+        coreOutInRecordMapper.batchUpdateCoreOutInRecordStatus(outInRecords);
+
+    }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void insertOutInRequest(CoreIntroduceLetterAddOutInRequestDto outInRequestDto) {
+
+//        SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+
+        CoreIntroduceLetterInfoVo coreIntroduceLetterVo = coreIntroduceLetterMapper.selectOneById(outInRequestDto.getId());
+        List<CoreIntroduceLetterInfoVo> list = new ArrayList<>();
+        list.add(coreIntroduceLetterVo);
+        List<CoreIntroduceLetterUserAddDto> letterUserList = coreIntroduceLetterMapper.findUserList(list);
+
+        Date date = new Date();
+        CoreIntroduceLetterOutInRequest outInRequest = new CoreIntroduceLetterOutInRequest();
+//        BeanHelper.copyProperties(outInRequest, coreIntroduceLetterVo);
+        outInRequest.setId(IdWorker.getId());
+        outInRequest.setLetterId(coreIntroduceLetterVo.getId());
+        outInRequest.setLetterNo(coreIntroduceLetterVo.getLetterNo());
+        outInRequest.setLetterName(coreIntroduceLetterVo.getLetterName());
+        outInRequest.setLetterDescription(coreIntroduceLetterVo.getDescription());
+        outInRequest.setLetterType(coreIntroduceLetterVo.getType());
+        outInRequest.setLetterReasons(coreIntroduceLetterVo.getReasons());
+        outInRequest.setLetterFile(coreIntroduceLetterVo.getLetterFileStr());
+        outInRequest.setStartTime(coreIntroduceLetterVo.getStartTime());
+        outInRequest.setEndTime(coreIntroduceLetterVo.getEndTime());
+        outInRequest.setEffectiveDays(coreIntroduceLetterVo.getEffectiveDays());
+
+
+        outInRequest.setDeleted(0);
+        outInRequest.setApproveStatus(0);
+        outInRequest.setCreateTime(date);
+        outInRequest.setCreateBy(SecurityUtils.getUsername());
+        outInRequest.setOrgId(SecurityUtils.getLoginUser().getOrgId());
+
+        //封装人员信息
+//        List<CoreIntroduceLetterUserAddDto> userAddVoList = outInRequestDto.getUserInfos();
+        List<CoreIntroduceLetterOutInRequestUser> outInRequestUserList = new ArrayList<>();
+        List<CoreOutInRecord> outInRecordList = new ArrayList<>();
+        outInRequestDto.getUserInfos().forEach(r -> {
+            CoreIntroduceLetterOutInRequestUser user = new CoreIntroduceLetterOutInRequestUser();
+            final Optional<CoreIntroduceLetterUserAddDto> first = letterUserList.stream().filter(x -> ObjectUtil.equal(x.getId(), r.getId())).findFirst();
+            if(first.isPresent())
+            {
+                BeanHelper.copyProperties(user, first.get());
+            }
+            else
+            {
+                BeanHelper.copyProperties(user, r);
+            }
+
+            user.setId(IdWorker.getId());
+            user.setOutInRequestId(outInRequest.getId());
+            user.setCreateTime(date);
+            user.setCreateBy(SecurityUtils.getUsername());
+            outInRequestUserList.add(user);
+
+            CoreOutInRecord  coreOutInRecord=new CoreOutInRecord();
+            coreOutInRecord.setId(IdWorker.getId());
+            coreOutInRecord.setOutInRequestId(outInRequest.getId());
+            coreOutInRecord.setOutInRequestUserId(user.getId());
+            coreOutInRecord.setOrgId(SecurityUtils.getLoginUser().getOrgId());
+            coreOutInRecord.setStatus(0);
+            coreOutInRecord.setOutInRequestEffectiveStartTime(date);
+            coreOutInRecord.setOutInRequestEffectiveEndTime(DateUtil.endOfDay(date));
+            coreOutInRecord.setCreateTime(DateUtils.getNowDate());
+            coreOutInRecord.setCreateBy(SecurityUtils.getUsername());
+
+            outInRecordList.add(coreOutInRecord);
+        });
+
+        outInRequestMapper.insert(outInRequest);
+        coreIntroduceLetterMapper.saveOutInRequestUserList(outInRequestUserList);
+        coreOutInRecordMapper.saveOutInRecordList(outInRecordList);
+    }
+
+    @Override
+    public CoreIntroduceLetterOutInRequestVo selectOutInRequestInfoById(Long id) {
+        //获取介绍信信息
+        CoreIntroduceLetterOutInRequestVo coreIntroduceLetterVo = coreIntroduceLetterMapper.selectOneOutInRequestById(id);
+        coreIntroduceLetterVo.setLetterFile(ObjectUtil.isNotEmpty(coreIntroduceLetterVo.getLetterFileStr()) ? JSON.parseArray(coreIntroduceLetterVo.getLetterFileStr(), String.class) : null);
+        coreIntroduceLetterVo.setStartTimeStr(coreIntroduceLetterVo.getStartTime());
+        coreIntroduceLetterVo.setEndTimeStr(coreIntroduceLetterVo.getEndTime());
+        //获取机构信息
+        SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        coreIntroduceLetterVo.setReceptionOrgNames(sysOrg.getShortName());
+
+        //获取人员信息
+        final LambdaQueryWrapper<CoreIntroduceLetterOutInRequestUser> oqw = new LambdaQueryWrapper<CoreIntroduceLetterOutInRequestUser>();
+        oqw.eq(CoreIntroduceLetterOutInRequestUser::getOutInRequestId, id);
+        List<CoreIntroduceLetterOutInRequestUser> userList =  outInRequestUserMapper.selectList(oqw);
+        if (CollectionUtils.isNotEmpty(userList)) {
+            coreIntroduceLetterVo.setUserInfos(userList);
+        }
+        return coreIntroduceLetterVo;
     }
 }

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

@@ -3,6 +3,7 @@ package com.xunmei.core.letter.service.impl;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@@ -13,7 +14,8 @@ import com.xunmei.common.core.constant.DictConstants;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.R;
-import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterOutInRequest;
+import com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterOutInRequestUser;
 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;
@@ -27,6 +29,8 @@ import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.letter.mapper.CoreIntroduceLetterMapper;
+import com.xunmei.core.letter.mapper.CoreIntroduceLetterOutInRequestMapper;
+import com.xunmei.core.letter.mapper.CoreIntroduceLetterOutInRequestUserMapper;
 import com.xunmei.core.letter.mapper.CoreOutInRecordMapper;
 import com.xunmei.core.letter.service.ICoreOutInRecordService;
 
@@ -44,6 +48,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
@@ -67,6 +72,13 @@ public class CoreOutInRecordServiceImpl extends ServiceImpl<CoreOutInRecordMappe
     private RemoteOrgService orgService;
     @Resource
     private RemoteFileService fileService;
+
+    @Autowired
+    private CoreIntroduceLetterOutInRequestMapper outInRequestMapper;
+
+    @Autowired
+    private CoreIntroduceLetterOutInRequestUserMapper outInRequestUserMapper;
+
     @Autowired
     private ICoreRegisterBookPdfService registerBookPdfService;
     @Autowired
@@ -175,10 +187,32 @@ public class CoreOutInRecordServiceImpl extends ServiceImpl<CoreOutInRecordMappe
      * @return 结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int deleteCoreOutInRecordByIds(Long[] ids) {
+        // 取消出入申请后,出入申请中对应的人员也删除,如申请下的人员都取消,申请也自动取消
+        final List<CoreOutInRecord> letterOutInRecordList = coreOutInRecordMapper.findLetterOutInRecordList(ids);
+        letterOutInRecordList.forEach(x->{
+            deleteOutInRecordRequestUser(x);
+        });
         return coreOutInRecordMapper.deleteBatchIds(Arrays.asList((ids)));
     }
 
+    private void deleteOutInRecordRequestUser(CoreOutInRecord record)
+    {
+        final LambdaQueryWrapper<CoreIntroduceLetterOutInRequestUser> oqw1 = new LambdaQueryWrapper<CoreIntroduceLetterOutInRequestUser>();
+        oqw1.eq(CoreIntroduceLetterOutInRequestUser::getId, record.getOutInRequestUserId());
+        outInRequestUserMapper.delete(oqw1);
+
+        final LambdaQueryWrapper<CoreIntroduceLetterOutInRequestUser> oqw2 = new LambdaQueryWrapper<CoreIntroduceLetterOutInRequestUser>();
+        oqw2.ne(CoreIntroduceLetterOutInRequestUser::getId,  record.getOutInRequestUserId())
+                .eq(CoreIntroduceLetterOutInRequestUser::getOutInRequestId,record.getOutInRequestId());
+
+        final Long requestUserCount = outInRequestUserMapper.selectCount(oqw2);
+        if(requestUserCount==0L){
+            outInRequestMapper.deleteById(record.getOutInRequestId());
+        }
+    }
+
     /**
      * 删除人员出入登记信息
      *
@@ -242,7 +276,7 @@ public class CoreOutInRecordServiceImpl extends ServiceImpl<CoreOutInRecordMappe
     }
 
     private Map<String, Object> getFtlEdu(CoreOutInRecordVo record, List<SysOrgVO> orgList) {
-        final CoreIntroduceLetterApproveLog approveLog = letterMapper.findCheckLog(record.getLetterId(), record.getOrgId());
+        final CoreIntroduceLetterOutInRequest approveLog = letterMapper.findCheckLog(record.getOutInRequestId(), record.getOrgId());
         final SysOrgVO inOrg = orgList.stream().filter(org -> ObjectUtil.equal(org.getId(), record.getOrgId())).findFirst().get();
         final SysOrgVO outOrg = orgList.stream().filter(org -> ObjectUtil.equal(org.getId(), record.getLetterOrgId())).findFirst().get();
         String prefixPath = RemoteCallHandlerExecutor.executeRemoteCall(() -> fileService.getLocalPathPrefix(), ErrorMsgConstants.QUERY_FILE_PATH_ERROR).getData();
@@ -257,7 +291,7 @@ public class CoreOutInRecordServiceImpl extends ServiceImpl<CoreOutInRecordMappe
         String time = DateUtil.format(record.getArrivalTime(), "yyyy年MM月dd日");
         data.put("time", StringUtils.isNotEmpty(time) ? time : StringUtil.EMPTY_STRING);
         //来访事由
-        data.put("reasons", StringUtils.isNotEmpty(record.getReasons()) ? record.getReasons() : StringUtil.EMPTY_STRING);
+        data.put("reasons", StringUtils.isNotEmpty(record.getLetterReasons()) ? record.getLetterReasons() : StringUtil.EMPTY_STRING);
         //审批人
         data.put("approveUser", StringUtils.isNotEmpty(approveLog.getApproveUser()) ? approveLog.getApproveUser() : StringUtil.EMPTY_STRING);
         //来访单位

+ 47 - 43
soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreIntroduceLetterMapper.xml

@@ -77,15 +77,12 @@
     <select id="selectPageListForApp"
             resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterVo">
         select
-        a.*,
-        c.approve_status as approveStatus,
-        c.approve_remark as approveRemark,
-        c.approve_time
+        a.*
         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 and a.type in (2,3)
+        INNER JOIN core_introduce_letter_to_org o ON a.id =o.letter_id
+        where a.deleted=0 ANd a.status!=0
         <if test="coreIntroduceLetter.orgId != null ">
-            and c.org_id = #{coreIntroduceLetter.orgId}
+            and o.org_id = #{coreIntroduceLetter.orgId}
         </if>
         <if test="coreIntroduceLetter.letterNo !=null  and coreIntroduceLetter.letterNo !=''">
             and a.letter_no like concat('%', #{coreIntroduceLetter.letterNo}, '%')
@@ -183,14 +180,14 @@
         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>
-    <update id="batchUpdateApproveLogStatus" parameterType="java.util.List">
+    <update id="batchUpdateOutInRequestStatus" parameterType="java.util.List">
         <foreach collection="requestList" item="item" index="index" separator=";">
-            update core_introduce_letter_approve_log set approve_status=#{item.approveStatus} where letter_id=#{item.letterId}
+            update core_introduce_letter_out_in_request set approve_status=#{item.approveStatus} where id=#{item.id}
         </foreach>
     </update>
-    <update id="updateApproveLogStatus" >
+    <update id="updateOutInRequestStatus" >
 
-            update core_introduce_letter_approve_log set approve_status=#{request.approveStatus} where letter_id=#{request.letterId}
+            update core_introduce_letter_out_in_request set approve_status=#{request.approveStatus} where id=#{request.id}
 
     </update>
     <insert id="saveCheckLogs">
@@ -247,12 +244,13 @@
         where id = #{id}
     </update>
     <update id="approveLetter">
-        update core_introduce_letter_approve_log
+        update core_introduce_letter_out_in_request
         set  approve_user=#{coreIntroduceLetter.approveUser},
              approve_user_id=#{coreIntroduceLetter.approveUserId},
              approve_time=#{coreIntroduceLetter.approveTime},
              approve_status=#{coreIntroduceLetter.approveStatus},
-             approve_remark=#{coreIntroduceLetter.approveRemark}
+             approve_remark=#{coreIntroduceLetter.approveRemark},
+             approve_sign_img=#{coreIntroduceLetter.approveSignImg}
          where id=#{coreIntroduceLetter.id}
     </update>
 
@@ -282,8 +280,8 @@
         </foreach>
     </delete>
     <delete id="deleteCheckLogs">
-        delete from core_introduce_letter_approve_log
-        where letter_id = #{letterId}
+        delete from core_introduce_letter_out_in_request
+        where id = #{letterId}
     </delete>
     <select id="findToOrgListA" resultType="com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterToOrg">
         select * from core_introduce_letter_to_org where 1=1 and letter_id in
@@ -307,32 +305,28 @@
      select a.*,a.letter_file as letterFileStr from core_introduce_letter a where a.id =#{id}
     </select>
     <select id="selectApproveListPage"
-            resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterApproveVo">
+            resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterOutInRequestVo">
         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
+        a.letter_file as letterFileStr
+        from core_introduce_letter_out_in_request a
+        where a.deleted=0
         <if test="coreIntroduceLetter.orgId !=null  and coreIntroduceLetter.orgId !=''">
-            and c.org_id = #{coreIntroduceLetter.orgId}
+            and a.org_id = #{coreIntroduceLetter.orgId}
         </if>
         <if test="coreIntroduceLetter.reasons !=null  and coreIntroduceLetter.reasons !=''">
-            and a.reasons like concat('%', #{coreIntroduceLetter.reasons}, '%')
+            and a.letter_reasons like concat('%', #{coreIntroduceLetter.reasons}, '%')
         </if>
         <if test="coreIntroduceLetter.type !=null  and coreIntroduceLetter.type !=''">
-            and a.type like concat('%', #{coreIntroduceLetter.type}, '%')
+            and a.letter_type like concat('%', #{coreIntroduceLetter.type}, '%')
         </if>
         <if test="coreIntroduceLetter.approveStatus !=null">
-            and c.approve_status = #{coreIntroduceLetter.approveStatus}
+            and a.approve_status = #{coreIntroduceLetter.approveStatus}
         </if>
-        order by c.approve_status ASC,a.create_time DESC
+        order by a.approve_status ASC,a.create_time DESC
     </select>
     <select id="findLetterApproveInfos"
-            resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterApproveVo">
+            resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterOutInRequestVo">
         select
             c.approve_status as approveStatus,
             c.approve_remark as approveRemark,
@@ -344,8 +338,8 @@
         where  a.id=#{letterId}
     </select>
     <select id="findCheckLog"
-            resultType="com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterApproveLog">
-        select * from core_introduce_letter_approve_log where  letter_id=#{letterId} and org_id=#{orgId}
+            resultType="com.xunmei.common.core.domain.letter.domain.CoreIntroduceLetterOutInRequest">
+        select * from core_introduce_letter_out_in_request where  id=#{id} and org_id=#{orgId}
     </select>
     <select id="auditAllList"
             resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterCheckLogVo">
@@ -384,23 +378,33 @@
     <select id="selectToDoApproveListForAPP"
             resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
         select
-        a.id,
-        a.reasons as taskName,
-        a.start_time as startTime,
-        a.end_time as endTime,
-        a.effective_days,
-        c.approve_status as status
-        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=1 AND c.approve_status=0
+        c.id,
+        c.letter_reasons AS taskName,
+        c.start_time AS startTime,
+        c.end_time AS endTime,
+        c.effective_days,
+        c.approve_status AS STATUS
+        from core_introduce_letter_out_in_request c
+        where c.deleted = 0 AND c.approve_status =0
         <if test="request.orgId !=null  and request.orgId !=''">
             and c.org_id = #{request.orgId}
         </if>
-        order by a.create_time
+        order by c.create_time
     </select>
 
     <select id="selectWebIndexNums" resultType="int">
-        select count(1) from  core_introduce_letter_approve_log l inner join core_introduce_letter t on l.letter_id=t.id
-        where t.deleted=0 and l.org_id=#{orgId} and l.approve_status=0
+        select count(1) from  core_introduce_letter_out_in_request l
+        where l.deleted=0 and l.org_id=#{orgId} and l.approve_status=0
+    </select>
+
+    <insert id="saveOutInRequestUserList">
+        insert into core_introduce_letter_out_in_request_user (id,user_name,company_name,id_type,id_card,img_file,out_in_request_id,create_by,create_time)values
+        <foreach collection="userList" item="item" index="index"  separator="," >
+            (#{item.id},#{item.userName},#{item.companyName},#{item.idType},#{item.idCard},#{item.imgFile},#{item.outInRequestId},#{item.createBy},#{item.createTime})
+        </foreach>
+    </insert>
+
+    <select id="selectOneOutInRequestById" resultType="com.xunmei.common.core.domain.letter.vo.CoreIntroduceLetterOutInRequestVo">
+        select a.*,a.letter_file as letterFileStr from core_introduce_letter_out_in_request a where a.id =#{id}
     </select>
 </mapper>

+ 48 - 11
soc-modules/soc-modules-core/src/main/resources/mapper/letter/CoreOutInRecordMapper.xml

@@ -18,17 +18,21 @@
             u.id_type,
             u.id_card,
             u.img_file,
-            l.reasons,
-            l.type,
+            l.letter_reasons,
+            l.letter_type,
             l.letter_file,
             l.letter_file as letterFileStr,
+            l.approve_status,
+            l.approve_remark,
+            l.approve_time,
             o.affiliated_area,
             o.affiliated_bank
         FROM
         core_out_in_record r
         INNER JOIN sys_org o ON r.org_id=o.id
-        INNER JOIN core_introduce_letter_user u ON r.letter_user_id = u.id AND r.letter_id=u.letter_id
-        LEFT JOIN core_introduce_letter l ON r.letter_id =l.id
+        INNER JOIN core_introduce_letter_out_in_request_user u ON r.out_in_request_id = u.out_in_request_id
+        AND r.out_in_request_user_id = u.id
+        INNER JOIN  core_introduce_letter_out_in_request l ON r.out_in_request_id = l.id
 
         <where>
             <choose>
@@ -63,10 +67,15 @@
                 )
             </if>
             <if test="request.type != null  and request.type != ''">
-                and l.type = #{request.type}
+                and l.letter_type = #{request.type}
             </if>
+            <if test="request.approveStatus != null">
+                and l.approve_status = #{request.approveStatus}
+            </if>
+
 
         </where>
+        order by l.approve_status,r.create_time DESC
     </select>
 
     <select id="selectCoreOutInRecordById" parameterType="Long" resultType="com.xunmei.common.core.domain.letter.vo.CoreOutInRecordVo">
@@ -78,20 +87,25 @@
             u.id_type,
             u.id_card,
             u.img_file,
-            l.reasons,
-            l.type,
+            l.letter_reasons,
+            l.letter_type,
             l.letter_no,
             l.letter_file,
             l.letter_file as letterFileStr,
             l.start_time,
             l.end_time,
             l.effective_days,
-            l.org_id as letterOrgId
+            l.org_id as letterOrgId,
+            l.approve_status,
+            l.approve_remark,
+            l.approve_time,
+            l.approve_sign_img
         FROM
             core_out_in_record r
                 INNER JOIN sys_org o ON r.org_id=o.id
-                INNER JOIN core_introduce_letter_user u ON r.letter_user_id = u.id AND r.letter_id=u.letter_id
-                LEFT JOIN core_introduce_letter l ON r.letter_id =l.id
+                INNER JOIN core_introduce_letter_out_in_request_user u ON r.out_in_request_id = u.out_in_request_id
+                AND r.out_in_request_user_id = u.id
+                INNER JOIN  core_introduce_letter_out_in_request l ON r.out_in_request_id = l.id
         where r.id = #{id}
     </select>
 
@@ -168,9 +182,32 @@
         </foreach>
     </delete>
     <select id="findLetterOutInRecordList" resultType="com.xunmei.common.core.domain.letter.domain.CoreOutInRecord">
-        select * from core_out_in_record where 1=1 and letter_id in
+        select * from core_out_in_record where 1=1 and id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </select>
+
+    <insert id="saveOutInRecordList">
+        insert into core_out_in_record (id,out_in_request_id,out_in_request_user_id,org_id,accompanying_person,check_image,arrival_time,departure_time,out_in_request_effective_start_time,out_in_request_effective_end_time,status,create_by,create_time)values
+        <foreach collection="list" item="item" index="index"  separator="," >
+            (#{item.id},#{item.outInRequestId},#{item.outInRequestUserId},#{item.orgId},#{item.accompanyingPerson},#{item.checkImage},#{item.arrivalTime},#{item.departureTime},#{item.outInRequestEffectiveStartTime},#{item.outInRequestEffectiveEndTime},#{item.status},#{item.createBy},#{item.createTime})
+        </foreach>
+    </insert>
+
+    <update id="updateCoreOutInRecordStatus" parameterType="com.xunmei.common.core.domain.letter.domain.CoreOutInRecord">
+        update core_out_in_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="status != null">status =
+                #{status},
+            </if>
+        </trim>
+        where out_in_request_id = #{outInRequestId}
+    </update>
+
+    <update id="batchUpdateCoreOutInRecordStatus" parameterType="com.xunmei.common.core.domain.letter.domain.CoreOutInRecord">
+        <foreach collection="list" item="item" index="index" separator=";">
+            update core_out_in_record set status=#{item.status} where id=#{item.id}
+        </foreach>
+    </update>
 </mapper>