|
@ -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;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|