Selaa lähdekoodia

投诉建议修改

wangjun 3 vuotta sitten
vanhempi
commit
4fb05ccfbd

+ 4 - 0
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintDao.java

@ -9,5 +9,9 @@ import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface BaseComplaintDao extends PagingAndSortingRepository<BaseComplaintDO, String>, JpaSpecificationExecutor<BaseComplaintDO> {
    @Query("select count(1) from BaseComplaintDO t where t.isDel='1' and t.status=?1 and t.complaintId=?2")
    Integer getCountByStatusAndComplaintId(String status,String complatientId);
    @Query("select count(1) from BaseComplaintDO t where t.isDel='1' and t.status=?1 ")
    Integer getCountByStatus(String status);
}

+ 1 - 1
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintDictDao.java

@ -11,7 +11,7 @@ import java.util.List;
public interface BaseComplaintDictDao extends PagingAndSortingRepository<BaseComplaintDictDO, String>, JpaSpecificationExecutor<BaseComplaintDictDO> {
    @Query("from BaseComplaintDictDO t where t.isDel='1' and t.id=?1")
    BaseComplaintDictDO findById(String id);
    @Query("from BaseComplaintDictDO t where t.isDel='1' and t.name=?1")
    @Query("from BaseComplaintDictDO t where t.isDel='1' and t.name like %?1%")
    List<BaseComplaintDictDO> findByName(String name);
    @Query("from BaseComplaintDictDO t where t.isDel='1'")
    List<BaseComplaintDictDO> findByAll();

+ 9 - 0
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintDoctorDao.java

@ -6,9 +6,18 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface BaseComplaintDoctorDao extends PagingAndSortingRepository<BaseComplaintDoctorDO, String>, JpaSpecificationExecutor<BaseComplaintDoctorDO> {
    @Query("from BaseComplaintDoctorDO t where t.isDel='1' and t.id=?1")
    BaseComplaintDoctorDO findByDelAndId(String id);
    @Query("from BaseComplaintDoctorDO t where t.isDel='1' and t.doctor=?1")
    BaseComplaintDoctorDO findbyDoctorAndDel(String doctor);
    @Query("from BaseComplaintDoctorDO t where t.isDel='1' and t.doctor=?1 and t.complaintId=?2")
    BaseComplaintDoctorDO findbyDoctorAndDelAndType(String doctor,String complaintType);
    @Query("from BaseComplaintDoctorDO t where t.isDel='1' and t.complaintId=?1")
    List<BaseComplaintDoctorDO> findbyComplaintId(String complaintId);
}

+ 5 - 0
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintOperateDao.java

@ -3,7 +3,12 @@ package com.yihu.jw.complaint;
import com.yihu.jw.entity.base.complaint.BaseComplaintDoctorDO;
import com.yihu.jw.entity.base.complaint.BaseComplaintOperateLogDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface BaseComplaintOperateDao  extends PagingAndSortingRepository<BaseComplaintOperateLogDO, String>, JpaSpecificationExecutor<BaseComplaintOperateLogDO> {
    @Query("from BaseComplaintOperateLogDO t where t.operateFrom=?1")
    List<BaseComplaintOperateLogDO> findbyOperateFrom(String doctor);
}

+ 288 - 47
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintService.java

@ -1,5 +1,8 @@
package com.yihu.jw.complaint;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
@ -13,17 +16,20 @@ 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.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.StringUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.jw.wechat.enterprise.EnterpriseService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
@Service
public class BaseComplaintService {
@ -47,6 +53,14 @@ public class BaseComplaintService {
    private BaseComplaintOperateDao baseComplaintOperateDao;
    @Autowired
    private BaseDoctorRoleDao baseDoctorRoleDao;
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private EnterpriseService enterpriseService;
    @Value("${wechat.id}")
    private String wxId;
    @Value("${wechat.flag}")
    private boolean flag;
    //修改新增
    public BaseComplaintDictDO createOrUpdateDict(String id, String name) {
@ -91,38 +105,40 @@ public class BaseComplaintService {
    }
    //新增投诉管理医生
    public BaseComplaintDoctorDO createOrUpdateComplainDoctor(String id, String complaintId, String doctor, String deptCode) {
        String deptName = "";
        String doctorName = "";
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
        if (null != baseDoctorDO) {
            doctorName = baseDoctorDO.getName();
        }
        List<BaseDoctorHospitalDO> baseDoctorHospitalDO = baseDoctorHospitalDao.findByDeptCodeDoctorCode(deptCode, doctor);
        if (baseDoctorHospitalDO != null && baseDoctorHospitalDO.size() > 0) {
            deptName = baseDoctorHospitalDO.get(0).getDeptName();
        }
        BaseComplaintDoctorDO baseComplaintDoctorDO = new BaseComplaintDoctorDO();
        if (StringUtils.isNoneBlank(id)) {
            baseComplaintDoctorDO = baseComplaintDoctorDao.findByDelAndId(id);
            baseComplaintDoctorDO.setDept(deptCode);
            baseComplaintDoctorDO.setDeptName(deptName);
            baseComplaintDoctorDO.setComplaintId(complaintId);
            baseComplaintDoctorDO.setDoctor(doctor);
            baseComplaintDoctorDO.setDoctorName(doctorName);
            baseComplaintDoctorDO.setUpdateTime(new Date());
        } else {
            baseComplaintDoctorDO.setDept(deptCode);
            baseComplaintDoctorDO.setDeptName(deptName);
            baseComplaintDoctorDO.setComplaintId(complaintId);
            baseComplaintDoctorDO.setDoctor(doctor);
            baseComplaintDoctorDO.setDoctorName(doctorName);
            baseComplaintDoctorDO.setIsDel("1");
            baseComplaintDoctorDO.setCreateTime(new Date());
        }
        return baseComplaintDoctorDao.save(baseComplaintDoctorDO);
    @Transactional
    public void createOrUpdateComplainDoctor(String id, String complaintId, String doctorList) throws Exception {
        JSONArray jsonArray = JSON.parseArray(doctorList);
        for (int i=0;i<jsonArray.size();i++){
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String doctor = jsonObject.getString("doctor");
            String deptCode = jsonObject.getString("deptCode");
            String deptName = "";
            String doctorName = "";
            BaseComplaintDoctorDO preDoctor= baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
            if (null != baseDoctorDO) {
                doctorName = baseDoctorDO.getName();
            }
            if (preDoctor!=null){
                throw new Exception("医生"+doctorName+"已有负责的投诉类型");
            }
            List<BaseDoctorHospitalDO> baseDoctorHospitalDO = baseDoctorHospitalDao.findByDeptCodeDoctorCode(deptCode, doctor);
            if (baseDoctorHospitalDO != null && baseDoctorHospitalDO.size() > 0) {
                deptName = baseDoctorHospitalDO.get(0).getDeptName();
            }
            if (StringUtils.isNoneBlank(id)) {
                BaseComplaintDoctorDO baseComplaintDoctorDO = new BaseComplaintDoctorDO();
                baseComplaintDoctorDO.setDept(deptCode);
                baseComplaintDoctorDO.setDeptName(deptName);
                baseComplaintDoctorDO.setComplaintId(id);
                baseComplaintDoctorDO.setDoctor(doctor);
                baseComplaintDoctorDO.setDoctorName(doctorName);
                baseComplaintDoctorDO.setIsDel("1");
                baseComplaintDoctorDO.setCreateTime(new Date());
                baseComplaintDoctorDao.save(baseComplaintDoctorDO);
            }
        }
    }
    //删除管理医生
    public BaseComplaintDoctorDO deleteDoctorComplain(String id) {
        BaseComplaintDoctorDO baseComplaintDoctorDO = baseComplaintDoctorDao.findByDelAndId(id);
@ -144,9 +160,11 @@ public class BaseComplaintService {
                " t.is_del as \"isDel\"," +
                " t.create_time as \"createTime\"," +
                " t.update_time as \"updateTime\"," +
                " d.photo as \"photo\"," +
                " b.name as \"name\" " +
                " from base_complaint_doctor t left join base_complaint_dict b" +
                " on t.complaint_id=b.id where t.is_del='1'";
                " on t.complaint_id=b.id " +
                " left join base_doctor d on t.doctor=d.id where t.is_del='1'";
        if (StringUtils.isNoneBlank(doctorName)) {
            sql += " and t.doctor_name like '%" + doctorName + "%'";
        }
@ -177,7 +195,7 @@ public class BaseComplaintService {
    /*
     * 患者举报接口
     * */
    public void patiemtComplaint(String json) throws Exception{
    public BaseComplaintDO patiemtComplaint(String json) throws Exception{
        BaseComplaintDO baseComplaintDO =objectMapper.readValue(json,BaseComplaintDO.class);
        BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(baseComplaintDO.getComplaintId());
        if (baseComplaintDictDO!=null){
@ -189,15 +207,34 @@ public class BaseComplaintService {
                baseComplaintDO.setVisitDeptName(dictHospitalDeptDO.getName());
            }
        }
        if(StringUtils.isNoneBlank(baseComplaintDO.getPatient())){
            BasePatientDO basePatientDO= basePatientDao.findById(baseComplaintDO.getPatient());
            if (basePatientDO!=null){
                basePatientDO.setIdcardFront(baseComplaintDO.getIdcardFront());
                basePatientDO.setIdcardBack(baseComplaintDO.getIdcardBack());
                basePatientDao.save(basePatientDO);
            }
        }
        baseComplaintDO.setIsDel("1");
        baseComplaintDO.setStatus("0");
        baseComplaintDO.setCreateTime(new Date());
        baseComplaintDao.save(baseComplaintDO);
        baseComplaintDO=  baseComplaintDao.save(baseComplaintDO);
        try {
            List<BaseComplaintDoctorDO> doctorList=baseComplaintDoctorDao.findbyComplaintId(baseComplaintDO.getComplaintId());
            for (BaseComplaintDoctorDO baseComplaintDoctorDO:doctorList){
                String url="";
                enterpriseService.sendTWMesByDoctor("zsyy",baseComplaintDoctorDO.getDoctor(),"投诉反馈","您收到一条投诉反馈,点击查看。",url);
            }
        }catch (Exception e){
        }
       return baseComplaintDao.save(baseComplaintDO);
    }
    /*
     * 医生转交
     * */
    public void passTo(String id,String complaintId,String doctor,String operator){
    public BaseComplaintDO passTo(String id,String complaintId,String doctor,String operator){
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
        String doctorName="";
@ -222,11 +259,22 @@ public class BaseComplaintService {
                complaitTypeName=baseComplaintDictDO.getName();
                baseComplaintDO.setComplaintName(complaitTypeName);
            }
            baseComplaintDao.save(baseComplaintDO);
            baseComplaintDO= baseComplaintDao.save(baseComplaintDO);
            try {
                List<BaseComplaintDoctorDO> doctorList=baseComplaintDoctorDao.findbyComplaintId(baseComplaintDO.getComplaintId());
                for (BaseComplaintDoctorDO baseComplaintDoctorDO:doctorList){
                    String url="";
                    enterpriseService.sendTWMesByDoctor("zsyy",baseComplaintDoctorDO.getDoctor(),"投诉反馈","您收到一条投诉反馈,点击查看。",url);
                }
            }catch (Exception e){
            }
            return baseComplaintDO;
        }
        return null;
    }
    //接受投诉
    public void doctorAccept(String id,String doctor) throws Exception{
    public BaseComplaintDO doctorAccept(String id,String doctor) throws Exception{
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        if (baseComplaintDO!=null&&"0".equalsIgnoreCase(baseComplaintDO.getStatus())){
            baseComplaintDO.setStatus("1");
@ -242,15 +290,17 @@ public class BaseComplaintService {
        }else {
            throw new Exception("该工单已被处理完成");
        }
        return baseComplaintDO;
    }
    //反馈投诉
    public void dealComplaint(String id,String operator,String content,String imgUrl ,String deptCode) throws  Exception{
    public BaseComplaintDO dealComplaint(String id,String operator,String content,String imgUrl ,String deptCode) throws  Exception{
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        if (baseComplaintDO!=null&&"1".equalsIgnoreCase(baseComplaintDO.getStatus())){
            baseComplaintDO.setDealTime(new Date());
            baseComplaintDO.setFeedBack(content);
            baseComplaintDO.setFeedImg(imgUrl);
            baseComplaintDO.setOperator(operator);
            baseComplaintDO.setStatus("2");
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(operator);
            if (null != baseDoctorDO) {
                baseComplaintDO.setOperatorName(baseDoctorDO.getName());
@ -266,20 +316,27 @@ public class BaseComplaintService {
        }else if ("0".equalsIgnoreCase(baseComplaintDO.getStatus())){
            throw new Exception("该工单未被接收");
        }
        return baseComplaintDO;
    }
    //查询投诉列表
    public void findComplaintList(String doctor,String status,String patientName,String patientId,String keyWord,Integer page ,Integer pageSize){
    public MixEnvelop findComplaintList(String doctor,String status,String patientName,String patientId,String keyWord,String complaintId,
                                  String startTime,String endTime,Integer page ,Integer pageSize){
        MixEnvelop mixEnvelop = new MixEnvelop();
        List<BaseDoctorRoleDO>  rolelist= baseDoctorRoleDao.findByDoctorCode(doctor);
        Boolean queryAll=false;
        if (rolelist.contains("admin")){
            queryAll=true;
        for (BaseDoctorRoleDO baseDoctorRoleDO:rolelist){
            if ("admin".equalsIgnoreCase(baseDoctorRoleDO.getRoleCode())){
                queryAll=true;
                break;
            }
        }
        String sql="select t.id as \"id\"," +
                " t.complaint_id as \"complaintId\"," +
                " t.complaint_name as \"complaintName\"," +
                " t.complaint_content as \"complaintContent\"," +
                " t.visit_type as \"visitType\"," +
                " case  t.visit_type when '1' then '门诊' else '住院' end  as \"visitTypeName\"," +
                " t.visit_time as \"visitTime\"," +
                " t.visit_dept as \"visitDept\"," +
                " t.visit_dept_name as \"visitDeptName\"," +
@ -310,14 +367,32 @@ public class BaseComplaintService {
        if (!queryAll){
            BaseComplaintDoctorDO baseComplaintDoctorDO= baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
            /*List<BaseComplaintOperateLogDO> logList =baseComplaintOperateDao.findbyOperateFrom(doctor);
            String types= "";
            if (logList!=null&&logList.size()>0){
                for (int i=0;i<logList.size();i++){
                    if (i==logList.size()-1){
                        types+=logList.get(i).getComplaintTo();
                    }else {
                        types+=logList.get(i).getComplaintTo()+",";
                    }
                }
            }*/
            String complaint="";
            if (baseComplaintDoctorDO!=null){
                complaint=baseComplaintDoctorDO.getComplaintId();
            }
            //complaint=complaint+","+types;
            if (StringUtils.isNoneBlank(complaint)){
                sql+=" and t.complaint_id ='"+complaint+"'";
                //sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
                sql+=" and t.complaint_id='"+complaint+"'";
            }else {
                return;
                return null;
            }
        }else {
            if (StringUtils.isNoneBlank(complaintId)){
                //sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
                sql+=" and t.complaint_id='"+complaintId+"'";
            }
        }
        if (StringUtils.isNoneBlank(status)){
@ -330,10 +405,176 @@ public class BaseComplaintService {
            sql+=" and t.patient ='"+patientId+"'";
        }
        if (StringUtils.isNoneBlank(keyWord)){
            sql+=" and (t.patient_idcard like '%"+keyWord+"%' or t.patient_name like '%"+keyWord+"%')";
        }
        if (StringUtils.isNotBlank(startTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+=" and t.create_time > '"+startTime+"'";
                }else {
                    sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                }
            }else{
                sql+=" and t.create_time > '"+startTime+"'";
            }
        }
        if (StringUtils.isNotBlank(endTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+="  and t.create_time<='" + endTime + "'";
                }else {
                    sql+="  and t.create_time<= to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
                }
            }else{
                sql+="  and t.create_time<='" + endTime + "'";
            }
        }
        sql+=" order by t.create_time desc ";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
        Long count = 0L;
        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
        if(total!=null){
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = hibenateUtils.objTransformLong(total.get(0).get("total"));
        }
        mixEnvelop.setTotalCount(count.intValue());
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page);
        return mixEnvelop;
    }
    public BaseComplaintDO  findOnePaitentComplaint(String id){
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        BasePatientDO basePatientDO=basePatientDao.findById(baseComplaintDO.getPatient());
        if (null!=basePatientDO){
            baseComplaintDO.setMobile(basePatientDO.getMobile());
        }
        baseComplaintDO.setVisitTypeName(baseComplaintDO.getVisitType().equalsIgnoreCase("1")?"门诊":"住院");
        return baseComplaintDO;
    }
    //查询投诉列表
    public MixEnvelop findPatientComplaintList(String status,String patientName,String patientId,
                                        String startTime,String endTime,String complaintType,Integer page ,Integer pageSize){
        MixEnvelop mixEnvelop = new MixEnvelop();
        String sql="select t.id as \"id\"," +
                " t.complaint_id as \"complaintId\"," +
                " t.complaint_name as \"complaintName\"," +
                " t.complaint_content as \"complaintContent\"," +
                " t.visit_type as \"visitType\"," +
                " case  t.visit_type when '1' then '门诊' else '住院' end  as \"visitTypeName\"," +
                " t.visit_time as \"visitTime\"," +
                " t.visit_dept as \"visitDept\"," +
                " t.visit_dept_name as \"visitDeptName\"," +
                " t.adm_no as \"admNo\"," +
                " t.patient as \"patient\"," +
                " t.patient_name as \"patientName\"," +
                " t.patient_idcard as \"patientIdcard\"," +
                " t.idcard_front as \"idcardFront\"," +
                " t.idcard_back as \"idcardBack\"," +
                " t.img_url as \"imgUrl\"," +
                " t.is_del as \"isDel\"," +
                " t.status as \"status\"," +
                " t.create_time as \"createTime\"," +
                " t.accept_time as \"acceptTime\"," +
                " t.deal_time as \"dealTime\"," +
                " t.operator_dept as \"operatorDept\"," +
                " t.operator_dept_name as \"operatorDeptName\"," +
                " t.operator as \"operator\"," +
                " t.operator_name as \"operatorName\"," +
                " t.feed_back as \"feedBack\"," +
                " t.feed_img as \"feedImg\"," +
                " t.acceptor as \"acceptor\"," +
                " b.mobile as \"mobile\"," +
                " t.acceptor_name as \"acceptorName\"" +
                " from base_complaint t " +
                " left join base_patient b on t.patient=b.id" +
                " where t.is_del=1";
        if (StringUtils.isNoneBlank(status)){
            sql+=" and t.status ='"+status+"'";
        }
        if (StringUtils.isNoneBlank(patientName)){
            sql+=" and t.patient_name like '%"+patientName+"%'";
        }
        if (StringUtils.isNoneBlank(patientId)){
            sql+=" and t.patient ='"+patientId+"'";
        }
        if (StringUtils.isNoneBlank(complaintType)){
            sql+=" and t.complaint_id ='"+complaintType+"'";
        }
        if (StringUtils.isNotBlank(startTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+=" and t.create_time > '"+startTime+"'";
                }else {
                    sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
                }
            }else{
                sql+=" and t.create_time > '"+startTime+"'";
            }
        }
        if (StringUtils.isNotBlank(endTime)){
            if("xm_ykyy_wx".equals(wxId)){
                if (flag){
                    sql+="  and t.create_time<='" + endTime + "'";
                }else {
                    sql+="  and t.create_time<= to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
                }
            }else{
                sql+="  and t.create_time<='" + endTime + "'";
            }
        }
        sql+=" order by t.create_time desc ";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
        Long count = 0L;
        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
        if(total!=null){
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = hibenateUtils.objTransformLong(total.get(0).get("total"));
        }
        mixEnvelop.setTotalCount(count.intValue());
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setCurrPage(page);
        return mixEnvelop;
    }
    /*
    * 查询投诉数量*/
    public Map<String,Object> findComplaintCount(String doctor){
        BaseComplaintDoctorDO baseComplaintDoctorDO=baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
        List<BaseDoctorRoleDO>  rolelist= baseDoctorRoleDao.findByDoctorCode(doctor);
        Boolean queryAll=false;
        if (rolelist!=null&&rolelist.contains("admin")){
            queryAll=true;
        }
        Integer complaints=0;
        Integer recieve=0;
        Integer deal=0;
        if (!queryAll){
             complaints=baseComplaintDao.getCountByStatusAndComplaintId("0",baseComplaintDoctorDO.getComplaintId());
             recieve=baseComplaintDao.getCountByStatusAndComplaintId("1",baseComplaintDoctorDO.getComplaintId());
             deal=baseComplaintDao.getCountByStatusAndComplaintId("2",baseComplaintDoctorDO.getComplaintId());
        }else {
            complaints=baseComplaintDao.getCountByStatus("0");
            recieve=baseComplaintDao.getCountByStatus("1");
            deal=baseComplaintDao.getCountByStatus("2");
        }
        Integer total = complaints+recieve+deal;
        Map map=new HashMap();
        map.put("complaints",complaints);
        map.put("recieve",recieve);
        map.put("deal",deal);
        map.put("total",total);
        return map;
    }
}

+ 14 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/team/service/WlyyAdminTeamService.java

@ -86,7 +86,16 @@ public class WlyyAdminTeamService {
    public MixEnvelop findDoctorByTeam(String teamCode,Integer page,Integer pageSize){
        PageRequest pageRequest = new PageRequest(page-1,pageSize);
        MixEnvelop mixEnvelop = new MixEnvelop();
        String orgName="";
        List<WlyyAdminTeamMemberDO> list = wlyyAdminTeamMemberDao.findByTeamId(Long.parseLong(teamCode),pageRequest);
        WlyyAdminTeamDO wlyyAdminTeamDO1 =wlyyAdminTeamDao.findOne(Integer.parseInt(teamCode));
        if (wlyyAdminTeamDO1!=null){
            DmHospitalDO dmHospitalDO = hospitalDao.findByCode(wlyyAdminTeamDO1.getOrgCode());
            if (dmHospitalDO!=null){
                orgName=dmHospitalDO.getName();
            }
        }
        for (WlyyAdminTeamMemberDO wlyyAdminTeamMemberDO:list){
            /*Integer count = wlyySignFamilyDao.getCountByDoctorCode(wlyyAdminTeamMemberDO.getDoctorCode());
            wlyyAdminTeamMemberDO.setSignNum(count==null?0:count);*/
@ -101,6 +110,7 @@ public class WlyyAdminTeamService {
            }else {
                wlyyAdminTeamMemberDO.setTeamLeaderOrder(0);
            }
            wlyyAdminTeamMemberDO.setOrgName(orgName);
        }
        list=list.stream().sorted(Comparator.comparing(WlyyAdminTeamMemberDO::getTeamLeaderOrder).reversed()).collect(Collectors.toList());
        mixEnvelop.setCurrPage(page);
@ -112,4 +122,8 @@ public class WlyyAdminTeamService {
    public List<BaseTownDO> findTownByCity(String city){
       return baseTownDao.findByCityCode(city);
    }
    public WlyyAdminTeamMemberDO findOneTeamMemberById(Integer id){
        return wlyyAdminTeamMemberDao.findOne(id);
    }
}

+ 6 - 1
common/common-entity/sql记录

@ -1046,4 +1046,9 @@ ALTER table base_capacity_assessment_record add column age tinyint(4) default  C
ALTER TABLE base.base_doctor_patient_tmp MODIFY COLUMN  doctor_code varchar(50) DEFAULT NULL COMMENT 'type=(1,2,4为医生id) ';
ALTER TABLE base.base_doctor_patient_tmp ADD COLUMN org_code varchar(50) DEFAULT NULL COMMENT 'type=(3为机构code)';
ALTER TABLE base_security_monitoring_order add column scene_img VARCHAR(1000) default null COMMENT '工单发起时的现场照片';
ALTER TABLE base_security_monitoring_order add column scene_img VARCHAR(1000) default null COMMENT '工单发起时的现场照片';
--2021-06-21
ALTER table base_patient add column idcard_front varchar(1000) default NULL  COMMENT '身份证正面';
ALTER table base_patient add column idcard_back varchar(1000) default NULL  COMMENT '身份证反面';

+ 28 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintDO.java

@ -1,11 +1,13 @@
package com.yihu.jw.entity.base.complaint;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
@Entity
@ -15,6 +17,7 @@ public class BaseComplaintDO  extends UuidIdentityEntity {
    private String complaintName;
    private String complaintContent;
    private String visitType;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date visitTime;
    private String visitDept;
    private String visitDeptName;
@ -27,8 +30,33 @@ public class BaseComplaintDO  extends UuidIdentityEntity {
    private String imgUrl;
    private String isDel;
    private String status;
    @Transient
    private String mobile;
    private String visitTypeName;
    @Transient
    public String getVisitTypeName() {
        return visitTypeName;
    }
    public void setVisitTypeName(String visitTypeName) {
        this.visitTypeName = visitTypeName;
    }
    @Transient
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date acceptTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date dealTime;
    private String operator;
    private String operatorName;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/complaint/BaseComplaintOperateLogDO.java

@ -8,7 +8,7 @@ import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_complaint_doctor")
@Table(name = "base_complaint_operate_log")
public class BaseComplaintOperateLogDO extends UuidIdentityEntity {
    private String  relationCode;
    private String  operateFrom;

+ 18 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java

@ -279,6 +279,24 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    private String bloodName;
    private String marriageName;
    private String idcardFront;
    private String idcardBack;
    @Column(name = "idcard_front")
    public String getIdcardFront() {
        return idcardFront;
    }
    public void setIdcardFront(String idcardFront) {
        this.idcardFront = idcardFront;
    }
    @Column(name = "idcard_back")
    public String getIdcardBack() {
        return idcardBack;
    }
    public void setIdcardBack(String idcardBack) {
        this.idcardBack = idcardBack;
    }
    public String getCardType() {
        return cardType;

+ 48 - 9
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/team/WlyyAdminTeamMemberDO.java

@ -23,16 +23,62 @@ public class WlyyAdminTeamMemberDO extends IntegerIdentityEntity {
    private Date lastModified;
    private String photo;
    private String idcard;
    private String expertise;
    private String introduce;
    private String job_name;
    private String job;
    //不对应表字段
    private String doctorName;
    private String mobile;
    private String jobName;
    private Integer level;
    private String levelName;
    private boolean teamLeader;
    private Integer teamLeaderOrder;
    private Integer signNum;
    private String orgName;
    @Column(name = "job_name")
    public String getJob_name() {
        return job_name;
    }
    public void setJob_name(String job_name) {
        this.job_name = job_name;
    }
    @Column(name = "job")
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    @Column(name = "expertise")
    public String getExpertise() {
        return expertise;
    }
    public void setExpertise(String expertise) {
        this.expertise = expertise;
    }
    @Column(name = "introduce")
    public String getIntroduce() {
        return introduce;
    }
    public void setIntroduce(String introduce) {
        this.introduce = introduce;
    }
    @Transient
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    @Transient
    public Integer getTeamLeaderOrder() {
        return teamLeaderOrder;
@ -138,14 +184,7 @@ public class WlyyAdminTeamMemberDO extends IntegerIdentityEntity {
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    @Transient
    public String getJobName() {
        return jobName;
    }
    public void setJobName(String jobName) {
        this.jobName = jobName;
    }
    @Transient
    public Integer getLevel() {

+ 177 - 7
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/complaint/BaseComplaintEndPoint.java

@ -8,10 +8,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -89,12 +86,13 @@ public class BaseComplaintEndPoint  extends EnvelopRestEndpoint {
                                      @RequestParam(value = "id", required = false) String id,
                                      @ApiParam(name = "complaintId", value = "complaintId", required = false)
                                      @RequestParam(value = "complaintId", required = false) String complaintId,
                                                @ApiParam(name = "doctor", value = "doctor", required = false)
                                                    @RequestParam(value = "doctor", required = false) String doctor,
                                                @ApiParam(name = "doctorList", value = "doctorList", required = false)
                                                    @RequestParam(value = "doctorList", required = false) String doctorList,
                                                @ApiParam(name = "deptCode", value = "deptCode", required = false)
                                                    @RequestParam(value = "deptCode", required = false) String deptCode) throws Exception {
        try {
            return success(baseComplaintService.createOrUpdateComplainDoctor( id, complaintId , doctor, deptCode)) ;
            baseComplaintService.createOrUpdateComplainDoctor( id, complaintId , doctorList);
            return success() ;
        }catch (Exception e){
            return failedException(e);
        }
@ -156,4 +154,176 @@ public class BaseComplaintEndPoint  extends EnvelopRestEndpoint {
            return failedMixEnvelopException(e);
        }
    }
    /**
     * 患者投诉
     * @return
     */
    @PostMapping(value = "/patiemtComplaint")
    @ApiOperation(value = "患者投诉", notes = "患者投诉")
    public Envelop patiemtComplaint(@ApiParam(name = "json", value = "json", required = false)
                                          @RequestParam(value = "json", required = false) String json) throws Exception {
        try {
            return success(baseComplaintService.patiemtComplaint(json)) ;
        }catch (Exception e){
            return failedException(e);
        }
    }
    /**
     * 转交投诉
     * @return
     */
    @PostMapping(value = "/passTo")
    @ApiOperation(value = "转交投诉", notes = "转交投诉")
    public Envelop passTo(@ApiParam(name = "id", value = "id", required = false)
                                    @RequestParam(value = "id", required = false) String id,
                          @ApiParam(name = "complaintId", value = "complaintId", required = false)
                          @RequestParam(value = "complaintId", required = false) String complaintId,
                          @ApiParam(name = "doctor", value = "doctor", required = false)
                              @RequestParam(value = "doctor", required = false) String doctor,
                          @ApiParam(name = "operator", value = "operator", required = false)
                              @RequestParam(value = "operator", required = false) String operator) throws Exception {
        try {
            return success(baseComplaintService.passTo(id,complaintId,doctor,operator)) ;
        }catch (Exception e){
            return failedException(e);
        }
    }
    /**
     * 接受
     * @return
     */
    @GetMapping(value = "/doctorAccept")
    @ApiOperation(value = "接受投诉", notes = "接受投诉")
    public Envelop doctorAccept(@ApiParam(name = "id", value = "id", required = false)
                          @RequestParam(value = "id", required = false) String id,
                          @ApiParam(name = "doctor", value = "doctor", required = false)
                          @RequestParam(value = "doctor", required = false) String doctor) throws Exception {
        try {
            return success(baseComplaintService.doctorAccept(id,doctor)) ;
        }catch (Exception e){
            return failedException(e);
        }
    }
    /**
     * 反馈投诉
     * @return
     */
    @GetMapping(value = "/dealComplaint")
    @ApiOperation(value = "反馈投诉", notes = "反馈投诉")
    public Envelop dealComplaint(@ApiParam(name = "id", value = "id", required = false)
                                @RequestParam(value = "id", required = false) String id,
                                 @ApiParam(name = "operator", value = "operator", required = false)
                                 @RequestParam(value = "operator", required = false) String operator,
                                 @ApiParam(name = "content", value = "content", required = false)
                                     @RequestParam(value = "content", required = false) String content,
                                 @ApiParam(name = "imgUrl", value = "imgUrl", required = false)
                                     @RequestParam(value = "imgUrl", required = false) String imgUrl,
                                 @ApiParam(name = "deptCode", value = "deptCode", required = false)
                                     @RequestParam(value = "deptCode", required = false) String deptCode,
                                @ApiParam(name = "doctor", value = "doctor", required = false)
                                @RequestParam(value = "doctor", required = false) String doctor) throws Exception {
        try {
            return success(baseComplaintService.dealComplaint(id,operator,content,imgUrl,deptCode)) ;
        }catch (Exception e){
            return failedException(e);
        }
    }
    /**
     * 反馈投诉
     * @return
     */
    @GetMapping(value = "/findComplaintList")
    @ApiOperation(value = "查询投诉建议列表", notes = "查询投诉建议列表")
    public Envelop findComplaintList(@ApiParam(name = "doctor", value = "doctor", required = false)
                                 @RequestParam(value = "doctor", required = false) String doctor,
                                 @ApiParam(name = "status", value = "status", required = false)
                                 @RequestParam(value = "status", required = false) String status,
                                 @ApiParam(name = "patientName", value = "patientName", required = false)
                                 @RequestParam(value = "patientName", required = false) String patientName,
                                 @ApiParam(name = "patientId", value = "patientId", required = false)
                                 @RequestParam(value = "patientId", required = false) String patientId,
                                 @ApiParam(name = "keyWord", value = "keyWord", required = false)
                                 @RequestParam(value = "keyWord", required = false) String keyWord,
                                     @ApiParam(name = "complaintId", value = "complaintId", required = false)
                                         @RequestParam(value = "complaintId", required = false) String complaintId,
                                     @ApiParam(name = "endTime", value = "endTime", required = false)
                                         @RequestParam(value = "endTime", required = false) String endTime,
                                     @ApiParam(name = "page", value = "page", required = false)
                                         @RequestParam(value = "page", required = false) Integer page,
                                     @ApiParam(name = "pageSize", value = "pageSize", required = false)
                                         @RequestParam(value = "pageSize", required = false) Integer pageSize,
                                 @ApiParam(name = "startTime", value = "startTime", required = false)
                                 @RequestParam(value = "startTime", required = false) String startTime) throws Exception {
        try {
            return success(baseComplaintService.findComplaintList( doctor, status, patientName, patientId, keyWord,complaintId,
                     startTime, endTime, page , pageSize)) ;
        }catch (Exception e){
            return failedException(e);
        }
    }
    /**
     * 查询投诉建议单挑
     * @return
     */
    @GetMapping(value = "/findOnePaitentComplaint")
    @ApiOperation(value = "查询投诉建议单条", notes = "查询投诉建议单条")
    public Envelop findOnePaitentComplaint(@ApiParam(name = "id", value = "id", required = false)
                                          @RequestParam(value = "id", required = false) String id) throws Exception {
        try {
            return success(baseComplaintService.findOnePaitentComplaint(id)) ;
        }catch (Exception e){
            return failedException(e);
        }
    }
    /**
     * 居民反馈查询
     * @return
     */
    @GetMapping(value = "/findPatientComplaintList")
    @ApiOperation(value = "查询投诉建议列表", notes = "查询投诉建议列表")
    public Envelop findPatientComplaintList(
                                     @ApiParam(name = "status", value = "status", required = false)
                                     @RequestParam(value = "status", required = false) String status,
                                     @ApiParam(name = "patientName", value = "patientName", required = false)
                                     @RequestParam(value = "patientName", required = false) String patientName,
                                     @ApiParam(name = "patientId", value = "patientId", required = false)
                                     @RequestParam(value = "patientId", required = false) String patientId,
                                     @ApiParam(name = "complaintType", value = "complaintType", required = false)
                                     @RequestParam(value = "complaintType", required = false) String complaintType,
                                     @ApiParam(name = "endTime", value = "endTime", required = false)
                                     @RequestParam(value = "endTime", required = false) String endTime,
                                     @ApiParam(name = "page", value = "page", required = false)
                                     @RequestParam(value = "page", required = false) Integer page,
                                     @ApiParam(name = "pageSize", value = "pageSize", required = false)
                                     @RequestParam(value = "pageSize", required = false) Integer pageSize,
                                     @ApiParam(name = "startTime", value = "startTime", required = false)
                                     @RequestParam(value = "startTime", required = false) String startTime) throws Exception {
        try {
            return success(baseComplaintService.findPatientComplaintList(  status, patientName, patientId,
                    startTime, endTime,complaintType, page , pageSize)) ;
        }catch (Exception e){
            return failedException(e);
        }
    }
    /**
     * 查询投诉建议单挑
     * @return
     */
    @GetMapping(value = "/findComplaintCount")
    @ApiOperation(value = "查询投诉建议数量", notes = "查询投诉建议单挑")
    public Envelop findComplaintCount(@ApiParam(name = "doctor", value = "doctor", required = false)
                                          @RequestParam(value = "doctor", required = false) String doctor) throws Exception {
        try {
            return success(baseComplaintService.findComplaintCount(doctor)) ;
        }catch (Exception e){
            return failedException(e);
        }
    }
}

+ 12 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/hospital/WlyyAdminTeamController.java

@ -92,6 +92,18 @@ public class WlyyAdminTeamController extends EnvelopRestEndpoint {
            return failedMixEnvelopException(e);
        }
    }
    @ApiOperation("查询团队医生单条")
    @GetMapping("/findOneTeamMember")
    public MixEnvelop findOneTeamMember(@ApiParam(name = "id", value = "id", required = false)
                               @RequestParam(value = "id", required = false)Integer id){
        try {
            return MixEnvelop.getSuccess("操作成功",wlyyAdminTeamService.findOneTeamMemberById(id));
        }catch (Exception e){
            System.out.println(e.getClass());
            return failedMixEnvelopException(e);
        }
    }
}