Browse Source

Merge branch 'dev' of http://27.154.233.186:10080/Amoy2/wlyy2.0 into dev

# Conflicts:
#	common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java
#	server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
wangzhinan 3 năm trước cách đây
mục cha
commit
b358175fcd
15 tập tin đã thay đổi với 1849 bổ sung26 xóa
  1. 48 0
      business/base-service/src/main/java/com/yihu/jw/healthUpload/dao/BaseDoctorHealthUploadDao.java
  2. 37 0
      business/base-service/src/main/java/com/yihu/jw/healthUpload/dao/BaseDoctorMemberDao.java
  3. 874 0
      business/base-service/src/main/java/com/yihu/jw/healthUpload/service/BaseDoctorHealthUploadService.java
  4. 7 1
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  5. 4 2
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java
  6. 20 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorDO.java
  7. 439 0
      common/common-entity/src/main/java/com/yihu/jw/entity/healthUpload/BaseDoctorHealthUploadDO.java
  8. 95 0
      common/common-entity/src/main/java/com/yihu/jw/entity/healthUpload/BaseDoctorMemberDO.java
  9. 1 1
      gateway/ag-basic/pom.xml
  10. 4 2
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/PostFilter.java
  11. 8 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java
  12. 1 1
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  13. 8 7
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/HcyyService.java
  14. 12 12
      server/svr-authentication/src/main/java/com/yihu/jw/security/utils/RSAEncrypt.java
  15. 291 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/healthUpload/HealthUploadPoint.java

+ 48 - 0
business/base-service/src/main/java/com/yihu/jw/healthUpload/dao/BaseDoctorHealthUploadDao.java

@ -0,0 +1,48 @@
package com.yihu.jw.healthUpload.dao;
import com.yihu.jw.entity.healthUpload.BaseDoctorHealthUploadDO;
import com.yihu.jw.entity.healthUpload.BaseDoctorMemberDO;
import com.yihu.jw.entity.patient.Message;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
 *
 * 医生成员表
 *
 * @version
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年08月31日 	Created
 *
 * </pre>
 * @since 1.
 */
@Transactional
public interface BaseDoctorHealthUploadDao extends PagingAndSortingRepository<BaseDoctorHealthUploadDO, String>, JpaSpecificationExecutor<BaseDoctorHealthUploadDO>  {
    @Query("from BaseDoctorHealthUploadDO d where d.id = ?1 ")
    BaseDoctorHealthUploadDO findById(String id);
    @Query("from BaseDoctorHealthUploadDO d where d.doctorId = ?1 ")
    List<BaseDoctorHealthUploadDO> findByDoctorId(String doctorId);
    @Query("from BaseDoctorHealthUploadDO d where d.doctorId = ?1 and d.consumer= ?2")
    List<BaseDoctorHealthUploadDO> findByDoctorIdAndConsumer(String doctorId,String consumer);
    @Query("select a from BaseDoctorHealthUploadDO a where a.doctorId=?1 order by a.createTime desc")
    List<BaseDoctorHealthUploadDO> selectHealthUploadInfoByDoctorId(String doctorId, Pageable pageRequest);
    @Query("select a from BaseDoctorHealthUploadDO a where a.doctorId=?1 and a.createTime>=?2 and a.createTime<=?3 order by a.createTime desc")
    List<BaseDoctorHealthUploadDO> selectHealthUploadInfoByDoctorIdAndDate(String doctorId, Date startDate,Date endDate,Pageable pageRequest);
}

+ 37 - 0
business/base-service/src/main/java/com/yihu/jw/healthUpload/dao/BaseDoctorMemberDao.java

@ -0,0 +1,37 @@
package com.yihu.jw.healthUpload.dao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.healthUpload.BaseDoctorMemberDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 *
 * 医生成员表
 *
 * @version
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年08月31日 	Created
 *
 * </pre>
 * @since 1.
 */
@Transactional
public interface BaseDoctorMemberDao extends PagingAndSortingRepository<BaseDoctorMemberDO, String>, JpaSpecificationExecutor<BaseDoctorMemberDO>  {
    @Query("from BaseDoctorMemberDO d where d.id = ?1 AND d.del ='1'")
    BaseDoctorMemberDO findById(String id);
    @Query("from BaseDoctorMemberDO d where  d.del ='1' and d.doctorId=?1")
    List<BaseDoctorMemberDO> findByDoctorIdAndDel(String doctorId);
    @Query("from BaseDoctorMemberDO d where  d.del ='1' and d.doctorId=?1 and d.memberId=?2 ")
    BaseDoctorMemberDO findByDoctorIdAndMemberIdAndDel(String doctorId,String memberId);
}

+ 874 - 0
business/base-service/src/main/java/com/yihu/jw/healthUpload/service/BaseDoctorHealthUploadService.java

@ -0,0 +1,874 @@
package com.yihu.jw.healthUpload.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.healthUpload.BaseDoctorHealthUploadDO;
import com.yihu.jw.entity.healthUpload.BaseDoctorMemberDO;
import com.yihu.jw.entity.hospital.DmHospitalDO;
import com.yihu.jw.healthUpload.dao.BaseDoctorHealthUploadDao;
import com.yihu.jw.healthUpload.dao.BaseDoctorMemberDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.util.common.PwdUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.idcard.IdCardUtil;
import com.yihu.mysql.query.BaseJpaService;
import jxl.format.*;
import jxl.write.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.io.IOException;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
@Transactional
public class BaseDoctorHealthUploadService extends BaseJpaService<BaseDoctorHealthUploadDO, BaseDoctorHealthUploadDao> {
    private static Logger logger = LoggerFactory.getLogger(BaseDoctorHealthUploadService.class);
    @Autowired
    private BaseDoctorMemberDao doctorMemberDao;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private BaseDoctorHealthUploadDao baseDoctorHealthUploadDao;
    @Autowired
    private BaseDoctorHospitalDao baseDoctorHospitalDao;
    @Autowired
    private DictHospitalDeptDao dictHospitalDeptDao;
    /**
     * 新增医生成员关系
     * @param doctorId
     * @param ids 逗号隔开
     * @return
     */
    public List<BaseDoctorMemberDO> saveAndCreateMember(String doctorId,String ids){
        String str[] =ids.split(",");
        List<BaseDoctorMemberDO> baseDoctorMemberDOList = new ArrayList<>();
        for (int i=0;i<str.length;i++){
            String memberId = str[i];
            BaseDoctorMemberDO memberDO = doctorMemberDao.findByDoctorIdAndMemberIdAndDel(doctorId,memberId);
            if (memberDO==null){
                BaseDoctorMemberDO baseDoctorMemberDO = new BaseDoctorMemberDO();
                baseDoctorMemberDO.setDel(1);
                baseDoctorMemberDO.setDoctorId(doctorId);
                baseDoctorMemberDO.setMemberId(memberId);
                baseDoctorMemberDO.setCreateTime(new Date());
                baseDoctorMemberDO.setUpdateTime(new Date());
                baseDoctorMemberDO= doctorMemberDao.save(baseDoctorMemberDO);
                baseDoctorMemberDOList.add(baseDoctorMemberDO);
            }
        }
        return baseDoctorMemberDOList;
    }
    /**
     * 查询医生的成员列表
     * @param doctorId
     * @return
     */
    public List<BaseDoctorMemberDO> selectByDoctorId(String doctorId){
       List<BaseDoctorMemberDO> baseDoctorMemberDOList = doctorMemberDao.findByDoctorIdAndDel(doctorId);
        BaseDoctorMemberDO memberDO1 = doctorMemberDao.findByDoctorIdAndMemberIdAndDel(doctorId,doctorId);
        //添加本人
        if (memberDO1==null){
            BaseDoctorMemberDO baseDoctorMemberDO = new BaseDoctorMemberDO();
            baseDoctorMemberDO.setDel(1);
            baseDoctorMemberDO.setDoctorId(doctorId);
            baseDoctorMemberDO.setMemberId(doctorId);
            baseDoctorMemberDO.setCreateTime(new Date());
            baseDoctorMemberDO.setUpdateTime(new Date());
            baseDoctorMemberDO= doctorMemberDao.save(baseDoctorMemberDO);
        }
       for (BaseDoctorMemberDO memberDO:baseDoctorMemberDOList){
           BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(memberDO.getMemberId());
           if (baseDoctorDO!=null){
               memberDO.setBaseDoctorDO(baseDoctorDO);
           }
       }
       return baseDoctorMemberDOList;
    }
    /**
     * 查询医生的成员列表带有已上报次数
     * @param doctorId
     * @return
     */
    public List<BaseDoctorMemberDO> selectCountByDoctorId(String doctorId){
        List<BaseDoctorMemberDO> baseDoctorMemberDOList = doctorMemberDao.findByDoctorIdAndDel(doctorId);
        for (BaseDoctorMemberDO memberDO:baseDoctorMemberDOList){
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(memberDO.getMemberId());
            if (baseDoctorDO!=null){
                memberDO.setBaseDoctorDO(baseDoctorDO);
            }
            List<BaseDoctorHealthUploadDO> baseDoctorHealthUploadDOList = baseDoctorHealthUploadDao.findByDoctorIdAndConsumer(memberDO.getMemberId(),doctorId);
            memberDO.setCount(baseDoctorHealthUploadDOList.size()+"");
        }
        return baseDoctorMemberDOList;
    }
    /**
     * 查询某一个成员id
     * @param id 成员id
     * @return
     */
    public BaseDoctorMemberDO selectById(String id){
        BaseDoctorMemberDO baseDoctorMemberDO = doctorMemberDao.findById(id);
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(baseDoctorMemberDO.getMemberId());
        if (baseDoctorDO!=null){
            baseDoctorMemberDO.setBaseDoctorDO(baseDoctorDO);
        }
        List<BaseDoctorHospitalDO> doctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(baseDoctorMemberDO.getMemberId());
        baseDoctorMemberDO.setDoctorHospitalDOS(doctorHospitalDOS);
        return baseDoctorMemberDO;
    }
    /**
     * 删除某个成员
     * @param id 成员id
     * @return
     */
    public BaseDoctorMemberDO delDoctorMember(String id){
        BaseDoctorMemberDO baseDoctorMemberDO = doctorMemberDao.findById(id);
        baseDoctorMemberDO.setDel(0);
        baseDoctorMemberDO = doctorMemberDao.save(baseDoctorMemberDO);
        return baseDoctorMemberDO;
    }
    /**
     * 提交健康信息
     * @param baseDoctorHealthUploadDO 健康信息实体类
     * @return
     */
    public BaseDoctorHealthUploadDO createHealthUploadInfo(BaseDoctorHealthUploadDO baseDoctorHealthUploadDO){
        baseDoctorHealthUploadDO.setCreateTime(new Date());
        return baseDoctorHealthUploadDao.save(baseDoctorHealthUploadDO);
    }
    /**
     * 查询成员的健康上报记录
     *
     * @param doctorId 医生id
     * @return
     */
    public MixEnvelop selectHealthUploadInfoByDoctorId(String doctorId,String startDate,String endDate,Integer page,Integer pageSize){
        PageRequest pageRequest = new PageRequest(page-1,pageSize);
        MixEnvelop mixEnvelop = new MixEnvelop();
        List<BaseDoctorHealthUploadDO> list = new ArrayList<>();
        if (StringUtils.isNoneBlank(startDate)) {
            Date startTime = DateUtil.strToDateLong(startDate);
            Date endTime = DateUtil.strToDateLong(endDate);
            list = baseDoctorHealthUploadDao.selectHealthUploadInfoByDoctorIdAndDate(doctorId,startTime,endTime,pageRequest);
        }else {
            list =baseDoctorHealthUploadDao.selectHealthUploadInfoByDoctorId(doctorId,pageRequest);
        }
        mixEnvelop.setCurrPage(page);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setTotalCount(list==null?0:list.size());
        return mixEnvelop;
    }
    public BaseDoctorHealthUploadDO selectHealthInfoById(String id){
        BaseDoctorHealthUploadDO baseDoctorHealthUploadDO = baseDoctorHealthUploadDao.findById(id);
        return baseDoctorHealthUploadDO;
    }
    /**
     * 新增加医生信息
     * @param photo
     * @param name
     * @param idcard
     * @param sex
     * @param mobile
     * @param dept
     * @param deptName
     * @param idCardType
     * @param idType
     * @return
     */
    public BaseDoctorDO  saveDoctorInfo(String id,String photo,String name,String idcard,String sex,String mobile,String dept,String deptName,String idCardType,String idType) throws Exception {
        BaseDoctorDO baseDoctorDO = new BaseDoctorDO();
        if (StringUtils.isNoneBlank(id)) {
            baseDoctorDO = baseDoctorDao.findById(id);
            baseDoctorDO.setIdCardType(idCardType);
            baseDoctorDO.setIdType(idType);
            baseDoctorDO.setPhoto(photo);
            baseDoctorDO.setName(name);
            baseDoctorDO.setIdcard(idcard);
            baseDoctorDO.setSex(Integer.parseInt(sex));
            baseDoctorDO.setMobile(mobile);
            String deptCode = dept;
            baseDoctorDO.setChargeType("1");
            baseDoctorDO = baseDoctorDao.save(baseDoctorDO);
            List<BaseDoctorHospitalDO> baseDoctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(baseDoctorDO.getId());
            if (!(null != baseDoctorHospitalDOS && baseDoctorHospitalDOS.size() > 0)) {
                baseDoctorHospitalDao.delete(baseDoctorHospitalDOS);
                BaseDoctorHospitalDO baseDoctorHospitalDO = new BaseDoctorHospitalDO();
                baseDoctorHospitalDO.setOrgCode("350211A1002");
                baseDoctorHospitalDO.setOrgName("马銮湾医院");
                baseDoctorHospitalDO.setDoctorCode(baseDoctorDO.getId());
                baseDoctorHospitalDO.setDeptCode(deptCode);
                baseDoctorHospitalDO.setDeptName(deptName);
                baseDoctorHospitalDO.setDel("1");
                baseDoctorHospitalDao.save(baseDoctorHospitalDO);
            }
        } else {
            baseDoctorDO.setIdcard(idcard);
            baseDoctorDO.setBirthday(IdCardUtil.getBirthdayForIdcard(idcard));
            baseDoctorDO.setSex(Integer.parseInt(sex));
            baseDoctorDO.setLocked(0);
            baseDoctorDO.setEnabled(1);
            String disableFlag = "0";
            //互联网医院:1停用,0使用  转 i健康:1正常,0作废
            baseDoctorDO.setDel("1".equals(disableFlag) ? "0" : "1");
            baseDoctorDO.setMobile("0");
            baseDoctorDO.setName(name);
            baseDoctorDO.setIsFamous(0);
            baseDoctorDO.setCreateTime(new Date());
            baseDoctorDO.setUpdateTime(new Date());
            baseDoctorDO.setIdCardType(idCardType);
            baseDoctorDO.setIdType(idType);
            baseDoctorDO.setPhoto(photo);
            baseDoctorDO.setMobile(mobile);
            baseDoctorDO.setChargeType("1");
            if (StringUtils.isNotBlank(mobile)) {
                baseDoctorDO.setSalt(PwdUtil.randomString(5));
                try {
                    baseDoctorDO.setPassword(com.yihu.utils.security.MD5.md5Hex(baseDoctorDO.getMobile().substring(baseDoctorDO.getMobile().length() - 6) + "{" + baseDoctorDO.getSalt() + "}"));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                baseDoctorDO.setPassword(com.yihu.utils.security.MD5.md5Hex("123456" + "{" + baseDoctorDO.getSalt() + "}"));
            }
            // 用医生和机构id、部门判断数据是否存在,若不存在则保存医生机构关联关系
            String deptCode = dept;
            baseDoctorDO = baseDoctorDao.save(baseDoctorDO);
            List<BaseDoctorHospitalDO> baseDoctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(baseDoctorDO.getId());
            if (!(null != baseDoctorHospitalDOS && baseDoctorHospitalDOS.size() > 0)) {
                baseDoctorHospitalDao.delete(baseDoctorHospitalDOS);
                BaseDoctorHospitalDO baseDoctorHospitalDO = new BaseDoctorHospitalDO();
                baseDoctorHospitalDO.setOrgCode("350211A1002");
                baseDoctorHospitalDO.setOrgName("马銮湾医院");
                baseDoctorHospitalDO.setDoctorCode(baseDoctorDO.getId());
                baseDoctorHospitalDO.setDeptCode(deptCode);
                baseDoctorHospitalDO.setDeptName(deptName);
                baseDoctorHospitalDO.setDel("1");
                baseDoctorHospitalDao.save(baseDoctorHospitalDO);
            }
        }
        return baseDoctorDO;
    }
    /**
     *
     * @param dept
     * @param level 1院级管理员,2科室管理员
     * @param doctorId
     * @return
     */
    public JSONObject selectHealthByRole(String dept,int level,String doctorId){
        String nowDate = DateUtil.getStringDateShort();
        //今日本人提交
        String benrenSql = "select count(1) as total from base_doctor_health_upload where consumer='"+doctorId+"' and consumer in(doctor_id) and  create_time >='"+nowDate+" 00:00:00' and create_time<='"+nowDate+" 23:59:59'";
        //今日提交
        String personSql = "select count(1) as total from base_doctor_health_upload where consumer='"+doctorId+"' and  create_time >='"+nowDate+" 00:00:00' and create_time<='"+nowDate+" 23:59:59'";
        //代上报
        String daishangbaoSql = "select count(1) as total from base_doctor_health_upload where consumer='"+doctorId+"' and consumer not in(doctor_id)";
        //本人上报
        String benrenshangbaoSql = "select count(1) as total from base_doctor_health_upload where consumer='"+doctorId+"' and consumer in(doctor_id)";
        String doctorSql ="";
        String sql = "";
        if (level==1){
            //总人次
            doctorSql =" select COUNT(1) as \"total\" from base_doctor d where d.del=1 ";
            //今日上报人次
            sql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and d.create_time >='"+nowDate+" 00:00:00' and d.create_time<='"+nowDate+" 23:59:59'";
        }else if (level==2){
            //总人次
           doctorSql =" select COUNT(1) as \"total\" from base_doctor d where d.del=1 and id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '"+dept+"' and dh.del=1 )";
            //今日上报人次
            sql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and doctor_id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '"+dept+"' and dh.del=1 ) and d.create_time >='"+nowDate+" 00:00:00' and d.create_time<='"+nowDate+" 23:59:59'";
        }
        //今日提交
        int personTotal = 0;
        //代上报
        int daishangbaoTotal = 0;
        //本人上报
        int benrenshangbaoTotal = 0;
        //总人次
        int doctorTotal = 0;
        //今日上报人次
        int sqlTotal = 0;
        //今日未上报人次
        int notUploadTotal = 0;
        Map<String,Object> personMap = jdbcTemplate.queryForMap(personSql);
        if (personMap!=null){
            if (personMap.get("total")!=null){
                personTotal = Integer.parseInt(personMap.get("total").toString());
            }
        }
        Map<String,Object> daishangbaoMap = jdbcTemplate.queryForMap(daishangbaoSql);
        if (daishangbaoMap!=null){
            if (daishangbaoMap.get("total")!=null){
                daishangbaoTotal = Integer.parseInt(daishangbaoMap.get("total").toString());
            }
        }
        Map<String,Object> benrenshangbaoMap = jdbcTemplate.queryForMap(benrenshangbaoSql);
        if (benrenshangbaoMap!=null){
            if (benrenshangbaoMap.get("total")!=null){
                benrenshangbaoTotal = Integer.parseInt(benrenshangbaoMap.get("total").toString());
            }
        }
        Map<String,Object> doctorMap = jdbcTemplate.queryForMap(doctorSql);
        if (doctorMap!=null){
            if (doctorMap.get("total")!=null){
                doctorTotal = Integer.parseInt(doctorMap.get("total").toString());
            }
        }
        Map<String,Object> sqlMap = jdbcTemplate.queryForMap(sql);
        if (sqlMap!=null){
            if (sqlMap.get("total")!=null){
                sqlTotal = Integer.parseInt(sqlMap.get("total").toString());
            }
        }
        int benrenTotal=0;
        Map<String,Object> benrenMap = jdbcTemplate.queryForMap(benrenSql);
        if (benrenMap!=null){
            if (benrenMap.get("total")!=null){
                benrenTotal = Integer.parseInt(benrenMap.get("total").toString());
            }
        }
        JSONObject object = new JSONObject();
        object.put("personTotal",personTotal);//今日上报人数
        object.put("daishangbaoTotal",daishangbaoTotal);//代上报
        object.put("benrenshangbaoTotal",benrenshangbaoTotal);//已上报
        object.put("doctorTotal",doctorTotal);//总人次
        object.put("sqlTotal",sqlTotal);//今日上报人数
        object.put("notUploadTotal",doctorTotal-sqlTotal);//今日未上报人数
        object.put("benrenTotal",benrenTotal);//今日本人提交
        return object;
    }
    /**
     * 首页统计
     *
     * @param dept
     * @param idType
     * @param status 上报状态
     * @param state 健康状态
     * @param startDate
     * @param endDate
     * @return
     */
    public JSONObject selectHeaderTotal(String dept,String idType,String status,String state,String startDate,String endDate){
        JSONObject object =new JSONObject();
        String day = DateUtil.getTwoDay(endDate,startDate);
        String doctorSql =" select COUNT(1) as \"total\" from base_doctor d where d.del=1 ";
        Integer total = 0;//总人次
        String sql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 ";
        String deptCondition = "";
        if (StringUtils.isNoneBlank(dept)){
            deptCondition +=" (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '"+dept+"' and dh.del=1 )";
        }
        String idTypeCondition = " ";
        if (StringUtils.isNoneBlank(idType)){
            idTypeCondition +="  (select d1.id from base_doctor d1 where 1=1 and d1.id_type = '"+idType+"')";
        }
        if (StringUtils.isNoneBlank(deptCondition)){
            doctorSql+=" and d.id IN "+deptCondition;
        }
        if (StringUtils.isNoneBlank(idTypeCondition)){
            doctorSql+=" and d.id IN "+idTypeCondition ;
        }
        Map<String,Object> map = jdbcTemplate.queryForMap(doctorSql);
        String doctorTotal = "";
        if (map!=null){
             doctorTotal = map.get("total").toString();
        }
        if (StringUtils.isNoneBlank(doctorTotal)){
            //总人次
            if (!day.equalsIgnoreCase("0")){
                total = Integer.parseInt(doctorTotal)*Integer.parseInt(day);
            }else {
                total= Integer.parseInt(doctorTotal);
            }
        }
        Integer yishangbaoTotal = 0;
        Integer weishangbaoTotal =0;
        Integer zhengchangTotal = 0;
        Integer yichangTotal = 0;
        if (StringUtils.isNoneBlank(startDate)){
            sql +=" and d.create_time >='"+startDate+" 00:00:00' and d.create_time<='"+endDate+" 23:59:59' ";
        }
        if (StringUtils.isNoneBlank(state)){
            if (state.equalsIgnoreCase("1")){
                sql +=" and d.health_code=1 ";
            }else if (state.equalsIgnoreCase("2")){
                sql +=" and (d.health_code in(2,3) OR CAST(d.temperature as DECIMAL)>=37.3 OR  d.is_symptoms=1 OR d.is_epidemic=1) ";
            }
        }
        if (StringUtils.isNoneBlank(deptCondition)){
            sql+=" and d.doctor_id IN "+deptCondition;
        }
        if (StringUtils.isNoneBlank(idTypeCondition)){
            sql+=" and d.doctor_id IN "+idTypeCondition ;
        }
        //已上传
        Map<String,Object> yishangchaungMap = jdbcTemplate.queryForMap(sql);
        if (yishangchaungMap!=null){
            if (yishangchaungMap.get("total")!=null){
                yishangbaoTotal = Integer.parseInt(yishangchaungMap.get("total").toString());
            }
        }
        //未上报
        weishangbaoTotal=total-yishangbaoTotal;
        //正常、异常
        String sqlZhengchang = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and d.health_code=1 ";
        if (StringUtils.isNoneBlank(startDate)){
            sqlZhengchang +=" and d.create_time >='"+startDate+" 00:00:00' and d.create_time<='"+endDate+" 23:59:59' ";
        }
        if (StringUtils.isNoneBlank(deptCondition)){
            sqlZhengchang +=" and d.doctor_id IN "+deptCondition;
        }
        if (StringUtils.isNoneBlank(idTypeCondition)){
            sqlZhengchang +=" and d.doctor_id IN "+idTypeCondition ;
        }
        //正常
        Map<String,Object> zhengchangMap = jdbcTemplate.queryForMap(sqlZhengchang);
        if (zhengchangMap!=null){
            if (zhengchangMap.get("total")!=null){
                zhengchangTotal = Integer.parseInt(zhengchangMap.get("total").toString());
            }
        }
        String sqlYichang = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and (d.health_code in(2,3) OR CAST(d.temperature as DECIMAL)>=37.3 OR  d.is_symptoms=1 OR d.is_epidemic=1)  ";
        if (StringUtils.isNoneBlank(startDate)){
            sqlYichang +=" and d.create_time >='"+startDate+" 00:00:00' and d.create_time<='"+endDate+" 23:59:59' ";
        }
        if (StringUtils.isNoneBlank(deptCondition)){
            sqlYichang +=" and d.doctor_id IN "+deptCondition;
        }
        if (StringUtils.isNoneBlank(idTypeCondition)){
            sqlYichang +=" and d.doctor_id IN "+idTypeCondition ;
        }
        //正常
        Map<String,Object> yichangMap = jdbcTemplate.queryForMap(sqlYichang);
        if (yichangMap!=null){
            if (yichangMap.get("total")!=null){
                yichangTotal = Integer.parseInt(yichangMap.get("total").toString());
            }
        }
        object.put("total",total);//总人次
        object.put("yishangbaoTotal",yishangbaoTotal);//已上报
        object.put("weishangbaoTotal",weishangbaoTotal);//未上报
        object.put("zhengchangTotal",zhengchangTotal);//上报正常
        object.put("yichangTotal",yichangTotal);//上报异常
        return object;
    }
    /**
     * 具体每一个统计时间列表
     *
     * @param dept
     * @param idType
     * @param status
     * @param state
     * @param startDate
     * @param endDate
     * @return
     */
    public JSONArray selectListByTotal(String dept,String idType,String status,String state,String startDate,String endDate,String name){
        long days = DateUtil.getDays(endDate,startDate);
        List<String> list = new ArrayList<>();
        Date startTime = DateUtil.strToDateShort(startDate);
        for (int i=0;i<=days;i++){
            Date date = DateUtil.getPreDays(startTime,i);
            String str = DateUtil.dateToStrShort(date);
            list.add(str);
        }
        JSONArray array = new JSONArray();
        for (int i=0;i<list.size();i++){
            String date = list.get(i);
            String doctorSql =" select COUNT(1) as \"total\" from base_doctor d where d.del=1 ";
            String deptCondition = "";
            if (StringUtils.isNoneBlank(dept)){
                deptCondition +=" (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '"+dept+"' and dh.del=1 )";
            }
            String idTypeCondition = " ";
            if (StringUtils.isNoneBlank(idType)){
                idTypeCondition +="  (select d1.id from base_doctor d1 where 1=1 and d1.id_type = '"+idType+"')";
            }
            if (StringUtils.isNoneBlank(deptCondition)){
                doctorSql+=" and d.id IN "+deptCondition;
            }
            if (StringUtils.isNoneBlank(idTypeCondition)){
                doctorSql+=" and d.id IN "+idTypeCondition ;
            }
            if (StringUtils.isNoneBlank(status)){
                if (status.equalsIgnoreCase("1")){
                    doctorSql +=" and d.id in(select d1.doctor_id from base_doctor_health_upload d1 where 1=1 and d1.create_time >='"+date+" 00:00:00' and d1.create_time<='"+date+" 23:59:59' )";
                }else if (status.equalsIgnoreCase("2")){
                    doctorSql +=" and d.id not in(select d1.doctor_id from base_doctor_health_upload d1 where 1=1 and d1.create_time >='"+date+" 00:00:00' and d1.create_time<='"+date+" 23:59:59' )";
                }
            }
            if (StringUtils.isNoneBlank(state)){
                if (state.equalsIgnoreCase("1")){
                    doctorSql +=" and d.id in(select d1.doctor_id from base_doctor_health_upload d1 where 1=1 and d1.create_time >='"+date+" 00:00:00' and d1.create_time<='"+date+" 23:59:59' and d1.health_code =1)  ";
                }else if (state.equalsIgnoreCase("2")){
                    doctorSql +=" and d.id in(select d1.doctor_id from base_doctor_health_upload d1 where 1=1 and d1.create_time >='"+date+" 00:00:00' and d1.create_time<='"+date+" 23:59:59' and (d1.health_code in(2,3) OR CAST(d1.temperature as DECIMAL)>=37.3 OR  d1.is_symptoms=1 OR d1.is_epidemic=1)) ";
                }
            }
            if (StringUtils.isNoneBlank(name)){
                doctorSql +=" and d.name LIKE  '"+name+"' ";
            }
            Map<String,Object> map = jdbcTemplate.queryForMap(doctorSql);
            Integer total = 0;
            if (map!=null){
                if (map.get("total")!=null){
                    total = Integer.parseInt(map.get("total").toString());
                }
            }
            JSONObject object = new JSONObject();
            object.put("time",date);
            object.put("total",total);
            array.add(object);
        }
        return array;
    }
    /**
     * 具体每一个统计时间的详情
     *
     * @param dept
     * @param idType
     * @param status
     * @param state
     * @param startDate
     * @param endDate
     * @param name total
     * @return
     */
    public JSONArray selectListInfoByTotal(String dept,String idType,String status,String state,String startDate,String endDate,String name){
        long days = DateUtil.getDays(endDate,startDate);
        List<String> list = new ArrayList<>();
        Date startTime = DateUtil.strToDateShort(startDate);
        for (int i=0;i<=days;i++){
            Date date = DateUtil.getPreDays(startTime,i);
            String str = DateUtil.dateToStrShort(date);
            list.add(str);
        }
        JSONArray array = new JSONArray();
        for (int i=0;i<list.size();i++){
            String date = list.get(i);
            String doctorSql =" select d.name,d.id,d.job_title_name as jobTitleName,d.photo from base_doctor d where d.del=1 ";
            String deptCondition = "";
            if (StringUtils.isNoneBlank(dept)){
                deptCondition +=" (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '"+dept+"' and dh.del=1 )";
            }
            String idTypeCondition = " ";
            if (StringUtils.isNoneBlank(idType)){
                idTypeCondition +="  (select d1.id from base_doctor d1 where 1=1 and d1.id_type = '"+idType+"')";
            }
            if (StringUtils.isNoneBlank(deptCondition)){
                doctorSql+=" and d.id IN "+deptCondition;
            }
            if (StringUtils.isNoneBlank(idTypeCondition)){
                doctorSql+=" and d.id IN "+idTypeCondition ;
            }
            if (StringUtils.isNoneBlank(status)){
                if (status.equalsIgnoreCase("1")){
                    doctorSql +=" and d.id in (select d1.doctor_id from base_doctor_health_upload d1 where 1=1 and d1.create_time >='"+date+" 00:00:00' and d1.create_time<='"+date+" 23:59:59')";
                }else if (status.equalsIgnoreCase("2")){
                    doctorSql +=" and d.id not in(select d1.doctor_id from base_doctor_health_upload d1 where 1=1 and d1.create_time >='"+date+" 00:00:00' and d1.create_time<='"+date+" 23:59:59')";
                }
            }
            if (StringUtils.isNoneBlank(state)){
                if (state.equalsIgnoreCase("1")){
                    doctorSql +=" and d.id in(select d1.doctor_id from base_doctor_health_upload d1 where 1=1 and d1.create_time >='"+date+" 00:00:00' and d1.create_time<='"+date+" 23:59:59' and d1.health_code =1)  ";
                }else if (state.equalsIgnoreCase("2")){
                    doctorSql +=" and d.id in(select d1.doctor_id from base_doctor_health_upload d1 where 1=1 and d1.create_time >='"+date+" 00:00:00' and d1.create_time<='"+date+" 23:59:59' and (d1.health_code in(2,3) OR CAST(d1.temperature as DECIMAL)>=37.3 OR  d1.is_symptoms=1 OR d1.is_epidemic=1)) ";
                }
            }
            if (StringUtils.isNoneBlank(name)){
                doctorSql +=" and d.NAME  LIKE '%"+name+"%'";
            }
            List<Map<String,Object>> mapList = jdbcTemplate.queryForList(doctorSql);
            for (Map<String,Object> map:mapList){
                String id = map.get("id").toString();
                List<BaseDoctorHospitalDO> hospitalDOList = baseDoctorHospitalDao.findByDoctorCode(id);
                map.put("deptInfo",hospitalDOList);
                String sql = "select d1.health_code,d1.temperature,d1.is_symptoms as isSymptoms,d1.is_epidemic as isEpidemic,d1.id from base_doctor_health_upload d1 where 1=1 and d1.create_time >='"+date+" 00:00:00' and d1.create_time<='"+date+" 23:59:59' and d1.doctor_id = '"+id+"' order by d1.create_time desc ";
                List<Map<String,Object>> mapList1 = jdbcTemplate.queryForList(sql);
                if (mapList1!=null&&mapList1.size()!=0){
                    Map<String,Object> map1 = mapList1.get(0);
                    String healthCode = map1.get("health_code").toString();
                    Double temperature = Double.parseDouble(map1.get("temperature").toString());
                    String isSymptoms = map1.get("isSymptoms").toString();
                    String isEpidemic = map1.get("isEpidemic").toString();
                    if (healthCode.equalsIgnoreCase("2")||healthCode.equalsIgnoreCase("3")||
                            temperature>=37.3||isSymptoms.equalsIgnoreCase("1")||isEpidemic.equalsIgnoreCase("1")){
                        map.put("healthState","异常");
                    }else {
                        map.put("healthState","正常");
                    }
                    map.put("uploadState","已上报");
                    map.put("uploadId",map1.get("id").toString());
                }else {
                    map.put("healthState","未知");
                    map.put("uploadState","未上报");
                    map.put("uploadId","");
                }
            }
            JSONObject object = new JSONObject();
            object.put("time",date);
            object.put("list",mapList);
            array.add(object);
        }
        return array;
    }
    /**
     * 报表导出
     *
     * @param startDate
     * @param endDate
     * @return
     */
    public JSONArray selectListInfoExcelByTotal(OutputStream os,String startDate,String endDate) throws Exception {
        long days = DateUtil.getDays(endDate,startDate);
        List<String> list = new ArrayList<>();
        Date startTime = DateUtil.strToDateShort(startDate);
        for (int i=0;i<=days;i++){
            Date date = DateUtil.getPreDays(startTime,i);
            String str = DateUtil.dateToStrShort(date);
            list.add(str);
        }
        JSONArray array = new JSONArray();
        for (int i=0;i<list.size();i++){
            String date = list.get(i);
            String doctorSql ="SELECT\n" +
                    "\td.idcard as idcard,\n" +
                    "\td.name as name,\n" +
                    "\td.mobile as mobile,\n" +
                    "\td.id_type as idType,\n" +
                    "\tdh.dept_name as deptName,\n" +
                    "\tdhu.province_name as provinceName,\n" +
                    "\tdhu.city_name as cityName,\n" +
                    "\tdhu.town_name as townName,\n" +
                    "\tdhu.street_name as streetName,\n" +
                    "\tdhu.address as address,\n" +
                    "\tdhu.temperature as temperature,\n" +
                    "\tdhu.health_code as healthCode,\n" +
                    "\tdhu.tour_code as tourCode,\n" +
                    "\tdhu.is_symptoms as isSymtoms,\n" +
                    "\tdhu.is_epidemic as isEpidemic,\n" +
                    "\tdhu.is_outside as isOutside,\n" +
                    "\tdhu.is_nucleate as isNucleate,\n" +
                    "\tdhu.is_outside_high as isOutsideHigh \n" +
                    "FROM\n" +
                    "\tbase_doctor d\n" +
                    "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id\n" +
                    "LEFT JOIN  /*(SELECT\n" +
                    "\t\t*\n" +
                    "\tFROM\n" +
                    "\t\tbase_doctor_health_upload dhu1\n" +
                    "\tWHERE\n" +
                    "\t\tdhu1.create_time >= '"+date+" 00:00:00'\n" +
                    "\tAND dhu1.create_time <= '"+date+" 23:59:59'\n)*/  base_doctor_health_upload dhu ON dhu.doctor_id = d.id " +
                    " WHERE  dhu.create_time >= '"+date+" 00:00:00' AND dhu.create_time <= '"+date+" 23:59:59'" ;
            List<Map<String,Object>> mapList = jdbcTemplate.queryForList(doctorSql);
            JSONObject object = new JSONObject();
            object.put("time",date);
            object.put("list",mapList);
            array.add(object);
        }
        pushListWritePriceTotal(os,array,startDate,endDate);
        return array;
    }
    /**
     *
     * mergeCells(a,b,c,d)
     * a 单元格的列号
     b 单元格的行号
     c 从单元格[a,b]起,向左合并到c列
     d 从单元格[a,b]起,向下合并到d行
     * 收入日报导出
     * @param os
     * @param ls
     * @param startTime
     * @param endTime
     * @throws Exception
     */
    public void pushListWritePriceTotal(OutputStream os,JSONArray ls,String startTime, String endTime) throws Exception {
        WritableWorkbook wwb = jxl.Workbook.createWorkbook(os);
        try {
            WritableSheet ws;
            ws = wwb.createSheet("sheet", 1);
            String[] header = {"互联网综合服务平台健康上报情况","","","","","","","","","","","","","",""};//
            int k = 0;
            for (String h : header) {
                addCell(ws, 0, k, h);//表名,行,列,header
                k++;
            }
            String[] header1 = {"汇总日期:"+startTime+"至"+endTime,"","","","","","","","","","","","","",""};//
            int k1 = 0;
            for (String h : header1) {
                addCell(ws, 1, k1, h);//表名,行,列,header
                k1++;
            }
            String[] header2 = {"科室","姓名","电话","身份类别","上报状态","所在地","体温","健康码","行程码","异常症状","涉疫人员","14天内从外地返","核酸检测","14天内有同往人从中高风险返厦","健康状态"};//
            int k2 = 0;
            for (String h : header2) {
                addCell(ws, 2, k2, h);//表名,行,列,header
                k2++;
            }
            int j= 2;
            for (int i=0;i<ls.size();i++){
                JSONObject jsonObject = ls.getJSONObject(i);
                String time = jsonObject.getString("time");
                j = j+1;
                addCell(ws, j, 0, time);//表名,行,列,header
                ws.mergeCells(0,j,14,j);
                JSONArray array = jsonObject.getJSONArray("list");
                for (int z=0;z<array.size();z++){
                    j=j+z+1;
                    JSONObject object = array.getJSONObject(z);
                    addCell(ws, j+1, 0, object.getString("deptName"));//表名,行,列,header
                    addCell(ws, j+1, 1, object.getString("name"));//表名,行,列,header
                    addCell(ws, j+1, 2, object.getString("mobile"));//表名,行,列,header
                    if (StringUtils.isNoneBlank(object.getString("idType"))){
                        addCell(ws, j+1, 3, object.getString("idType"));//表名,行,列,header
                    }else {
                        addCell(ws, j+1, 3, "");//表名,行,列,header
                    }
                    if (StringUtils.isNoneBlank(object.getString("temperature"))){
                        addCell(ws, j+1, 4, "已上报");//表名,行,列,header
                        addCell(ws, j+1, 5, object.getString("address"));//表名,行,列,header
                        addCell(ws, j+1, 6, object.getString("temperature"));//表名,行,列,header
                        String healthCodeName="";
                        String healthStateName= "";
                        if (object.getString("healthCode").equalsIgnoreCase("1")){
                            healthCodeName="绿码";
                            healthStateName="正常";
                        }else if (object.getString("healthCode").equalsIgnoreCase("2")){
                            healthCodeName="红码";
                            healthStateName="异常";
                        }else if (object.getString("healthCode").equalsIgnoreCase("3")){
                            healthCodeName="黄码";
                            healthStateName="异常";
                        }
                        String tourCodeName = "";
                        if (object.getString("tourCode").equalsIgnoreCase("1")){
                            tourCodeName="带星";
                        }else if (object.getString("tourCode").equalsIgnoreCase("2")){
                            tourCodeName="不带星";
                        }
                        String isSymtomsName="";
                        if (object.getString("isSymtoms").equalsIgnoreCase("1")){
                            isSymtomsName="是";
                        }else if (object.getString("isSymtoms").equalsIgnoreCase("2")){
                            isSymtomsName="否";
                        }
                        String isEpidemicName="";
                        if (object.getString("isEpidemic").equalsIgnoreCase("1")){
                            isEpidemicName="是";
                        }else if (object.getString("isEpidemic").equalsIgnoreCase("2")){
                            isEpidemicName="否";
                        }
                        String isOutsideName="";
                        if (object.getString("isOutside").equalsIgnoreCase("1")){
                            isOutsideName="是";
                        }else if (object.getString("isOutside").equalsIgnoreCase("2")){
                            isOutsideName="否";
                        }
                        String isNucleateName="";
                        if (object.getString("isNucleate").equalsIgnoreCase("1")){
                            isNucleateName="未做";
                        }else if (object.getString("isNucleate").equalsIgnoreCase("2")){
                            isNucleateName="已做(院内)";
                        }else if (object.getString("isNucleate").equalsIgnoreCase("3")){
                            isNucleateName="已做(院外)";
                        }
                        String isOutsideHighName="";
                        if (object.getString("isOutsideHigh").equalsIgnoreCase("1")){
                            isOutsideHighName="是";
                        }else if (object.getString("isOutsideHigh").equalsIgnoreCase("2")){
                            isOutsideHighName="否";
                        }
                        addCell(ws, j+1, 7, healthCodeName);//表名,行,列,header
                        addCell(ws, j+1, 8, tourCodeName);//表名,行,列,header
                        addCell(ws, j+1, 9, isSymtomsName);//表名,行,列,header
                        addCell(ws, j+1, 10, isEpidemicName);//表名,行,列,header
                        addCell(ws, j+1, 11, isOutsideName);//表名,行,列,header
                        addCell(ws, j+1, 12, isNucleateName);//表名,行,列,header
                        addCell(ws, j+1, 13, isOutsideHighName);//表名,行,列,header
                        addCell(ws, j+1, 14, healthStateName);//表名,行,列,header
                    }else {
                        addCell(ws, j+1, 4, "未上报");//表名,行,列,header
                        addCell(ws, j+1, 5, "");//表名,行,列,header
                        addCell(ws, j+1, 6, "");//表名,行,列,header
                        addCell(ws, j+1, 7, "");//表名,行,列,header
                        addCell(ws, j+1, 8, "");//表名,行,列,header
                        addCell(ws, j+1, 9, "");//表名,行,列,header
                        addCell(ws, j+1, 10, "");//表名,行,列,header
                        addCell(ws, j+1, 11, "");//表名,行,列,header
                        addCell(ws, j+1, 12, "");//表名,行,列,header
                        addCell(ws, j+1, 13, "");//表名,行,列,header
                        addCell(ws, j+1, 14, "");//表名,行,列,header
                    }
                }
            }
            ws.mergeCells(0,0,14,0);
            ws.mergeCells(0,1,14,1);
            wwb.write();
            wwb.close();
        } catch (IOException e) {
            e.printStackTrace();
            if (wwb != null) wwb.close();
            throw e;
        }
    }
    //添加单元格内容
    public void addCell(WritableSheet ws, int row, int column, String data) throws WriteException {
        Label label = new Label(column, row, data);
        WritableCellFormat cellFormat = new WritableCellFormat();
        cellFormat.setAlignment(jxl.format.Alignment.CENTRE);
        cellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
        label.setCellFormat(cellFormat);
        ws.addCell(label);
    }
}

+ 7 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -1594,7 +1594,9 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                " h.dept_name AS \"deptName\","+
                " h.org_code AS \"orgCode\","+
                " h.org_name AS \"orgName\","+
                " t.photo AS \"hosptialphoto\""+
                " t.photo AS \"hosptialphoto\","+
                " d.id_type AS \"idType\","+
                " d.id_card_type AS \"idCardType\" "+
                " FROM " +
                " base_doctor d " +
                " JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
@ -4371,6 +4373,9 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            rs.put("popularity",doctorDO.getPopularity());
            rs.put("qrcode",doctorDO.getQrcode());
            rs.put("appletQrcode",doctorDO.getAppletQrCode());
            rs.put("idType",doctorDO.getIdType());
            rs.put("idCard",doctorDO.getIdcard());
            rs.put("idCardType",doctorDO.getIdCardType());
            List<Map<String,Object>> chargeDictDOLists = new ArrayList<>();
            String sqlCharge = "SELECT\n" +
                    "\tm.req_fee as \"twfzFee\",\n" +
@ -8679,6 +8684,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                room.setDeptName(outpatientDO.getDeptName());
                room.setDoctor(outpatientDO.getDoctor());
                room.setDoctorName(outpatientDO.getDoctorName());
                room.setReservationTime(outpatientDO.getRegisterDate());
                room.setConsultType(Integer.parseInt(outpatientDO.getType()));
                room.setChargeType(chargeType);
            }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 4 - 2
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java


+ 20 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorDO.java

@ -300,6 +300,26 @@ public class BaseDoctorDO extends UuidIdentityEntityWithOperator {
    private Integer sort;//排序
    private String idCardType;//证件类别
    private String idType;//身份类别
    public String getIdCardType() {
        return idCardType;
    }
    public void setIdCardType(String idCardType) {
        this.idCardType = idCardType;
    }
    public String getIdType() {
        return idType;
    }
    public void setIdType(String idType) {
        this.idType = idType;
    }
    @Column(name = "sort")
    public Integer getSort() {
        return sort;

+ 439 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/healthUpload/BaseDoctorHealthUploadDO.java

@ -0,0 +1,439 @@
package com.yihu.jw.entity.healthUpload;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * 医生成员表
 *
 * @author Administrator on  2018年09月05日
 *
 */
@Entity
@Table(name = "base_doctor_health_upload")
public class BaseDoctorHealthUploadDO extends UuidIdentityEntityWithOperator {
    public String provinceName;
    public String cityName;
    public String townName;
    public String streetName;
    public String address;
    public String temperature;
    public Integer healthCode;
    public String healthCodeUrl;
    public Integer tourCode;
    public String tourCodeUrl;
    public Integer isSymptoms;
    public String abnormalSymptoms;
    public Integer isEpidemic;
    public String epidemicPerson;
    public Integer  isOutside;
    public String outsideProvinceCode;
    public String outsideProvinceName;
    public String outsideCityCode;
    public String outsideCityName;
    public String outsideTownCode;
    public String outsideTownName;
    public String outsideStreetName;
    public String outsideStreetCode;
    public String outsideAddress;
    public Date outsideDate;
    public Integer isNucleate;
    public String nucleateCodeUrl;
    public Integer  isOutsideHigh;
    public String outsideHighProvinceCode;
    public String outsideHighProvinceName;
    public String outsideHighCityCode;
    public String outsideHighCityName;
    public String outsideHighTownCode;
    public String outsideHighTownName;
    public String outsideHighStreetName;
    public String outsideHighStreetCode;
    public String outsideHighAddress;
    public Date outsideHighDate;
    public String doctorId;
    public String doctorName;
    public String idCard;
    public String mobile;
    public String consumer;
    public String consumerName;
    public String healthCodeDesc;
    public Integer outsideHighNucleate;
    public Integer getOutsideHighNucleate() {
        return outsideHighNucleate;
    }
    public void setOutsideHighNucleate(Integer outsideHighNucleate) {
        this.outsideHighNucleate = outsideHighNucleate;
    }
    public String getHealthCodeDesc() {
        return healthCodeDesc;
    }
    public void setHealthCodeDesc(String healthCodeDesc) {
        this.healthCodeDesc = healthCodeDesc;
    }
    public String getNucleateCodeUrl() {
        return nucleateCodeUrl;
    }
    public void setNucleateCodeUrl(String nucleateCodeUrl) {
        this.nucleateCodeUrl = nucleateCodeUrl;
    }
    public String getProvinceName() {
        return provinceName;
    }
    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
    public String getCityName() {
        return cityName;
    }
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
    public String getTownName() {
        return townName;
    }
    public void setTownName(String townName) {
        this.townName = townName;
    }
    public String getStreetName() {
        return streetName;
    }
    public void setStreetName(String streetName) {
        this.streetName = streetName;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getTemperature() {
        return temperature;
    }
    public void setTemperature(String temperature) {
        this.temperature = temperature;
    }
    public Integer getHealthCode() {
        return healthCode;
    }
    public void setHealthCode(Integer healthCode) {
        this.healthCode = healthCode;
    }
    public String getHealthCodeUrl() {
        return healthCodeUrl;
    }
    public void setHealthCodeUrl(String healthCodeUrl) {
        this.healthCodeUrl = healthCodeUrl;
    }
    public Integer getTourCode() {
        return tourCode;
    }
    public void setTourCode(Integer tourCode) {
        this.tourCode = tourCode;
    }
    public String getTourCodeUrl() {
        return tourCodeUrl;
    }
    public void setTourCodeUrl(String tourCodeUrl) {
        this.tourCodeUrl = tourCodeUrl;
    }
    public Integer getIsSymptoms() {
        return isSymptoms;
    }
    public void setIsSymptoms(Integer isSymptoms) {
        this.isSymptoms = isSymptoms;
    }
    public String getAbnormalSymptoms() {
        return abnormalSymptoms;
    }
    public void setAbnormalSymptoms(String abnormalSymptoms) {
        this.abnormalSymptoms = abnormalSymptoms;
    }
    public Integer getIsEpidemic() {
        return isEpidemic;
    }
    public void setIsEpidemic(Integer isEpidemic) {
        this.isEpidemic = isEpidemic;
    }
    public String getEpidemicPerson() {
        return epidemicPerson;
    }
    public void setEpidemicPerson(String epidemicPerson) {
        this.epidemicPerson = epidemicPerson;
    }
    public Integer getIsOutside() {
        return isOutside;
    }
    public void setIsOutside(Integer isOutside) {
        this.isOutside = isOutside;
    }
    public String getOutsideProvinceCode() {
        return outsideProvinceCode;
    }
    public void setOutsideProvinceCode(String outsideProvinceCode) {
        this.outsideProvinceCode = outsideProvinceCode;
    }
    public String getOutsideProvinceName() {
        return outsideProvinceName;
    }
    public void setOutsideProvinceName(String outsideProvinceName) {
        this.outsideProvinceName = outsideProvinceName;
    }
    public String getOutsideCityCode() {
        return outsideCityCode;
    }
    public void setOutsideCityCode(String outsideCityCode) {
        this.outsideCityCode = outsideCityCode;
    }
    public String getOutsideCityName() {
        return outsideCityName;
    }
    public void setOutsideCityName(String outsideCityName) {
        this.outsideCityName = outsideCityName;
    }
    public String getOutsideTownCode() {
        return outsideTownCode;
    }
    public void setOutsideTownCode(String outsideTownCode) {
        this.outsideTownCode = outsideTownCode;
    }
    public String getOutsideTownName() {
        return outsideTownName;
    }
    public void setOutsideTownName(String outsideTownName) {
        this.outsideTownName = outsideTownName;
    }
    public String getOutsideStreetName() {
        return outsideStreetName;
    }
    public void setOutsideStreetName(String outsideStreetName) {
        this.outsideStreetName = outsideStreetName;
    }
    public String getOutsideStreetCode() {
        return outsideStreetCode;
    }
    public void setOutsideStreetCode(String outsideStreetCode) {
        this.outsideStreetCode = outsideStreetCode;
    }
    public String getOutsideAddress() {
        return outsideAddress;
    }
    public void setOutsideAddress(String outsideAddress) {
        this.outsideAddress = outsideAddress;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "outside_date", nullable = false, length = 0,updatable = false)
    public Date getOutsideDate() {
        return outsideDate;
    }
    public void setOutsideDate(Date outsideDate) {
        this.outsideDate = outsideDate;
    }
    public Integer getIsNucleate() {
        return isNucleate;
    }
    public void setIsNucleate(Integer isNucleate) {
        this.isNucleate = isNucleate;
    }
    public Integer getIsOutsideHigh() {
        return isOutsideHigh;
    }
    public void setIsOutsideHigh(Integer isOutsideHigh) {
        this.isOutsideHigh = isOutsideHigh;
    }
    public String getOutsideHighProvinceCode() {
        return outsideHighProvinceCode;
    }
    public void setOutsideHighProvinceCode(String outsideHighProvinceCode) {
        this.outsideHighProvinceCode = outsideHighProvinceCode;
    }
    public String getOutsideHighProvinceName() {
        return outsideHighProvinceName;
    }
    public void setOutsideHighProvinceName(String outsideHighProvinceName) {
        this.outsideHighProvinceName = outsideHighProvinceName;
    }
    public String getOutsideHighCityCode() {
        return outsideHighCityCode;
    }
    public void setOutsideHighCityCode(String outsideHighCityCode) {
        this.outsideHighCityCode = outsideHighCityCode;
    }
    public String getOutsideHighCityName() {
        return outsideHighCityName;
    }
    public void setOutsideHighCityName(String outsideHighCityName) {
        this.outsideHighCityName = outsideHighCityName;
    }
    public String getOutsideHighTownCode() {
        return outsideHighTownCode;
    }
    public void setOutsideHighTownCode(String outsideHighTownCode) {
        this.outsideHighTownCode = outsideHighTownCode;
    }
    public String getOutsideHighTownName() {
        return outsideHighTownName;
    }
    public void setOutsideHighTownName(String outsideHighTownName) {
        this.outsideHighTownName = outsideHighTownName;
    }
    public String getOutsideHighStreetName() {
        return outsideHighStreetName;
    }
    public void setOutsideHighStreetName(String outsideHighStreetName) {
        this.outsideHighStreetName = outsideHighStreetName;
    }
    public String getOutsideHighStreetCode() {
        return outsideHighStreetCode;
    }
    public void setOutsideHighStreetCode(String outsideHighStreetCode) {
        this.outsideHighStreetCode = outsideHighStreetCode;
    }
    public String getOutsideHighAddress() {
        return outsideHighAddress;
    }
    public void setOutsideHighAddress(String outsideHighAddress) {
        this.outsideHighAddress = outsideHighAddress;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "outside_high_date", nullable = false, length = 0,updatable = false)
    public Date getOutsideHighDate() {
        return outsideHighDate;
    }
    public void setOutsideHighDate(Date outsideHighDate) {
        this.outsideHighDate = outsideHighDate;
    }
    public String getDoctorId() {
        return doctorId;
    }
    public void setDoctorId(String doctorId) {
        this.doctorId = doctorId;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getIdCard() {
        return idCard;
    }
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getConsumer() {
        return consumer;
    }
    public void setConsumer(String consumer) {
        this.consumer = consumer;
    }
    public String getConsumerName() {
        return consumerName;
    }
    public void setConsumerName(String consumerName) {
        this.consumerName = consumerName;
    }
}

+ 95 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/healthUpload/BaseDoctorMemberDO.java

@ -0,0 +1,95 @@
package com.yihu.jw.entity.healthUpload;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
/**
 * 医生成员表
 *
 * @author Administrator on  2018年09月05日
 *
 */
@Entity
@Table(name = "base_doctor_member")
public class BaseDoctorMemberDO extends UuidIdentityEntityWithOperator {
    private String doctorId;//医生id
    private String memberId;//成员id
    private Integer del;//删除标志(1正常,0删除)
    private Integer memberRelation;//成员关系
    private BaseDoctorDO baseDoctorDO;
    private String count;
    private List<BaseDoctorHospitalDO> doctorHospitalDOS;
    @Transient
    public List<BaseDoctorHospitalDO> getDoctorHospitalDOS() {
        return doctorHospitalDOS;
    }
    public void setDoctorHospitalDOS(List<BaseDoctorHospitalDO> doctorHospitalDOS) {
        this.doctorHospitalDOS = doctorHospitalDOS;
    }
    @Transient
    public String getCount() {
        return count;
    }
    public void setCount(String count) {
        this.count = count;
    }
    @Transient
    public BaseDoctorDO getBaseDoctorDO() {
        return baseDoctorDO;
    }
    public void setBaseDoctorDO(BaseDoctorDO baseDoctorDO) {
        this.baseDoctorDO = baseDoctorDO;
    }
    public String getDoctorId() {
        return doctorId;
    }
    public void setDoctorId(String doctorId) {
        this.doctorId = doctorId;
    }
    public String getMemberId() {
        return memberId;
    }
    public void setMemberId(String memberId) {
        this.memberId = memberId;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
    public Integer getMemberRelation() {
        return memberRelation;
    }
    public void setMemberRelation(Integer memberRelation) {
        this.memberRelation = memberRelation;
    }
}

+ 1 - 1
gateway/ag-basic/pom.xml

@ -12,7 +12,7 @@
    <artifactId>ag-basic</artifactId>
    <version>${parent.version}</version>
    <packaging>jar</packaging>
    <packaging>war</packaging>
    <dependencies>
        <!-- 支持Tomcat启动 -->

+ 4 - 2
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/PostFilter.java

@ -79,6 +79,7 @@ public class PostFilter extends ZuulFilter {
            bytes = StreamUtils.copyToByteArray(stream);
        }
        String body = new String(bytes,"UTF8");
        /*String serviceId="";
        String responseCode="";
        String exceptionType="";
@ -126,7 +127,7 @@ public class PostFilter extends ZuulFilter {
        }catch (Exception e){
            e.printStackTrace();
        }*/
        logger.info("body",body);
        logger.info("body",body+"=====status====="+ctx.getResponseStatusCode());
        JSONObject object = new JSONObject();
        object.put("status","200");
        object.put("data", AesEncryptUtils.encrypt(body));
@ -148,7 +149,8 @@ public class PostFilter extends ZuulFilter {
        }else {
            RequestContext.getCurrentContext().setResponseBody(body);
        }
        logger.info(ctx.getResponseBody()+"");
        logger.info("请求返回参数:"+ctx.getResponseBody()+"");
        } catch (Exception e) {
            e.printStackTrace();
        }

+ 8 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java

@ -1022,6 +1022,14 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
                    patient1.setUpdateTime(new Date());
                    patient1.setBirthday(IdCardUtil.getBirthdayForIdcard(idcard));
                    patient1 = patientDao.save(patient1);
                    List<BasePatientWechatDo> patientWechatDoList = basePatientWechatDao.findByWechatIdAndPatientId("xm_hcyy_wx",patient1.getId());
                    basePatientWechatDao.delete(patientWechatDoList);
                    BasePatientWechatDo patientWechatDo = new BasePatientWechatDo();
                    patientWechatDo.setOpenid(openid);
                    patientWechatDo.setPatientId(patient1.getId());
                    patientWechatDo.setWechatId("xm_hcyy_wx");
                    patientWechatDo.setCreateTime(new Date());
                    basePatientWechatDao.save(patientWechatDo);
                    logger.info("结束同步患者数据");
                }
            }

+ 1 - 1
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -270,7 +270,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
            if(org.apache.commons.lang3.StringUtils.isNotBlank(key)&& org.apache.commons.lang3.StringUtils.isNotBlank(text)){
                if(!verifyCaptcha(key,text)){
                    throw new ImgCaptchaException("img_captcha error");
                    throw new Exception("img_captcha error");
                }
            }
            logger.info("login:登录进入2");

+ 8 - 7
server/svr-authentication/src/main/java/com/yihu/jw/security/service/HcyyService.java

@ -17,6 +17,7 @@ import com.yihu.jw.security.utils.WebserviceUtil;
import com.yihu.utils.security.MD5;
import net.sf.json.xml.XMLSerializer;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -51,7 +52,7 @@ public class HcyyService {
    @Autowired
    private OauthRsaKeyDao rsaKeyDao;
    private static String caKey ="";
    private static String caKey ="bvvsf3JA0mUXMU+mVnMaOQ==";
    static {
        System.setProperty("kasite.appId", APP_ID);
        System.setProperty("kasite.appSecret", APP_SECRET);
@ -84,7 +85,7 @@ public class HcyyService {
        logger.info("url"+url);
        List<WlyyHospitalSysDictDO> xzzxNamespaces =  wlyyHospitalSysDictDao.findByDictName("hcyyCaNamespace");
        List<WlyyHospitalSysDictDO> xzzxNamespaces =  wlyyHospitalSysDictDao.findByDictName("hcyyNamespace");
        String xzzxNamespace = xzzxNamespaces.get(0).getDictCode();
@ -120,7 +121,7 @@ public class HcyyService {
                "   <callOperator></callOperator> " +
                "   <certificate>"+caKey+"</certificate> " +
                "</root>";
        String condition ="{\"apiName\":\""+apiCode+"\",\"version\":\"v1\",\"jsonData\":\""+jsonData+"\"}";
        String condition ="{\"apiName\":\""+apiCode+"\",\"version\":\"v1\",\"jsonData\":\""+ StringEscapeUtils.escapeJson(jsonData)+"\"}";
        String msgBody ="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<root>"+condition+"</root>";
@ -147,7 +148,7 @@ public class HcyyService {
     * @throws Exception
     */
    public String token() throws Exception {
        String businessSystemId = "";
        String businessSystemId = "1518527107887804418";
        Long timestamp = new Date().getTime();
        List<OauthRsaKeyDO> oauthRsaKeyDOs = rsaKeyDao.findByCodeAndAppId("hcyyCa","hcyyCa");
        if (oauthRsaKeyDOs==null||oauthRsaKeyDOs.size()==0){
@ -155,11 +156,11 @@ public class HcyyService {
        }
        OauthRsaKeyDO oauthRsaKeyDO = oauthRsaKeyDOs.get(0);
        String res = "businessSystemId="+businessSystemId+"&timestamp="+timestamp;
        String signature = RSAEncrypt.encrypt(res,oauthRsaKeyDO.getPrivateKey());
        String signature = RSAEncrypt.encrypt(res,oauthRsaKeyDO.getPublicKey());
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("businessSystemId",businessSystemId);
        jsonObject.put("timestamp",timestamp);
        jsonObject.put("signature",signature);
        jsonObject.put("timestamp",timestamp+"");
        jsonObject.put("signature","");
        String result = XMCA_DCS_UnifiedInterface("获取访问令牌接口","authorize/token",jsonObject.toJSONString());
        if (StringUtils.isNoneBlank(result)){
            JSONObject object = JSONObject.parseObject(result);

+ 12 - 12
server/svr-authentication/src/main/java/com/yihu/jw/security/utils/RSAEncrypt.java

@ -85,17 +85,17 @@ public class RSAEncrypt {
    }
//    public static void main(String[] args) throws Exception {
//        //生成公钥和私钥
//        Map<Integer, String> keyMap = genKeyPair();
//        //加密字符串
//        String message = "test";
//        System.out.println("随机生成的公钥为:" + keyMap.get(0));
//        System.out.println("随机生成的私钥为:" + keyMap.get(1));
//        String messageEn = encrypt(message,keyMap.get(0));
//        System.out.println(message + "\t加密后的字符串为:" + messageEn);
//        String messageDe = decrypt(messageEn,keyMap.get(1));
//        System.out.println("还原后的字符串为:" + messageDe);
//    }
    public static void main(String[] args) throws Exception {
        //生成公钥和私钥
        Map<Integer, String> keyMap = genKeyPair();
        //加密字符串
        String message = "test";
        System.out.println("随机生成的公钥为:" + keyMap.get(0));
        System.out.println("随机生成的私钥为:" + keyMap.get(1));
        String messageEn = encrypt(message,keyMap.get(0));
        System.out.println(message + "\t加密后的字符串为:" + messageEn);
        String messageDe = decrypt(messageEn,keyMap.get(1));
        System.out.println("还原后的字符串为:" + messageDe);
    }
}

+ 291 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/healthUpload/HealthUploadPoint.java

@ -0,0 +1,291 @@
package com.yihu.jw.hospital.endpoint.healthUpload;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.healthUpload.BaseDoctorHealthUploadDO;
import com.yihu.jw.entity.healthUpload.BaseDoctorMemberDO;
import com.yihu.jw.entity.hospital.prescription.BaseNationalDrugDictDO;
import com.yihu.jw.healthUpload.service.BaseDoctorHealthUploadService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
/**
 * @author wangzhinan
 *
 * Created at 20211003
 */
@RestController
@RequestMapping(value = "healthUpload")
@Api(value = "马銮湾医院健康上报功能", description = "马銮湾医院健康上报功能")
public class HealthUploadPoint extends EnvelopRestEndpoint {
    private static final Logger logger = LoggerFactory.getLogger(HealthUploadPoint.class);
    @Autowired
    private BaseDoctorHealthUploadService baseDoctorHealthUploadService;
    @PostMapping(value = "saveAndCreateMember")
    @ApiOperation(value = "新增医生成员关系")
    public ListEnvelop saveAndCreateMember(@ApiParam(name = "doctorId", value = "医生id")
                                              @RequestParam(value = "doctorId", required = true) String doctorId,
                                           @ApiParam(name = "ids", value = "成员id,逗号隔开")
                                          @RequestParam(value = "ids", required = true) String ids) {
        try {
            List<BaseDoctorMemberDO> doctorHealthUploadDOS = baseDoctorHealthUploadService.saveAndCreateMember(doctorId,ids);
            return success(doctorHealthUploadDOS);
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "selectByDoctorId")
    @ApiOperation(value = "查询医生的成员列表")
    public ListEnvelop selectByDoctorId(@ApiParam(name = "doctorId", value = "医生id")
                                           @RequestParam(value = "doctorId", required = true) String doctorId) {
        try {
            List<BaseDoctorMemberDO> memberDOList = baseDoctorHealthUploadService.selectByDoctorId(doctorId);
            return success(memberDOList);
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "selectCountByDoctorId")
    @ApiOperation(value = "查询医生的成员列表带有已上报次数")
    public ListEnvelop selectCountByDoctorId(@ApiParam(name = "doctorId", value = "医生id")
                                        @RequestParam(value = "doctorId", required = true) String doctorId) {
        try {
            List<BaseDoctorMemberDO> memberDOList = baseDoctorHealthUploadService.selectCountByDoctorId(doctorId);
            return success(memberDOList);
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "selectById")
    @ApiOperation(value = "查询某一个成员信息")
    public ObjEnvelop selectById(@ApiParam(name = "id", value = "成员列表id")
                                             @RequestParam(value = "id", required = true) String id) {
        try {
            BaseDoctorMemberDO memberDO = baseDoctorHealthUploadService.selectById(id);
            return success(memberDO);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = "delDoctorMember")
    @ApiOperation(value = "删除某个成员")
    public ObjEnvelop delDoctorMember(@ApiParam(name = "id", value = "成员列表id")
                                 @RequestParam(value = "id", required = true) String id) {
        try {
            BaseDoctorMemberDO memberDO = baseDoctorHealthUploadService.delDoctorMember(id);
            return success(memberDO);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = "createHealthUploadInfo")
    @ApiOperation(value = "提交健康信息")
    public ObjEnvelop createHealthUploadInfo(@ApiParam(name = "jsonData", value = "健康信息实体")
                                      @RequestParam(value = "jsonData", required = true) String jsonData) {
        try {
            BaseDoctorHealthUploadDO healthUploadDO = objectMapper.readValue(jsonData, BaseDoctorHealthUploadDO.class);
            healthUploadDO = baseDoctorHealthUploadService.createHealthUploadInfo(healthUploadDO);
            return success(healthUploadDO);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = "selectHealthUploadInfoByDoctorId")
    @ApiOperation(value = "查询成员的健康上报记录")
    public MixEnvelop selectHealthUploadInfoByDoctorId(@ApiParam(name = "doctorId", value = "医生id")
                                                        @RequestParam(value = "doctorId", required = true) String doctorId,
                                                       @ApiParam(name = "startDate", value = "开始时间")
                                                       @RequestParam(value = "startDate", required = false) String startDate,
                                                       @ApiParam(name = "endDate", value = "结束时间")
                                                           @RequestParam(value = "endDate", required = false) String endDate,
                                                       @ApiParam(name = "page", value = "页码")
                                                           @RequestParam(value = "page", required = false) Integer page,
                                                       @ApiParam(name = "pageSize", value = "大小")
                                                           @RequestParam(value = "pageSize", required = false) Integer pageSize) {
        try {
            MixEnvelop mixEnvelop = baseDoctorHealthUploadService.selectHealthUploadInfoByDoctorId(doctorId,startDate,endDate,page,pageSize);
            return mixEnvelop;
        } catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @GetMapping(value = "selectHealthInfoById")
    @ApiOperation(value = "根据id查询健康上报情况")
    public ObjEnvelop selectHealthUploadInfoByDoctorId(@ApiParam(name = "id", value = "医生id")
                                                       @RequestParam(value = "id", required = true) String id) {
        try {
            BaseDoctorHealthUploadDO healthUploadDO = baseDoctorHealthUploadService.selectHealthInfoById(id);
            return success(healthUploadDO);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = "saveDoctorInfo")
    @ApiOperation(value = "新增加医生信息")
    public ObjEnvelop saveDoctorInfo(@ApiParam(name = "photo", value = "医生头像")
                                                       @RequestParam(value = "photo", required = false) String photo,
                                                       @ApiParam(name = "name", value = "姓名")
                                                       @RequestParam(value = "name", required = false) String name,
                                                       @ApiParam(name = "idcard", value = "证件号码")
                                                       @RequestParam(value = "idcard", required = false) String idcard,
                                                       @ApiParam(name = "sex", value = "性别")
                                                       @RequestParam(value = "sex", required = false) String sex,
                                                       @ApiParam(name = "mobile", value = "手机号")
                                                       @RequestParam(value = "mobile", required = false) String mobile,
                                                        @ApiParam(name = "dept", value = "科室编码")
                                                         @RequestParam(value = "dept", required = false) String dept,
                                                         @ApiParam(name = "deptName", value = "科室名称")
                                                             @RequestParam(value = "deptName", required = false) String deptName,
                                                         @ApiParam(name = "idCardType", value = "证件类别")
                                                             @RequestParam(value = "idCardType", required = false) String idCardType,
                                                         @ApiParam(name = "idType", value = "身份类别")
                                                             @RequestParam(value = "idType", required = false) String idType,
                                     @ApiParam(name = "id", value = "医生id")
                                         @RequestParam(value = "id", required = false) String id) {
        try {
             BaseDoctorDO baseDoctorDO = baseDoctorHealthUploadService.saveDoctorInfo(id,photo,name,idcard,sex,mobile,dept,deptName,idCardType,idType);
            return success(baseDoctorDO);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    /**
     *
     * @param dept
     * @param level
     * @param doctorId
     * @return
     */
    @GetMapping(value = "selectHealthByRole")
    @ApiOperation(value = "医生首页")
    public ObjEnvelop selectHeaderTotal(@ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                        @RequestParam(value = "dept", required = false) String dept,
                                        @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                        @RequestParam(value = "level", required = false) Integer level,
                                        @ApiParam(name = "doctorId", value = "上报状态")
                                        @RequestParam(value = "doctorId", required = false) String doctorId) {
        try {
            JSONObject jsonObject = baseDoctorHealthUploadService.selectHealthByRole(dept,level,doctorId);
            return success(jsonObject);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = "selectHeaderTotal")
    @ApiOperation(value = "首页统计")
    public ObjEnvelop selectHeaderTotal(@ApiParam(name = "dept", value = "科室code")
                                                       @RequestParam(value = "dept", required = true) String dept,
                                                       @ApiParam(name = "idType", value = "身份类别")
                                                       @RequestParam(value = "idType", required = false) String idType,
                                                       @ApiParam(name = "status", value = "上报状态")
                                                       @RequestParam(value = "status", required = false) String status,
                                                       @ApiParam(name = "state", value = "健康状态")
                                                       @RequestParam(value = "state", required = false) String state,
                                                       @ApiParam(name = "startDate", value = "开始时间")
                                                       @RequestParam(value = "startDate", required = false) String startDate,
                                        @ApiParam(name = "endDate", value = "结束时间")
                                            @RequestParam(value = "endDate", required = false) String endDate) {
        try {
            JSONObject jsonObject = baseDoctorHealthUploadService.selectHeaderTotal(dept,idType,status,state,startDate,endDate);
            return success(jsonObject);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = "selectListByTotal")
    @ApiOperation(value = "获取列表的时间及数量")
    public ListEnvelop selectListByTotal(@ApiParam(name = "dept", value = "科室code")
                                        @RequestParam(value = "dept", required = false) String dept,
                                        @ApiParam(name = "idType", value = "身份类别")
                                        @RequestParam(value = "idType", required = false) String idType,
                                        @ApiParam(name = "status", value = "上报状态")
                                        @RequestParam(value = "status", required = false) String status,
                                        @ApiParam(name = "state", value = "健康状态")
                                        @RequestParam(value = "state", required = false) String state,
                                        @ApiParam(name = "startDate", value = "开始时间")
                                        @RequestParam(value = "startDate", required = false) String startDate,
                                         @ApiParam(name = "endDate", value = "结束时间")
                                             @RequestParam(value = "endDate", required = false) String endDate,
                                         @ApiParam(name = "name", value = "名字搜索")
                                             @RequestParam(value = "name", required = false) String name) {
        try {
            JSONArray jsonArray = baseDoctorHealthUploadService.selectListByTotal(dept,idType,status,state,startDate,endDate,name);
            return success(jsonArray);
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "selectListInfoByTotal")
    @ApiOperation(value = "获取列表的具体人员信息")
    public ListEnvelop selectListInfoByTotal(@ApiParam(name = "dept", value = "科室code")
                                         @RequestParam(value = "dept", required = false) String dept,
                                         @ApiParam(name = "idType", value = "身份类别")
                                         @RequestParam(value = "idType", required = false) String idType,
                                         @ApiParam(name = "status", value = "上报状态")
                                         @RequestParam(value = "status", required = false) String status,
                                         @ApiParam(name = "state", value = "健康状态")
                                         @RequestParam(value = "state", required = false) String state,
                                         @ApiParam(name = "startDate", value = "开始时间")
                                         @RequestParam(value = "startDate", required = false) String startDate,
                                         @ApiParam(name = "endDate", value = "结束时间")
                                         @RequestParam(value = "endDate", required = false) String endDate,
                                             @ApiParam(name = "name", value = "具体医生姓名")
                                                 @RequestParam(value = "name", required = false) String name) {
        try {
            JSONArray jsonArray = baseDoctorHealthUploadService.selectListInfoByTotal(dept,idType,status,state,startDate,endDate,name);
            return success(jsonArray);
        } catch (Exception e) {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "pushListWriteHealthInfo")
    @ApiOperation(value = "健康上报数据导出", notes = "健康上报数据导出")
    public Envelop pushListWrite(@ApiParam(name = "startDate", value = "开始时间")
                                 @RequestParam(value = "startDate", required = false) String startDate,
                                 @ApiParam(name = "endDate", value = "结束时间")
                                 @RequestParam(value = "endDate", required = false) String endDate,
                                 HttpServletResponse response) throws Exception {
        try{
            response.setContentType("octets/stream");
            response.setHeader("Content-Disposition", "attachment; filename=" + new String("pushDataList.xls"));
            OutputStream os = response.getOutputStream();
            return success(baseDoctorHealthUploadService.selectListInfoExcelByTotal(os, startDate,endDate));
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
}