Przeglądaj źródła

撤销投诉 投诉流程添加

wangjun 3 lat temu
rodzic
commit
35c161f1cc

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

@ -11,8 +11,8 @@ 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 like %?1%")
    @Query("from BaseComplaintDictDO t where t.isDel='1' and t.name like %?1% order by t.createTime desc")
    List<BaseComplaintDictDO> findByName(String name);
    @Query("from BaseComplaintDictDO t where t.isDel='1'")
    @Query("from BaseComplaintDictDO t where t.isDel='1' order by t.createTime desc")
    List<BaseComplaintDictDO> findByAll();
}

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

@ -9,6 +9,6 @@ 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")
    @Query("from BaseComplaintOperateLogDO t where t.operateFrom=?1 and t.status='3'")
    List<BaseComplaintOperateLogDO> findbyOperateFrom(String doctor);
}

+ 132 - 20
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintService.java

@ -202,7 +202,7 @@ public class BaseComplaintService {
    public BaseComplaintDO patiemtComplaint(String json) throws Exception{
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO= wlyyHospitalSysDictDao.findById("complaintOpenControl");
        if (wlyyHospitalSysDictDO!=null){
            if (!"1".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictValue())){
            if (!"1".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                throw new Exception("投诉通道已关闭");
            }
        }else {
@ -219,7 +219,7 @@ public class BaseComplaintService {
                baseComplaintDO.setVisitDeptName(dictHospitalDeptDO.getName());
            }
        }
        if(StringUtils.isNoneBlank(baseComplaintDO.getPatient())){
        /*if(StringUtils.isNoneBlank(baseComplaintDO.getPatient())){
            BasePatientDO basePatientDO= basePatientDao.findById(baseComplaintDO.getPatient());
            if (basePatientDO!=null){
                basePatientDO.setIdcardFront(baseComplaintDO.getIdcardFront());
@ -227,15 +227,22 @@ public class BaseComplaintService {
                basePatientDao.save(basePatientDO);
            }
        }
        }*/
        baseComplaintDO.setIsDel("1");
        baseComplaintDO.setStatus("0");
        baseComplaintDO.setCreateTime(new Date());
        baseComplaintDO=  baseComplaintDao.save(baseComplaintDO);
        BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
        baseComplaintOperateLogDO.setOperateFrom(baseComplaintDO.getPatient());
        baseComplaintOperateLogDO.setStatus("0");
        baseComplaintOperateLogDO.setOperateType("投诉提交");
        baseComplaintOperateLogDO.setRelationCode(baseComplaintDO.getId());
        baseComplaintOperateLogDO.setCreateTime(new Date());
        baseComplaintOperateDao.save(baseComplaintOperateLogDO);
        try {
            List<BaseComplaintDoctorDO> doctorList=baseComplaintDoctorDao.findbyComplaintId(baseComplaintDO.getComplaintId());
            for (BaseComplaintDoctorDO baseComplaintDoctorDO:doctorList){
                String url="";
                String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/complaint/detail?id="+baseComplaintDO.getId();
                enterpriseService.sendTWMesByDoctor("zsyy",baseComplaintDoctorDO.getDoctor(),"投诉反馈","您收到一条投诉反馈,点击查看。",url);
            }
        }catch (Exception e){
@ -256,6 +263,8 @@ public class BaseComplaintService {
            baseComplaintOperateLogDO.setOperateTo(doctor);
            baseComplaintOperateLogDO.setComplaintTo(complaintId);
            baseComplaintOperateLogDO.setComplaintFrom(baseComplaintDO.getComplaintId());
            baseComplaintOperateLogDO.setStatus("3");
            baseComplaintOperateLogDO.setOperateType("转交");
            baseComplaintOperateLogDO.setRelationCode(id);
            baseComplaintOperateLogDO.setCreateTime(new Date());
            baseComplaintOperateDao.save(baseComplaintOperateLogDO);
@ -275,7 +284,7 @@ public class BaseComplaintService {
            try {
                List<BaseComplaintDoctorDO> doctorList=baseComplaintDoctorDao.findbyComplaintId(baseComplaintDO.getComplaintId());
                for (BaseComplaintDoctorDO baseComplaintDoctorDO:doctorList){
                    String url="";
                    String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/complaint/detail?id="+baseComplaintDO.getId();
                    enterpriseService.sendTWMesByDoctor("zsyy",baseComplaintDoctorDO.getDoctor(),"投诉反馈","您收到一条投诉反馈,点击查看。",url);
                }
            }catch (Exception e){
@ -297,6 +306,13 @@ public class BaseComplaintService {
            baseComplaintDO.setAcceptor(doctor);
            baseComplaintDO.setAcceptTime(new Date());
            baseComplaintDao.save(baseComplaintDO);
            BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
            baseComplaintOperateLogDO.setOperateFrom(doctor);
            baseComplaintOperateLogDO.setStatus("1");
            baseComplaintOperateLogDO.setOperateType("接受");
            baseComplaintOperateLogDO.setRelationCode(id);
            baseComplaintOperateLogDO.setCreateTime(new Date());
            baseComplaintOperateDao.save(baseComplaintOperateLogDO);
        }else if ("1".equalsIgnoreCase(baseComplaintDO.getStatus())){
            throw new Exception("该工单已被接受");
        }else {
@ -323,6 +339,13 @@ public class BaseComplaintService {
                baseComplaintDO.setOperatorDeptName(baseDoctorHospitalDO.get(0).getDeptName());
            }
            baseComplaintDao.save(baseComplaintDO);
            BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
            baseComplaintOperateLogDO.setOperateFrom(operator);
            baseComplaintOperateLogDO.setStatus("2");
            baseComplaintOperateLogDO.setOperateType("反馈");
            baseComplaintOperateLogDO.setRelationCode(id);
            baseComplaintOperateLogDO.setCreateTime(new Date());
            baseComplaintOperateDao.save(baseComplaintOperateLogDO);
        }else if ("2".equalsIgnoreCase(baseComplaintDO.getStatus())){
            throw new Exception("该工单已被处理完成");
        }else if ("0".equalsIgnoreCase(baseComplaintDO.getStatus())){
@ -556,28 +579,33 @@ public class BaseComplaintService {
    * 查询投诉数量*/
    public Map<String,Object> findComplaintCount(String doctor,String role){
        BaseComplaintDoctorDO baseComplaintDoctorDO=baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
        Boolean queryAll=false;
        if ("admin".equalsIgnoreCase(role)){
            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 cacel=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");
            }
        }
        Integer total = complaints+recieve+deal;
        Integer total = complaints+recieve+deal+cacel;
        Map map=new HashMap();
        map.put("complaints",complaints);
        map.put("recieve",recieve);
        map.put("deal",deal);
        map.put("cacel",cacel);
        map.put("total",total);
        return map;
    }
@ -589,19 +617,103 @@ public class BaseComplaintService {
        Integer complaints=0;
        Integer recieve=0;
        Integer deal=0;
        Integer cacel=0;
        complaints=baseComplaintDao.getCountByStatusByPatient("0",patient);
        recieve=baseComplaintDao.getCountByStatusByPatient("1",patient);
        deal=baseComplaintDao.getCountByStatusByPatient("2",patient);
        cacel=baseComplaintDao.getCountByStatusByPatient("-1",patient);
        Integer total = complaints+recieve+deal;
        Integer total = complaints+recieve+deal+cacel;
        Map map=new HashMap();
        map.put("complaints",complaints);
        map.put("recieve",recieve);
        map.put("deal",deal);
        map.put("cacel",cacel);
        map.put("total",total);
        return map;
    }
    public BaseComplaintDO  cancelPaitentComplaint(String id,String patient) throws  Exception{
        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
       if (baseComplaintDO!=null){
           if ("0".equalsIgnoreCase(baseComplaintDO.getStatus())){
               baseComplaintDO.setStatus("-1");
               baseComplaintDO=baseComplaintDao.save(baseComplaintDO);
               BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
               baseComplaintOperateLogDO.setOperateFrom(patient);
               baseComplaintOperateLogDO.setStatus("-1");
               baseComplaintOperateLogDO.setOperateType("居民撤销投诉");
               baseComplaintOperateLogDO.setRelationCode(baseComplaintDO.getId());
               baseComplaintOperateLogDO.setCreateTime(new Date());
               baseComplaintOperateDao.save(baseComplaintOperateLogDO);
           }else {
               throw new Exception("不允许撤销");
           }
       }
       return baseComplaintDO;
    }
    public List<Map<String,Object>> findComplaintOperateLog(String complaintId){
        String sql ="select t.id as \"id\"," +
                " p.name as \"complaintNameFrom\" ," +
                " n.name as \"complaintNameto\", " +
                " t.operate_from as \"operateFrom\" ," +
                " t.operate_to as \"operateTo\" ," +
                " t.cancel_by as \"cancelBy\", " +
                " t.operate_type as \"operateType\", " +
                " t.status as \"status\", " +
                " t.create_time as \"createTime\" ," +
                " b.name as \"patientName\", " +
                " t.relation_code as \"relationCode\" " +
                " from base_complaint_operate_log t left join base_complaint c" +
                " on t.relation_code=c.id" +
                " left join base_patient b on t.cancel_by=b.id " +
                " left join base_complaint_dict p on t.complaint_from= p.id" +
                " left join base_complaint_dict n on t.complaint_to=n.id where 1=1 " ;
        if (StringUtils.isNoneBlank(complaintId)){
            sql+=" and t.relation_code='"+complaintId+"'";
        }
        sql+=" order by t.create_time desc";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql);
        List<WlyyHospitalSysDictDO> typeList=wlyyHospitalSysDictDao.findByDictName("complaintStatus");
        for (Map<String,Object> map:list){
            if (map.get("operateFrom")!=null){
                if (map.get("status")!=null){
                    for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:typeList){
                        if (map.get("status").toString().equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
                            map.put("operateType",wlyyHospitalSysDictDO.getDictValue());
                        }
                    }
                    if ("0".equalsIgnoreCase(map.get("status").toString())||"-1".equalsIgnoreCase(map.get("status").toString())){
                        BasePatientDO basePatientDO = basePatientDao.findById(map.get("operateFrom").toString());
                        if (basePatientDO!=null){
                            map.put("operateFromName",basePatientDO.getName());
                        }
                    }else {
                        BaseDoctorDO baseDoctorDO= baseDoctorDao.findById(map.get("operateFrom").toString());
                        if (baseDoctorDO!=null){
                            map.put("operateFromName",baseDoctorDO.getName());
                        }
                        List<BaseDoctorHospitalDO> baseDoctorHospitalDO= baseDoctorHospitalDao.findByDoctorCode(map.get("operateFrom").toString());
                        if (baseDoctorHospitalDO!=null&&baseDoctorHospitalDO.size()>0){
                            map.put("operateFromDeptName",baseDoctorHospitalDO.get(0).getDeptName());
                        }
                    }
                }
            }
            if (map.get("operateTo")!=null){
                BaseDoctorDO baseDoctorDO= baseDoctorDao.findById(map.get("operateTo").toString());
                if (baseDoctorDO!=null){
                    map.put("operateToName",baseDoctorDO.getName());
                }
                List<BaseDoctorHospitalDO> baseDoctorHospitalDO= baseDoctorHospitalDao.findByDoctorCode(map.get("operateTo").toString());
                if (baseDoctorHospitalDO!=null&&baseDoctorHospitalDO.size()>0){
                    map.put("operateToDeptName",baseDoctorHospitalDO.get(0).getDeptName());
                }
            }
        }
    return list;
    }
}

+ 28 - 18
business/base-service/src/main/java/com/yihu/jw/order/BusinessOrderService.java

@ -1418,7 +1418,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                }
            }
        }else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("2")||businessOrderDO.getOrderCategory().equalsIgnoreCase("3")){
        }else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("2")||businessOrderDO.getOrderCategory().equalsIgnoreCase("3")||businessOrderDO.getOrderCategory().equalsIgnoreCase("5")){
           WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findById(businessOrderDO.getRelationCode());
           wlyyOutpatientDO.setPayStatus(1);
           WlyyOutpatientDO outpatientDO = outpatientDao.save(wlyyOutpatientDO);
@ -1446,15 +1446,20 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                   age = IdCardUtil.getAgeForIdcard(patientDO.getIdcard())+"";
               }
               if (outpatientDO!=null){
                   if (outpatientDO.getType().equalsIgnoreCase("1")){
                       title = "图文复诊";
                       type="9";
                       msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看";
                   }else if (outpatientDO.getType().equalsIgnoreCase("2")){
                       title = "视频复诊";
                       type="16";
                       date = DateUtil.dateToStrLong(outpatientDO.getRegisterDate());
                       msg = name+"("+sex+" "+age+"岁)预约了"+date+"的视频复诊,点击查看";
                   if (outpatientDO.getOutpatientType().equalsIgnoreCase("2")){
                       title = "协同复诊";
                       msg = name+"("+sex+" "+age+"岁)向您发起了协同复诊,点击查看";
                   }else {
                       if (outpatientDO.getType().equalsIgnoreCase("1")){
                           title = "图文复诊";
                           type="9";
                           msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看";
                       }else if (outpatientDO.getType().equalsIgnoreCase("2")){
                           title = "视频复诊";
                           type="16";
                           date = DateUtil.dateToStrLong(outpatientDO.getRegisterDate());
                           msg = name+"("+sex+" "+age+"岁)预约了"+date+"的视频复诊,点击查看";
                       }
                   }
               }
               if (wechatId.equalsIgnoreCase("xm_zsyy_wx")){
@ -1560,7 +1565,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                    System.out.println("发送企业模板消息成功");
                }
            }
        }else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("2")||businessOrderDO.getOrderCategory().equalsIgnoreCase("3")&&0==businessOrderDO.getStatus()){
        }else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("2")||businessOrderDO.getOrderCategory().equalsIgnoreCase("3")||businessOrderDO.getOrderCategory().equalsIgnoreCase("5")&&0==businessOrderDO.getStatus()){
            WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findById(businessOrderDO.getRelationCode());
            wlyyOutpatientDO.setPayStatus(1);
            WlyyOutpatientDO outpatientDO = outpatientDao.save(wlyyOutpatientDO);
@ -1580,13 +1585,18 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
                    age = IdCardUtil.getAgeForIdcard(patientDO.getIdcard())+"";
                }
                if (outpatientDO!=null){
                    if (outpatientDO.getType().equalsIgnoreCase("1")){
                        title = "图文复诊";
                        msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看";
                    }else if (outpatientDO.getType().equalsIgnoreCase("2")){
                        title = "视频复诊";
                        date = DateUtil.dateToStrLong(outpatientDO.getRegisterDate());
                        msg = name+"("+sex+" "+age+"岁)预约了"+date+"的视频复诊,点击查看";
                    if (outpatientDO.getOutpatientType().equalsIgnoreCase("2")){
                        title = "协同复诊";
                        msg = name+"("+sex+" "+age+"岁)向您发起了协同复诊,点击查看";
                    }else {
                        if (outpatientDO.getType().equalsIgnoreCase("1")){
                            title = "图文复诊";
                            msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看";
                        }else if (outpatientDO.getType().equalsIgnoreCase("2")){
                            title = "视频复诊";
                            date = DateUtil.dateToStrLong(outpatientDO.getRegisterDate());
                            msg = name+"("+sex+" "+age+"岁)预约了"+date+"的视频复诊,点击查看";
                        }
                    }
                }
                if (wxId.equalsIgnoreCase("xm_zsyy_wx")){

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

@ -253,7 +253,7 @@ public class BaseComplaintDO  extends UuidIdentityEntity {
    }
    @Column(name = "accept_time")
    public Date getAcceptTime() {
        return acceptTime;
            return acceptTime;
    }
    public void setAcceptTime(Date acceptTime) {

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

@ -16,6 +16,35 @@ public class BaseComplaintOperateLogDO extends UuidIdentityEntity {
    private Date createTime;
    private String  complaintFrom;
    private String  complaintTo;
    private String  status;
    private String  operateType;
    private String  cancelBy;
    @Column(name = "cancel_by")
    public String getCancelBy() {
        return cancelBy;
    }
    public void setCancelBy(String cancelBy) {
        this.cancelBy = cancelBy;
    }
    @Column(name = "status")
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    @Column(name = "operate_type")
    public String getOperateType() {
        return operateType;
    }
    public void setOperateType(String operateType) {
        this.operateType = operateType;
    }
    @Column(name = "relation_code")
    public String getRelationCode() {
        return relationCode;

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

@ -279,24 +279,6 @@ 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;
    }
    private String latLon;//定位经纬度
    public String getCardType() {

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

@ -343,4 +343,36 @@ public class BaseComplaintEndPoint  extends EnvelopRestEndpoint {
            return failedException(e);
        }
    }
    /**
     * 居民撤销反馈
     * @return
     */
    @GetMapping(value = "/cancelPatientComplaint")
    @ApiOperation(value = "居民撤销反馈", notes = "居民撤销反馈")
    public Envelop cancelPatientComplaint(@ApiParam(name = "id", value = "id", required = false)
                                               @RequestParam(value = "id", required = false) String id,
                                          @ApiParam(name = "patient", value = "patient", required = false)
                                          @RequestParam(value = "patient", required = false) String patient) throws Exception {
        try {
            return success(baseComplaintService.cancelPaitentComplaint(id,patient)) ;
        }catch (Exception e){
            return failedException(e);
        }
    }
    /**
     * 查询进度
     * @return
     */
    @GetMapping(value = "/findComplaintOperateLog")
    @ApiOperation(value = "查询反馈进度", notes = "查询反馈进度")
    public Envelop findComplaintOperateLog(@ApiParam(name = "id", value = "id", required = false)
                                          @RequestParam(value = "id", required = false) String id) throws Exception {
        try {
            return success(baseComplaintService.findComplaintOperateLog(id)) ;
        }catch (Exception e){
            return failedException(e);
        }
    }
}