소스 검색

完善诊断导入接口

songxinlu 3 년 전
부모
커밋
5ab1774fb4

+ 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;
 
 }

+ 63 - 3
daqe-center/src/main/java/com/lantone/daqe/facade/DiseaseManagementFacade.java

@@ -3,13 +3,16 @@ package com.lantone.daqe.facade;
 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 +25,12 @@ 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.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 诊断管理-业务处理类
@@ -34,6 +42,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 +134,65 @@ 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文件为空");
         }
+        //数据规范校验
+        checkData(response, diagnoseExcelVOS);
         //去重
+        List<ImportDiseaseVO> temp = diagnoseExcelVOS.stream().distinct().collect(Collectors.toList());
+        //导入
+        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(outMsg);
+                response.flushBuffer();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }else {
+            Asserts.fail("数据插入失败");
+        }
 
-        //数据规范校验
 
-        return "";
+    }
+
+    private void checkData(HttpServletResponse response, List<ImportDiseaseVO> diagnoseExcelVOS) {
+        AtomicBoolean errorFlog = new AtomicBoolean(false);
+        List<ExportImportDiseaseErrDTO> errExports = new ArrayList<>();
+
+        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());
+        });
+
+        if(errorFlog.get()){
+            String fileName = "诊断标准词匹配信息导入异常.xls";
+            ExcelUtils.exportExcelUser(errExports, null, "sheet1", ExportImportDiseaseErrDTO.class, fileName, response);
+        }
+
+
+    }
+
+    private List<ImportDiseaseVO> delRepeat(List<ImportDiseaseVO> diagnoseExcelVOS) {
+
+        return null;
     }
 }

+ 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);
     }
 }