|
@ -17,6 +17,8 @@ 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.entity.hospital.consult.WlyyHospitalSysDictDO;
|
|
|
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
|
|
|
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import com.yihu.jw.restmodel.web.MixEnvelop;
|
|
@ -57,6 +59,8 @@ public class BaseComplaintService {
|
|
|
private BasePatientDao basePatientDao;
|
|
|
@Autowired
|
|
|
private EnterpriseService enterpriseService;
|
|
|
@Autowired
|
|
|
private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
|
|
|
@Value("${wechat.id}")
|
|
|
private String wxId;
|
|
|
@Value("${wechat.flag}")
|
|
@ -196,6 +200,14 @@ public class BaseComplaintService {
|
|
|
* 患者举报接口
|
|
|
* */
|
|
|
public BaseComplaintDO patiemtComplaint(String json) throws Exception{
|
|
|
WlyyHospitalSysDictDO wlyyHospitalSysDictDO= wlyyHospitalSysDictDao.findById("complaintOpenControl");
|
|
|
if (wlyyHospitalSysDictDO!=null){
|
|
|
if (!"1".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
|
|
|
throw new Exception("投诉通道已关闭");
|
|
|
}
|
|
|
}else {
|
|
|
throw new Exception("投诉通道已关闭");
|
|
|
}
|
|
|
BaseComplaintDO baseComplaintDO =objectMapper.readValue(json,BaseComplaintDO.class);
|
|
|
BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(baseComplaintDO.getComplaintId());
|
|
|
if (baseComplaintDictDO!=null){
|
|
@ -207,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());
|
|
@ -215,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){
|
|
@ -244,17 +263,19 @@ 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);
|
|
|
BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
|
|
|
/*BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
|
|
|
if (null != baseDoctorDO) {
|
|
|
doctorName=baseDoctorDO.getName();
|
|
|
baseComplaintDO.setAcceptorName(doctorName);
|
|
|
}
|
|
|
baseComplaintDO.setAcceptor(doctor);
|
|
|
baseComplaintDO.setAcceptor(doctor);*/
|
|
|
baseComplaintDO.setComplaintId(complaintId);
|
|
|
BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(id);
|
|
|
BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(complaintId);
|
|
|
if (baseComplaintDictDO!=null){
|
|
|
complaitTypeName=baseComplaintDictDO.getName();
|
|
|
baseComplaintDO.setComplaintName(complaitTypeName);
|
|
@ -263,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){
|
|
@ -285,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 {
|
|
@ -311,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())){
|
|
@ -320,16 +355,12 @@ public class BaseComplaintService {
|
|
|
}
|
|
|
|
|
|
//查询投诉列表
|
|
|
public MixEnvelop findComplaintList(String doctor,String status,String patientName,String patientId,String keyWord,String complaintId,
|
|
|
public MixEnvelop findComplaintList(String role,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;
|
|
|
for (BaseDoctorRoleDO baseDoctorRoleDO:rolelist){
|
|
|
if ("admin".equalsIgnoreCase(baseDoctorRoleDO.getRoleCode())){
|
|
|
queryAll=true;
|
|
|
break;
|
|
|
}
|
|
|
if ("admin".equalsIgnoreCase(role)){
|
|
|
queryAll=true;
|
|
|
}
|
|
|
String sql="select t.id as \"id\"," +
|
|
|
" t.complaint_id as \"complaintId\"," +
|
|
@ -389,6 +420,9 @@ public class BaseComplaintService {
|
|
|
}else {
|
|
|
return null;
|
|
|
}
|
|
|
if (!StringUtils.isNoneBlank(status)){
|
|
|
sql+=" and t.status !='-1'";
|
|
|
}
|
|
|
}else {
|
|
|
if (StringUtils.isNoneBlank(complaintId)){
|
|
|
//sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
|
|
@ -546,35 +580,141 @@ public class BaseComplaintService {
|
|
|
}
|
|
|
/*
|
|
|
* 查询投诉数量*/
|
|
|
public Map<String,Object> findComplaintCount(String doctor){
|
|
|
public Map<String,Object> findComplaintCount(String doctor,String role){
|
|
|
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 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+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 Map<String,Object> findComplaintCountPatient(String patient){
|
|
|
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\" ," +
|
|
|
" 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_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;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|