From b0625931bc528429d592f642bdd759e7dbdfb1c3 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Tue, 19 Oct 2021 22:21:07 +0800
Subject: [PATCH] 1.保安员新增接口修改,单个新增保安员默认密码为身份证号后6位,账号为身份证号, 2.考试成绩可以按天导出 3.个人图片批量导入接口修改 4.保安员批量导入修改,如有重复的账号导入的跳过,导入完成后返回提示信息

---
 src/main/java/org/springblade/modules/exam/service/ExamScoreService.java          |    8 +
 src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java            |    7 +
 src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java    |   36 ++++---
 src/main/java/org/springblade/modules/exam/vo/ExamScoreVO.java                    |    8 +
 src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java |   11 ++
 src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java          |    5 
 src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml             |   72 ++++++++++++++
 src/main/java/org/springblade/modules/exam/excel/ExportExamScoreExcel.java        |   74 ++++++++++++++
 src/main/java/org/springblade/modules/system/controller/UserController.java       |   42 +++-----
 src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java    |   17 +++
 10 files changed, 236 insertions(+), 44 deletions(-)

diff --git a/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java b/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java
index 4c75148..dab0127 100644
--- a/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java
+++ b/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java
@@ -1,6 +1,7 @@
 package org.springblade.modules.exam.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
@@ -15,6 +16,7 @@
 import org.springblade.modules.exam.entity.ExamScore;
 import org.springblade.modules.exam.excel.ExamScoreExcel;
 import org.springblade.modules.exam.excel.ExamScoreImporter;
+import org.springblade.modules.exam.excel.ExportExamScoreExcel;
 import org.springblade.modules.exam.service.ExamPaperService;
 import org.springblade.modules.exam.service.ExamScoreService;
 import org.springblade.modules.exam.util.SecurityPaperUtil;
@@ -22,6 +24,7 @@
 import org.springblade.modules.exam.vo.UpdateParamVo;
 import org.springblade.modules.system.entity.Role;
 import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.excel.UserExcel;
 import org.springblade.modules.system.service.IRoleService;
 import org.springblade.modules.system.service.IUserService;
 import org.springblade.modules.system.vo.UserVO;
@@ -366,5 +369,17 @@
 		return R.status(examScoreService.refreshTrainExamInfo(updateParamVo));
 	}
 
-
+	/**
+	 * 导出成绩
+	 */
+	@GetMapping("export-examScore")
+	@ApiOperationSupport(order = 14)
+	@ApiOperation(value = "导出成绩")
+	public void exportExamScore(HttpServletResponse response,ExamScoreVO examScoreVO) {
+		System.out.println("examScoreVO = " + examScoreVO);
+		//按条件查询成绩数据
+		List<ExportExamScoreExcel> examScoreExcels = examScoreService.exportExamScoreList(examScoreVO);
+		//导出成绩集合数据
+		ExcelUtil.export(response, "成绩数据", "成绩数据表", examScoreExcels, ExportExamScoreExcel.class);
+	}
 }
diff --git a/src/main/java/org/springblade/modules/exam/excel/ExportExamScoreExcel.java b/src/main/java/org/springblade/modules/exam/excel/ExportExamScoreExcel.java
new file mode 100644
index 0000000..f62072e
--- /dev/null
+++ b/src/main/java/org/springblade/modules/exam/excel/ExportExamScoreExcel.java
@@ -0,0 +1,74 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.exam.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * ExamPaymentExcel
+ * @author zhongrj
+ * @since 2021-10-19
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class ExportExamScoreExcel implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	@ColumnWidth(30)
+	@ExcelProperty("考试名称")
+	private String examName;
+
+	@ColumnWidth(15)
+	@ExcelProperty("姓名")
+	private String securityName;
+
+	@ColumnWidth(20)
+	@ExcelProperty("身份证号码")
+	private String idCardNo;
+
+	@ColumnWidth(25)
+	@ExcelProperty("所属公司")
+	private String companyName;
+
+	@ColumnWidth(20)
+	@ExcelProperty("考试开始时间")
+	private String examTime;
+
+	@ColumnWidth(20)
+	@ExcelProperty("考试结束时间")
+	private String examEndTime;
+
+	@ColumnWidth(15)
+	@ExcelProperty("理论成绩")
+	private Integer theoryGrade;
+
+	@ColumnWidth(15)
+	@ExcelProperty("实操成绩")
+	private Integer learnGrade;
+
+	@ColumnWidth(15)
+	@ExcelProperty("总成绩")
+	private Integer allGrade;
+}
diff --git a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java
index 0b534a0..b70c398 100644
--- a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java
+++ b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.modules.exam.entity.ExamScore;
+import org.springblade.modules.exam.excel.ExportExamScoreExcel;
 import org.springblade.modules.exam.vo.ExamScoreVO;
 import org.springblade.modules.training.entity.TrainingRegistration;
 
@@ -88,4 +89,10 @@
 
 	List<ExamScore> getLheoryGradeLess60();
 
+	/**
+	 * 按条件查询成绩数据
+	 * @param examScoreVO
+	 * @return
+	 */
+	List<ExportExamScoreExcel> getExamScoreList(@Param("examScore") ExamScoreVO examScoreVO);
 }
diff --git a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml
index ff44c7d..00ae3b2 100644
--- a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml
+++ b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml
@@ -126,6 +126,9 @@
         <if test="examScore.qualified!=null">
             and es.qualified = #{examScore.qualified}
         </if>
+        <if test="examScore.examDate!=null">
+            and date_format(es.exam_time,'%Y-%m-%d') = #{examScore.examDate}
+        </if>
     </select>
 
     <!--考试成绩详情信息-->
@@ -315,4 +318,73 @@
     <select id="getLheoryGradeLess60" resultType="org.springblade.modules.exam.entity.ExamScore">
         select * from exam_score where all_grade &lt; 30
     </select>
+
+    <!--导出-按条件查询成绩数据-模拟考试-->
+    <select id="getExamScoreList" resultType="org.springblade.modules.exam.excel.ExportExamScoreExcel">
+        SELECT
+        ke.exam_name examName,bu.real_name securityName,bu.cardid idCardNo,
+        bd.dept_name companyName,
+        es.exam_time examTime,exam_end_time examEndTime,
+        es.theory_grade theoryGrade,es.learn_grade learnGrade,
+        all_grade allGrade
+         from
+        exam_score es
+        left join
+        ksxt_exam ke
+        on
+        ke.id = es.exam_id
+        left join
+        blade_user bu
+        on
+        es.user_id = bu.id
+        left join
+        blade_dept bd
+        on
+        bd.id = bu.dept_id
+        left join
+        sys_training_registration str
+        on
+        str.id = es.apply_id
+        where
+        1=1
+        and (str.is_exam = 2 or str.is_exam = 3)
+        <if test="examScore.examName!=null and  examScore.examName!=''">
+            and ke.exam_name like concat('%', #{examScore.examName},'%')
+        </if>
+        <if test="examScore.companyName!=null and  examScore.companyName!=''">
+            and bd.dept_name like concat('%', #{examScore.companyName},'%')
+        </if>
+        <if test="examScore.securityName!=null and  examScore.securityName!=''">
+            and bu.real_name like concat('%', #{examScore.securityName},'%')
+        </if>
+        <if test="examScore.account!=null and  examScore.account!=''">
+            and bu.account like concat('%', #{examScore.account},'%')
+        </if>
+        <if test="examScore.trainUnitId!=null">
+            and str.training_unit_id = #{examScore.trainUnitId}
+        </if>
+        <if test="examScore.userId!=null and  examScore.userId!=''">
+            and es.user_id = #{examScore.userId}
+        </if>
+        <if test="examScore.deptId!=null and  examScore.deptId!=''">
+            and bd.id = #{examScore.deptId}
+        </if>
+        <if test="examScore.isExam!=null and  examScore.isExam!=''">
+            and str.is_exam = #{examScore.isExam}
+        </if>
+        <if test="examScore.examType!=null and  examScore.examType!=''">
+            and ke.exam_type = #{examScore.examType}
+        </if>
+        <if test="examScore.candidateNo!=null and  examScore.candidateNo!=''">
+            and es.candidate_no = #{examScore.candidateNo}
+        </if>
+        <if test="examScore.qualified!=null">
+            and es.qualified = #{examScore.qualified}
+        </if>
+        <if test="examScore.examDate!=null and examScore.examDate!=''">
+            and date_format(es.exam_time,'%Y-%m-%d') = #{examScore.examDate}
+        </if>
+    </select>
+
+
 </mapper>
diff --git a/src/main/java/org/springblade/modules/exam/service/ExamScoreService.java b/src/main/java/org/springblade/modules/exam/service/ExamScoreService.java
index b16b015..e394b01 100644
--- a/src/main/java/org/springblade/modules/exam/service/ExamScoreService.java
+++ b/src/main/java/org/springblade/modules/exam/service/ExamScoreService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.modules.exam.entity.ExamScore;
 import org.springblade.modules.exam.excel.ExamScoreExcel;
+import org.springblade.modules.exam.excel.ExportExamScoreExcel;
 import org.springblade.modules.exam.vo.ExamScoreVO;
 import org.springblade.modules.exam.vo.UpdateParamVo;
 
@@ -74,4 +75,11 @@
 	 * @return
 	 */
 	boolean refreshTrainExamInfo(UpdateParamVo updateParamVo);
+
+	/**
+	 * 按条件查询成绩数据
+	 * @param examScoreVO
+	 * @return
+	 */
+	List<ExportExamScoreExcel> exportExamScoreList(ExamScoreVO examScoreVO);
 }
diff --git a/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java b/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
index 884a13b..cc973d8 100644
--- a/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
+++ b/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
@@ -14,6 +14,7 @@
 import org.springblade.modules.exam.entity.ExamScore;
 import org.springblade.modules.exam.entity.ExamSubjectChoices;
 import org.springblade.modules.exam.excel.ExamScoreExcel;
+import org.springblade.modules.exam.excel.ExportExamScoreExcel;
 import org.springblade.modules.exam.mapper.ExamScoreMapper;
 import org.springblade.modules.exam.service.ExamPaperService;
 import org.springblade.modules.exam.service.ExamScoreService;
@@ -531,4 +532,14 @@
 		}
 		return false;
 	}
+
+	/**
+	 * 按条件查询成绩数据
+	 * @param examScoreVO
+	 * @return
+	 */
+	@Override
+	public List<ExportExamScoreExcel> exportExamScoreList(ExamScoreVO examScoreVO) {
+		return baseMapper.getExamScoreList(examScoreVO);
+	}
 }
diff --git a/src/main/java/org/springblade/modules/exam/vo/ExamScoreVO.java b/src/main/java/org/springblade/modules/exam/vo/ExamScoreVO.java
index c763b64..0045c83 100644
--- a/src/main/java/org/springblade/modules/exam/vo/ExamScoreVO.java
+++ b/src/main/java/org/springblade/modules/exam/vo/ExamScoreVO.java
@@ -1,9 +1,12 @@
 package org.springblade.modules.exam.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import org.springblade.modules.exam.entity.ExamScore;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -56,4 +59,9 @@
 	 */
 	private Long trainUnitId;
 
+	/**
+	 * 考试时间
+	 */
+	private String examDate;
+
 }
diff --git a/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java b/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
index 1a8be40..5489e74 100644
--- a/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
+++ b/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
@@ -325,7 +325,8 @@
 
 		List<MultipartFile> fileList = new ArrayList<>();
 		//获取图片文件
-		fileList = fileUtil.getSubFiles(desPath+File.separator+namePath,fileList);
+//		fileList = fileUtil.getSubFiles(desPath+File.separator+namePath,fileList);
+		fileList = fileUtil.getSubFiles(desPath,fileList);
 		for (MultipartFile multipartFile : fileList){
 			if(multipartFile.getName().toLowerCase().endsWith(".png") || multipartFile.getName().toLowerCase().endsWith(".jpg")) {
 				String newName = "upload/picture/" + UUID.randomUUID().toString().replaceAll("-", "") + multipartFile.getName().substring(multipartFile.getName().lastIndexOf("."));
@@ -425,7 +426,7 @@
 
 		List<MultipartFile> fileList = new ArrayList<>();
 		//获取图片文件
-		fileList = fileUtil.getSubFiles(desPath+File.separator+namePath,fileList);
+		fileList = fileUtil.getSubFiles(desPath,fileList);
 		for (MultipartFile multipartFile : fileList){
 			if(multipartFile.getName().toLowerCase().endsWith(".png") || multipartFile.getName().toLowerCase().endsWith(".jpg")) {
 				String newName = "upload/picture/" + UUID.randomUUID().toString().replaceAll("-", "") + multipartFile.getName().substring(multipartFile.getName().lastIndexOf("."));
diff --git a/src/main/java/org/springblade/modules/system/controller/UserController.java b/src/main/java/org/springblade/modules/system/controller/UserController.java
index b34520c..6c4ee81 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -235,15 +235,7 @@
 		User user1 = userService.getById(user.getId());
 		user.setPassword(user1.getPassword());
 		userService.updateById(user);
-		Date birthday1 = user.getBirthday();
-		String birthday;
 		String rtime;
-		if (user.getBirthday() == null) {
-			birthday = null;
-		} else {
-			birthday = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getBirthday());
-		}
-
 		if (user.getRtime() == null) {
 			rtime = null;
 		} else {
@@ -602,10 +594,6 @@
 	public R securitySave(@Valid @RequestBody Map<String, Object> userMap) {
 		//获取user
 		User user = JSON.parseObject(JSON.toJSONString(userMap.get("user")), User.class);
-		//判断是否为空
-//		if (null!=user.getHold()){
-		//持证
-//			if (user.getHold().equals("1")){
 		//分配保安角色
 		Role role = new Role();
 		role.setRoleAlias("保安");
@@ -613,6 +601,7 @@
 		user.setRoleId(oneRole.getId().toString());
 		user.setDispatch("1");
 		user.setExaminationType("0");
+		user.setAccount(user.getCardid());
 
 		Integer userCount = userService.selectCount(user.getAccount());
 		if (userCount > 0 && Func.isEmpty(user.getId())) {
@@ -629,27 +618,20 @@
 //			}
 //		}
 		//密码加密
-		if (Func.isNotEmpty(user.getPassword())) {
-			user.setPassword(DigestUtil.encrypt(user.getPassword()));
+		if (Func.isNotEmpty(user.getCardid())) {
+//			user.setPassword(DigestUtil.encrypt(user.getPassword()));
+			//取身份证号码后6位作为密码
+			user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6)));
 		}
 		user.setTenantId("000000");
 		//用户新增
 		boolean status = userService.save(user);
-
-		String birthday;
 		String rtime;
-		if (user.getBirthday() == null) {
-			birthday = null;
-		} else {
-			birthday = new SimpleDateFormat("yyyy-MM-dd").format(user.getBirthday());
-		}
-
 		if (user.getRtime() == null) {
 			rtime = null;
 		} else {
 			rtime = new SimpleDateFormat("yyyy-MM-dd").format(user.getRtime());
 		}
-
 		//头像
 		if (null!=user.getAvatar() && !user.getAvatar().equals("")) {
 			user.setAvatar(FtpConfig.ip + user.getAvatar().substring(26));
@@ -662,9 +644,17 @@
 
 		String s = "insert into blade_user(id,tenant_id,account,password,name,real_name,avatar,email,phone,sex,role_id,dept_id,cardid,nativePlace,nation,fingerprint,education," +
 			"politicaloutlook,healstats,height,address,registered,rtime,securitynumber,hold,jurisdiction,examination_type,status,is_deleted,dispatch) " +
-			"values(" + "'" + user.getId() + "'" + "," + "'" + user.getTenantId() + "'" + "," + "'" + user.getAccount() + "'" + "," +
-			"'" + user.getPassword() + "'" + "," + "'" + user.getName() + "'" + "," + "'" + user.getRealName() + "'" + "," + "'" + user.getAvatar() + "'" + "," +
-			"'" + user.getEmail() + "'" + "," + "'" + user.getPhone() + "'" + "," + "'" + user.getSex() + "'" + "," + "'" + user.getRoleId() + "'" +
+			"values(" + "'" + user.getId() + "'" +
+			"," + "'" + user.getTenantId() + "'" +
+			"," + "'" + user.getAccount() + "'" +
+			"," + "'" + user.getPassword() + "'" +
+			"," + "'" + user.getName() + "'" +
+			"," + "'" + user.getRealName() + "'" +
+			"," + "'" + user.getAvatar() + "'" +
+			"," + "'" + user.getEmail() + "'" +
+			"," + "'" + user.getPhone() + "'" +
+			"," + "'" + user.getSex() + "'" +
+			"," + "'" + user.getRoleId() + "'" +
 			"," + "'" + user.getDeptId() + "'" +
 			"," + "'" + user.getCardid() + "'" +
 			"," + "'" + user.getNativeplace() + "'" +
diff --git a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
index 3a5192f..cff531d 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -17,20 +17,16 @@
 package org.springblade.modules.system.service.impl;
 
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.zxing.WriterException;
 import lombok.AllArgsConstructor;
-import org.springblade.common.cache.DictCache;
-import org.springblade.common.cache.ParamCache;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.common.cache.SysCache;
-import org.springblade.common.cache.UserCache;
 import org.springblade.common.constant.AgeUtil;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.constant.TenantConstant;
-import org.springblade.common.enums.DictEnum;
 import org.springblade.common.utils.QRCodeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
@@ -44,12 +40,9 @@
 import org.springblade.core.tool.utils.*;
 import org.springblade.modules.FTP.FtpUtil;
 import org.springblade.modules.auth.enums.UserEnum;
-import org.springblade.modules.dispatcher.service.IDispatcherService;
-import org.springblade.modules.dispatcher.vo.DispatcherUnitVO;
 import org.springblade.modules.dispatcher.vo.DispatcherVO;
 import org.springblade.modules.information.entity.Information;
 import org.springblade.modules.information.service.IInformationService;
-import org.springblade.modules.jurisdiction.entity.Jurisdiction;
 import org.springblade.modules.system.entity.*;
 import org.springblade.modules.system.excel.QrCodeExcel;
 import org.springblade.modules.system.excel.UserExcel;
@@ -68,8 +61,7 @@
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.*;
-
-import static org.springblade.common.constant.CommonConstant.DEFAULT_PARAM_PASSWORD;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * 服务实现类
@@ -388,8 +380,12 @@
 	}
 
 	@Override
-	@Transactional(rollbackFor = Exception.class)
+//	@Transactional(rollbackFor = Exception.class)
 	public void importUser(List<UserExcel> data, Boolean isCovered,String deptId) {
+		//将不能导入的保安员账号存起来
+		List<String> errorList = new ArrayList<>();
+		//导入状态,默认为true ,如果有一个出现问题则为 false
+		AtomicBoolean status = new AtomicBoolean(true);
 		data.forEach(userExcel -> {
 			User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
 			//设置部门id
@@ -397,18 +393,18 @@
 			if (null!=deptIds && !deptIds.equals("")) {
 				if (null != deptId && !deptId.equals("")) {
 					if (!deptId.equals(deptIds)) {
-						throw new ServiceException("不能导入不是本公司的保安员数据!");
+						throw new ServiceException("导入失败!不能导入不是本公司的保安员数据!");
 					}
 				}
 				user.setDeptId(deptIds);
 			}else {
 				//如果deptIds 为空,则说明还没有改公司
-				throw new ServiceException("公司名:"+user.getDeptId()+"不存在!");
+				throw new ServiceException("导入失败!公司名:["+user.getDeptId()+"]不存在!");
 			}
 			//判断当前用户是否已在本单位,如果是的更新数据
 			User user1 = new User();
 			user1.setAccount(user.getCardid());
-			System.out.println("user.getCardid() = " + user.getCardid());
+//			System.out.println("user.getCardid() = " + user.getCardid());
 			user1.setIsDeleted(0);
 			user1.setStatus(1);
 			User user2 = this.getOne(Condition.getQueryWrapper(user1));
@@ -453,7 +449,12 @@
 				//匹配组织机构是否一致,如果不一致
 				if(!user2.getDeptId().equals(user.getDeptId())){
 					Dept dept = deptService.getById(user2.getDeptId());
-					throw new ServiceException("用户:"+"["+user.getCardid()+"]"+"已在["+dept.getDeptName()+"]存在!");
+//					throw new ServiceException("用户:"+"["+user.getCardid()+"]"+"已在其他单位存在!");
+					status.set(false);
+					//加入集合
+					errorList.add(user.getCardid());
+					//forEach 只能使用 return 跳出本次循环
+					return;
 				}else {
 					//如果是一致,则更新用户数据
 					//判断是否持证
@@ -477,6 +478,11 @@
 				}
 			}
 		});
+		//如果所有数据导入有一个异常
+		if (!status.get()){
+			String errorAccount = StringUtils.join(errorList, "\\\n");
+			throw new ServiceException("用户:["+errorAccount+"]导入失败!已在其他单位存在!");
+		}
 	}
 
 //	@Override

--
Gitblit v1.9.3