|
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.diagbot.dto.KlConceptSimDTO;
|
|
|
import com.diagbot.dto.KlDrugRegisterDTO;
|
|
|
import com.diagbot.entity.CommonParam;
|
|
|
+import com.diagbot.entity.Ex;
|
|
|
import com.diagbot.entity.KlConcept;
|
|
|
import com.diagbot.entity.KlDrugMapping;
|
|
|
import com.diagbot.entity.KlDrugRegister;
|
|
@@ -17,7 +18,9 @@ import com.diagbot.service.KlDrugRegisterService;
|
|
|
import com.diagbot.service.impl.KlDrugRegisterServiceImpl;
|
|
|
import com.diagbot.util.BeanUtil;
|
|
|
import com.diagbot.util.DateUtil;
|
|
|
+import com.diagbot.util.ExcelUtils;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.util.ReflectUtil;
|
|
|
import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.util.UserUtils;
|
|
|
import com.diagbot.vo.KlDrugMappingGetVO;
|
|
@@ -25,6 +28,7 @@ import com.diagbot.vo.KlDrugRegisterDelVO;
|
|
|
import com.diagbot.vo.KlDrugRegisterGetVO;
|
|
|
import com.diagbot.vo.KlDrugRegisterPageVO;
|
|
|
import com.diagbot.vo.KlDrugRegisterSaveVO;
|
|
|
+import com.diagbot.vo.KlDrugRegisterTestVO;
|
|
|
import com.diagbot.vo.KlDrugSearchVO;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import org.apache.commons.collections4.map.LinkedMap;
|
|
@@ -35,6 +39,8 @@ import org.springframework.stereotype.Component;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.InputStream;
|
|
|
+import java.lang.reflect.Field;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -208,6 +214,11 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
InputStream inputStream = file.getInputStream();
|
|
|
List<String[]> list = XLSXCovertCSVReader.readerExcel(inputStream,
|
|
|
"注册药品", 100);
|
|
|
+ for (String[] arr : list) {
|
|
|
+ for (int i = 0; i < arr.length; i++) {
|
|
|
+ arr[i] = getObject(arr[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
List<KlDrugRegister> drugRegisterList = Lists.newLinkedList();
|
|
|
int i = 0;
|
|
|
|
|
@@ -261,6 +272,7 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
}
|
|
|
klDrugMappingService.remove(new QueryWrapper<KlDrugMapping>());
|
|
|
klDrugMappingService.saveBatch(klDrugMappingList);
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
@@ -269,7 +281,7 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
|
|
|
public static String getObject(String s) {
|
|
|
if (StringUtil.isBlank(s)) {
|
|
|
- return "";
|
|
|
+ return s;
|
|
|
}
|
|
|
if (!s.startsWith("\"")) {
|
|
|
return s;
|
|
@@ -283,4 +295,104 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
}
|
|
|
return s;
|
|
|
}
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ String path = "D:\\newSVN\\2020新版CDSS\\05.其他资料\\数据\\其他数据\\【注册药品导入模板】 - 副本 - 副本.xlsx";
|
|
|
+
|
|
|
+ List<KlDrugRegisterTestVO> list1 = ExcelUtils.importExcel(path, 0, 1, KlDrugRegisterTestVO.class);
|
|
|
+ List<KlDrugRegisterTestVO> list = refExcel(KlDrugRegisterTestVO.class);
|
|
|
+ System.out.println(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> List<T> refExcel(Class<T> c) {
|
|
|
+ KlDrugRegisterTestVO klDrugRegisterTestVO = new KlDrugRegisterTestVO();
|
|
|
+ List<T> res = Lists.newArrayList();
|
|
|
+ try {
|
|
|
+ String path = "D:\\newSVN\\2020新版CDSS\\05.其他资料\\数据\\其他数据\\【注册药品导入模板】 - 副本 - 副本.xlsx";
|
|
|
+ List<String[]> list = XLSXCovertCSVReader.readerExcel(path,
|
|
|
+ "注册药品", 20);
|
|
|
+
|
|
|
+ if (ListUtil.isEmpty(list)) {
|
|
|
+ throw new RuntimeException("无数据");
|
|
|
+ }
|
|
|
+
|
|
|
+ String[] titleRow = list.get(0);
|
|
|
+ Map<Integer, String> colMap = new LinkedMap();
|
|
|
+ for (int i = 0; i < titleRow.length; i++) {
|
|
|
+ if (StringUtil.isBlank(titleRow[i])) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ colMap.put(i, getObject(titleRow[i]));
|
|
|
+ }
|
|
|
+ System.out.println(colMap);
|
|
|
+
|
|
|
+ Field[] fields = c.getDeclaredFields();
|
|
|
+ // 属性和表格列对应
|
|
|
+ Map<String, Map<String, String>> classMap = new LinkedHashMap();
|
|
|
+ for (Field field : fields) {
|
|
|
+ if (field.isAnnotationPresent(Ex.class)) {
|
|
|
+ Ex annotation = field.getAnnotation(Ex.class);
|
|
|
+ Map<String, String> propertyMap = new LinkedHashMap<>();
|
|
|
+ propertyMap.put("field", field.getName());
|
|
|
+ propertyMap.put("convertType", field.getGenericType().toString());
|
|
|
+ classMap.put(annotation.name(), propertyMap);
|
|
|
+ }
|
|
|
+ field.getClass();
|
|
|
+ }
|
|
|
+ System.out.println(classMap);
|
|
|
+
|
|
|
+ int rowNum = 1;
|
|
|
+ for (String[] row : list) {
|
|
|
+ if (rowNum++ == 1) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ T obj = c.newInstance();
|
|
|
+ for (int i = 0; i < row.length; i++) {
|
|
|
+ if (classMap.get(colMap.get(i)) == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String property = classMap.get(colMap.get(i)).get("field");
|
|
|
+ String convertType = classMap.get(colMap.get(i)).get("convertType");
|
|
|
+ System.out.println(property + ":" + row[i]);
|
|
|
+ if (StringUtil.isNotBlank(property)) {
|
|
|
+ Object value = convertValue(getObject(row[i]), convertType);
|
|
|
+ if (value != null) {
|
|
|
+ ReflectUtil.setFieldValue(obj, property, value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ res.add(obj);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Object convertValue(String object, String convertType) {
|
|
|
+ if (object == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ switch (convertType) {
|
|
|
+ case "class java.lang.Integer":
|
|
|
+ case "int":
|
|
|
+ return Integer.parseInt(object);
|
|
|
+ case "class java.lang.Long":
|
|
|
+ case "long":
|
|
|
+ return Long.parseLong(object);
|
|
|
+ case "class java.lang.Float":
|
|
|
+ case "float":
|
|
|
+ return Float.parseFloat(object);
|
|
|
+ case "class java.lang.Double":
|
|
|
+ case "double":
|
|
|
+ return Double.parseDouble(object);
|
|
|
+ case "class java.lang.Boolean":
|
|
|
+ case "boolean":
|
|
|
+ return Boolean.parseBoolean(object);
|
|
|
+ case "class java.lang.String":
|
|
|
+ return object;
|
|
|
+ default:
|
|
|
+ return object;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|