Commit 97242b45 authored by fangxinjiang's avatar fangxinjiang

excel导入导出组件

parent d1527afa
...@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo; ...@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
...@@ -15,18 +16,20 @@ import java.io.Serializable; ...@@ -15,18 +16,20 @@ import java.io.Serializable;
*/ */
@Data @Data
@ColumnWidth(30) @ColumnWidth(30)
public class EmpCertificateExcelVO implements Serializable { public class EmpCertificateExcelVO extends RowIndex implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 员工姓名 * 员工姓名
*/ */
@ExcelAttribute(name = "员工姓名",errorInfo = "员工姓名不可为空")
@NotNull(message = "员工姓名不可为空") @NotNull(message = "员工姓名不可为空")
@ExcelProperty(value ="员工姓名") @ExcelProperty(value ="员工姓名")
private String empName; private String empName;
/** /**
* 员工身份证 * 员工身份证
*/ */
@ExcelAttribute(name = "身份证号",errorInfo = "员工身份证不可为空")
@NotNull(message = "员工身份证不可为空") @NotNull(message = "员工身份证不可为空")
@ExcelProperty(value ="身份证号") @ExcelProperty(value ="身份证号")
private String empIdcard; private String empIdcard;
...@@ -34,6 +37,7 @@ public class EmpCertificateExcelVO implements Serializable { ...@@ -34,6 +37,7 @@ public class EmpCertificateExcelVO implements Serializable {
/** /**
* 资格类型 * 资格类型
*/ */
@ExcelAttribute(name = "资格类型",errorInfo = "资格类型不可为空")
@NotNull(message = "资格类型不可为空") @NotNull(message = "资格类型不可为空")
@ExcelProperty(value ="资格类型") @ExcelProperty(value ="资格类型")
private String qualificationType; private String qualificationType;
...@@ -41,6 +45,7 @@ public class EmpCertificateExcelVO implements Serializable { ...@@ -41,6 +45,7 @@ public class EmpCertificateExcelVO implements Serializable {
/** /**
* 资格等级 * 资格等级
*/ */
@ExcelAttribute(name = "资格等级",errorInfo = "资格等级不可为空")
@NotNull(message = "资格等级不可为空") @NotNull(message = "资格等级不可为空")
@ExcelProperty(value ="资格等级") @ExcelProperty(value ="资格等级")
private String qualificationLevel; private String qualificationLevel;
...@@ -48,36 +53,42 @@ public class EmpCertificateExcelVO implements Serializable { ...@@ -48,36 +53,42 @@ public class EmpCertificateExcelVO implements Serializable {
/** /**
* 证书编号 * 证书编号
*/ */
@ExcelAttribute(name = "证书编号")
@ExcelProperty(value ="证书编号") @ExcelProperty(value ="证书编号")
private String certificationNo; private String certificationNo;
/** /**
* 获取方式 * 获取方式
*/ */
@ExcelAttribute(name = "获取方式")
@ExcelProperty(value ="获取方式") @ExcelProperty(value ="获取方式")
private String obtainType; private String obtainType;
/** /**
* 评定机构 * 评定机构
*/ */
@ExcelAttribute(name = "评定机构")
@ExcelProperty(value ="评定机构") @ExcelProperty(value ="评定机构")
private String assessmentUnit; private String assessmentUnit;
/** /**
* 申报年度 * 申报年度
*/ */
@ExcelAttribute(name = "申报年度")
@ExcelProperty(value ="申报年度") @ExcelProperty(value ="申报年度")
private String declareYear; private String declareYear;
/** /**
* 是否最高资格0是/1否 * 是否最高资格0是/1否
*/ */
@ExcelAttribute(name = "是否最高资格",errorInfo = "是否最高资格不可为空")
@NotNull(message = "是否最高资格不可为空") @NotNull(message = "是否最高资格不可为空")
@ExcelProperty(value ="是否最高资格") @ExcelProperty(value ="是否最高资格")
private String heightIdentification; private String heightIdentification;
/** /**
* 备注 * 备注
*/ */
@ExcelAttribute(name = "备注")
@ExcelProperty(value ="备注") @ExcelProperty(value ="备注")
private String remark; private String remark;
} }
...@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelProperty; ...@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat; import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -23,25 +24,30 @@ import java.util.Date; ...@@ -23,25 +24,30 @@ import java.util.Date;
*/ */
@Data @Data
@ColumnWidth(30) @ColumnWidth(30)
public class EmpDisabilityExcelVO implements Serializable { public class EmpDisabilityExcelVO extends RowIndex implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 员工身份证
*/
@NotNull(message = "员工身份证不能为空")
@ExcelProperty(value ="身份证号")
private String empIdcard;
/** /**
* 员工姓名 * 员工姓名
*/ */
@ExcelAttribute(name = "员工姓名",errorInfo = "员工姓名不可为空")
@NotNull(message = "员工姓名不能为空") @NotNull(message = "员工姓名不能为空")
@ExcelProperty(value ="员工姓名") @ExcelProperty(value ="员工姓名")
private String empName; private String empName;
/**
* 员工身份证
*/
@ExcelAttribute(name = "身份证号",errorInfo = "员工身份证不能为空")
@NotNull(message = "员工身份证不能为空")
@ExcelProperty(value ="身份证号")
private String empIdcard;
/** /**
* 伤残病名称 * 伤残病名称
*/ */
@ExcelAttribute(name = "伤残病名称",errorInfo = "伤残病名称不能为空")
@NotNull(message = "伤残病名称不能为空") @NotNull(message = "伤残病名称不能为空")
@ExcelProperty(value ="伤残病名称") @ExcelProperty(value ="伤残病名称")
private String disabilityName; private String disabilityName;
...@@ -49,12 +55,14 @@ public class EmpDisabilityExcelVO implements Serializable { ...@@ -49,12 +55,14 @@ public class EmpDisabilityExcelVO implements Serializable {
/** /**
* 职业病名称 * 职业病名称
*/ */
@ExcelAttribute(name = "职业病名称")
@ExcelProperty(value ="职业病名称") @ExcelProperty(value ="职业病名称")
private String occupationalDisease; private String occupationalDisease;
/** /**
* 伤残等级 * 伤残等级
*/ */
@ExcelAttribute(name = "伤残等级",errorInfo = "伤残等级不能为空")
@NotNull(message = "伤残等级不能为空") @NotNull(message = "伤残等级不能为空")
@ExcelProperty(value ="伤残等级") @ExcelProperty(value ="伤残等级")
private String disabilityLevel; private String disabilityLevel;
...@@ -62,6 +70,7 @@ public class EmpDisabilityExcelVO implements Serializable { ...@@ -62,6 +70,7 @@ public class EmpDisabilityExcelVO implements Serializable {
/** /**
* 伤残开始日期 * 伤残开始日期
*/ */
@ExcelAttribute(name = "伤残开始日期",errorInfo = "伤残开始日期不能为空",isDate = true)
@NotNull(message = "伤残开始日期不能为空") @NotNull(message = "伤残开始日期不能为空")
@Past @Past
@DateTimeFormat("YYYY-MM-dd") @DateTimeFormat("YYYY-MM-dd")
...@@ -71,6 +80,7 @@ public class EmpDisabilityExcelVO implements Serializable { ...@@ -71,6 +80,7 @@ public class EmpDisabilityExcelVO implements Serializable {
/** /**
* 伤残结束日期 * 伤残结束日期
*/ */
@ExcelAttribute(name = "伤残结束日期",errorInfo = "伤残结束日期不能为空",isDate = true)
@NotNull(message = "伤残结束日期不能为空") @NotNull(message = "伤残结束日期不能为空")
@Past @Past
@DateTimeFormat("YYYY-MM-dd") @DateTimeFormat("YYYY-MM-dd")
...@@ -80,6 +90,7 @@ public class EmpDisabilityExcelVO implements Serializable { ...@@ -80,6 +90,7 @@ public class EmpDisabilityExcelVO implements Serializable {
/** /**
* 是否工伤标识0是/1否 * 是否工伤标识0是/1否
*/ */
@ExcelAttribute(name = "是否工伤",errorInfo = "是否工伤不可为空")
@NotNull(message = "是否工伤标识(0是/1否)不能为空") @NotNull(message = "是否工伤标识(0是/1否)不能为空")
@ExcelProperty(value ="是否工伤") @ExcelProperty(value ="是否工伤")
private String injuryIdentification; private String injuryIdentification;
...@@ -87,6 +98,7 @@ public class EmpDisabilityExcelVO implements Serializable { ...@@ -87,6 +98,7 @@ public class EmpDisabilityExcelVO implements Serializable {
/** /**
* 备注 * 备注
*/ */
@ExcelAttribute(name = "备注")
@ExcelProperty(value ="备注") @ExcelProperty(value ="备注")
private String remark; private String remark;
......
...@@ -3,6 +3,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo; ...@@ -3,6 +3,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat; import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
...@@ -19,13 +20,14 @@ import java.util.Date; ...@@ -19,13 +20,14 @@ import java.util.Date;
*/ */
@Data @Data
@ColumnWidth(30) @ColumnWidth(30)
public class EmpEducationExcelVO implements Serializable { public class EmpEducationExcelVO extends RowIndex implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 员工姓名 * 员工姓名
*/ */
@ExcelAttribute(name = "员工姓名",errorInfo = "员工姓名不可为空")
@NotNull(message = "员工姓名不可为空") @NotNull(message = "员工姓名不可为空")
@ExcelProperty(value ="员工姓名") @ExcelProperty(value ="员工姓名")
private String empName; private String empName;
...@@ -33,6 +35,7 @@ public class EmpEducationExcelVO implements Serializable { ...@@ -33,6 +35,7 @@ public class EmpEducationExcelVO implements Serializable {
/** /**
* 身份证号 * 身份证号
*/ */
@ExcelAttribute(name = "身份证号",errorInfo = "员工身份证不可为空")
@NotNull(message = "员工身份证不可为空") @NotNull(message = "员工身份证不可为空")
@ExcelProperty(value ="身份证号") @ExcelProperty(value ="身份证号")
private String empIdcard; private String empIdcard;
...@@ -40,6 +43,7 @@ public class EmpEducationExcelVO implements Serializable { ...@@ -40,6 +43,7 @@ public class EmpEducationExcelVO implements Serializable {
/** /**
* 学校名称 * 学校名称
*/ */
@ExcelAttribute(name = "学校",errorInfo = "学校不可为空")
@NotNull(message = "学校不可为空") @NotNull(message = "学校不可为空")
@ExcelProperty(value ="学校") @ExcelProperty(value ="学校")
private String school; private String school;
...@@ -47,12 +51,14 @@ public class EmpEducationExcelVO implements Serializable { ...@@ -47,12 +51,14 @@ public class EmpEducationExcelVO implements Serializable {
/** /**
* 院系名称 * 院系名称
*/ */
@ExcelAttribute(name = "院系名称")
@ExcelProperty(value ="院系名称") @ExcelProperty(value ="院系名称")
private String collageSystem; private String collageSystem;
/** /**
* 专业 * 专业
*/ */
@ExcelAttribute(name = "专业",errorInfo = "专业不可为空")
@NotNull(message = "专业不可为空") @NotNull(message = "专业不可为空")
@ExcelProperty(value ="专业") @ExcelProperty(value ="专业")
private String major; private String major;
...@@ -60,6 +66,7 @@ public class EmpEducationExcelVO implements Serializable { ...@@ -60,6 +66,7 @@ public class EmpEducationExcelVO implements Serializable {
/** /**
* 学历名称 * 学历名称
*/ */
@ExcelAttribute(name = "学历",errorInfo = "学历不可为空",isDataId = true,dataType = "system_degree_dict")
@NotNull(message = "学历不可为空") @NotNull(message = "学历不可为空")
@ExcelProperty(value ="学历") @ExcelProperty(value ="学历")
private String educationName; private String educationName;
...@@ -67,12 +74,14 @@ public class EmpEducationExcelVO implements Serializable { ...@@ -67,12 +74,14 @@ public class EmpEducationExcelVO implements Serializable {
/** /**
* 学历类型:全日制、自考、函授等 * 学历类型:全日制、自考、函授等
*/ */
@ExcelAttribute(name = "学历类型")
@ExcelProperty(value ="学历类型") @ExcelProperty(value ="学历类型")
private String type; private String type;
/** /**
* 最高学历标识0是/1否 * 最高学历标识0是/1否
*/ */
@ExcelAttribute(name = "最高学历",errorInfo = "最高学历不可为空",readConverterExp = "是:0,否:1")
@NotNull(message = "最高学历标识不可为空") @NotNull(message = "最高学历标识不可为空")
@ExcelProperty(value ="最高学历") @ExcelProperty(value ="最高学历")
private String highIdentification; private String highIdentification;
...@@ -80,12 +89,14 @@ public class EmpEducationExcelVO implements Serializable { ...@@ -80,12 +89,14 @@ public class EmpEducationExcelVO implements Serializable {
/** /**
* 学制类型:四年、三年、五年、二年 * 学制类型:四年、三年、五年、二年
*/ */
@ExcelAttribute(name = "学制类型")
@ExcelProperty(value ="学制类型") @ExcelProperty(value ="学制类型")
private String educationSystem; private String educationSystem;
/** /**
* 入学时间 * 入学时间
*/ */
@ExcelAttribute(name = "入学时间",errorInfo = "入学时间不可为空",isDate = true)
@NotNull(message = "入学时间不可为空") @NotNull(message = "入学时间不可为空")
@DateTimeFormat("YYYY-MM-dd") @DateTimeFormat("YYYY-MM-dd")
@ExcelProperty(value ="入学时间") @ExcelProperty(value ="入学时间")
...@@ -94,6 +105,7 @@ public class EmpEducationExcelVO implements Serializable { ...@@ -94,6 +105,7 @@ public class EmpEducationExcelVO implements Serializable {
/** /**
* 结业日期 * 结业日期
*/ */
@ExcelAttribute(name = "毕业时间",errorInfo = "毕业时间不可为空",isDate = true)
@NotNull(message = "毕业时间不可为空") @NotNull(message = "毕业时间不可为空")
@DateTimeFormat("YYYY-MM-dd") @DateTimeFormat("YYYY-MM-dd")
@ExcelProperty(value ="毕业时间") @ExcelProperty(value ="毕业时间")
...@@ -102,11 +114,13 @@ public class EmpEducationExcelVO implements Serializable { ...@@ -102,11 +114,13 @@ public class EmpEducationExcelVO implements Serializable {
/** /**
* 证书名称 * 证书名称
*/ */
@ExcelAttribute(name = "证书名称")
@ExcelProperty(value ="证书名称") @ExcelProperty(value ="证书名称")
private String certificationName; private String certificationName;
/** /**
* 备注 * 备注
*/ */
@ExcelAttribute(name = "备注")
@ExcelProperty(value ="备注") @ExcelProperty(value ="备注")
private String remark; private String remark;
......
...@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo; ...@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat; import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
...@@ -14,11 +15,12 @@ import java.util.Date; ...@@ -14,11 +15,12 @@ import java.util.Date;
* @Version 1.0 * @Version 1.0
*/ */
@Data @Data
public class EmpEducationUpdateExcelVo{ public class EmpEducationUpdateExcelVo extends RowIndex{
/** /**
* @Author fxj * @Author fxj
* @Description 主键 * @Description 主键
**/ **/
@ExcelAttribute(name = "主键",errorInfo = "主键不可为空")
@NotNull(message = "主键不可为空") @NotNull(message = "主键不可为空")
@ExcelProperty(value ="主键") @ExcelProperty(value ="主键")
private String id; private String id;
...@@ -26,6 +28,7 @@ public class EmpEducationUpdateExcelVo{ ...@@ -26,6 +28,7 @@ public class EmpEducationUpdateExcelVo{
/** /**
* 学校名称 * 学校名称
*/ */
@ExcelAttribute(name = "学校",errorInfo = "学校不可为空")
@NotNull(message = "学校不可为空") @NotNull(message = "学校不可为空")
@ExcelProperty(value ="学校") @ExcelProperty(value ="学校")
private String school; private String school;
...@@ -33,6 +36,7 @@ public class EmpEducationUpdateExcelVo{ ...@@ -33,6 +36,7 @@ public class EmpEducationUpdateExcelVo{
/** /**
* 院系名称 * 院系名称
*/ */
@ExcelAttribute(name = "院系名称")
@ExcelProperty(value ="院系名称") @ExcelProperty(value ="院系名称")
private String collageSystem; private String collageSystem;
...@@ -40,6 +44,7 @@ public class EmpEducationUpdateExcelVo{ ...@@ -40,6 +44,7 @@ public class EmpEducationUpdateExcelVo{
/** /**
* 专业 * 专业
*/ */
@ExcelAttribute(name = "专业",errorInfo = "专业不可为空")
@NotNull(message = "专业不可为空") @NotNull(message = "专业不可为空")
@ExcelProperty(value ="专业") @ExcelProperty(value ="专业")
private String major; private String major;
...@@ -47,6 +52,7 @@ public class EmpEducationUpdateExcelVo{ ...@@ -47,6 +52,7 @@ public class EmpEducationUpdateExcelVo{
/** /**
* 学历名称 * 学历名称
*/ */
@ExcelAttribute(name = "学历",errorInfo = "学历不可为空")
@NotNull(message = "学历不可为空") @NotNull(message = "学历不可为空")
@ExcelProperty(value ="学历") @ExcelProperty(value ="学历")
private String educationName; private String educationName;
...@@ -54,12 +60,14 @@ public class EmpEducationUpdateExcelVo{ ...@@ -54,12 +60,14 @@ public class EmpEducationUpdateExcelVo{
/** /**
* 学历类型:全日制、自考、函授等 * 学历类型:全日制、自考、函授等
*/ */
@ExcelAttribute(name = "学历类型")
@ExcelProperty(value ="学历类型") @ExcelProperty(value ="学历类型")
private String type; private String type;
/** /**
* 最高学历标识0是/1否 * 最高学历标识0是/1否
*/ */
@ExcelAttribute(name = "最高学历",errorInfo = "最高学历标识不可为空",readConverterExp = "0:是,1:否")
@NotNull(message = "最高学历标识不可为空") @NotNull(message = "最高学历标识不可为空")
@ExcelProperty(value ="最高学历") @ExcelProperty(value ="最高学历")
private String highIdentification; private String highIdentification;
...@@ -67,12 +75,14 @@ public class EmpEducationUpdateExcelVo{ ...@@ -67,12 +75,14 @@ public class EmpEducationUpdateExcelVo{
/** /**
* 学制类型:四年、三年、五年、二年 * 学制类型:四年、三年、五年、二年
*/ */
@ExcelAttribute(name = "学制类型")
@ExcelProperty(value ="学制类型") @ExcelProperty(value ="学制类型")
private String educationSystem; private String educationSystem;
/** /**
* 入学时间 * 入学时间
*/ */
@ExcelAttribute(name = "入学时间",errorInfo = "入学时间不可为空",isDate = true)
@NotNull(message = "入学时间不可为空") @NotNull(message = "入学时间不可为空")
@DateTimeFormat("YYYY-MM-dd") @DateTimeFormat("YYYY-MM-dd")
@ExcelProperty(value ="入学时间") @ExcelProperty(value ="入学时间")
...@@ -81,6 +91,7 @@ public class EmpEducationUpdateExcelVo{ ...@@ -81,6 +91,7 @@ public class EmpEducationUpdateExcelVo{
/** /**
* 结业日期 * 结业日期
*/ */
@ExcelAttribute(name = "毕业时间",errorInfo = "毕业时间不可为空",isDate = true)
@NotNull(message = "毕业时间不可为空") @NotNull(message = "毕业时间不可为空")
@DateTimeFormat("YYYY-MM-dd") @DateTimeFormat("YYYY-MM-dd")
@ExcelProperty(value ="毕业时间") @ExcelProperty(value ="毕业时间")
...@@ -89,11 +100,13 @@ public class EmpEducationUpdateExcelVo{ ...@@ -89,11 +100,13 @@ public class EmpEducationUpdateExcelVo{
/** /**
* 证书名称 * 证书名称
*/ */
@ExcelAttribute(name = "证书名称")
@ExcelProperty(value ="证书名称") @ExcelProperty(value ="证书名称")
private String certificationName; private String certificationName;
/** /**
* 备注 * 备注
*/ */
@ExcelAttribute(name = "remark")
@ExcelProperty(value ="备注") @ExcelProperty(value ="备注")
private String remark; private String remark;
} }
...@@ -4,8 +4,6 @@ import com.alibaba.excel.annotation.ExcelProperty; ...@@ -4,8 +4,6 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat; import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute; import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.security.util.dict.ConverterDiy;
import com.yifu.cloud.plus.v1.yifu.common.security.util.dict.DictValidator;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
...@@ -23,10 +21,10 @@ import java.util.Date; ...@@ -23,10 +21,10 @@ import java.util.Date;
@ColumnWidth(30) @ColumnWidth(30)
public class EmpFamilyExcelVO extends RowIndex implements Serializable { public class EmpFamilyExcelVO extends RowIndex implements Serializable {
private static final long serialVersionUID = 1L;
/** /**
* 员工姓名 * 员工姓名
*/ */
@ExcelAttribute(name = "员工姓名",errorInfo = "员工姓名不可为空")
@NotNull(message = "员工姓名不可为空") @NotNull(message = "员工姓名不可为空")
@ExcelProperty(value ="员工姓名") @ExcelProperty(value ="员工姓名")
private String empName; private String empName;
...@@ -34,6 +32,7 @@ public class EmpFamilyExcelVO extends RowIndex implements Serializable { ...@@ -34,6 +32,7 @@ public class EmpFamilyExcelVO extends RowIndex implements Serializable {
/** /**
* 员工身份证 * 员工身份证
*/ */
@ExcelAttribute(name = "身份证号",errorInfo = "身份证号不可为空")
@NotNull(message = "员工身份证不可为空") @NotNull(message = "员工身份证不可为空")
@ExcelProperty(value ="身份证号") @ExcelProperty(value ="身份证号")
private String empIdcard; private String empIdcard;
...@@ -41,6 +40,7 @@ public class EmpFamilyExcelVO extends RowIndex implements Serializable { ...@@ -41,6 +40,7 @@ public class EmpFamilyExcelVO extends RowIndex implements Serializable {
/** /**
* 家庭成员姓名 * 家庭成员姓名
*/ */
@ExcelAttribute(name = "成员姓名",errorInfo = "成员姓名不可为空")
@NotNull(message = "家庭成员姓名不可为空") @NotNull(message = "家庭成员姓名不可为空")
@ExcelProperty(value ="成员姓名") @ExcelProperty(value ="成员姓名")
private String familyName; private String familyName;
...@@ -48,15 +48,15 @@ public class EmpFamilyExcelVO extends RowIndex implements Serializable { ...@@ -48,15 +48,15 @@ public class EmpFamilyExcelVO extends RowIndex implements Serializable {
/** /**
* 与本人关系 * 与本人关系
*/ */
@ExcelAttribute(name = "与本人关系",isDataId = true,dataType = "family_relation") @ExcelAttribute(name = "与本人关系",isNotEmpty = true,isDataId = true,dataType = "family_relation",errorInfo = "与本人关系不可为空")
//@DictValidator(dictType = "family_relation",message = "与本人关系字典不匹配") //@DictValidator(dictType = "family_relation",message = "与本人关系字典不匹配")
@NotNull(message = "与本人关系不可为空") @NotNull(message = "与本人关系不可为空")
@ExcelProperty(value ="与本人关系",converter = ConverterDiy.class )
private String relationshipSelf; private String relationshipSelf;
/** /**
* 出生日期 * 出生日期
*/ */
@ExcelAttribute(name = "出生日期",isDate = true)
@Past @Past
@DateTimeFormat("YYYY-MM-dd") @DateTimeFormat("YYYY-MM-dd")
@ExcelProperty(value ="出生日期") @ExcelProperty(value ="出生日期")
...@@ -65,12 +65,14 @@ public class EmpFamilyExcelVO extends RowIndex implements Serializable { ...@@ -65,12 +65,14 @@ public class EmpFamilyExcelVO extends RowIndex implements Serializable {
/** /**
* 工作/学习单位 * 工作/学习单位
*/ */
@ExcelAttribute(name = "工作单位")
@ExcelProperty(value ="工作单位") @ExcelProperty(value ="工作单位")
private String workUnit; private String workUnit;
/** /**
* 联系电话 * 联系电话
*/ */
@ExcelAttribute(name = "手机号码",isNotEmpty = true,isPhone = true,errorInfo = "手机号码不可为空")
@NotNull(message = "手机号码不可为空") @NotNull(message = "手机号码不可为空")
@ExcelProperty(value ="手机号码") @ExcelProperty(value ="手机号码")
private String contractTel; private String contractTel;
......
...@@ -3,6 +3,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo; ...@@ -3,6 +3,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat; import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -21,25 +22,29 @@ import java.util.Date; ...@@ -21,25 +22,29 @@ import java.util.Date;
*/ */
@Data @Data
@ColumnWidth(30) @ColumnWidth(30)
public class EmpWorkRecordExcelVO implements Serializable { public class EmpWorkRecordExcelVO extends RowIndex implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 员工身份证
*/
@NotNull(message = "员工身份证不可为空")
@ExcelProperty(value ="身份证号")
private String empIdcard;
/** /**
* 员工姓名 * 员工姓名
*/ */
@ExcelAttribute(name = "员工姓名",errorInfo = "员工姓名不可为空")
@NotNull(message = "员工姓名不可为空") @NotNull(message = "员工姓名不可为空")
@ExcelProperty(value ="员工姓名") @ExcelProperty(value ="员工姓名")
private String empName; private String empName;
/**
* 员工身份证
*/
@ExcelAttribute(name = "身份证号",errorInfo = "员工身份证不可为空")
@NotNull(message = "员工身份证不可为空")
@ExcelProperty(value ="身份证号")
private String empIdcard;
/** /**
* 工作单位 * 工作单位
*/ */
@ExcelAttribute(name = "工作单位",errorInfo = "工作单位不可为空")
@NotNull(message = "工作单位不可为空") @NotNull(message = "工作单位不可为空")
@ExcelProperty(value ="工作单位") @ExcelProperty(value ="工作单位")
private String workUnit; private String workUnit;
...@@ -47,6 +52,7 @@ public class EmpWorkRecordExcelVO implements Serializable { ...@@ -47,6 +52,7 @@ public class EmpWorkRecordExcelVO implements Serializable {
/** /**
* 工作部门 * 工作部门
*/ */
@ExcelAttribute(name = "工作部门",errorInfo = "工作部门不可为空")
@NotNull(message = "工作部门不可为空") @NotNull(message = "工作部门不可为空")
@ExcelProperty(value ="工作部门") @ExcelProperty(value ="工作部门")
private String workDepart; private String workDepart;
...@@ -54,18 +60,21 @@ public class EmpWorkRecordExcelVO implements Serializable { ...@@ -54,18 +60,21 @@ public class EmpWorkRecordExcelVO implements Serializable {
/** /**
* 工作岗位 * 工作岗位
*/ */
@ExcelAttribute(name = "工作岗位")
@ExcelProperty(value ="工作岗位") @ExcelProperty(value ="工作岗位")
private String workJob; private String workJob;
/** /**
* 工作类型 * 工作类型
*/ */
@ExcelAttribute(name = "工作类型")
@ExcelProperty(value ="工作类型") @ExcelProperty(value ="工作类型")
private String workingType; private String workingType;
/** /**
* 是否在岗:0是/1否 * 是否在岗:0是/1否
*/ */
@ExcelAttribute(name = "在职状态",errorInfo = "在职状态不可为空")
@NotNull(message = "是否在岗不可为空") @NotNull(message = "是否在岗不可为空")
@ExcelProperty(value ="在职状态") @ExcelProperty(value ="在职状态")
private String workingStatus; private String workingStatus;
...@@ -73,6 +82,7 @@ public class EmpWorkRecordExcelVO implements Serializable { ...@@ -73,6 +82,7 @@ public class EmpWorkRecordExcelVO implements Serializable {
/** /**
* 开始工作日期 * 开始工作日期
*/ */
@ExcelAttribute(name = "开始工作日期",errorInfo = "开始工作日期不可为空",isDate = true)
@DateTimeFormat("YYYY-MM-dd") @DateTimeFormat("YYYY-MM-dd")
@NotNull(message = "开始工作日期不可为空") @NotNull(message = "开始工作日期不可为空")
@ExcelProperty(value ="开始工作日期") @ExcelProperty(value ="开始工作日期")
...@@ -81,6 +91,7 @@ public class EmpWorkRecordExcelVO implements Serializable { ...@@ -81,6 +91,7 @@ public class EmpWorkRecordExcelVO implements Serializable {
/** /**
* 结束工作日期 * 结束工作日期
*/ */
@ExcelAttribute(name = "结束工作日期",isDate = true)
@DateTimeFormat("YYYY-MM-dd") @DateTimeFormat("YYYY-MM-dd")
@ExcelProperty(value ="结束工作日期") @ExcelProperty(value ="结束工作日期")
private Date endDate; private Date endDate;
......
package com.yifu.cloud.plus.v1.yifu.common.security.util.dict;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.ReadConverterContext;
import com.alibaba.excel.converters.WriteConverterContext;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.RedisUtil;
import java.lang.reflect.Field;
import java.util.Map;
/**
* @Author fxj
* @Date 2022/6/23
* @Description
* @Version 1.0
*/
public class ConverterDiy implements Converter<String> {
@Override
public Class<?> supportJavaTypeKey() {
return String.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
/**
* 这里是读的时候会调用 不用管
*
* @return
*/
@Override
public String convertToJavaData(ReadConverterContext<?> context) {
Field field = context.getContentProperty().getField();
String converRes = context.getReadCellData().getStringValue();
if (Common.isNotNull(field)){
DictValidator attr = field.getAnnotation(DictValidator.class);
if (Common.isNotNull(attr) && Common.isNotNull(attr.dictType())){
Map<String,String> dicObj = (Map<String, String>) RedisUtil.redis.opsForValue().get(attr.dictType());
for (Map.Entry<String,String> entry:dicObj.entrySet()){
if (Common.isNotNull(entry.getValue()) && entry.getValue().equals(converRes)){
converRes = entry.getKey();
break;
}
}
}
}
return converRes;
}
/**
* 这里是写的时候会调用 不用管
*
* @return
*/
@Override
public WriteCellData<?> convertToExcelData(WriteConverterContext<String> context) {
return new WriteCellData<>("" + context.getValue());
}
}
package com.yifu.cloud.plus.v1.yifu.common.security.util.dict;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
/**
* @Author fxj
* @Date 2022/6/22
* @Description 数据字典注解
* @Version 1.0
*/
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {DictValuesConstraintValidator.class})
public @interface DictValidator {
/**
* return message
*
* @return
*/
String message() default "字典不匹配";
/**
* a groups element that specifies the processing groups with which the constraint declaration is associated
*/
Class<?>[] groups() default {};
/**
* specifies the payload with which the the constraint declaration is associated
*/
Class<? extends Payload>[] payload() default {};
/**
* 注解传参
*/
String dictType() default "";
/**
* 读取内容转表达式 (如: 0=男,1=女,2=未知)
*/
String readConverterExp() default "父子";
}
package com.yifu.cloud.plus.v1.yifu.common.security.util.dict;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
* @Author fxj
* @Date 2022/6/22
* @Description
* @Version 1.0
*/
public class DictValuesConstraintValidator implements ConstraintValidator<DictValidator,String> {
Set<String> values = new HashSet<>();
@Override
public void initialize(DictValidator constraintAnnotation) {
/*String readConverterExp = constraintAnnotation.readConverterExp();
values.add(readConverterExp);*/
// 获取注解中传入的values信息
String dictType= constraintAnnotation.dictType();
Map<String,String> dicObj = (Map<String, String>) RedisUtil.redis.opsForValue().get(dictType);
// 遍历values信息,放到set中
if (Common.isNotNull(dicObj)){
values.addAll(dicObj.keySet());
}
}
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
// 当用户传进来的值符合给定的值才允许通过(return true)
return values.contains(value);
}
}
package com.yifu.cloud.plus.v1.yifu.common.security.util.dict;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.metadata.CellExtra;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.fastjson.JSON;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpFamilyExcelVO;
import lombok.extern.log4j.Log4j2;
import java.util.List;
import java.util.Map;
/**
* @Author fxj
* @Date 2022/6/23
* @Description
* @Version 1.0
*/
@Log4j2
public class ExcelListenerDiy extends AnalysisEventListener<EmpFamilyExcelVO> {
List<EmpFamilyExcelVO> res;
public ExcelListenerDiy(List<EmpFamilyExcelVO> res){
this.res = res;
}
//解析异常调用
@Override
public void onException(Exception exception, AnalysisContext context) throws Exception {
log.error("解析失败,但是继续解析下一行:{}", exception.getMessage());
if (exception instanceof ExcelDataConvertException) {
ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
log.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex(),
excelDataConvertException.getColumnIndex(), excelDataConvertException.getCellData());
}
}
//解析表头
@Override
public void invokeHead(Map<Integer, ReadCellData<?>> headMap, AnalysisContext context) {
}
//解析每行数据调用
@Override
public void invoke(EmpFamilyExcelVO data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex+1);
res.add(data);
}
@Override
public void extra(CellExtra extra, AnalysisContext context) {
}
//所有数据解析完成后调用
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
log.info("所有数据解析完成!");
log.info("解析数据:{}", JSON.toJSONString(res));
}
}
...@@ -17,18 +17,23 @@ ...@@ -17,18 +17,23 @@
package com.yifu.cloud.plus.v1.yifu.archives.controller; package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpDisabilityInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpDisabilityInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpEducation;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpDisabilityInfoService; import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpDisabilityInfoService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.DisabilitySearchVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.DisabilitySearchVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpDisabilityExcelVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpDisabilityExcelVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpFamilyExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ExcelUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
...@@ -38,7 +43,9 @@ import lombok.extern.log4j.Log4j2; ...@@ -38,7 +43,9 @@ import lombok.extern.log4j.Log4j2;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -140,10 +147,27 @@ public class TEmpDisabilityInfoController { ...@@ -140,10 +147,27 @@ public class TEmpDisabilityInfoController {
return R.ok(tEmpDisabilityInfoService.removeById(id)); return R.ok(tEmpDisabilityInfoService.removeById(id));
} }
/**
* 通过ids删除员工伤残信息表
* @param ids id
* @return R
*/
@Operation(description = "通过ids删除员工伤残信息表hasPermission('archives_tempdisabilityinfo_del_batch')")
@SysLog("通过ids删除员工伤残信息表" )
@DeleteMapping("/removeByIds" )
@PreAuthorize("@pms.hasPermission('archives_tempdisabilityinfo_del_batch')" )
public R<Boolean> removeByIds(@RequestParam String ids) {
List<String> idList = null;
if (Common.isNotNull(ids)){
idList = Common.initStrToList(ids, CommonConstants.COMMA_STRING);
}
return R.ok(tEmpDisabilityInfoService.removeByIds(idList));
}
/** /**
* 批量新增员工伤残信息 * 批量新增员工伤残信息
* *
* @param excelVOList * @param file
* @return * @return
* @Author fxj * @Author fxj
* @Date 2019-08-16 * @Date 2019-08-16
...@@ -152,8 +176,62 @@ public class TEmpDisabilityInfoController { ...@@ -152,8 +176,62 @@ public class TEmpDisabilityInfoController {
@SysLog("批量新增员工伤残信息") @SysLog("批量新增员工伤残信息")
@PostMapping("/importListAdd") @PostMapping("/importListAdd")
@PreAuthorize("@pms.hasPermission('archives_tempdisabilityinfo_importListAdd')") @PreAuthorize("@pms.hasPermission('archives_tempdisabilityinfo_importListAdd')")
public R<List<ErrorMessage>> importListAdd(@RequestExcel List<EmpDisabilityExcelVO> excelVOList, BindingResult bindingResult) { public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file){
return tEmpDisabilityInfoService.importTmpDisability(excelVOList, bindingResult); List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<EmpDisabilityExcelVO> util1 = new ExcelUtil<>(EmpDisabilityExcelVO.class);;
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(file.getInputStream(), EmpDisabilityExcelVO.class, new ReadListener<EmpDisabilityExcelVO>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<EmpDisabilityExcelVO> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(EmpDisabilityExcelVO data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex+1);
ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)){
errorMessageList.add(errorMessage);
}else {
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 加上存储数据库
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
tEmpDisabilityInfoService.importTmpDisability(cachedDataList,errorMessageList);
log.info("存储数据库成功!");
}
}).sheet().doRead();
}catch (Exception e){
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR,e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
return R.ok(errorMessageList);
} }
} }
...@@ -17,27 +17,36 @@ ...@@ -17,27 +17,36 @@
package com.yifu.cloud.plus.v1.yifu.archives.controller; package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpEducation; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpEducation;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpEducationService; import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpEducationService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EducationSearchVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.EducationSearchVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationExcelVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationExcelVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationUpdateExcelVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationUpdateExcelVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpFamilyExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ExcelUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -47,6 +56,7 @@ import java.util.List; ...@@ -47,6 +56,7 @@ import java.util.List;
* @author fxj * @author fxj
* @date 2022-06-18 09:39:46 * @date 2022-06-18 09:39:46
*/ */
@Log4j2
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("/tempeducation" ) @RequestMapping("/tempeducation" )
...@@ -155,7 +165,7 @@ public class TEmpEducationController { ...@@ -155,7 +165,7 @@ public class TEmpEducationController {
/** /**
* 批量新增员工学历信息 * 批量新增员工学历信息
* *
* @param excelVOList * @param file
* @return * @return
* @Author fxj * @Author fxj
* @Date 2019-08-16 * @Date 2019-08-16
...@@ -164,14 +174,68 @@ public class TEmpEducationController { ...@@ -164,14 +174,68 @@ public class TEmpEducationController {
@SysLog("批量新增员工学历信息") @SysLog("批量新增员工学历信息")
@PostMapping("/importListAdd") @PostMapping("/importListAdd")
@PreAuthorize("@pms.hasPermission('archives_education_importListAdd')") @PreAuthorize("@pms.hasPermission('archives_education_importListAdd')")
public R<List<ErrorMessage>> importListAdd(@RequestExcel List<EmpEducationExcelVO> excelVOList, BindingResult bindingResult) { public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) {
return tEmpEducationService.importEmpEducation(excelVOList, bindingResult); List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<EmpEducationUpdateExcelVo> util1 = new ExcelUtil<>(EmpEducationUpdateExcelVo.class);;
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(file.getInputStream(), EmpEducationUpdateExcelVo.class, new ReadListener<EmpEducationUpdateExcelVo>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<EmpEducationUpdateExcelVo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(EmpEducationUpdateExcelVo data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex+1);
ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)){
errorMessageList.add(errorMessage);
}else {
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 加上存储数据库
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
tEmpEducationService.importEmpEducationUpdate(cachedDataList,errorMessageList);
log.info("存储数据库成功!");
}
}).sheet().doRead();
}catch (Exception e){
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR,e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
return R.ok(errorMessageList);
} }
/** /**
* 批量更新员工学历信息 * 批量更新员工学历信息
* *
* @param excelVOList * @param file
* @return * @return
* @Author fxj * @Author fxj
* @Date 2019-08-16 * @Date 2019-08-16
...@@ -180,7 +244,60 @@ public class TEmpEducationController { ...@@ -180,7 +244,60 @@ public class TEmpEducationController {
@SysLog("批量更新员工学历信息") @SysLog("批量更新员工学历信息")
@PostMapping("/importListUpate") @PostMapping("/importListUpate")
@PreAuthorize("@pms.hasPermission('archives_education_importListUpdate')") @PreAuthorize("@pms.hasPermission('archives_education_importListUpdate')")
public R<List<ErrorMessage>> importListUpate(@RequestExcel List<EmpEducationUpdateExcelVo> excelVOList, BindingResult bindingResult) { public R<List<ErrorMessage>> importListUpate(@RequestBody MultipartFile file) {
return tEmpEducationService.importEmpEducationUpdate(excelVOList, bindingResult); List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<EmpEducationUpdateExcelVo> util1 = new ExcelUtil<>(EmpEducationUpdateExcelVo.class);;
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(file.getInputStream(), EmpEducationUpdateExcelVo.class, new ReadListener<EmpEducationUpdateExcelVo>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<EmpEducationUpdateExcelVo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(EmpEducationUpdateExcelVo data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex+1);
ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)){
errorMessageList.add(errorMessage);
}else {
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 加上存储数据库
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
tEmpEducationService.importEmpEducationUpdate(cachedDataList,errorMessageList);
log.info("存储数据库成功!");
}
}).sheet().doRead();
}catch (Exception e){
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR,e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
return R.ok(errorMessageList);
} }
} }
...@@ -43,6 +43,7 @@ import org.springframework.security.access.prepost.PreAuthorize; ...@@ -43,6 +43,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -166,7 +167,7 @@ public class TEmpFamilyController { ...@@ -166,7 +167,7 @@ public class TEmpFamilyController {
if (Common.isNotNull(ids)){ if (Common.isNotNull(ids)){
idList = Common.initStrToList(ids, CommonConstants.COMMA_STRING); idList = Common.initStrToList(ids, CommonConstants.COMMA_STRING);
} }
return R.ok(tEmpFamilyService.removeByIds(idList)); return tEmpFamilyService.removeByIdsDiy(idList);
} }
...@@ -198,21 +199,19 @@ public class TEmpFamilyController { ...@@ -198,21 +199,19 @@ public class TEmpFamilyController {
@SysLog("批量新增员工家庭信息") @SysLog("批量新增员工家庭信息")
@PostMapping("/importListAdd") @PostMapping("/importListAdd")
@PreAuthorize("@pms.hasPermission('archives-family-batch-import')") @PreAuthorize("@pms.hasPermission('archives-family-batch-import')")
public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) throws Exception{ public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file){
/* List<ErrorMessage> errorMessageList = new ArrayList<>();
List<EmpFamilyExcelVO> excelVOList = new ArrayList<>(); ExcelUtil<EmpFamilyExcelVO> util1 = new ExcelUtil<>(EmpFamilyExcelVO.class);;
EasyExcel.read(file.getInputStream(),EmpFamilyExcelVO.class,new ExcelListenerDiy(excelVOList)).sheet(0);
return tEmpFamilyService.importEmpFamily(excelVOList, bindingResult);
*/
ExcelUtil<EmpFamilyExcelVO> util1 = null;
// 写法2: // 写法2:
// 匿名内部类 不用额外写一个DemoDataListener // 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(file.getInputStream(), EmpFamilyExcelVO.class, new ReadListener<EmpFamilyExcelVO>() { EasyExcel.read(file.getInputStream(), EmpFamilyExcelVO.class, new ReadListener<EmpFamilyExcelVO>() {
/** /**
* 单次缓存的数据量 * 单次缓存的数据量
*/ */
public static final int BATCH_COUNT = 1; public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/** /**
*临时存储 *临时存储
*/ */
...@@ -220,12 +219,15 @@ public class TEmpFamilyController { ...@@ -220,12 +219,15 @@ public class TEmpFamilyController {
@Override @Override
public void invoke(EmpFamilyExcelVO data, AnalysisContext context) { public void invoke(EmpFamilyExcelVO data, AnalysisContext context) {
//List<ObjectError> errorMessages = bindingResult.getAllErrors();
ReadRowHolder readRowHolder = context.readRowHolder(); ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex(); Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex+1); data.setRowIndex(rowIndex+1);
util1.checkEntity(data, rowIndex); ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)){
errorMessageList.add(errorMessage);
}else {
cachedDataList.add(data); cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) { if (cachedDataList.size() >= BATCH_COUNT) {
saveData(); saveData();
// 存储完成清理 list // 存储完成清理 list
...@@ -244,13 +246,14 @@ public class TEmpFamilyController { ...@@ -244,13 +246,14 @@ public class TEmpFamilyController {
*/ */
private void saveData() { private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size()); log.info("{}条数据,开始存储数据库!", cachedDataList.size());
tEmpFamilyService.importEmpFamily(cachedDataList,errorMessageList);
log.info("存储数据库成功!"); log.info("存储数据库成功!");
} }
}).sheet().doRead(); }).sheet().doRead();
}catch (Exception e){
if (null != util1.getErrorInfo() && !util1.getErrorInfo().isEmpty()) { log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR,e);
return R.failed(util1.getErrorInfo()); return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
} }
return null; return R.ok(errorMessageList);
} }
} }
...@@ -17,26 +17,34 @@ ...@@ -17,26 +17,34 @@
package com.yifu.cloud.plus.v1.yifu.archives.controller; package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpProfessionalQualification; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpProfessionalQualification;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpProfessionalQualificationService; import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpProfessionalQualificationService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.CertifySearchVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.CertifySearchVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpCertificateExcelVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpCertificateExcelVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpFamilyExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ExcelUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -46,6 +54,7 @@ import java.util.List; ...@@ -46,6 +54,7 @@ import java.util.List;
* @author fxj * @author fxj
* @date 2022-06-18 09:39:46 * @date 2022-06-18 09:39:46
*/ */
@Log4j2
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("/tempprofessionalqualification" ) @RequestMapping("/tempprofessionalqualification" )
...@@ -135,10 +144,27 @@ public class TEmpProfessionalQualificationController { ...@@ -135,10 +144,27 @@ public class TEmpProfessionalQualificationController {
public R removeById(@PathVariable String id) { public R removeById(@PathVariable String id) {
return R.ok(qualificationService.removeById(id)); return R.ok(qualificationService.removeById(id));
} }
/**
* 通过ids删除员工职业资格信息表
* @param ids id
* @return R
*/
@Operation(description = "通过ids删除员工职业资格信息表hasPermission('archives_tempprofessionalqualification_del_batch')")
@SysLog("通过ids删除员工职业资格信息表" )
@DeleteMapping("/removeByIds" )
@PreAuthorize("@pms.hasPermission('archives_tempprofessionalqualification_del_batch')" )
public R removeByIds(@RequestParam String ids) {
List<String> idList = null;
if (Common.isNotNull(ids)){
idList = Common.initStrToList(ids, CommonConstants.COMMA_STRING);
}
return R.ok(qualificationService.removeByIds(idList));
}
/** /**
* 批量新增员工证书信息 * 批量新增员工证书信息
* *
* @param excelVOList * @param file
* @return * @return
* @Author fxj * @Author fxj
* @Date 2019-08-16 * @Date 2019-08-16
...@@ -147,7 +173,59 @@ public class TEmpProfessionalQualificationController { ...@@ -147,7 +173,59 @@ public class TEmpProfessionalQualificationController {
@SysLog("批量新增员工证书信息") @SysLog("批量新增员工证书信息")
@PostMapping("/importListAdd") @PostMapping("/importListAdd")
@PreAuthorize("@pms.hasPermission('archives-professionalqualification-batch-import')") @PreAuthorize("@pms.hasPermission('archives-professionalqualification-batch-import')")
public R<List<ErrorMessage>> importListAdd(@RequestExcel List<EmpCertificateExcelVO> excelVOList, BindingResult bindingResult) { public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) {
return qualificationService.importEmpCertificate(excelVOList, bindingResult); List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<EmpCertificateExcelVO> util1 = new ExcelUtil<>(EmpCertificateExcelVO.class);;
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(file.getInputStream(), EmpCertificateExcelVO.class, new ReadListener<EmpCertificateExcelVO>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<EmpCertificateExcelVO> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(EmpCertificateExcelVO data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex+1);
ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)){
errorMessageList.add(errorMessage);
}else {
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 加上存储数据库
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
qualificationService.importEmpCertificate(cachedDataList,errorMessageList);
log.info("存储数据库成功!");
}
}).sheet().doRead();
}catch (Exception e){
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR,e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
return R.ok(errorMessageList);
} }
} }
...@@ -17,26 +17,33 @@ ...@@ -17,26 +17,33 @@
package com.yifu.cloud.plus.v1.yifu.archives.controller; package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpWorkRecording; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpWorkRecording;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpWorkRecordingService; import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpWorkRecordingService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpWorkRecordExcelVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpWorkRecordExcelVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.WorkRecordSearchVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.WorkRecordSearchVO;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ExcelUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -46,6 +53,7 @@ import java.util.List; ...@@ -46,6 +53,7 @@ import java.util.List;
* @author fxj * @author fxj
* @date 2022-06-18 09:39:46 * @date 2022-06-18 09:39:46
*/ */
@Log4j2
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("/tempworkrecording" ) @RequestMapping("/tempworkrecording" )
...@@ -155,7 +163,7 @@ public class TEmpWorkRecordingController { ...@@ -155,7 +163,7 @@ public class TEmpWorkRecordingController {
/** /**
* 批量新增员工工作信息 * 批量新增员工工作信息
* *
* @param excelVOList * @param file
* @return * @return
* @Author fxj * @Author fxj
* @Date 2019-08-16 * @Date 2019-08-16
...@@ -164,7 +172,61 @@ public class TEmpWorkRecordingController { ...@@ -164,7 +172,61 @@ public class TEmpWorkRecordingController {
@SysLog("批量新增员工工作信息") @SysLog("批量新增员工工作信息")
@PostMapping("/importListAdd") @PostMapping("/importListAdd")
@PreAuthorize("@pms.hasPermission('archives_tempworkrecording_importListAdd')") @PreAuthorize("@pms.hasPermission('archives_tempworkrecording_importListAdd')")
public R<List<ErrorMessage>> importListAdd(@RequestExcel List<EmpWorkRecordExcelVO> excelVOList, BindingResult bindingResult) { public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) {
return tEmpWorkRecordingService.importEmpWorkRecord(excelVOList, bindingResult);
List<com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<EmpWorkRecordExcelVO> util1 = new ExcelUtil<>(EmpWorkRecordExcelVO.class);;
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(file.getInputStream(), EmpWorkRecordExcelVO.class, new ReadListener<EmpWorkRecordExcelVO>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<EmpWorkRecordExcelVO> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(EmpWorkRecordExcelVO data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex+1);
com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)){
errorMessageList.add(errorMessage);
}else {
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 加上存储数据库
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
tEmpWorkRecordingService.importEmpWorkRecord(cachedDataList,errorMessageList);
log.info("存储数据库成功!");
}
}).sheet().doRead();
}catch (Exception e){
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR,e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
return R.ok(errorMessageList);
} }
} }
...@@ -18,11 +18,10 @@ ...@@ -18,11 +18,10 @@
package com.yifu.cloud.plus.v1.yifu.archives.service; package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpDisabilityInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpDisabilityInfo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpDisabilityExcelVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpDisabilityExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import org.springframework.validation.BindingResult;
import java.util.List; import java.util.List;
...@@ -34,7 +33,7 @@ import java.util.List; ...@@ -34,7 +33,7 @@ import java.util.List;
*/ */
public interface TEmpDisabilityInfoService extends IService<TEmpDisabilityInfo> { public interface TEmpDisabilityInfoService extends IService<TEmpDisabilityInfo> {
R<List<ErrorMessage>> importTmpDisability(List<EmpDisabilityExcelVO> excelVOList, BindingResult bindingResult); void importTmpDisability(List<EmpDisabilityExcelVO> excelVOList, List<ErrorMessage> errorMessages);
R<Boolean> saveDiy(TEmpDisabilityInfo tEmpDisabilityInfo); R<Boolean> saveDiy(TEmpDisabilityInfo tEmpDisabilityInfo);
} }
...@@ -18,12 +18,11 @@ ...@@ -18,12 +18,11 @@
package com.yifu.cloud.plus.v1.yifu.archives.service; package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpEducation; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpEducation;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationExcelVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationExcelVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationUpdateExcelVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationUpdateExcelVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import org.springframework.validation.BindingResult;
import java.util.List; import java.util.List;
...@@ -35,13 +34,13 @@ import java.util.List; ...@@ -35,13 +34,13 @@ import java.util.List;
*/ */
public interface TEmpEducationService extends IService<TEmpEducation> { public interface TEmpEducationService extends IService<TEmpEducation> {
R<List<ErrorMessage>> importEmpEducation(List<EmpEducationExcelVO> excelVOList, BindingResult bindingResult); void importEmpEducation(List<EmpEducationExcelVO> excelVOList, List<ErrorMessage> errorMessageList);
R<Boolean> updateByIdDiy(TEmpEducation tEmpEducation); R<Boolean> updateByIdDiy(TEmpEducation tEmpEducation);
R<Boolean> saveDiy(TEmpEducation tEmpEducation); R<Boolean> saveDiy(TEmpEducation tEmpEducation);
R<List<ErrorMessage>> importEmpEducationUpdate(List<EmpEducationUpdateExcelVo> excelVOList, BindingResult bindingResult); void importEmpEducationUpdate(List<EmpEducationUpdateExcelVo> excelVOList, List<ErrorMessage> errorMessageList);
R<Boolean> insertEducationOfEmp(TEmpEducation education); R<Boolean> insertEducationOfEmp(TEmpEducation education);
} }
...@@ -18,11 +18,10 @@ ...@@ -18,11 +18,10 @@
package com.yifu.cloud.plus.v1.yifu.archives.service; package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpFamily; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpFamily;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpFamilyExcelVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpFamilyExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import org.springframework.validation.BindingResult;
import java.util.List; import java.util.List;
...@@ -34,7 +33,9 @@ import java.util.List; ...@@ -34,7 +33,9 @@ import java.util.List;
*/ */
public interface TEmpFamilyService extends IService<TEmpFamily> { public interface TEmpFamilyService extends IService<TEmpFamily> {
R<List<ErrorMessage>> importEmpFamily(List<EmpFamilyExcelVO> excelVOList, BindingResult bindingResult); void importEmpFamily(List<EmpFamilyExcelVO> excelVOList,List<ErrorMessage> errorMessageList);
String checkRepeat(String empIdcard, String familyName, String updateId); String checkRepeat(String empIdcard, String familyName, String updateId);
R<Boolean> removeByIdsDiy(List<String> idList);
} }
...@@ -18,9 +18,9 @@ ...@@ -18,9 +18,9 @@
package com.yifu.cloud.plus.v1.yifu.archives.service; package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpProfessionalQualification; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpProfessionalQualification;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpCertificateExcelVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpCertificateExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
...@@ -36,5 +36,5 @@ public interface TEmpProfessionalQualificationService extends IService<TEmpProfe ...@@ -36,5 +36,5 @@ public interface TEmpProfessionalQualificationService extends IService<TEmpProfe
R<Boolean> saveDiy(TEmpProfessionalQualification tEmpProfessionalQualification); R<Boolean> saveDiy(TEmpProfessionalQualification tEmpProfessionalQualification);
R<List<ErrorMessage>> importEmpCertificate(List<EmpCertificateExcelVO> excelVOList, BindingResult bindingResult); void importEmpCertificate(List<EmpCertificateExcelVO> excelVOList, List<ErrorMessage> errorMessageList);
} }
...@@ -18,11 +18,10 @@ ...@@ -18,11 +18,10 @@
package com.yifu.cloud.plus.v1.yifu.archives.service; package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpWorkRecording; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpWorkRecording;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpWorkRecordExcelVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpWorkRecordExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import org.springframework.validation.BindingResult;
import java.util.List; import java.util.List;
...@@ -34,7 +33,7 @@ import java.util.List; ...@@ -34,7 +33,7 @@ import java.util.List;
*/ */
public interface TEmpWorkRecordingService extends IService<TEmpWorkRecording> { public interface TEmpWorkRecordingService extends IService<TEmpWorkRecording> {
R<List<ErrorMessage>> importEmpWorkRecord(List<EmpWorkRecordExcelVO> excelVOList, BindingResult bindingResult); void importEmpWorkRecord(List<EmpWorkRecordExcelVO> excelVOList,List<ErrorMessage> errorMessageList);
R<Boolean> updateByIdDiy(TEmpWorkRecording tEmpWorkRecording); R<Boolean> updateByIdDiy(TEmpWorkRecording tEmpWorkRecording);
......
...@@ -17,10 +17,8 @@ ...@@ -17,10 +17,8 @@
package com.yifu.cloud.plus.v1.yifu.archives.service.impl; package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpDisabilityInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpDisabilityInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TAttaInfoMapper; import com.yifu.cloud.plus.v1.yifu.archives.mapper.TAttaInfoMapper;
...@@ -31,11 +29,11 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpDisabilityExcelVO; ...@@ -31,11 +29,11 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpDisabilityExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes; import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils; import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.BindingResult;
import java.util.*; import java.util.*;
...@@ -60,74 +58,54 @@ public class TEmpDisabilityInfoServiceImpl extends ServiceImpl<TEmpDisabilityInf ...@@ -60,74 +58,54 @@ public class TEmpDisabilityInfoServiceImpl extends ServiceImpl<TEmpDisabilityInf
* @return * @return
**/ **/
@Override @Override
public R<List<ErrorMessage>> importTmpDisability(List<EmpDisabilityExcelVO> excelVOList, BindingResult bindingResult) { public void importTmpDisability(List<EmpDisabilityExcelVO> excelVOList, List<ErrorMessage> errorMessageList) {
// 通用校验获取失败的数据
List<ErrorMessage> errorList = (List<ErrorMessage>) bindingResult.getTarget();
Map<Long,ErrorMessage> errorMsgMap = new HashMap<>();
if (Common.isNotNull(errorList)){
errorList.stream().forEach(errorMessage -> errorMsgMap.put(errorMessage.getLineNum(),errorMessage));
}
// 个性化校验逻辑 // 个性化校验逻辑
List<TEmpDisabilityInfo> list = this.list(); List<TEmpDisabilityInfo> list = this.list();
TEmployeeInfo emp; TEmployeeInfo emp;
TEmpDisabilityInfo exist; TEmpDisabilityInfo exist;
Set<String> errorMsg; ErrorMessage errorMsg;
List<ErrorMessage> temp = new ArrayList<>();
ErrorMessage errorMessage;
// 执行数据插入操作 组装 // 执行数据插入操作 组装
for (int i = 0; i < excelVOList.size(); i++) { for (int i = 0; i < excelVOList.size(); i++) {
// 已有验证报错直接下一个 // 已有验证报错直接下一个
errorMessage = errorMsgMap.get(i+2);
if (Common.isNotNull(errorMessage)){
temp.add(errorMessage);
errorMsgMap.remove(i+2);
continue;
}
errorMsg = new HashSet<>();
EmpDisabilityExcelVO excel = excelVOList.get(i); EmpDisabilityExcelVO excel = excelVOList.get(i);
emp = employeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda() emp = employeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda()
.eq(TEmployeeInfo::getEmpIdcard,excel.getEmpIdcard()) .eq(TEmployeeInfo::getEmpIdcard,excel.getEmpIdcard())
.eq(TEmployeeInfo::getDeleteFlag,CommonConstants.ZERO_STRING) .eq(TEmployeeInfo::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
checkRes(list, emp, errorMsg, excel); errorMsg = checkRes(list, emp, excel);
if (Common.isNotNull(errorMsg)){
errorMessageList.add(errorMsg);
continue;
}
exist = baseMapper.selectOne(Wrappers.<TEmpDisabilityInfo>query().lambda() exist = baseMapper.selectOne(Wrappers.<TEmpDisabilityInfo>query().lambda()
.eq(TEmpDisabilityInfo::getEmpIdcard,excel.getEmpIdcard()) .eq(TEmpDisabilityInfo::getEmpIdcard,excel.getEmpIdcard())
.eq(TEmpDisabilityInfo::getDisabilityName,excel.getDisabilityName()) .eq(TEmpDisabilityInfo::getDisabilityName,excel.getDisabilityName())
.eq(TEmpDisabilityInfo::getDeleteFlag,CommonConstants.ZERO_STRING) .eq(TEmpDisabilityInfo::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(exist)){ if (Common.isNotNull(exist)){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_DISABILITY_NAME_EXISTING, excel.getEmpName())); errorMessageList.add(new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_DISABILITY_NAME_EXISTING)));
} }
// 数据合法情况 // 数据合法情况
if (CollUtil.isEmpty(errorMsg)) { // 数据合法情况
insertExcelPost(excel,emp); insertExcel(excel,emp);
errorMsg.add(CommonConstants.SAVE_SUCCESS); errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.SAVE_SUCCESS));
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
} else {
// 数据不合法
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
}
} }
temp.addAll(errorMsgMap.values());
return R.ok(temp);
} }
private void checkRes(List<TEmpDisabilityInfo> list, TEmployeeInfo emp, Set<String> errorMsg, EmpDisabilityExcelVO excel) { private ErrorMessage checkRes(List<TEmpDisabilityInfo> list, TEmployeeInfo emp,EmpDisabilityExcelVO excel) {
if (Common.isEmpty(emp)){ if (Common.isEmpty(emp)){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_NOT_EXIST, excel.getEmpIdcard())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_NOT_EXIST));
return;
} }
if (CommonConstants.ONE_STRING.equals(emp.getFileStatus())){ if (CommonConstants.ONE_STRING.equals(emp.getFileStatus())){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_REDUCED, excel.getEmpIdcard())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_REDUCED));
return;
} }
// 检查添加是否已经存在 // 检查添加是否已经存在
boolean match = list.stream().anyMatch(info -> excel.getDisabilityName().equals(info.getDisabilityName()) boolean match = list.stream().anyMatch(info -> excel.getDisabilityName().equals(info.getDisabilityName())
&& excel.getEmpIdcard().equals(info.getEmpIdcard())); && excel.getEmpIdcard().equals(info.getEmpIdcard()));
if (match) { if (match) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_DISABILITY_NAME_EXISTING, excel.getEmpName())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_DISABILITY_NAME_EXISTING));
return;
} }
return null;
} }
@Override @Override
public R<Boolean> saveDiy(TEmpDisabilityInfo tEmpDisabilityInfo) { public R<Boolean> saveDiy(TEmpDisabilityInfo tEmpDisabilityInfo) {
...@@ -149,7 +127,7 @@ public class TEmpDisabilityInfoServiceImpl extends ServiceImpl<TEmpDisabilityInf ...@@ -149,7 +127,7 @@ public class TEmpDisabilityInfoServiceImpl extends ServiceImpl<TEmpDisabilityInf
/** /**
* 插入excel * 插入excel
*/ */
private void insertExcelPost(EmpDisabilityExcelVO excel, TEmployeeInfo emp) { private void insertExcel(EmpDisabilityExcelVO excel, TEmployeeInfo emp) {
TEmpDisabilityInfo insert = new TEmpDisabilityInfo(); TEmpDisabilityInfo insert = new TEmpDisabilityInfo();
BeanUtil.copyProperties(excel, insert); BeanUtil.copyProperties(excel, insert);
insert.setDeleteFlag(CommonConstants.ZERO_STRING); insert.setDeleteFlag(CommonConstants.ZERO_STRING);
......
...@@ -20,8 +20,8 @@ import cn.hutool.core.bean.BeanUtil; ...@@ -20,8 +20,8 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpEducation; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpEducation;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpFamily;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TAttaInfoMapper; import com.yifu.cloud.plus.v1.yifu.archives.mapper.TAttaInfoMapper;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmpEducationMapper; import com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmpEducationMapper;
...@@ -30,9 +30,11 @@ import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpEducationService; ...@@ -30,9 +30,11 @@ import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpEducationService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationExcelVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationExcelVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationUpdateExcelVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationUpdateExcelVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationUpdateVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpEducationUpdateVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpFamilyExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes; import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils; import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -63,57 +65,38 @@ public class TEmpEducationServiceImpl extends ServiceImpl<TEmpEducationMapper, T ...@@ -63,57 +65,38 @@ public class TEmpEducationServiceImpl extends ServiceImpl<TEmpEducationMapper, T
**/ **/
@Transactional @Transactional
@Override @Override
public R<List<ErrorMessage>> importEmpEducation(List<EmpEducationExcelVO> excelVOList, BindingResult bindingResult) { public void importEmpEducation(List<EmpEducationExcelVO> excelVOList, List<ErrorMessage> errorMessageList) {
// 通用校验获取失败的数据 /// 个性化校验逻辑
List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget();
Map<Long,ErrorMessage> errorMsgMap = new HashMap<>();
if (Common.isNotNull(errorMessageList)){
errorMessageList.stream().forEach(errorMessage -> errorMsgMap.put(errorMessage.getLineNum(),errorMessage));
}
// 个性化校验逻辑
List<TEmpEducation> list = this.list(); List<TEmpEducation> list = this.list();
TEmployeeInfo emp; TEmployeeInfo emp;
TEmpEducation exist; TEmpEducation exist;
Set<String> errorMsg; ErrorMessage errorMsg;
ErrorMessage errorMessage;
List<ErrorMessage> temp = new ArrayList<>();
// 执行数据插入操作 组装 // 执行数据插入操作 组装
for (int i = 0; i < excelVOList.size(); i++) { for (int i = 0; i < excelVOList.size(); i++) {
errorMessage = errorMsgMap.get(i+2);
// 已有验证报错直接下一个 // 已有验证报错直接下一个
if (Common.isNotNull(errorMsgMap.get(i+2))){
temp.add(errorMessage);
errorMsgMap.remove(i+2);
continue;
}
errorMsg = new HashSet<>();
EmpEducationExcelVO excel = excelVOList.get(i); EmpEducationExcelVO excel = excelVOList.get(i);
emp = employeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda() emp = employeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda()
.eq(TEmployeeInfo::getEmpIdcard,excel.getEmpIdcard()) .eq(TEmployeeInfo::getEmpIdcard,excel.getEmpIdcard())
.eq(TEmployeeInfo::getDeleteFlag, CommonConstants.ZERO_STRING) .eq(TEmployeeInfo::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
checkRes(emp, errorMsg, excel, list); errorMsg = checkRes(emp, excel,list);
if (Common.isNotNull(errorMsg)){
errorMessageList.add(errorMsg);
continue;
}
exist = baseMapper.selectOne(Wrappers.<TEmpEducation>query().lambda() exist = baseMapper.selectOne(Wrappers.<TEmpEducation>query().lambda()
.eq(TEmpEducation::getEmpIdcard,excel.getEmpIdcard()) .eq(TEmpEducation::getEmpIdcard,excel.getEmpIdcard())
.eq(TEmpEducation::getEducationName,excel.getEducationName()) .eq(TEmpEducation::getEducationName,excel.getEducationName())
.eq(TEmpEducation::getDeleteFlag,CommonConstants.ZERO_STRING) .eq(TEmpEducation::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(exist)){ if (Common.isNotNull(exist)){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_EDUCATION_EXISTING, excel.getEducationName())); errorMessageList.add(new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_EDUCATION_EXISTING)));
} }
// 数据合法情况 // 数据合法情况
if (CollUtil.isEmpty(errorMsg)) {
insertExcel(excel,emp); insertExcel(excel,emp);
errorMsg.add(CommonConstants.SAVE_SUCCESS); errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.SAVE_SUCCESS));
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
} else {
// 数据不合法
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
} }
} }
temp.addAll(errorMsgMap.values());
return R.ok(temp);
}
/** /**
* @Author fxj * @Author fxj
...@@ -170,39 +153,27 @@ public class TEmpEducationServiceImpl extends ServiceImpl<TEmpEducationMapper, T ...@@ -170,39 +153,27 @@ public class TEmpEducationServiceImpl extends ServiceImpl<TEmpEducationMapper, T
* @Date 16:25 2022/6/20 * @Date 16:25 2022/6/20
**/ **/
@Override @Override
public R<List<ErrorMessage>> importEmpEducationUpdate(List<EmpEducationUpdateExcelVo> excelVOList, BindingResult bindingResult) { public void importEmpEducationUpdate(List<EmpEducationUpdateExcelVo> excelVOList, List<ErrorMessage> errorMessageList) {
// 通用校验获取失败的数据 List<TEmpEducation> list = this.list();
List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget(); TEmployeeInfo emp;
Map<Long,ErrorMessage> errorMsgMap = new HashMap<>(); TEmpEducation exist;
if (Common.isNotNull(errorMessageList)){ ErrorMessage errorMsg;
errorMessageList.stream().forEach(errorMessage -> errorMsgMap.put(errorMessage.getLineNum(),errorMessage));
}
// 个性化校验逻辑
Set<String> errorMsg;
ErrorMessage errorMessage;
List<ErrorMessage> temp = new ArrayList<>();
// 执行数据插入操作 组装 // 执行数据插入操作 组装
for (int i = 0; i < excelVOList.size(); i++) { for (int i = 0; i < excelVOList.size(); i++) {
// 已有验证报错直接下一个 // 已有验证报错直接下一个
errorMessage = errorMsgMap.get(i+2);
if (Common.isNotNull(errorMessage)){
temp.add(errorMessage);
continue;
}
errorMsg = new HashSet<>();
EmpEducationUpdateExcelVo excel = excelVOList.get(i); EmpEducationUpdateExcelVo excel = excelVOList.get(i);
exist = baseMapper.selectOne(Wrappers.<TEmpEducation>query().lambda()
.eq(TEmpEducation::getEducationName,excel.getEducationName())
.eq(TEmpEducation::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(exist)){
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_EDUCATION_EXISTING)));
}
// 数据合法情况 // 数据合法情况
if (CollUtil.isEmpty(errorMsg)) {
updateExcel(excel); updateExcel(excel);
errorMsg.add(CommonConstants.UPDATE_SUCCESS); errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.UPDATE_SUCCESS));
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
} else {
// 数据不合法
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
}
} }
temp.addAll(errorMsgMap.values());
return R.ok(temp);
} }
private void updateExcel(EmpEducationUpdateExcelVo excel) { private void updateExcel(EmpEducationUpdateExcelVo excel) {
...@@ -213,23 +184,21 @@ public class TEmpEducationServiceImpl extends ServiceImpl<TEmpEducationMapper, T ...@@ -213,23 +184,21 @@ public class TEmpEducationServiceImpl extends ServiceImpl<TEmpEducationMapper, T
this.updateById(update); this.updateById(update);
} }
private void checkRes(TEmployeeInfo emp, Set<String> errorMsg, EmpEducationExcelVO excel, List<TEmpEducation> list) { private ErrorMessage checkRes(TEmployeeInfo emp,EmpEducationExcelVO excel, List<TEmpEducation> list) {
if (Common.isEmpty(emp)){ if (Common.isEmpty(emp)){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_NOT_EXIST, excel.getEmpIdcard())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_NOT_EXIST));
return;
} }
if (CommonConstants.ONE_STRING.equals(emp.getFileStatus())){ if (CommonConstants.ONE_STRING.equals(emp.getFileStatus())){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_REDUCED, excel.getEmpIdcard())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_REDUCED));
return;
} }
// 检查添加是否已经存在 // 检查添加是否已经存在
boolean match = list.stream().anyMatch(info -> excel.getEducationName().equals(info.getEducationName()) boolean match = list.stream().anyMatch(info -> excel.getEducationName().equals(info.getEducationName())
&& excel.getEmpIdcard().equals(info.getEmpIdcard())); && excel.getEmpIdcard().equals(info.getEmpIdcard()));
if (match) { if (match) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_EDUCATION_EXISTING, excel.getEmpName())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_EDUCATION_EXISTING));
return;
} }
return null;
} }
private void updateEducationOfEmp(TEmpEducation education) { private void updateEducationOfEmp(TEmpEducation education) {
......
...@@ -17,12 +17,12 @@ ...@@ -17,12 +17,12 @@
package com.yifu.cloud.plus.v1.yifu.archives.service.impl; package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpFamily; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpFamily;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmpFamilyMapper; import com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmpFamilyMapper;
...@@ -32,11 +32,12 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpFamilyExcelVO; ...@@ -32,11 +32,12 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpFamilyExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes; import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils; import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.BindingResult; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
...@@ -58,76 +59,58 @@ public class TEmpFamilyServiceImpl extends ServiceImpl<TEmpFamilyMapper, TEmpFam ...@@ -58,76 +59,58 @@ public class TEmpFamilyServiceImpl extends ServiceImpl<TEmpFamilyMapper, TEmpFam
* @Param * @Param
* @return * @return
**/ **/
@Transactional
@Override @Override
public R<List<ErrorMessage>> importEmpFamily(List<EmpFamilyExcelVO> excelVOList, BindingResult bindingResult) { public void importEmpFamily(List<EmpFamilyExcelVO> excelVOList,List<ErrorMessage> errorMessageList) {
// 通用校验获取失败的数据
List<ErrorMessage> errorList = (List<ErrorMessage>) bindingResult.getTarget();
Map<Long,ErrorMessage> errorMsgMap = new HashMap<>();
if (Common.isNotNull(errorList)){
errorList.stream().forEach(errorMessage -> errorMsgMap.put(errorMessage.getLineNum(),errorMessage));
}
// 个性化校验逻辑 // 个性化校验逻辑
List<TEmpFamily> list = this.list(); List<TEmpFamily> list = this.list();
TEmployeeInfo emp; TEmployeeInfo emp;
TEmpFamily exist; TEmpFamily exist;
Set<String> errorMsg; ErrorMessage errorMsg;
List<ErrorMessage> temp = new ArrayList<>();
ErrorMessage errorMessage;
// 执行数据插入操作 组装 // 执行数据插入操作 组装
for (int i = 0; i < excelVOList.size(); i++) { for (int i = 0; i < excelVOList.size(); i++) {
// 已有验证报错直接下一个 // 已有验证报错直接下一个
errorMessage = errorMsgMap.get(i+2);
if (Common.isNotNull(errorMessage)){
temp.add(errorMessage);
errorMsgMap.remove(i+2);
continue;
}
errorMsg = new HashSet<>();
EmpFamilyExcelVO excel = excelVOList.get(i); EmpFamilyExcelVO excel = excelVOList.get(i);
emp = employeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda() emp = employeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda()
.eq(TEmployeeInfo::getEmpIdcard,excel.getEmpIdcard()) .eq(TEmployeeInfo::getEmpIdcard,excel.getEmpIdcard())
.eq(TEmployeeInfo::getDeleteFlag,CommonConstants.ZERO_STRING) .eq(TEmployeeInfo::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
checkRes(list, emp, errorMsg, excel); errorMsg = checkRes(list, emp, excel);
if (Common.isNotNull(errorMsg)){
errorMessageList.add(errorMsg);
continue;
}
exist = baseMapper.selectOne(Wrappers.<TEmpFamily>query().lambda() exist = baseMapper.selectOne(Wrappers.<TEmpFamily>query().lambda()
.eq(TEmpFamily::getEmpIdcard,excel.getEmpIdcard()) .eq(TEmpFamily::getEmpIdcard,excel.getEmpIdcard())
.eq(TEmpFamily::getFamilyName,excel.getFamilyName()) .eq(TEmpFamily::getFamilyName,excel.getFamilyName())
.eq(TEmpFamily::getDeleteFlag,CommonConstants.ZERO_STRING) .eq(TEmpFamily::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(exist)){ if (Common.isNotNull(exist)){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_FAMILY_NAME_EXISTING, excel.getFamilyName())); errorMessageList.add(new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_FAMILY_NAME_EXISTING)));
continue;
} }
// 数据合法情况 // 数据合法情况
if (CollUtil.isEmpty(errorMsg)) { insertExcel(excel,emp);
insertExcelPost(excel,emp); errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.SAVE_SUCCESS));
errorMsg.add(CommonConstants.SAVE_SUCCESS);
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
} else {
// 数据不合法
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
} }
} }
temp.addAll(errorMsgMap.values());
return R.ok(temp);
}
private void checkRes(List<TEmpFamily> list, TEmployeeInfo emp, Set<String> errorMsg, EmpFamilyExcelVO excel) { private ErrorMessage checkRes(List<TEmpFamily> list, TEmployeeInfo emp, EmpFamilyExcelVO excel) {
if (Common.isEmpty(emp)){ if (Common.isEmpty(emp)){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_NOT_EXIST, excel.getEmpIdcard())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_NOT_EXIST));
return;
} }
if (CommonConstants.ONE_STRING.equals(emp.getFileStatus())){ if (CommonConstants.ONE_STRING.equals(emp.getFileStatus())){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_REDUCED, excel.getEmpIdcard())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_REDUCED));
return;
} }
// 检查添加是否已经存在 // 检查添加是否已经存在
boolean match = list.stream().anyMatch(info -> excel.getFamilyName().equals(info.getFamilyName()) boolean match = list.stream().anyMatch(info -> excel.getFamilyName().equals(info.getFamilyName())
&& excel.getEmpIdcard().equals(info.getEmpIdcard())); && excel.getEmpIdcard().equals(info.getEmpIdcard()));
if (match) { if (match) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_FAMILY_NAME_EXISTING, excel.getFamilyName())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_FAMILY_NAME_EXISTING));
return;
} }
return null;
} }
@Override @Override
...@@ -149,10 +132,17 @@ public class TEmpFamilyServiceImpl extends ServiceImpl<TEmpFamilyMapper, TEmpFam ...@@ -149,10 +132,17 @@ public class TEmpFamilyServiceImpl extends ServiceImpl<TEmpFamilyMapper, TEmpFam
return null; return null;
} }
@Override
public R<Boolean> removeByIdsDiy(List<String> idList) {
LambdaUpdateWrapper<TEmpFamily> updateWrapper = new UpdateWrapper<TEmpFamily>().lambda();
updateWrapper.set(TEmpFamily::getDeleteFlag,CommonConstants.ONE_STRING).in(TEmpFamily::getId,idList);
return R.ok(this.update(updateWrapper));
}
/** /**
* 插入excel family * 插入excel family
*/ */
private void insertExcelPost(EmpFamilyExcelVO excel,TEmployeeInfo emp) { private void insertExcel(EmpFamilyExcelVO excel, TEmployeeInfo emp) {
TEmpFamily insert = new TEmpFamily(); TEmpFamily insert = new TEmpFamily();
BeanUtil.copyProperties(excel, insert); BeanUtil.copyProperties(excel, insert);
insert.setDeleteFlag(CommonConstants.ZERO_STRING); insert.setDeleteFlag(CommonConstants.ZERO_STRING);
......
...@@ -17,10 +17,8 @@ ...@@ -17,10 +17,8 @@
package com.yifu.cloud.plus.v1.yifu.archives.service.impl; package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpProfessionalQualification; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpProfessionalQualification;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TAttaInfoMapper; import com.yifu.cloud.plus.v1.yifu.archives.mapper.TAttaInfoMapper;
...@@ -31,11 +29,11 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpCertificateExcelVO; ...@@ -31,11 +29,11 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpCertificateExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes; import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils; import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.BindingResult;
import java.util.*; import java.util.*;
...@@ -70,61 +68,41 @@ public class TEmpProfessionalQualificationServiceImpl extends ServiceImpl<TEmpPr ...@@ -70,61 +68,41 @@ public class TEmpProfessionalQualificationServiceImpl extends ServiceImpl<TEmpPr
} }
@Override @Override
public R<List<ErrorMessage>> importEmpCertificate(List<EmpCertificateExcelVO> excelVOList, BindingResult bindingResult) { public void importEmpCertificate(List<EmpCertificateExcelVO> excelVOList, List<ErrorMessage> errorMessageList) {
// 通用校验获取失败的数据
List<ErrorMessage> errorList = (List<ErrorMessage>) bindingResult.getTarget();
Map<Long,ErrorMessage> errorMsgMap = new HashMap<>();
if (Common.isNotNull(errorList)){
errorList.stream().forEach(errorMessage -> errorMsgMap.put(errorMessage.getLineNum(),errorMessage));
}
// 个性化校验逻辑
List<TEmpProfessionalQualification> list = this.list(); List<TEmpProfessionalQualification> list = this.list();
TEmployeeInfo emp; TEmployeeInfo emp;
TEmpProfessionalQualification exist; TEmpProfessionalQualification exist;
Set<String> errorMsg; ErrorMessage errorMsg;
List<ErrorMessage> temp = new ArrayList<>();
ErrorMessage errorMessage = null;
// 执行数据插入操作 组装 // 执行数据插入操作 组装
for (int i = 0; i < excelVOList.size(); i++) { for (int i = 0; i < excelVOList.size(); i++) {
// 已有验证报错直接下一个 // 已有验证报错直接下一个
errorMessage = errorMsgMap.get(i+2);
if (Common.isNotNull(errorMessage)){
temp.add(errorMessage);
errorMsgMap.remove(i+2);
continue;
}
errorMsg = new HashSet<>();
EmpCertificateExcelVO excel = excelVOList.get(i); EmpCertificateExcelVO excel = excelVOList.get(i);
emp = employeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda() emp = employeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda()
.eq(TEmployeeInfo::getEmpIdcard,excel.getEmpIdcard()) .eq(TEmployeeInfo::getEmpIdcard,excel.getEmpIdcard())
.eq(TEmployeeInfo::getDeleteFlag,CommonConstants.ZERO_STRING) .eq(TEmployeeInfo::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
checkRes(list, emp, errorMsg, excel); errorMsg = checkRes(list, emp, excel);
if (Common.isNotNull(errorMsg)){
errorMessageList.add(errorMsg);
continue;
}
exist = baseMapper.selectOne(Wrappers.<TEmpProfessionalQualification>query().lambda() exist = baseMapper.selectOne(Wrappers.<TEmpProfessionalQualification>query().lambda()
.eq(TEmpProfessionalQualification::getQualificationLevel,excel.getQualificationLevel()) .eq(TEmpProfessionalQualification::getQualificationLevel,excel.getQualificationLevel())
.eq(TEmpProfessionalQualification::getQualificationType,excel.getQualificationType()) .eq(TEmpProfessionalQualification::getQualificationType,excel.getQualificationType())
.eq(TEmpProfessionalQualification::getDeleteFlag,CommonConstants.ZERO_STRING) .eq(TEmpProfessionalQualification::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(exist)){ if (Common.isNotNull(exist)){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_CERTIFICATE_NAME_EXISTING, excel.getEmpName())); errorMessageList.add(new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_CERTIFICATE_NAME_EXISTING)));
} continue;
// 数据合法情况
if (CollUtil.isEmpty(errorMsg)) {
insertExcelPost(excel,emp);
errorMsg.add(CommonConstants.SAVE_SUCCESS);
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
} else {
// 数据不合法
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
} }
insertExcel(excel,emp);
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.SAVE_SUCCESS));
} }
temp.addAll(errorMsgMap.values());
return R.ok(temp);
} }
/** /**
* 插入excel * 插入excel
*/ */
private void insertExcelPost(EmpCertificateExcelVO excel,TEmployeeInfo emp) { private void insertExcel(EmpCertificateExcelVO excel, TEmployeeInfo emp) {
TEmpProfessionalQualification insert = new TEmpProfessionalQualification(); TEmpProfessionalQualification insert = new TEmpProfessionalQualification();
BeanUtil.copyProperties(excel, insert); BeanUtil.copyProperties(excel, insert);
insert.setDeleteFlag(CommonConstants.ZERO_STRING); insert.setDeleteFlag(CommonConstants.ZERO_STRING);
...@@ -132,14 +110,12 @@ public class TEmpProfessionalQualificationServiceImpl extends ServiceImpl<TEmpPr ...@@ -132,14 +110,12 @@ public class TEmpProfessionalQualificationServiceImpl extends ServiceImpl<TEmpPr
insert.setEmpId(emp.getId()); insert.setEmpId(emp.getId());
this.save(insert); this.save(insert);
} }
private void checkRes(List<TEmpProfessionalQualification> list, TEmployeeInfo emp, Set<String> errorMsg, EmpCertificateExcelVO excel) { private ErrorMessage checkRes(List<TEmpProfessionalQualification> list, TEmployeeInfo emp, EmpCertificateExcelVO excel) {
if (Common.isEmpty(emp)){ if (Common.isEmpty(emp)){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_NOT_EXIST, excel.getEmpIdcard())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_NOT_EXIST));
return;
} }
if (CommonConstants.ONE_STRING.equals(emp.getFileStatus())){ if (CommonConstants.ONE_STRING.equals(emp.getFileStatus())){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_REDUCED, excel.getEmpIdcard())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_REDUCED));
return;
} }
// 检查添加是否已经存在 // 检查添加是否已经存在
boolean match = list.stream().anyMatch(info -> excel.getQualificationLevel() boolean match = list.stream().anyMatch(info -> excel.getQualificationLevel()
...@@ -148,9 +124,9 @@ public class TEmpProfessionalQualificationServiceImpl extends ServiceImpl<TEmpPr ...@@ -148,9 +124,9 @@ public class TEmpProfessionalQualificationServiceImpl extends ServiceImpl<TEmpPr
&& excel.getQualificationType().equals(info.getQualificationType())); && excel.getQualificationType().equals(info.getQualificationType()));
if (match) { if (match) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_CERTIFICATE_NAME_EXISTING, excel.getEmpName())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_CERTIFICATE_NAME_EXISTING));
return;
} }
return null;
} }
} }
...@@ -22,7 +22,6 @@ import cn.hutool.core.util.StrUtil; ...@@ -22,7 +22,6 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpWorkRecording; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpWorkRecording;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TAttaInfoMapper; import com.yifu.cloud.plus.v1.yifu.archives.mapper.TAttaInfoMapper;
...@@ -33,13 +32,13 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpWorkRecordExcelVO; ...@@ -33,13 +32,13 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpWorkRecordExcelVO;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes; import com.yifu.cloud.plus.v1.yifu.common.core.exception.ErrorCodes;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils; import com.yifu.cloud.plus.v1.yifu.common.core.util.MsgUtils;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.BindingResult;
import java.util.*; import java.util.List;
/** /**
* 员工工作履历信息表 * 员工工作履历信息表
...@@ -56,36 +55,25 @@ public class TEmpWorkRecordingServiceImpl extends ServiceImpl<TEmpWorkRecordingM ...@@ -56,36 +55,25 @@ public class TEmpWorkRecordingServiceImpl extends ServiceImpl<TEmpWorkRecordingM
private final TAttaInfoMapper attaInfoMapper; private final TAttaInfoMapper attaInfoMapper;
@Override @Override
public R<List<ErrorMessage>> importEmpWorkRecord(List<EmpWorkRecordExcelVO> excelVOList, BindingResult bindingResult) { public void importEmpWorkRecord(List<EmpWorkRecordExcelVO> excelVOList, List<ErrorMessage> errorMessageList) {
// 通用校验获取失败的数据
List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget();
Map<Long,ErrorMessage> errorMsgMap = new HashMap<>();
if (Common.isNotNull(errorMessageList)){
errorMessageList.stream().forEach(errorMessage -> errorMsgMap.put(errorMessage.getLineNum(),errorMessage));
}
// 个性化校验逻辑 // 个性化校验逻辑
List<TEmpWorkRecording> list = this.list(); List<TEmpWorkRecording> list = this.list();
TEmployeeInfo emp; TEmployeeInfo emp;
TEmpWorkRecording exist; TEmpWorkRecording exist;
Set<String> errorMsg; ErrorMessage errorMsg;
ErrorMessage errorMessage;
List<ErrorMessage> temp = new ArrayList<>();
// 执行数据插入操作 组装 // 执行数据插入操作 组装
for (int i = 0; i < excelVOList.size(); i++) { for (int i = 0; i < excelVOList.size(); i++) {
errorMessage = errorMsgMap.get(i+2);
// 已有验证报错直接下一个 // 已有验证报错直接下一个
if (Common.isNotNull(errorMsgMap.get(i+2))){
temp.add(errorMessage);
errorMsgMap.remove(i+2);
continue;
}
errorMsg = new HashSet<>();
EmpWorkRecordExcelVO excel = excelVOList.get(i); EmpWorkRecordExcelVO excel = excelVOList.get(i);
emp = employeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda() emp = employeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda()
.eq(TEmployeeInfo::getEmpIdcard,excel.getEmpIdcard()) .eq(TEmployeeInfo::getEmpIdcard,excel.getEmpIdcard())
.eq(TEmployeeInfo::getDeleteFlag, CommonConstants.ZERO_STRING) .eq(TEmployeeInfo::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
checkRes(list, emp, errorMsg, excel); errorMsg = checkRes(list, emp, excel);
if (Common.isNotNull(errorMsg)){
errorMessageList.add(errorMsg);
continue;
}
exist = baseMapper.selectOne(Wrappers.<TEmpWorkRecording>query().lambda() exist = baseMapper.selectOne(Wrappers.<TEmpWorkRecording>query().lambda()
.eq(TEmpWorkRecording::getEmpIdcard,excel.getEmpIdcard()) .eq(TEmpWorkRecording::getEmpIdcard,excel.getEmpIdcard())
.eq(TEmpWorkRecording::getWorkUnit,excel.getWorkUnit()) .eq(TEmpWorkRecording::getWorkUnit,excel.getWorkUnit())
...@@ -93,21 +81,14 @@ public class TEmpWorkRecordingServiceImpl extends ServiceImpl<TEmpWorkRecordingM ...@@ -93,21 +81,14 @@ public class TEmpWorkRecordingServiceImpl extends ServiceImpl<TEmpWorkRecordingM
.eq(TEmpWorkRecording::getDeleteFlag,CommonConstants.ZERO_STRING) .eq(TEmpWorkRecording::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(exist)){ if (Common.isNotNull(exist)){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_WORK_RECORD_EXISTING, excel.getEmpName())); errorMessageList.add(new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_WORK_RECORD_EXISTING)));
continue;
} }
// 数据合法情况 // 数据合法情况
if (CollUtil.isEmpty(errorMsg)) {
insertExcelPost(excel,emp); insertExcelPost(excel,emp);
errorMsg.add(CommonConstants.SAVE_SUCCESS); errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.SAVE_SUCCESS));
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
} else {
// 数据不合法
temp.add(new ErrorMessage((long) (i + 2), errorMsg));
} }
} }
temp.addAll(errorMsgMap.values());
return R.ok(temp);
}
@Override @Override
public R<Boolean> updateByIdDiy(TEmpWorkRecording recording) { public R<Boolean> updateByIdDiy(TEmpWorkRecording recording) {
...@@ -153,14 +134,12 @@ public class TEmpWorkRecordingServiceImpl extends ServiceImpl<TEmpWorkRecordingM ...@@ -153,14 +134,12 @@ public class TEmpWorkRecordingServiceImpl extends ServiceImpl<TEmpWorkRecordingM
return null; return null;
} }
private void checkRes(List<TEmpWorkRecording> list, TEmployeeInfo emp, Set<String> errorMsg, EmpWorkRecordExcelVO excel) { private ErrorMessage checkRes(List<TEmpWorkRecording> list, TEmployeeInfo emp, EmpWorkRecordExcelVO excel) {
if (Common.isEmpty(emp)){ if (Common.isEmpty(emp)){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_NOT_EXIST, excel.getEmpIdcard())); return new com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_NOT_EXIST));
return;
} }
if (CommonConstants.ONE_STRING.equals(emp.getFileStatus())){ if (CommonConstants.ONE_STRING.equals(emp.getFileStatus())){
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_REDUCED, excel.getEmpIdcard())); return new com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_REDUCED));
return;
} }
// 检查添加是否已经存在 // 检查添加是否已经存在
boolean match = list.stream().anyMatch(info -> excel.getWorkDepart().equals(info.getWorkDepart()) boolean match = list.stream().anyMatch(info -> excel.getWorkDepart().equals(info.getWorkDepart())
...@@ -168,9 +147,9 @@ public class TEmpWorkRecordingServiceImpl extends ServiceImpl<TEmpWorkRecordingM ...@@ -168,9 +147,9 @@ public class TEmpWorkRecordingServiceImpl extends ServiceImpl<TEmpWorkRecordingM
&& excel.getEmpIdcard().equals(info.getEmpIdcard())); && excel.getEmpIdcard().equals(info.getEmpIdcard()));
if (match) { if (match) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_WORK_RECORD_EXISTING, excel.getEmpName())); return new ErrorMessage(excel.getRowIndex(),MsgUtils.getMessage(ErrorCodes.ARCHIVES_EMP_WORK_RECORD_EXISTING));
return;
} }
return null;
} }
/** /**
......
...@@ -240,4 +240,6 @@ public interface CommonConstants { ...@@ -240,4 +240,6 @@ public interface CommonConstants {
String IS_TRUE = "是"; String IS_TRUE = "是";
int SIX_INT = 6; int SIX_INT = 6;
int EIGHT_INT = 8; int EIGHT_INT = 8;
int BATCH_COUNT = 100;
String IMPORT_DATA_ANALYSIS_ERROR = "数据导入解析异常,请检查表数据格式";
} }
...@@ -11,6 +11,7 @@ import java.lang.annotation.Target; ...@@ -11,6 +11,7 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Target({ java.lang.annotation.ElementType.FIELD }) @Target({ java.lang.annotation.ElementType.FIELD })
public @interface ExcelAttribute { public @interface ExcelAttribute {
/** /**
* Excel中的列名 * Excel中的列名
* *
......
...@@ -37,10 +37,14 @@ public class ExcelUtil <T> implements Serializable { ...@@ -37,10 +37,14 @@ public class ExcelUtil <T> implements Serializable {
public ExcelUtil(Class<T> clazz) { public ExcelUtil(Class<T> clazz) {
this.clazz = clazz; this.clazz = clazz;
this.fields =clazz.getDeclaredFields();
} }
private Field[] fields;
public ErrorMessage checkEntity(T data , Integer rowNum) {
public void checkEntity(T data , Integer rowNum) { if (!Common.isNotNull(fields)){
return null;
}
//存储错误数据 //存储错误数据
Class<?> fieldType; Class<?> fieldType;
String error = ""; String error = "";
...@@ -48,15 +52,23 @@ public class ExcelUtil <T> implements Serializable { ...@@ -48,15 +52,23 @@ public class ExcelUtil <T> implements Serializable {
//临时存储单元格数据 //临时存储单元格数据
String tempStr = ""; String tempStr = "";
ErrorMessage errorTemp = null; ErrorMessage errorTemp = null;
errorMessageHashMap = new HashMap<>();
// 参数校验 // 参数校验
Field[] fields = data.getClass().getDeclaredFields();
ExcelAttribute attr = null; ExcelAttribute attr = null;
try{ try{
for (Field field : fields) { for (Field field : fields) {
field.getAnnotation(ExcelAttribute.class); if (field == null) {
continue;
}
// 设置实体类私有属性可访问
field.setAccessible(true);
attr = field.getAnnotation(ExcelAttribute.class);
if (Common.isEmpty(attr)){
continue;
}
// 单元格中的内容. // 单元格中的内容.
c = getStringValByObject(getFieldValueByName(attr.name(), data, DateUtil.ISO_EXPANDED_DATE_FORMAT)); c = getStringValByObject(field.get(data));
if (c != null) { if (c != null) {
c = c.trim(); c = c.trim();
} }
...@@ -66,24 +78,18 @@ public class ExcelUtil <T> implements Serializable { ...@@ -66,24 +78,18 @@ public class ExcelUtil <T> implements Serializable {
errorMessageHashMap = initErrorMessage(errorMessageHashMap, new ErrorMessage(rowNum, error), errorTemp); errorMessageHashMap = initErrorMessage(errorMessageHashMap, new ErrorMessage(rowNum, error), errorTemp);
continue; continue;
} }
if (field == null) {
continue;
}
//单元格数据为空不需要处理了 //单元格数据为空不需要处理了
if (!StringUtils.isNotBlank(c)) { if (!StringUtils.isNotBlank(c)) {
continue; continue;
} }
//如果是需要从字典表取值数据的话在这里处理即可 //如果是需要从字典表取值数据的话在这里处理即可
if (attr.isDataId()) {
if (Common.isNotNull(attr.readConverterExp())) {
tempStr = reverseByExp( c, attr.readConverterExp());
} else if (attr.isDataId()) {
if (Common.isNotNull(attr.dataType())) { if (Common.isNotNull(attr.dataType())) {
//非区域字段处理 TODO //非区域字段处理 TODO
Map<String,String> dicObj = (Map<String, String>) RedisUtil.redis.opsForValue().get(attr.dataType()); tempStr = getDicValue(c, tempStr, attr,rowNum,errorTemp);
for (Map.Entry<String,String> entry:dicObj.entrySet()){
if (Common.isNotNull(entry.getValue()) && entry.getValue().equals(c.trim())){
tempStr = entry.getKey();
break;
}
}
/*if (Common.isNotNull(attr.parentField())){ /*if (Common.isNotNull(attr.parentField())){
tempStr = dicMap.get(attr.dataType() + "_" + c.trim() + "_" + getFieldValueByName(attr.parentField(), entity, DateUtil.ISO_EXPANDED_DATE_FORMAT)); tempStr = dicMap.get(attr.dataType() + "_" + c.trim() + "_" + getFieldValueByName(attr.parentField(), entity, DateUtil.ISO_EXPANDED_DATE_FORMAT));
}else { }else {
...@@ -181,8 +187,65 @@ public class ExcelUtil <T> implements Serializable { ...@@ -181,8 +187,65 @@ public class ExcelUtil <T> implements Serializable {
} }
}catch (Exception e){ }catch (Exception e){
errorMessageHashMap = initErrorMessage(errorMessageHashMap, new ErrorMessage(rowNum, attr.name() + ":" + c.trim() + "校验异常,请联系管理人员"), errorTemp); errorMessageHashMap = initErrorMessage(errorMessageHashMap, new ErrorMessage(rowNum, attr.name() + ":" + c.trim() + "校验异常,请联系管理人员"), errorTemp);
}finally {
}
return errorMessageHashMap.get(rowNum);
}
/**
* 例如:解析值 0=男,1=女,2=未知
*
* @param propertyValue 参数值
* @param converterExp 翻译注解
* @return 解析后值
* @throws Exception
*/
public static String reverseByExp(String propertyValue, String converterExp) throws Exception {
try {
String[] convertSource = converterExp.split(",");
if(propertyValue.contains(",")){
String[] valueSource = propertyValue.split(",");
propertyValue = "";
for(String value:valueSource){
for (String item : convertSource) {
String[] itemArray = item.split("=");
if (itemArray[0].equals(value)) {
propertyValue += itemArray[1] + ",";
break;
}
}
}
if(propertyValue.endsWith(",")){
propertyValue = propertyValue.substring(CommonConstants.dingleDigitIntArray[0],propertyValue.length()-1);
}
}else{
for (String item : convertSource) {
String[] itemArray = item.split("=");
if (itemArray[0].equals(propertyValue)) {
return itemArray[1];
}
}
}
} catch (Exception e) {
throw e;
}
return propertyValue;
}
private String getDicValue(String c, String tempStr, ExcelAttribute attr,Integer rowNum, ErrorMessage errorTemp) {
Map<String,String> dicObj = (Map<String, String>) RedisUtil.redis.opsForValue().get(attr.dataType());
boolean flag = true;
for (Map.Entry<String,String> entry:dicObj.entrySet()){
if (Common.isNotNull(entry.getValue()) && entry.getValue().equals(c.trim())){
tempStr = entry.getKey();
flag = false;
break;
}
}
if (flag){
errorMessageHashMap = initErrorMessage(errorMessageHashMap, new ErrorMessage(rowNum, attr.name() + ":" + c.trim() + "校验异常,请联系管理人员"), errorTemp);
return CommonConstants.EMPTY_STRING;
} }
this.setErrorMessageHashMap(errorMessageHashMap); return tempStr;
} }
/** /**
...@@ -438,12 +501,12 @@ public class ExcelUtil <T> implements Serializable { ...@@ -438,12 +501,12 @@ public class ExcelUtil <T> implements Serializable {
private HashMap<Integer, ErrorMessage> initErrorMessage(HashMap<Integer, ErrorMessage> errorMessageHashMap, ErrorMessage errorMessage, ErrorMessage temp) { private HashMap<Integer, ErrorMessage> initErrorMessage(HashMap<Integer, ErrorMessage> errorMessageHashMap, ErrorMessage errorMessage, ErrorMessage temp) {
if (null != errorMessageHashMap && null != errorMessage) { if (null != errorMessageHashMap && null != errorMessage) {
temp = errorMessageHashMap.get(errorMessage.getLine()); temp = errorMessageHashMap.get(errorMessage.getLineNum());
if (null != temp) { if (null != temp) {
temp.setMessage(temp.getMessage() + CommonConstants.DOWN_LINE_STRING + errorMessage.getMessage()); temp.setMessage(temp.getMessage() + CommonConstants.DOWN_LINE_STRING + errorMessage.getMessage());
errorMessageHashMap.put(temp.getLine(), temp); errorMessageHashMap.put(temp.getLineNum(), temp);
} else { } else {
errorMessageHashMap.put(errorMessage.getLine(), errorMessage); errorMessageHashMap.put(errorMessage.getLineNum(), errorMessage);
} }
} }
return errorMessageHashMap; return errorMessageHashMap;
......
...@@ -12,7 +12,7 @@ public class ErrorMessage implements Serializable { ...@@ -12,7 +12,7 @@ public class ErrorMessage implements Serializable {
/** /**
* 行数或INDEX * 行数或INDEX
*/ */
private Integer line; private Integer lineNum;
//默认红色 success green //默认红色 success green
private String color = "red"; private String color = "red";
...@@ -26,18 +26,18 @@ public class ErrorMessage implements Serializable { ...@@ -26,18 +26,18 @@ public class ErrorMessage implements Serializable {
*/ */
private String message; private String message;
public ErrorMessage(Integer line, String message) { public ErrorMessage(Integer lineNum, String message) {
this.line = line; this.lineNum = lineNum;
this.message = message; this.message = message;
} }
public ErrorMessage(Integer line, String message, String color) { public ErrorMessage(Integer lineNum, String message, String color) {
this.line = line; this.lineNum = lineNum;
this.color = color; this.color = color;
this.message = message; this.message = message;
} }
public ErrorMessage(Integer line, String message, String color, String name) { public ErrorMessage(Integer lineNum, String message, String color, String name) {
this.line = line; this.lineNum = lineNum;
this.color = color; this.color = color;
this.message = message; this.message = message;
this.name= name; this.name= name;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment