BaseComplaintService.java 44 KB

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