Bläddra i källkod

科技成果批量导入

Antiloveg 8 år sedan
förälder
incheckning
07f8fec597

+ 15 - 0
src/main/java/com/goafanti/achievement/bo/AchievementImportBo.java

@@ -1,4 +1,7 @@
 package com.goafanti.achievement.bo;
+
+import java.util.List;
+
 /**
  * 批量导入科技成果
  */
@@ -61,6 +64,8 @@ public class AchievementImportBo {
 	 * 合作方式
 	 */
 	private Integer cooperationMode;
+	
+	private List<String> keywords;
 
 	public Integer getDataCategory() {
 		return dataCategory;
@@ -148,7 +153,17 @@ public class AchievementImportBo {
 
 	public void setCooperationMode(Integer cooperationMode) {
 		this.cooperationMode = cooperationMode;
+	}
+
+	public List<String> getKeywords() {
+		return keywords;
+	}
+
+	public void setKeywords(List<String> keywords) {
+		this.keywords = keywords;
 	} 
 	
 	
+	
+	
 }

+ 33 - 6
src/main/java/com/goafanti/achievement/service/impl/AchievementServiceImpl.java

@@ -10,6 +10,7 @@ import java.util.Map;
 import java.util.UUID;
 
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -276,18 +277,44 @@ public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> im
 
 	@Override
 	public void insertImport(AchievementImportBo[] data) {
-		int length = data.length;
-		if (data != null && length > 0) {
-			for (int i = 0; i < length; i++) {
-				
+		if (null == data || data.length < 1) {
+			return;
+		}
+		Achievement a = null;
+		AchievementKeyword ak = null;
+		List<Achievement> achievementList = new ArrayList<>();
+		List<AchievementKeyword> AchievementKeywordList = new ArrayList<>();
+		Calendar now = Calendar.getInstance();
+		now.set(Calendar.MILLISECOND, 0);
+		for (AchievementImportBo bo : data) {
+			a = new Achievement();
+			BeanUtils.copyProperties(bo, a);
+			a.setId(UUID.randomUUID().toString());
+			a.setDeletedSign(DeleteStatus.UNDELETE.getCode());
+			a.setCreateTime(now.getTime());
+			a.setAuditStatus(AchievementAuditStatus.INAUDIT.getCode());
+			a.setReleaseStatus(AchievementReleaseStatus.UNRELEASE.getCode());
+			List<String> keywordsList = bo.getKeywords();
+			if (null != keywordsList && keywordsList.size() > 0) {
+				for (String s : keywordsList) {
+					if (!StringUtils.isBlank(s)) {
+						ak = new AchievementKeyword();
+						ak.setAchievementId(a.getId());
+						ak.setKeyword(s.trim());
+						ak.setId(UUID.randomUUID().toString());
+						AchievementKeywordList.add(ak);
+					}
+				}
 			}
+			achievementList.add(a);
 		}
-
+		
+		achievementMapper.insertBatch(achievementList);
+		achievementKeywordMapper.insertBatch(AchievementKeywordList);
 	}
 
 	private void createTechBorkerNotice(Achievement a) {
 		noticeMapper.insert(disposeNotice(a, null));
-
 	}
 
 	// 给所有审核员发送审核通知

+ 121 - 7
src/main/java/com/goafanti/admin/controller/AdminAchievementApiController.java

@@ -1,6 +1,8 @@
 package com.goafanti.admin.controller;
 
 import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
@@ -10,6 +12,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
+import org.junit.Test;
 import org.springframework.beans.BeanUtils;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -28,6 +31,7 @@ import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.controller.CertifyApiController;
 import com.goafanti.common.enums.AchievementAuditStatus;
 import com.goafanti.common.enums.AchievementFields;
+import com.goafanti.common.enums.AchievementImportFields;
 import com.goafanti.common.enums.AttachmentType;
 import com.goafanti.common.enums.DeleteStatus;
 import com.goafanti.common.model.Achievement;
@@ -57,13 +61,11 @@ public class AdminAchievementApiController extends CertifyApiController {
 			return res;
 		}
 
-		/*for (int i = 0; i < data.length; i++) {
-			for(Field f : data[i].getClass().getDeclaredFields()){
-		        f.setAccessible(true);
-		        if(f.get(data[i]) == null){
-		        }
-		    }
-		}*/
+		res = disposeImportAchievement(res, data);
+		if (!res.getError().isEmpty()) {
+			return res;
+		}
+		data = (AchievementImportBo[]) res.getData();
 		achievementService.insertImport(data);
 		return res;
 	}
@@ -464,4 +466,116 @@ public class AdminAchievementApiController extends CertifyApiController {
 		return fileName;
 	}
 
+	private Result disposeImportAchievement(Result res, AchievementImportBo[] data) {
+		for (int i = 0; i < data.length; i++) {
+			for (Field f : data[i].getClass().getDeclaredFields()) {
+				f.setAccessible(true);
+				try {
+					if (f.get(data[i]) == null || f.get(data[i]) == "") {
+						AchievementImportFields.getFieldDesc(f.toString().substring(f.toString().lastIndexOf(".") + 1));
+						res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", AchievementImportFields
+								.getFieldDesc(f.toString().substring(f.toString().lastIndexOf(".") + 1))));
+						return res;
+					}
+				} catch (IllegalArgumentException | IllegalAccessException e) {
+				}
+			}
+
+			if (data[i].getDataCategory().toString().length() > 1) {
+				res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
+						AchievementImportFields.DATACATEGORY.getDesc()));
+				return res;
+			}
+
+			if (data[i].getName().length() > 31) {
+				res.getError()
+						.add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.NAME.getDesc()));
+				return res;
+			}
+
+			if (data[i].getCategory().toString().length() > 1) {
+				res.getError().add(
+						buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.CATEGORY.getDesc()));
+				return res;
+			}
+
+			if (data[i].getOwnerName().length() > 31) {
+				res.getError().add(
+						buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERNAME.getDesc()));
+				return res;
+			}
+
+			if (data[i].getOwnerType().toString().length() > 1) {
+				res.getError().add(
+						buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERTYPE.getDesc()));
+				return res;
+			}
+
+			if (data[i].getOwnerIdNumber().length() > 35) {
+				res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
+						AchievementImportFields.OWNERIDNUMBER.getDesc()));
+				return res;
+			}
+
+			if (data[i].getOwnerMobile().length() > 11) {
+				res.getError().add(
+						buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERMOBILE.getDesc()));
+				return res;
+			}
+
+			if (data[i].getOwnerEmail().length() > 254) {
+				res.getError().add(
+						buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.OWNERMOBILE.getDesc()));
+				return res;
+			}
+
+			if (data[i].getOwnerPostalAddress().length() > 254) {
+				res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
+						AchievementImportFields.OWNERPOSTALADDRESS.getDesc()));
+				return res;
+			}
+
+			if (data[i].getCooperationMode().toString().length() > 1) {
+				res.getError().add(buildError(ErrorConstants.PARAM_SIZE_ERROR, "",
+						AchievementImportFields.COOPERATIONMODE.getDesc()));
+				return res;
+			}
+
+			if (data[i].getKeyword().length() > 44) {
+				res.getError().add(
+						buildError(ErrorConstants.PARAM_SIZE_ERROR, "", AchievementImportFields.KEYWORD.getDesc()));
+				return res;
+			}
+
+			String[] keywords = data[i].getKeyword().trim().split(",|,");
+			if (null == keywords || keywords.length < 1) {
+				res.getError()
+						.add(buildError(ErrorConstants.PARAM_ERROR, "", AchievementImportFields.KEYWORD.getDesc()));
+				return res;
+			}
+			List<String> list = new ArrayList<>();
+			for (String s : keywords) {
+				if (!StringUtils.isBlank(s)) {
+					list.add(s);
+				}
+			}
+
+			data[i].setKeywords(list);
+		}
+		res.setData(data);
+		return res;
+	}
+
+	@Test
+	public void test() {
+		String[] s = new String(" , a").trim().split(",|,");
+		System.out.println(StringUtils.isBlank(" "));
+		System.out.println(s.length);
+		for (String ss : s) {
+			if (!StringUtils.isBlank(ss)) {
+				System.out.println("a" + ss.trim() + "b");
+			}
+		}
+	}
+
 }

+ 12 - 0
src/main/java/com/goafanti/admin/controller/AdminDemandApiController.java

@@ -32,6 +32,7 @@ import com.goafanti.common.model.AftFile;
 import com.goafanti.common.model.Demand;
 import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.common.utils.StringUtils;
+import com.goafanti.demand.bo.DemandImportBo;
 import com.goafanti.demand.bo.InputDemand;
 import com.goafanti.demand.service.DemandService;
 import com.goafanti.user.service.UserService;
@@ -46,6 +47,17 @@ public class AdminDemandApiController extends CertifyApiController {
 	@Resource
 	private AftFileService	aftFileService;
 	
+	/**
+	 * 批量导入科技需求
+	 */
+	@RequestMapping(value = "/importDemand", method = RequestMethod.POST)
+	public Result importDemand(@RequestParam(name = "data[]", required = false) DemandImportBo[] data){
+		Result res = new Result();
+		
+		return res;
+		
+	}
+	
 	
 	/**
 	 * 成果需求匹配列表

+ 2 - 0
src/main/java/com/goafanti/common/dao/AchievementMapper.java

@@ -26,4 +26,6 @@ public interface AchievementMapper {
 	AchievementUserOwnerDetailBo selectUserOwnerDetail(String id);
 
 	AchievementOrgOwnerDetailBo selectOrgOwnerDetail(String id);
+
+	void insertBatch(List<Achievement> achievementList);
 }

+ 60 - 0
src/main/java/com/goafanti/common/enums/AchievementImportFields.java

@@ -0,0 +1,60 @@
+package com.goafanti.common.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum AchievementImportFields {
+	DATACATEGORY("dataCategory", " 数据类别"),
+	NAME("name", "科技成果名称"),
+	KEYWORD("keyword", "关键词"),
+	CATEGORY("category", "成果类型"),
+	OWNERNAME("ownerName", "科技成果所有人名称"),
+	OWNERTYPE("ownerType", "科技成果所有人类型"),
+	OWNERIDNUMBER("ownerIdNumber", "科技成果所有人证件号"),
+	
+	OWNERMOBILE("ownerMobile", "科技成果所有人联系电话"),
+	OWNEREMAIL("ownerEmail", "科技成果所有人电子邮箱"),
+	OWNERPOSTALADDRESS("ownerPostalAddress", "科技成果所有人通讯地址"),
+	COOPERATIONMODE("cooperationMode", "合作方式"),
+	
+	OTHER("", "未知参数");
+	
+	private String	code;
+	private String	desc;
+	
+	private static Map<String, AchievementImportFields> status = new HashMap<String, AchievementImportFields>();
+	
+	private AchievementImportFields(String code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+	
+	static {
+		for (AchievementImportFields value : AchievementImportFields.values()) {
+			status.put(value.getCode(), value);
+		}
+	}
+	
+	public static AchievementImportFields getField(String code) {
+		if (containsType(code)) {
+			return status.get(code);
+		}
+		return OTHER;
+	}
+	
+	public static String getFieldDesc(String code) {
+		return getField(code).getDesc();
+	}
+
+	public static boolean containsType(String code) {
+		return status.containsKey(code);
+	}
+	
+	public String getCode() {
+		return code;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+}

+ 24 - 1
src/main/java/com/goafanti/common/mapper/AchievementMapper.xml

@@ -956,5 +956,28 @@
     left join organization_identity oi on a.owner_id = oi.uid
     left join user u on u.id = a.owner_id
     where a.id = #{id,jdbcType=VARCHAR}
-  </select>
+  </select>
+  
+   <insert id="insertBatch" parameterType="com.goafanti.common.model.Achievement">
+    insert into achievement_keyword 
+    	(id, deleted_sign, audit_status, 
+    	 create_time, release_status, data_category,
+    	 name, keyword, category,
+    	 owner_name, owner_type, owner_id_number,
+    	 owner_mobile, owner_email, owner_postal_address,
+    	 cooperation_mode 
+    	 )
+    values 
+    <foreach item="item" index="index" collection="list" separator=",">
+      (
+      	#{item.id,jdbcType=VARCHAR}, #{item.deletedSign,jdbcType=INTEGER}, #{item.auditStatus,jdbcType=INTEGER}, 
+      	#{item.createTime,jdbcType=TIMESTAMP}, #{item.releaseStatus,jdbcType=INTEGER}, #{item.dataCategory,jdbcType=INTEGER},
+      	#{item.name,jdbcType=VARCHAR}, #{item.keyword,jdbcType=VARCHAR}, #{itemt.category,jdbcType=INTEGER},
+      	#{itemt.ownerName,jdbcType=VARCHAR}, #{itemt.ownerType,jdbcType=VARCHAR}, #{itemt.ownerIdNumber,jdbcType=VARCHAR},
+      	#{itemt.ownerMobile,jdbcType=VARCHAR}, #{itemt.ownerEmail,jdbcType=VARCHAR}, #{itemt.ownerPostalAddress,jdbcType=VARCHAR},
+      	#{itemt.cooperationMode,jdbcType=INTEGER}
+      )
+    </foreach>
+  </insert>
+  
 </mapper>

+ 17 - 0
src/main/java/com/goafanti/demand/bo/DemandImportBo.java

@@ -0,0 +1,17 @@
+package com.goafanti.demand.bo;
+
+public class DemandImportBo {
+	private Integer dataCategory;
+	
+	private String name;
+	
+	private String keyword;
+	
+	private Integer demandType;
+	
+	private String problemDes;
+	
+	private String employerName;
+	
+   	
+}