浏览代码

Merge branch 'dev/20220228_v3.0.1通用版_渠道管理第一期' into debug

zhanghang 3 年之前
父节点
当前提交
5d6b2e1551
共有 23 个文件被更改,包括 545 次插入101 次删除
  1. 6 8
      daqe-center/src/main/java/com/lantone/daqe/dto/ErrImportDiseaseDTO.java
  2. 50 0
      daqe-center/src/main/java/com/lantone/daqe/dto/ExportImportDrugErrDTO.java
  3. 42 0
      daqe-center/src/main/java/com/lantone/daqe/dto/ExportImportOperationDTO.java
  4. 5 5
      daqe-center/src/main/java/com/lantone/daqe/dto/GetFieldCalibrationPageDTO.java
  5. 4 1
      daqe-center/src/main/java/com/lantone/daqe/dto/GetOfficialCapacityPageDTO.java
  6. 47 0
      daqe-center/src/main/java/com/lantone/daqe/dto/GetRecordTemplateManageDTO.java
  7. 1 1
      daqe-center/src/main/java/com/lantone/daqe/dto/GetRecordTemplatePageDTO.java
  8. 72 4
      daqe-center/src/main/java/com/lantone/daqe/facade/DiseaseManagementFacade.java
  9. 94 0
      daqe-center/src/main/java/com/lantone/daqe/facade/DrugManagementFacade.java
  10. 4 6
      daqe-center/src/main/java/com/lantone/daqe/facade/OfficialCapacityManagementFacade.java
  11. 85 0
      daqe-center/src/main/java/com/lantone/daqe/facade/OperationManagementFacade.java
  12. 5 2
      daqe-center/src/main/java/com/lantone/daqe/facade/RecordTemplateManagementFacade.java
  13. 0 27
      daqe-center/src/main/java/com/lantone/daqe/vo/DelOfficialCapacityByIdVO.java
  14. 4 4
      daqe-center/src/main/java/com/lantone/daqe/vo/GetFieldCalibrationPageVO.java
  15. 49 0
      daqe-center/src/main/java/com/lantone/daqe/vo/ImportDrugVO.java
  16. 42 0
      daqe-center/src/main/java/com/lantone/daqe/vo/ImportOperationVO.java
  17. 6 7
      daqe-center/src/main/java/com/lantone/daqe/vo/MatchingDrugVO.java
  18. 3 2
      daqe-center/src/main/java/com/lantone/daqe/web/DiseaseManagementController.java
  19. 9 0
      daqe-center/src/main/java/com/lantone/daqe/web/DrugManagementController.java
  20. 0 6
      daqe-center/src/main/java/com/lantone/daqe/web/FieldCalibrationManagementController.java
  21. 4 15
      daqe-center/src/main/java/com/lantone/daqe/web/OfficialCapacityManagementController.java
  22. 9 0
      daqe-center/src/main/java/com/lantone/daqe/web/OperationManagementController.java
  23. 4 13
      daqe-center/src/main/java/com/lantone/daqe/web/RecordTemplateManagementController.java

+ 6 - 8
daqe-center/src/main/java/com/lantone/daqe/dto/ErrImportDiseaseDTO.java

@@ -1,25 +1,23 @@
 package com.lantone.daqe.dto;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
-import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
 
 /**
- * @Description: 医院诊断标准词匹配信息导入-接口出参
+ * @Description: 医院诊断标准词匹配信息导入出错-接口出参
  * @author: songxl
  * @time: 2022/2/28 11:15
  */
-@ApiModel(value = "医院诊断标准词匹配信息导入-接口出参")
+@ApiModel(value = "医院诊断标准词匹配信息导入出错-接口出参")
 @Getter
 @Setter
-public class ErrImportDiseaseDTO implements Serializable {
+public class ExportImportDiseaseErrDTO implements Serializable {
 
-    private static final long serialVersionUID = 2170219156305713032L;
+    private static final long serialVersionUID = -6780037405683135842L;
 
     @Excel(name = "医院诊断名称")
     private String name;
@@ -39,7 +37,7 @@ public class ErrImportDiseaseDTO implements Serializable {
     @Excel(name = "标准术语状态")
     private String status;
 
-    @Excel(name = "错误信息", width = 40)
-    private String errorMsg;
+    @Excel(name = "错误提示" , width = 40)
+    private String errMsg;
 
 }

+ 50 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/ExportImportDrugErrDTO.java

@@ -0,0 +1,50 @@
+package com.lantone.daqe.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 药品匹配信息导入出错-接口出参
+ * @author: songxl
+ * @time: 2022/2/28 11:15
+ */
+@ApiModel(value = "药品匹配信息导入出错-接口出参")
+@Getter
+@Setter
+public class ExportImportDrugErrDTO implements Serializable {
+
+    private static final long serialVersionUID = -5293580591477859209L;
+
+    @Excel(name = "医院药品名称")
+    private String name;
+
+    @Excel(name = "标准药品名称")
+    private String standard;
+
+    @ApiModelProperty(value = "药品剂型")
+    private String form;
+
+    @ApiModelProperty(value = "国药准字")
+    private String approvalNum;
+
+    @Excel(name = "是否匹配【未匹配、已匹配】")
+    private String isMapping;
+
+    @Excel(name = "数据来源【不填、标准词、同义词、编码、历史数据、相似词、国药准字】")
+    private String synonym;
+
+    @Excel(name = "标准术语状态")
+    private String status;
+
+    @Excel(name = "标准剂型状态")
+    private String relationstatus;
+
+    @Excel(name = "错误提示" , width = 40)
+    private String errMsg;
+
+}

+ 42 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/ExportImportOperationDTO.java

@@ -0,0 +1,42 @@
+package com.lantone.daqe.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 医院手术标准词匹配信息导入出错-接口出参
+ * @author: songxl
+ * @time: 2022/2/28 11:15
+ */
+@ApiModel(value = "医院手术标准词匹配信息导入出错-接口出参")
+@Getter
+@Setter
+public class ExportImportOperationDTO implements Serializable {
+
+    private static final long serialVersionUID = -8732549646556137033L;
+
+    @Excel(name = "医院手术/操作名称")
+    private String name;
+
+    @Excel(name = "手术和操作代码")
+    private String code;
+
+    @Excel(name = "标准手术/操作名称")
+    private String standard;
+
+    @Excel(name = "是否匹配【未匹配、已匹配】")
+    private String isMapping;
+
+    @Excel(name = "数据来源【不填、标准词、同义词、编码、历史数据、相似词】")
+    private String synonym;
+
+    @Excel(name = "标准术语状态")
+    private String status;
+
+    @Excel(name = "错误提示" , width = 40)
+    private String errMsg;
+}

+ 5 - 5
daqe-center/src/main/java/com/lantone/daqe/dto/GetFieldCalibrationPageDTO.java

@@ -23,13 +23,13 @@ public class GetFieldCalibrationPageDTO implements Serializable {
     private Long hospitalId;
 
     @ApiModelProperty(value = "序号")
-    private Long Id;
+    private Long id;
 
-    @ApiModelProperty(value = "表字段(中文)")
-    private String tableFieldChinese;
+    @ApiModelProperty(value = "表名称(中文)")
+    private String tableNameChinese;
 
-    @ApiModelProperty(value = "表字段(英文)")
-    private String tableFieldEnglish;
+    @ApiModelProperty(value = "表名称(英文)")
+    private String tableNameEnglish;
 
     @ApiModelProperty(value = "字段名称(中文)")
     private String fieldNameChinese;

+ 4 - 1
daqe-center/src/main/java/com/lantone/daqe/dto/GetOfficialCapacityPageDTO.java

@@ -20,7 +20,10 @@ import java.util.Date;
 public class GetOfficialCapacityPageDTO implements Serializable {
 
 
-    private static final long serialVersionUID = -5020172914749530114L;
+    private static final long serialVersionUID = 1003461179915286718L;
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
     @ApiModelProperty(value = "组织机构ID")
     private Long hospitalId;
 

+ 47 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/GetRecordTemplateManageDTO.java

@@ -0,0 +1,47 @@
+package com.lantone.daqe.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 查看文书模板信息-接口出参
+ * @author: zhanghang
+ * @time: 2022/2/28 17:47
+ */
+@ApiModel(value = "查看文书模板信息-接口出参")
+@Getter
+@Setter
+public class GetRecordTemplateManageDTO implements Serializable {
+
+
+    private static final long serialVersionUID = 391072141806786072L;
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "组织机构ID")
+    private Long hospitalId;
+
+    @ApiModelProperty(value = "医院模板ID")
+    private String code;
+
+    @ApiModelProperty(value = "医院模板名称")
+    private String name;
+
+    @ApiModelProperty(value = "医院父类模板ID")
+    private String parentCode;
+
+    @ApiModelProperty(value = "医院父类模板名称")
+    private String parentName;
+
+    @ApiModelProperty(value = "模板内容")
+    private String content;
+
+    @ApiModelProperty(value = "模板类型")
+    private String contentType;
+
+
+}

+ 1 - 1
daqe-center/src/main/java/com/lantone/daqe/dto/GetRecordTemplatePageDTO.java

@@ -20,7 +20,7 @@ public class GetRecordTemplatePageDTO implements Serializable {
 
     private static final long serialVersionUID = 8095973115574155886L;
     @ApiModelProperty(value = "主键")
-    private Long Id;
+    private Long id;
 
     @ApiModelProperty(value = "组织机构ID")
     private Long hospitalId;

+ 72 - 4
daqe-center/src/main/java/com/lantone/daqe/facade/DiseaseManagementFacade.java

@@ -1,15 +1,19 @@
 package com.lantone.daqe.facade;
 
+import com.alibaba.fastjson.JSONObject;
 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.lantone.common.api.CommonResult;
 import com.lantone.common.exception.Asserts;
 import com.lantone.common.util.BeanUtil;
 import com.lantone.common.util.ListUtil;
 import com.lantone.common.util.StringUtil;
+import com.lantone.daqe.dto.ExportImportDiseaseErrDTO;
 import com.lantone.daqe.dto.GetDiseasePageDTO;
 import com.lantone.daqe.entity.DiseaseInfo;
 import com.lantone.daqe.facade.base.DiseaseInfoFacade;
+import com.lantone.daqe.service.impl.DiseaseInfoServiceImpl;
 import com.lantone.daqe.util.ExcelUtils;
 import com.lantone.daqe.vo.AddDiseaseVO;
 import com.lantone.daqe.vo.DelDiseaseByIdVO;
@@ -22,7 +26,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 诊断管理-业务处理类
@@ -34,6 +44,8 @@ public class DiseaseManagementFacade {
 
     @Autowired
     private DiseaseInfoFacade diseaseInfoFacade;
+    @Autowired
+    private DiseaseInfoServiceImpl diseaseInfoServiceImpl;
 
     public IPage<GetDiseasePageDTO> getDiseasePage(GetDiseasePageVO getDiseasePageVO) {
         Page<GetDiseasePageDTO> getDiseasePageDTOPage = new Page<>();
@@ -124,15 +136,71 @@ public class DiseaseManagementFacade {
      * @param file 导入文件
      * @Return java.lang.String
      */
-    public String importDisease(MultipartFile file) {
+    public void importDisease(HttpServletResponse response, MultipartFile file) {
         List<ImportDiseaseVO> diagnoseExcelVOS = ExcelUtils.importExcel(file, 0, 1, ImportDiseaseVO.class);
         if (ListUtil.isEmpty(diagnoseExcelVOS)) {
             Asserts.fail("Excel文件为空");
         }
-        //去重
-
         //数据规范校验
+        List<ExportImportDiseaseErrDTO> errExports = new ArrayList<>();
+        if (checkData(diagnoseExcelVOS, errExports)) {
+            String fileName = "诊断标准词匹配信息导入异常.xls";
+            ExcelUtils.exportExcelUser(errExports, null, "sheet1", ExportImportDiseaseErrDTO.class, fileName, response);
+        } else {
+            //去重
+            List<ImportDiseaseVO> temp = delRepeat(diagnoseExcelVOS);
+            //导入
+            List<DiseaseInfo> insert = BeanUtil.listCopyTo(temp, DiseaseInfo.class);
+            boolean out = diseaseInfoServiceImpl.saveBatch(insert);
+            CommonResult<String> outMsg = null;
+            response.setContentType("text/html;charset=utf-8");
+            if (out) {
+                outMsg = CommonResult.success(String.format("模板成功导入%s条数据", insert.size()));
+                try {
+                    response.getWriter().println(JSONObject.toJSONString(outMsg));
+                    response.flushBuffer();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            } else {
+                Asserts.fail("数据插入失败");
+            }
+        }
+
+    }
+
+    /**
+     * 数据校验
+     *
+     * @param diagnoseExcelVOS 导入数据
+     * @param errExports 导出异常
+     * @Return java.lang.Boolean
+     */
+    private Boolean checkData(List<ImportDiseaseVO> diagnoseExcelVOS, List<ExportImportDiseaseErrDTO> errExports) {
+        AtomicBoolean errorFlog = new AtomicBoolean(false);
+        diagnoseExcelVOS.stream().forEach(importDiseaseVO -> {
+            ExportImportDiseaseErrDTO exportImportDiseaseErrDTO = new ExportImportDiseaseErrDTO();
+            BeanUtil.copyProperties(importDiseaseVO, exportImportDiseaseErrDTO);
+            StringBuffer errMsg = new StringBuffer();
+            //数据校验
+            if (StringUtil.isEmpty(importDiseaseVO.getName())) {
+                errMsg.append("医院诊断名称为空").append(";");
+                errorFlog.set(true);
+            }
+            if (StringUtil.isEmpty(importDiseaseVO.getStandard())) {
+                errMsg.append("标准诊断名称为空").append(";");
+                errorFlog.set(true);
+            }
+            exportImportDiseaseErrDTO.setErrMsg(errMsg.toString());
+            errExports.add(exportImportDiseaseErrDTO);
+        });
+        return errorFlog.get();
+    }
 
-        return "";
+    private List<ImportDiseaseVO> delRepeat(List<ImportDiseaseVO> diagnoseExcelVOS) {
+        //通过标准词去重
+        LinkedHashMap<String, ImportDiseaseVO> tempMap = diagnoseExcelVOS.stream()
+                .collect(Collectors.toMap(ImportDiseaseVO::getName, ImportDiseaseVO -> ImportDiseaseVO, (k1, k2) -> k1, LinkedHashMap::new));
+        return tempMap.values().stream().collect(Collectors.toList());
     }
 }

+ 94 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/DrugManagementFacade.java

@@ -1,24 +1,39 @@
 package com.lantone.daqe.facade;
 
+import com.alibaba.fastjson.JSONObject;
 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.lantone.common.api.CommonResult;
 import com.lantone.common.exception.Asserts;
 import com.lantone.common.util.BeanUtil;
+import com.lantone.common.util.ListUtil;
 import com.lantone.common.util.StringUtil;
+import com.lantone.daqe.dto.ExportImportDrugErrDTO;
 import com.lantone.daqe.dto.GetDrugPageDTO;
 import com.lantone.daqe.entity.DrugInfo;
+import com.lantone.daqe.entity.OperationInfo;
 import com.lantone.daqe.facade.base.DrugInfoFacade;
+import com.lantone.daqe.service.impl.DrugInfoServiceImpl;
+import com.lantone.daqe.util.ExcelUtils;
 import com.lantone.daqe.vo.AddDrugVO;
 import com.lantone.daqe.vo.DelDrugByIdVO;
 import com.lantone.daqe.vo.GetDrugPageVO;
+import com.lantone.daqe.vo.ImportDrugVO;
 import com.lantone.daqe.vo.MatchingDrugVO;
 import com.lantone.daqe.vo.UpDrugByIdVO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 药品管理-业务处理类
@@ -31,6 +46,9 @@ public class DrugManagementFacade {
     @Autowired
     private DrugInfoFacade drugInfoFacade;
 
+    @Autowired
+    private DrugInfoServiceImpl drugInfoServiceImpl;
+
     public IPage<GetDrugPageDTO> getDrugPage(GetDrugPageVO getDrugPageVO) {
         Page<GetDrugPageDTO> getDrugPageDTOPage = new Page<>();
 
@@ -104,6 +122,8 @@ public class DrugManagementFacade {
     }
 
     /**
+     * 匹配药品信息
+     *
      * @param matchingDrugVO
      * @Return java.lang.Boolean
      */
@@ -111,6 +131,80 @@ public class DrugManagementFacade {
 
         DrugInfo drugInfo = new DrugInfo();
         BeanUtils.copyProperties(matchingDrugVO, drugInfo);
+        drugInfo.setStandard(matchingDrugVO.getStandard() + "_" + matchingDrugVO.getForm());
         return drugInfoFacade.updateById(drugInfo);
     }
+
+    public void importDrug(HttpServletResponse response, MultipartFile file) {
+        List<ImportDrugVO> operationExcelVOS = ExcelUtils.importExcel(file, 0, 1, ImportDrugVO.class);
+        if (ListUtil.isEmpty(operationExcelVOS)) {
+            Asserts.fail("Excel文件为空");
+        }
+        //数据规范校验
+        List<ExportImportDrugErrDTO> errExports = new ArrayList<>();
+        if (checkData(operationExcelVOS, errExports)) {
+            String fileName = "药品匹配信息导入异常.xls";
+            ExcelUtils.exportExcelUser(errExports, null, "sheet1", ExportImportDrugErrDTO.class, fileName, response);
+        } else {
+            //去重
+            List<ImportDrugVO> temp = delRepeat(operationExcelVOS);
+            List<DrugInfo> insert = new ArrayList<>();
+            //导入数据转换
+            temp.stream().forEach(importDrugVO -> {
+                DrugInfo drugInfo = new DrugInfo();
+                BeanUtils.copyProperties(importDrugVO,drugInfo);
+                drugInfo.setStandard(importDrugVO.getStandard()+"_"+importDrugVO.getForm());
+            });
+            boolean out = drugInfoServiceImpl.saveBatch(insert);
+            CommonResult<String> outMsg = null;
+            response.setContentType("text/html;charset=utf-8");
+            if (out) {
+                outMsg = CommonResult.success(String.format("模板成功导入%s条数据", insert.size()));
+                try {
+                    response.getWriter().println(JSONObject.toJSONString(outMsg));
+                    response.flushBuffer();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            } else {
+                Asserts.fail("数据插入失败");
+            }
+        }
+    }
+
+
+    /**
+     * 数据校验
+     *
+     * @param importDrugVOS 导入数据
+     * @param errExports 导出异常i
+     * @Return java.lang.Boolean
+     */
+    private Boolean checkData(List<ImportDrugVO> importDrugVOS, List<ExportImportDrugErrDTO> errExports) {
+        AtomicBoolean errorFlog = new AtomicBoolean(false);
+        importDrugVOS.stream().forEach(importDrugVO -> {
+            ExportImportDrugErrDTO exportImportDrugErrDTO = new ExportImportDrugErrDTO();
+            BeanUtil.copyProperties(importDrugVO, exportImportDrugErrDTO);
+            StringBuffer errMsg = new StringBuffer();
+            //数据校验
+            if (StringUtil.isEmpty(importDrugVO.getName())) {
+                errMsg.append("医院手术/操作名称为空").append(";");
+                errorFlog.set(true);
+            }
+            if (StringUtil.isEmpty(importDrugVO.getStandard())) {
+                errMsg.append("标准手术/操作名称为空").append(";");
+                errorFlog.set(true);
+            }
+            exportImportDrugErrDTO.setErrMsg(errMsg.toString());
+            errExports.add(exportImportDrugErrDTO);
+        });
+        return errorFlog.get();
+    }
+
+    private List<ImportDrugVO> delRepeat(List<ImportDrugVO> importDrugVOS) {
+        //通过标准词去重
+        LinkedHashMap<String, ImportDrugVO> tempMap = importDrugVOS.stream()
+                .collect(Collectors.toMap(ImportDrugVO::getName, ImportDrugVO -> ImportDrugVO, (k1, k2) -> k1, LinkedHashMap::new));
+        return tempMap.values().stream().collect(Collectors.toList());
+    }
 }

+ 4 - 6
daqe-center/src/main/java/com/lantone/daqe/facade/OfficialCapacityManagementFacade.java

@@ -9,7 +9,6 @@ import com.lantone.common.util.StringUtil;
 import com.lantone.daqe.dto.GetOfficialCapacityPageDTO;
 import com.lantone.daqe.entity.OfficialCapacity;
 import com.lantone.daqe.facade.base.OfficialCapacityFacade;
-import com.lantone.daqe.vo.DelOfficialCapacityByIdVO;
 import com.lantone.daqe.vo.GetOfficialCapacityPageVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -67,19 +66,18 @@ public class OfficialCapacityManagementFacade {
         return getOfficialCapacityPageDTOPage;
     }
 
+
     /**
-     * 根据ID删除该条职务职称变更记录
-     *
-     * @param delOfficialCapacityByIdVO
+     * @param idList
      * @return: 是否成功
      */
-    public Boolean delOfficialCapacityPage(DelOfficialCapacityByIdVO delOfficialCapacityByIdVO) {
+    public Boolean delOfficialCapacityPage(Long idList[]) {
         OfficialCapacity officialCapacity = new OfficialCapacity();
         officialCapacity.setIsDeleted(IsDeleteEnum.Y.getKey());
         officialCapacity.setGmtModified(new Date());
         return officialCapacityFacade.update(officialCapacity, new QueryWrapper<OfficialCapacity>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("id", delOfficialCapacityByIdVO.getId())
+                .in("id", idList)
         );
     }
 

+ 85 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/OperationManagementFacade.java

@@ -1,24 +1,38 @@
 package com.lantone.daqe.facade;
 
+import com.alibaba.fastjson.JSONObject;
 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.lantone.common.api.CommonResult;
 import com.lantone.common.exception.Asserts;
 import com.lantone.common.util.BeanUtil;
+import com.lantone.common.util.ListUtil;
 import com.lantone.common.util.StringUtil;
+import com.lantone.daqe.dto.ExportImportOperationDTO;
 import com.lantone.daqe.dto.GetOperationPageDTO;
 import com.lantone.daqe.entity.OperationInfo;
 import com.lantone.daqe.facade.base.OperationInfoFacade;
+import com.lantone.daqe.service.impl.OperationInfoServiceImpl;
+import com.lantone.daqe.util.ExcelUtils;
 import com.lantone.daqe.vo.AddOperationVO;
 import com.lantone.daqe.vo.DelOperationByIdVO;
 import com.lantone.daqe.vo.GetOperationPageVO;
+import com.lantone.daqe.vo.ImportOperationVO;
 import com.lantone.daqe.vo.MatchingOperationVO;
 import com.lantone.daqe.vo.UpOperationByIdVO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 手术管理-业务处理类
@@ -31,6 +45,9 @@ public class OperationManagementFacade {
     @Autowired
     private OperationInfoFacade operationInfoFacade;
 
+    @Autowired
+    private OperationInfoServiceImpl operationInfoServiceImpl;
+
     public IPage<GetOperationPageDTO> getOperationPage(GetOperationPageVO getOperationPageVO) {
         Page<GetOperationPageDTO> getOperationPageDTOPage = new Page<>();
 
@@ -112,4 +129,72 @@ public class OperationManagementFacade {
         BeanUtils.copyProperties(matchingOperationVO, operationInfo);
         return operationInfoFacade.updateById(operationInfo);
     }
+
+    public void importOperation(HttpServletResponse response, MultipartFile file) {
+        List<ImportOperationVO> operationExcelVOS = ExcelUtils.importExcel(file, 0, 1, ImportOperationVO.class);
+        if (ListUtil.isEmpty(operationExcelVOS)) {
+            Asserts.fail("Excel文件为空");
+        }
+        //数据规范校验
+        List<ExportImportOperationDTO> errExports = new ArrayList<>();
+        if (checkData(operationExcelVOS, errExports)) {
+            String fileName = "医院手术标准词匹配信息导入异常.xls";
+            ExcelUtils.exportExcelUser(errExports, null, "sheet1", ExportImportOperationDTO.class, fileName, response);
+        } else {
+            //去重
+            List<ImportOperationVO> temp = delRepeat(operationExcelVOS);
+            //导入
+            List<OperationInfo> insert = BeanUtil.listCopyTo(temp, OperationInfo.class);
+            boolean out = operationInfoServiceImpl.saveBatch(insert);
+            CommonResult<String> outMsg = null;
+            response.setContentType("text/html;charset=utf-8");
+            if (out) {
+                outMsg = CommonResult.success(String.format("模板成功导入%s条数据", insert.size()));
+                try {
+                    response.getWriter().println(JSONObject.toJSONString(outMsg));
+                    response.flushBuffer();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            } else {
+                Asserts.fail("数据插入失败");
+            }
+        }
+    }
+
+
+    /**
+     * 数据校验
+     *
+     * @param importOperationVOS 导入数据
+     * @param errExports 导出异常
+     * @Return java.lang.Boolean
+     */
+    private Boolean checkData(List<ImportOperationVO> importOperationVOS, List<ExportImportOperationDTO> errExports) {
+        AtomicBoolean errorFlog = new AtomicBoolean(false);
+        importOperationVOS.stream().forEach(importOperationVO -> {
+            ExportImportOperationDTO exportImportOperationDTO = new ExportImportOperationDTO();
+            BeanUtil.copyProperties(importOperationVO, exportImportOperationDTO);
+            StringBuffer errMsg = new StringBuffer();
+            //数据校验
+            if (StringUtil.isEmpty(importOperationVO.getName())) {
+                errMsg.append("医院手术/操作名称为空").append(";");
+                errorFlog.set(true);
+            }
+            if (StringUtil.isEmpty(importOperationVO.getStandard())) {
+                errMsg.append("标准手术/操作名称为空").append(";");
+                errorFlog.set(true);
+            }
+            exportImportOperationDTO.setErrMsg(errMsg.toString());
+            errExports.add(exportImportOperationDTO);
+        });
+        return errorFlog.get();
+    }
+
+    private List<ImportOperationVO> delRepeat(List<ImportOperationVO> importOperationVOS) {
+        //通过标准词去重
+        LinkedHashMap<String, ImportOperationVO> tempMap = importOperationVOS.stream()
+                .collect(Collectors.toMap(ImportOperationVO::getName, ImportOperationVO -> ImportOperationVO, (k1, k2) -> k1, LinkedHashMap::new));
+        return tempMap.values().stream().collect(Collectors.toList());
+    }
 }

+ 5 - 2
daqe-center/src/main/java/com/lantone/daqe/facade/RecordTemplateManagementFacade.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.lantone.common.enums.IsDeleteEnum;
 import com.lantone.common.util.BeanUtil;
 import com.lantone.common.util.StringUtil;
+import com.lantone.daqe.dto.GetRecordTemplateManageDTO;
 import com.lantone.daqe.dto.GetRecordTemplatePageDTO;
 import com.lantone.daqe.entity.RecordTemplate;
 import com.lantone.daqe.facade.base.RecordTemplateFacade;
@@ -58,11 +59,13 @@ public class RecordTemplateManagementFacade {
      * @param getRecordTemplateByIdVO
      * @return: 模板具体的内容
      */
-    public RecordTemplate getRecordTemplateById(GetRecordTemplateByIdVO getRecordTemplateByIdVO) {
+    public GetRecordTemplateManageDTO getRecordTemplateById(GetRecordTemplateByIdVO getRecordTemplateByIdVO) {
+        GetRecordTemplateManageDTO getRecordTemplateManageDTO = new GetRecordTemplateManageDTO();
         RecordTemplate recordTemplate = recordTemplateFacade.getOne(new QueryWrapper<RecordTemplate>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("id", getRecordTemplateByIdVO.getId())
         );
-        return recordTemplate;
+        BeanUtil.copyProperties(recordTemplate, getRecordTemplateManageDTO);
+        return getRecordTemplateManageDTO;
     }
 }

+ 0 - 27
daqe-center/src/main/java/com/lantone/daqe/vo/DelOfficialCapacityByIdVO.java

@@ -1,27 +0,0 @@
-package com.lantone.daqe.vo;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * @Description: 删除职务职称变更记录-接口入参
- * @author: zhanghang
- * @time: 2022/2/28 17:47
- */
-@ApiModel(value = "删除职务职称变更记录-接口入参")
-@Getter
-@Setter
-public class DelOfficialCapacityByIdVO implements Serializable {
-
-    private static final long serialVersionUID = 730596041870962141L;
-
-    @ApiModelProperty(value = "记录ID", required = true)
-    @NotNull(message = "记录ID不能为空")
-    private Long id;
-
-}

+ 4 - 4
daqe-center/src/main/java/com/lantone/daqe/vo/GetFieldCalibrationPageVO.java

@@ -20,11 +20,11 @@ public class GetFieldCalibrationPageVO extends Page {
     @ApiModelProperty(value = "组织机构ID")
     private Long hospitalId;
 
-    @ApiModelProperty(value = "表字段(中文)")
-    private String tableFieldChinese;
+    @ApiModelProperty(value = "表名称(中文)")
+    private String tableNameChinese;
 
-    @ApiModelProperty(value = "表字段(英文)")
-    private String tableFieldEnglish;
+    @ApiModelProperty(value = "表名称(英文)")
+    private String tableNameEnglish;
 
     @ApiModelProperty(value = "字段名称(中文)")
     private String fieldNameChinese;

+ 49 - 0
daqe-center/src/main/java/com/lantone/daqe/vo/ImportDrugVO.java

@@ -0,0 +1,49 @@
+package com.lantone.daqe.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 药品匹配信息导入-接口入参
+ * @author: songxl
+ * @time: 2022/2/28 11:15
+ */
+@ApiModel(value = "药品匹配信息导入-接口入参")
+@Getter
+@Setter
+@ExcelTarget("ImportDrugVO")
+public class ImportDrugVO implements Serializable {
+
+    private static final long serialVersionUID = -8885585698004578603L;
+
+    @Excel(name = "医院药品名称")
+    private String name;
+
+    @Excel(name = "标准药品名称")
+    private String standard;
+
+    @ApiModelProperty(value = "药品剂型")
+    private String form;
+
+    @ApiModelProperty(value = "国药准字")
+    private String approvalNum;
+
+    @Excel(name = "是否匹配【未匹配、已匹配】")
+    private String isMapping;
+
+    @Excel(name = "数据来源【不填、标准词、同义词、编码、历史数据、相似词、国药准字】")
+    private String synonym;
+
+    @Excel(name = "标准术语状态")
+    private String status;
+
+    @Excel(name = "标准剂型状态")
+    private String relationstatus;
+
+}

+ 42 - 0
daqe-center/src/main/java/com/lantone/daqe/vo/ImportOperationVO.java

@@ -0,0 +1,42 @@
+package com.lantone.daqe.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
+import io.swagger.annotations.ApiModel;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 医院手术标准词匹配信息导入-接口入参
+ * @author: songxl
+ * @time: 2022/2/28 11:15
+ */
+@ApiModel(value = "医院手术标准词匹配信息导入-接口入参")
+@Getter
+@Setter
+@ExcelTarget("ImportOperationVO")
+public class ImportOperationVO implements Serializable {
+
+    private static final long serialVersionUID = 190312070334277439L;
+
+    @Excel(name = "医院手术/操作名称")
+    private String name;
+
+    @Excel(name = "手术和操作代码")
+    private String code;
+
+    @Excel(name = "标准手术/操作名称")
+    private String standard;
+
+    @Excel(name = "是否匹配【未匹配、已匹配】")
+    private String isMapping;
+
+    @Excel(name = "数据来源【不填、标准词、同义词、编码、历史数据、相似词】")
+    private String synonym;
+
+    @Excel(name = "标准术语状态")
+    private String status;
+
+}

+ 6 - 7
daqe-center/src/main/java/com/lantone/daqe/vo/MatchingDrugVO.java

@@ -18,17 +18,16 @@ import java.io.Serializable;
 @Getter
 @Setter
 public class MatchingDrugVO implements Serializable {
-    private static final long serialVersionUID = -1191653962318238387L;
+    private static final long serialVersionUID = 6819802638431511984L;
 
-    @ApiModelProperty(value = "医院手术/操作名称ID", required = true)
-    @NotNull(message = "医院手术/操作名称ID不能为空")
+    @ApiModelProperty(value = "医院药品ID", required = true)
+    @NotNull(message = "医院药品ID不能为空")
     private Long id;
 
-    @ApiModelProperty(value = "手术和操作代码", required = true)
-    @NotBlank(message = "手术和操作代码不能为空")
-    private String code;
+    @ApiModelProperty(value = "药品剂型")
+    private String form;
 
-    @ApiModelProperty(value = "标准手术/操作名称")
+    @ApiModelProperty(value = "标准药品名称")
     private String standard;
 
     @ApiModelProperty(value = "同义词")

+ 3 - 2
daqe-center/src/main/java/com/lantone/daqe/web/DiseaseManagementController.java

@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
 /**
@@ -66,7 +67,7 @@ public class DiseaseManagementController {
 
     @ApiOperation(value = "医院诊断标准词匹配信息导入 [by:songxl]", notes = "医院诊断标准词匹配信息导入")
     @PostMapping("/importDisease")
-    public CommonResult<String> importDisease(@RequestParam("file") MultipartFile file) {
-        return CommonResult.success(diseaseManagementFacade.importDisease(file));
+    public void importDisease(HttpServletResponse response, @RequestParam("file") MultipartFile file) {
+        diseaseManagementFacade.importDisease(response, file);
     }
 }

+ 9 - 0
daqe-center/src/main/java/com/lantone/daqe/web/DrugManagementController.java

@@ -15,8 +15,11 @@ 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.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
 /**
@@ -62,4 +65,10 @@ public class DrugManagementController {
         return CommonResult.success(drugManagementFacade.matchingDrug(matchingDrugVO));
     }
 
+    @ApiOperation(value = "药品匹配信息导入 [by:songxl]", notes = "药品匹配信息导入")
+    @PostMapping("/importDrug")
+    public void importDrug(HttpServletResponse response, @RequestParam("file") MultipartFile file) {
+        drugManagementFacade.importDrug(response, file);
+    }
+
 }

+ 0 - 6
daqe-center/src/main/java/com/lantone/daqe/web/FieldCalibrationManagementController.java

@@ -28,12 +28,6 @@ public class FieldCalibrationManagementController {
     private FieldCalibrationManagementFacade fieldCalibrationManagementFacade;
 
 
-    /**
-     * 获取字段校验规则分页列表数据
-     *
-     * @param getFieldCalibrationPageVO
-     * @return: 字段校验规则分页数据
-     */
     @ApiOperation(value = "获取字段校验规则维护分页列表 [by:zhanghang]")
     @PostMapping("/getFieldCalibrationPage")
     public CommonResult<IPage<GetFieldCalibrationPageDTO>> getFieldCalibrationPage(@RequestBody GetFieldCalibrationPageVO getFieldCalibrationPageVO) {

+ 4 - 15
daqe-center/src/main/java/com/lantone/daqe/web/OfficialCapacityManagementController.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.api.CommonResult;
 import com.lantone.daqe.dto.GetOfficialCapacityPageDTO;
 import com.lantone.daqe.facade.OfficialCapacityManagementFacade;
-import com.lantone.daqe.vo.DelOfficialCapacityByIdVO;
 import com.lantone.daqe.vo.GetOfficialCapacityPageVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -29,28 +28,18 @@ public class OfficialCapacityManagementController {
     @Autowired
     private OfficialCapacityManagementFacade officialCapacityManagementFacade;
 
-    /**
-     * 获取获取职务职称变更记录分页列表数据
-     *
-     * @param getOfficialCapacityPageVO
-     * @return: 职务职称变更记录分页数据
-     */
+
     @ApiOperation(value = "获取职务职称变更记录 [by:zhanghang]")
     @PostMapping("/getOfficialCapacityPage")
     public CommonResult<IPage<GetOfficialCapacityPageDTO>> getOfficialCapacityPage(@RequestBody GetOfficialCapacityPageVO getOfficialCapacityPageVO) {
         return CommonResult.success(officialCapacityManagementFacade.getOfficialCapacityPage(getOfficialCapacityPageVO));
     }
 
-    /**
-     * 删除职务职称变更记录
-     *
-     * @param delOfficialCapacityByIdVO
-     * @return: 是否成功
-     */
+
     @ApiOperation(value = "删除职务职称变更记录 [by:zhanghang]")
     @PostMapping("/delOfficialCapacityPage")
-    public CommonResult<Boolean> delOfficialCapacityPage(@RequestBody DelOfficialCapacityByIdVO delOfficialCapacityByIdVO) {
-        return CommonResult.success(officialCapacityManagementFacade.delOfficialCapacityPage(delOfficialCapacityByIdVO));
+    public CommonResult<Boolean> delOfficialCapacityPage(@RequestBody Long idList[]) {
+        return CommonResult.success(officialCapacityManagementFacade.delOfficialCapacityPage(idList));
     }
 
 }

+ 9 - 0
daqe-center/src/main/java/com/lantone/daqe/web/OperationManagementController.java

@@ -15,8 +15,11 @@ 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.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
 /**
@@ -62,4 +65,10 @@ public class OperationManagementController {
         return CommonResult.success(operationManagementFacade.matchingOperation(matchingOperationVO));
     }
 
+    @ApiOperation(value = "医院手术标准词匹配信息导入 [by:songxl]", notes = "医院手术标准词匹配信息导入")
+    @PostMapping("/importOperation")
+    public void importOperation(HttpServletResponse response, @RequestParam("file") MultipartFile file) {
+        operationManagementFacade.importOperation(response, file);
+    }
+
 }

+ 4 - 13
daqe-center/src/main/java/com/lantone/daqe/web/RecordTemplateManagementController.java

@@ -2,6 +2,7 @@ package com.lantone.daqe.web;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.api.CommonResult;
+import com.lantone.daqe.dto.GetRecordTemplateManageDTO;
 import com.lantone.daqe.dto.GetRecordTemplatePageDTO;
 import com.lantone.daqe.entity.RecordTemplate;
 import com.lantone.daqe.facade.RecordTemplateManagementFacade;
@@ -29,27 +30,17 @@ public class RecordTemplateManagementController {
     @Autowired
     private RecordTemplateManagementFacade recordTemplateManagementFacade;
 
-    /**
-     * 获取文书模板信息分页列表数据
-     *
-     * @param getRecordTemplatePageVO
-     * @return: 文书模板信息分页数据
-     */
+
     @ApiOperation(value = "获取文书模板分页列表 [by:zhanghang]")
     @PostMapping("/getRecordTemplatePage")
     public CommonResult<IPage<GetRecordTemplatePageDTO>> getRecordTemplatePage(@RequestBody GetRecordTemplatePageVO getRecordTemplatePageVO) {
         return CommonResult.success(recordTemplateManagementFacade.getRecordTemplatePage(getRecordTemplatePageVO));
     }
 
-    /**
-     * 根据ID获取具体的模板内容
-     *
-     * @param getRecordTemplateByIdVO
-     * @return: 模板具体的内容
-     */
+
     @ApiOperation(value = "查看文书模板信息 [by:zhanghang]")
     @PostMapping("/getRecordTemplateManage")
-    public CommonResult<RecordTemplate> getRecordTemplateManage(@RequestBody GetRecordTemplateByIdVO getRecordTemplateByIdVO) {
+    public CommonResult<GetRecordTemplateManageDTO> getRecordTemplateManage(@RequestBody GetRecordTemplateByIdVO getRecordTemplateByIdVO) {
         return CommonResult.success(recordTemplateManagementFacade.getRecordTemplateById(getRecordTemplateByIdVO));
     }