ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/DingTalkService.java
@@ -10,7 +10,14 @@ import com.dingtalk.api.response.*; import com.taobao.api.ApiException; import org.apache.commons.lang3.StringUtils; 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 java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -23,8 +30,7 @@ * @throws ApiException */ private static String getAccessToken() throws ApiException { DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken"); DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken"); OapiGettokenRequest request = new OapiGettokenRequest(); //Appkey request.setAppkey("dingn8iip5ubj7clrrsv"); @@ -111,13 +117,31 @@ } } public static void main(String[] args) throws ApiException { public static void main(String[] args) throws ApiException, IOException { // String appId = "wx1c5243d2337753f4"; // String appSecret = "84a2186a0d175e88345267c716516cd3"; // WeChatService weChatService = new WeChatService(appId, appSecret); // weChatService.sendMessageToFollowers("你在说啥呢????"); // // new com.smartor.controller.BaseSmsaccountController().sendMessageToFollowers("AIJSl-IF6M05NzaXofPYbT5wgSP3bWH7I9OBmvJqsaU","www.baidu.com"); sendNotification("17607179857", "1", "2", "3"); // sendNotification("17607179857", "1", "2", "3"); Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); // 创建行和单元格,并设置单元格的值 Row row = sheet.createRow(0); row.createCell(0).setCellValue("姓名"); row.createCell(1).setCellValue("性别"); row.createCell(2).setCellValue("证件类型"); row.createCell(3).setCellValue("出生日期"); row.createCell(4).setCellValue("本人联系方式"); row.createCell(5).setCellValue("亲属联系方式"); row.createCell(6).setCellValue("患者标签"); row.createCell(7).setCellValue("错误原因"); // 保存工作簿到文件 FileOutputStream outputStream = new FileOutputStream("example.xlsx"); workbook.write(outputStream); outputStream.close(); workbook.close(); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveController.java
@@ -1,29 +1,23 @@ package com.smartor.controller; package com.ruoyi.web.controller.smartor; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletResponse; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.smartor.domain.PatUpInfoVO; 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.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.smartor.domain.PatArchive; import com.smartor.service.IPatArchiveService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.smartor.domain.PatArchive; import com.smartor.domain.PatUpInfoVO; import com.smartor.service.IPatArchiveService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * 患者档案Controller @@ -103,18 +97,30 @@ /** * 患者文件处理 * * @param title * @param multipartFile */ @PostMapping("/filehandle") public AjaxResult fileHandle(@RequestParam("multipartFile") MultipartFile multipartFile) { @PostMapping("/importFilehandle") public AjaxResult importFilehandle(@RequestParam("multipartFile") MultipartFile multipartFile) { //获取当前登陆人 LoginUser loginUser = getLoginUser(); SysUser user = loginUser.getUser(); String userName = user.getUserName(); PatUpInfoVO patUpInfoVO = patArchiveService.fileHandle(userName, multipartFile); PatUpInfoVO patUpInfoVO = patArchiveService.importFilehandle(userName, multipartFile); return success(patUpInfoVO); } /** * 导出患者错误信息 * * @param patArchiveList */ @PostMapping("/exportErrPatInfo") public AjaxResult exportErrPatInfo(@RequestBody List<PatArchive> patArchiveList) { return success(patArchiveService.exportErrPatInfo(patArchiveList)); } } smartor/src/main/java/com/smartor/domain/PatArchive.java
@@ -1,6 +1,7 @@ package com.smartor.domain; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -13,248 +14,254 @@ * @author smartor * @date 2023-03-04 */ public class PatArchive extends BaseEntity { public class PatArchive extends BaseEntity { private static final long serialVersionUID = 1L; /** 自增ID */ /** * 自增ID */ private Long patid; /** 姓名 */ /** * 姓名 */ @Excel(name = " 姓名 ") private String name; /** 性别 1:男 2:女*/ /** * 性别 1:男 2:女 */ @Excel(name = " 性别 ") private Long sex; /** 证件号码 */ /** * 证件号码 */ @Excel(name = " 证件号码 ") private String iccardno; /** 生日 */ /** * 生日 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = " 生日 ", width = 30, dateFormat = "yyyy-MM-dd") private Date birthdate; /** 年龄 */ /** * 年龄 */ @Excel(name = " 年龄 ") private Long age; /** 来源 */ /** * 来源 */ @Excel(name = " 来源 ") private Long source; /** 建档时间 */ /** * 建档时间 */ private Date archivetime; /** 建档人 */ /** * 建档人 */ private String archiveby; /** 手机号码 */ /** * 手机号码 */ @Excel(name = " 手机号码 ") private String telcode; /** 亲属号码 */ /** * 亲属号码 */ private String relativetelcode; /** 证件类型 */ /** * 证件类型 */ private String iccardtype; /** 机构ID */ /** * 机构ID */ @Excel(name = " 机构ID ") private String orgid; /** 微信openid */ /** * 微信openid */ private String openid; /** 删除标记 */ /** * 删除标记 */ private String delFlag; /** 上传标记 */ /** * 上传标记 */ private Long isupload; /** 上传时间 */ /** * 上传时间 */ private Date uploadTime; public void setPatid(Long patid) { /** * 标签 */ private String tag; public void setPatid(Long patid) { this.patid = patid; } public Long getPatid() { public Long getPatid() { return patid; } public void setName(String name) { public void setName(String name) { this.name = name; } public String getName() { public String getName() { return name; } public void setSex(Long sex) { public void setSex(Long sex) { this.sex = sex; } public Long getSex() { public Long getSex() { return sex; } public void setIccardno(String iccardno) { public void setIccardno(String iccardno) { this.iccardno = iccardno; } public String getIccardno() { public String getIccardno() { return iccardno; } public void setBirthdate(Date birthdate) { public void setBirthdate(Date birthdate) { this.birthdate = birthdate; } public Date getBirthdate() { public Date getBirthdate() { return birthdate; } public void setAge(Long age) { public void setAge(Long age) { this.age = age; } public Long getAge() { public Long getAge() { return age; } public void setSource(Long source) { public void setSource(Long source) { this.source = source; } public Long getSource() { public Long getSource() { return source; } public void setArchivetime(Date archivetime) { public void setArchivetime(Date archivetime) { this.archivetime = archivetime; } public Date getArchivetime() { public Date getArchivetime() { return archivetime; } public void setArchiveby(String archiveby) { public void setArchiveby(String archiveby) { this.archiveby = archiveby; } public String getArchiveby() { public String getArchiveby() { return archiveby; } public void setTelcode(String telcode) { public void setTelcode(String telcode) { this.telcode = telcode; } public String getTelcode() { public String getTelcode() { return telcode; } public void setRelativetelcode(String relativetelcode) { public void setRelativetelcode(String relativetelcode) { this.relativetelcode = relativetelcode; } public String getRelativetelcode() { public String getRelativetelcode() { return relativetelcode; } public void setIccardtype(String iccardtype) { public void setIccardtype(String iccardtype) { this.iccardtype = iccardtype; } public String getIccardtype() { public String getIccardtype() { return iccardtype; } public void setOrgid(String orgid) { public void setOrgid(String orgid) { this.orgid = orgid; } public String getOrgid() { public String getOrgid() { return orgid; } public void setOpenid(String openid) { public void setOpenid(String openid) { this.openid = openid; } public String getOpenid() { public String getOpenid() { return openid; } public void setDelFlag(String delFlag) { public void setDelFlag(String delFlag) { this.delFlag = delFlag; } public String getDelFlag() { public String getDelFlag() { return delFlag; } public void setIsupload(Long isupload) { public void setIsupload(Long isupload) { this.isupload = isupload; } public Long getIsupload() { public Long getIsupload() { return isupload; } public void setUploadTime(Date uploadTime) { public void setUploadTime(Date uploadTime) { this.uploadTime = uploadTime; } public Date getUploadTime() { public Date getUploadTime() { return uploadTime; } public String getTag() { return tag; } public void setTag(String tag) { this.tag = tag; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("patid", getPatid()) .append("name", getName()) .append("sex", getSex()) .append("iccardno", getIccardno()) .append("birthdate", getBirthdate()) .append("age", getAge()) .append("source", getSource()) .append("archivetime", getArchivetime()) .append("archiveby", getArchiveby()) .append("telcode", getTelcode()) .append("relativetelcode", getRelativetelcode()) .append("iccardtype", getIccardtype()) .append("orgid", getOrgid()) .append("openid", getOpenid()) .append("delFlag", getDelFlag()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("isupload", getIsupload()) .append("uploadTime", getUploadTime()) .toString(); return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("patid", getPatid()).append("name", getName()).append("sex", getSex()).append("iccardno", getIccardno()).append("birthdate", getBirthdate()).append("age", getAge()).append("source", getSource()).append("archivetime", getArchivetime()).append("archiveby", getArchiveby()).append("telcode", getTelcode()).append("relativetelcode", getRelativetelcode()).append("iccardtype", getIccardtype()).append("orgid", getOrgid()).append("openid", getOpenid()).append("delFlag", getDelFlag()).append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).append("createBy", getCreateBy()).append("createTime", getCreateTime()).append("isupload", getIsupload()).append("uploadTime", getUploadTime()).toString(); } } smartor/src/main/java/com/smartor/service/IPatArchiveService.java
@@ -2,8 +2,10 @@ import java.util.List; import com.ruoyi.common.core.domain.AjaxResult; import com.smartor.domain.PatArchive; import com.smartor.domain.PatUpInfoVO; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -68,5 +70,13 @@ * @param title * @param file */ public PatUpInfoVO fileHandle( String username, MultipartFile file); public PatUpInfoVO importFilehandle(String username, MultipartFile file); /** * 导出患者错误信息 * * @param patArchiveList * @return */ public String exportErrPatInfo(List<PatArchive> patArchiveList); } smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
@@ -1,9 +1,12 @@ package com.smartor.service.impl; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DtoConversionUtils; @@ -113,7 +116,7 @@ @Override @Transactional public PatUpInfoVO fileHandle(String username, MultipartFile file) { public PatUpInfoVO importFilehandle(String username, MultipartFile file) { PatUpInfoVO patUpInfoVO = new PatUpInfoVO(); Integer successNum = 0; Integer failNum = 0; @@ -130,8 +133,8 @@ continue; } PatArchive patArchive = new PatArchive(); if (ObjectUtils.isEmpty(row.getCell(3))) { patArchive.setRemark("身份证号为空"); if (ObjectUtils.isEmpty(row.getCell(3)) || StringUtils.isEmpty(row.getCell(3).toString())) { addRemark("身份证号为空", patArchive); } else { patArchive.setIccardno(row.getCell(3).toString()); //根据身份证,先去患者管理表里看看有没有这个人,如果有这个人,也不需要插入患者表 @@ -142,31 +145,30 @@ } //判断姓名是否为空 if (ObjectUtils.isEmpty(row.getCell(0))) { patArchive.setRemark(patArchive.getRemark() + "," + "姓名为空"); errorpatArchiveList.add(patArchive); if (Objects.isNull(row.getCell(0)) || StringUtils.isEmpty(row.getCell(0).toString())) { addRemark("姓名为空", patArchive); } else { patArchive.setName(row.getCell(0).toString()); } //判断性别是否为空 if (ObjectUtils.isEmpty(row.getCell(1))) { patArchive.setRemark(patArchive.getRemark() + "," + "性别为空"); if (ObjectUtils.isEmpty(row.getCell(1)) || StringUtils.isEmpty(row.getCell(1).toString())) { addRemark("性别为空", patArchive); } else { patArchive.setSex(row.getCell(1).toString().equals("男") ? 1L : 2L); } //判断证件类型是否为空 if (ObjectUtils.isEmpty(row.getCell(2))) { patArchive.setRemark("证件类型为空"); if (ObjectUtils.isEmpty(row.getCell(2)) || StringUtils.isEmpty(row.getCell(2).toString())) { addRemark("证件类型为空", patArchive); } else { patArchive.setIccardtype(row.getCell(2).toString()); } //判断出生日期是否为空 if (ObjectUtils.isEmpty(row.getCell(4))) { patArchive.setRemark("出生日期为空"); if (ObjectUtils.isEmpty(row.getCell(4)) || StringUtils.isEmpty(row.getCell(4).toString())) { addRemark("出生日期为空", patArchive); } else { //格式转换,转成日期 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); @@ -181,8 +183,8 @@ } //判断本人联系是否为空,和长度是否正确 if (ObjectUtils.isEmpty(row.getCell(5))) { patArchive.setRemark("本人联系电话为空"); if (ObjectUtils.isEmpty(row.getCell(5)) || StringUtils.isEmpty(row.getCell(5).toString())) { addRemark("本人联系电话为空", patArchive); } else { //格式转换,转成文本 if (row.getCell(5).getCellType().toString().equals("NUMERIC")) { @@ -196,8 +198,8 @@ } //判断亲属联系方式是否为空,长度是否正确 if (ObjectUtils.isEmpty(row.getCell(6))) { patArchive.setRemark("本人联系电话为空"); if (ObjectUtils.isEmpty(row.getCell(6)) || StringUtils.isEmpty(row.getCell(6).toString())) { addRemark("亲属联系方式为空", patArchive); } else { //格式转换,转成文本 if (row.getCell(6).getCellType().toString().equals("NUMERIC")) { @@ -212,7 +214,9 @@ //患都标签是否为空 if (ObjectUtils.isEmpty(row.getCell(7))) { patArchive.setRemark("患者标签为空"); addRemark("患者标签为空", patArchive); } else { patArchive.setTag(row.getCell(7).toString()); } //判断备注是否为空 @@ -227,8 +231,11 @@ patArchiveMapper.insertPatArchive(patArchive); //根据标签名查询出标签信息 String s = row.getCell(7).toString(); String[] split = s.split(","); for (String tagName : split) { BaseTag baseTag = new BaseTag(); baseTag.setTagname(row.getCell(7).toString()); baseTag.setTagname(tagName); List<BaseTag> baseTags = baseTagMapper.selectBaseTagList(baseTag); BaseTag baseTag1 = baseTags.get(0); @@ -238,6 +245,7 @@ patArchivetag.setCreateTime(new Date()); patArchivetag.setPatid(patArchive.getPatid()); patArchivetagMapper.insertPatArchivetag(patArchivetag); } successNum = successNum + 1; } @@ -251,5 +259,70 @@ return patUpInfoVO; } @Override public String exportErrPatInfo(List<PatArchive> patArchiveList) { // 创建工作簿和工作表 Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); // 创建行和单元格,并设置单元格的值 Row row = sheet.createRow(0); getdata(row, null, true); for (int i = 0; i < patArchiveList.size(); i++) { row = sheet.createRow(i + 1); getdata(row, patArchiveList.get(i), false); } // 保存工作簿到文件 FileOutputStream outputStream = null; try { outputStream = new FileOutputStream("患者错误信息.xlsx"); workbook.write(outputStream); outputStream.close(); workbook.close(); } catch (Exception e) { e.printStackTrace(); return "导出失败"; } return "导出成功"; } private void getdata(Row row, PatArchive patArchive, Boolean head) { if (head) { row.createCell(0).setCellValue("姓名"); row.createCell(1).setCellValue("性别"); row.createCell(2).setCellValue("证件类型"); row.createCell(3).setCellValue("证件号码"); row.createCell(4).setCellValue("出生日期"); row.createCell(5).setCellValue("本人联系方式"); row.createCell(6).setCellValue("亲属联系方式"); row.createCell(7).setCellValue("患者标签"); row.createCell(8).setCellValue("错误原因"); } else { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd"); row.createCell(0).setCellValue(patArchive.getName()); row.createCell(1).setCellValue(patArchive.getSex() == 1 ? "男" : "女"); row.createCell(2).setCellValue(patArchive.getIccardtype()); row.createCell(3).setCellValue(patArchive.getIccardno()); if (ObjectUtils.isNotEmpty(patArchive.getBirthdate())) { row.createCell(4).setCellValue(simpleDateFormat.format(patArchive.getBirthdate()).toString()); } row.createCell(5).setCellValue(patArchive.getTelcode()); row.createCell(6).setCellValue(patArchive.getRelativetelcode()); row.createCell(7).setCellValue(patArchive.getTag()); row.createCell(8).setCellValue(patArchive.getRemark()); } } public void addRemark(String info, PatArchive patArchive) { if (StringUtils.isNotEmpty(patArchive.getRemark()) == true) { patArchive.setRemark(patArchive.getRemark() + "," + info); } else { patArchive.setRemark(info); } } }