BaseComplaintService.java 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924
  1. package com.yihu.jw.complaint;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.fasterxml.jackson.databind.ObjectMapper;
  6. import com.yihu.jw.dict.dao.DictHospitalDeptDao;
  7. import com.yihu.jw.doctor.dao.BaseDoctorDao;
  8. import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
  9. import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
  10. import com.yihu.jw.entity.base.complaint.BaseComplaintDO;
  11. import com.yihu.jw.entity.base.complaint.BaseComplaintDictDO;
  12. import com.yihu.jw.entity.base.complaint.BaseComplaintDoctorDO;
  13. import com.yihu.jw.entity.base.complaint.BaseComplaintOperateLogDO;
  14. import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
  15. import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
  16. import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
  17. import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
  18. import com.yihu.jw.entity.base.patient.BasePatientDO;
  19. import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
  20. import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
  21. import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
  22. import com.yihu.jw.patient.dao.BasePatientDao;
  23. import com.yihu.jw.restmodel.web.MixEnvelop;
  24. import com.yihu.jw.utils.StringUtil;
  25. import com.yihu.jw.utils.hibernate.HibenateUtils;
  26. import com.yihu.jw.wechat.enterprise.EnterpriseService;
  27. import jdk.management.resource.internal.TotalResourceContext;
  28. import org.apache.commons.lang3.StringUtils;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.beans.factory.annotation.Value;
  31. import org.springframework.stereotype.Service;
  32. import org.springframework.transaction.annotation.Transactional;
  33. import javax.persistence.criteria.CriteriaBuilder;
  34. import java.text.SimpleDateFormat;
  35. import java.util.*;
  36. @Service
  37. public class BaseComplaintService {
  38. @Autowired
  39. private BaseComplaintDictDao baseComplaintDictDao;
  40. @Autowired
  41. private BaseComplaintDoctorDao baseComplaintDoctorDao;
  42. @Autowired
  43. private BaseDoctorDao baseDoctorDao;
  44. @Autowired
  45. private BaseDoctorHospitalDao baseDoctorHospitalDao;
  46. @Autowired
  47. private HibenateUtils hibenateUtils;
  48. @Autowired
  49. private BaseComplaintDao baseComplaintDao;
  50. @Autowired
  51. private ObjectMapper objectMapper;
  52. @Autowired
  53. private DictHospitalDeptDao dictHospitalDeptDao;
  54. @Autowired
  55. private BaseComplaintOperateDao baseComplaintOperateDao;
  56. @Autowired
  57. private BaseDoctorRoleDao baseDoctorRoleDao;
  58. @Autowired
  59. private BasePatientDao basePatientDao;
  60. @Autowired
  61. private EnterpriseService enterpriseService;
  62. @Autowired
  63. private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
  64. @Value("${wechat.id}")
  65. private String wxId;
  66. @Value("${wechat.flag}")
  67. private boolean flag;
  68. //修改新增
  69. public BaseComplaintDictDO createOrUpdateDict(String id, String name) {
  70. BaseComplaintDictDO baseComplaintDictDO = new BaseComplaintDictDO();
  71. if (StringUtils.isNoneBlank(id)) {
  72. baseComplaintDictDO = baseComplaintDictDao.findById(id);
  73. baseComplaintDictDO.setName(name);
  74. baseComplaintDictDO.setUpdateTime(new Date());
  75. } else {
  76. baseComplaintDictDO.setIsDel("1");
  77. baseComplaintDictDO.setName(name);
  78. baseComplaintDictDO.setCreateTime(new Date());
  79. }
  80. return baseComplaintDictDao.save(baseComplaintDictDO);
  81. }
  82. //删除
  83. public BaseComplaintDictDO deleteDict(String id) {
  84. BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(id);
  85. if (null != baseComplaintDictDO) {
  86. baseComplaintDictDO.setIsDel("0");
  87. baseComplaintDictDO.setUpdateTime(new Date());
  88. baseComplaintDictDao.save(baseComplaintDictDO);
  89. }
  90. List<BaseComplaintDoctorDO> baseComplaintDoctorDOs = baseComplaintDoctorDao.findbyComplaintId(id);
  91. for (BaseComplaintDoctorDO baseComplaintDoctorDO:baseComplaintDoctorDOs){
  92. baseComplaintDoctorDO.setIsDel("0");
  93. }
  94. baseComplaintDoctorDao.save(baseComplaintDoctorDOs);
  95. return baseComplaintDictDO;
  96. }
  97. public BaseComplaintDictDO findOneDict(String id) {
  98. BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(id);
  99. return baseComplaintDictDO;
  100. }
  101. //查询
  102. public List<BaseComplaintDictDO> findAll(String name) {
  103. List<BaseComplaintDictDO> list = new ArrayList<>();
  104. if (StringUtils.isNoneBlank(name)) {
  105. list = baseComplaintDictDao.findByName(name);
  106. } else {
  107. list = baseComplaintDictDao.findByAll();
  108. }
  109. return list;
  110. }
  111. //新增投诉管理医生
  112. @Transactional
  113. public void createOrUpdateComplainDoctor(String id, String complaintId, String doctorList) throws Exception {
  114. JSONArray jsonArray = JSON.parseArray(doctorList);
  115. for (int i=0;i<jsonArray.size();i++){
  116. JSONObject jsonObject = jsonArray.getJSONObject(i);
  117. String doctor = jsonObject.getString("doctor");
  118. String deptCode = jsonObject.getString("deptCode");
  119. String deptName = "";
  120. String doctorName = "";
  121. BaseComplaintDoctorDO preDoctor= baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
  122. BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
  123. List<BaseDoctorRoleDO> baseDoctorRoleDOs = baseDoctorRoleDao.findByDoctorCode(doctor);
  124. if (baseDoctorRoleDOs==null||baseDoctorRoleDOs.size()==0){
  125. BaseDoctorRoleDO baseDoctorRoleDO = new BaseDoctorRoleDO();
  126. baseDoctorRoleDO.setDoctorCode(doctor);
  127. baseDoctorRoleDO.setRoleCode("specialist");
  128. baseDoctorRoleDao.save(baseDoctorRoleDO);
  129. }else if (baseDoctorRoleDOs!=null){
  130. Boolean addRoleFlag=true;//是否为对应医生添加专科医生角色表示 true即为添加
  131. for (BaseDoctorRoleDO baseDoctorRoleDO :baseDoctorRoleDOs){
  132. if (baseDoctorRoleDO.getRoleCode().equalsIgnoreCase("specialist")){
  133. addRoleFlag=false;
  134. }
  135. }
  136. if(addRoleFlag){
  137. BaseDoctorRoleDO baseDoctorRoleDO = new BaseDoctorRoleDO();
  138. baseDoctorRoleDO.setDoctorCode(doctor);
  139. baseDoctorRoleDO.setRoleCode("specialist");
  140. baseDoctorRoleDao.save(baseDoctorRoleDO);
  141. }
  142. }
  143. if (null != baseDoctorDO) {
  144. doctorName = baseDoctorDO.getName();
  145. }
  146. if (preDoctor!=null){
  147. throw new Exception("医生"+doctorName+"已有负责的投诉类型");
  148. }
  149. List<BaseDoctorHospitalDO> baseDoctorHospitalDO = baseDoctorHospitalDao.findByDeptCodeDoctorCode(deptCode, doctor);
  150. if (baseDoctorHospitalDO != null && baseDoctorHospitalDO.size() > 0) {
  151. deptName = baseDoctorHospitalDO.get(0).getDeptName();
  152. }
  153. if (StringUtils.isNoneBlank(id)) {
  154. BaseComplaintDoctorDO baseComplaintDoctorDO = new BaseComplaintDoctorDO();
  155. baseComplaintDoctorDO.setDept(deptCode);
  156. baseComplaintDoctorDO.setDeptName(deptName);
  157. baseComplaintDoctorDO.setComplaintId(id);
  158. baseComplaintDoctorDO.setDoctor(doctor);
  159. baseComplaintDoctorDO.setDoctorName(doctorName);
  160. baseComplaintDoctorDO.setIsDel("1");
  161. baseComplaintDoctorDO.setCreateTime(new Date());
  162. baseComplaintDoctorDao.save(baseComplaintDoctorDO);
  163. }
  164. }
  165. }
  166. //删除管理医生
  167. public BaseComplaintDoctorDO deleteDoctorComplain(String id) {
  168. BaseComplaintDoctorDO baseComplaintDoctorDO = baseComplaintDoctorDao.findByDelAndId(id);
  169. if (null != baseComplaintDoctorDO) {
  170. baseComplaintDoctorDO.setIsDel("0");
  171. baseComplaintDoctorDO.setUpdateTime(new Date());
  172. baseComplaintDoctorDao.save(baseComplaintDoctorDO);
  173. }
  174. return baseComplaintDoctorDO;
  175. }
  176. public MixEnvelop findComplaintDoctor(String doctor,String doctorName, String deptName, String complaintType, Integer page, Integer pageSize) {
  177. String sql = "select t.id as \"id\"," +
  178. " t.complaint_id as \"complaintId\"," +
  179. " t.doctor as \"doctor\"," +
  180. " t.doctor_name as \"doctorName\"," +
  181. " t.dept as \"dept\"," +
  182. " t.dept_name as \"deptName\"," +
  183. " t.is_del as \"isDel\"," +
  184. " t.create_time as \"createTime\"," +
  185. " t.update_time as \"updateTime\"," +
  186. " d.photo as \"photo\"," +
  187. " b.name as \"name\" " +
  188. " from base_complaint_doctor t left join base_complaint_dict b" +
  189. " on t.complaint_id=b.id " +
  190. " left join base_doctor d on t.doctor=d.id where t.is_del='1'";
  191. if (StringUtils.isNoneBlank(doctorName)) {
  192. sql += " and t.doctor_name like '%" + doctorName + "%'";
  193. }
  194. if (StringUtils.isNoneBlank(deptName)) {
  195. sql += " and t.dept_name like '%" + deptName + "%'";
  196. }
  197. if (StringUtils.isNoneBlank(complaintType)) {
  198. sql += " and t.complaint_id = '" + complaintType + "'";
  199. }
  200. if (StringUtils.isNoneBlank(doctor)) {
  201. sql += " and t.doctor = '" + doctor + "'";
  202. }
  203. sql += "order by t.create_time desc";
  204. List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, pageSize);
  205. List<Map<String, Object>> listCount = hibenateUtils.createSQLQuery(sql);
  206. MixEnvelop mixEnvelop = new MixEnvelop();
  207. mixEnvelop.setTotalCount(listCount == null ? 0 : listCount.size());
  208. mixEnvelop.setPageSize(pageSize);
  209. mixEnvelop.setCurrPage(page);
  210. mixEnvelop.setDetailModelList(list);
  211. return mixEnvelop;
  212. }
  213. public BaseComplaintDoctorDO findOneDoctorComplain(String id) {
  214. BaseComplaintDoctorDO baseComplaintDoctorDO = baseComplaintDoctorDao.findByDelAndId(id);
  215. return baseComplaintDoctorDO;
  216. }
  217. /*
  218. * 患者举报接口
  219. * */
  220. public BaseComplaintDO patiemtComplaint(String json) throws Exception{
  221. WlyyHospitalSysDictDO wlyyHospitalSysDictDO= wlyyHospitalSysDictDao.findById("complaintOpenControl");
  222. if (wlyyHospitalSysDictDO!=null){
  223. if (!"1".equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
  224. throw new Exception("投诉通道已关闭");
  225. }
  226. }else {
  227. throw new Exception("投诉通道已关闭");
  228. }
  229. BaseComplaintDO baseComplaintDO =objectMapper.readValue(json,BaseComplaintDO.class);
  230. BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(baseComplaintDO.getComplaintId());
  231. if (baseComplaintDictDO!=null){
  232. baseComplaintDO.setComplaintName(baseComplaintDictDO.getName());
  233. }
  234. if (StringUtils.isNoneBlank(baseComplaintDO.getVisitDept())){
  235. DictHospitalDeptDO dictHospitalDeptDO=dictHospitalDeptDao.findByCode(baseComplaintDO.getVisitDept());
  236. if (dictHospitalDeptDO!=null){
  237. baseComplaintDO.setVisitDeptName(dictHospitalDeptDO.getName());
  238. }
  239. }
  240. /*if(StringUtils.isNoneBlank(baseComplaintDO.getPatient())){
  241. BasePatientDO basePatientDO= basePatientDao.findById(baseComplaintDO.getPatient());
  242. if (basePatientDO!=null){
  243. basePatientDO.setIdcardFront(baseComplaintDO.getIdcardFront());
  244. basePatientDO.setIdcardBack(baseComplaintDO.getIdcardBack());
  245. basePatientDao.save(basePatientDO);
  246. }
  247. }*/
  248. baseComplaintDO.setIsDel("1");
  249. baseComplaintDO.setStatus("0");
  250. baseComplaintDO.setCreateTime(new Date());
  251. baseComplaintDO.setDefaultdoctor("defalutDoctor");
  252. baseComplaintDO= baseComplaintDao.save(baseComplaintDO);
  253. BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
  254. baseComplaintOperateLogDO.setOperateFrom(baseComplaintDO.getPatient());
  255. baseComplaintOperateLogDO.setStatus("0");
  256. baseComplaintOperateLogDO.setOperateType("投诉提交");
  257. baseComplaintOperateLogDO.setRelationCode(baseComplaintDO.getId());
  258. baseComplaintOperateLogDO.setCreateTime(new Date());
  259. baseComplaintOperateDao.save(baseComplaintOperateLogDO);
  260. try {
  261. List<BaseComplaintDoctorDO> doctorList=baseComplaintDoctorDao.findbyComplaintId(baseComplaintDO.getComplaintId());
  262. for (BaseComplaintDoctorDO baseComplaintDoctorDO:doctorList){
  263. String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/complaint/detail?id="+baseComplaintDO.getId();
  264. enterpriseService.sendTWMesByDoctor("zsyy",baseComplaintDoctorDO.getDoctor(),"投诉反馈","您收到一条投诉反馈,点击查看。",url);
  265. }
  266. }catch (Exception e){
  267. }
  268. return baseComplaintDao.save(baseComplaintDO);
  269. }
  270. /*
  271. * 医生转交
  272. * */
  273. public BaseComplaintDO passTo(String id,String complaintId,String doctor,String operator,String reason){
  274. BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
  275. BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
  276. String doctorName="";
  277. String complaitTypeName="";
  278. if (null!=baseComplaintDO){
  279. baseComplaintOperateLogDO.setOperateFrom(operator);
  280. baseComplaintOperateLogDO.setReason(reason);
  281. baseComplaintOperateLogDO.setOperateTo(doctor);
  282. baseComplaintOperateLogDO.setComplaintTo(complaintId);
  283. baseComplaintOperateLogDO.setComplaintFrom(baseComplaintDO.getComplaintId());
  284. baseComplaintOperateLogDO.setStatus("3");
  285. baseComplaintOperateLogDO.setOperateType("转交");
  286. baseComplaintOperateLogDO.setRelationCode(id);
  287. baseComplaintOperateLogDO.setCreateTime(new Date());
  288. baseComplaintOperateDao.save(baseComplaintOperateLogDO);
  289. /*BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
  290. if (null != baseDoctorDO) {
  291. doctorName=baseDoctorDO.getName();
  292. baseComplaintDO.setAcceptorName(doctorName);
  293. }
  294. baseComplaintDO.setAcceptor(doctor);*/
  295. if ("1".equalsIgnoreCase(baseComplaintDO.getStatus())){
  296. baseComplaintDO.setStatus("0");
  297. }
  298. baseComplaintDO.setDefaultdoctor(doctor);
  299. baseComplaintDO.setComplaintId(complaintId);
  300. baseComplaintDO.setPassto(doctor);
  301. BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(complaintId);
  302. if (baseComplaintDictDO!=null){
  303. complaitTypeName=baseComplaintDictDO.getName();
  304. baseComplaintDO.setComplaintName(complaitTypeName);
  305. }
  306. baseComplaintDO= baseComplaintDao.save(baseComplaintDO);
  307. try {
  308. /*List<BaseComplaintDoctorDO> doctorList=baseComplaintDoctorDao.findbyComplaintId(baseComplaintDO.getComplaintId());
  309. for (BaseComplaintDoctorDO baseComplaintDoctorDO:doctorList)*/
  310. String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/complaint/detail?id="+baseComplaintDO.getId();
  311. enterpriseService.sendTWMesByDoctor("zsyy",doctor,"投诉反馈","您收到一条投诉反馈,点击查看。",url);
  312. }catch (Exception e){
  313. }
  314. return baseComplaintDO;
  315. }
  316. return null;
  317. }
  318. //接受投诉
  319. public BaseComplaintDO doctorAccept(String id,String doctor) throws Exception{
  320. BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
  321. if (baseComplaintDO!=null){
  322. baseComplaintDO.setStatus("1");
  323. BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
  324. if (null != baseDoctorDO) {
  325. baseComplaintDO.setAcceptorName(baseDoctorDO.getName());
  326. }
  327. baseComplaintDO.setAcceptor(doctor);
  328. baseComplaintDO.setDefaultdoctor(doctor);
  329. baseComplaintDO.setAcceptTime(new Date());
  330. baseComplaintDao.save(baseComplaintDO);
  331. BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
  332. baseComplaintOperateLogDO.setOperateFrom(doctor);
  333. baseComplaintOperateLogDO.setStatus("1");
  334. baseComplaintOperateLogDO.setOperateType("接受");
  335. baseComplaintOperateLogDO.setRelationCode(id);
  336. baseComplaintOperateLogDO.setCreateTime(new Date());
  337. baseComplaintOperateDao.save(baseComplaintOperateLogDO);
  338. }/*else if ("1".equalsIgnoreCase(baseComplaintDO.getStatus())){
  339. throw new Exception("该工单已被接受");
  340. }else {
  341. throw new Exception("该工单已被处理完成");
  342. }*/
  343. return baseComplaintDO;
  344. }
  345. //反馈投诉
  346. public BaseComplaintDO dealComplaint(String id,String operator,String content,String imgUrl ,String deptCode) throws Exception{
  347. BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
  348. if (baseComplaintDO!=null){
  349. baseComplaintDO.setDealTime(new Date());
  350. baseComplaintDO.setFeedBack(content);
  351. baseComplaintDO.setFeedImg(imgUrl);
  352. baseComplaintDO.setOperator(operator);
  353. baseComplaintDO.setDefaultdoctor(operator);
  354. baseComplaintDO.setStatus("2");
  355. BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(operator);
  356. if (null != baseDoctorDO) {
  357. baseComplaintDO.setOperatorName(baseDoctorDO.getName());
  358. }
  359. baseComplaintDO.setOperatorDept(deptCode);
  360. List<BaseDoctorHospitalDO> baseDoctorHospitalDO = baseDoctorHospitalDao.findByDeptCodeDoctorCode(deptCode, operator);
  361. if (baseDoctorHospitalDO != null && baseDoctorHospitalDO.size() > 0) {
  362. baseComplaintDO.setOperatorDeptName(baseDoctorHospitalDO.get(0).getDeptName());
  363. }
  364. baseComplaintDao.save(baseComplaintDO);
  365. BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
  366. baseComplaintOperateLogDO.setOperateFrom(operator);
  367. baseComplaintOperateLogDO.setStatus("2");
  368. baseComplaintOperateLogDO.setOperateType("反馈");
  369. baseComplaintOperateLogDO.setRelationCode(id);
  370. baseComplaintOperateLogDO.setCreateTime(new Date());
  371. baseComplaintOperateDao.save(baseComplaintOperateLogDO);
  372. }/*else if ("2".equalsIgnoreCase(baseComplaintDO.getStatus())){
  373. throw new Exception("该工单已被处理完成");
  374. }else if ("0".equalsIgnoreCase(baseComplaintDO.getStatus())){
  375. throw new Exception("该工单未被接收");
  376. }*/
  377. return baseComplaintDO;
  378. }
  379. //查询投诉列表
  380. public MixEnvelop findComplaintList(String role,String doctor,String status,String patientName,String patientId,String keyWord,String complaintId,
  381. String startTime,String endTime,Integer page ,Integer pageSize){
  382. MixEnvelop mixEnvelop = new MixEnvelop();
  383. Boolean queryAll=false;
  384. if ("admin".equalsIgnoreCase(role)){
  385. queryAll=true;
  386. }
  387. String sql="select DISTINCT t.id as \"id\"," +
  388. " t.complaint_id as \"complaintId\"," +
  389. " t.complaint_name as \"complaintName\"," +
  390. " t.complaint_content as \"complaintContent\"," +
  391. " t.visit_type as \"visitType\"," +
  392. " case t.visit_type when '1' then '门诊' else '住院' end as \"visitTypeName\"," +
  393. " t.visit_time as \"visitTime\"," +
  394. " t.visit_dept as \"visitDept\"," +
  395. " t.visit_dept_name as \"visitDeptName\"," +
  396. " t.adm_no as \"admNo\"," +
  397. " t.patient as \"patient\"," +
  398. " t.patient_name as \"patientName\"," +
  399. " t.patient_idcard as \"patientIdcard\"," +
  400. " t.idcard_front as \"idcardFront\"," +
  401. " t.idcard_back as \"idcardBack\"," +
  402. " t.img_url as \"imgUrl\"," +
  403. " t.is_del as \"isDel\"," +
  404. " t.status as \"status\"," +
  405. " t.create_time as \"createTime\"," +
  406. " t.accept_time as \"acceptTime\"," +
  407. " t.deal_time as \"dealTime\"," +
  408. " t.operator_dept as \"operatorDept\"," +
  409. " t.operator_dept_name as \"operatorDeptName\"," +
  410. " t.operator as \"operator\"," +
  411. " t.operator_name as \"operatorName\"," +
  412. " t.feed_back as \"feedBack\"," +
  413. " t.feed_img as \"feedImg\"," +
  414. " t.acceptor as \"acceptor\"," +
  415. " t.mobile as \"mobile\"," +
  416. " t.passto as \"passto\"," +
  417. " t.acceptor_name as \"acceptorName\"" +
  418. "from base_complaint t " +
  419. " left join base_patient b on t.patient=b.id " ;
  420. sql+=" left join base_complaint_operate_log g on t.id=g.relation_code where t.is_del=1 ";
  421. if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
  422. sql+=" and g.status='3' ";
  423. }/*else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
  424. sql+=" and g.status='1' ";
  425. }
  426. else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
  427. sql+=" and g.status='2' ";
  428. }*/
  429. if (!queryAll){
  430. BaseComplaintDoctorDO baseComplaintDoctorDO= baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
  431. /*List<BaseComplaintOperateLogDO> logList =baseComplaintOperateDao.findbyOperateFrom(doctor);
  432. String types= "";
  433. if (logList!=null&&logList.size()>0){
  434. for (int i=0;i<logList.size();i++){
  435. if (i==logList.size()-1){
  436. types+=logList.get(i).getComplaintTo();
  437. }else {
  438. types+=logList.get(i).getComplaintTo()+",";
  439. }
  440. }
  441. }*/
  442. String complaint="";
  443. if (baseComplaintDoctorDO!=null){
  444. if (baseComplaintDoctorDO.getComplaintId().equalsIgnoreCase("808080eb7a194099017a1943fa820004")){
  445. complaint=baseComplaintDoctorDO.getComplaintId();
  446. }
  447. }
  448. //complaint=complaint+","+types;
  449. if (StringUtils.isNoneBlank(complaint)){
  450. if (!StringUtils.isNoneBlank(status)){
  451. sql+=" and t.status !='-1'";
  452. sql+=" and (t.defaultdoctor ='defalutDoctor' or t.defaultdoctor='"+doctor+"')";
  453. }
  454. if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
  455. sql+=" and g.operate_from='"+doctor+"'";
  456. }else {
  457. sql+=" and t.complaint_id='"+complaint+"'";
  458. }
  459. if (!StringUtils.isNoneBlank(status)){
  460. sql+=" or (g.operate_from='"+doctor+"' and g.status='3')";
  461. }
  462. if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
  463. sql+=" and g.operate_from='"+doctor+"'";
  464. }else if (StringUtils.isNoneBlank(status)&&"0".equalsIgnoreCase(status)){
  465. sql+=" and t.status='0' and (t.passto='"+doctor+"' or t.passto is null )";
  466. } else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
  467. sql+=" and t.status='1' and t.acceptor='"+doctor+"' ";
  468. } else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
  469. sql+=" and t.status='2' and t.operator='"+doctor+"' ";
  470. }
  471. //sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
  472. }else {
  473. if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
  474. sql+=" and g.operate_from='"+doctor+"'";
  475. }else if (StringUtils.isNoneBlank(status)&&"0".equalsIgnoreCase(status)){
  476. sql+=" and t.status='0' and t.passto='"+doctor+"'";
  477. } else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
  478. sql+=" and t.status='1' and t.acceptor='"+doctor+"' ";
  479. } else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
  480. sql+=" and t.status='2' and t.operator='"+doctor+"' ";
  481. } else {
  482. sql+=" and t.id IN (select col.relation_code from base_complaint_operate_log col where col.operate_to = '"+doctor+"' )";
  483. }
  484. }
  485. //complaint=complaint+","+types;
  486. }else {
  487. if (StringUtils.isNoneBlank(complaintId)){
  488. //sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
  489. sql+=" and t.complaint_id='"+complaintId+"'";
  490. }
  491. if (StringUtils.isNoneBlank(status)){
  492. sql+=" and t.status ='"+status+"'";
  493. }
  494. }
  495. if (StringUtils.isNoneBlank(patientName)){
  496. sql+=" and t.patient_name like '%"+patientName+"%'";
  497. }
  498. if (StringUtils.isNoneBlank(patientId)){
  499. sql+=" and t.patient ='"+patientId+"'";
  500. }
  501. if (StringUtils.isNoneBlank(keyWord)){
  502. sql+=" and (t.patient_idcard like '%"+keyWord+"%' or t.patient_name like '%"+keyWord+"%')";
  503. }
  504. if (StringUtils.isNotBlank(startTime)){
  505. if("xm_ykyy_wx".equals(wxId)){
  506. if (flag){
  507. sql+=" and t.create_time > '"+startTime+"'";
  508. }else {
  509. sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
  510. }
  511. }else{
  512. sql+=" and t.create_time > '"+startTime+"'";
  513. }
  514. }
  515. if (StringUtils.isNotBlank(endTime)){
  516. if("xm_ykyy_wx".equals(wxId)){
  517. if (flag){
  518. sql+=" and t.create_time<='" + endTime + "'";
  519. }else {
  520. sql+=" and t.create_time<= to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
  521. }
  522. }else{
  523. sql+=" and t.create_time<='" + endTime + "'";
  524. }
  525. }
  526. sql+=" order by t.create_time desc ";
  527. System.out.println("sql"+sql);
  528. List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
  529. String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
  530. Long count = 0L;
  531. List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
  532. if(total!=null){
  533. //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
  534. count = hibenateUtils.objTransformLong(total.get(0).get("total"));
  535. }
  536. mixEnvelop.setTotalCount(count.intValue());
  537. mixEnvelop.setDetailModelList(list);
  538. mixEnvelop.setPageSize(pageSize);
  539. mixEnvelop.setCurrPage(page);
  540. return mixEnvelop;
  541. }
  542. public BaseComplaintDO findOnePaitentComplaint(String id){
  543. BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
  544. BasePatientDO basePatientDO=basePatientDao.findById(baseComplaintDO.getPatient());
  545. if (null!=basePatientDO){
  546. baseComplaintDO.setMobile(basePatientDO.getMobile());
  547. }
  548. WlyyHospitalSysDictDO wlyyHospitalSysDictDO =wlyyHospitalSysDictDao.findById("latestFeedBackTime");
  549. Integer timeOut=15;
  550. if (wlyyHospitalSysDictDO!=null){
  551. timeOut =Integer.parseInt(wlyyHospitalSysDictDO.getDictValue());
  552. }
  553. long latestDate=baseComplaintDO.getCreateTime().getTime()+timeOut*24*60*60*1000;
  554. baseComplaintDO.setLatestFeedTime( (new Date(latestDate)));
  555. baseComplaintDO.setVisitTypeName(baseComplaintDO.getVisitType().equalsIgnoreCase("1")?"门诊":"住院");
  556. return baseComplaintDO;
  557. }
  558. //查询投诉列表
  559. public MixEnvelop findPatientComplaintList(String status,String patientName,String patientId,
  560. String startTime,String endTime,String complaintType,Integer page ,Integer pageSize){
  561. MixEnvelop mixEnvelop = new MixEnvelop();
  562. String sql="select t.id as \"id\"," +
  563. " t.complaint_id as \"complaintId\"," +
  564. " t.complaint_name as \"complaintName\"," +
  565. " t.complaint_content as \"complaintContent\"," +
  566. " t.visit_type as \"visitType\"," +
  567. " case t.visit_type when '1' then '门诊' else '住院' end as \"visitTypeName\"," +
  568. " t.visit_time as \"visitTime\"," +
  569. " t.visit_dept as \"visitDept\"," +
  570. " t.visit_dept_name as \"visitDeptName\"," +
  571. " t.adm_no as \"admNo\"," +
  572. " t.patient as \"patient\"," +
  573. " t.patient_name as \"patientName\"," +
  574. " t.patient_idcard as \"patientIdcard\"," +
  575. " t.idcard_front as \"idcardFront\"," +
  576. " t.idcard_back as \"idcardBack\"," +
  577. " t.img_url as \"imgUrl\"," +
  578. " t.is_del as \"isDel\"," +
  579. " t.status as \"status\"," +
  580. " t.create_time as \"createTime\"," +
  581. " t.accept_time as \"acceptTime\"," +
  582. " t.deal_time as \"dealTime\"," +
  583. " t.operator_dept as \"operatorDept\"," +
  584. " t.operator_dept_name as \"operatorDeptName\"," +
  585. " t.operator as \"operator\"," +
  586. " t.operator_name as \"operatorName\"," +
  587. " t.feed_back as \"feedBack\"," +
  588. " t.feed_img as \"feedImg\"," +
  589. " t.acceptor as \"acceptor\"," +
  590. " t.mobile as \"mobile\"," +
  591. " t.acceptor_name as \"acceptorName\"" +
  592. " from base_complaint t " +
  593. " left join base_patient b on t.patient=b.id" +
  594. " where t.is_del=1";
  595. if (StringUtils.isNoneBlank(status)){
  596. sql+=" and t.status ='"+status+"'";
  597. }
  598. if (StringUtils.isNoneBlank(patientName)){
  599. sql+=" and t.patient_name like '%"+patientName+"%'";
  600. }
  601. if (StringUtils.isNoneBlank(patientId)){
  602. sql+=" and t.patient ='"+patientId+"'";
  603. }
  604. if (StringUtils.isNoneBlank(complaintType)){
  605. sql+=" and t.complaint_id ='"+complaintType+"'";
  606. }
  607. if (StringUtils.isNotBlank(startTime)){
  608. if("xm_ykyy_wx".equals(wxId)){
  609. if (flag){
  610. sql+=" and t.create_time > '"+startTime+"'";
  611. }else {
  612. sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
  613. }
  614. }else{
  615. sql+=" and t.create_time > '"+startTime+"'";
  616. }
  617. }
  618. if (StringUtils.isNotBlank(endTime)){
  619. if("xm_ykyy_wx".equals(wxId)){
  620. if (flag){
  621. sql+=" and t.create_time<='" + endTime + "'";
  622. }else {
  623. sql+=" and t.create_time<= to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
  624. }
  625. }else{
  626. sql+=" and t.create_time<='" + endTime + "'";
  627. }
  628. }
  629. sql+=" order by t.create_time desc ";
  630. List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
  631. String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
  632. Long count = 0L;
  633. List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
  634. if(total!=null){
  635. //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
  636. count = hibenateUtils.objTransformLong(total.get(0).get("total"));
  637. }
  638. mixEnvelop.setTotalCount(count.intValue());
  639. mixEnvelop.setDetailModelList(list);
  640. mixEnvelop.setPageSize(pageSize);
  641. mixEnvelop.setCurrPage(page);
  642. return mixEnvelop;
  643. }
  644. /*
  645. * 查询投诉数量*/
  646. public Map<String,Object> findComplaintCount(String doctor,String role){
  647. BaseComplaintDoctorDO baseComplaintDoctorDO=baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
  648. Integer complaints=0;
  649. Integer recieve=0;
  650. Integer deal=0;
  651. Integer cacel=0;
  652. Integer passto=0;
  653. Integer total=0;
  654. if (baseComplaintDoctorDO!=null){
  655. Boolean queryAll=false;
  656. if ("admin".equalsIgnoreCase(role)){
  657. queryAll=true;
  658. }
  659. if (!queryAll){
  660. if ("808080eb7a194099017a1943fa820004".equalsIgnoreCase(baseComplaintDoctorDO.getComplaintId())) {
  661. complaints = getCountByStatus(doctor,"0",role);
  662. recieve = getCountByStatus(doctor,"1",role);
  663. deal = getCountByStatus(doctor,"2",role);
  664. passto = getCountByPassto(doctor);
  665. total = getCountByStatus(doctor,"",role);
  666. }else{
  667. complaints=getCountByStatus(doctor,"0",role);
  668. recieve=getCountByStatus(doctor,"1",role);
  669. deal=getCountByStatus(doctor,"2",role);
  670. passto=getCountByPassto(doctor);
  671. total=getCountByStatus(doctor,"",role);
  672. }
  673. //cacel=baseComplaintDao.getCountByStatusAndComplaintId("-1",baseComplaintDoctorDO.getComplaintId());
  674. }else {
  675. complaints=baseComplaintDao.getCountByStatus("0");
  676. recieve=baseComplaintDao.getCountByStatus("1");
  677. deal=baseComplaintDao.getCountByStatus("2");
  678. cacel=baseComplaintDao.getCountByStatus("-1");
  679. total = complaints+recieve+deal+cacel;
  680. }
  681. }
  682. Map map=new HashMap();
  683. map.put("complaints",complaints);
  684. map.put("recieve",recieve);
  685. map.put("deal",deal);
  686. map.put("passto",passto);
  687. map.put("cacel",cacel);
  688. map.put("total",total);
  689. return map;
  690. }
  691. public Integer getCountByPassto(String doctor){
  692. String sql ="select count(1) as \"total\" from (select DISTINCT t.id from base_complaint t left join base_complaint_operate_log b" +
  693. " on t.id=b.relation_code where t.is_del='1' and b.status='3'";
  694. if (StringUtils.isNoneBlank(doctor)){
  695. sql+=" and b.operate_from='"+doctor+"'";
  696. }
  697. sql+=") m";
  698. List<Map<String,Object>> listcount=hibenateUtils.createSQLQuery(sql);
  699. Integer count=0;
  700. if (listcount!=null&&listcount.size()>0){
  701. count=Integer.valueOf(listcount.get(0).get("total").toString());
  702. }
  703. return count;
  704. }
  705. public Integer getCountByStatus(String doctor,String status,String role){
  706. Boolean queryAll=false;
  707. if ("admin".equalsIgnoreCase(role)){
  708. queryAll=true;
  709. }
  710. String sql="select count(1) as \"count\" from (select DISTINCT t.id "+
  711. " from base_complaint t " +
  712. " left join base_patient b on t.patient=b.id " ;
  713. sql+=" left join base_complaint_operate_log g on t.id=g.relation_code where t.is_del=1 ";
  714. if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
  715. sql+=" and g.status='3' ";
  716. } /*else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
  717. sql+=" and g.status='1' ";
  718. }
  719. else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
  720. sql+=" and g.status='2' ";
  721. }*/
  722. if (!queryAll){
  723. BaseComplaintDoctorDO baseComplaintDoctorDO= baseComplaintDoctorDao.findbyDoctorAndDel(doctor);
  724. /*List<BaseComplaintOperateLogDO> logList =baseComplaintOperateDao.findbyOperateFrom(doctor);
  725. String types= "";
  726. if (logList!=null&&logList.size()>0){
  727. for (int i=0;i<logList.size();i++){
  728. if (i==logList.size()-1){
  729. types+=logList.get(i).getComplaintTo();
  730. }else {
  731. types+=logList.get(i).getComplaintTo()+",";
  732. }
  733. }
  734. }*/
  735. String complaint="";
  736. if (baseComplaintDoctorDO!=null){
  737. if (baseComplaintDoctorDO.getComplaintId().equalsIgnoreCase("808080eb7a194099017a1943fa820004")){
  738. complaint=baseComplaintDoctorDO.getComplaintId();
  739. }
  740. }
  741. //complaint=complaint+","+types;
  742. if (StringUtils.isNoneBlank(complaint)){
  743. if (!StringUtils.isNoneBlank(status)){
  744. sql+=" and t.status !='-1'";
  745. sql+=" and (t.defaultdoctor ='defalutDoctor' or t.defaultdoctor='"+doctor+"')";
  746. }
  747. if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
  748. sql+=" and g.operate_from='"+doctor+"'";
  749. }else {
  750. sql+=" and t.complaint_id='"+complaint+"'";
  751. }
  752. if (!StringUtils.isNoneBlank(status)){
  753. sql+=" or (g.operate_from='"+doctor+"' and g.status='3')";
  754. }
  755. if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
  756. sql+=" and g.operate_from='"+doctor+"'";
  757. }else if (StringUtils.isNoneBlank(status)&&"0".equalsIgnoreCase(status)){
  758. sql+=" and t.status='0' and (t.passto='"+doctor+"' or t.passto is null )";
  759. } else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
  760. sql+=" and t.status='1' and t.acceptor='"+doctor+"' ";
  761. } else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
  762. sql+=" and t.status='2' and t.operator='"+doctor+"' ";
  763. }
  764. //sql+=" and t.complaint_id in ('"+complaint.replace(",","','")+"')";
  765. }else {
  766. if (StringUtils.isNoneBlank(status)&&"3".equalsIgnoreCase(status)){
  767. sql+=" and g.operate_from='"+doctor+"'";
  768. }else if (StringUtils.isNoneBlank(status)&&"0".equalsIgnoreCase(status)){
  769. sql+=" and t.status='0' and t.passto='"+doctor+"'";
  770. } else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){
  771. sql+=" and t.status='1' and t.acceptor='"+doctor+"' ";
  772. } else if (StringUtils.isNoneBlank(status)&&"2".equalsIgnoreCase(status)){
  773. sql+=" and t.status='2' and t.operator='"+doctor+"' ";
  774. } else {
  775. sql+=" and t.id IN (select col.relation_code from base_complaint_operate_log col where col.operate_to = '"+doctor+"' )";
  776. }
  777. }
  778. if (!StringUtils.isNoneBlank(status)){
  779. sql+=" and t.status !='-1'";
  780. }
  781. //complaint=complaint+","+types;
  782. }
  783. System.out.println("sql"+sql);
  784. Integer count = 0;
  785. sql+=")g";
  786. List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sql);
  787. if(total!=null&&total.size()>0){
  788. //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
  789. count = Integer.valueOf(total.get(0).get("count").toString());
  790. }
  791. return count;
  792. }
  793. /*
  794. * 查询投诉数量*/
  795. public Map<String,Object> findComplaintCountPatient(String patient){
  796. Integer complaints=0;
  797. Integer recieve=0;
  798. Integer deal=0;
  799. Integer cacel=0;
  800. complaints=baseComplaintDao.getCountByStatusByPatient("0",patient);
  801. recieve=baseComplaintDao.getCountByStatusByPatient("1",patient);
  802. deal=baseComplaintDao.getCountByStatusByPatient("2",patient);
  803. cacel=baseComplaintDao.getCountByStatusByPatient("-1",patient);
  804. Integer total = complaints+recieve+deal+cacel;
  805. Map map=new HashMap();
  806. map.put("complaints",complaints);
  807. map.put("recieve",recieve);
  808. map.put("deal",deal);
  809. map.put("cacel",cacel);
  810. map.put("total",total);
  811. return map;
  812. }
  813. public BaseComplaintDO cancelPaitentComplaint(String id,String patient) throws Exception{
  814. BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id);
  815. if (baseComplaintDO!=null){
  816. if ("0".equalsIgnoreCase(baseComplaintDO.getStatus())){
  817. baseComplaintDO.setStatus("-1");
  818. baseComplaintDO=baseComplaintDao.save(baseComplaintDO);
  819. BaseComplaintOperateLogDO baseComplaintOperateLogDO = new BaseComplaintOperateLogDO();
  820. baseComplaintOperateLogDO.setOperateFrom(patient);
  821. baseComplaintOperateLogDO.setStatus("-1");
  822. baseComplaintOperateLogDO.setOperateType("居民撤销投诉");
  823. baseComplaintOperateLogDO.setRelationCode(baseComplaintDO.getId());
  824. baseComplaintOperateLogDO.setCreateTime(new Date());
  825. baseComplaintOperateDao.save(baseComplaintOperateLogDO);
  826. }else {
  827. throw new Exception("不允许撤销");
  828. }
  829. }
  830. return baseComplaintDO;
  831. }
  832. public List<Map<String,Object>> findComplaintOperateLog(String complaintId){
  833. String sql ="select t.id as \"id\"," +
  834. " p.name as \"complaintNameFrom\" ," +
  835. " n.name as \"complaintNameto\", " +
  836. " t.operate_from as \"operateFrom\" ," +
  837. " t.reason as \"reason\" ," +
  838. " t.operate_to as \"operateTo\" ," +
  839. " t.cancel_by as \"cancelBy\", " +
  840. " t.operate_type as \"operateType\", " +
  841. " t.status as \"status\", " +
  842. " t.create_time as \"createTime\" ," +
  843. " t.relation_code as \"relationCode\" " +
  844. " from base_complaint_operate_log t left join base_complaint c" +
  845. " on t.relation_code=c.id" +
  846. " left join base_complaint_dict p on t.complaint_from= p.id" +
  847. " left join base_complaint_dict n on t.complaint_to=n.id where 1=1 " ;
  848. if (StringUtils.isNoneBlank(complaintId)){
  849. sql+=" and t.relation_code='"+complaintId+"'";
  850. }
  851. sql+=" order by t.create_time desc";
  852. List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql);
  853. List<WlyyHospitalSysDictDO> typeList=wlyyHospitalSysDictDao.findByDictName("complaintStatus");
  854. for (Map<String,Object> map:list){
  855. if (map.get("operateFrom")!=null){
  856. if (map.get("status")!=null){
  857. for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:typeList){
  858. if (map.get("status").toString().equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
  859. map.put("operateType",wlyyHospitalSysDictDO.getDictValue());
  860. }
  861. }
  862. if ("0".equalsIgnoreCase(map.get("status").toString())||"-1".equalsIgnoreCase(map.get("status").toString())){
  863. BasePatientDO basePatientDO = basePatientDao.findById(map.get("operateFrom").toString());
  864. if (basePatientDO!=null){
  865. map.put("operateFromName",basePatientDO.getName());
  866. }
  867. }else {
  868. BaseDoctorDO baseDoctorDO= baseDoctorDao.findById(map.get("operateFrom").toString());
  869. if (baseDoctorDO!=null){
  870. map.put("operateFromName",baseDoctorDO.getName());
  871. }
  872. List<BaseDoctorHospitalDO> baseDoctorHospitalDO= baseDoctorHospitalDao.findByDoctorCode(map.get("operateFrom").toString());
  873. if (baseDoctorHospitalDO!=null&&baseDoctorHospitalDO.size()>0){
  874. map.put("operateFromDeptName",baseDoctorHospitalDO.get(0).getDeptName());
  875. }
  876. }
  877. }
  878. }
  879. if (map.get("operateTo")!=null){
  880. BaseDoctorDO baseDoctorDO= baseDoctorDao.findById(map.get("operateTo").toString());
  881. if (baseDoctorDO!=null){
  882. map.put("operateToName",baseDoctorDO.getName());
  883. }
  884. List<BaseDoctorHospitalDO> baseDoctorHospitalDO= baseDoctorHospitalDao.findByDoctorCode(map.get("operateTo").toString());
  885. if (baseDoctorHospitalDO!=null&&baseDoctorHospitalDO.size()>0){
  886. map.put("operateToDeptName",baseDoctorHospitalDO.get(0).getDeptName());
  887. }
  888. }
  889. }
  890. return list;
  891. }
  892. }