Explorar el Código

add:人员档案管理

caozixuan hace 1 año
padre
commit
25cee11318
Se han modificado 18 ficheros con 849 adiciones y 83 borrados
  1. 211 34
      sop-business/src/main/java/com/qmth/sop/business/bean/dto/UserArchivesImportDto.java
  2. 0 2
      sop-business/src/main/java/com/qmth/sop/business/bean/params/UserArchivesParam.java
  3. 102 0
      sop-business/src/main/java/com/qmth/sop/business/bean/query/UserArchivesQuery.java
  4. 15 0
      sop-business/src/main/java/com/qmth/sop/business/bean/result/ServiceRegionResult.java
  5. 11 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TBUserArchivesMapper.java
  6. 1 1
      sop-business/src/main/java/com/qmth/sop/business/service/SysUserService.java
  7. 32 14
      sop-business/src/main/java/com/qmth/sop/business/service/TBUserArchivesService.java
  8. 4 2
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysUserServiceImpl.java
  9. 12 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBServiceRegionServiceImpl.java
  10. 64 7
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBUserArchivesServiceImpl.java
  11. 110 20
      sop-business/src/main/java/com/qmth/sop/business/templete/service/impl/TaskLogicServiceImpl.java
  12. 67 0
      sop-business/src/main/resources/mapper/TBUserArchivesMapper.xml
  13. 1 0
      sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java
  14. 10 0
      sop-common/src/main/java/com/qmth/sop/common/enums/EducationEnum.java
  15. 10 0
      sop-common/src/main/java/com/qmth/sop/common/enums/GenderEnum.java
  16. 177 0
      sop-common/src/main/java/com/qmth/sop/common/util/DateDisposeUtils.java
  17. 1 1
      sop-server/src/main/java/com/qmth/sop/server/api/SysUserController.java
  18. 21 2
      sop-server/src/main/java/com/qmth/sop/server/api/TBUserArchivesController.java

+ 211 - 34
sop-business/src/main/java/com/qmth/sop/business/bean/dto/UserArchivesImportDto.java

@@ -5,8 +5,13 @@ import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.HeadFontStyle;
 import com.alibaba.excel.annotation.write.style.HeadStyle;
 import com.qmth.sop.business.util.excel.BasicExcelRow;
+import com.qmth.sop.common.enums.EducationEnum;
+import com.qmth.sop.common.enums.GenderEnum;
+import io.swagger.annotations.ApiModelProperty;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
@@ -26,31 +31,83 @@ public class UserArchivesImportDto extends BasicExcelRow implements Serializable
     @NotBlank(message = "姓名不能为空")
     private String name;
 
-    @ExcelProperty(value = "工号")
-    @NotBlank(message = "工号不能为空")
-    private String code;
+    @ExcelProperty(value = "省份")
+    @NotNull(message = "请输入常驻地区")
+    @NotBlank(message = "请输入常驻地区")
+    private String province;
+
+    @ExcelProperty(value = "城市")
+    @NotNull(message = "请输入常驻地区")
+    @NotBlank(message = "请输入常驻地区")
+    private String city;
+
+    @ExcelProperty(value = "县区")
+    private String area;
+
+    @ExcelProperty(value = "性别")
+    @NotNull(message = "请输入性别")
+    private String gender;
+
+    @ExcelProperty(value = "身份证号")
+    @NotNull(message = "请输入身份证号")
+    @NotBlank(message = "请输入身份证号")
+    private String identity;
+
+    @ExcelProperty(value = "学历")
+    private String education;
 
     @ExcelProperty(value = "手机号")
-    private String phoneNumber;
+    @NotNull(message = "请输入手机号")
+    @NotBlank(message = "请输入手机号")
+    private String mobileNumber;
 
-    @ExcelProperty(value = "组织架构")
-    @NotBlank(message = "组织架构不能为空")
-    private String orgName;
+    @ExcelProperty(value = "电子邮箱")
+    private String email;
 
-    @ExcelProperty(value = "角色")
-    @NotBlank(message = "角色不能为空")
-    private String roleName;
+    @ExcelProperty(value = "供应商")
+    @NotNull(message = "请选择供应商")
+    @NotBlank(message = "请选择供应商")
+    private String supplierName;
 
-    public UserArchivesImportDto() {
+    @ExcelProperty(value = "入档时间")
+    @ApiModelProperty(value = "入档时间")
+    @NotNull(message = "请选择入档时间")
+    @NotBlank(message = "请选择入档时间")
+    private String archivesTimeStr;
 
-    }
+    @ExcelProperty(value = "认证项目角色")
+    @NotEmpty(message = "请选择认证角色")
+    private String roleNames;
+
+    @ExcelProperty(value = "认证分数")
+    private Double authenticationScore;
+
+    @ExcelProperty(value = "认证有效期")
+    @NotBlank(message = "请选择入档时间")
+    @NotNull(message = "请选择入档时间")
+    private String authenticationValidTimeStr;
+
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    // -- 辅助查询用字段
+    @ApiModelProperty("用户id(查询用)")
+    private Long userId;
+
+    @ApiModelProperty("性别(查询用)")
+    private GenderEnum genderEnum;
+
+    @ApiModelProperty("学历(查询用)")
+    private EducationEnum educationEnum;
+
+    @ApiModelProperty("入档时间(查询用)")
+    private Long archivesTime;
+
+    @ApiModelProperty("档案有效期(查询用)")
+    private Long authenticationValidTime;
+
+    public UserArchivesImportDto() {
 
-    public UserArchivesImportDto(String name, String code, String phoneNumber, String orgName, String roleName) {
-        this.name = name;
-        this.code = code;
-        this.phoneNumber = phoneNumber;
-        this.orgName = orgName;
-        this.roleName = roleName;
     }
 
     public String getName() {
@@ -61,35 +118,155 @@ public class UserArchivesImportDto extends BasicExcelRow implements Serializable
         this.name = name;
     }
 
-    public String getCode() {
-        return code;
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getArea() {
+        return area;
+    }
+
+    public void setArea(String area) {
+        this.area = area;
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    public String getIdentity() {
+        return identity;
+    }
+
+    public void setIdentity(String identity) {
+        this.identity = identity;
+    }
+
+    public String getEducation() {
+        return education;
+    }
+
+    public void setEducation(String education) {
+        this.education = education;
+    }
+
+    public String getMobileNumber() {
+        return mobileNumber;
+    }
+
+    public void setMobileNumber(String mobileNumber) {
+        this.mobileNumber = mobileNumber;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getSupplierName() {
+        return supplierName;
+    }
+
+    public void setSupplierName(String supplierName) {
+        this.supplierName = supplierName;
+    }
+
+    public String getArchivesTimeStr() {
+        return archivesTimeStr;
+    }
+
+    public void setArchivesTimeStr(String archivesTimeStr) {
+        this.archivesTimeStr = archivesTimeStr;
+    }
+
+    public String getRoleNames() {
+        return roleNames;
+    }
+
+    public void setRoleNames(String roleNames) {
+        this.roleNames = roleNames;
+    }
+
+    public Double getAuthenticationScore() {
+        return authenticationScore;
+    }
+
+    public void setAuthenticationScore(Double authenticationScore) {
+        this.authenticationScore = authenticationScore;
+    }
+
+    public String getAuthenticationValidTimeStr() {
+        return authenticationValidTimeStr;
+    }
+
+    public void setAuthenticationValidTimeStr(String authenticationValidTimeStr) {
+        this.authenticationValidTimeStr = authenticationValidTimeStr;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public GenderEnum getGenderEnum() {
+        return genderEnum;
     }
 
-    public void setCode(String code) {
-        this.code = code;
+    public void setGenderEnum(GenderEnum genderEnum) {
+        this.genderEnum = genderEnum;
     }
 
-    public String getPhoneNumber() {
-        return phoneNumber;
+    public EducationEnum getEducationEnum() {
+        return educationEnum;
     }
 
-    public void setPhoneNumber(String phoneNumber) {
-        this.phoneNumber = phoneNumber;
+    public void setEducationEnum(EducationEnum educationEnum) {
+        this.educationEnum = educationEnum;
     }
 
-    public String getOrgName() {
-        return orgName;
+    public Long getArchivesTime() {
+        return archivesTime;
     }
 
-    public void setOrgName(String orgName) {
-        this.orgName = orgName;
+    public void setArchivesTime(Long archivesTime) {
+        this.archivesTime = archivesTime;
     }
 
-    public String getRoleName() {
-        return roleName;
+    public Long getAuthenticationValidTime() {
+        return authenticationValidTime;
     }
 
-    public void setRoleName(String roleName) {
-        this.roleName = roleName;
+    public void setAuthenticationValidTime(Long authenticationValidTime) {
+        this.authenticationValidTime = authenticationValidTime;
     }
 }

+ 0 - 2
sop-business/src/main/java/com/qmth/sop/business/bean/params/UserArchivesParam.java

@@ -4,14 +4,12 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.sop.common.enums.EducationEnum;
 import com.qmth.sop.common.enums.GenderEnum;
-import com.qmth.sop.common.enums.RoleTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.hibernate.validator.constraints.Range;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
-import java.util.List;
 
 /**
  * @Description: 人员档案编辑参数

+ 102 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/query/UserArchivesQuery.java

@@ -0,0 +1,102 @@
+package com.qmth.sop.business.bean.query;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.enums.RoleTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description:
+ * @Author: CaoZixuan
+ * @Date:
+ */
+public class UserArchivesQuery {
+    @ApiModelProperty("城市")
+    private String city;
+
+    @ApiModelProperty("供应商")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long supplierId;
+
+    @ApiModelProperty("档案名")
+    private String archivesName;
+
+    @ApiModelProperty("角色类型")
+    private RoleTypeEnum roleType;
+
+    @ApiModelProperty("认证状态")
+    private Boolean authenticationStatus;
+
+    @ApiModelProperty("入档时间 - 起始")
+    private Long archivesTimeStart;
+
+    @ApiModelProperty("入档时间 - 截止")
+    private Long archivesTimeEnd;
+
+    @ApiModelProperty("有效期")
+    private Integer remainValidDay;
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public Long getSupplierId() {
+        return supplierId;
+    }
+
+    public void setSupplierId(Long supplierId) {
+        this.supplierId = supplierId;
+    }
+
+    public String getArchivesName() {
+        return archivesName;
+    }
+
+    public void setArchivesName(String archivesName) {
+        this.archivesName = archivesName;
+    }
+
+    public RoleTypeEnum getRoleType() {
+        return roleType;
+    }
+
+    public void setRoleType(RoleTypeEnum roleType) {
+        this.roleType = roleType;
+    }
+
+    public Boolean getAuthenticationStatus() {
+        return authenticationStatus;
+    }
+
+    public void setAuthenticationStatus(Boolean authenticationStatus) {
+        this.authenticationStatus = authenticationStatus;
+    }
+
+    public Long getArchivesTimeStart() {
+        return archivesTimeStart;
+    }
+
+    public void setArchivesTimeStart(Long archivesTimeStart) {
+        this.archivesTimeStart = archivesTimeStart;
+    }
+
+    public Long getArchivesTimeEnd() {
+        return archivesTimeEnd;
+    }
+
+    public void setArchivesTimeEnd(Long archivesTimeEnd) {
+        this.archivesTimeEnd = archivesTimeEnd;
+    }
+
+    public Integer getRemainValidDay() {
+        return remainValidDay;
+    }
+
+    public void setRemainValidDay(Integer remainValidDay) {
+        this.remainValidDay = remainValidDay;
+    }
+}

+ 15 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/result/ServiceRegionResult.java

@@ -2,8 +2,11 @@ package com.qmth.sop.business.bean.result;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.business.bean.dto.AreaDto;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.List;
+
 /**
  * @Description: 服务区域规划查询结果
  * @Author: CaoZixuan
@@ -34,6 +37,10 @@ public class ServiceRegionResult {
     @ApiModelProperty(value = "派单共计")
     private Integer orderCount;
 
+    @ApiModelProperty(value = "纯区域地址")
+    private List<AreaDto> areaDtoList;
+
+
     public Long getServiceRegionId() {
         return serviceRegionId;
     }
@@ -89,4 +96,12 @@ public class ServiceRegionResult {
     public void setOrderCount(Integer orderCount) {
         this.orderCount = orderCount;
     }
+
+    public List<AreaDto> getAreaDtoList() {
+        return areaDtoList;
+    }
+
+    public void setAreaDtoList(List<AreaDto> areaDtoList) {
+        this.areaDtoList = areaDtoList;
+    }
 }

+ 11 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TBUserArchivesMapper.java

@@ -3,6 +3,7 @@ package com.qmth.sop.business.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.sop.business.bean.dto.UserArchivesImportDto;
 import com.qmth.sop.business.bean.result.UserArchivesResult;
 import com.qmth.sop.business.entity.TBUserArchives;
 import com.qmth.sop.common.enums.RoleTypeEnum;
@@ -30,6 +31,16 @@ public interface TBUserArchivesMapper extends BaseMapper<TBUserArchives> {
                                                    @Param("remainValidTime") Long remainValidTime,
                                                    @Param("currentTime") Long currentTime);
 
+    List<UserArchivesImportDto> findExportData(@Param("city") String city,
+                                               @Param("supplierId") Long supplierId,
+                                               @Param("archivesName") String archivesName,
+                                               @Param("roleType") RoleTypeEnum roleType,
+                                               @Param("status") Boolean status,
+                                               @Param("archivesTimeStart") Long archivesTimeStart,
+                                               @Param("archivesTimeEnd") Long archivesTimeEnd,
+                                               @Param("remainValidTime") Long remainValidTime,
+                                               @Param("currentTime") Long currentTime);
+
     /**
      * 档案小计
      *

+ 1 - 1
sop-business/src/main/java/com/qmth/sop/business/service/SysUserService.java

@@ -95,7 +95,7 @@ public interface SysUserService extends IService<SysUser> {
      * @param sysUser
      * @return
      */
-    Boolean saveUser(SysUser sysUser);
+    Boolean saveUser(SysUser sysUser,SysUser requestUser);
 
     /**
      * 启用/禁用用户

+ 32 - 14
sop-business/src/main/java/com/qmth/sop/business/service/TBUserArchivesService.java

@@ -1,15 +1,17 @@
 package com.qmth.sop.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.bean.dto.UserArchivesImportDto;
 import com.qmth.sop.business.bean.params.UserArchivesParam;
 import com.qmth.sop.business.bean.result.UserArchivesResult;
 import com.qmth.sop.business.bean.result.UserArchivesSubTotalResult;
 import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.entity.TBUserArchives;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.sop.common.enums.RoleTypeEnum;
 
+import java.util.List;
+
 /**
  * <p>
  * 人员档案表 服务类
@@ -23,21 +25,21 @@ public interface TBUserArchivesService extends IService<TBUserArchives> {
     /**
      * 人员档案管理分页查询
      *
-     * @param city                    城市
-     * @param supplierId              供应桑id
-     * @param archivesName            档案名称
-     * @param roleType                认证橘色
-     * @param authenticationStatus    认证状态
-     * @param authenticationTimeStart 入档时间-起始
-     * @param authenticationTimeEnd   入档时间-终止
-     * @param remainValidDay          剩余有效天
-     * @param pageNumber              分页页数
-     * @param pageSize                分页容量
+     * @param city                 城市
+     * @param supplierId           供应桑id
+     * @param archivesName         档案名称
+     * @param roleType             认证橘色
+     * @param authenticationStatus 认证状态
+     * @param archivesTimeStart    入档时间-起始
+     * @param archivesTimeEnd      入档时间-终止
+     * @param remainValidDay       剩余有效天
+     * @param pageNumber           分页页数
+     * @param pageSize             分页容量
      * @return 结果
      */
     IPage<UserArchivesResult> findUserArchivesPage(String city, Long supplierId, String archivesName, RoleTypeEnum roleType,
-                                                   Boolean authenticationStatus, Long authenticationTimeStart,
-                                                   Long authenticationTimeEnd, Integer remainValidDay, Integer pageNumber, Integer pageSize);
+                                                   Boolean authenticationStatus, Long archivesTimeStart, Long archivesTimeEnd,
+                                                   Integer remainValidDay, Integer pageNumber, Integer pageSize);
 
     /**
      * 编辑用户档案
@@ -54,4 +56,20 @@ public interface TBUserArchivesService extends IService<TBUserArchives> {
      * @return 档案小计情况
      */
     UserArchivesSubTotalResult findUserArchivesSubTotal();
+
+    /**
+     * 人员档案管理分页查询
+     *
+     * @param city                 城市
+     * @param supplierId           供应桑id
+     * @param archivesName         档案名称
+     * @param roleType             认证橘色
+     * @param authenticationStatus 认证状态
+     * @param archivesTimeStart    入档时间-起始
+     * @param archivesTimeEnd      入档时间-终止
+     * @param remainValidDay       剩余有效天
+     * @return 结果
+     */
+    List<UserArchivesImportDto> findExportData(String city, Long supplierId, String archivesName, RoleTypeEnum roleType, Boolean authenticationStatus,
+                                               Long archivesTimeStart, Long archivesTimeEnd, Integer remainValidDay);
 }

+ 4 - 2
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysUserServiceImpl.java

@@ -291,10 +291,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      */
     @Override
     @Transactional
-    public Boolean saveUser(SysUser sysUser) {
+    public Boolean saveUser(SysUser sysUser, SysUser requestUser) {
         SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
         try {
-            SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+            if (Objects.isNull(requestUser)){
+                requestUser = (SysUser) ServletUtil.getRequestUser();
+            }
             if (Objects.isNull(sysUser.getId())) {//新增用户
                 sysUser.insertInfo(requestUser.getId());
                 sysUser.setPasswordInfo(sysUser.getMobileNumber());

+ 12 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBServiceRegionServiceImpl.java

@@ -26,6 +26,7 @@ import javax.annotation.Resource;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -97,6 +98,17 @@ public class TBServiceRegionServiceImpl extends ServiceImpl<TBServiceRegionMappe
                     record.setOrderCount(orderCount);
                     record.setRegionInfo(regionInfo.toString());
                 }
+
+                List<AreaDto> areaDtoList = detailList.stream().flatMap(e -> {
+                    AreaDto areaDto = new AreaDto();
+                    areaDto.setCountry(e.getCountry());
+                    areaDto.setProvince(e.getProvince());
+                    areaDto.setCity(e.getCity());
+                    areaDto.setArea(e.getArea());
+                    areaDto.setAddress(e.getAddress());
+                    return Stream.of(areaDto);
+                }).collect(Collectors.toList());
+                record.setAreaDtoList(areaDtoList);
             }
         }
         return page;

+ 64 - 7
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBUserArchivesServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.bean.dto.UserArchivesImportDto;
 import com.qmth.sop.business.bean.params.UserArchivesParam;
 import com.qmth.sop.business.bean.result.UserArchivesResult;
 import com.qmth.sop.business.bean.result.UserArchivesSubTotalResult;
@@ -15,17 +16,16 @@ import com.qmth.sop.business.mapper.TBUserArchivesMapper;
 import com.qmth.sop.business.service.*;
 import com.qmth.sop.common.base.BaseEntity;
 import com.qmth.sop.common.contant.SystemConstant;
-import com.qmth.sop.common.enums.EducationEnum;
-import com.qmth.sop.common.enums.ExceptionResultEnum;
-import com.qmth.sop.common.enums.GenderEnum;
-import com.qmth.sop.common.enums.RoleTypeEnum;
+import com.qmth.sop.common.enums.*;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -50,7 +50,7 @@ public class TBUserArchivesServiceImpl extends ServiceImpl<TBUserArchivesMapper,
     private SysUserService sysUserService;
 
     @Override
-    public IPage<UserArchivesResult> findUserArchivesPage(String city, Long supplierId, String archivesName, RoleTypeEnum roleType, Boolean authenticationStatus, Long authenticationTimeStart, Long authenticationTimeEnd, Integer remainValidDay, Integer pageNumber, Integer pageSize) {
+    public IPage<UserArchivesResult> findUserArchivesPage(String city, Long supplierId, String archivesName, RoleTypeEnum roleType, Boolean authenticationStatus, Long archivesTimeStart, Long archivesTimeEnd, Integer remainValidDay, Integer pageNumber, Integer pageSize) {
         if (city != null && city.length() > 0) {
             city = SystemConstant.translateSpecificSign(city);
         }
@@ -64,7 +64,7 @@ public class TBUserArchivesServiceImpl extends ServiceImpl<TBUserArchivesMapper,
         authRole.add(RoleTypeEnum.ASSISTANT_ENGINEER);
 
         Long remainValidTime = SystemConstant.processMiniute(Duration.ofDays(remainValidDay));
-        IPage<UserArchivesResult> page = this.baseMapper.findUserArchivesPage(new Page<>(pageNumber, pageSize), city, supplierId, archivesName, roleType, authenticationStatus, authenticationTimeStart, authenticationTimeEnd, remainValidTime, System.currentTimeMillis());
+        IPage<UserArchivesResult> page = this.baseMapper.findUserArchivesPage(new Page<>(pageNumber, pageSize), city, supplierId, archivesName, roleType, authenticationStatus, archivesTimeStart, archivesTimeEnd, remainValidTime, System.currentTimeMillis());
         for (UserArchivesResult record : page.getRecords()) {
             List<RoleTypeEnum> roleTypeEnumList = new ArrayList<>();
             Long userId = record.getUserId();
@@ -214,7 +214,8 @@ public class TBUserArchivesServiceImpl extends ServiceImpl<TBUserArchivesMapper,
         sysUser.setMobileNumber(mobileNumber);
         sysUser.setGender(gender);
         sysUser.setRoleIds(roleIds);
-        sysUserService.saveUser(sysUser);
+        sysUser.setSource(UserSourceEnum.ARCHIVES);
+        sysUserService.saveUser(sysUser, requestUser);
         return id;
     }
 
@@ -259,4 +260,60 @@ public class TBUserArchivesServiceImpl extends ServiceImpl<TBUserArchivesMapper,
         }
         return result;
     }
+
+    @Override
+    public List<UserArchivesImportDto> findExportData(String city, Long supplierId, String archivesName, RoleTypeEnum roleType, Boolean authenticationStatus, Long archivesTimeStart, Long archivesTimeEnd, Integer remainValidDay) {
+        if (city != null && city.length() > 0) {
+            city = SystemConstant.translateSpecificSign(city);
+        }
+        if (archivesName != null && archivesName.length() > 0) {
+            archivesName = SystemConstant.translateSpecificSign(archivesName);
+        }
+        Long remainValidTime = SystemConstant.processMiniute(Duration.ofDays(remainValidDay));
+        List<UserArchivesImportDto> userArchivesImportDtoList = this.baseMapper.findExportData(city, supplierId, archivesName, roleType, authenticationStatus,
+                archivesTimeStart, archivesTimeEnd, remainValidTime, System.currentTimeMillis());
+
+        List<Long> effectEngineerIdList = sysUserService.findUserListByRoleType(RoleTypeEnum.EFFECT_ENGINEER)
+                .stream()
+                .map(BaseEntity::getId)
+                .distinct()
+                .collect(Collectors.toList());
+        List<Long> regionCoordinatorIdList = sysUserService.findUserListByRoleType(RoleTypeEnum.REGION_COORDINATOR)
+                .stream()
+                .map(BaseEntity::getId)
+                .distinct()
+                .collect(Collectors.toList());
+        List<Long> assistantEngineerIdList = sysUserService.findUserListByRoleType(RoleTypeEnum.ASSISTANT_ENGINEER)
+                .stream()
+                .map(BaseEntity::getId)
+                .distinct()
+                .collect(Collectors.toList());
+
+        for (UserArchivesImportDto userArchivesImportDto : userArchivesImportDtoList) {
+            Long userId = userArchivesImportDto.getUserId();
+            List<RoleTypeEnum> hasRoles = new ArrayList<>();
+            if (effectEngineerIdList.contains(userId)) {
+                hasRoles.add(RoleTypeEnum.EFFECT_ENGINEER);
+            }
+            if (regionCoordinatorIdList.contains(userId)) {
+                hasRoles.add(RoleTypeEnum.REGION_COORDINATOR);
+            }
+            if (assistantEngineerIdList.contains(userId)) {
+                hasRoles.add(RoleTypeEnum.ASSISTANT_ENGINEER);
+            }
+            String roleNames = hasRoles.stream().map(RoleTypeEnum::getDesc).collect(Collectors.joining(","));
+            userArchivesImportDto.setRoleNames(roleNames);
+            userArchivesImportDto.setGender(userArchivesImportDto.getGenderEnum().getTitle());
+            userArchivesImportDto.setEducation(userArchivesImportDto.getEducationEnum().getTitle());
+
+            Long archivesTime = userArchivesImportDto.getArchivesTime();
+            Long authenticationValidTime = userArchivesImportDto.getAuthenticationValidTime();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
+            String archivesTimeStr = sdf.format(new Date(archivesTime));
+            String authenticationValidTimeStr = sdf.format(new Date(authenticationValidTime));
+            userArchivesImportDto.setArchivesTimeStr(archivesTimeStr);
+            userArchivesImportDto.setAuthenticationValidTimeStr(authenticationValidTimeStr);
+        }
+        return userArchivesImportDtoList;
+    }
 }

+ 110 - 20
sop-business/src/main/java/com/qmth/sop/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -5,7 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.sop.business.bean.dto.CustomImportDto;
 import com.qmth.sop.business.bean.dto.SysMessageExportDto;
 import com.qmth.sop.business.bean.dto.UserArchivesImportDto;
-import com.qmth.sop.business.bean.result.SysCustomResult;
+import com.qmth.sop.business.bean.params.UserArchivesParam;
+import com.qmth.sop.business.bean.query.UserArchivesQuery;
 import com.qmth.sop.business.bean.result.SysMessageResult;
 import com.qmth.sop.business.bean.result.TBDingCountQueryResult;
 import com.qmth.sop.business.entity.*;
@@ -14,10 +15,10 @@ import com.qmth.sop.business.templete.service.TaskLogicService;
 import com.qmth.sop.business.util.ImportExportUtil;
 import com.qmth.sop.business.util.excel.BasicExcelListener;
 import com.qmth.sop.common.contant.SystemConstant;
-import com.qmth.sop.common.enums.FlowStatusEnum;
-import com.qmth.sop.common.enums.ProductTypeEnum;
-import com.qmth.sop.common.enums.UploadFileEnum;
+import com.qmth.sop.common.enums.*;
+import com.qmth.sop.common.util.DateDisposeUtils;
 import com.qmth.sop.common.util.ServletUtil;
+import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -63,6 +64,12 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     SysMessageService sysMessageService;
     @Resource
     TBDingService tbDingService;
+    @Resource
+    private SysSupplierService sysSupplierService;
+    @Resource
+    private SysRoleService sysRoleService;
+    @Resource
+    private TBUserArchivesService tbUserArchivesService;
 
     /**
      * 处理导入人员档案数据
@@ -77,6 +84,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         InputStream inputStream = null;
         try {
             TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
+            SysUser requestUser = (SysUser) map.get(SystemConstant.USER);
             inputStream = importExportUtil.getUploadFileInputStream(tbTask);
             LinkedMultiValueMap<String, UserArchivesImportDto> userArchivesImportDtoLinkedMultiValueMap = new LinkedMultiValueMap<>();
             StringJoiner errorData = new StringJoiner("");
@@ -92,7 +100,84 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             map.computeIfAbsent(SystemConstant.EXCEL_DATA, v -> userArchivesImportDtoLinkedMultiValueMap);
             map.computeIfAbsent(SystemConstant.EXCEL_DATA_ERROR, v -> errorData.toString());
 
-            //TODO 处理数据逻辑
+            List<UserArchivesImportDto> userArchivesImportDtoList = userArchivesImportDtoLinkedMultiValueMap.get(BasicExcelListener.SUCCESS);
+            if (CollectionUtils.isNotEmpty(userArchivesImportDtoList)) {
+                List<String> supplierNameList = userArchivesImportDtoList.stream().map(UserArchivesImportDto::getSupplierName).distinct().collect(Collectors.toList());
+                Map<String, Long> roleMap = new HashMap<>();
+                List<SysRole> regionCoordinatorList = sysRoleService.list(new QueryWrapper<SysRole>().lambda().eq(SysRole::getType, RoleTypeEnum.REGION_COORDINATOR));
+                if (CollectionUtils.isNotEmpty(regionCoordinatorList)) {
+                    SysRole regionCoordinator = regionCoordinatorList.get(0);
+                    roleMap.put(regionCoordinator.getType().getDesc(), regionCoordinator.getId());
+                }
+
+                List<SysRole> effectEngineerList = sysRoleService.list(new QueryWrapper<SysRole>().lambda().eq(SysRole::getType, RoleTypeEnum.EFFECT_ENGINEER));
+                if (CollectionUtils.isNotEmpty(effectEngineerList)) {
+                    SysRole effectEngineer = effectEngineerList.get(0);
+                    roleMap.put(effectEngineer.getType().getDesc(), effectEngineer.getId());
+                }
+
+                List<SysRole> assistantEngineerList = sysRoleService.list(new QueryWrapper<SysRole>().lambda().eq(SysRole::getType, RoleTypeEnum.ASSISTANT_ENGINEER));
+                if (CollectionUtils.isNotEmpty(assistantEngineerList)) {
+                    SysRole assistantEngineer = assistantEngineerList.get(0);
+                    roleMap.put(assistantEngineer.getType().getDesc(), assistantEngineer.getId());
+                }
+
+
+                Map<String, Long> supplierMap = new HashMap<>();
+                if (CollectionUtils.isNotEmpty(supplierNameList)) {
+                    List<SysSupplier> supplierList = sysSupplierService.list(new QueryWrapper<SysSupplier>().lambda().select(SysSupplier::getId, SysSupplier::getName).in(SysSupplier::getName, supplierNameList));
+                    supplierMap = supplierList.stream().collect(Collectors.toMap(SysSupplier::getName, SysSupplier::getId));
+                }
+                for (UserArchivesImportDto userArchivesImportDto : userArchivesImportDtoList) {
+                    UserArchivesParam userArchivesParam = new UserArchivesParam();
+                    // TODO: 2023/8/15 临时生成编号方法
+                    userArchivesParam.setCode(String.valueOf(SystemConstant.getDbUuid()));
+                    userArchivesParam.setName(userArchivesImportDto.getName());
+                    userArchivesParam.setProvince(userArchivesImportDto.getProvince());
+                    userArchivesParam.setCity(userArchivesImportDto.getCity());
+                    userArchivesParam.setArea(userArchivesImportDto.getArea());
+                    userArchivesParam.setGender(GenderEnum.convertTitleToEnum(userArchivesImportDto.getGender()));
+                    String identity = userArchivesImportDto.getIdentity();
+                    userArchivesParam.setIdentity(identity);
+                    List<TBUserArchives> tbUserArchivesList = tbUserArchivesService.list(new QueryWrapper<TBUserArchives>().lambda().eq(TBUserArchives::getIdentity, identity));
+                    if (tbUserArchivesList.size() > 1) {
+                        throw ExceptionResultEnum.ERROR.exception("存在多个相同身份证异常[" + identity + "]");
+                    } else if (tbUserArchivesList.size() == 1) {
+                        // 身份证相同则编辑用户
+                        userArchivesParam.setId(tbUserArchivesList.get(0).getId());
+                    }
+                    userArchivesParam.setEducation(EducationEnum.convertTitleToEnum(userArchivesImportDto.getEducation()));
+                    userArchivesParam.setMobileNumber(userArchivesImportDto.getMobileNumber());
+                    userArchivesParam.setEmail(userArchivesImportDto.getEmail());
+
+                    String supplierName = userArchivesImportDto.getSupplierName();
+                    Long supplierId = supplierMap.get(supplierName);
+                    if (supplierId != null && supplierId > 0) {
+                        userArchivesParam.setSupplierId(supplierId);
+                    }
+                    String archivesTimeStr = userArchivesImportDto.getArchivesTimeStr();
+                    Long archivesTime = DateDisposeUtils.parseDate(archivesTimeStr).getTime();
+                    userArchivesParam.setArchivesTime(archivesTime);
+
+                    String roleNames = userArchivesImportDto.getRoleNames();
+                    List<Long> roleIdList = new ArrayList<>();
+                    for (String roleName : roleNames.split(",")) {
+                        Long roleId = roleMap.get(roleName);
+                        if (roleId != null && roleId > 0) {
+                            roleIdList.add(roleId);
+                        }
+                    }
+                    userArchivesParam.setRoleIds(roleIdList.toArray(new Long[0]));
+                    userArchivesParam.setAuthenticationScore(userArchivesImportDto.getAuthenticationScore());
+
+                    String authenticationValidTimeStr = userArchivesImportDto.getAuthenticationValidTimeStr();
+                    Long authenticationValidTime = DateDisposeUtils.parseDate(authenticationValidTimeStr).getTime();
+                    userArchivesParam.setAuthenticationTime(authenticationValidTime);
+                    userArchivesParam.setRemark(userArchivesImportDto.getRemark());
+                    tbUserArchivesService.editUserArchives(userArchivesParam, requestUser);
+                }
+
+            }
         } finally {
             if (Objects.nonNull(inputStream)) {
                 inputStream.close();
@@ -139,7 +224,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     sysCustom.setArea(e.getArea());
                     sysCustom.setCity(e.getCity());
                     sysCustom.setCode(e.getCode());
-                    ProductTypeEnum type=ProductTypeEnum.OFFICE.getTitle().equals(e.getType())?ProductTypeEnum.OFFICE:ProductTypeEnum.CLOUD_MARK;
+                    ProductTypeEnum type = ProductTypeEnum.OFFICE.getTitle().equals(e.getType()) ? ProductTypeEnum.OFFICE : ProductTypeEnum.CLOUD_MARK;
                     sysCustom.setType(type);
                     sysCustom.setProvince(e.getProvince());
                     sysCustom.setPeoperDay(e.getPeoperDay());
@@ -181,10 +266,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             fileTemp = SystemConstant.getFileTempVar(SystemConstant.XLSX_PREFIX);
 
             List<SysMessageResult> lists = sysMessageService.query((Long) map.get("noticeId"), (String) map.get("city"), (Long) map.get("supplierId"), (Boolean) map.get("status"));
-          //List<SysMessageResult> 转化成 List<SysMessageExportDto>
+            //List<SysMessageResult> 转化成 List<SysMessageExportDto>
 
-            List<SysMessageExportDto> sysMessageExportDtoList = lists.stream().map(e->{
-                SysMessageExportDto dto=new SysMessageExportDto();
+            List<SysMessageExportDto> sysMessageExportDtoList = lists.stream().map(e -> {
+                SysMessageExportDto dto = new SysMessageExportDto();
                 dto.setCity(e.getCity());
                 dto.setCode(e.getCode());
                 dto.setCountry(e.getCountry());
@@ -193,12 +278,12 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 dto.setName(e.getName());
                 dto.setProvince(e.getProvince());
                 dto.setService(e.getService());
-                dto.setStatus(e.getStatus()?"已阅":"未阅");
+                dto.setStatus(e.getStatus() ? "已阅" : "未阅");
                 dto.setSupplier(e.getSupplier());
                 //时间戳转化为日期字符串
                 dto.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(e.getReceiveTime()));
                 dto.setType(e.getType().getTitle());
-                return  dto;
+                return dto;
             }).collect(Collectors.toList());
 
             EasyExcel.write(fileTemp, SysMessageExportDto.class).sheet("回执明细导出").doWrite(sysMessageExportDtoList);
@@ -221,7 +306,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             fileTemp = SystemConstant.getFileTempVar(SystemConstant.XLSX_PREFIX);
 
             List<TBDingCountQueryResult> tbDingCountQueryResults = tbDingService.query((Long) map.get("serviceId"), (String) map.get("status"), (Long) map.get("createId"), (String) map.get("userName"), (Long) map.get("supplierId"), (String) map.get("String"), (String) map.get("sopNo"), (Long) map.get("days"));
-            tbDingCountQueryResults.forEach(e->{
+            tbDingCountQueryResults.forEach(e -> {
                 e.setStatus(FlowStatusEnum.convertToEnum(e.getStatus()).getTitle());
             });
             EasyExcel.write(fileTemp, TBDingCountQueryResult.class).sheet("考勤打卡统计导出").doWrite(tbDingCountQueryResults);
@@ -250,11 +335,18 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         File fileTemp = null;
         try {
             fileTemp = SystemConstant.getFileTempVar(SystemConstant.XLSX_PREFIX);
-            //TODO 数据读取逻辑start
-            List<UserArchivesImportDto> archivesImportDtoList = new ArrayList<>();
-            archivesImportDtoList.add(new UserArchivesImportDto("1", "2", "123", "aaa", "bbb"));
-            archivesImportDtoList.add(new UserArchivesImportDto("4", "5", "789", "ccc", "ddd"));
-            //TODO 数据读取逻辑end
+            //数据读取逻辑start
+            UserArchivesQuery query = (UserArchivesQuery) map.get(SystemConstant.QUERY);
+            String city = query.getCity();
+            Long supplierId = query.getSupplierId();
+            String archivesName = query.getArchivesName();
+            RoleTypeEnum roleType = query.getRoleType();
+            Boolean authenticationStatus = query.getAuthenticationStatus();
+            Long archivesTimeStart = query.getArchivesTimeStart();
+            Long archivesTimeEnd = query.getArchivesTimeEnd();
+            Integer remainValidDay = query.getRemainValidDay();
+            List<UserArchivesImportDto> archivesImportDtoList = tbUserArchivesService.findExportData(city, supplierId, archivesName, roleType, authenticationStatus, archivesTimeStart, archivesTimeEnd, remainValidDay);
+            //数据读取逻辑end
             EasyExcel.write(fileTemp, UserArchivesImportDto.class).sheet("人员档案导出").doWrite(archivesImportDtoList);
 
             BasicAttachment basicAttachment = basicAttachmentService.saveAttachment(fileTemp, UploadFileEnum.FILE);
@@ -267,6 +359,4 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         }
         return map;
     }
-
-
-}
+}

+ 67 - 0
sop-business/src/main/resources/mapper/TBUserArchivesMapper.xml

@@ -85,4 +85,71 @@
                 LEFT JOIN
             sys_user su ON su.mobile_number = tbua.mobile_number
     </select>
+    <select id="findExportData" resultType="com.qmth.sop.business.bean.dto.UserArchivesImportDto">
+        SELECT
+            tbua.name,
+            tbua.province,
+            tbua.city,
+            tbua.area,
+            tbua.gender AS genderEnum,
+            tbua.identity,
+            tbua.education AS educationEnum,
+            tbua.mobile_number AS mobileNumber,
+            tbua.email,
+            ss.name AS supplierName,
+            tbuas.archives_time AS archivesTime,
+            tbuas.authentication_score AS authenticationScore,
+            tbuas.authentication_valid_time AS authenticationValidTime,
+            tbuas.remark,
+            su.id AS userId
+        FROM
+            t_b_user_archives tbua
+        LEFT JOIN
+            t_b_user_archives_supplier tbuas ON tbua.id = tbuas.supplier_id
+        LEFT JOIN
+            sys_supplier ss ON ss.id = tbuas.supplier_id
+        LEFT JOIN
+            sys_user su ON su.mobile_number = tbua.mobile_number
+        <where>
+            <if test="city != null and city != ''">
+                AND tbua.city LIKE CONCAT('%',#{city},'%')
+            </if>
+            <if test="supplierId != null">
+                AND ss.id = #{supplierId}
+            </if>
+            <if test="archivesName != null and archivesName != ''">
+                AND tbua.name LIKE CONCAT('%',#{archivesName},'%')
+            </if>
+            <if test="archivesTimeStart != null">
+                AND tbuas.archives_time >= #{archivesTimeStart}
+            </if>
+            <if test="archivesTimeEnd != null">
+                AND #{archivesTimeEnd} >= tbuas.archives_time
+            </if>
+            <if test="remainValidTime != null">
+                AND tbuas.authentication_valid_time >= #{remainValidTime}
+            </if>
+            <if test="status != null">
+                <choose>
+                    <when test="status">
+                        AND tbuas.authentication_valid_time >= #{currentTime}
+                    </when>
+                    <otherwise>
+                        AND (tbuas.authentication_valid_time IS NULL OR tbuas.authentication_valid_time &lt;= #{currentTime})
+                    </otherwise>
+                </choose>
+            </if>
+            <if test="roleType != null">
+                AND EXISTS(SELECT
+                1
+                FROM
+                sys_user_role sur
+                LEFT JOIN
+                sys_role sr ON sur.role_id = sr.id
+                WHERE
+                su.id = sur.user_id
+                AND sr.type = #{roleType})
+            </if>
+        </where>
+    </select>
 </mapper>

+ 1 - 0
sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java

@@ -42,6 +42,7 @@ public class SystemConstant {
     public static final String SESSION = "session:";
     public static final String USER = "account";
     public static final String TASK = "task";
+    public static final String QUERY = "query";
     public static final String PARAMS = "params";
     public static final String ORG = "org";
     public static final String ORG_ID = "orgId";

+ 10 - 0
sop-common/src/main/java/com/qmth/sop/common/enums/EducationEnum.java

@@ -20,4 +20,14 @@ public enum EducationEnum {
     public String getTitle() {
         return title;
     }
+
+    public static EducationEnum convertTitleToEnum(String title) {
+        EducationEnum res = null;
+        for (EducationEnum value : EducationEnum.values()) {
+            if (title.equals(value.getTitle())) {
+                res = value;
+            }
+        }
+        return res;
+    }
 }

+ 10 - 0
sop-common/src/main/java/com/qmth/sop/common/enums/GenderEnum.java

@@ -22,4 +22,14 @@ public enum GenderEnum {
     public String getTitle() {
         return title;
     }
+
+    public static GenderEnum convertTitleToEnum(String title) {
+        GenderEnum res = null;
+        for (GenderEnum value : GenderEnum.values()) {
+            if (title.equals(value.getTitle())) {
+                res = value;
+            }
+        }
+        return res;
+    }
 }

+ 177 - 0
sop-common/src/main/java/com/qmth/sop/common/util/DateDisposeUtils.java

@@ -0,0 +1,177 @@
+package com.qmth.sop.common.util;
+
+/**
+ * @Description: 时间处理工具类
+ * @Author: CaoZixuan
+ * @Date:
+ */
+
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.commons.lang3.time.DateUtils;
+
+import java.lang.management.ManagementFactory;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 时间工具类
+ *
+ * @author ruoyi
+ */
+public class DateDisposeUtils extends DateUtils {
+    public static String YYYY = "yyyy";
+
+    public static String YYYY_MM = "yyyy-MM";
+
+    public static String YYYY_MM_DD = "yyyy-MM-dd";
+
+    public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
+
+    public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
+
+    private static String[] parsePatterns = {
+            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
+            "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
+            "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
+
+    /**
+     * 获取当前Date型日期
+     *
+     * @return Date() 当前日期
+     */
+    public static Date getNowDate()
+    {
+        return new Date();
+    }
+
+    /**
+     * 获取当前日期, 默认格式为yyyy-MM-dd
+     *
+     * @return String
+     */
+    public static String getDate()
+    {
+        return dateTimeNow(YYYY_MM_DD);
+    }
+
+    public static final String getTime()
+    {
+        return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
+    }
+
+    public static final String dateTimeNow()
+    {
+        return dateTimeNow(YYYYMMDDHHMMSS);
+    }
+
+    public static final String dateTimeNow(final String format)
+    {
+        return parseDateToStr(format, new Date());
+    }
+
+    public static final String dateTime(final Date date)
+    {
+        return parseDateToStr(YYYY_MM_DD, date);
+    }
+
+    public static final String parseDateToStr(final String format, final Date date)
+    {
+        return new SimpleDateFormat(format).format(date);
+    }
+
+    public static final Date dateTime(final String format, final String ts)
+    {
+        try
+        {
+            return new SimpleDateFormat(format).parse(ts);
+        }
+        catch (ParseException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 日期路径 即年/月/日 如2018/08/08
+     */
+    public static final String datePath()
+    {
+        Date now = new Date();
+        return DateFormatUtils.format(now, "yyyy/MM/dd");
+    }
+
+    /**
+     * 日期路径 即年/月/日 如20180808
+     */
+    public static final String dateTime()
+    {
+        Date now = new Date();
+        return DateFormatUtils.format(now, "yyyyMMdd");
+    }
+
+    /**
+     * 日期型字符串转化为日期 格式
+     */
+    public static Date parseDate(Object str)
+    {
+        if (str == null)
+        {
+            return null;
+        }
+        try
+        {
+            return parseDate(str.toString(), parsePatterns);
+        }
+        catch (ParseException e)
+        {
+            return null;
+        }
+    }
+
+    public static void main(String[] args) {
+        String d1 = "2020-01-01";
+        String d2 = "2020/01/01";
+        String d3 = "2020-01-01 12:00";
+        String d4 = "2020/01/01 12:00";
+        String d5 = "2020/01/01 12:00:00";
+        String d6 = "2020/01/01 12:00:00";
+        System.out.println(parseDate(d1).getTime());
+        System.out.println(parseDate(d2).getTime());
+        System.out.println(parseDate(d3).getTime());
+        System.out.println(parseDate(d4).getTime());
+        System.out.println(parseDate(d5).getTime());
+        System.out.println(parseDate(d6).getTime());
+    }
+
+    /**
+     * 获取服务器启动时间
+     */
+    public static Date getServerStartDate()
+    {
+        long time = ManagementFactory.getRuntimeMXBean().getStartTime();
+        return new Date(time);
+    }
+
+    /**
+     * 计算两个时间差
+     */
+    public static String getDatePoor(Date endDate, Date nowDate)
+    {
+        long nd = 1000 * 24 * 60 * 60;
+        long nh = 1000 * 60 * 60;
+        long nm = 1000 * 60;
+        // long ns = 1000;
+        // 获得两个时间的毫秒时间差异
+        long diff = endDate.getTime() - nowDate.getTime();
+        // 计算差多少天
+        long day = diff / nd;
+        // 计算差多少小时
+        long hour = diff % nd / nh;
+        // 计算差多少分钟
+        long min = diff % nd % nh / nm;
+        // 计算差多少秒//输出结果
+        // long sec = diff % nd % nh % nm / ns;
+        return day + "天" + hour + "小时" + min + "分钟";
+    }
+}

+ 1 - 1
sop-server/src/main/java/com/qmth/sop/server/api/SysUserController.java

@@ -53,7 +53,7 @@ public class SysUserController {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
         }
-        return ResultUtil.ok(sysUserService.saveUser(sysUser));
+        return ResultUtil.ok(sysUserService.saveUser(sysUser, null));
     }
 
     @ApiOperation(value = "启用/禁用")

+ 21 - 2
sop-server/src/main/java/com/qmth/sop/server/api/TBUserArchivesController.java

@@ -1,11 +1,13 @@
 package com.qmth.sop.server.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.sop.business.bean.query.UserArchivesQuery;
 import com.qmth.sop.business.entity.TBTask;
 import com.qmth.sop.business.service.TBTaskService;
 import com.qmth.sop.business.templete.execute.AsyncUserArchivesExportService;
 import com.qmth.sop.business.templete.execute.AsyncUserArchivesImportService;
 import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.enums.RoleTypeEnum;
 import com.qmth.sop.common.enums.TaskTypeEnum;
 import com.qmth.sop.common.util.Result;
 import com.qmth.sop.common.util.ResultUtil;
@@ -54,10 +56,27 @@ public class TBUserArchivesController {
     @ApiOperation(value = "人员档案导出")
     @RequestMapping(value = "/export", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
-    public Result exportUserArchives() throws Exception {
+    public Result exportUserArchives(@ApiParam(value = "城市") @RequestParam(required = false) String city,
+                                     @ApiParam(value = "供应商") @RequestParam(required = false) String supplierId,
+                                     @ApiParam(value = "档案名") @RequestParam(required = false) String archivesName,
+                                     @ApiParam(value = "角色类型") @RequestParam(required = false) RoleTypeEnum roleType,
+                                     @ApiParam(value = "认证状态") @RequestParam(required = false) Boolean authenticationStatus,
+                                     @ApiParam(value = "入档时间 - 起始") @RequestParam(required = false) Long archivesTimeStart,
+                                     @ApiParam(value = "入档时间 - 截止") @RequestParam(required = false) Long archivesTimeEnd,
+                                     @ApiParam(value = "有效期") @RequestParam(required = false) Integer remainValidDay) throws Exception {
         Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.USER_ARCHIVES_EXPORT);
+        UserArchivesQuery query = new UserArchivesQuery();
+        query.setCity(city);
+        query.setSupplierId(SystemConstant.convertIdToLong(supplierId));
+        query.setArchivesName(archivesName);
+        query.setRoleType(roleType);
+        query.setAuthenticationStatus(authenticationStatus);
+        query.setArchivesTimeStart(archivesTimeStart);
+        query.setArchivesTimeEnd(archivesTimeEnd);
+        query.setRemainValidDay(remainValidDay);
+        map.put(SystemConstant.QUERY, query);
         asyncUserArchivesExportService.exportTask(map);
         TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
         return ResultUtil.ok(tbTask.getId());
     }
-}
+}