检测项目、就诊记录相关接口

This commit is contained in:
haown 2024-03-13 17:20:01 +08:00
parent cca1a66e13
commit 2090db0020
28 changed files with 378 additions and 76 deletions

View File

@ -0,0 +1,19 @@
package com.xinelu.common.constant;
/**
* @description: 设备状态常量
* @author: haown
* @create: 2024-03-13 10:46
**/
public class DeviceStatusConstants {
/**
* 绑定
*/
public static final String BIND = "BIND";
/**
* 解绑
*/
public static final String UN_BIND = "UN_BIND";
}

View File

@ -2,6 +2,13 @@ package com.xinelu.manage.controller.importdownload;
import com.xinelu.common.constant.Constants;
import com.xinelu.common.exception.ServiceException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.io.File;
import java.io.IOException;
import java.util.Objects;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.ResourceUtils;
@ -9,12 +16,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.Objects;
/**
* 导入与下载Controller
*
@ -22,6 +23,7 @@ import java.util.Objects;
* @date 2024-02-26
*/
@Api(tags = "导入与下载控制器")
@RestController
@RequestMapping("/system/importDownload")
public class ImportDownloadController {
@ -32,6 +34,8 @@ public class ImportDownloadController {
* @param fileType 文件类型
* @param res http请求
**/
@ApiOperation(value = "下载导入模板", notes = "fileType:agency:机构信息模板,department:科室信息模板,"
+ "outpatient:门诊患者模板,prehospitalized:预住院患者模板,inhospital:在院患者模板discharged出院患者模板")
@RequestMapping("downloadTemplate")
public void download(@RequestParam(value = "fileType") String fileType, HttpServletResponse res) throws IOException {
if (StringUtils.isBlank(fileType)) {

View File

@ -101,7 +101,8 @@ public class PatientPreHospitalizationController extends BaseController {
* @return 导入结果
* @throws Exception 异常信息
*/
@Log(title = "导入患者就诊信息", businessType = BusinessType.IMPORT)
@ApiOperation("导入预住院患者信息")
@Log(title = "导入预住院患者信息", businessType = BusinessType.IMPORT)
@PostMapping("/importInfo")
public AjaxResult importPatientList(MultipartFile file) throws Exception {
// 判断excel里面是否有数据/文件格式

View File

@ -4,12 +4,14 @@ import com.xinelu.common.annotation.Log;
import com.xinelu.common.constant.Constants;
import com.xinelu.common.core.controller.BaseController;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.domain.R;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.enums.BusinessType;
import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordImportDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordSaveDto;
import com.xinelu.manage.service.patientvisitrecord.IPatientVisitRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -19,6 +21,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@ -97,13 +100,26 @@ public class PatientVisitRecordController extends BaseController {
return toAjax(patientVisitRecordService.insertPatientVisitRecord(patientVisitRecord));
}
/**
/**
* 患者配置就诊信息保存
*/
@ApiOperation("患者配置——就诊信息保存")
@PreAuthorize("@ss.hasPermi('manage:visit:add')")
@Log(title = "患者就诊记录基本信息", businessType = BusinessType.INSERT)
@PostMapping("saveRecord")
public R<String> saveRecord(@Validated @RequestBody PatientVisitRecordSaveDto saveDto) {
patientVisitRecordService.saveRecord(saveDto);
return R.ok();
}
/**
* 修改患者就诊记录基本信息
*/
@PreAuthorize("@ss.hasPermi('manage:visit:edit')")
@Log(title = "患者就诊记录基本信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody PatientVisitRecord patientVisitRecord) {
public AjaxResult edit(@RequestBody PatientVisitRecordSaveDto patientVisitRecord) {
return toAjax(patientVisitRecordService.updatePatientVisitRecord(patientVisitRecord));
}
@ -124,9 +140,10 @@ public class PatientVisitRecordController extends BaseController {
* @return 导入结果
* @throws Exception 异常信息
*/
@ApiOperation(value = "导入患者就诊记录", notes = "patientType: outpatient:门诊患者,inhospital:在院患者discharged出院患者")
@Log(title = "导入患者就诊信息", businessType = BusinessType.IMPORT)
@PostMapping("/importPatientInfo")
public AjaxResult importPatientList(MultipartFile file, @RequestParam(value = "patientType") String patientType) throws Exception {
public AjaxResult importPatientList(MultipartFile file, @RequestParam(value = "patientType") String patientType) throws Exception {
// 判断excel里面是否有数据/文件格式
if (Objects.isNull(file) || StringUtils.isBlank(file.getOriginalFilename())) {
return AjaxResult.error("请选择需要导入的文件!");

View File

@ -33,11 +33,11 @@ public class ProjectDeviceController extends BaseController {
@Resource
private IProjectDeviceService projectDeviceService;
/**
* 查询检测项目设备列表
*/
@PreAuthorize("@ss.hasPermi('manage:projectdevice:list')")
@GetMapping("/list")
/**
* 查询检测项目设备列表
*/
@PreAuthorize("@ss.hasPermi('manage:projectdevice:list')")
@GetMapping("/list")
public TableDataInfo list(ProjectDevice projectDevice) {
startPage();
List<ProjectDevice> list = projectDeviceService.selectProjectDeviceList(projectDevice);

View File

@ -41,6 +41,7 @@ public class ProjectResultController extends BaseController {
/**
* 查询检测项目结果列表
*/
@ApiOperation("查询检测项目结果列表")
@PreAuthorize("@ss.hasPermi('manage:projectresult:list')")
@GetMapping("/list")
public TableDataInfo list(ProjectResult projectResult) {
@ -64,6 +65,7 @@ public class ProjectResultController extends BaseController {
/**
* 获取检测项目结果详细信息
*/
@ApiOperation("根据id获取检测项目结果详细信息")
@PreAuthorize("@ss.hasPermi('manage:projectresult:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {

View File

@ -4,6 +4,7 @@ import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -51,9 +52,9 @@ public class Project extends BaseEntity {
@Excel(name = "项目别名")
private String projectAlias;
/** 是否启用01 */
@ApiModelProperty(value = "是否启用01")
@Excel(name = "是否启用01")
/** 是否启用01 */
@ApiModelProperty(value = "是否启用01")
@Excel(name = "是否启用01")
private Integer enableStatus;
/** 判断模式定量QUANTIFY定性QUALITATIVE */
@ -64,12 +65,12 @@ public class Project extends BaseEntity {
/** 项目指标最大值 */
@ApiModelProperty(value = "项目指标最大值")
@Excel(name = "项目指标最大值")
private Integer maxValue;
private BigDecimal maxValue;
/** 项目指标最小值 */
@ApiModelProperty(value = "项目指标最小值")
@Excel(name = "项目指标最小值")
private Integer minValue;
private BigDecimal minValue;
/** 项目指标默认值 */
@ApiModelProperty(value = "项目指标默认值")

View File

@ -1,5 +1,6 @@
package com.xinelu.manage.domain.projectdevice;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -50,9 +51,9 @@ public class ProjectDevice extends BaseEntity {
@ApiModelProperty("设备编码")
private String deviceCode;
/**
* 设备状态
* 设备状态,绑定BIND,解绑UN_BIND
*/
@ApiModelProperty("设备状态")
@ApiModelProperty("设备状态,绑定BIND,解绑UN_BIND")
private String deviceStatus;
/**
* 备注信息
@ -63,6 +64,7 @@ public class ProjectDevice extends BaseEntity {
* 设备绑定时间
*/
@ApiModelProperty("设备绑定时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date deviceBindTime;
/**
* 设备解绑时间

View File

@ -4,6 +4,7 @@ import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
@ -94,12 +95,12 @@ public class ProjectLastResult extends BaseEntity {
* 项目指标最大值
*/
@ApiModelProperty("项目指标最大值")
private Integer maxValue;
private BigDecimal maxValue;
/**
* 项目指标最小值
*/
@ApiModelProperty("项目指标最小值")
private Integer minValue;
private BigDecimal minValue;
/**
* 项目指标默认值
*/

View File

@ -5,6 +5,7 @@ import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -102,12 +103,12 @@ private static final long serialVersionUID=1L;
/** 项目指标最大值 */
@ApiModelProperty(value = "项目指标最大值")
@Excel(name = "项目指标最大值")
private Integer maxValue;
private BigDecimal maxValue;
/** 项目指标最小值 */
@ApiModelProperty(value = "项目指标最小值")
@Excel(name = "项目指标最小值")
private Integer minValue;
private BigDecimal minValue;
/** 项目指标默认值 */
@ApiModelProperty(value = "项目指标默认值")

View File

@ -83,6 +83,10 @@ public class PatientVisitRecordImportDto {
@Excel(name = "住院号")
private String inHospitalNumber;
@ApiModelProperty(value = "门诊号")
@Excel(name = "门诊号")
private String outpatientNumber;
/** 责任护士 */
@ApiModelProperty(value = "责任护士")
@Excel(name = "责任护士")

View File

@ -0,0 +1,110 @@
package com.xinelu.manage.dto.patientvisitrecord;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import lombok.Data;
/**
* @description: 患者配置就诊信息保存传输对象
* @author: haown
* @create: 2024-03-13 14:46
**/
@ApiModel("患者配置——就诊信息保存传输对象")
@Data
public class PatientVisitRecordSaveDto {
/** 患者表id */
@ApiModelProperty(value = "患者表id")
@NotBlank(message = "患者数据不能为空")
private Long patientId;
/**
* 就诊类型门诊OUTPATIENT_SERVICE住院BE_HOSPITALIZED
*/
@ApiModelProperty(value = "就诊类型门诊OUTPATIENT_SERVICE住院BE_HOSPITALIZED")
@NotBlank(message = "就诊类型不能为空")
private String visitType;
/** 主要诊断 */
@ApiModelProperty(value = "主要诊断")
@NotBlank(message = "主要诊断不能为空")
private String mainDiagnosis;
/** 就诊流水号 */
@ApiModelProperty(value = "就诊流水号")
@NotBlank(message = "就诊流水号不能为空")
private String visitSerialNumber;
/** 主治医生id */
@ApiModelProperty(value = "主治医生id")
@NotBlank(message = "主治医生不能为空")
private Long attendingPhysicianId;
/** 主治医生姓名 */
@ApiModelProperty(value = "主治医生姓名")
private String attendingPhysicianName;
/** 所属医院id */
@ApiModelProperty(value = "所属医院id")
@Excel(name = "所属医院id")
private Long hospitalAgencyId;
/** 所属医院名称 */
@ApiModelProperty(value = "所属医院名称")
@Excel(name = "所属医院名称")
private String hospitalAgencyName;
/** 所属院区id */
@ApiModelProperty(value = "所属院区id")
@Excel(name = "所属院区id")
private Long campusAgencyId;
/** 所属院区名称 */
@ApiModelProperty(value = "所属院区名称")
@Excel(name = "所属院区名称")
private String campusAgencyName;
/** 所属科室id */
@NotBlank(message = "科室不能为空")
@ApiModelProperty(value = "所属科室id")
private Long departmentId;
/** 所属科室名称 */
@ApiModelProperty(value = "所属科室名称")
private String departmentName;
/** 入院时间 */
@ApiModelProperty(value = "入院时间")
@NotBlank(message = "入院时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date admissionTime;
/** 出院时间 */
@ApiModelProperty(value = "出院时间")
@NotBlank(message = "出院时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date dischargeTime;
@ApiModelProperty(value = "住院/门诊号")
private String inHospitalNumber;
/** 入院病历信息,存储患者入院的整个病历信息 */
@ApiModelProperty(value = "入院病历信息,存储患者入院的整个病历信息")
@NotBlank(message = "入院病历不能为空")
private String inHospitalInfo;
/** 出院病历信息,存储患者出院的整个病历信息 */
@ApiModelProperty(value = "出院病历信息,存储患者出院的整个病历信息")
@NotBlank(message = "出院病历不能为空")
private String outHospitalInfo;
/** 门诊记录信息(就诊记录-门诊记录) */
@ApiModelProperty(value = "门诊记录信息")
@NotBlank(message = "门诊记录信息不能为空")
private String outpatientVisitInfo;
}

View File

@ -2,7 +2,7 @@ package com.xinelu.manage.mapper.project;
import com.xinelu.manage.domain.project.Project;
import java.util.List;
import org.apache.ibatis.annotations.Param;
/**
* 检测项目Mapper接口
@ -58,4 +58,6 @@ public interface ProjectMapper {
* @return 结果
*/
public int deleteProjectByIds(Long[] ids);
List<Project> hasSameCodeProject(@Param("id")Long id, @Param("groupId")Long groupId, @Param("projectCode")String projectCode);
}

View File

@ -62,4 +62,6 @@ public interface ProjectGroupMapper {
* @return 结果
*/
public int deleteProjectGroupByIds(Long[] ids);
List<ProjectGroup> hasSameCodeGroup(@Param("id")Long id, @Param("groupCode")String groupCode);
}

View File

@ -78,6 +78,7 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital
preHospitalization.setPatientId(patientList.get(0).getId());
}
// 保存预住院信息
preHospitalization.setDelFlag(0);
preHospitalization.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
preHospitalization.setCreateTime(DateUtils.getNowDate());
return preHospitalizationMapper.insertSelective(preHospitalization);

View File

@ -4,7 +4,9 @@ import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordImportDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordSaveDto;
import java.util.List;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 患者就诊记录基本信息Service接口
@ -37,13 +39,20 @@ public interface IPatientVisitRecordService {
*/
public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord);
/**
* 患者配置就诊信息保存
* @param saveDto
* @return
*/
int saveRecord(@RequestBody PatientVisitRecordSaveDto saveDto);
/**
* 修改患者就诊记录基本信息
*
* @param patientVisitRecord 患者就诊记录基本信息
* @param updDto 患者就诊记录基本信息
* @return 结果
*/
public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord);
public int updatePatientVisitRecord(PatientVisitRecordSaveDto updDto);
/**
* 批量删除患者就诊记录基本信息

View File

@ -1,7 +1,7 @@
package com.xinelu.manage.service.patientvisitrecord.impl;
import com.xinelu.common.constant.Constants;
import com.xinelu.common.constant.NodeTypeConstants;
import com.xinelu.common.constant.PatientTypeConstants;
import com.xinelu.common.constant.VisitTypeConstants;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.exception.ServiceException;
@ -9,7 +9,6 @@ import com.xinelu.common.utils.DateUtils;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.StringUtils;
import com.xinelu.common.utils.bean.BeanUtils;
import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.common.utils.regex.RegexUtil;
import com.xinelu.manage.domain.agency.Agency;
import com.xinelu.manage.domain.department.Department;
@ -18,13 +17,15 @@ import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
import com.xinelu.manage.dto.patientinfo.PatientInfoDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordImportDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordSaveDto;
import com.xinelu.manage.mapper.agency.AgencyMapper;
import com.xinelu.manage.mapper.department.DepartmentMapper;
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
import com.xinelu.manage.mapper.patientvisitrecord.PatientVisitRecordMapper;
import com.xinelu.manage.service.patientvisitrecord.IPatientVisitRecordService;
import java.io.File;
import java.io.FileInputStream;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@ -83,19 +84,46 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
*/
@Override
public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord) {
patientVisitRecord.setCreateTime(DateUtils.getNowDate());
return patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord);
patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
patientVisitRecord.setCreateTime(DateUtils.getNowDate());
return patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord);
}
/**
@Override public int saveRecord(PatientVisitRecordSaveDto saveDto) {
PatientVisitRecord patientVisitRecord = new PatientVisitRecord();
// 查询患者信息
PatientInfo patientInfo = patientMapper.selectPatientInfoById(saveDto.getPatientId());
BeanUtils.copyBeanProp(patientVisitRecord, patientInfo);
BeanUtils.copyBeanProp(patientVisitRecord, saveDto);
patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
patientVisitRecord.setCreateTime(DateUtils.getNowDate());
// 住院时间出院时间-入院时间
LocalDate admissionTime = saveDto.getAdmissionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate dischargeTime = saveDto.getDischargeTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
long daysBetween = ChronoUnit.DAYS.between(admissionTime, dischargeTime);
patientVisitRecord.setHospitalizationDays((int) daysBetween + 1);
patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord);
return 0;
}
/**
* 修改患者就诊记录基本信息
*
* @param patientVisitRecord 患者就诊记录基本信息
* @param updDto 患者就诊记录基本信息
* @return 结果
*/
@Override
public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord) {
patientVisitRecord.setUpdateTime(DateUtils.getNowDate());
public int updatePatientVisitRecord(PatientVisitRecordSaveDto updDto) {
PatientVisitRecord patientVisitRecord = new PatientVisitRecord();
BeanUtils.copyBeanProp(patientVisitRecord, updDto);
patientVisitRecord.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName());
patientVisitRecord.setUpdateTime(DateUtils.getNowDate());
// 住院时间出院时间-入院时间
LocalDate admissionTime = updDto.getAdmissionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate dischargeTime = updDto.getDischargeTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
long daysBetween = ChronoUnit.DAYS.between(admissionTime, dischargeTime);
patientVisitRecord.setHospitalizationDays((int) daysBetween + 1);
patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord);
return patientVisitRecordMapper.updatePatientVisitRecord(patientVisitRecord);
}
@ -142,17 +170,15 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
patientVisitRecord.setCreateTime(DateUtils.getNowDate());
patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
switch (patientType) {
// 预住院患者
case PatientTypeConstants.PRE_HOSPITALIZED_PATIENT:
break;
// 在院患者
case PatientTypeConstants.IN_HOSPITAL_PATIENT:
case PatientTypeConstants.DISCHARGED_PATIENT:
case Constants.IN_HOSPITAL:
case Constants.DISCHARGED:
patientVisitRecord.setVisitType(VisitTypeConstants.BE_HOSPITALIZED);
break;
// 门诊患者
case PatientTypeConstants.OUTPATIENT:
case Constants.OUTPATIENT:
patientVisitRecord.setVisitType(VisitTypeConstants.OUTPATIENT_SERVICE);
patientVisitRecord.setInHospitalNumber(item.getOutpatientNumber());// 门诊住院号共用一个字段
break;
}
// 根据身份证号查询患者信息
@ -250,14 +276,10 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
}
public static void main(String[] args) {
String filePath = "E:\\在院患者导入.xlsx";
ExcelUtil<PatientVisitRecordImportDto> util = new ExcelUtil<>(PatientVisitRecordImportDto.class);
File file = new File(filePath);
try {
List<PatientVisitRecordImportDto> list = util.importExcel(new FileInputStream(file));
//importPatientList(list);
} catch (Exception e) {
throw new RuntimeException(e);
}
LocalDate date1 = LocalDate.of(2020, 1, 1);
LocalDate date2 = LocalDate.of(2020, 1, 2);
long daysBetween = ChronoUnit.DAYS.between(date1, date2);
System.out.println("Days between: " + daysBetween);
}
}

View File

@ -1,11 +1,15 @@
package com.xinelu.manage.service.project.impl;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.DateUtils;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.StringUtils;
import com.xinelu.manage.domain.project.Project;
import com.xinelu.manage.mapper.project.ProjectMapper;
import com.xinelu.manage.service.project.IProjectService;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
/**
@ -49,8 +53,21 @@ public class ProjectServiceImpl implements IProjectService {
*/
@Override
public int insertProject(Project project) {
project.setCreateTime(DateUtils.getNowDate());
return projectMapper.insertProject(project);
if (StringUtils.isBlank(project.getProjectName())) {
throw new ServiceException("请输入检测项目名称");
}
if (StringUtils.isBlank(project.getProjectCode())) {
throw new ServiceException("请输入检测项目编码");
}
// 查询是否有相同code的检测项目
List<Project> projects = projectMapper.hasSameCodeProject(null, project.getGroupId(), project.getProjectCode());
if (CollectionUtils.isNotEmpty(projects)) {
throw new ServiceException("已存在编码为【"+project.getProjectCode() +"】的检测项目");
}
project.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
project.setCreateTime(DateUtils.getNowDate());
project.setDelFlag(0);
return projectMapper.insertProject(project);
}
/**
@ -61,7 +78,13 @@ public class ProjectServiceImpl implements IProjectService {
*/
@Override
public int updateProject(Project project) {
project.setUpdateTime(DateUtils.getNowDate());
// 查询是否有相同code的检测项目
List<Project> projects = projectMapper.hasSameCodeProject(project.getId(), project.getGroupId(), project.getProjectCode());
if (CollectionUtils.isNotEmpty(projects)) {
throw new ServiceException("已存在编码为【"+project.getProjectCode() +"】的检测项目");
}
project.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName());
project.setUpdateTime(DateUtils.getNowDate());
return projectMapper.updateProject(project);
}

View File

@ -1,11 +1,16 @@
package com.xinelu.manage.service.projectdevice.impl;
import com.xinelu.common.constant.DeviceStatusConstants;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.DateUtils;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.StringUtils;
import com.xinelu.manage.domain.projectdevice.ProjectDevice;
import com.xinelu.manage.mapper.projectdevice.ProjectDeviceMapper;
import com.xinelu.manage.service.projectdevice.IProjectDeviceService;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
/**
@ -49,8 +54,30 @@ public class ProjectDeviceServiceImpl implements IProjectDeviceService {
*/
@Override
public int insertProjectDevice(ProjectDevice projectDevice) {
projectDevice.setCreateTime(DateUtils.getNowDate());
return projectDeviceMapper.insertProjectDevice(projectDevice);
// 查询居民是否绑定过相同类型的设备
if (StringUtils.isBlank(projectDevice.getDeviceType())) {
throw new ServiceException("请选择设备类型");
}
ProjectDevice query = new ProjectDevice();
query.setPatientId(projectDevice.getPatientId());
query.setDeviceType(projectDevice.getDeviceType());
query.setDeviceStatus(DeviceStatusConstants.BIND);
List<ProjectDevice> deviceList = projectDeviceMapper.selectProjectDeviceList(projectDevice);
if (CollectionUtils.isNotEmpty(deviceList)) {
throw new ServiceException("该居民已绑定过相同设备类型的设备,请解绑后重新绑定");
}
// 根据设备编码查询是否已被绑定
query.setPatientId(null);
query.setDeviceCode(projectDevice.getDeviceCode());
deviceList = projectDeviceMapper.selectProjectDeviceList(projectDevice);
if (CollectionUtils.isNotEmpty(deviceList)) {
throw new ServiceException("该设备已被绑定,请解绑后重新绑定");
}
projectDevice.setDeviceStatus(DeviceStatusConstants.BIND);
projectDevice.setDeviceBindTime(DateUtils.getNowDate());
projectDevice.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
projectDevice.setCreateTime(DateUtils.getNowDate());
return projectDeviceMapper.insertProjectDevice(projectDevice);
}
/**
@ -61,7 +88,8 @@ public class ProjectDeviceServiceImpl implements IProjectDeviceService {
*/
@Override
public int updateProjectDevice(ProjectDevice projectDevice) {
projectDevice.setUpdateTime(DateUtils.getNowDate());
projectDevice.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName());
projectDevice.setUpdateTime(DateUtils.getNowDate());
return projectDeviceMapper.updateProjectDevice(projectDevice);
}

View File

@ -3,6 +3,7 @@ package com.xinelu.manage.service.projectgroup.impl;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.DateUtils;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.StringUtils;
import com.xinelu.manage.domain.projectgroup.ProjectGroup;
import com.xinelu.manage.dto.projectgroup.ProjectGroupSaveListDto;
import com.xinelu.manage.mapper.projectgroup.ProjectGroupMapper;
@ -54,6 +55,17 @@ public class ProjectGroupServiceImpl implements IProjectGroupService {
*/
@Override
public int insertProjectGroup(ProjectGroup projectGroup) {
if (StringUtils.isBlank(projectGroup.getGroupName())) {
throw new ServiceException("请输入检测项目分组名称");
}
if (StringUtils.isBlank(projectGroup.getGroupCode())) {
throw new ServiceException("请输入检测项目分组编码");
}
// 查询是否有相同编码的项目组
List<ProjectGroup> list = projectGroupMapper.hasSameCodeGroup(null, projectGroup.getGroupCode());
if (CollectionUtils.isNotEmpty(list)) {
throw new ServiceException("已存在编码为【"+projectGroup.getGroupCode() +"】的分组");
}
projectGroup.setCreateTime(DateUtils.getNowDate());
projectGroup.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
projectGroup.setDelFlag(0);
@ -65,6 +77,11 @@ public class ProjectGroupServiceImpl implements IProjectGroupService {
List<ProjectGroup> list = saveDto.getList();
if (CollectionUtils.isNotEmpty(list)) {
for (ProjectGroup projectGroup : list) {
// 查询是否有相同编码的项目组
List<ProjectGroup> groupList = projectGroupMapper.hasSameCodeGroup(null, projectGroup.getGroupCode());
if (CollectionUtils.isNotEmpty(groupList)) {
throw new ServiceException("已存在编码为【"+projectGroup.getGroupCode() +"】的分组");
}
projectGroup.setCreateTime(DateUtils.getNowDate());
projectGroup.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
projectGroup.setDelFlag(0);
@ -86,6 +103,11 @@ public class ProjectGroupServiceImpl implements IProjectGroupService {
*/
@Override
public int updateProjectGroup(ProjectGroup projectGroup) {
// 查询是否有相同编码的项目组
List<ProjectGroup> groupList = projectGroupMapper.hasSameCodeGroup(projectGroup.getId(), projectGroup.getGroupCode());
if (CollectionUtils.isNotEmpty(groupList)) {
throw new ServiceException("已存在编码为【"+projectGroup.getGroupCode() +"】的分组");
}
projectGroup.setUpdateTime(DateUtils.getNowDate());
projectGroup.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName());
return projectGroupMapper.updateProjectGroup(projectGroup);

View File

@ -291,7 +291,7 @@
p.department_name,p.ward_name,
p.appointment_treatment_group,p.registration_no,p.registration_date,
p.appointment_date,p.certificate_issuing_doctor_id,p.certificate_issuing_doctor_name
from patient_info patient left join patient_pre_hospitalization p
from patient_info patient left join patient_pre_hospitalization p on p.patient_id = patient.id
<where>
p.del_flag = 0 and patient.patient_type = 'PRE_HOSPITALIZED_PATIENT'
<if test="patientName != null and patientName != ''">

View File

@ -34,6 +34,7 @@
<select id="selectProjectList" parameterType="Project" resultMap="ProjectResult">
<include refid="selectProjectVo"/>
<where>
del_flag = 0
<if test="groupId != null ">
and group_id = #{groupId}
</if>
@ -234,14 +235,30 @@
where id = #{id}
</update>
<delete id="deleteProjectById" parameterType="Long">
delete from project where id = #{id}
</delete>
<update id="deleteProjectById" parameterType="Long">
update project set del_flag = 1 where id = #{id}
</update>
<delete id="deleteProjectByIds" parameterType="String">
delete from project where id in
<update id="deleteProjectByIds" parameterType="String">
update project set del_flag = 1 where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</update>
<select id="hasSameCodeProject" parameterType="Long"
resultMap="ProjectResult">
<include refid="selectProjectVo"/>
<where>
del_flag = 0
<if test="id != null">
and id != #{id}
</if>
<if test="groupId != null">
and group_id = #{groupId}
</if>
<if test="projectCode != null and projectCode != ''">
and project_code = #{projectCode}
</if>
</where>
</select>
</mapper>

View File

@ -31,9 +31,9 @@
<select id="selectProjectDeviceList" parameterType="ProjectDevice" resultMap="ProjectDeviceResult">
<include refid="selectProjectDeviceVo"/>
<where>
<if test="patientId != null ">
and patient_id = #{patientId}
</if>
<if test="patientId != null">
and patient_id = #{patientId}
</if>
<if test="patientName != null and patientName != ''">
and patient_name like concat('%', #{patientName}, '%')
</if>
@ -204,14 +204,16 @@
where id = #{id}
</update>
<delete id="deleteProjectDeviceById" parameterType="Long">
delete from project_device where id = #{id}
</delete>
<update id="deleteProjectDeviceById" parameterType="Long">
update project_device set device_status = 'UN_BIND',device_unbind_time = sysdate()
where id = #{id}
</update>
<delete id="deleteProjectDeviceByIds" parameterType="String">
delete from project_device where id in
<update id="deleteProjectDeviceByIds" parameterType="String">
update project_device set device_status = 'UN_BIND',device_unbind_time = sysdate()
where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</update>
</mapper>

View File

@ -166,4 +166,16 @@
#{item.updateTime,jdbcType=TIMESTAMP})
</foreach>
</insert>
<select id="hasSameCodeGroup" parameterType="Long" resultMap="ProjectGroupResult">
<include refid="selectProjectGroupVo"/>
<where>
del_flag = 0
<if test="id != null">
and id != #{id}
</if>
<if test="groupCode != null and groupCode != ''">
and group_code = #{groupCode}
</if>
</where>
</select>
</mapper>