liusheng
2023-06-06 997d3676de243cc1d84c62990d104fd81a25d54a
患者错误信息
已修改5个文件
456 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/DingTalkService.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/PatArchive.java 229 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IPatArchiveService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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");
@@ -56,7 +62,7 @@
        JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("result").getJSONArray("userid_list"));
        // 将JSONArray转为List列表
        String str = JSONObject.toJSONString(jsonArray);
        List<String> list = JSONObject.parseObject(str,List.class);
        List<String> list = JSONObject.parseObject(str, List.class);
        //电话号码数组
        //   String[] split = mobile.split(",");
@@ -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;
@@ -9,252 +10,258 @@
/**
 * 患者档案对象 pat_archive
 *
 *
 * @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,17 +231,21 @@
                patArchiveMapper.insertPatArchive(patArchive);
                //根据标签名查询出标签信息
                BaseTag baseTag = new BaseTag();
                baseTag.setTagname(row.getCell(7).toString());
                List<BaseTag> baseTags = baseTagMapper.selectBaseTagList(baseTag);
                BaseTag baseTag1 = baseTags.get(0);
                String s = row.getCell(7).toString();
                String[] split = s.split(",");
                for (String tagName : split) {
                    BaseTag baseTag = new BaseTag();
                    baseTag.setTagname(tagName);
                    List<BaseTag> baseTags = baseTagMapper.selectBaseTagList(baseTag);
                    BaseTag baseTag1 = baseTags.get(0);
                // 新增患者档案标签
                PatArchivetag patArchivetag = DtoConversionUtils.sourceToTarget(baseTag1, PatArchivetag.class);
                patArchivetag.setUpdateBy(username);
                patArchivetag.setCreateTime(new Date());
                patArchivetag.setPatid(patArchive.getPatid());
                patArchivetagMapper.insertPatArchivetag(patArchivetag);
                    // 新增患者档案标签
                    PatArchivetag patArchivetag = DtoConversionUtils.sourceToTarget(baseTag1, PatArchivetag.class);
                    patArchivetag.setUpdateBy(username);
                    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);
        }
    }
}