Browse Source

增加批量保存学生接口

chenken 6 năm trước cách đây
mục cha
commit
748f9cf40b

+ 82 - 13
examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/provider/StudentOuterServiceProvider.java

@@ -2,6 +2,7 @@ package cn.com.qmth.examcloud.exchange.outer.api.provider;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.List;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -12,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.google.common.collect.Lists;
+
 import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 import cn.com.qmth.examcloud.commons.base.util.HttpClientUtil;
 import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
@@ -20,7 +23,12 @@ import cn.com.qmth.examcloud.core.basic.api.StudentCloudService;
 import cn.com.qmth.examcloud.core.basic.api.request.SaveStudentReq;
 import cn.com.qmth.examcloud.core.basic.api.response.SaveStudentResp;
 import cn.com.qmth.examcloud.exchange.outer.api.StudentOuterService;
+import cn.com.qmth.examcloud.exchange.outer.api.bean.Student4BatchBean;
+import cn.com.qmth.examcloud.exchange.outer.api.bean.StudentStatus4BatchBean;
+import cn.com.qmth.examcloud.exchange.outer.api.request.OuterBatchSaveStudentReq;
 import cn.com.qmth.examcloud.exchange.outer.api.request.OuterSaveStudentReq;
+import cn.com.qmth.examcloud.exchange.outer.api.response.BatchOuterSaveExamStudentResp;
+import cn.com.qmth.examcloud.exchange.outer.api.response.BatchOuterSaveStudentResp;
 import cn.com.qmth.examcloud.exchange.outer.api.response.OuterSaveStudentResp;
 import cn.com.qmth.examcloud.exchange.outer.service.FaceService;
 import io.swagger.annotations.Api;
@@ -68,8 +76,6 @@ public class StudentOuterServiceProvider extends ControllerSupport implements St
 			throw new StatusException("EX-1000001", "rootOrgId is wrong");
 		}
 
-		String identityNumber = req.getIdentityNumber();
-
 		SaveStudentReq request = new SaveStudentReq();
 		request.setIdentityNumber(req.getIdentityNumber());
 		request.setName(req.getName());
@@ -80,10 +86,32 @@ public class StudentOuterServiceProvider extends ControllerSupport implements St
 		request.setRemark(req.getRemark());
 		request.setRootOrgId(req.getRootOrgId());
 		request.setStudentCode(req.getStudentCode());
+		
+		return processOuterSaveStudentReq(request,req.getPhotoUrl(),req.getOperator());
+	}
+	
+	private OuterSaveStudentResp processOuterSaveStudentReq(SaveStudentReq saveStudentReq,String photoUrl,String operator){
+		
+		SaveStudentResp response = studentCloudService.saveStudent(saveStudentReq);
 
-		SaveStudentResp response = studentCloudService.saveStudent(request);
+		processPhotoUrl(saveStudentReq,photoUrl,operator);
 
-		String photoUrl = req.getPhotoUrl();
+		OuterSaveStudentResp resp = new OuterSaveStudentResp();
+		resp.setOrgId(response.getOrgId());
+		resp.setOrgName(response.getOrgName());
+		resp.setRootOrgId(response.getRootOrgId());
+		resp.setStudentId(response.getStudentId());
+		return resp;
+	}
+	
+	/**
+	 * 处理照片
+	 * @param req
+	 */
+	private void processPhotoUrl(SaveStudentReq request,String photoUrl,String operator){
+		Long rootOrgId = request.getRootOrgId();
+		String identityNumber = request.getIdentityNumber();
+		
 		if (StringUtils.isNotBlank(photoUrl)) {
 			byte[] bs = HttpClientUtil.get(photoUrl);
 
@@ -110,8 +138,7 @@ public class StudentOuterServiceProvider extends ControllerSupport implements St
 			}
 
 			try {
-				faceService.processFace(rootOrgId, identityNumber, fileSuffix, temp,
-						req.getOperator());
+				faceService.processFace(rootOrgId, identityNumber, fileSuffix, temp,operator);
 			} finally {
 				try {
 					FileUtils.forceDelete(temp);
@@ -120,13 +147,55 @@ public class StudentOuterServiceProvider extends ControllerSupport implements St
 				}
 			}
 		}
-
-		OuterSaveStudentResp resp = new OuterSaveStudentResp();
-		resp.setOrgId(response.getOrgId());
-		resp.setOrgName(response.getOrgName());
-		resp.setRootOrgId(response.getRootOrgId());
-		resp.setStudentId(response.getStudentId());
-		return resp;
+	}
+	
+	@ApiOperation(value = "批量保存学生信息", httpMethod = "POST")
+	@ApiResponses({
+			@ApiResponse(code = 200, message = "成功", response = BatchOuterSaveStudentResp.class),
+			@ApiResponse(code = 500, message = "系统异常(异常信息见响应体)", response = StatusResponse.class)})
+	@PostMapping("batchSaveStudent")
+	@Override
+	public BatchOuterSaveStudentResp batchSaveStudent(@RequestBody @ApiParam(required = true) OuterBatchSaveStudentReq outerBatchSaveStudentReq) {
+		if (!getSecurityRootOrgId().equals(outerBatchSaveStudentReq.getRootOrgId())) {
+			throw new StatusException("EX-1000001", "rootOrgId is wrong");
+		}
+		List<Student4BatchBean> studentList = outerBatchSaveStudentReq.getStudentList();
+		
+		List<StudentStatus4BatchBean> successList = Lists.newArrayList();
+		List<StudentStatus4BatchBean> failureList = Lists.newArrayList();
+		
+		for(Student4BatchBean req:studentList){
+			SaveStudentReq request = new SaveStudentReq();
+			request.setIdentityNumber(req.getIdentityNumber());
+			request.setName(req.getName());
+			request.setOrgCode(req.getOrgCode());
+			request.setOrgId(req.getOrgId());
+			request.setOrgName(req.getOrgName());
+			request.setPhoneNumber(req.getPhoneNumber());
+			request.setRemark(req.getRemark());
+			request.setRootOrgId(req.getRootOrgId());
+			request.setStudentCode(req.getStudentCode());
+			
+			try{
+				OuterSaveStudentResp outerSaveStudentResp = processOuterSaveStudentReq(request,req.getPhotoUrl(),req.getOperator());
+				StudentStatus4BatchBean studentStatus4BatchBeanSuccess = new StudentStatus4BatchBean();
+				studentStatus4BatchBeanSuccess.setStudentId(outerSaveStudentResp.getStudentId());
+				studentStatus4BatchBeanSuccess.setIdentityNumber(req.getIdentityNumber());
+				studentStatus4BatchBeanSuccess.setName(req.getName());
+				studentStatus4BatchBeanSuccess.setStudentCode(req.getStudentCode());
+				successList.add(studentStatus4BatchBeanSuccess);
+			}catch(Exception e){
+				StudentStatus4BatchBean studentStatus4BatchBeanfailure = new StudentStatus4BatchBean();
+				studentStatus4BatchBeanfailure.setIdentityNumber(req.getIdentityNumber());
+				studentStatus4BatchBeanfailure.setName(req.getName());
+				studentStatus4BatchBeanfailure.setStudentCode(req.getStudentCode());
+				failureList.add(studentStatus4BatchBeanfailure);
+			}
+		}
+		BatchOuterSaveStudentResp resq = new BatchOuterSaveStudentResp();
+		resq.setSuccessList(successList);
+		resq.setFailureList(failureList);
+		return resq;
 	}
 
 }

+ 9 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/StudentOuterService.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.examcloud.exchange.outer.api;
 
 import cn.com.qmth.examcloud.commons.web.cloud.api.OuterService;
+import cn.com.qmth.examcloud.exchange.outer.api.request.OuterBatchSaveStudentReq;
 import cn.com.qmth.examcloud.exchange.outer.api.request.OuterSaveStudentReq;
+import cn.com.qmth.examcloud.exchange.outer.api.response.BatchOuterSaveStudentResp;
 import cn.com.qmth.examcloud.exchange.outer.api.response.OuterSaveStudentResp;
 
 /**
@@ -15,4 +17,11 @@ public interface StudentOuterService extends OuterService {
 
 	OuterSaveStudentResp saveStudent(OuterSaveStudentReq req);
 
+	/**
+	 * 批量创建学生
+	 * @param req
+	 * @return
+	 */
+	BatchOuterSaveStudentResp batchSaveStudent(OuterBatchSaveStudentReq req);
+	
 }

+ 176 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/Student4BatchBean.java

@@ -0,0 +1,176 @@
+package cn.com.qmth.examcloud.exchange.outer.api.bean;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * 
+ * @author  	chenken
+ * @date    	2019年1月23日 上午9:59:27
+ * @company 	QMTH
+ * @description Student4BatchBean.java
+ */
+public class Student4BatchBean implements Serializable{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -4695731347447671839L;
+
+	/**
+	 * 学生姓名
+	 */
+	@ApiModelProperty(value = "学生姓名", example = "赵飞燕", required = true)
+	private String name;
+
+	/**
+	 * 顶级机构ID
+	 */
+	@ApiModelProperty(value = "顶级机构ID", example = "0", required = true)
+	private Long rootOrgId;
+
+	/**
+	 * 机构ID
+	 */
+	@ApiModelProperty(value = "学习中心ID", example = "1", required = false)
+	private Long orgId;
+
+	/**
+	 * 学习中心编码
+	 */
+	@ApiModelProperty(value = "学习中心编码", example = "LC111111", required = true)
+	private String orgCode;
+
+	/**
+	 * 学习中心名称
+	 */
+	@ApiModelProperty(value = "学习中心名称", example = "LC111111", required = true)
+	private String orgName;
+
+	/**
+	 * 学生code
+	 */
+	@ApiModelProperty(value = "学号", example = "1111", required = true)
+	private String studentCode;
+
+	/**
+	 * 身份证号码
+	 */
+	@ApiModelProperty(value = "身份证号", example = "XXXXXXXXXXXXXXXXXX", required = true)
+	private String identityNumber;
+
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注", example = "xx", required = false)
+	private String remark;
+
+	/**
+	 * 图片地址
+	 */
+	@ApiModelProperty(value = "图片URL", example = "http://xxxx.xx/photo.jpg", required = false)
+	private String photoUrl;
+
+	/**
+	 * 手机号码
+	 */
+	@ApiModelProperty(value = "手机号码", example = "XXXXXXXXXXX", required = true)
+	private String phoneNumber;
+
+	/**
+	 * 操作者
+	 */
+	@ApiModelProperty(value = "操作者", example = "XXX", required = true)
+	private String operator;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public String getOrgCode() {
+		return orgCode;
+	}
+
+	public void setOrgCode(String orgCode) {
+		this.orgCode = orgCode;
+	}
+
+	public String getOrgName() {
+		return orgName;
+	}
+
+	public void setOrgName(String orgName) {
+		this.orgName = orgName;
+	}
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getIdentityNumber() {
+		return identityNumber;
+	}
+
+	public void setIdentityNumber(String identityNumber) {
+		this.identityNumber = identityNumber;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getPhotoUrl() {
+		return photoUrl;
+	}
+
+	public void setPhotoUrl(String photoUrl) {
+		this.photoUrl = photoUrl;
+	}
+
+	public String getPhoneNumber() {
+		return phoneNumber;
+	}
+
+	public void setPhoneNumber(String phoneNumber) {
+		this.phoneNumber = phoneNumber;
+	}
+
+	public String getOperator() {
+		return operator;
+	}
+
+	public void setOperator(String operator) {
+		this.operator = operator;
+	}
+
+	
+}

+ 52 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/StudentStatus4BatchBean.java

@@ -0,0 +1,52 @@
+package cn.com.qmth.examcloud.exchange.outer.api.bean;
+
+import java.io.Serializable;
+
+public class StudentStatus4BatchBean implements Serializable{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -2088122629950881541L;
+
+	private Long studentId;
+	
+	private String name;
+	
+	private String studentCode;
+
+	private String identityNumber;
+
+	public Long getStudentId() {
+		return studentId;
+	}
+
+	public void setStudentId(Long studentId) {
+		this.studentId = studentId;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getIdentityNumber() {
+		return identityNumber;
+	}
+
+	public void setIdentityNumber(String identityNumber) {
+		this.identityNumber = identityNumber;
+	}
+	
+}

+ 35 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/request/OuterBatchSaveStudentReq.java

@@ -0,0 +1,35 @@
+package cn.com.qmth.examcloud.exchange.outer.api.request;
+
+import java.util.List;
+
+import cn.com.qmth.examcloud.commons.web.cloud.api.BaseRequest;
+import cn.com.qmth.examcloud.exchange.outer.api.bean.Student4BatchBean;
+
+public class OuterBatchSaveStudentReq extends BaseRequest{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -5950300030279373369L;
+	
+	private Long rootOrgId;
+	
+	private List<Student4BatchBean> studentList;
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public List<Student4BatchBean> getStudentList() {
+		return studentList;
+	}
+
+	public void setStudentList(List<Student4BatchBean> studentList) {
+		this.studentList = studentList;
+	}
+
+}

+ 42 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/response/BatchOuterSaveStudentResp.java

@@ -0,0 +1,42 @@
+package cn.com.qmth.examcloud.exchange.outer.api.response;
+
+import java.util.List;
+
+import cn.com.qmth.examcloud.commons.web.cloud.api.BaseResponse;
+import cn.com.qmth.examcloud.exchange.outer.api.bean.StudentStatus4BatchBean;
+
+/**
+ * 
+ * @author  	chenken
+ * @date    	2019年1月23日 上午10:00:38
+ * @company 	QMTH
+ * @description 批量创建学生Resp
+ */
+public class BatchOuterSaveStudentResp extends BaseResponse{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 9177263130683565423L;
+
+	private List<StudentStatus4BatchBean> successList;
+	
+	private List<StudentStatus4BatchBean> failureList;
+
+	public List<StudentStatus4BatchBean> getSuccessList() {
+		return successList;
+	}
+
+	public void setSuccessList(List<StudentStatus4BatchBean> successList) {
+		this.successList = successList;
+	}
+
+	public List<StudentStatus4BatchBean> getFailureList() {
+		return failureList;
+	}
+
+	public void setFailureList(List<StudentStatus4BatchBean> failureList) {
+		this.failureList = failureList;
+	}
+
+}