Browse Source

Merge branch 'baseCopy1' of wangjun/wlyy2.0 into dev

wangzhinan 3 years ago
parent
commit
89e58f6670

+ 195 - 29
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintService.java

@ -25,12 +25,14 @@ 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 jdk.management.resource.internal.TotalResourceContext;
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 javax.persistence.criteria.CriteriaBuilder;
import java.text.SimpleDateFormat;
import java.util.*;
@ -258,6 +260,7 @@ public class BaseComplaintService {
        baseComplaintDO.setIsDel("1");
        baseComplaintDO.setStatus("0");
        baseComplaintDO.setCreateTime(new Date());
        baseComplaintDO.setDefaultdoctor("defalutDoctor");
        baseComplaintDO=  baseComplaintDao.save(baseComplaintDO);
        BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
        baseComplaintOperateLogDO.setOperateFrom(baseComplaintDO.getPatient());
@ -280,13 +283,14 @@ public class BaseComplaintService {
    /*
     * 医生转交
     * */
    public BaseComplaintDO passTo(String id,String complaintId,String doctor,String operator){
    public BaseComplaintDO passTo(String id,String complaintId,String doctor,String operator,String reason){
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
        BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
        String doctorName="";
        String complaitTypeName="";
        if (null!=baseComplaintDO){
            baseComplaintOperateLogDO.setOperateFrom(operator);
            baseComplaintOperateLogDO.setReason(reason);
            baseComplaintOperateLogDO.setOperateTo(doctor);
            baseComplaintOperateLogDO.setComplaintTo(complaintId);
            baseComplaintOperateLogDO.setComplaintFrom(baseComplaintDO.getComplaintId());
@ -301,7 +305,12 @@ public class BaseComplaintService {
                baseComplaintDO.setAcceptorName(doctorName);
            }
            baseComplaintDO.setAcceptor(doctor);*/
            if ("1".equalsIgnoreCase(baseComplaintDO.getStatus())){
                baseComplaintDO.setStatus("0");
            }
            baseComplaintDO.setDefaultdoctor(doctor);
            baseComplaintDO.setComplaintId(complaintId);
            baseComplaintDO.setPassto(doctor);
            BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(complaintId);
            if (baseComplaintDictDO!=null){
                complaitTypeName=baseComplaintDictDO.getName();
@ -331,6 +340,7 @@ public class BaseComplaintService {
                baseComplaintDO.setAcceptorName(baseDoctorDO.getName());
            }
            baseComplaintDO.setAcceptor(doctor);
            baseComplaintDO.setDefaultdoctor(doctor);
            baseComplaintDO.setAcceptTime(new Date());
            baseComplaintDao.save(baseComplaintDO);
            BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
@ -355,6 +365,7 @@ public class BaseComplaintService {
            baseComplaintDO.setFeedBack(content);
            baseComplaintDO.setFeedImg(imgUrl);
            baseComplaintDO.setOperator(operator);
            baseComplaintDO.setDefaultdoctor(operator);
            baseComplaintDO.setStatus("2");
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(operator);
            if (null != baseDoctorDO) {
@ -389,7 +400,7 @@ public class BaseComplaintService {
        if ("admin".equalsIgnoreCase(role)){
            queryAll=true;
        }
        String sql="select t.id as \"id\"," +
        String sql="select DISTINCT t.id as \"id\"," +
                " t.complaint_id as \"complaintId\"," +
                " t.complaint_name as \"complaintName\"," +
                " t.complaint_content as \"complaintContent\"," +
@ -418,10 +429,19 @@ public class BaseComplaintService {
                " t.feed_img as \"feedImg\"," +
                " t.acceptor as \"acceptor\"," +
                " t.mobile as \"mobile\"," +
                " t.passto as \"passto\"," +
                " t.acceptor_name as \"acceptorName\"" +
                "from base_complaint t  " +
                " left join base_patient b on t.patient=b.id" +
                " where t.is_del=1";
                " left join base_patient b on t.patient=b.id " ;
        sql+=" left join base_complaint_operate_log g on t.id=g.relation_code where t.is_del=1 ";
        if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
            sql+=" and  g.status='3' ";
        }/*else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
            sql+=" and  g.status='1' ";
        }
        else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
            sql+=" and  g.status='2' ";
        }*/
        if (!queryAll){
            BaseComplaintDoctorDO baseComplaintDoctorDO= baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
            /*List<BaseComplaintOperateLogDO> logList =baseComplaintOperateDao.findbyOperateFrom(doctor);
@ -443,13 +463,41 @@ public class BaseComplaintService {
            }
            //complaint=complaint+","+types;
            if (StringUtils.isNoneBlank(complaint)){
                if (!StringUtils.isNoneBlank(status)){
                    sql+=" and t.status !='-1'";
                    sql+=" and (t.defaultdoctor ='defalutDoctor' or t.defaultdoctor='"+doctor+"')";
                }
                if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
                    sql+=" and g.operate_from='"+doctor+"'";
                }else {
                    sql+=" and t.complaint_id='"+complaint+"'";
                }
                if (!StringUtils.isNoneBlank(status)){
                    sql+=" or (g.operate_from='"+doctor+"'  and g.status='3')";
                }
                if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
                    sql+=" and g.operate_from='"+doctor+"'";
                }else if (StringUtils.isNoneBlank(status)&&"0".equalsIgnoreCase(status)){
                    sql+=" and t.status='0' and (t.passto='"+doctor+"' or t.passto is null )";
                } else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
                    sql+="  and t.status='1' and t.acceptor='"+doctor+"' ";
                } else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
                    sql+=" and t.status='2' and t.operator='"+doctor+"' ";
                }
                //sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
                sql+=" and t.complaint_id='"+complaint+"'";
            }else {
                sql+=" and t.id IN (select col.relation_code from base_complaint_operate_log col where col.operate_to = '"+doctor+"'  )";
            }
            if (!StringUtils.isNoneBlank(status)){
                sql+=" and t.status !='-1'";
                if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
                    sql+=" and g.operate_from='"+doctor+"'";
                }else if (StringUtils.isNoneBlank(status)&&"0".equalsIgnoreCase(status)){
                    sql+=" and t.status='0' and t.passto='"+doctor+"'";
                } else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
                    sql+="  and t.status='1' and t.acceptor='"+doctor+"' ";
                } else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
                    sql+=" and t.status='2' and t.operator='"+doctor+"' ";
                } else {
                    sql+=" and t.id IN (select col.relation_code from base_complaint_operate_log col where col.operate_to = '"+doctor+"'  )";
                }
            }
            //complaint=complaint+","+types;
@ -458,10 +506,11 @@ public class BaseComplaintService {
                //sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
                sql+=" and t.complaint_id='"+complaintId+"'";
            }
            if (StringUtils.isNoneBlank(status)){
                sql+=" and t.status ='"+status+"'";
            }
        }
        if (StringUtils.isNoneBlank(status)){
            sql+=" and t.status ='"+status+"'";
        }
        if (StringUtils.isNoneBlank(patientName)){
            sql+=" and t.patient_name like '%"+patientName+"%'";
        }
@ -624,33 +673,150 @@ public class BaseComplaintService {
        Integer recieve=0;
        Integer deal=0;
        Integer cacel=0;
        Integer passto=0;
        Integer total=0;
        if (baseComplaintDoctorDO!=null){
            Boolean queryAll=false;
            if ("admin".equalsIgnoreCase(role)){
                queryAll=true;
            }
            if (!queryAll){
                complaints=baseComplaintDao.getCountByStatusAndComplaintId("0",baseComplaintDoctorDO.getComplaintId());
                recieve=baseComplaintDao.getCountByStatusAndComplaintId("1",baseComplaintDoctorDO.getComplaintId());
                deal=baseComplaintDao.getCountByStatusAndComplaintId("2",baseComplaintDoctorDO.getComplaintId());
                //cacel=baseComplaintDao.getCountByStatusAndComplaintId("-1",baseComplaintDoctorDO.getComplaintId());
            }else {
                complaints=baseComplaintDao.getCountByStatus("0");
                recieve=baseComplaintDao.getCountByStatus("1");
                deal=baseComplaintDao.getCountByStatus("2");
                cacel=baseComplaintDao.getCountByStatus("-1");
            }
                Boolean queryAll=false;
                if ("admin".equalsIgnoreCase(role)){
                    queryAll=true;
                }
                if (!queryAll){
                    if ("808080eb7a194099017a1943fa820004".equalsIgnoreCase(baseComplaintDoctorDO.getComplaintId())) {
                        complaints = getCountByStatus(doctor,"0",role);
                        recieve = getCountByStatus(doctor,"1",role);
                        deal = getCountByStatus(doctor,"2",role);
                        passto = getCountByPassto(doctor);
                        total = getCountByStatus(doctor,"",role);
                    }else{
                        complaints=getCountByStatus(doctor,"0",role);
                        recieve=getCountByStatus(doctor,"1",role);
                        deal=getCountByStatus(doctor,"2",role);
                        passto=getCountByPassto(doctor);
                        total=getCountByStatus(doctor,"",role);
                    }
                    //cacel=baseComplaintDao.getCountByStatusAndComplaintId("-1",baseComplaintDoctorDO.getComplaintId());
                }else {
                    complaints=baseComplaintDao.getCountByStatus("0");
                    recieve=baseComplaintDao.getCountByStatus("1");
                    deal=baseComplaintDao.getCountByStatus("2");
                    cacel=baseComplaintDao.getCountByStatus("-1");
                    total = complaints+recieve+deal+cacel;
                }
        }
        Integer total = complaints+recieve+deal+cacel;
        Map map=new HashMap();
        map.put("complaints",complaints);
        map.put("recieve",recieve);
        map.put("deal",deal);
        map.put("passto",passto);
        map.put("cacel",cacel);
        map.put("total",total);
        return map;
    }
    public Integer getCountByPassto(String doctor){
        String sql ="select count(1) as \"total\" from (select  DISTINCT t.id   from base_complaint t left join base_complaint_operate_log b" +
                " on t.id=b.relation_code where t.is_del='1' and b.status='3'";
        if (StringUtils.isNoneBlank(doctor)){
            sql+=" and b.operate_from='"+doctor+"'";
        }
        sql+=") m";
        List<Map<String,Object>> listcount=hibenateUtils.createSQLQuery(sql);
        Integer count=0;
        if (listcount!=null&&listcount.size()>0){
            count=Integer.valueOf(listcount.get(0).get("total").toString());
        }
        return count;
    }
    public Integer getCountByStatus(String doctor,String status,String role){
        Boolean queryAll=false;
        if ("admin".equalsIgnoreCase(role)){
            queryAll=true;
        }
        String sql="select count(1)  as \"count\" from (select DISTINCT t.id  "+
                "  from base_complaint t  " +
                " left join base_patient b on t.patient=b.id " ;
        sql+=" left join base_complaint_operate_log g on t.id=g.relation_code where t.is_del=1 ";
        if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
            sql+="  and g.status='3' ";
        } /*else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
            sql+=" and  g.status='1' ";
        }
        else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
            sql+=" and  g.status='2' ";
        }*/
        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){
                if (baseComplaintDoctorDO.getComplaintId().equalsIgnoreCase("808080eb7a194099017a1943fa820004")){
                    complaint=baseComplaintDoctorDO.getComplaintId();
                }
            }
            //complaint=complaint+","+types;
            if (StringUtils.isNoneBlank(complaint)){
                if (!StringUtils.isNoneBlank(status)){
                    sql+=" and t.status !='-1'";
                    sql+=" and (t.defaultdoctor ='defalutDoctor' or t.defaultdoctor='"+doctor+"')";
                }
                if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
                    sql+=" and g.operate_from='"+doctor+"'";
                }else {
                    sql+=" and t.complaint_id='"+complaint+"'";
                }
               if (!StringUtils.isNoneBlank(status)){
                   sql+=" or (g.operate_from='"+doctor+"'  and g.status='3')";
                }
                if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
                    sql+=" and g.operate_from='"+doctor+"'";
                }else if (StringUtils.isNoneBlank(status)&&"0".equalsIgnoreCase(status)){
                    sql+=" and t.status='0' and (t.passto='"+doctor+"' or t.passto is null )";
                } else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
                    sql+="  and t.status='1' and t.acceptor='"+doctor+"' ";
                } else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
                    sql+=" and t.status='2' and t.operator='"+doctor+"' ";
                }
                //sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
            }else {
                if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
                    sql+=" and g.operate_from='"+doctor+"'";
                }else if (StringUtils.isNoneBlank(status)&&"0".equalsIgnoreCase(status)){
                    sql+=" and t.status='0' and t.passto='"+doctor+"'";
                } else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
                    sql+="  and t.status='1' and t.acceptor='"+doctor+"' ";
                } else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
                    sql+=" and t.status='2' and t.operator='"+doctor+"' ";
                } else {
                    sql+=" and t.id IN (select col.relation_code from base_complaint_operate_log col where col.operate_to = '"+doctor+"'  )";
                }
            }
            if (!StringUtils.isNoneBlank(status)){
                sql+=" and t.status !='-1'";
            }
            //complaint=complaint+","+types;
        }
        System.out.println("sql"+sql);
        Integer count = 0;
        sql+=")g";
        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sql);
        if(total!=null&&total.size()>0){
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            count = Integer.valueOf(total.get(0).get("count").toString());
        }
        return count;
    }
    /*
     * 查询投诉数量*/
@ -663,7 +829,6 @@ public class BaseComplaintService {
        recieve=baseComplaintDao.getCountByStatusByPatient("1",patient);
        deal=baseComplaintDao.getCountByStatusByPatient("2",patient);
        cacel=baseComplaintDao.getCountByStatusByPatient("-1",patient);
        Integer total = complaints+recieve+deal+cacel;
        Map map=new HashMap();
        map.put("complaints",complaints);
@ -698,6 +863,7 @@ public class BaseComplaintService {
                " p.name as \"complaintNameFrom\" ," +
                " n.name as \"complaintNameto\", " +
                " t.operate_from as \"operateFrom\" ," +
                " t.reason as \"reason\" ," +
                " t.operate_to as \"operateTo\" ," +
                " t.cancel_by as \"cancelBy\", " +
                " t.operate_type as \"operateType\", " +

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

@ -34,9 +34,28 @@ public class BaseComplaintDO  extends UuidIdentityEntity {
    private String visitTypeName;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date latestFeedTime;
    private String passto;
    private String defaultdoctor;
    @Column(name = "defaultdoctor")
    public String getDefaultdoctor() {
        return defaultdoctor;
    }
    public void setDefaultdoctor(String defaultdoctor) {
        this.defaultdoctor = defaultdoctor;
    }
    @Column(name = "passto")
    public String getPassto() {
        return passto;
    }
    public void setPassto(String passto) {
        this.passto = passto;
    }
    @Transient
    public Date getLatestFeedTime() {

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

@ -19,6 +19,16 @@ public class BaseComplaintOperateLogDO extends UuidIdentityEntity {
    private String  status;
    private String  operateType;
    private String  cancelBy;
    private String  reason;
    @Column(name = "reason")
    public String getReason() {
        return reason;
    }
    public void setReason(String reason) {
        this.reason = reason;
    }
    @Column(name = "cancel_by")
    public String getCancelBy() {
        return cancelBy;

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

@ -182,10 +182,12 @@ public class BaseComplaintEndPoint  extends EnvelopRestEndpoint {
                          @RequestParam(value = "complaintId", required = false) String complaintId,
                          @ApiParam(name = "doctor", value = "doctor", required = false)
                              @RequestParam(value = "doctor", required = false) String doctor,
                          @ApiParam(name = "reason", value = "reason", required = false)
                              @RequestParam(value = "reason", required = false) String reason,
                          @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)) ;
            return success(baseComplaintService.passTo(id,complaintId,doctor,operator,reason)) ;
        }catch (Exception e){
            return failedException(e);
        }
@ -261,7 +263,7 @@ public class BaseComplaintEndPoint  extends EnvelopRestEndpoint {
                                 @ApiParam(name = "startTime", value = "startTime", required = false)
                                 @RequestParam(value = "startTime", required = false) String startTime) throws Exception {
        try {
            if (StringUtils.isNotBlank(doctor)){
            if (!StringUtils.isNotBlank(doctor)){
                doctor=getUID();
            }
            return success(baseComplaintService.findComplaintList(role, doctor, status, patientName, patientId, keyWord,complaintId,