瀏覽代碼

术语维护

rgb 6 年之前
父節點
當前提交
a3a86bb2c6
共有 50 個文件被更改,包括 2584 次插入1129 次删除
  1. 429 429
      knowledgeman-service/src/main/java/com/diagbot/api/ImportExcel.java
  2. 1 1
      knowledgeman-service/src/main/java/com/diagbot/dto/ConceptDTO.java
  3. 43 0
      knowledgeman-service/src/main/java/com/diagbot/dto/GetAllConceptDTO.java
  4. 65 0
      knowledgeman-service/src/main/java/com/diagbot/dto/GetAllInformationDTO.java
  5. 36 0
      knowledgeman-service/src/main/java/com/diagbot/dto/GetConceptInfoDetailDTO.java
  6. 100 0
      knowledgeman-service/src/main/java/com/diagbot/dto/GetMedicalInfoDetailDTO.java
  7. 76 6
      knowledgeman-service/src/main/java/com/diagbot/entity/Bodypart.java
  8. 63 24
      knowledgeman-service/src/main/java/com/diagbot/entity/Concept.java
  9. 86 6
      knowledgeman-service/src/main/java/com/diagbot/entity/Lexicon.java
  10. 76 7
      knowledgeman-service/src/main/java/com/diagbot/entity/LexiconRelationship.java
  11. 14 14
      knowledgeman-service/src/main/java/com/diagbot/entity/LibraryDetail.java
  12. 28 15
      knowledgeman-service/src/main/java/com/diagbot/entity/LibraryInfo.java
  13. 79 23
      knowledgeman-service/src/main/java/com/diagbot/entity/Medical.java
  14. 81 38
      knowledgeman-service/src/main/java/com/diagbot/entity/Relation.java
  15. 410 201
      knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  16. 14 24
      knowledgeman-service/src/main/java/com/diagbot/facade/LibraryDetailFacade.java
  17. 18 13
      knowledgeman-service/src/main/java/com/diagbot/facade/LibraryInfoFacade.java
  18. 306 67
      knowledgeman-service/src/main/java/com/diagbot/facade/MedicalFacade.java
  19. 5 5
      knowledgeman-service/src/main/java/com/diagbot/facade/RelationFacade.java
  20. 2 2
      knowledgeman-service/src/main/java/com/diagbot/mapper/LibraryDetailMapper.java
  21. 12 15
      knowledgeman-service/src/main/java/com/diagbot/mapper/LibraryInfoMapper.java
  22. 2 2
      knowledgeman-service/src/main/java/com/diagbot/service/LibraryDetailService.java
  23. 5 11
      knowledgeman-service/src/main/java/com/diagbot/service/LibraryInfoService.java
  24. 2 2
      knowledgeman-service/src/main/java/com/diagbot/service/impl/LibraryDetailServiceImpl.java
  25. 6 15
      knowledgeman-service/src/main/java/com/diagbot/service/impl/LibraryInfoServiceImpl.java
  26. 45 0
      knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoDetailVO.java
  27. 40 0
      knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoVO.java
  28. 122 0
      knowledgeman-service/src/main/java/com/diagbot/vo/AddMedicalInfoVO.java
  29. 0 28
      knowledgeman-service/src/main/java/com/diagbot/vo/ConceptVo.java
  30. 28 0
      knowledgeman-service/src/main/java/com/diagbot/vo/GetAllConceptVO.java
  31. 31 0
      knowledgeman-service/src/main/java/com/diagbot/vo/GetAllInformationVO.java
  32. 25 0
      knowledgeman-service/src/main/java/com/diagbot/vo/GetConceptInfoDetailVO.java
  33. 25 0
      knowledgeman-service/src/main/java/com/diagbot/vo/GetMedicalInfoDetailVO.java
  34. 3 3
      knowledgeman-service/src/main/java/com/diagbot/vo/RelationVo.java
  35. 25 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RemoveConceptInfoVO.java
  36. 28 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RemoveConceptKnowledgeVO.java
  37. 25 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RemoveMedicalInfoVO.java
  38. 61 89
      knowledgeman-service/src/main/java/com/diagbot/web/ConceptController.java
  39. 18 17
      knowledgeman-service/src/main/java/com/diagbot/web/LibraryDetailController.java
  40. 69 26
      knowledgeman-service/src/main/java/com/diagbot/web/MedicalController.java
  41. 11 16
      knowledgeman-service/src/main/java/com/diagbot/web/TypeController.java
  42. 19 0
      knowledgeman-service/src/main/resources/mapper/BodypartMapper.xml
  43. 4 1
      knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml
  44. 6 1
      knowledgeman-service/src/main/resources/mapper/LexiconMapper.xml
  45. 5 0
      knowledgeman-service/src/main/resources/mapper/LexiconRelationshipMapper.xml
  46. 1 1
      knowledgeman-service/src/main/resources/mapper/LibraryDetailMapper.xml
  47. 21 23
      knowledgeman-service/src/main/resources/mapper/LibraryInfoMapper.xml
  48. 5 1
      knowledgeman-service/src/main/resources/mapper/MedicalMapper.xml
  49. 5 0
      knowledgeman-service/src/main/resources/mapper/RelationMapper.xml
  50. 3 3
      knowledgeman-service/src/test/java/com/diagbot/CodeGeneration.java

+ 429 - 429
knowledgeman-service/src/main/java/com/diagbot/api/ImportExcel.java

@@ -25,434 +25,434 @@ import java.util.List;
 
 public class ImportExcel {
 
-    private static ConceptFacade conceptFacade;
-
-    private static LibraryInfoFacade libraryinfoFacade;
-
-    private static LibraryDetailFacade libraryDetailFacade;
-
-    private static MedicalFacade medicalFacade;
-
-    private static RelationFacade relationFacade;
-
-    private static String[] catelist = {"症状","查体","化验","辅检","诊断","药品","其他史","治疗方案"};
-
-    public static void setConceptFacade(ConceptFacade conceptFacade) {
-        ImportExcel.conceptFacade = conceptFacade;
-    }
-
-    public static void setLibraryinfoFacade(LibraryInfoFacade libraryinfoFacade) {
-        ImportExcel.libraryinfoFacade = libraryinfoFacade;
-    }
-
-    public static void setLibraryDetailFacade(LibraryDetailFacade libraryDetailFacade) {
-        ImportExcel.libraryDetailFacade = libraryDetailFacade;
-    }
-
-    public static void setMedicalFacade(MedicalFacade medicalFacade) {
-        ImportExcel.medicalFacade = medicalFacade;
-    }
-
-    public static void setRelationFacade(RelationFacade relationFacade) {
-        ImportExcel.relationFacade = relationFacade;
-    }
-
-
-    /**
-     * 从文件批量导入术语信息
-     *
-     * @param file
-     * @return ConceptDTO
-     */
-    public static ConceptDTO importBatch(MultipartFile file) {
-        ConceptDTO conceptDTO = new ConceptDTO();
-        List<String> messages = new ArrayList<>();
-
-        InputStream inputStream = null;
-        Workbook wb = null;
-
-        AmendTermVo amendTermVo;
-        TermVo termVo;
-        Medical medical;
-        List<Medical> medlist;
-        RelationDTO relationDTO;
-        List<RelationDTO> rellist;
-
-        try {
-            if (!file.isEmpty()) {
-                inputStream = file.getInputStream();
-
-                if (inputStream.available() > 5120000) {
-                    messages.add("术语文件最大只支持5MB!");
-                } else {
-                    String fileName = file.getOriginalFilename();
-                    if (fileName.lastIndexOf(".") != -1) {
-                        String type = fileName.substring(fileName.lastIndexOf("."));
-                        if (type.equals(".xls")) {
-                            wb = new HSSFWorkbook(inputStream);
-                        } else if (type.equals(".xlsx")) {
-                            wb = new XSSFWorkbook(inputStream);
-                        }
-                        if (wb != null) {
-
-                            CleanupDB(fileName);
-
-                            Sheet sheet = wb.getSheetAt(0);
-                            int count = 0;
-                            String group, category, std_name, name, prop, prop1, minagestr, maxagestr;
-                            int diag_id = 0;
-                            int treat_id = 0;
-                            String diag = "";
-                            String treat = "";
-                            String diag_type = "";
-                            String treat_type = "";
-                            String gender = "";
-                            String dept = "";
-                            String note = "";
-                            int minage = 0;
-                            int maxage = 0;
-                            String grp_type = "";
-                            String cate_type = "";
-                            String std_type = "";
-
-                            if (fileName.indexOf(catelist[7]) == -1) {
-                                for (Row row : sheet) {
-                                    count++;
-
-                                    if (row != null) {
-                                        if (count == 1) {
-                                            grp_type = row.getCell(0).toString();
-                                            if (medicalFacade.getTypeInfo(grp_type) == null) {
-                                                System.out.println("术语类型-'" + grp_type + "'不存在!");
-                                                break;
-                                            }
-                                            cate_type = row.getCell(1).toString();
-                                            if (medicalFacade.getTypeInfo(cate_type) == null) {
-                                                System.out.println("术语类型-'" + cate_type + "'不存在!");
-                                                break;
-                                            }
-                                            std_type = row.getCell(2).toString().replace("标准名称", "");
-                                            if (medicalFacade.getTypeInfo(std_type) == null) {
-                                                System.out.println("术语类型-'" + std_type + "'不存在!");
-                                                break;
-                                            }
-                                        }
-
-                                        if (count > 1) {
-
-                                            group = (row.getCell(0) == null) ? "" : row.getCell(0).toString().trim();
-                                            category = (row.getCell(1) == null) ? "" : row.getCell(1).toString().trim();
-                                            std_name = (row.getCell(2) == null) ? "" : row.getCell(2).toString().trim();
-                                            name = (row.getCell(3) == null) ? "" : row.getCell(3).toString().trim();
-                                            prop = (row.getCell(4) == null) ? "" : row.getCell(4).toString().trim();
-                                            prop1 = (row.getCell(5) == null) ? "" : row.getCell(5).toString().trim();
-
-                                            System.out.println(group + "\t" + category + "\t" + std_name + "\t" +
-                                                    name + "\t" + prop + "\t" + prop1);
-
-                                            if (std_type.equals("症状")) {
-                                                gender = (row.getCell(8) == null) ? "" : row.getCell(8).toString();
-                                                gender = (gender.indexOf(".") == -1) ? gender : gender.substring(0, gender.indexOf("."));
-                                                minagestr = (row.getCell(9) == null) ? "0" : row.getCell(9).toString();
-                                                minage = Integer.valueOf((minagestr.indexOf(".") == -1) ?
-                                                        minagestr : minagestr.substring(0, minagestr.indexOf(".")));
-                                                maxagestr = (row.getCell(10) == null) ? "0" : row.getCell(10).toString();
-                                                maxage = Integer.valueOf((maxagestr.indexOf(".") == -1) ?
-                                                        maxagestr : maxagestr.substring(0, maxagestr.indexOf(".")));
-
-//                                            System.out.println(gender + "\t" + minage + "\t" + maxage);
-                                            } else if (std_type.equals("诊断")) {
-                                                dept = (row.getCell(7) == null) ? "" : row.getCell(7).toString();
-                                            } else if (std_type.equals("药品")) {
-                                                note = (row.getCell(7) == null) ? "" : row.getCell(7).toString();
-                                            }
-
-
-                                            // 设置实体
-                                            if (std_name.trim().length() > 0 && name.trim().length() > 0) {
-                                                amendTermVo = new AmendTermVo();
-                                                amendTermVo.setConcept(std_name);
-                                                amendTermVo.setNewterm(name);
-                                                amendTermVo.setOldterm("");
-                                                amendTermVo.setNewtype(std_type);
-
-                                                medical = new Medical();
-                                                medical.setName(name);
-                                                medical.setStdName(std_name);
-                                                medical.setCateName(category);
-                                                if (std_type.equals("症状")) {
-                                                    medical.setBodypart(prop);
-                                                    medical.setSubBodypart(prop1);
-                                                    medical.setGender(gender);
-                                                    medical.setMinAge(minage);
-                                                    medical.setMaxAge(maxage);
-                                                    medical.setGrp(group);
-                                                } else if (std_type.equals("诊断")) {
-                                                    medical.setDept(dept);
-                                                } else if (std_type.equals("药品")) {
-                                                    medical.setNote(note);
-                                                    String grpname = (group.length() > 0) ? group : "";
-                                                    String catename = (category.length() > 0) ? ("(" + category + ")") : "";
-                                                    medical.setFunction(grpname + catename);
-                                                }
-                                                medlist = new ArrayList<>();
-                                                medlist.add(medical);
-                                                amendTermVo.setMedicalInfo(medlist);
-//                                                amendTermVo.setMedicalInfo(medical);
-
-                                                conceptFacade.upsertConceptInfo(amendTermVo);
-                                                System.out.println(name + ":\t 已入库.");
-                                            }
-
-                                            if (category.length() > 0) {
-                                                // 设置套餐
-                                                amendTermVo = new AmendTermVo();
-                                                amendTermVo.setConcept(category);
-                                                amendTermVo.setNewterm(category);
-                                                amendTermVo.setOldterm("");
-                                                amendTermVo.setNewtype(cate_type);
-
-                                                medical = new Medical();
-                                                medical.setName(category);
-                                                medical.setStdName(category);
-                                                medical.setCateName(group);
-                                                medical.setCode("");
-                                                medical.setNote("");
-                                                medlist = new ArrayList<>();
-                                                medlist.add(medical);
-                                                amendTermVo.setMedicalInfo(medlist);
-//                                                amendTermVo.setMedicalInfo(medical);
-
-                                                conceptFacade.upsertConceptInfo(amendTermVo);
-
-                                                if (!std_name.equals(category)) {
-                                                    relationDTO = new RelationDTO();
-                                                    relationDTO.setStartId(conceptFacade.getConceptId(std_name, std_type));
-                                                    relationDTO.setStartName(std_name);
-                                                    relationDTO.setRelationId(1);
-                                                    relationDTO.setEndId(conceptFacade.getConceptId(category, cate_type));
-                                                    relationDTO.setEndName(category);
-                                                    rellist = new ArrayList<>();
-                                                    rellist.add(relationDTO);
-                                                    amendTermVo.setRelations(rellist);
-
-                                                    relationFacade.upsertRelationInfo(amendTermVo);
-                                                }
-
-                                                System.out.println(category + ":\t 已入库.");
-                                            }
-
-                                            if (group.length() > 0) {
-                                                // 设置大类
-                                                amendTermVo = new AmendTermVo();
-                                                amendTermVo.setConcept(group);
-                                                amendTermVo.setNewterm(group);
-                                                amendTermVo.setOldterm("");
-                                                amendTermVo.setNewtype(grp_type);
-
-                                                medical = new Medical();
-                                                medical.setName(group);
-                                                medical.setStdName(group);
-                                                medical.setCateName("");
-                                                medical.setCode("");
-                                                medical.setNote("");
-                                                medlist = new ArrayList<>();
-                                                medlist.add(medical);
-                                                amendTermVo.setMedicalInfo(medlist);
-//                                                amendTermVo.setMedicalInfo(medical);
-
-                                                conceptFacade.upsertConceptInfo(amendTermVo);
-
-                                                if (!category.equals(group)) {
-                                                    relationDTO = new RelationDTO();
-                                                    relationDTO.setStartId(conceptFacade.getConceptId(category, cate_type));
-                                                    relationDTO.setStartName(category);
-                                                    relationDTO.setRelationId(1);
-                                                    relationDTO.setEndId(conceptFacade.getConceptId(group, grp_type));
-                                                    relationDTO.setEndName(group);
-                                                    rellist = new ArrayList<>();
-                                                    rellist.add(relationDTO);
-                                                    amendTermVo.setRelations(rellist);
-
-                                                    relationFacade.upsertRelationInfo(amendTermVo);
-                                                }
-
-                                                System.out.println(group + ":\t 已入库.");
-                                            }
-
-//                                        if (count >= 20) break;
-                                        }
-                                    }
-                                    System.out.println(count + " 条记录添加入库.");
-                                }
-                            }
-                            else {
-                                for (Row row : sheet) {
-                                    count++;
-
-                                    if (row != null) {
-                                        if (count == 1) {
-                                            diag = row.getCell(0).toString().trim();
-                                            treat = row.getCell(3).toString().trim();
-                                            diag_type = "诊断";
-                                            treat_type = "药品";
-                                        }
-                                        else {
-                                            diag = row.getCell(0).toString().trim();
-                                            treat = row.getCell(3).toString().trim();
-
-                                            if (diag.length() > 0) {
-                                                diag_id = conceptFacade.getConceptId(diag, diag_type);
-                                                treat_id = conceptFacade.getConceptId(treat, treat_type);
-
-                                                if (diag_id > 0 && treat_id > 0) {
-                                                    amendTermVo = new AmendTermVo();
-
-                                                    relationDTO = new RelationDTO();
-                                                    relationDTO.setStartId(diag_id);
-                                                    relationDTO.setStartName(diag);
-                                                    relationDTO.setRelationId(11);
-                                                    relationDTO.setEndId(treat_id);
-                                                    relationDTO.setEndName(treat);
-                                                    rellist = new ArrayList<>();
-                                                    rellist.add(relationDTO);
-                                                    amendTermVo.setRelations(rellist);
-
-                                                    relationFacade.upsertRelationInfo(amendTermVo);
-
-                                                    System.out.println(diag + "\t治疗\t" + treat + ":\t 已入库.");
-//                                                    break;
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-
-                        } else {
-                            messages.add("非excel文件无法解析!");
-                        }
-                    } else {
-                        messages.add("未知文件无法解析!");
-                    }
-                }
-            } else {
-                messages.add("无文件上传!");
-            }
-        }
-        catch (IOException ioe) {
-            ioe.printStackTrace();
-        }
-        catch (Exception ex) {
-            ex.printStackTrace();
-        }
-        finally {
-            conceptDTO.setMessage(messages);
-            try {
-
-                if (inputStream != null) {
-                    inputStream.close();
-                }
-                if (wb != null) {
-                    wb.close();
-                }
-            }
-            catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
-        return conceptDTO;
-    }
-
-    /**
-     * 批量导入数据前,删除相关表
-     *
-     * @param filename
-     *
-     */
-    public static void CleanupDB(String filename) {
-        String cate = "";
-        List<Integer> Ids;
-
-        try {
-            for (String item:catelist) {
-                if (filename.indexOf(item) >= 0) {
-                    cate = item;
-                    break;
-                }
-            }
-
-            if (cate.length() > 0 && !cate.equals(catelist[7])) {
-                System.out.println(cate);
-
-                // 从 LibraryInfo 中找出所有需要删除的Id
-                QueryWrapper<LibraryInfo> wrapper = new QueryWrapper<>();
-                wrapper.likeRight("type", cate);
-                List<LibraryInfo> libinfolist = libraryinfoFacade.list(wrapper);
-
-                // 删除术语信息
-                Ids = new ArrayList<>();
-                for (int i=0; i<libinfolist.size(); i++) {
-                    Ids.add(libinfolist.get(i).getId().intValue());
-//                    break;
-                }
-
-                if (Ids.size() > 0) {
-                    libraryinfoFacade.removeByIds(Ids);
-                }
-
-                // 删除术语详细信息
-                List<LibraryDetail> limbodetails = libraryDetailFacade.getLimboItems();
-                Ids = new ArrayList<>();
-                for (int i=0; i<limbodetails.size(); i++) {
-                    Ids.add(limbodetails.get(i).getId().intValue());
+//    private static ConceptFacade conceptFacade;
+//
+//    private static LibraryInfoFacade libraryinfoFacade;
+//
+//    private static LibraryDetailFacade libraryDetailFacade;
+//
+//    private static MedicalFacade medicalFacade;
+//
+//    private static RelationFacade relationFacade;
+//
+//    private static String[] catelist = {"症状","查体","化验","辅检","诊断","药品","其他史","治疗方案"};
+//
+//    public static void setConceptFacade(ConceptFacade conceptFacade) {
+//        ImportExcel.conceptFacade = conceptFacade;
+//    }
+//
+//    public static void setLibraryinfoFacade(LibraryInfoFacade libraryinfoFacade) {
+//        ImportExcel.libraryinfoFacade = libraryinfoFacade;
+//    }
+//
+//    public static void setLibraryDetailFacade(LibraryDetailFacade libraryDetailFacade) {
+//        ImportExcel.libraryDetailFacade = libraryDetailFacade;
+//    }
+//
+//    public static void setMedicalFacade(MedicalFacade medicalFacade) {
+//        ImportExcel.medicalFacade = medicalFacade;
+//    }
+//
+//    public static void setRelationFacade(RelationFacade relationFacade) {
+//        ImportExcel.relationFacade = relationFacade;
+//    }
+//
+//
+//    /**
+//     * 从文件批量导入术语信息
+//     *
+//     * @param file
+//     * @return ConceptDTO
+//     */
+//    public static ConceptDTO importBatch(MultipartFile file) {
+//        ConceptDTO conceptDTO = new ConceptDTO();
+//        List<String> messages = new ArrayList<>();
+//
+//        InputStream inputStream = null;
+//        Workbook wb = null;
+//
+//        AmendTermVo amendTermVo;
+//        TermVo termVo;
+//        Medical medical;
+//        List<Medical> medlist;
+//        RelationDTO relationDTO;
+//        List<RelationDTO> rellist;
+//
+//        try {
+//            if (!file.isEmpty()) {
+//                inputStream = file.getInputStream();
+//
+//                if (inputStream.available() > 5120000) {
+//                    messages.add("术语文件最大只支持5MB!");
+//                } else {
+//                    String fileName = file.getOriginalFilename();
+//                    if (fileName.lastIndexOf(".") != -1) {
+//                        String type = fileName.substring(fileName.lastIndexOf("."));
+//                        if (type.equals(".xls")) {
+//                            wb = new HSSFWorkbook(inputStream);
+//                        } else if (type.equals(".xlsx")) {
+//                            wb = new XSSFWorkbook(inputStream);
+//                        }
+//                        if (wb != null) {
+//
+//                            CleanupDB(fileName);
+//
+//                            Sheet sheet = wb.getSheetAt(0);
+//                            int count = 0;
+//                            String group, category, std_name, name, prop, prop1, minagestr, maxagestr;
+//                            int diag_id = 0;
+//                            int treat_id = 0;
+//                            String diag = "";
+//                            String treat = "";
+//                            String diag_type = "";
+//                            String treat_type = "";
+//                            String gender = "";
+//                            String dept = "";
+//                            String note = "";
+//                            int minage = 0;
+//                            int maxage = 0;
+//                            String grp_type = "";
+//                            String cate_type = "";
+//                            String std_type = "";
+//
+//                            if (fileName.indexOf(catelist[7]) == -1) {
+//                                for (Row row : sheet) {
+//                                    count++;
+//
+//                                    if (row != null) {
+//                                        if (count == 1) {
+//                                            grp_type = row.getCell(0).toString();
+//                                            if (medicalFacade.getTypeInfo(grp_type) == null) {
+//                                                System.out.println("术语类型-'" + grp_type + "'不存在!");
+//                                                break;
+//                                            }
+//                                            cate_type = row.getCell(1).toString();
+//                                            if (medicalFacade.getTypeInfo(cate_type) == null) {
+//                                                System.out.println("术语类型-'" + cate_type + "'不存在!");
+//                                                break;
+//                                            }
+//                                            std_type = row.getCell(2).toString().replace("标准名称", "");
+//                                            if (medicalFacade.getTypeInfo(std_type) == null) {
+//                                                System.out.println("术语类型-'" + std_type + "'不存在!");
+//                                                break;
+//                                            }
+//                                        }
+//
+//                                        if (count > 1) {
+//
+//                                            group = (row.getCell(0) == null) ? "" : row.getCell(0).toString().trim();
+//                                            category = (row.getCell(1) == null) ? "" : row.getCell(1).toString().trim();
+//                                            std_name = (row.getCell(2) == null) ? "" : row.getCell(2).toString().trim();
+//                                            name = (row.getCell(3) == null) ? "" : row.getCell(3).toString().trim();
+//                                            prop = (row.getCell(4) == null) ? "" : row.getCell(4).toString().trim();
+//                                            prop1 = (row.getCell(5) == null) ? "" : row.getCell(5).toString().trim();
+//
+//                                            System.out.println(group + "\t" + category + "\t" + std_name + "\t" +
+//                                                    name + "\t" + prop + "\t" + prop1);
+//
+//                                            if (std_type.equals("症状")) {
+//                                                gender = (row.getCell(8) == null) ? "" : row.getCell(8).toString();
+//                                                gender = (gender.indexOf(".") == -1) ? gender : gender.substring(0, gender.indexOf("."));
+//                                                minagestr = (row.getCell(9) == null) ? "0" : row.getCell(9).toString();
+//                                                minage = Integer.valueOf((minagestr.indexOf(".") == -1) ?
+//                                                        minagestr : minagestr.substring(0, minagestr.indexOf(".")));
+//                                                maxagestr = (row.getCell(10) == null) ? "0" : row.getCell(10).toString();
+//                                                maxage = Integer.valueOf((maxagestr.indexOf(".") == -1) ?
+//                                                        maxagestr : maxagestr.substring(0, maxagestr.indexOf(".")));
+//
+////                                            System.out.println(gender + "\t" + minage + "\t" + maxage);
+//                                            } else if (std_type.equals("诊断")) {
+//                                                dept = (row.getCell(7) == null) ? "" : row.getCell(7).toString();
+//                                            } else if (std_type.equals("药品")) {
+//                                                note = (row.getCell(7) == null) ? "" : row.getCell(7).toString();
+//                                            }
+//
+//
+//                                            // 设置实体
+//                                            if (std_name.trim().length() > 0 && name.trim().length() > 0) {
+//                                                amendTermVo = new AmendTermVo();
+//                                                amendTermVo.setConcept(std_name);
+//                                                amendTermVo.setNewterm(name);
+//                                                amendTermVo.setOldterm("");
+//                                                amendTermVo.setNewtype(std_type);
+//
+//                                                medical = new Medical();
+//                                                medical.setName(name);
+//                                                medical.setStdName(std_name);
+//                                                medical.setCateName(category);
+//                                                if (std_type.equals("症状")) {
+//                                                    medical.setBodypart(prop);
+//                                                    medical.setSubBodypart(prop1);
+//                                                    medical.setGender(gender);
+//                                                    medical.setMinAge(minage);
+//                                                    medical.setMaxAge(maxage);
+//                                                    medical.setGrp(group);
+//                                                } else if (std_type.equals("诊断")) {
+//                                                    medical.setDept(dept);
+//                                                } else if (std_type.equals("药品")) {
+//                                                    medical.setNote(note);
+//                                                    String grpname = (group.length() > 0) ? group : "";
+//                                                    String catename = (category.length() > 0) ? ("(" + category + ")") : "";
+//                                                    medical.setFunction(grpname + catename);
+//                                                }
+//                                                medlist = new ArrayList<>();
+//                                                medlist.add(medical);
+//                                                amendTermVo.setMedicalInfo(medlist);
+////                                                amendTermVo.setMedicalInfo(medical);
+//
+//                                                conceptFacade.upsertConceptInfo(amendTermVo);
+//                                                System.out.println(name + ":\t 已入库.");
+//                                            }
+//
+//                                            if (category.length() > 0) {
+//                                                // 设置套餐
+//                                                amendTermVo = new AmendTermVo();
+//                                                amendTermVo.setConcept(category);
+//                                                amendTermVo.setNewterm(category);
+//                                                amendTermVo.setOldterm("");
+//                                                amendTermVo.setNewtype(cate_type);
+//
+//                                                medical = new Medical();
+//                                                medical.setName(category);
+//                                                medical.setStdName(category);
+//                                                medical.setCateName(group);
+//                                                medical.setCode("");
+//                                                medical.setNote("");
+//                                                medlist = new ArrayList<>();
+//                                                medlist.add(medical);
+//                                                amendTermVo.setMedicalInfo(medlist);
+////                                                amendTermVo.setMedicalInfo(medical);
+//
+//                                                conceptFacade.upsertConceptInfo(amendTermVo);
+//
+//                                                if (!std_name.equals(category)) {
+//                                                    relationDTO = new RelationDTO();
+//                                                    relationDTO.setStartId(conceptFacade.getConceptId(std_name, std_type));
+//                                                    relationDTO.setStartName(std_name);
+//                                                    relationDTO.setRelationId(1);
+//                                                    relationDTO.setEndId(conceptFacade.getConceptId(category, cate_type));
+//                                                    relationDTO.setEndName(category);
+//                                                    rellist = new ArrayList<>();
+//                                                    rellist.add(relationDTO);
+//                                                    amendTermVo.setRelations(rellist);
+//
+//                                                    relationFacade.upsertRelationInfo(amendTermVo);
+//                                                }
+//
+//                                                System.out.println(category + ":\t 已入库.");
+//                                            }
+//
+//                                            if (group.length() > 0) {
+//                                                // 设置大类
+//                                                amendTermVo = new AmendTermVo();
+//                                                amendTermVo.setConcept(group);
+//                                                amendTermVo.setNewterm(group);
+//                                                amendTermVo.setOldterm("");
+//                                                amendTermVo.setNewtype(grp_type);
+//
+//                                                medical = new Medical();
+//                                                medical.setName(group);
+//                                                medical.setStdName(group);
+//                                                medical.setCateName("");
+//                                                medical.setCode("");
+//                                                medical.setNote("");
+//                                                medlist = new ArrayList<>();
+//                                                medlist.add(medical);
+//                                                amendTermVo.setMedicalInfo(medlist);
+////                                                amendTermVo.setMedicalInfo(medical);
+//
+//                                                conceptFacade.upsertConceptInfo(amendTermVo);
+//
+//                                                if (!category.equals(group)) {
+//                                                    relationDTO = new RelationDTO();
+//                                                    relationDTO.setStartId(conceptFacade.getConceptId(category, cate_type));
+//                                                    relationDTO.setStartName(category);
+//                                                    relationDTO.setRelationId(1);
+//                                                    relationDTO.setEndId(conceptFacade.getConceptId(group, grp_type));
+//                                                    relationDTO.setEndName(group);
+//                                                    rellist = new ArrayList<>();
+//                                                    rellist.add(relationDTO);
+//                                                    amendTermVo.setRelations(rellist);
+//
+//                                                    relationFacade.upsertRelationInfo(amendTermVo);
+//                                                }
+//
+//                                                System.out.println(group + ":\t 已入库.");
+//                                            }
+//
+////                                        if (count >= 20) break;
+//                                        }
+//                                    }
+//                                    System.out.println(count + " 条记录添加入库.");
+//                                }
+//                            }
+//                            else {
+//                                for (Row row : sheet) {
+//                                    count++;
+//
+//                                    if (row != null) {
+//                                        if (count == 1) {
+//                                            diag = row.getCell(0).toString().trim();
+//                                            treat = row.getCell(3).toString().trim();
+//                                            diag_type = "诊断";
+//                                            treat_type = "药品";
+//                                        }
+//                                        else {
+//                                            diag = row.getCell(0).toString().trim();
+//                                            treat = row.getCell(3).toString().trim();
+//
+//                                            if (diag.length() > 0) {
+//                                                diag_id = conceptFacade.getConceptId(diag, diag_type);
+//                                                treat_id = conceptFacade.getConceptId(treat, treat_type);
+//
+//                                                if (diag_id > 0 && treat_id > 0) {
+//                                                    amendTermVo = new AmendTermVo();
+//
+//                                                    relationDTO = new RelationDTO();
+//                                                    relationDTO.setStartId(diag_id);
+//                                                    relationDTO.setStartName(diag);
+//                                                    relationDTO.setRelationId(11);
+//                                                    relationDTO.setEndId(treat_id);
+//                                                    relationDTO.setEndName(treat);
+//                                                    rellist = new ArrayList<>();
+//                                                    rellist.add(relationDTO);
+//                                                    amendTermVo.setRelations(rellist);
+//
+//                                                    relationFacade.upsertRelationInfo(amendTermVo);
+//
+//                                                    System.out.println(diag + "\t治疗\t" + treat + ":\t 已入库.");
+////                                                    break;
+//                                                }
+//                                            }
+//                                        }
+//                                    }
+//                                }
+//                            }
+//
+//                        } else {
+//                            messages.add("非excel文件无法解析!");
+//                        }
+//                    } else {
+//                        messages.add("未知文件无法解析!");
+//                    }
+//                }
+//            } else {
+//                messages.add("无文件上传!");
+//            }
+//        }
+//        catch (IOException ioe) {
+//            ioe.printStackTrace();
+//        }
+//        catch (Exception ex) {
+//            ex.printStackTrace();
+//        }
+//        finally {
+//            conceptDTO.setMessage(messages);
+//            try {
+//
+//                if (inputStream != null) {
+//                    inputStream.close();
+//                }
+//                if (wb != null) {
+//                    wb.close();
+//                }
+//            }
+//            catch (Exception e) {
+//                e.printStackTrace();
+//            }
+//        }
+//
+//        return conceptDTO;
+//    }
+//
+//    /**
+//     * 批量导入数据前,删除相关表
+//     *
+//     * @param filename
+//     *
+//     */
+//    public static void CleanupDB(String filename) {
+//        String cate = "";
+//        List<Integer> Ids;
+//
+//        try {
+//            for (String item:catelist) {
+//                if (filename.indexOf(item) >= 0) {
+//                    cate = item;
 //                    break;
-                }
-
-                if (Ids.size() > 0) {
-                    libraryDetailFacade.removeByIds(Ids);
-                }
-//            libraryDetailFacade.deleteDetail();
-
-                // 删除医学记录
-                List<Medical> limbomed = medicalFacade.getLimboItems();
-                Ids = new ArrayList<>();
-                for (int i=0; i<limbomed.size(); i++) {
-                    Ids.add(limbomed.get(i).getId().intValue());
-//                    break;
-                }
-
-                if (Ids.size() > 0) {
-                    medicalFacade.removeByIds(Ids);
-                }
-
-                // 删除概念
-                // 找出所有需要删除的概念
-                List<ConceptDTO> limboIds = conceptFacade.getLimboItems();
-                Ids = new ArrayList<>();
-                for (int i=0; i<limboIds.size(); i++) {
-                    Ids.add(limboIds.get(i).getId());
-                }
-
-                if (Ids.size() > 0) {
-                    conceptFacade.removeByIds(Ids);
-                }
-
-                // 删除关系
-                List<Relation> limboRelation = relationFacade.getLimboRelation();
-                Ids = new ArrayList<>();
-                for (int i=0; i<limboRelation.size(); i++) {
-                    Ids.add(limboRelation.get(i).getId());
-                }
-
-                if (Ids.size() > 0) {
-                    relationFacade.removeByIds(Ids);
-                }
-            }
-        }
-        catch (Exception ex) {
-            ex.printStackTrace();
-        }
-    }
+//                }
+//            }
+//
+//            if (cate.length() > 0 && !cate.equals(catelist[7])) {
+//                System.out.println(cate);
+//
+//                // 从 LibraryInfo 中找出所有需要删除的Id
+//                QueryWrapper<LibraryInfo> wrapper = new QueryWrapper<>();
+//                wrapper.likeRight("type", cate);
+//                List<LibraryInfo> libinfolist = libraryinfoFacade.list(wrapper);
+//
+//                // 删除术语信息
+//                Ids = new ArrayList<>();
+//                for (int i=0; i<libinfolist.size(); i++) {
+//                    Ids.add(libinfolist.get(i).getId().intValue());
+////                    break;
+//                }
+//
+//                if (Ids.size() > 0) {
+//                    libraryinfoFacade.removeByIds(Ids);
+//                }
+//
+//                // 删除术语详细信息
+//                List<LibraryDetail> limbodetails = libraryDetailFacade.getLimboItems();
+//                Ids = new ArrayList<>();
+//                for (int i=0; i<limbodetails.size(); i++) {
+//                    Ids.add(limbodetails.get(i).getId().intValue());
+////                    break;
+//                }
+//
+//                if (Ids.size() > 0) {
+//                    libraryDetailFacade.removeByIds(Ids);
+//                }
+////            libraryDetailFacade.deleteDetail();
+//
+//                // 删除医学记录
+//                List<Medical> limbomed = medicalFacade.getLimboItems();
+//                Ids = new ArrayList<>();
+//                for (int i=0; i<limbomed.size(); i++) {
+//                    Ids.add(limbomed.get(i).getId().intValue());
+////                    break;
+//                }
+//
+//                if (Ids.size() > 0) {
+//                    medicalFacade.removeByIds(Ids);
+//                }
+//
+//                // 删除概念
+//                // 找出所有需要删除的概念
+//                List<ConceptDTO> limboIds = conceptFacade.getLimboItems();
+//                Ids = new ArrayList<>();
+//                for (int i=0; i<limboIds.size(); i++) {
+//                    Ids.add(limboIds.get(i).getId());
+//                }
+//
+//                if (Ids.size() > 0) {
+//                    conceptFacade.removeByIds(Ids);
+//                }
+//
+//                // 删除关系
+//                List<Relation> limboRelation = relationFacade.getLimboRelation();
+//                Ids = new ArrayList<>();
+//                for (int i=0; i<limboRelation.size(); i++) {
+//                    Ids.add(limboRelation.get(i).getId());
+//                }
+//
+//                if (Ids.size() > 0) {
+//                    relationFacade.removeByIds(Ids);
+//                }
+//            }
+//        }
+//        catch (Exception ex) {
+//            ex.printStackTrace();
+//        }
+//    }
 }

+ 1 - 1
knowledgeman-service/src/main/java/com/diagbot/dto/ConceptDTO.java

@@ -23,7 +23,7 @@ public class ConceptDTO {
      * 概念id
      */
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     /**
      * 术语id

+ 43 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/GetAllConceptDTO.java

@@ -0,0 +1,43 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2018年12月5日下午5:00:34
+ */
+@Getter
+@Setter
+public class GetAllConceptDTO {
+	
+	private Long id;
+	
+	/**
+	 * 名称
+	 */
+	@ApiModelProperty(value="名称")
+	private String name;
+	
+	/**
+	 * 类型
+	 */
+	@ApiModelProperty(value="类型")
+	private String type;
+	
+	/**
+	 * 概念id
+	 */
+	@ApiModelProperty(value="概念id")
+	private Integer conceptId;
+	
+	/**
+	 * 是否标准词,1:是,0:否
+	 */
+	@ApiModelProperty(value="是否标准词,1:是,0:否")
+	private Integer isConcept;
+	
+
+}

+ 65 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/GetAllInformationDTO.java

@@ -0,0 +1,65 @@
+package com.diagbot.dto;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2018年12月5日下午5:00:34
+ */
+@Getter
+@Setter
+public class GetAllInformationDTO {
+	
+    
+    /**
+     * 概念id
+     */
+	@ApiModelProperty(value="概念id")
+    private Long conceptId;
+    
+    /**
+     * 医学标准术语
+     */
+	@ApiModelProperty(value="医学标准术语")
+    private String libName;
+    
+    /**
+     * 术语类型
+     */
+	@ApiModelProperty(value="术语类型")
+    private String libType;
+    
+    /**
+     * 同义词
+     */
+	@ApiModelProperty(value="同义词")
+    private String otherNames;
+    
+    /**
+     * 操作人
+     */
+	@ApiModelProperty(value="操作人")
+    private String operName;
+    
+    /**
+     * 操作时间
+     */
+	@JsonFormat(timezone="GMT+8",pattern ="yyyy-MM-dd HH:mm")
+	@ApiModelProperty(value="操作时间")
+    private Date operTime;
+    
+    
+    
+    
+    
+    
+    
+
+}

+ 36 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/GetConceptInfoDetailDTO.java

@@ -0,0 +1,36 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2018年12月5日下午5:00:34
+ */
+@Getter
+@Setter
+public class GetConceptInfoDetailDTO {
+    
+    /**
+     * 名称
+     */
+	@ApiModelProperty(value="名称")
+    private String name;
+    
+    /**
+     * 类型
+     */
+	@ApiModelProperty(value="类型")
+    private String type;
+    
+    /**
+     * 说明
+     */
+	@ApiModelProperty(value="说明")
+    private String remark;
+    
+    
+
+}

+ 100 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/GetMedicalInfoDetailDTO.java

@@ -0,0 +1,100 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2018年12月5日下午5:00:34
+ */
+@Getter
+@Setter
+public class GetMedicalInfoDetailDTO {
+	
+	/**
+     * 术语概念id
+     */
+	@ApiModelProperty(value="术语概念id")
+    private Integer conceptId;
+
+    /**
+     * 术语名称
+     */
+	@ApiModelProperty(value="术语名称")
+    private String name;
+
+    /**
+     * 术语标准名
+     */
+	@ApiModelProperty(value="术语标准名")
+    private String stdName;
+
+    /**
+     * 术语小类名称
+     */
+	@ApiModelProperty(value="术语小类名称")
+    private String cateName;
+
+    /**
+     * 术语类组
+     */
+	@ApiModelProperty(value="术语类组")
+    private String grp;
+
+    /**
+     * 性别:1:男, 2:女, 3:通用
+     */
+	@ApiModelProperty(value="性别:1:男, 2:女, 3:通用")
+    private String gender;
+
+    /**
+     * 症状发生的最小年龄
+     */
+	@ApiModelProperty(value="症状发生的最小年龄")
+    private Integer minAge;
+
+    /**
+     * 症状发生的最大年龄
+     */
+	@ApiModelProperty(value="症状发生的最大年龄")
+    private Integer maxAge;
+
+    /**
+     * 一级部位
+     */
+	@ApiModelProperty(value="一级部位")
+    private String bodypart;
+
+    /**
+     * 二级部位
+     */
+	@ApiModelProperty(value="二级部位")
+    private String subBodypart;
+
+    /**
+     * 显示顺序
+     */
+	@ApiModelProperty(value="显示顺序")
+    private String displayOrder;
+
+    /**
+     * 科室
+     */
+	@ApiModelProperty(value="科室")
+    private String dept;
+
+    /**
+     * 术语身份编码
+     */
+	@ApiModelProperty(value="术语身份编码")
+    private String code;
+
+    /**
+     * 备注
+     */
+	@ApiModelProperty(value="备注")
+    private String note;
+
+}

+ 76 - 6
knowledgeman-service/src/main/java/com/diagbot/entity/Bodypart.java

@@ -1,23 +1,53 @@
 package com.diagbot.entity;
 
+import java.io.Serializable;
+import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
 
 /**
  * <p>
  * 
  * </p>
  *
- * @author Weixuan Huang
- * @since 2019-01-14
+ * @author gaodm
+ * @since 2019-03-26
  */
 public class Bodypart implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 主键
+     */
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreated;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
 
     /**
      * 二级部位
@@ -39,13 +69,48 @@ public class Bodypart implements Serializable {
      */
     private Integer order;
 
-    public Integer getId() {
+    public Long getId() {
         return id;
     }
 
-    public void setId(Integer id) {
+    public void setId(Long id) {
         this.id = id;
     }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreated() {
+        return gmtCreated;
+    }
+
+    public void setGmtCreated(Date gmtCreated) {
+        this.gmtCreated = gmtCreated;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
     public String getSubBodypart() {
         return subBodypart;
     }
@@ -79,6 +144,11 @@ public class Bodypart implements Serializable {
     public String toString() {
         return "Bodypart{" +
         "id=" + id +
+        ", isDeleted=" + isDeleted +
+        ", gmtCreated=" + gmtCreated +
+        ", gmtModified=" + gmtModified +
+        ", creator=" + creator +
+        ", modifier=" + modifier +
         ", subBodypart=" + subBodypart +
         ", subOrder=" + subOrder +
         ", bodypart=" + bodypart +

+ 63 - 24
knowledgeman-service/src/main/java/com/diagbot/entity/Concept.java

@@ -1,80 +1,119 @@
 package com.diagbot.entity;
 
+import java.io.Serializable;
+import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
 /**
  * <p>
  * 
  * </p>
  *
- * @author Weixuan Huang
- * @since 2019-01-30
+ * @author gaodm
+ * @since 2019-03-26
  */
 public class Concept implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
     /**
-     * 概念id
+     * 主键
      */
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     /**
-     * 术语id
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
      */
-    private Integer libId;
+    private Date gmtCreated;
 
     /**
-     * 创建时间
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
      */
-    private LocalDateTime gmtCreated;
+    private Date gmtModified;
 
     /**
-     * 修改时间
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 术语id
      */
-    private LocalDateTime gmtModified;
+    private Long libId;
 
-    public Integer getId() {
+    public Long getId() {
         return id;
     }
 
-    public void setId(Integer id) {
+    public void setId(Long id) {
         this.id = id;
     }
-    public Integer getLibId() {
-        return libId;
+    public String getIsDeleted() {
+        return isDeleted;
     }
 
-    public void setLibId(Integer libId) {
-        this.libId = libId;
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
     }
-    public LocalDateTime getGmtCreated() {
+    public Date getGmtCreated() {
         return gmtCreated;
     }
 
-    public void setGmtCreated(LocalDateTime gmtCreated) {
+    public void setGmtCreated(Date gmtCreated) {
         this.gmtCreated = gmtCreated;
     }
-    public LocalDateTime getGmtModified() {
+    public Date getGmtModified() {
         return gmtModified;
     }
 
-    public void setGmtModified(LocalDateTime gmtModified) {
+    public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getLibId() {
+        return libId;
+    }
+
+    public void setLibId(Long libId) {
+        this.libId = libId;
+    }
 
     @Override
     public String toString() {
         return "Concept{" +
         "id=" + id +
-        ", libId=" + libId +
+        ", isDeleted=" + isDeleted +
         ", gmtCreated=" + gmtCreated +
         ", gmtModified=" + gmtModified +
+        ", creator=" + creator +
+        ", modifier=" + modifier +
+        ", libId=" + libId +
         "}";
     }
 }

+ 86 - 6
knowledgeman-service/src/main/java/com/diagbot/entity/Lexicon.java

@@ -1,35 +1,102 @@
 package com.diagbot.entity;
 
+import java.io.Serializable;
+import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
 
 /**
  * <p>
  * 
  * </p>
  *
- * @author Weixuan Huang
- * @since 2019-01-14
+ * @author gaodm
+ * @since 2019-03-26
  */
 public class Lexicon implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 主键
+     */
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreated;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
 
     private String name;
 
     private String remark;
 
-    public Integer getId() {
+    private String classCont;
+
+    public Long getId() {
         return id;
     }
 
-    public void setId(Integer id) {
+    public void setId(Long id) {
         this.id = id;
     }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreated() {
+        return gmtCreated;
+    }
+
+    public void setGmtCreated(Date gmtCreated) {
+        this.gmtCreated = gmtCreated;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
     public String getName() {
         return name;
     }
@@ -44,13 +111,26 @@ public class Lexicon implements Serializable {
     public void setRemark(String remark) {
         this.remark = remark;
     }
+    public String getClassCont() {
+        return classCont;
+    }
+
+    public void setClassCont(String classCont) {
+        this.classCont = classCont;
+    }
 
     @Override
     public String toString() {
         return "Lexicon{" +
         "id=" + id +
+        ", isDeleted=" + isDeleted +
+        ", gmtCreated=" + gmtCreated +
+        ", gmtModified=" + gmtModified +
+        ", creator=" + creator +
+        ", modifier=" + modifier +
         ", name=" + name +
         ", remark=" + remark +
+        ", classCont=" + classCont +
         "}";
     }
 }

+ 76 - 7
knowledgeman-service/src/main/java/com/diagbot/entity/LexiconRelationship.java

@@ -1,36 +1,100 @@
 package com.diagbot.entity;
 
+import java.io.Serializable;
+import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 
-import java.io.Serializable;
-
 /**
  * <p>
  * 
  * </p>
  *
- * @author Weixuan Huang
- * @since 2019-02-01
+ * @author gaodm
+ * @since 2019-03-26
  */
 public class LexiconRelationship implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 主键
+     */
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreated;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
 
     private String name;
 
     private String code;
 
-    public Integer getId() {
+    public Long getId() {
         return id;
     }
 
-    public void setId(Integer id) {
+    public void setId(Long id) {
         this.id = id;
     }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreated() {
+        return gmtCreated;
+    }
+
+    public void setGmtCreated(Date gmtCreated) {
+        this.gmtCreated = gmtCreated;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
     public String getName() {
         return name;
     }
@@ -50,6 +114,11 @@ public class LexiconRelationship implements Serializable {
     public String toString() {
         return "LexiconRelationship{" +
         "id=" + id +
+        ", isDeleted=" + isDeleted +
+        ", gmtCreated=" + gmtCreated +
+        ", gmtModified=" + gmtModified +
+        ", creator=" + creator +
+        ", modifier=" + modifier +
         ", name=" + name +
         ", code=" + code +
         "}";

+ 14 - 14
knowledgeman-service/src/main/java/com/diagbot/entity/LibraryDetail.java

@@ -1,18 +1,18 @@
 package com.diagbot.entity;
 
+import java.io.Serializable;
+import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
 /**
  * <p>
  * 提示信息明细
  * </p>
  *
- * @author Weixuan Huang
- * @since 2019-01-30
+ * @author gaodm
+ * @since 2019-03-26
  */
 public class LibraryDetail implements Serializable {
 
@@ -32,12 +32,12 @@ public class LibraryDetail implements Serializable {
     /**
      * 记录创建时间
      */
-    private LocalDateTime gmtCreate;
+    private Date gmtCreated;
 
     /**
      * 记录修改时间,如果时间是1970年则表示纪录未修改
      */
-    private LocalDateTime gmtModified;
+    private Date gmtModified;
 
     /**
      * 创建人,0表示无创建人值
@@ -103,18 +103,18 @@ public class LibraryDetail implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
-    public LocalDateTime getGmtCreate() {
-        return gmtCreate;
+    public Date getGmtCreated() {
+        return gmtCreated;
     }
 
-    public void setGmtCreate(LocalDateTime gmtCreate) {
-        this.gmtCreate = gmtCreate;
+    public void setGmtCreated(Date gmtCreated) {
+        this.gmtCreated = gmtCreated;
     }
-    public LocalDateTime getGmtModified() {
+    public Date getGmtModified() {
         return gmtModified;
     }
 
-    public void setGmtModified(LocalDateTime gmtModified) {
+    public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
     public String getCreator() {
@@ -193,7 +193,7 @@ public class LibraryDetail implements Serializable {
         return "LibraryDetail{" +
         "id=" + id +
         ", isDeleted=" + isDeleted +
-        ", gmtCreate=" + gmtCreate +
+        ", gmtCreated=" + gmtCreated +
         ", gmtModified=" + gmtModified +
         ", creator=" + creator +
         ", modifier=" + modifier +

+ 28 - 15
knowledgeman-service/src/main/java/com/diagbot/entity/LibraryInfo.java

@@ -1,18 +1,18 @@
 package com.diagbot.entity;
 
+import java.io.Serializable;
+import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
 /**
  * <p>
  * 提示信息
  * </p>
  *
- * @author Weixuan Huang
- * @since 2019-01-30
+ * @author gaodm
+ * @since 2019-03-26
  */
 public class LibraryInfo implements Serializable {
 
@@ -32,12 +32,12 @@ public class LibraryInfo implements Serializable {
     /**
      * 记录创建时间
      */
-    private LocalDateTime gmtCreated;
+    private Date gmtCreated;
 
     /**
      * 记录修改时间,如果时间是1970年则表示纪录未修改
      */
-    private LocalDateTime gmtModified;
+    private Date gmtModified;
 
     /**
      * 创建人,0表示无创建人值
@@ -67,7 +67,12 @@ public class LibraryInfo implements Serializable {
     /**
      * 概念id
      */
-    private Integer conceptId;
+    private Long conceptId;
+
+    /**
+     * 术语排序
+     */
+    private Integer orderNo;
 
     /**
      * 是否标准词,1:是,0:否
@@ -88,18 +93,18 @@ public class LibraryInfo implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
-    public LocalDateTime getGmtCreated() {
+    public Date getGmtCreated() {
         return gmtCreated;
     }
 
-    public void setGmtCreated(LocalDateTime gmtCreated) {
+    public void setGmtCreated(Date gmtCreated) {
         this.gmtCreated = gmtCreated;
     }
-    public LocalDateTime getGmtModified() {
+    public Date getGmtModified() {
         return gmtModified;
     }
 
-    public void setGmtModified(LocalDateTime gmtModified) {
+    public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
     public String getCreator() {
@@ -137,13 +142,20 @@ public class LibraryInfo implements Serializable {
     public void setRemark(String remark) {
         this.remark = remark;
     }
-    public Integer getConceptId() {
+    public Long getConceptId() {
         return conceptId;
     }
 
-    public void setConceptId(Integer conceptId) {
+    public void setConceptId(Long conceptId) {
         this.conceptId = conceptId;
     }
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
     public Integer getIsConcept() {
         return isConcept;
     }
@@ -157,7 +169,7 @@ public class LibraryInfo implements Serializable {
         return "LibraryInfo{" +
         "id=" + id +
         ", isDeleted=" + isDeleted +
-        ", gmtCreate=" + gmtCreated +
+        ", gmtCreated=" + gmtCreated +
         ", gmtModified=" + gmtModified +
         ", creator=" + creator +
         ", modifier=" + modifier +
@@ -165,6 +177,7 @@ public class LibraryInfo implements Serializable {
         ", type=" + type +
         ", remark=" + remark +
         ", conceptId=" + conceptId +
+        ", orderNo=" + orderNo +
         ", isConcept=" + isConcept +
         "}";
     }

+ 79 - 23
knowledgeman-service/src/main/java/com/diagbot/entity/Medical.java

@@ -1,8 +1,10 @@
 package com.diagbot.entity;
 
+import java.io.Serializable;
+import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
 
 /**
  * <p>
@@ -10,19 +12,47 @@ import java.io.Serializable;
  * </p>
  *
  * @author gaodm
- * @since 2019-03-01
+ * @since 2019-03-26
  */
 public class Medical implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 主键
+     */
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreated;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
 
     /**
      * 术语概念id
      */
-    private Integer conceptId;
+    private Long conceptId;
 
     /**
      * 术语名称
@@ -45,7 +75,7 @@ public class Medical implements Serializable {
     private String grp;
 
     /**
-     * 用名称
+     * 用名称
      */
     private String function;
 
@@ -94,23 +124,53 @@ public class Medical implements Serializable {
      */
     private String note;
 
-    /**
-     * 是否删除,N:未删除,Y:删除
-     */
-    private String isDeleted;
-
-    public Integer getId() {
+    public Long getId() {
         return id;
     }
 
-    public void setId(Integer id) {
+    public void setId(Long id) {
         this.id = id;
     }
-    public Integer getConceptId() {
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreated() {
+        return gmtCreated;
+    }
+
+    public void setGmtCreated(Date gmtCreated) {
+        this.gmtCreated = gmtCreated;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getConceptId() {
         return conceptId;
     }
 
-    public void setConceptId(Integer conceptId) {
+    public void setConceptId(Long conceptId) {
         this.conceptId = conceptId;
     }
     public String getName() {
@@ -212,18 +272,15 @@ public class Medical implements Serializable {
         this.note = note;
     }
 
-    public String getIs_deleted() {
-        return isDeleted;
-    }
-
-    public void setIs_deleted(String isDeleted) {
-        this.isDeleted = isDeleted;
-    }
-
     @Override
     public String toString() {
         return "Medical{" +
         "id=" + id +
+        ", isDeleted=" + isDeleted +
+        ", gmtCreated=" + gmtCreated +
+        ", gmtModified=" + gmtModified +
+        ", creator=" + creator +
+        ", modifier=" + modifier +
         ", conceptId=" + conceptId +
         ", name=" + name +
         ", stdName=" + stdName +
@@ -239,7 +296,6 @@ public class Medical implements Serializable {
         ", dept=" + dept +
         ", code=" + code +
         ", note=" + note +
-        ", isDeleted=" + isDeleted +
         "}";
     }
 }

+ 81 - 38
knowledgeman-service/src/main/java/com/diagbot/entity/Relation.java

@@ -1,99 +1,142 @@
 package com.diagbot.entity;
 
+import java.io.Serializable;
+import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 
-import java.io.Serializable;
-
 /**
  * <p>
  * 
  * </p>
  *
- * @author Weixuan Huang
- * @since 2019-01-31
+ * @author gaodm
+ * @since 2019-03-26
  */
 public class Relation implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 主键
+     */
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     /**
-     * 关系起点术语id
+     * 是否删除,N:未删除,Y:删除
      */
-    private Integer startId;
+    private String isDeleted;
 
     /**
-     * 关系id
+     * 记录创建时间
      */
-    private Integer relationId;
+    private Date gmtCreated;
 
     /**
-     * 关系终点术语id
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
      */
-    private Integer endId;
+    private String modifier;
 
     /**
-     * 子节点
+     * 关系起点术语id
      */
-//    private Relation nextNode;
+    private Long startId;
 
     /**
-     * 父节点
+     * 关系id
      */
-//    private Relation prevNode;
+    private Long relationId;
 
+    /**
+     * 关系终点术语id
+     */
+    private Long endId;
 
-    public Integer getId() {
+    public Long getId() {
         return id;
     }
 
-    public void setId(Integer id) {
+    public void setId(Long id) {
         this.id = id;
     }
-    public Integer getStartId() {
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreated() {
+        return gmtCreated;
+    }
+
+    public void setGmtCreated(Date gmtCreated) {
+        this.gmtCreated = gmtCreated;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getStartId() {
         return startId;
     }
 
-    public void setStartId(Integer startId) {
+    public void setStartId(Long startId) {
         this.startId = startId;
     }
-    public Integer getRelationId() {
+    public Long getRelationId() {
         return relationId;
     }
 
-    public void setRelationId(Integer relationId) {
+    public void setRelationId(Long relationId) {
         this.relationId = relationId;
     }
-    public Integer getEndId() {
+    public Long getEndId() {
         return endId;
     }
 
-    public void setEndId(Integer endId) {
+    public void setEndId(Long endId) {
         this.endId = endId;
     }
-    /*
-    public Relation next() {
-        return nextNode;
-    }
-    public void setNext(Relation node) {
-        nextNode = node;
-    }
-
-    public Relation prev() {
-        return prevNode;
-    }
-    public void setPrev(Relation node) {
-        prevNode = node;
-    }
-    */
 
     @Override
     public String toString() {
         return "Relation{" +
         "id=" + id +
+        ", isDeleted=" + isDeleted +
+        ", gmtCreated=" + gmtCreated +
+        ", gmtModified=" + gmtModified +
+        ", creator=" + creator +
+        ", modifier=" + modifier +
         ", startId=" + startId +
         ", relationId=" + relationId +
         ", endId=" + endId +

+ 410 - 201
knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -1,26 +1,52 @@
 package com.diagbot.facade;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.*;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.diagbot.api.ImportExcel;
-import com.diagbot.dto.ConceptDTO;
-import com.diagbot.dto.LibraryInfoDTO;
-import com.diagbot.entity.*;
-import com.diagbot.service.impl.ConceptServiceImpl;
-import com.diagbot.vo.AmendTermVo;
-import com.diagbot.vo.ConceptVo;
-import com.diagbot.vo.KnowledgeVo;
-import com.diagbot.vo.TermVo;
-import org.springframework.beans.BeanUtils;
+import java.io.InputStream;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
-
-import java.util.ArrayList;
-import java.util.List;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.GetAllConceptDTO;
+import com.diagbot.dto.GetAllInformationDTO;
+import com.diagbot.dto.GetConceptInfoDetailDTO;
+import com.diagbot.entity.Concept;
+import com.diagbot.entity.LibraryDetail;
+import com.diagbot.entity.LibraryInfo;
+import com.diagbot.entity.Medical;
+import com.diagbot.entity.Relation;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.LibraryInfoService;
+import com.diagbot.service.impl.ConceptServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.AddConceptInfoDetailVO;
+import com.diagbot.vo.AddConceptInfoVO;
+import com.diagbot.vo.GetAllConceptVO;
+import com.diagbot.vo.GetAllInformationVO;
+import com.diagbot.vo.GetConceptInfoDetailVO;
+import com.diagbot.vo.RemoveConceptInfoVO;
 
 
 /**
@@ -39,214 +65,397 @@ public class ConceptFacade extends ConceptServiceImpl {
     private MedicalFacade medicalFacade;
     @Autowired
     private RelationFacade relationFacade;
-
-
+    @Autowired
+    @Qualifier("libraryInfoServiceImpl")
+    private LibraryInfoService libraryInfoService;
+    
     /**
-     * 获取医学术语基本信息
-     *
-     * @param termvo
-     * @return ConceptDTO
+     * 获取所有医学术语命名
+     * @param getAllConceptVO
+     * @return
      */
-    public ConceptDTO getConceptInfo(@RequestBody TermVo termvo) {
-
-//        List<ConceptDTO> conceptDTOs = new ArrayList<>();
-        ConceptDTO conceptDTO = null;
-        List<LibraryInfo> libraryinfos;
-
-        // 获取医学术语的基本信息
-        QueryWrapper<LibraryInfo> query = new QueryWrapper<>();
-        query.eq("name", termvo.getTerm());
-        query.eq("type", termvo.getType());
-        query.eq("is_concept", 1);
-        LibraryInfo libraryInfo = libraryinfoFacade.getOne(query);
-
-        if ( libraryInfo != null ) {
-
-            conceptDTO = new ConceptDTO();
-
-            conceptDTO.setId(libraryInfo.getConceptId());
-            conceptDTO.setLibId(libraryInfo.getId().intValue());
-            conceptDTO.setName(libraryInfo.getName());
-
-            query = new QueryWrapper<>();
-            query.eq("concept_id", libraryInfo.getConceptId());
-            query.isNull("is_concept");
-
-            libraryinfos = libraryinfoFacade.list(query);
-            conceptDTO.setLibraryInfo(libraryinfos);
-
-        }
-
-        return conceptDTO;
+    public List<GetAllConceptDTO> getAllConcept(GetAllConceptVO getAllConceptVO){
+    	QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
+    	libraryInfoQe.eq("is_deleted", "N");
+    	if(getAllConceptVO.getIsConcept()!=null){
+    		libraryInfoQe.eq("is_concept", getAllConceptVO.getIsConcept());
+    	}
+    	if(StringUtil.isNotBlank(getAllConceptVO.getName())){
+    		libraryInfoQe.like("name", getAllConceptVO.getName());
+    	}
+    	
+    	List<LibraryInfo> libraryInfoList = libraryinfoFacade.list(libraryInfoQe);
+    	
+    	return BeanUtil.listCopyTo(libraryInfoList, GetAllConceptDTO.class);
     }
-
-
+    
     /**
-     * 获取标准术语名称列表
-     *
-     * @param conceptVo
-     * @return IPage<LibraryDTO>
+     * 获取医学术语命名列表
+     * @param getAllInformationVO
+     * @return
      */
-    public IPage<LibraryInfoDTO> getAllConcepts(ConceptVo conceptVo) {
-
-        return libraryinfoFacade.getAllConcept(conceptVo);
+    public IPage<GetAllInformationDTO> getAllInformation(GetAllInformationVO getAllInformationVO) {
+        return libraryinfoFacade.getAllInformation(getAllInformationVO);
     }
-
+    
     /**
-     * 获取标准术语信息列表
-     *
-     * @param conceptVo
-     * @return IPage<LibraryDTO>
+     * 医学术语命名删除
+     * @param removeConceptInfoVO
+     * @return
      */
-    public IPage<LibraryInfoDTO> getAllInformation(ConceptVo conceptVo) {
-
-        return libraryinfoFacade.getAllInfor(conceptVo);
+    public Boolean removeConceptInfo(RemoveConceptInfoVO removeConceptInfoVO) {
+    	QueryWrapper<Relation> relationQe = new QueryWrapper<Relation>();
+    	relationQe.eq("is_deleted", "N");
+    	relationQe.and(i->i.eq("start_id", removeConceptInfoVO.getConceptId()).or().eq("end_id", removeConceptInfoVO.getConceptId()));
+    	if(relationFacade.list(relationQe).size()>0){
+    		throw new CommonException(CommonErrorCode.RPC_ERROR,"关系信息未删除");
+    	}
+    	
+    	QueryWrapper<Medical> medicalQe = new QueryWrapper<Medical>();
+    	medicalQe.eq("is_deleted", "N");
+    	medicalQe.eq("concept_id", removeConceptInfoVO.getConceptId());
+    	if(medicalFacade.list(medicalQe).size()>0){
+    		throw new CommonException(CommonErrorCode.RPC_ERROR,"医学信息未删除");
+    	}
+    	
+    	QueryWrapper<LibraryDetail> libraryDetailQe = new QueryWrapper<LibraryDetail>();
+    	libraryDetailQe.eq("is_deleted", "N");
+    	libraryDetailQe.eq("concept_id", removeConceptInfoVO.getConceptId());
+    	if(libraryDetailFacade.list(libraryDetailQe).size()>0){
+    		throw new CommonException(CommonErrorCode.RPC_ERROR,"静态知识信息未删除");
+    	}
+    	
+    	String currentUser = UserUtils.getCurrentPrincipleID();
+    	Date now = DateUtil.now(); 
+    	
+    	QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
+    	libraryInfoQe.eq("concept_id", removeConceptInfoVO.getConceptId());
+    	LibraryInfo libraryInfo = new LibraryInfo();
+    	libraryInfo.setIsDeleted("Y");
+    	libraryInfo.setGmtModified(now);
+    	libraryInfo.setModifier(currentUser);
+    	libraryinfoFacade.update(libraryInfo, libraryInfoQe);
+    	
+    	Concept concept = new Concept();
+    	concept.setId(removeConceptInfoVO.getConceptId());
+    	concept.setIsDeleted("Y");
+    	concept.setModifier(currentUser);
+    	concept.setGmtModified(now);
+    	this.updateById(concept);
+    	
+        return true;
     }
-
-
+    
     /**
-     * 更新医学术语信息
-     *
-     * @param amendTermVo
-     * @return ConceptDTO
+     * 获取医学术语命名详情
+     * @param getConceptInfoDetailVO
+     * @return
      */
-    public ConceptDTO upsertConceptInfo(@RequestBody AmendTermVo amendTermVo) {
-        ConceptDTO conceptDTO = new ConceptDTO();
-
-        TermVo termVo = new TermVo();
-        termVo.setTerm(amendTermVo.getNewterm());
-        termVo.setType(amendTermVo.getNewtype());
-
-        LibraryInfo libraryInfo = libraryinfoFacade.upsertLibraryInfo(amendTermVo);
-
-        QueryWrapper<Concept> query = new QueryWrapper<>();
-        query.eq("lib_id", libraryInfo.getId());
-        Concept concept = getOne(query);
-
-        if (concept == null) {
-            concept = new Concept();
-            concept.setLibId(libraryInfo.getId().intValue());
-            saveOrUpdate(concept);
-
-            concept = getOne(query);
-        }
-
-        libraryInfo.setConceptId(concept.getId());
-        libraryInfo.setIsConcept(1);
-        libraryinfoFacade.saveOrUpdate(libraryInfo);
-
-        if (amendTermVo.getLibraryInfo() != null && amendTermVo.getLibraryInfo().size() > 0) {
-            List<LibraryInfo> libraryInfos = amendTermVo.getLibraryInfo();
-            for (LibraryInfo libraryinfo:libraryInfos) {
-                libraryinfo.setConceptId(concept.getId());
-                libraryinfo.setIsConcept(0);
-                libraryinfo.setIsDeleted("N");
-                libraryinfoFacade.saveOrUpdate(libraryinfo);
-            }
-        }
-
-
-        query = new QueryWrapper<>();
-        query.eq("name", amendTermVo.getNewterm());
-        query.eq("type", amendTermVo.getNewtype());
-        concept = getOne(query);
-
-        BeanUtils.copyProperties(concept, conceptDTO);
-
-        QueryWrapper<LibraryInfo> conceptquery = new QueryWrapper<>();
-        conceptquery = new QueryWrapper<>();
-        conceptquery.eq("concept_id", concept.getId());
-        conceptquery.isNull("is_concept");
-        List<LibraryInfo> libraryInfos = libraryinfoFacade.list(conceptquery);
-
-        conceptDTO.setLibraryInfo(libraryInfos);
-
-        return conceptDTO;
+    public List<GetConceptInfoDetailDTO> getConceptInfoDetail(GetConceptInfoDetailVO getConceptInfoDetailVO){
+    	QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
+    	libraryInfoQe.eq("concept_id", getConceptInfoDetailVO.getConceptId());
+    	libraryInfoQe.eq("is_deleted", "N");
+    	libraryInfoQe.orderByDesc("is_concept").orderByAsc("order_no");
+    	List<LibraryInfo> libraryInfoList = libraryinfoFacade.list(libraryInfoQe);
+    	
+    	return BeanUtil.listCopyTo(libraryInfoList, GetConceptInfoDetailDTO.class);
     }
-
+    
     /**
-     * 删除医学术语信息
-     *
-     * @param termVo
-     * @return ConceptDTO
-     *
+     * 医学术语命名添加或者编辑
+     * @param addConceptInfoVO
+     * @return
      */
-    public ConceptDTO removeConceptInfo(TermVo termVo) {
-
-        ConceptDTO conceptDTO = getConcept(termVo);
-        KnowledgeVo knowledgeVo = new KnowledgeVo();
-
-        if (conceptDTO == null) {
-            conceptDTO = new ConceptDTO();
-            String msg = "概念\"" + termVo.getTerm() + "\"不存在!";
-            conceptDTO.setMessage(new ArrayList<String>());
-            conceptDTO.getMessage().add(msg);
-
-            return conceptDTO;
-        }
-        else {
-            knowledgeVo.setTerm(termVo.getTerm());
-            knowledgeVo.setType(termVo.getType());
-            conceptDTO = libraryDetailFacade.getConceptKnowledge(knowledgeVo);
-            if (conceptDTO.getInformation() != null && conceptDTO.getInformation().size() > 0) {
-                String msg = "概念\"" + termVo.getTerm() + "\"的静态知识还存在!";
-                conceptDTO.setMessage(new ArrayList<String>());
-                conceptDTO.getMessage().add(msg);
-
-                return conceptDTO;
-            }
-
-        }
-
-        return conceptDTO;
+    @SuppressWarnings("unchecked")
+	public Boolean addConceptInfo(AddConceptInfoVO addConceptInfoVO){
+    	Map<String,Object> ckMap = checkAddConceptInfoVO(addConceptInfoVO);
+    	Object message = ckMap.get("message");
+    	if(message!=null){
+    		throw new CommonException(CommonErrorCode.RPC_ERROR,message.toString());
+    	}
+    	
+    	saveConceptInfos((List<LibraryInfo>)ckMap.get("libraryInfoList"));
+    	
+    	return true;
     }
-
-
-
-
+    
+    /**
+     * 医学术语命名保存
+     * @param libraryInfoList
+     * @return
+     */
+    private void saveConceptInfos(List<LibraryInfo> saveOrUpdateLibraryInfoList){
+    	if(ListUtil.isNotEmpty(saveOrUpdateLibraryInfoList)){
+    		libraryInfoService.saveOrUpdateBatch(saveOrUpdateLibraryInfoList);
+    	}
+    }
+    
     /**
-     * 获取概念Id
-     *
-     * @param term
-     * @return Integer
+     * 校验即将添加的数据
+     * @param addConceptInfoVO
+     * @return 返回map中,包含2个字段:message和libraryInfoList,message-为空时,表示正常,取LibraryInfo的集合libraryInfoList
      */
-    public int getConceptId(String term, String type) {
-        int id = 0;
-        TermVo termVo = new TermVo();
+    private Map<String,Object> checkAddConceptInfoVO(AddConceptInfoVO addConceptInfoVO){
+    	Map<String,Object> retMap = new HashMap<>();
+    	
+    	List<AddConceptInfoDetailVO> addConceptInfoDetailVOMainList = addConceptInfoVO.getDetailList().stream().filter(i->i.getIsConcept()==1).collect(Collectors.toList());
+    	if(addConceptInfoDetailVOMainList.size()==0){
+    		retMap.put("message", "无标准术语");
+    		return retMap;
+    	}
+    	if(addConceptInfoDetailVOMainList.size()>1){
+    		retMap.put("message", "标准术语只能有一个");
+    		return retMap;
+    	}
+    	
+    	List<LibraryInfo> saveOrUpdateLibraryInfoList = new ArrayList<>();
+    	
+    	AddConceptInfoDetailVO addConceptInfoDetailVOMain = addConceptInfoDetailVOMainList.get(0);//提交过来的标准术语
+    	
+    	StringBuffer sbf = new StringBuffer();
+    	
+    	QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
+    	libraryInfoQe.eq("type", addConceptInfoVO.getType());
+    	libraryInfoQe.in("name", addConceptInfoVO.getDetailList().stream().map(i->i.getName()).collect(Collectors.toList()));
+    	Map<String,LibraryInfo> libraryInfoMap = libraryinfoFacade.list(libraryInfoQe).stream().collect(Collectors.toMap(LibraryInfo::getName, i->i));
+    	
+    	LibraryInfo libraryInfoMain = libraryInfoMap.get(addConceptInfoDetailVOMain.getName());
+    	if(libraryInfoMain!=null&&libraryInfoMain.getIsDeleted().equals("N")&&libraryInfoMain.getIsConcept()==0){
+    		retMap.put("message", "标准术语已被占用");
+    		return retMap;
+    	}
+    	
+		for(AddConceptInfoDetailVO i:addConceptInfoVO.getDetailList()){
+			if(i.getIsConcept()==1){
+				continue;
+			}
+			LibraryInfo libraryInfo = libraryInfoMap.get(i.getName());
+			if(libraryInfo!=null){
+				if(libraryInfo.getIsDeleted().equals("N")&&(libraryInfoMain == null||libraryInfo.getConceptId()!=libraryInfoMain.getConceptId())){
+					sbf.append(i.getName()).append(" ");
+					continue;
+				}
+				libraryInfo.setIsDeleted("N");
+				libraryInfo.setRemark(i.getRemark());
+			}else{
+				libraryInfo = new LibraryInfo();
+				BeanUtil.copyProperties(i, libraryInfo);
+			}
+			saveOrUpdateLibraryInfoList.add(libraryInfo);
+		}
+		
+		if(sbf.length()>0){
+			sbf.append("已被占用");
+			retMap.put("message", sbf.toString());
+			return retMap;
+		}
+		
+		Long conceptId = null;
+		if(libraryInfoMain==null){
+			libraryInfoMain = new LibraryInfo();
+			BeanUtil.copyProperties(addConceptInfoDetailVOMain, libraryInfoMain);
+			libraryInfoMain.setType(addConceptInfoVO.getType());
+			libraryinfoFacade.save(libraryInfoMain);
+			Concept concept = new Concept();
+			concept.setLibId(libraryInfoMain.getId());
+			save(concept);
+			conceptId = concept.getId();
+		}else{
+			libraryInfoMain.setRemark(addConceptInfoDetailVOMain.getRemark());
+			Concept concept = new Concept();
+			if(libraryInfoMain.getIsDeleted().equals("N")){
+				conceptId = libraryInfoMain.getConceptId();
+			}else{
+				libraryInfoMain.setIsDeleted("N");
+				if(libraryInfoMain.getIsConcept()==1){
+					concept.setIsDeleted("N");
+				}else{
+					concept.setLibId(libraryInfoMain.getId());
+				}
+			}
+		}
+		
+		saveOrUpdateLibraryInfoList.add(libraryInfoMain);
+		for(LibraryInfo i : saveOrUpdateLibraryInfoList){
+			i.setConceptId(conceptId);
+			i.setType(addConceptInfoVO.getType());
+		}
+		
+		retMap.put("libraryInfoList", saveOrUpdateLibraryInfoList);
+		
+    	return retMap;
+    }
 
+    /**
+     * 医学术语命名excel文件导入
+     * @param file
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+	public Boolean conceptInfoExcelIm(MultipartFile file) {
+        List<AddConceptInfoVO> addConceptInfoVOList = new ArrayList<>();
+        StringBuffer sbf = new StringBuffer();
+        InputStream inputStream = null;
+        Workbook wb = null;
         try {
-            termVo.setTerm(term);
-            termVo.setType(type);
-            ConceptDTO conceptDTO = getConcept(termVo);
-            if (conceptDTO != null) {
-                id = conceptDTO.getId();
+            if (!file.isEmpty()) {
+                inputStream = file.getInputStream();
+                if (inputStream.available() > 512000) {
+                    sbf.append("文件最大支持500KB!").append("<br/>");
+                } else {
+                    String fileName = file.getOriginalFilename();
+                    if (fileName.lastIndexOf(".") != -1) {
+                        String type = fileName.substring(fileName.lastIndexOf("."));
+                        if (type.equals(".xls")) {
+                            wb = new HSSFWorkbook(inputStream);
+                        } else if (type.equals(".xlsx")) {
+                            wb = new XSSFWorkbook(inputStream);
+                        }
+                        if (wb != null) {
+                            
+                            Sheet sheet = wb.getSheetAt(0);
+                            int count = 0;
+                            String libName, libType, otherNames, remark;
+                            for (Row row : sheet) {
+                                count++;
+                                if (count == 1 || row == null) {
+                                    continue;
+                                }
+                                libName = getValue(row.getCell(0)).trim().replace(" ", "");
+                                libType = getValue(row.getCell(1)).trim().replace(" ", "");
+                                otherNames = getValue(row.getCell(2)).trim().replace(" ", "");
+                                remark = getValue(row.getCell(3)).trim().replace(" ", "");
+                                if(StringUtil.isEmpty(libName) && StringUtil.isEmpty(libType)
+                                        && StringUtil.isEmpty(otherNames) && StringUtil.isEmpty(remark)){
+                                	continue;
+                                }
+                                if (StringUtil.isEmpty(libName) || StringUtil.isEmpty(libType) || StringUtil.isEmpty(otherNames)) {
+                                    sbf.append("第" + count + "行数据不完整;").append("<br/>");
+                                    continue;
+                                }
+                                
+                                AddConceptInfoVO addConceptInfoVO = new AddConceptInfoVO();
+                                addConceptInfoVO.setName(libName);
+                                addConceptInfoVO.setType(libType);
+                                List<AddConceptInfoDetailVO> detailList = new ArrayList<>();
+                                for(String nm:otherNames.split(",")){
+                                	if(StringUtil.isBlank(nm)){
+                                		continue;
+                                	}
+                                	AddConceptInfoDetailVO addConceptInfoDetailVO = new AddConceptInfoDetailVO();
+                                	addConceptInfoDetailVO.setName(nm);
+                                	addConceptInfoDetailVO.setType(libType);
+                                	if(libName.equals(nm)){
+                                		addConceptInfoDetailVO.setIsConcept(1);
+                                		addConceptInfoDetailVO.setRemark(remark);
+                                	}else{
+                                		addConceptInfoDetailVO.setIsConcept(0);
+                                	}
+                                	detailList.add(addConceptInfoDetailVO);
+                                }
+                                addConceptInfoVO.setDetailList(detailList);
+                                addConceptInfoVOList.add(addConceptInfoVO);
+                            }
+                        } else {
+                            sbf.append("非excel文件无法解析!").append("<br/>");
+                        }
+                    } else {
+                        sbf.append("未知文件无法解析!").append("<br/>");
+                    }
+                }
+            } else {
+                sbf.append("无文件上传!").append("<br/>");
+            }
+        } catch (Exception e) {
+            sbf.append("解析失败!").append("<br/>");
+        } finally {
+            try {
+                if (wb != null) {
+                    wb.close();
+                }
+                if (inputStream != null) {
+                    inputStream.close();
+                }
+            } catch (Exception e) {
             }
         }
-        catch (Exception ex) {
-            ex.printStackTrace();
+        
+        /*****************excel文件本身问题提醒************************/
+        if(sbf.length()>0){
+        	throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
         }
-        finally {
-            return id;
+        
+        /****************excel文件中所有术语存在重复提示---名字和类型一样即重复***********************/
+        List<AddConceptInfoDetailVO> addConceptInfoDetailVOList = new ArrayList<>();
+        addConceptInfoVOList.forEach(i->{
+        	addConceptInfoDetailVOList.addAll(i.getDetailList());
+        });
+        Map<String,List<AddConceptInfoDetailVO>> addConceptInfoDetailVOListMap = addConceptInfoDetailVOList.stream().collect(Collectors.groupingBy(AddConceptInfoDetailVO::getName));
+        for(String key : addConceptInfoDetailVOListMap.keySet()){
+        	if(addConceptInfoDetailVOListMap.get(key).size()>1&&addConceptInfoDetailVOListMap.get(key).stream().map(i->i.getType()).distinct().count()==1){
+        		sbf.append(key).append(" ");
+        	}
+        }
+        if(sbf.length()>0){
+        	sbf.append("(术语存在重复)");
+        	throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
         }
-    }
-
-    /**
-     * 从文件批量导入术语信息
-     *
-     * @param file
-     * @return ConceptDTO
-     */
-    public ConceptDTO importBatch(MultipartFile file) {
-        ImportExcel.setConceptFacade(this);
-        ImportExcel.setLibraryinfoFacade(libraryinfoFacade);
-        ImportExcel.setLibraryDetailFacade(libraryDetailFacade);
-        ImportExcel.setMedicalFacade(medicalFacade);
-        ImportExcel.setRelationFacade(relationFacade);
-
-        ConceptDTO conceptDTO = ImportExcel.importBatch(file);
 
-        return conceptDTO;
+        /**************校验每一组数据,同时组装*************************/
+        List<LibraryInfo> saveOrUpdateLibraryInfoList = new ArrayList<>();
+    	Map<String,Object> ckMap = null;
+    	Object message = null;
+    	for(AddConceptInfoVO i : addConceptInfoVOList){
+    		ckMap = checkAddConceptInfoVO(i);
+    		message = ckMap.get("message");
+    		if(message!=null){
+    			sbf.append(message.toString()).append("(标准术语:").append(i.getName()).append(")").append("<br/>");
+    		}else{
+    			saveOrUpdateLibraryInfoList.addAll((List<LibraryInfo>)ckMap.get("libraryInfoList"));
+    		}
+    	}
+        if(sbf.length()>0){
+        	throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
+        }
+        
+        /******************最终保存***************************/
+        saveConceptInfos(saveOrUpdateLibraryInfoList);
+        
+        return true;
+    }
+    
+    @SuppressWarnings("deprecation")
+    private String getValue(Cell cell) {
+        try {
+            Object obj = null;
+            switch (cell.getCellTypeEnum()) {
+                case BOOLEAN:
+                    obj = cell.getBooleanCellValue();
+                    break;
+                case ERROR:
+                    obj = cell.getErrorCellValue();
+                    break;
+                case NUMERIC:
+                    if (HSSFDateUtil.isCellDateFormatted(cell)) {
+                        Date date = cell.getDateCellValue();
+                        obj = DateFormatUtils.format(date, "yyyy-MM-dd");
+                    } else {
+                        obj = cell.getNumericCellValue();
+                        DecimalFormat df = new DecimalFormat("0");
+                        obj = df.format(obj);
+                    }
+
+                    break;
+                case STRING:
+                    obj = cell.getStringCellValue();
+                    break;
+                default:
+                    break;
+            }
+            return obj.toString();
+        } catch (Exception e) {
+            return "";
+        }
     }
-
 
 }

+ 14 - 24
knowledgeman-service/src/main/java/com/diagbot/facade/LibraryDetailFacade.java

@@ -8,9 +8,11 @@ import com.diagbot.entity.Concept;
 import com.diagbot.entity.LibraryDetail;
 import com.diagbot.entity.LibraryInfo;
 import com.diagbot.service.impl.LibraryDetailServiceImpl;
+import com.diagbot.util.DateUtil;
 import com.diagbot.vo.AmendTermVo;
-import com.diagbot.vo.ConceptVo;
+import com.diagbot.vo.GetAllInformationVO;
 import com.diagbot.vo.KnowledgeVo;
+import com.diagbot.vo.RemoveConceptKnowledgeVO;
 import com.diagbot.vo.TermVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -40,7 +42,7 @@ public class LibraryDetailFacade extends LibraryDetailServiceImpl {
      * @param conceptVo
      * @return IPage<LibraryDetailDTO>
      */
-    public IPage<LibraryDetailDTO> getAllLibraryDetail(ConceptVo conceptVo) {
+    public IPage<LibraryDetailDTO> getAllLibraryDetail(GetAllInformationVO conceptVo) {
 
         return getAllKnowledge(conceptVo);
     }
@@ -139,7 +141,7 @@ public class LibraryDetailFacade extends LibraryDetailServiceImpl {
                     }
 
                     libraryDetail.setConceptId(libraryInfo.getConceptId().longValue());
-                    libraryDetail.setGmtModified(LocalDateTime.now());
+                    libraryDetail.setGmtModified(DateUtil.now());
                     libraryDetail.setIsDeleted("N");
 
                     this.saveOrUpdate(libraryDetail);
@@ -165,15 +167,15 @@ public class LibraryDetailFacade extends LibraryDetailServiceImpl {
     /**
      * 删除术语医学信息
      *
-     * @param knowledgeVo
+     * @param removeConceptKnowledgeVO
      * @return ConceptDTO
      */
-    public ConceptDTO removeConceptKnowledge(KnowledgeVo knowledgeVo) {
+    public Boolean removeConceptKnowledge(RemoveConceptKnowledgeVO removeConceptKnowledgeVO) {
 
-        ConceptDTO conceptDTO = new ConceptDTO();
-        List<String> msg = new ArrayList<>();
-        String error = "";
-        LibraryDetail libraryDetail;
+//        ConceptDTO conceptDTO = new ConceptDTO();
+//        List<String> msg = new ArrayList<>();
+//        String error = "";
+//        LibraryDetail libraryDetail;
 
         /*
         QueryWrapper<LibraryInfo> query = new QueryWrapper<>();
@@ -204,21 +206,9 @@ public class LibraryDetailFacade extends LibraryDetailServiceImpl {
             error = "术语 \"" + knowledgeVo.getTerm() + "(" + knowledgeVo.getType() + ")\" 不存在!";
         }
         */
-        QueryWrapper<LibraryDetail> query = new QueryWrapper<>();
-        query.eq("id", knowledgeVo.getId());
-        libraryDetail = getOne(query);
-
-        if (libraryDetail != null) {
-            remove(query);
-        }
-        else {
-            error = "术语 \"" + knowledgeVo.getTerm() + "(" + knowledgeVo.getType() + ")\" 不存在!";
-        }
-
-
-        msg.add(error);
-        conceptDTO.setMessage(msg);
-        return conceptDTO;
+        removeById(removeConceptKnowledgeVO.getId());
+        
+        return true;
     }
 
     /**

+ 18 - 13
knowledgeman-service/src/main/java/com/diagbot/facade/LibraryInfoFacade.java

@@ -1,21 +1,17 @@
 package com.diagbot.facade;
 
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
+
+import org.springframework.stereotype.Component;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.diagbot.dto.ConceptDTO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.GetAllInformationDTO;
 import com.diagbot.entity.LibraryInfo;
-import com.diagbot.entity.Medical;
 import com.diagbot.service.impl.LibraryInfoServiceImpl;
 import com.diagbot.vo.AmendTermVo;
-import com.diagbot.vo.TermVo;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Component;
-
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.diagbot.vo.GetAllInformationVO;
 
 /**
  * @Description: 术语基本信息查询业务层
@@ -26,7 +22,16 @@ import java.util.Map;
 public class LibraryInfoFacade extends LibraryInfoServiceImpl {
 
     private DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
-
+    
+    
+    /**
+     * 获取医学术语命名列表
+     * @param conceptVo
+     * @return
+     */
+    public IPage<GetAllInformationDTO> getAllInformation(GetAllInformationVO getAllInformationVO) {
+        return baseMapper.getAllInformation(getAllInformationVO);
+    }
 
     /**
      * 获取医学术语基本信息

+ 306 - 67
knowledgeman-service/src/main/java/com/diagbot/facade/MedicalFacade.java

@@ -1,27 +1,45 @@
 package com.diagbot.facade;
 
+import java.io.InputStream;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.multipart.MultipartFile;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.dto.ConceptDTO;
-import com.diagbot.dto.MedicalDTO;
+import com.diagbot.dto.GetMedicalInfoDetailDTO;
 import com.diagbot.dto.TypeDTO;
-import com.diagbot.entity.Concept;
 import com.diagbot.entity.LibraryInfo;
 import com.diagbot.entity.Medical;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.MedicalServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.AddConceptInfoDetailVO;
+import com.diagbot.vo.AddConceptInfoVO;
+import com.diagbot.vo.AddMedicalInfoVO;
 import com.diagbot.vo.AmendTermVo;
-import com.diagbot.vo.ConceptVo;
+import com.diagbot.vo.GetMedicalInfoDetailVO;
+import com.diagbot.vo.RemoveMedicalInfoVO;
 import com.diagbot.vo.TermVo;
 import com.diagbot.vo.TypeVo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.RequestBody;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 
 /**
  * @Description: 术语临床信息查询业务层
@@ -32,9 +50,282 @@ import java.util.Map;
 public class MedicalFacade extends MedicalServiceImpl {
 
     @Autowired
-    ConceptFacade conceptFacade;
+    private ConceptFacade conceptFacade;
     @Autowired
-    LibraryInfoFacade libraryInfoFacade;
+    private LibraryInfoFacade libraryInfoFacade;
+    
+    /**
+     * 医学术语命名删除
+     * @param removeMedicalInfoVO
+     * @return
+     */
+    public Boolean removeMedicalInfo(RemoveMedicalInfoVO removeMedicalInfoVO) {
+    	QueryWrapper<Medical> medicalQe = new QueryWrapper<Medical>();
+    	medicalQe.eq("concept_id", removeMedicalInfoVO.getConceptId());
+    	remove(medicalQe);
+        return true;
+    }
+    
+    /**
+     * 获取术语医学属性详情
+     * @param getMedicalInfoDetailVO
+     * @return
+     */
+    public GetMedicalInfoDetailDTO getMedicalInfoDetail(GetMedicalInfoDetailVO getMedicalInfoDetailVO){
+    	QueryWrapper<Medical> medicalQe = new QueryWrapper<Medical>();
+    	medicalQe.eq("concept_id", getMedicalInfoDetailVO.getConceptId());
+    	medicalQe.eq("is_deleted", "N");
+    	Medical medical = getOne(medicalQe);
+    	if(medical==null){
+    		return null;
+    	}
+    	
+    	GetMedicalInfoDetailDTO getMedicalInfoDetailDTO = new GetMedicalInfoDetailDTO();
+    	BeanUtil.copyProperties(medical, getMedicalInfoDetailDTO);
+    	return getMedicalInfoDetailDTO;
+    }
+    
+    /**
+     * 术语医学属性添加或者编辑
+     * @param addMedicalInfoVO
+     * @return
+     */
+	public Boolean addMedicalInfo(AddMedicalInfoVO addMedicalInfoVO){
+		String message = checkAddMedicalInfoVO(addMedicalInfoVO);
+		if(message!=null){
+			throw new CommonException(CommonErrorCode.RPC_ERROR,message);
+		}
+		Medical medical = new Medical();
+		BeanUtil.copyProperties(addMedicalInfoVO, medical);
+		save(medical);
+    	return true;
+    }
+	
+	/**
+	 * 校验即将添加的数据
+	 * @param addMedicalInfoVO
+	 * @return
+	 */
+	private String checkAddMedicalInfoVO(AddMedicalInfoVO addMedicalInfoVO){
+		QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
+		libraryInfoQe.eq("is_deleted", "N");
+		libraryInfoQe.eq("name", addMedicalInfoVO.getConceptName());
+		libraryInfoQe.eq("type", addMedicalInfoVO.getConceptType());
+		libraryInfoQe.eq("is_concept", "1");
+		LibraryInfo libraryInfo = libraryInfoFacade.getOne(libraryInfoQe);
+		if(libraryInfo==null){
+			return "概念不存在";
+		}
+		
+		List<String> infoNames = new ArrayList<>();
+		infoNames.add(addMedicalInfoVO.getName());
+		infoNames.add(addMedicalInfoVO.getStdName());
+		infoNames.add(addMedicalInfoVO.getCateName());
+		infoNames.add(addMedicalInfoVO.getGrp());
+		QueryWrapper<LibraryInfo> libraryInfoQe1 = new QueryWrapper<LibraryInfo>();
+		libraryInfoQe1.in("name", infoNames);
+		libraryInfoQe1.eq("is_concept", "1");
+		Map<String,List<LibraryInfo>> libraryInfoListMap = libraryInfoFacade.list(libraryInfoQe1).stream().collect(Collectors.groupingBy(LibraryInfo::getName));
+		if(libraryInfoListMap.get(addMedicalInfoVO.getName()).size()==0){
+			return "术语名称不存在";
+		}
+		if(libraryInfoListMap.get(addMedicalInfoVO.getStdName()).size()==0){
+			return "术语标准名不存在";
+		}
+		if(libraryInfoListMap.get(addMedicalInfoVO.getCateName()).size()==0){
+			return "术语小类名称不存在";
+		}
+		if(libraryInfoListMap.get(addMedicalInfoVO.getGrp()).size()==0){
+			return "术语类组不存在";
+		}
+		
+		return null;
+	}
+    
+	/**
+     * 术语医学属性excel文件导入
+     * @param file
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+	public Boolean medicalInfoExcelIm(MultipartFile file) {
+        List<AddMedicalInfoVO> addMedicalInfoVOList = new ArrayList<>();
+        StringBuffer sbf = new StringBuffer();
+        InputStream inputStream = null;
+        Workbook wb = null;
+        try {
+            if (!file.isEmpty()) {
+                inputStream = file.getInputStream();
+                if (inputStream.available() > 512000) {
+                    sbf.append("文件最大支持500KB!").append("<br/>");
+                } else {
+                    String fileName = file.getOriginalFilename();
+                    if (fileName.lastIndexOf(".") != -1) {
+                        String type = fileName.substring(fileName.lastIndexOf("."));
+                        if (type.equals(".xls")) {
+                            wb = new HSSFWorkbook(inputStream);
+                        } else if (type.equals(".xlsx")) {
+                            wb = new XSSFWorkbook(inputStream);
+                        }
+                        if (wb != null) {
+                            
+                            Sheet sheet = wb.getSheetAt(0);
+                            int count = 0;
+                            String conceptName, conceptType, name, stdName, cateName, grp, gender, minAge, maxAge, bodypart, subBodypart, dept, code, note;
+                            for (Row row : sheet) {
+                                count++;
+                                if (count == 1 || row == null) {
+                                    continue;
+                                }
+                                conceptName = getValue(row.getCell(0)).trim().replace(" ", "");
+                                conceptType = getValue(row.getCell(1)).trim().replace(" ", "");
+                                name = getValue(row.getCell(1)).trim().replace(" ", "");
+                                stdName = getValue(row.getCell(2)).trim().replace(" ", "");
+                                cateName = getValue(row.getCell(4)).trim().replace(" ", "");
+                                grp = getValue(row.getCell(5)).trim().replace(" ", "");
+                                gender = getValue(row.getCell(6)).trim().replace(" ", "");
+                                minAge = getValue(row.getCell(7)).trim().replace(" ", "");
+                                maxAge = getValue(row.getCell(8)).trim().replace(" ", "");
+                                bodypart = getValue(row.getCell(9)).trim().replace(" ", "");
+                                subBodypart = getValue(row.getCell(10)).trim().replace(" ", "");
+                                dept = getValue(row.getCell(11)).trim().replace(" ", "");
+                                code = getValue(row.getCell(12)).trim().replace(" ", "");
+                                note = getValue(row.getCell(13)).trim().replace(" ", "");
+                                if(StringUtil.isEmpty(conceptName) && StringUtil.isEmpty(name)
+                                        && StringUtil.isEmpty(stdName) && StringUtil.isEmpty(cateName)
+                                        && StringUtil.isEmpty(grp) && StringUtil.isEmpty(gender)
+                                        && StringUtil.isEmpty(minAge) && StringUtil.isEmpty(maxAge)
+                                        && StringUtil.isEmpty(bodypart) && StringUtil.isEmpty(subBodypart)
+                                        && StringUtil.isEmpty(dept) && StringUtil.isEmpty(code)
+                                        && StringUtil.isEmpty(note) && StringUtil.isEmpty(conceptType)){
+                                	continue;
+                                }
+                                if (StringUtil.isEmpty(conceptName) || StringUtil.isEmpty(name)
+                                        || StringUtil.isEmpty(stdName) || StringUtil.isEmpty(cateName)
+                                        || StringUtil.isEmpty(grp) || StringUtil.isEmpty(gender)
+                                        || StringUtil.isEmpty(minAge) || StringUtil.isEmpty(maxAge)
+                                        || StringUtil.isEmpty(bodypart) || StringUtil.isEmpty(subBodypart)
+                                        || StringUtil.isEmpty(dept) || StringUtil.isEmpty(conceptType)) {
+                                    sbf.append("第" + count + "行数据不完整;").append("<br/>");
+                                    continue;
+                                }
+                                
+                                AddMedicalInfoVO addMedicalInfoVO = new AddMedicalInfoVO();
+                                addMedicalInfoVO.setConceptName(conceptName);
+                                addMedicalInfoVO.setConceptType(conceptType);
+                                addMedicalInfoVO.setName(name);
+                                addMedicalInfoVO.setStdName(stdName);
+                                addMedicalInfoVO.setCateName(cateName);
+                                addMedicalInfoVO.setGrp(grp);
+                                addMedicalInfoVO.setGender(gender);
+                                addMedicalInfoVO.setBodypart(bodypart);
+                                addMedicalInfoVO.setSubBodypart(subBodypart);
+                                addMedicalInfoVO.setDept(dept);
+                                addMedicalInfoVO.setCode(code);
+                                addMedicalInfoVO.setNote(note);
+                                addMedicalInfoVOList.add(addMedicalInfoVO);
+                            }
+                        } else {
+                            sbf.append("非excel文件无法解析!").append("<br/>");
+                        }
+                    } else {
+                        sbf.append("未知文件无法解析!").append("<br/>");
+                    }
+                }
+            } else {
+                sbf.append("无文件上传!").append("<br/>");
+            }
+        } catch (Exception e) {
+            sbf.append("解析失败!").append("<br/>");
+        } finally {
+            try {
+                if (wb != null) {
+                    wb.close();
+                }
+                if (inputStream != null) {
+                    inputStream.close();
+                }
+            } catch (Exception e) {
+            }
+        }
+        
+        if(sbf.length()>0){
+        	throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
+        }
+        
+    	String message = null;
+    	for(AddMedicalInfoVO i : addMedicalInfoVOList){
+    		message = checkAddMedicalInfoVO(i); 
+    		if(message!=null){
+    			sbf.append(message).append("(").append(i.getConceptName()).append(")").append("<br/>");
+    		}
+    	}
+        if(sbf.length()>0){
+        	throw new CommonException(CommonErrorCode.RPC_ERROR,sbf.toString());
+        }
+        
+        BeanUtil.listCopyTo(addMedicalInfoVOList, Medical.class);
+        
+        return true;
+    }
+    
+    @SuppressWarnings("deprecation")
+    private String getValue(Cell cell) {
+        try {
+            Object obj = null;
+            switch (cell.getCellTypeEnum()) {
+                case BOOLEAN:
+                    obj = cell.getBooleanCellValue();
+                    break;
+                case ERROR:
+                    obj = cell.getErrorCellValue();
+                    break;
+                case NUMERIC:
+                    if (HSSFDateUtil.isCellDateFormatted(cell)) {
+                        Date date = cell.getDateCellValue();
+                        obj = DateFormatUtils.format(date, "yyyy-MM-dd");
+                    } else {
+                        obj = cell.getNumericCellValue();
+                        DecimalFormat df = new DecimalFormat("0");
+                        obj = df.format(obj);
+                    }
+
+                    break;
+                case STRING:
+                    obj = cell.getStringCellValue();
+                    break;
+                default:
+                    break;
+            }
+            return obj.toString();
+        } catch (Exception e) {
+            return "";
+        }
+    }
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
 
 
     /**
@@ -135,58 +426,6 @@ public class MedicalFacade extends MedicalServiceImpl {
     }
 
 
-    /**
-     * 删除术语医学信息
-     *
-     * @param termVo
-     * @return ConceptDTO
-     */
-    public ConceptDTO removeMedicalInfo(TermVo termVo) {
-
-//        Boolean isdeleted = false;
-        ConceptDTO conceptDTO = new ConceptDTO();
-        Medical medical;
-        List<String> msg = new ArrayList<>();
-        String error = "";
-
-        /*
-        QueryWrapper<LibraryInfo> query = new QueryWrapper<>();
-        query.eq("name", termVo.getTerm());
-        query.eq("type", termVo.getType());
-        LibraryInfo libraryInfo = libraryInfoFacade.getOne(query);
-
-        if (libraryInfo != null) {
-            QueryWrapper<Medical> medquery = new QueryWrapper<>();
-            medquery.eq("name", termVo.getTerm());
-            medquery.eq("concept_id", libraryInfo.getConceptId());
-            medicals = list(medquery);
-
-            if (medicals != null && medicals.size() > 0) {
-                for (Medical medical:medicals) {
-                    medical.setIs_deleted("Y");
-                    saveOrUpdate(medical);
-                }
-                isdeleted = true;
-            }
-        }
-        */
-        QueryWrapper<Medical> query = new QueryWrapper<>();
-        query.eq("id", termVo.getId());
-        medical = getOne(query);
-
-        if (medical != null) {
-            remove(query);
-        }
-        else {
-            error = "术语 \"" + termVo.getTerm() + "(" + termVo.getType() + ")\" 不存在!";
-        }
-
-
-        msg.add(error);
-        conceptDTO.setMessage(msg);
-
-        return conceptDTO;
-    }
 
 
     /**

+ 5 - 5
knowledgeman-service/src/main/java/com/diagbot/facade/RelationFacade.java

@@ -79,7 +79,7 @@ public class RelationFacade extends RelationServiceImpl {
     public List<RelationDTO> getRelations(RelationVo relationVo) {
         List<RelationDTO> relationDTOs = new ArrayList<>();
         RelationDTO relationDTO = new RelationDTO();
-        int concept_id = 0;
+        Long concept_id = 0l;
 
         if (relationVo.getStart_term().length() > 0 && relationVo.getEnd_term().length() > 0) {
             QueryWrapper<LibraryInfo> query = new QueryWrapper<>();
@@ -94,7 +94,7 @@ public class RelationFacade extends RelationServiceImpl {
 
                 return relationDTOs;
             }
-            concept_id = (libraryInfo == null) ? 0 : libraryInfo.getConceptId();
+            concept_id = (libraryInfo == null) ? 0l : libraryInfo.getConceptId();
         }
         else if (relationVo.getStart_concept_id() > 0) {
             concept_id = relationVo.getStart_concept_id();
@@ -257,9 +257,9 @@ public class RelationFacade extends RelationServiceImpl {
         RelationDTO relationDTO = new RelationDTO();
         QueryWrapper<Relation> query;
 
-        int startid = relationVo.getStart_concept_id();
-        int relationid = relationVo.getRelation_id();
-        int endid = relationVo.getEnd_concept_id();
+        Long startid = relationVo.getStart_concept_id();
+        Long relationid = relationVo.getRelation_id();
+        Long endid = relationVo.getEnd_concept_id();
         String startname = relationVo.getStart_term().trim();
         String relationname = relationVo.getRelation_name().trim();
         String endname = relationVo.getEnd_term().trim();

+ 2 - 2
knowledgeman-service/src/main/java/com/diagbot/mapper/LibraryDetailMapper.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.dto.LibraryDetailDTO;
 import com.diagbot.entity.LibraryDetail;
-import com.diagbot.vo.ConceptVo;
+import com.diagbot.vo.GetAllInformationVO;
 import com.diagbot.vo.TermVo;
 
 import java.util.List;
@@ -25,7 +25,7 @@ public interface LibraryDetailMapper extends BaseMapper<LibraryDetail> {
      * @param conceptVo
      * @return IPage<LibraryDetailDTO>
      */
-    public IPage<LibraryDetailDTO> getAllKnowledge(ConceptVo conceptVo);
+    public IPage<LibraryDetailDTO> getAllKnowledge(GetAllInformationVO conceptVo);
 
     /**
      * 获取术语知识

+ 12 - 15
knowledgeman-service/src/main/java/com/diagbot/mapper/LibraryInfoMapper.java

@@ -1,16 +1,13 @@
 package com.diagbot.mapper;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import java.util.List;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.diagbot.dto.GetAllInformationDTO;
 import com.diagbot.dto.LibraryInfoDTO;
-import com.diagbot.entity.Concept;
 import com.diagbot.entity.LibraryInfo;
-import com.diagbot.vo.ConceptVo;
-import com.diagbot.vo.TermVo;
-
-import java.util.List;
+import com.diagbot.vo.GetAllInformationVO;
 
 /**
  * <p>
@@ -21,13 +18,13 @@ import java.util.List;
  * @since 2019-01-30
  */
 public interface LibraryInfoMapper extends BaseMapper<LibraryInfo> {
-    /**
-     * 获取所有术语基本信息
-     *
-     * @param conceptVo
-     * @return IPage<LibraryInfoDTO>
-     */
-    public IPage<LibraryInfoDTO> getAllInfor(ConceptVo conceptVo);
+
+	/**
+	 * 获取医学术语命名列表
+	 * @param getAllInformationVO
+	 * @return
+	 */
+    public IPage<GetAllInformationDTO> getAllInformation(GetAllInformationVO getAllInformationVO);
 
     /**
      * 获取所有术语信息
@@ -35,7 +32,7 @@ public interface LibraryInfoMapper extends BaseMapper<LibraryInfo> {
      * @param conceptVo
      * @return IPage<LibraryInfoDTO>
      */
-    public IPage<LibraryInfoDTO> getAllConcept(ConceptVo conceptVo);
+    public IPage<LibraryInfoDTO> getAllConcept(GetAllInformationVO conceptVo);
 
     /**
      * 获取所有没有实体关联的静态信息

+ 2 - 2
knowledgeman-service/src/main/java/com/diagbot/service/LibraryDetailService.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.LibraryDetailDTO;
 import com.diagbot.entity.LibraryDetail;
-import com.diagbot.vo.ConceptVo;
+import com.diagbot.vo.GetAllInformationVO;
 import com.diagbot.vo.TermVo;
 
 import java.util.List;
@@ -19,7 +19,7 @@ import java.util.List;
  * @since 2019-01-30
  */
 public interface LibraryDetailService extends IService<LibraryDetail> {
-    public IPage<LibraryDetailDTO> getAllKnowledge(ConceptVo conceptVo);
+    public IPage<LibraryDetailDTO> getAllKnowledge(GetAllInformationVO conceptVo);
 
     public List<LibraryDetail> getLibraryDetail(TermVo termVo);
 

+ 5 - 11
knowledgeman-service/src/main/java/com/diagbot/service/LibraryInfoService.java

@@ -1,17 +1,12 @@
 package com.diagbot.service;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import java.util.List;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.LibraryInfoDTO;
-import com.diagbot.entity.Concept;
 import com.diagbot.entity.LibraryInfo;
-import com.diagbot.vo.ConceptVo;
-import com.diagbot.vo.TermVo;
-import org.springframework.security.core.parameters.P;
-
-import java.util.List;
+import com.diagbot.vo.GetAllInformationVO;
 
 /**
  * <p>
@@ -22,8 +17,7 @@ import java.util.List;
  * @since 2019-01-30
  */
 public interface LibraryInfoService extends IService<LibraryInfo> {
-    public IPage<LibraryInfoDTO> getAllInfor(ConceptVo conceptVo);
-
-    public IPage<LibraryInfoDTO> getAllConcept(ConceptVo conceptVo);
+    
+    public IPage<LibraryInfoDTO> getAllConcept(GetAllInformationVO conceptVo);
     public List<LibraryInfo> getLimboItems();
 }

+ 2 - 2
knowledgeman-service/src/main/java/com/diagbot/service/impl/LibraryDetailServiceImpl.java

@@ -7,7 +7,7 @@ import com.diagbot.dto.LibraryDetailDTO;
 import com.diagbot.entity.LibraryDetail;
 import com.diagbot.mapper.LibraryDetailMapper;
 import com.diagbot.service.LibraryDetailService;
-import com.diagbot.vo.ConceptVo;
+import com.diagbot.vo.GetAllInformationVO;
 import com.diagbot.vo.TermVo;
 import org.springframework.stereotype.Service;
 
@@ -24,7 +24,7 @@ import java.util.List;
 @Service
 public class LibraryDetailServiceImpl extends ServiceImpl<LibraryDetailMapper, LibraryDetail> implements LibraryDetailService {
     @Override
-    public IPage<LibraryDetailDTO> getAllKnowledge(ConceptVo conceptVo) {
+    public IPage<LibraryDetailDTO> getAllKnowledge(GetAllInformationVO conceptVo) {
         return baseMapper.getAllKnowledge(conceptVo);
     }
 

+ 6 - 15
knowledgeman-service/src/main/java/com/diagbot/service/impl/LibraryInfoServiceImpl.java

@@ -1,21 +1,16 @@
 package com.diagbot.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import java.util.List;
+
+import org.springframework.stereotype.Service;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.LibraryInfoDTO;
-import com.diagbot.entity.Concept;
 import com.diagbot.entity.LibraryInfo;
 import com.diagbot.mapper.LibraryInfoMapper;
 import com.diagbot.service.LibraryInfoService;
-import com.diagbot.vo.ConceptVo;
-import com.diagbot.vo.TermVo;
-import org.omg.PortableServer.LIFESPAN_POLICY_ID;
-import org.springframework.security.core.parameters.P;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
+import com.diagbot.vo.GetAllInformationVO;
 
 /**
  * <p>
@@ -27,13 +22,9 @@ import java.util.List;
  */
 @Service
 public class LibraryInfoServiceImpl extends ServiceImpl<LibraryInfoMapper, LibraryInfo> implements LibraryInfoService {
-    @Override
-    public IPage<LibraryInfoDTO> getAllInfor(ConceptVo conceptVo) {
-        return baseMapper.getAllInfor(conceptVo);
-    }
 
     @Override
-    public IPage<LibraryInfoDTO> getAllConcept(ConceptVo conceptVo) {
+    public IPage<LibraryInfoDTO> getAllConcept(GetAllInformationVO conceptVo) {
         return baseMapper.getAllConcept(conceptVo);
     }
 

+ 45 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoDetailVO.java

@@ -0,0 +1,45 @@
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2019-03
+ */
+@Getter
+@Setter
+public class AddConceptInfoDetailVO {
+	
+	/**
+     * 术语名称
+     */
+	@ApiModelProperty(value="术语名称",required=true)
+	@NotBlank(message="术语名称必传")
+    private String name;
+
+	
+    /**
+     * 是否标准词,1:是,0:否
+     */
+	@ApiModelProperty(value="是否标准词",required=true)
+	@NotNull(message="是否标准词必传")
+    private Integer isConcept;
+	
+    /**
+     * 术语说明
+     */
+	@ApiModelProperty(value="术语说明")
+    private String remark;
+	
+    /**
+     * 术语类型
+     */
+    private String type;
+
+}

+ 40 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoVO.java

@@ -0,0 +1,40 @@
+package com.diagbot.vo;
+
+import java.util.List;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2019-03
+ */
+@Getter
+@Setter
+public class AddConceptInfoVO {
+	
+	/**
+     * 标准术语名称 导入提示使用
+     */
+    private String name;
+    
+    /**
+     * 术语类型
+     */
+	@ApiModelProperty(value="术语类型",required=true)
+	@NotBlank(message="术语类型必传")
+    private String type;
+
+	/**
+     * 术语明细
+     */
+	@ApiModelProperty(value="术语明细")
+	@NotEmpty(message="术语明细不能为空")
+	private List<AddConceptInfoDetailVO> detailList;
+
+}

+ 122 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/AddMedicalInfoVO.java

@@ -0,0 +1,122 @@
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2019-03
+ */
+@Getter
+@Setter
+public class AddMedicalInfoVO {
+	
+	/**
+     * 术语概念名称
+     */
+	@NotBlank(message="术语概念名称必填")
+	@ApiModelProperty(value="术语概念名称",required=true)
+    private String conceptName;
+	
+	/**
+     * 术语概念类型
+     */
+	@NotBlank(message="术语概念类型必填")
+	@ApiModelProperty(value="术语概念类型",required=true)
+    private String conceptType;
+
+    /**
+     * 术语名称
+     */
+	@NotBlank(message="术语名称必填")
+	@ApiModelProperty(value="术语名称",required=true)
+    private String name;
+
+    /**
+     * 术语标准名
+     */
+	@NotBlank(message="术语标准名必填")
+	@ApiModelProperty(value="术语标准名",required=true)
+    private String stdName;
+
+    /**
+     * 术语小类名称
+     */
+	@NotBlank(message="术语小类名称必填")
+	@ApiModelProperty(value="术语小类名称",required=true)
+    private String cateName;
+
+    /**
+     * 术语类组
+     */
+	@NotBlank(message="术语类组必填")
+	@ApiModelProperty(value="术语类组",required=true)
+    private String grp;
+
+    /**
+     * 性别:1:男, 2:女, 3:通用
+     */
+	@NotBlank(message="性别必填")
+	@ApiModelProperty(value="性别:1:男, 2:女, 3:通用",required=true)
+    private String gender;
+
+    /**
+     * 症状发生的最小年龄
+     */
+	@NotNull(message="症状发生的最小年龄必填")
+	@ApiModelProperty(value="症状发生的最小年龄",required=true)
+    private Integer minAge;
+
+    /**
+     * 症状发生的最大年龄
+     */
+	@NotNull(message="症状发生的最大年龄必填")
+	@ApiModelProperty(value="症状发生的最大年龄",required=true)
+    private Integer maxAge;
+
+    /**
+     * 一级部位
+     */
+	@NotBlank(message="一级部位必填")
+	@ApiModelProperty(value="一级部位",required=true)
+    private String bodypart;
+
+    /**
+     * 二级部位
+     */
+	@NotBlank(message="二级部位必填")
+	@ApiModelProperty(value="二级部位",required=true)
+    private String subBodypart;
+
+    /**
+     * 显示顺序
+     */
+	@ApiModelProperty(value="显示顺序")
+    private String displayOrder;
+
+    /**
+     * 科室
+     */
+	@NotBlank(message="科室必填")
+	@ApiModelProperty(value="科室",required=true)
+    private String dept;
+
+    /**
+     * 术语身份编码
+     */
+	@ApiModelProperty(value="术语身份编码")
+    private String code;
+
+    /**
+     * 备注
+     */
+	@ApiModelProperty(value="备注")
+    private String note;
+	
+	
+}

+ 0 - 28
knowledgeman-service/src/main/java/com/diagbot/vo/ConceptVo.java

@@ -1,28 +0,0 @@
-package com.diagbot.vo;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.NotNull;
-
-/**
- * @Description:
- * @author: Weixuan Huang
- * @time: 2019/3/14 16:03
- */
-@Getter
-@Setter
-public class ConceptVo extends Page {
-    @NotNull(message = "请输入医学术语")
-    private String term;
-
-    @NotNull(message = "请输入术语类型")
-    private String type;
-
-    private int id;
-
-    private int concept_id;
-
-    private String conecpt_name;
-}

+ 28 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/GetAllConceptVO.java

@@ -0,0 +1,28 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: Weixuan Huang
+ * @time: 2019/3/14 16:03
+ */
+@Getter
+@Setter
+public class GetAllConceptVO {
+    
+    /**
+     * 名称
+     */
+    @ApiModelProperty(value="名称")
+    private String name;
+    
+    /**
+     * 是否标准词,1:是,0:否
+     */
+    @ApiModelProperty(value="是否标准词,1:是,0:否")
+    private Integer isConcept;
+    
+}

+ 31 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/GetAllInformationVO.java

@@ -0,0 +1,31 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: Weixuan Huang
+ * @time: 2019/3/14 16:03
+ */
+@SuppressWarnings({ "serial", "rawtypes" })
+@Getter
+@Setter
+public class GetAllInformationVO extends Page {
+    
+    /**
+     * 术语名称
+     */
+    @ApiModelProperty(value="术语名称")
+    private String name;
+
+    /**
+     * 术语类型
+     */
+    @ApiModelProperty(value="术语类型")
+    private String type;
+    
+}

+ 25 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/GetConceptInfoDetailVO.java

@@ -0,0 +1,25 @@
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: Weixuan Huang
+ * @time: 2019/3/14 16:03
+ */
+@Getter
+@Setter
+public class GetConceptInfoDetailVO {
+    
+    /**
+     * 概念id
+     */
+	@ApiModelProperty(value="概念id",required=true)
+	@NotNull(message="概念id必传")
+    private Long conceptId;
+    
+}

+ 25 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/GetMedicalInfoDetailVO.java

@@ -0,0 +1,25 @@
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: Weixuan Huang
+ * @time: 2019/3/14 16:03
+ */
+@Getter
+@Setter
+public class GetMedicalInfoDetailVO {
+    
+    /**
+     * 概念id
+     */
+	@ApiModelProperty(value="概念id",required=true)
+	@NotNull(message="概念id必传")
+    private Long conceptId;
+    
+}

+ 3 - 3
knowledgeman-service/src/main/java/com/diagbot/vo/RelationVo.java

@@ -19,15 +19,15 @@ public class RelationVo {
     @NotNull(message = "请输入起始节点术语类型")
     private String start_type;
 
-    private int start_concept_id;
+    private Long start_concept_id;
 
     private String relation_name;
 
-    private int relation_id;
+    private Long relation_id;
 
     private String end_term;
 
-    private int end_concept_id;
+    private Long end_concept_id;
 
     private String end_type;
 }

+ 25 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RemoveConceptInfoVO.java

@@ -0,0 +1,25 @@
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: Weixuan Huang
+ * @time: 2019/3/14 16:03
+ */
+@Getter
+@Setter
+public class RemoveConceptInfoVO {
+    
+    /**
+     * 概念id
+     */
+	@ApiModelProperty(value="概念id",required=true)
+	@NotNull(message="概念id必传")
+    private Long conceptId;
+    
+}

+ 28 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RemoveConceptKnowledgeVO.java

@@ -0,0 +1,28 @@
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2019-03
+ */
+@ApiModel(value="术语静态知识删除接口传参")
+@Getter
+@Setter
+public class RemoveConceptKnowledgeVO {
+	
+	/**
+     * id
+     */
+	@ApiModelProperty(value="id")
+	@NotNull(message="id必传")
+    private Long id;
+	
+
+}

+ 25 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RemoveMedicalInfoVO.java

@@ -0,0 +1,25 @@
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: Weixuan Huang
+ * @time: 2019/3/14 16:03
+ */
+@Getter
+@Setter
+public class RemoveMedicalInfoVO {
+    
+    /**
+     * 概念id
+     */
+	@ApiModelProperty(value="概念id",required=true)
+	@NotNull(message="概念id必传")
+    private Long conceptId;
+    
+}

+ 61 - 89
knowledgeman-service/src/main/java/com/diagbot/web/ConceptController.java

@@ -1,24 +1,34 @@
 package com.diagbot.web;
 
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.ConceptDTO;
-import com.diagbot.dto.LibraryInfoDTO;
+import com.diagbot.dto.GetAllConceptDTO;
+import com.diagbot.dto.GetAllInformationDTO;
+import com.diagbot.dto.GetConceptInfoDetailDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.Concept;
 import com.diagbot.facade.ConceptFacade;
-import com.diagbot.vo.AmendTermVo;
-import com.diagbot.vo.ConceptVo;
-import com.diagbot.vo.TermVo;
+import com.diagbot.vo.AddConceptInfoVO;
+import com.diagbot.vo.GetAllConceptVO;
+import com.diagbot.vo.GetAllInformationVO;
+import com.diagbot.vo.GetConceptInfoDetailVO;
+import com.diagbot.vo.RemoveConceptInfoVO;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import com.baomidou.mybatisplus.core.metadata.*;
-
-import javax.validation.Valid;
-import java.util.List;
 
 /**
  * <p>
@@ -30,95 +40,57 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/concept")
-@Api(value = "医学标准术语API", tags = { "医学标准术语API" })
-
+@SuppressWarnings("unchecked")
+@Api(value = "医学术语命名维护相关API", tags = { "医学术语命名维护相关API" })
 public class ConceptController {
+	
     @Autowired
     private ConceptFacade conceptFacade;
-
-
-    @ApiOperation(value = "查询所有术语名称")
-    @PostMapping("getAllConcept")
+    
+    @ApiOperation(value = "获取所有医学术语命名[by:rengb]")
+    @PostMapping("/getAllConcept")
     @SysLogger("getAllConcept")
-    public RespDTO<IPage<LibraryInfoDTO>> getAllConcept(@RequestBody ConceptVo conceptVo) {
-        IPage<LibraryInfoDTO> data = conceptFacade.getAllConcepts(conceptVo);
-
-        return RespDTO.onSuc(data);
+    public RespDTO<List<GetAllConceptDTO>> getAllConcept(@RequestBody GetAllConceptVO getAllConceptVO) {
+        return RespDTO.onSuc(conceptFacade.getAllConcept(getAllConceptVO));
     }
 
-    @ApiOperation(value = "查询所有术语信息",
-            notes = "Term:术语名称, 选填<br>Type:术语类型, 选填<br>")
-    @PostMapping("getAllInformation")
+    @ApiOperation(value = "获取医学术语命名列表[by:rengb]")
+    @PostMapping("/getAllInformation")
     @SysLogger("getAllInformation")
-    public RespDTO<IPage<LibraryInfoDTO>> getAllInformation(@RequestBody ConceptVo conceptVo) {
-        IPage<LibraryInfoDTO> data = conceptFacade.getAllInformation(conceptVo);
-
-        return RespDTO.onSuc(data);
+    public RespDTO<IPage<GetAllInformationDTO>> getAllInformation(@RequestBody GetAllInformationVO getAllInformationVO) {
+        return RespDTO.onSuc(conceptFacade.getAllInformation(getAllInformationVO));
     }
-
-    @ApiOperation(value = "术语基本信息查询",
-            notes = "Term:术语名称, 必填<br>Type:术语类型, 必填<br>")
-    @PostMapping("/getConceptInfo")
-    @SysLogger("getConceptInfo")
-    public RespDTO<List<ConceptDTO>> getConceptInfo(@Valid @RequestBody TermVo termvo) {
-        ConceptDTO data = conceptFacade.getConceptInfo(termvo);
-
-        return RespDTO.onSuc(data);
-    }
-
-    /*
-    @ApiOperation(value = "术语静态知识查询",
-            notes = "Term:术语名称, 必填<br>Type:术语类型, 必填<br>")
-    @PostMapping("/getConceptKnowledge")
-    @SysLogger("getConceptKnowledge")
-    public RespDTO<TermDTO> getConceptKnowledge(@Valid @RequestBody TermVo termvo) {
-        ConceptDTO data = conceptFacade.getConceptKnowledge(termvo);
-
-        return RespDTO.onSuc(data);
-    }
-    */
-
-
-    @ApiOperation(value = "术语基本信息删除",
-            notes = "Term:术语名称, 必填<br>Type:术语类型, 必填<br>")
+    
+    @ApiOperation(value = "医学术语命名删除[by:rengb]")
     @PostMapping("/removeConceptInfo")
     @SysLogger("removeConceptInfo")
-    public RespDTO<ConceptDTO> removeConceptInfo(@Valid @RequestBody TermVo termvo) {
-        ConceptDTO data = conceptFacade.removeConceptInfo(termvo);
-
-        return RespDTO.onSuc(data);
+    @Transactional
+    public RespDTO<Boolean> removeConceptInfo(@Valid @RequestBody RemoveConceptInfoVO removeConceptInfoVO) {
+        return RespDTO.onSuc(conceptFacade.removeConceptInfo(removeConceptInfoVO));
     }
-
-    /*
-    @ApiOperation(value = "术语医学关系查询",
-            notes = "Term:术语名称, 必填<br>Type:术语类型, 必填<br>")
-    @PostMapping("/getConceptRelation")
-    @SysLogger("getConceptRelation")
-    public RespDTO<TermDTO> getConceptRelation(@Valid @RequestBody TermVo termvo) {
-        ConceptDTO data = conceptFacade.getConceptRelation(termvo);
-
-        return RespDTO.onSuc(data);
+    
+    @ApiOperation(value = "获取医学术语命名详情[by:rengb]")
+    @PostMapping("/getConceptInfoDetail")
+    @SysLogger("getConceptInfoDetail")
+    public RespDTO<List<GetConceptInfoDetailDTO>> getConceptInfoDetail(@Valid @RequestBody GetConceptInfoDetailVO getConceptInfoDetailVO) {
+        return RespDTO.onSuc(conceptFacade.getConceptInfoDetail(getConceptInfoDetailVO));
     }
-    */
-
-    @ApiOperation(value = "术语基本信息添加或修改",
-            notes = "Concept: 概念名称,必填<br/>NewTerm: 新的术语名称, 必填<br/>" +
-                    "NewType: 新的术语类型, 必填<br/>")
-    @PostMapping("/upsertConceptInfo")
-    @SysLogger("upsertConceptInfo")
-    public RespDTO<ConceptDTO> upsertConceptInfo(@Valid @RequestBody AmendTermVo amendTermVo) {
-        ConceptDTO data = conceptFacade.upsertConceptInfo(amendTermVo);
-
-        return RespDTO.onSuc(data);
+    
+    @ApiOperation(value = "医学术语命名添加或者编辑[by:rengb]")
+    @PostMapping("/addConceptInfo")
+    @SysLogger("addConceptInfo")
+    @Transactional
+    public RespDTO<Boolean> addConceptInfo(@Valid @RequestBody AddConceptInfoVO addConceptInfoVO) {
+        return RespDTO.onSuc(conceptFacade.addConceptInfo(addConceptInfoVO));
     }
-
-
-    @ApiOperation(value = "术语导入", notes = "导入术语信息")
-    @PostMapping("/importTermExcel")
-    public RespDTO<ConceptDTO> lisExcelAnalysis(@RequestParam("uploadfile") MultipartFile file) {
-        ConceptDTO data = conceptFacade.importBatch(file);
-
-        return RespDTO.onSuc(data);
+    
+    @ApiOperation(value = "医学术语命名excel文件导入[by:rengb]")
+    @PostMapping("/conceptInfoExcelIm")
+    @SysLogger("conceptInfoExcelIm")
+    @Transactional
+    public RespDTO<Boolean> conceptInfoExcelIm(@RequestParam("uploadfile") MultipartFile file,HttpServletRequest request) {
+        return RespDTO.onSuc(conceptFacade.conceptInfoExcelIm(file));
     }
+    
 
 }

+ 18 - 17
knowledgeman-service/src/main/java/com/diagbot/web/LibraryDetailController.java

@@ -1,19 +1,27 @@
 package com.diagbot.web;
 
 
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.*;
+import com.diagbot.dto.ConceptDTO;
+import com.diagbot.dto.LibraryDetailDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.LibraryDetailFacade;
 import com.diagbot.vo.AmendTermVo;
-import com.diagbot.vo.ConceptVo;
+import com.diagbot.vo.GetAllInformationVO;
 import com.diagbot.vo.KnowledgeVo;
+import com.diagbot.vo.RemoveConceptKnowledgeVO;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
 
 
 /**
@@ -35,7 +43,7 @@ public class LibraryDetailController {
     @ApiOperation(value = "查询所有术语静态知识")
     @PostMapping("getAllKnowledge")
     @SysLogger("getAllKnowledge")
-    public RespDTO<IPage<LibraryDetailDTO>> getAllKnowledge(@RequestBody ConceptVo conceptVo) {
+    public RespDTO<IPage<LibraryDetailDTO>> getAllKnowledge(@RequestBody GetAllInformationVO conceptVo) {
         IPage<LibraryDetailDTO> data = libraryDetailFacade.getAllLibraryDetail(conceptVo);
 
         return RespDTO.onSuc(data);
@@ -70,15 +78,8 @@ public class LibraryDetailController {
                     "Source: 知识来源, 必填<br/>NewType: 知识标题, 必填<br/>")
     @PostMapping("/removeConceptKnowledge")
     @SysLogger("removeConceptKnowledge")
-    public RespDTO<ConceptDTO> removeConceptKnowledge(@Valid @RequestBody KnowledgeVo knowledgeVo) {
-        RespDTO<ConceptDTO> resp = new RespDTO<>();
-        ConceptDTO result = libraryDetailFacade.removeConceptKnowledge(knowledgeVo);
-
-        if (result.getMessage().get(0).length() > 0) {
-            resp.code = "-1";
-            resp.msg = result.getMessage().get(0);
-        }
-
-        return resp;
+    public RespDTO<Boolean> removeConceptKnowledge(@Valid @RequestBody RemoveConceptKnowledgeVO removeConceptKnowledgeVO) {
+        RespDTO<Boolean> resp = new RespDTO<>();
+        return RespDTO.onSuc(libraryDetailFacade.removeConceptKnowledge(removeConceptKnowledgeVO));
     }
 }

+ 69 - 26
knowledgeman-service/src/main/java/com/diagbot/web/MedicalController.java

@@ -1,27 +1,31 @@
 package com.diagbot.web;
 
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.ConceptDTO;
-import com.diagbot.dto.LibraryInfoDTO;
-import com.diagbot.dto.MedicalDTO;
+import com.diagbot.dto.GetMedicalInfoDetailDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.Concept;
 import com.diagbot.facade.MedicalFacade;
-import com.diagbot.vo.ConceptVo;
-import com.diagbot.vo.TermVo;
+import com.diagbot.vo.AddMedicalInfoVO;
 import com.diagbot.vo.AmendTermVo;
+import com.diagbot.vo.GetMedicalInfoDetailVO;
+import com.diagbot.vo.RemoveMedicalInfoVO;
+import com.diagbot.vo.TermVo;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.validation.Valid;
 
 /**
  * <p>
@@ -33,11 +37,60 @@ import javax.validation.Valid;
  */
 @RestController
 @RequestMapping("/medical")
-@Api(value = "标准术语医学知识API", tags = { "标准术语医学知识API" })
-
+@SuppressWarnings("unchecked")
+@Api(value = "术语医学属性维护相关API", tags = { "术语医学属性维护相关API" })
 public class MedicalController {
+	
     @Autowired
     MedicalFacade medicalFacade;
+    
+    @ApiOperation(value = "术语医学属性删除[by:rengb]")
+    @PostMapping("/removeMedicalInfo")
+    @SysLogger("removeMedicalInfo")
+    @Transactional
+    public RespDTO<Boolean> removeMedicalInfo(@Valid @RequestBody RemoveMedicalInfoVO removeMedicalInfoVO) {
+        return RespDTO.onSuc(medicalFacade.removeMedicalInfo(removeMedicalInfoVO));
+    }
+    
+    @ApiOperation(value = "获取术语医学属性详情[by:rengb]")
+    @PostMapping("/getMedicalInfoDetail")
+    @SysLogger("getMedicalInfoDetail")
+    public RespDTO<GetMedicalInfoDetailDTO> getMedicalInfoDetail(@Valid @RequestBody GetMedicalInfoDetailVO getMedicalInfoDetailVO) {
+        return RespDTO.onSuc(medicalFacade.getMedicalInfoDetail(getMedicalInfoDetailVO));
+    }
+    
+    @ApiOperation(value = "术语医学属性添加或者编辑[by:rengb]")
+    @PostMapping("/addMedicalInfo")
+    @SysLogger("addMedicalInfo")
+    @Transactional
+    public RespDTO<Boolean> addMedicalInfo(@Valid @RequestBody AddMedicalInfoVO addMedicalInfoVO) {
+        return RespDTO.onSuc(medicalFacade.addMedicalInfo(addMedicalInfoVO));
+    }
+    
+    @ApiOperation(value = "术语医学属性excel文件导入[by:rengb]")
+    @PostMapping("/medicalInfoExcelIm")
+    @SysLogger("medicalInfoExcelIm")
+    @Transactional
+    public RespDTO<Boolean> medicalInfoExcelIm(@RequestParam("uploadfile") MultipartFile file,HttpServletRequest request) {
+        return RespDTO.onSuc(medicalFacade.medicalInfoExcelIm(file));
+    }
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
 
 
     @ApiOperation(value = "术语医学知识查询",
@@ -67,14 +120,4 @@ public class MedicalController {
 
         return RespDTO.onSuc(data);
     }
-
-    @ApiOperation(value = "术语医学知识删除",
-            notes = "Term: 术语名称, 必填<br/>Type: 术语类型, 必填<br/>")
-    @PostMapping("/removeMedicalInfo")
-    @SysLogger("removeMedicalInfo")
-    public RespDTO<ConceptDTO> removeMedicalInfo(@Valid @RequestBody TermVo termVo) {
-        ConceptDTO data = medicalFacade.removeMedicalInfo(termVo);
-
-        return RespDTO.onSuc(data);
-    }
 }

+ 11 - 16
knowledgeman-service/src/main/java/com/diagbot/web/TypeController.java

@@ -1,26 +1,20 @@
 package com.diagbot.web;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.ConceptDTO;
-import com.diagbot.dto.LibraryInfoDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.TypeDTO;
-import com.diagbot.facade.ConceptFacade;
 import com.diagbot.facade.TypeFacade;
-import com.diagbot.vo.AmendTermVo;
-import com.diagbot.vo.ConceptVo;
-import com.diagbot.vo.TermVo;
 import com.diagbot.vo.TypeVo;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.validation.Valid;
-import java.util.List;
 
 /**
  * <p>
@@ -32,15 +26,16 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/type")
-@Api(value = "医学术语类型API", tags = { "医学术语类型API" })
-
+@SuppressWarnings("unchecked")
+@Api(value = "医学术语类型维护相关API", tags = { "医学术语类型维护相关API" })
 public class TypeController {
+	
     @Autowired
     private TypeFacade typeFacade;
 
 
-    @ApiOperation(value = "查询所有类型")
-    @PostMapping("getAllType")
+    @ApiOperation(value = "获取医学术语类型列表[by:rengb]")
+    @PostMapping("/getAllType")
     @SysLogger("getAllType")
     public RespDTO<IPage<TypeDTO>> getAllType(@RequestBody TypeVo typeVo) {
         IPage<TypeDTO> data = typeFacade.getTypes(typeVo);

+ 19 - 0
knowledgeman-service/src/main/resources/mapper/BodypartMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.BodypartMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.Bodypart">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_created" property="gmtCreated" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="sub_bodypart" property="subBodypart" />
+        <result column="sub_order" property="subOrder" />
+        <result column="bodypart" property="bodypart" />
+        <result column="order" property="order" />
+    </resultMap>
+
+</mapper>

+ 4 - 1
knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml

@@ -5,9 +5,12 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.Concept">
         <id column="id" property="id" />
-        <result column="lib_id" property="libId" />
+        <result column="is_deleted" property="isDeleted" />
         <result column="gmt_created" property="gmtCreated" />
         <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="lib_id" property="libId" />
     </resultMap>
 
     <select id="getConcept" parameterType="com.diagbot.vo.TermVo" resultType="com.diagbot.dto.ConceptDTO">

+ 6 - 1
knowledgeman-service/src/main/resources/mapper/LexiconMapper.xml

@@ -5,9 +5,14 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.Lexicon">
         <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_created" property="gmtCreated" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
         <result column="name" property="name" />
         <result column="remark" property="remark" />
-        <result column="class" property="class" />
+        <result column="class_cont" property="classCont" />
     </resultMap>
 
     <select id="getAllTypes" resultType="com.diagbot.dto.TypeDTO">

+ 5 - 0
knowledgeman-service/src/main/resources/mapper/LexiconRelationshipMapper.xml

@@ -5,6 +5,11 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.LexiconRelationship">
         <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_created" property="gmtCreated" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
         <result column="name" property="name" />
         <result column="code" property="code" />
     </resultMap>

+ 1 - 1
knowledgeman-service/src/main/resources/mapper/LibraryDetailMapper.xml

@@ -6,7 +6,7 @@
     <resultMap id="BaseResultMap" type="com.diagbot.entity.LibraryDetail">
         <id column="id" property="id" />
         <result column="is_deleted" property="isDeleted" />
-        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_created" property="gmtCreated" />
         <result column="gmt_modified" property="gmtModified" />
         <result column="creator" property="creator" />
         <result column="modifier" property="modifier" />

+ 21 - 23
knowledgeman-service/src/main/resources/mapper/LibraryInfoMapper.xml

@@ -14,6 +14,7 @@
         <result column="type" property="type" />
         <result column="remark" property="remark" />
         <result column="concept_id" property="conceptId" />
+        <result column="order_no" property="orderNo" />
         <result column="is_concept" property="isConcept" />
     </resultMap>
 
@@ -21,31 +22,28 @@
         SELECT * FROM library_info WHERE is_concept = 1
     </select>
 
-    <select id="getAllInfor" resultType="com.diagbot.dto.LibraryInfoDTO">
-        SELECT
-        id,
-        is_deleted,
-        gmt_created,
-        gmt_modified,
-        creator,
-        modifier,
-        name,
-        b.synonymous,
-        type,
-        remark,
-        a.concept_id,
-        a.is_concept
-        FROM library_info a,
-        (SELECT concept_id, GROUP_CONCAT(name separator ', ') as synonymous FROM library_info
-        WHERE concept_id IS NOT NULL AND is_deleted = "N"
-        GROUP BY concept_id ORDER BY concept_id) b
-        WHERE a.concept_id = b.concept_id AND a.is_deleted = "N" AND a.is_concept = 1
-        <if test = "term != ''">
-            AND a.name like concat('%',#{term},'%')
-        </if>
-        <if test = "type != ''">
+    <select id="getAllInformation" resultType="com.diagbot.dto.GetAllInformationDTO">
+    	SELECT
+		*
+		FROM
+		(SELECT
+		a.id as conceptId,
+		GROUP_CONCAT(CASE WHEN a.lib_id=b.id THEN b.`name` ELSE NULL END) AS libName,
+		b.type AS libType,
+		GROUP_CONCAT(b.`name` ORDER BY b.id ASC SEPARATOR '、') as otherNames,
+		a.modifier as operName,
+		a.gmt_modified as operTime
+		FROM concept a JOIN library_info b ON a.id=b.concept_id
+		WHERE a.is_deleted='N' AND b.is_deleted='N'
+		GROUP BY a.id) t
+		where 1=1
+		<if test="name!=null">
+			 AND otherNames like concat('%',#{name},'%')	
+		</if>
+		<if test="type!=null">
             AND a.type = #{type}
         </if>
+		ORDER BY operTime DESC
     </select>
 
     <select id="getLimboItems" resultType="com.diagbot.entity.LibraryInfo">

+ 5 - 1
knowledgeman-service/src/main/resources/mapper/MedicalMapper.xml

@@ -5,6 +5,11 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.Medical">
         <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_created" property="gmtCreated" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
         <result column="concept_id" property="conceptId" />
         <result column="name" property="name" />
         <result column="std_name" property="stdName" />
@@ -20,7 +25,6 @@
         <result column="dept" property="dept" />
         <result column="code" property="code" />
         <result column="note" property="note" />
-        <result column="is_deleted" property="isDeleted" />
     </resultMap>
 
 

+ 5 - 0
knowledgeman-service/src/main/resources/mapper/RelationMapper.xml

@@ -5,6 +5,11 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.Relation">
         <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_created" property="gmtCreated" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
         <result column="start_id" property="startId" />
         <result column="relation_id" property="relationId" />
         <result column="end_id" property="endId" />

+ 3 - 3
knowledgeman-service/src/test/java/com/diagbot/CodeGeneration.java

@@ -48,15 +48,15 @@ public class CodeGeneration {
         dsc.setDbType(DbType.MYSQL);
         dsc.setDriverName("com.mysql.jdbc.Driver");
         dsc.setUsername("root");
-        dsc.setPassword("root");
-        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/sys-log?useUnicode=true&characterEncoding=utf-8");
+        dsc.setPassword("diagbot@20180822");
+        dsc.setUrl("jdbc:mysql://192.168.2.235:3306/diagbot-med?useUnicode=true&characterEncoding=utf-8");
         mpg.setDataSource(dsc);
 
         // 策略配置
         StrategyConfig strategy = new StrategyConfig();
 //        strategy.setTablePrefix(new String[] { "sys_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "sys_log" }); // 需要生成的表
+        strategy.setInclude(new String[] { "concept","library_info","medical","relation"}); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);