From 4325f1081624ffeaee747091f96c9be59064dbdf Mon Sep 17 00:00:00 2001 From: wtt Date: Thu, 15 Apr 2021 10:14:39 +0800 Subject: [PATCH] update --- .../com/lyms/platform/pojo/HealthChargeModel.java | 42 ++++++ .../web/controller/HealthChargeController.java | 24 ++-- .../operate/web/facade/HealthChargeFacade.java | 148 ++++++++++++++++++++- 3 files changed, 202 insertions(+), 12 deletions(-) diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/HealthChargeModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/HealthChargeModel.java index 06db2e2..2a50631 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/HealthChargeModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/HealthChargeModel.java @@ -61,6 +61,48 @@ public class HealthChargeModel extends BaseModel { */ private String doctorId; + //支持导入使用,存储导入数据记录和转换使用。 + //患者姓名 + private String name; + //身份证号码 + private String cardNo; + //计费时间 + private String createdStr; + //开单医生 + private String doctorName; + + public String getCreatedStr() { + return createdStr; + } + + public void setCreatedStr(String createdStr) { + this.createdStr = createdStr; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCardNo() { + return cardNo; + } + + public void setCardNo(String cardNo) { + this.cardNo = cardNo; + } + + public String getDoctorName() { + return doctorName; + } + + public void setDoctorName(String doctorName) { + this.doctorName = doctorName; + } + public String getBabyNutritionId() { return babyNutritionId; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/HealthChargeController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/HealthChargeController.java index 3318176..97faea5 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/HealthChargeController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/HealthChargeController.java @@ -4,20 +4,13 @@ package com.lyms.platform.operate.web.controller; import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; import com.lyms.platform.common.base.LoginContext; -import com.lyms.platform.common.constants.ErrorCodeConstants; -import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; -import com.lyms.platform.common.utils.StringUtils; -import com.lyms.platform.operate.web.facade.AutoMatchFacade; -import com.lyms.platform.operate.web.facade.BabyCheckFacade; import com.lyms.platform.operate.web.facade.HealthChargeFacade; -import com.lyms.platform.operate.web.request.BabyCheckRequest; import com.lyms.platform.operate.web.request.HealthChargeRequest; -import com.lyms.platform.operate.web.request.RiskPatientsCountRequest; -import com.lyms.platform.permission.service.CouponService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -78,6 +71,21 @@ public class HealthChargeController extends BaseController{ } /** + * 体重报告结算导入2007 excle的方法 + * sieveType=1 + * @param request + * @param response + */ + @RequestMapping(value = "/importHealthCharges") + @ResponseBody + @TokenRequired + public BaseResponse importSerologySieve(@RequestParam MultipartFile file, HttpServletRequest request, HttpServletResponse response) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return healthChargeFacade.importHealthCharges(file, loginState.getId(), response); + } + + + /** *结算 * @param healthType * @param hospitalId diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/HealthChargeFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/HealthChargeFacade.java index 827de00..2820c5f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/HealthChargeFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/HealthChargeFacade.java @@ -9,25 +9,33 @@ import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.ExcelUtil; import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.operate.web.request.HealthChargeRequest; -import com.lyms.platform.operate.web.service.ITemporaryBloodService; -import com.lyms.platform.operate.web.service.ITemporaryBloodSugarService; -import com.lyms.platform.operate.web.service.TemporaryWeightService; import com.lyms.platform.permission.model.Users; +import com.lyms.platform.permission.model.UsersQuery; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.*; import com.lyms.platform.query.AntExRecordQuery; import com.lyms.platform.query.ChargeRecordQuery; import com.lyms.platform.query.HealthChargeQuery; +import com.lyms.platform.query.PatientsQuery; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.fileupload.disk.DiskFileItem; import org.apache.commons.lang.math.NumberUtils; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; import java.io.OutputStream; import java.util.*; @@ -37,10 +45,14 @@ import java.util.*; */ @Component public class HealthChargeFacade { + @Autowired + private AutoMatchFacade autoMatchFacade; @Autowired - private HealthChargeService healthChargeService; + private OperateLogFacade operateLogFacade; + @Autowired + private HealthChargeService healthChargeService; @Autowired private ChargeRecordService chargeRecordService; @@ -264,6 +276,134 @@ public class HealthChargeFacade { } /** + * 体重报告结算导入2007 excle的方法 + * @author 武涛涛 + */ + public BaseResponse importHealthCharges(MultipartFile file, Integer id, HttpServletResponse response) { + + try { + String hospitalId = autoMatchFacade.getHospitalId(id); + + //把MultipartFile转化为File 第一种 + CommonsMultipartFile cmf = (CommonsMultipartFile) file; + DiskFileItem dfi = (DiskFileItem) cmf.getFileItem(); + File fo = dfi.getStoreLocation(); + // 创建对excel工作簿的引用 + XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(fo)); + + // 创建对工作表的引用,这里是按索引引用,第一张工作表的索引为0.也可以按名引用 + XSSFSheet sheet = workbook.getSheetAt(0); + // 需要得到总共的行数 + int rowNum = sheet.getLastRowNum(); + // 定义单元 + XSSFCell cell = null; + List healthChargeModelList = new ArrayList<>(); + // 按行循环读取 + + for (int j = 1; j <= rowNum; j++) { + HealthChargeModel chargeModel = new HealthChargeModel(); + // 得到该行对象 + XSSFRow rowLine = sheet.getRow(j); + // 获得该行的列数 + int colNum = rowLine.getLastCellNum(); + StringBuffer sb = new StringBuffer(); + // 按列读取每一行的各个单元格内容 + for (int i = 1; i < colNum; i++) { + //获取该行索引,对应的单元格,Value + cell = rowLine.getCell(i); + String cellValue = null; + if (cell != null) { + switch (cell.getCellType()) { + // 如果是数字格式 + case XSSFCell.CELL_TYPE_NUMERIC: + Integer number = new Integer( (int) cell.getNumericCellValue());// 数字 + cellValue = String.valueOf(number); + break; + case XSSFCell.CELL_TYPE_STRING: cellValue = cell.getStringCellValue();// 字符串 + break; + default: + cellValue = ""; + break; + } + + } else { + cellValue = ""; + } + switch (i) { + case 0: + chargeModel.setName(cellValue); //患者姓名 + break; + case 1: + chargeModel.setCardNo(cellValue); + break; + case 2: + chargeModel.setDoctorName(cellValue); + break; + case 3: + chargeModel.setCreatedStr(cellValue); + break; + } + + } + chargeModel.setStatus(1);//结算状态 1未结算 + chargeModel.setSource(1);//档案来源类型 1院内建档 + chargeModel.setType(1);//打印报告等级 1普通报告 + chargeModel.setHospitalId(hospitalId); //医院id + chargeModel.setHealthType(1);// 1体重 + chargeModel.setYn(YnEnums.YES.getId()); + chargeModel.setDoctorId(getUsersId(hospitalId, chargeModel.getDoctorName())); + chargeModel.setCreated(DateUtil.parseYMD(chargeModel.getCreatedStr())); + + String foreignId = getForeignId(hospitalId, chargeModel); + chargeModel.setForeignId(foreignId);//建档id或者临时档案id + chargeModel.setOperateUserId(String.valueOf(id)); + chargeModel.setModified(new Date()); + if(StringUtils.isNotEmpty(foreignId)){ + healthChargeService.addHealthCharge(chargeModel); + } + //System.out.println("chargeModel.toString(): " + chargeModel.toString()); + } + + } catch (Exception e) { + e.printStackTrace(); + return new BaseResponse().setErrorcode(ErrorCodeConstants.SYSTEM_ERROR).setErrormsg("导入失败"); + } + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + } + + private String getForeignId(String hospitalId, HealthChargeModel chargeModel) { + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalId(hospitalId); + patientsQuery.setCardNo(chargeModel.getCardNo()); + patientsQuery.setExtSource(false); + List patientsList = patientsService.queryPatient(patientsQuery); + if(CollectionUtils.isNotEmpty(patientsList)){ + Patients patients = patientsList.get(0); + return patients.getId(); + } + return null; + + } + + private String getUsersId(String hospitalId, String doctorName) { + if(StringUtils.isEmpty(doctorName) || StringUtils.isEmpty(hospitalId)){ + return null; + } + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setName(doctorName); + usersQuery.setYn(YnEnums.YES.getId()); + usersQuery.setOrgId(Integer.parseInt(hospitalId)); + List users = usersService.queryUsers(usersQuery); + if (CollectionUtils.isNotEmpty(users)) { + Users users1 = users.get(0); + return users1.getId() !=null ? users1.getId().toString(): null; + } + return null; + } + + + /** * 返回列表字段 * @param model * @return -- 1.8.3.1