MzyReqrecController.java 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047
  1. package cn.hnthyy.thmz.controller.mz;
  2. import cn.hnthyy.thmz.Utils.*;
  3. import cn.hnthyy.thmz.comment.UserLoginToken;
  4. import cn.hnthyy.thmz.common.Constants;
  5. import cn.hnthyy.thmz.entity.MzException;
  6. import cn.hnthyy.thmz.entity.his.mz.*;
  7. import cn.hnthyy.thmz.entity.his.zd.ZdUnitCode;
  8. import cn.hnthyy.thmz.entity.thmz.User;
  9. import cn.hnthyy.thmz.enums.PayMarkEnum;
  10. import cn.hnthyy.thmz.enums.YesNoEnum;
  11. import cn.hnthyy.thmz.pageDto.MzyReqrecPageDto;
  12. import cn.hnthyy.thmz.service.his.mz.*;
  13. import cn.hnthyy.thmz.service.his.zd.ZdUnitCodeService;
  14. import cn.hnthyy.thmz.vo.MzyReqrecVo;
  15. import cn.hnthyy.thmz.vo.PageViewVo;
  16. import cn.hnthyy.thmz.vo.ThmzmxsrParamsVo;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.web.bind.annotation.*;
  21. import javax.servlet.http.HttpServletRequest;
  22. import javax.servlet.http.HttpServletResponse;
  23. import java.math.BigDecimal;
  24. import java.text.ParseException;
  25. import java.text.SimpleDateFormat;
  26. import java.util.*;
  27. import java.util.stream.Collectors;
  28. @Slf4j
  29. @RestController
  30. public class MzyReqrecController {
  31. @Autowired
  32. private MzyReqrecService mzyReqrecService;
  33. @Autowired
  34. private MzPatientMiService mzPatientMiService;
  35. @Autowired
  36. private ZdUnitCodeService zdUnitCodeService;
  37. @Autowired
  38. private EmployeeService employeeService;
  39. @Autowired
  40. private MzZdWorkTimeService mzZdWorkTimeService;
  41. @Autowired
  42. private MzyZdChargeTypeService mzyZdChargeTypeService;
  43. /**
  44. * 保存挂号信息
  45. *
  46. * @return
  47. */
  48. @UserLoginToken
  49. @RequestMapping(value = "/saveMzyReqrec", method = {RequestMethod.POST})
  50. public Map<String, Object> saveMzyReqrec(@RequestBody MzyReqrecPageDto mzyReqrecPageDto, HttpServletRequest httpServletRequest) {
  51. Map<String, Object> resultMap = new HashMap<>();
  52. try {
  53. if (mzyReqrecPageDto == null || mzyReqrecPageDto.getMzyReqrec() == null) {
  54. resultMap.put("code", -1);
  55. resultMap.put("message", "挂号参数不能为空");
  56. return resultMap;
  57. }
  58. MzyReqrec mzyReqrec = mzyReqrecPageDto.getMzyReqrec();
  59. if (StringUtils.isBlank(mzyReqrec.getPatientId())) {
  60. resultMap.put("code", -1);
  61. resultMap.put("message", "病人id不能为空");
  62. return resultMap;
  63. }
  64. if (StringUtils.isBlank(mzyReqrec.getAmpm())) {
  65. resultMap.put("code", -1);
  66. resultMap.put("message", "挂号时间段不能为空");
  67. return resultMap;
  68. }
  69. if (StringUtils.isBlank(mzyReqrec.getUnitCode())) {
  70. resultMap.put("code", -1);
  71. resultMap.put("message", "科室编码不能为空");
  72. return resultMap;
  73. }
  74. if (StringUtils.isBlank(mzyReqrec.getChargeType())) {
  75. resultMap.put("code", -1);
  76. resultMap.put("message", "号别不能为空");
  77. return resultMap;
  78. }
  79. if (mzyReqrecPageDto.getMzyRequestId() == null) {
  80. resultMap.put("code", -1);
  81. resultMap.put("message", "门诊号表主键不能为空");
  82. return resultMap;
  83. }
  84. if (PayMarkEnum.CHARGED.code.equals(mzyReqrecPageDto.getPayMark())) {
  85. if (StringUtils.isBlank(mzyReqrec.getPaymode())) {
  86. resultMap.put("code", -1);
  87. resultMap.put("message", "付款方式不能为空");
  88. return resultMap;
  89. }
  90. if (mzyReqrecPageDto.getTotalFee() == null) {
  91. resultMap.put("resultCode", -1);
  92. resultMap.put("message", "实缴费用不能为空");
  93. return resultMap;
  94. }
  95. if (StringUtils.isBlank(mzyReqrecPageDto.getResponceType())) {
  96. resultMap.put("code", -1);
  97. resultMap.put("message", "病人性质不能为空");
  98. return resultMap;
  99. }
  100. }
  101. MzZdWorkTime mzZdWorkTime = mzZdWorkTimeService.queryMzZdWorkTimeByCode(mzyReqrec.getAmpm());
  102. if (mzZdWorkTime == null) {
  103. resultMap.put("code", -1);
  104. resultMap.put("message", "号段不存在");
  105. return resultMap;
  106. }
  107. String toDayStr = DateUtil.paseToString(new Date(), "yyyy-MM-dd");
  108. if (toDayStr.equals(mzyReqrec.getRequestDayStr()) && checkWorkTime(resultMap, mzZdWorkTime)) {
  109. return resultMap;
  110. }
  111. User tokenUser = TokenUtil.getUser(httpServletRequest);
  112. mzyReqrec.setOpId(tokenUser.getUserIdCode());
  113. mzyReqrec.setWebId(tokenUser.getUserIdCode());
  114. String ipAddress = HttpUtil.getIPAddress(httpServletRequest);
  115. int num = mzyReqrecService.saveMzyReqrec(mzyReqrecPageDto, ipAddress);
  116. if (num == 0) {
  117. resultMap.put("code", -1);
  118. resultMap.put("message", "挂号失败,请稍后重试!");
  119. return resultMap;
  120. }
  121. resultMap.put("code", 0);
  122. resultMap.put("message", "保存挂号信息成功");
  123. return resultMap;
  124. } catch (Exception e) {
  125. e.printStackTrace();
  126. resultMap.put("code", -1);
  127. resultMap.put("message", StringUtils.isBlank(e.getMessage()) ? "挂号失败,系统出错,请联系管理员" : e.getMessage());
  128. log.error("挂号失败,系统异常,错误信息{}", e.getMessage());
  129. return resultMap;
  130. }
  131. }
  132. /**
  133. * 校验挂号时段的选择是否合理
  134. *
  135. * @param resultMap
  136. * @param mzZdWorkTime
  137. * @return
  138. * @throws ParseException
  139. */
  140. private boolean checkWorkTime(Map<String, Object> resultMap, MzZdWorkTime mzZdWorkTime) throws ParseException {
  141. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
  142. //挂还开始时间取当前时间前15分钟
  143. Date now = DateUtil.getMinuteAfterDate(15);
  144. // if (Constants.PM.equals(mzZdWorkTime.getCode())){
  145. // now= DateUtil.getMinuteAfterDate(10);
  146. // }
  147. String nowStr = simpleDateFormat.format(now);
  148. Date hour = simpleDateFormat.parse(nowStr);
  149. long hourTs = hour.getTime();
  150. //真正的当前时间 挂号结束时间还是当前时间
  151. Date realNow = new Date();
  152. String realNowStr = simpleDateFormat.format(realNow);
  153. Date realHour = simpleDateFormat.parse(realNowStr);
  154. long realHourTs = realHour.getTime();
  155. Date dateStartTime = simpleDateFormat.parse(mzZdWorkTime.getStartTime());
  156. long tsStartTime = dateStartTime.getTime();
  157. Date dateEndTime = simpleDateFormat.parse(mzZdWorkTime.getEndTime());
  158. long tsEndTime = dateEndTime.getTime();
  159. if (Constants.AM.equals(mzZdWorkTime.getCode())) {
  160. if (hourTs < tsStartTime || realHourTs > tsEndTime) {
  161. resultMap.put("code", -1);
  162. resultMap.put("message", "挂号失败,当前挂号时间与所选时段不符,请重新选择合适的号段!");
  163. return true;
  164. }
  165. } else if (Constants.PM.equals(mzZdWorkTime.getCode())) {
  166. if (realHourTs > tsEndTime) {
  167. resultMap.put("code", -1);
  168. resultMap.put("message", "挂号失败,当前挂号时间与所选时段不符,请重新选择合适的号段!");
  169. return true;
  170. }
  171. }
  172. return false;
  173. }
  174. /**
  175. * 导出挂号列表
  176. *
  177. * @return
  178. */
  179. @RequestMapping(value = "/exportListMzyReqrec", method = {RequestMethod.GET})
  180. public Map<String, Object> exportListMzyReqrec(@RequestParam("name") String name, @RequestParam("unitCode") String unitCode, @RequestParam("doctorCode") String doctorCode,
  181. @RequestParam("phoneNo") String phoneNo, @RequestParam("serialNo") String serialNo, @RequestParam("beginTime") String beginTime,
  182. @RequestParam("endTime") String endTime, @RequestParam("visitedMark") String visitedMark, @RequestParam("cancelMark") String cancelMark, HttpServletRequest request, HttpServletResponse response) {
  183. try {
  184. MzyReqrecPageDto mzyReqrecPageDto = new MzyReqrecPageDto();
  185. mzyReqrecPageDto.setMzyReqrec(new MzyReqrec());
  186. MzyReqrec mzyReqrec = mzyReqrecPageDto.getMzyReqrec();
  187. mzyReqrec.setName(name);
  188. mzyReqrec.setUnitCode(unitCode);
  189. mzyReqrec.setDoctorCode(doctorCode);
  190. mzyReqrec.setSerialNo(StringUtils.isBlank(serialNo) ? null : Integer.valueOf(serialNo));
  191. mzyReqrec.setVisitedMark(StringUtils.isBlank(visitedMark) ? null : Integer.valueOf(visitedMark));
  192. mzyReqrec.setCancelMark(StringUtils.isBlank(cancelMark) ? null : Integer.valueOf(cancelMark));
  193. mzyReqrecPageDto.setPhoneNo(phoneNo);
  194. mzyReqrecPageDto.setBeginTime(DateUtil.pase(beginTime, "yyyy-MM-dd HH:mm:ss"));
  195. mzyReqrecPageDto.setEndTime(DateUtil.pase(endTime, "yyyy-MM-dd HH:mm:ss"));
  196. if (StringUtils.isBlank(mzyReqrec.getName())) {
  197. mzyReqrec.setName(null);
  198. } else {
  199. mzyReqrec.setName("%" + mzyReqrec.getName() + "%");
  200. }
  201. if (StringUtils.isBlank(mzyReqrec.getUnitCode())) {
  202. mzyReqrec.setUnitCode(null);
  203. }
  204. if (StringUtils.isBlank(mzyReqrec.getDoctorCode())) {
  205. mzyReqrec.setDoctorCode(null);
  206. }
  207. if (StringUtils.isNotBlank(mzyReqrecPageDto.getPhoneNo())) {
  208. List<MzPatientMi> mzPatientMis = mzPatientMiService.queryByPhoneNo(mzyReqrecPageDto.getPhoneNo());
  209. if (mzPatientMis == null || mzPatientMis.size() == 0) {
  210. return null;
  211. }
  212. List<String> patientIds = mzPatientMis.stream().filter(u -> StringUtils.isNotBlank(u.getPatientId())).map(u -> u.getPatientId()).collect(Collectors.toList());
  213. mzyReqrecPageDto.setPatientIds(patientIds);
  214. }
  215. Integer count = mzyReqrecService.countMzyReqrec(mzyReqrecPageDto);
  216. mzyReqrecPageDto.setPageSize(count);
  217. ExcelUtil.exportExcelForReqrecList(request, response, mzyReqrecService.getMzyReqrecVo(mzyReqrecService.queryMzyReqrecWithPage(mzyReqrecPageDto)));
  218. return null;
  219. } catch (Exception e) {
  220. log.error("导出挂号列表失败,系统异常,错误信息{}", e.getMessage());
  221. return null;
  222. }
  223. }
  224. /**
  225. * 查询挂号列表
  226. *
  227. * @return
  228. */
  229. @UserLoginToken
  230. @RequestMapping(value = "/listMzyReqrec", method = {RequestMethod.POST})
  231. public Map<String, Object> listMzyReqrec(@RequestBody MzyReqrecPageDto mzyReqrecPageDto) {
  232. Map<String, Object> resultMap = new HashMap<>();
  233. try {
  234. if (mzyReqrecPageDto == null || mzyReqrecPageDto.getMzyReqrec() == null) {
  235. resultMap.put("code", -1);
  236. resultMap.put("message", "挂号查询参数不能为空");
  237. return resultMap;
  238. }
  239. MzyReqrec mzyReqrec = mzyReqrecPageDto.getMzyReqrec();
  240. if (StringUtils.isBlank(mzyReqrec.getName())) {
  241. mzyReqrec.setName(null);
  242. } else {
  243. mzyReqrec.setName("%" + mzyReqrec.getName() + "%");
  244. }
  245. if (StringUtils.isBlank(mzyReqrec.getUnitCode())) {
  246. mzyReqrec.setUnitCode(null);
  247. }
  248. if (StringUtils.isBlank(mzyReqrec.getDoctorCode())) {
  249. mzyReqrec.setDoctorCode(null);
  250. }
  251. PageViewVo pageViewVo = new PageViewVo(mzyReqrecPageDto.getPageIndex(), mzyReqrecPageDto.getPageSize());
  252. if (StringUtils.isNotBlank(mzyReqrecPageDto.getPhoneNo())) {
  253. List<MzPatientMi> mzPatientMis = mzPatientMiService.queryByPhoneNo(mzyReqrecPageDto.getPhoneNo());
  254. if (mzPatientMis == null || mzPatientMis.size() == 0) {
  255. pageViewVo.setTotal(0);
  256. pageViewVo.setData(Collections.EMPTY_LIST);
  257. resultMap.put("code", 0);
  258. resultMap.put("message", "查询挂号信息成功");
  259. resultMap.put("pageViewVo", pageViewVo);
  260. return resultMap;
  261. }
  262. List<String> patientIds = mzPatientMis.stream().filter(u -> StringUtils.isNotBlank(u.getPatientId())).map(u -> u.getPatientId()).collect(Collectors.toList());
  263. mzyReqrecPageDto.setPatientIds(patientIds);
  264. }
  265. Integer count = mzyReqrecService.countMzyReqrec(mzyReqrecPageDto);
  266. pageViewVo.setTotal(count == null ? 0 : count);
  267. pageViewVo.setData(mzyReqrecService.getMzyReqrecVo(mzyReqrecService.queryMzyReqrecWithPage(mzyReqrecPageDto)));
  268. resultMap.put("code", 0);
  269. resultMap.put("message", "查询挂号信息成功");
  270. resultMap.put("pageViewVo", pageViewVo);
  271. return resultMap;
  272. } catch (Exception e) {
  273. e.printStackTrace();
  274. resultMap.put("code", -1);
  275. resultMap.put("message", "查询挂号列表失败,系统出错,请联系管理员");
  276. log.error("查询挂号列表失败,系统异常,错误信息{}", e);
  277. return resultMap;
  278. }
  279. }
  280. /**
  281. * 查询挂号中,已就诊人数,退号人次
  282. *
  283. * @return
  284. */
  285. @UserLoginToken
  286. @RequestMapping(value = "/getCountByParams", method = {RequestMethod.POST})
  287. public Map<String, Object> getCountByParams(@RequestBody MzyReqrecPageDto mzyReqrecPageDto) {
  288. Map<String, Object> resultMap = new HashMap<>();
  289. try {
  290. if (mzyReqrecPageDto == null || mzyReqrecPageDto.getMzyReqrec() == null) {
  291. resultMap.put("code", -1);
  292. resultMap.put("message", "挂号统计查询参数不能为空");
  293. return resultMap;
  294. }
  295. MzyReqrec mzyReqrec = mzyReqrecPageDto.getMzyReqrec();
  296. if (StringUtils.isBlank(mzyReqrec.getName())) {
  297. mzyReqrec.setName(null);
  298. } else {
  299. mzyReqrec.setName("%" + mzyReqrec.getName() + "%");
  300. }
  301. if (StringUtils.isBlank(mzyReqrec.getUnitCode())) {
  302. mzyReqrec.setUnitCode(null);
  303. }
  304. if (StringUtils.isBlank(mzyReqrec.getDoctorCode())) {
  305. mzyReqrec.setDoctorCode(null);
  306. }
  307. if (StringUtils.isNotBlank(mzyReqrecPageDto.getPhoneNo())) {
  308. List<MzPatientMi> mzPatientMis = mzPatientMiService.queryByPhoneNo(mzyReqrecPageDto.getPhoneNo());
  309. if (mzPatientMis == null || mzPatientMis.size() == 0) {
  310. resultMap.put("code", 0);
  311. resultMap.put("message", "查询挂号统计信息成功");
  312. resultMap.put("unPayNum", 0);
  313. resultMap.put("registrationNum", 0);
  314. resultMap.put("haveClinicalNum", 0);
  315. resultMap.put("backNoNum", 0);
  316. return resultMap;
  317. }
  318. List<String> patientIds = mzPatientMis.stream().filter(u -> StringUtils.isNotBlank(u.getPatientId())).map(u -> u.getPatientId()).collect(Collectors.toList());
  319. mzyReqrecPageDto.setPatientIds(patientIds);
  320. }
  321. mzyReqrec.setVisitedMark(YesNoEnum.NO.code);
  322. mzyReqrec.setCancelMark(YesNoEnum.NO.code);
  323. mzyReqrecPageDto.setPayMark(PayMarkEnum.NO_CHARGE.code);
  324. Integer unPayNum = mzyReqrecService.countMzyReqrec(mzyReqrecPageDto);
  325. mzyReqrecPageDto.setPayMark(null);
  326. Integer registrationNum = mzyReqrecService.countMzyReqrec(mzyReqrecPageDto);
  327. mzyReqrec.setVisitedMark(YesNoEnum.YES.code);
  328. Integer haveClinicalNum = mzyReqrecService.countMzyReqrec(mzyReqrecPageDto);
  329. mzyReqrec.setVisitedMark(null);
  330. mzyReqrec.setCancelMark(YesNoEnum.YES.code);
  331. Integer backNoNum = mzyReqrecService.countMzyReqrec(mzyReqrecPageDto);
  332. resultMap.put("code", 0);
  333. resultMap.put("message", "查询挂号统计信息成功");
  334. resultMap.put("unPayNum", unPayNum == null ? 0 : unPayNum);
  335. resultMap.put("registrationNum", registrationNum == null ? 0 : registrationNum);
  336. resultMap.put("haveClinicalNum", haveClinicalNum == null ? 0 : haveClinicalNum);
  337. resultMap.put("backNoNum", backNoNum == null ? 0 : backNoNum);
  338. return resultMap;
  339. } catch (Exception e) {
  340. e.printStackTrace();
  341. resultMap.put("code", -1);
  342. resultMap.put("message", "查询挂号统计失败,系统出错,请联系管理员");
  343. log.error("查询挂号统计失败,系统异常,错误信息{}", e);
  344. return resultMap;
  345. }
  346. }
  347. // /**
  348. // * 构造包含病人信息的挂号记录视图
  349. // *
  350. // * @param mzyReqrecs
  351. // * @return
  352. // */
  353. // private List<MzyReqrecVo> getMzyReqrecVo(List<MzyReqrec> mzyReqrecs) {
  354. // List<MzyReqrecVo> mzyReqrecVos = new ArrayList<>();
  355. // if (mzyReqrecs == null) {
  356. // return mzyReqrecVos;
  357. // }
  358. // Set<String> patientIds = mzyReqrecs.stream().map(u -> u.getPatientId()).collect(Collectors.toSet());
  359. // List<MzPatientMi> mzPatientMis = new ArrayList<>();
  360. // if (patientIds != null && patientIds.size() > 0) {
  361. // List<String> temp = new ArrayList<>();
  362. // int num = 0;
  363. // for (String str : patientIds) {
  364. // temp.add(str);
  365. // num++;
  366. // if (num == 200) {
  367. // mzPatientMis.addAll(mzPatientMiService.queryByPatientIds(temp));
  368. // temp = new ArrayList<>();
  369. // num = 0;
  370. // }
  371. // }
  372. // if (num > 0) {
  373. // mzPatientMis.addAll(mzPatientMiService.queryByPatientIds(temp));
  374. // }
  375. // }
  376. // if (mzPatientMis != null) {
  377. // List<ResponceType> responceTypes = responceTypeService.queryAllMzResponceType();
  378. // if (responceTypes != null) {
  379. // Map<String, String> responceTypeMap = responceTypes.stream().collect(Collectors.toMap(ResponceType::getCode, ResponceType::getName));
  380. // if (responceTypeMap != null) {
  381. // for (MzPatientMi mzPatientMi : mzPatientMis) {
  382. // mzPatientMi.setResponseType(responceTypeMap.get(mzPatientMi.getResponseType()));
  383. // }
  384. // }
  385. // }
  386. // }
  387. // Map<String, MzPatientMi> mzPatientMiMap = null;
  388. // if (mzPatientMis != null) {
  389. // mzPatientMiMap = mzPatientMis.stream().collect(Collectors.toMap(MzPatientMi::getPatientId, mzPatientMi -> mzPatientMi));
  390. // }
  391. // Set<String> doctorCodes = mzyReqrecs.stream().map(u -> u.getDoctorCode()).collect(Collectors.toSet());
  392. // List<Employee> employees = new ArrayList<>();
  393. // if (doctorCodes != null && doctorCodes.size() > 0) {
  394. // List<String> temp = new ArrayList<>();
  395. // int num = 0;
  396. // for (String str : doctorCodes) {
  397. // temp.add(str);
  398. // num++;
  399. // if (num == 200) {
  400. // employees.addAll(employeeService.queryByCodes(temp));
  401. // temp = new ArrayList<>();
  402. // num = 0;
  403. // }
  404. // }
  405. // if (num > 0) {
  406. // employees.addAll(employeeService.queryByCodes(temp));
  407. // }
  408. // }
  409. // Map<String, String> employeeMap = null;
  410. // if (employees != null) {
  411. // employeeMap = employees.stream().collect(Collectors.toMap(Employee::getEmployeeCode, Employee::getEmployeeName));
  412. // }
  413. // List<ZdChequeType> chequeTypes = zdChequeTypeService.queryAllZdChequeTypeForMz();
  414. // Map<String, String> chequeTypeMap = null;
  415. // if (chequeTypes != null) {
  416. // chequeTypeMap = chequeTypes.stream().collect(Collectors.toMap(ZdChequeType::getCode, ZdChequeType::getName));
  417. // }
  418. // List<MzZdWorkTime> workTimes = mzZdWorkTimeService.queryAllMzZdWorkTime();
  419. // Map<String, String> workTimeMap = null;
  420. // if (workTimes != null) {
  421. // workTimeMap = workTimes.stream().collect(Collectors.toMap(MzZdWorkTime::getCode, MzZdWorkTime::getName));
  422. // }
  423. // List<MzyZdChargeType> mzyZdChargeTypes = mzyZdChargeTypeService.queryAllMzyZdChargeType();
  424. // Map<String, String> mzyZdChargeTypeMap = null;
  425. // if (mzyZdChargeTypes != null) {
  426. // mzyZdChargeTypeMap = mzyZdChargeTypes.stream().collect(Collectors.toMap(MzyZdChargeType::getCode, MzyZdChargeType::getName));
  427. // }
  428. // Map<String, String> regionMap = regionService.queryAll().stream().collect(Collectors.toMap(CodeNameEntity::getCode, CodeNameEntity::getName));
  429. // StringBuffer sbf = new StringBuffer();
  430. // for (MzyReqrec mzyReqrec : mzyReqrecs) {
  431. // if (mzyReqrec != null) {
  432. // mzyReqrec.setUnitCode(zdUnitCodeService.queryDeptNameByIdInCache(mzyReqrec.getUnitCode()));
  433. // if (employeeMap != null) {
  434. // String doctorCode = employeeMap.get(mzyReqrec.getDoctorCode());
  435. // mzyReqrec.setDoctorCode(doctorCode == null ? "" : doctorCode);
  436. // }
  437. // if (chequeTypeMap != null) {
  438. // String paymode = chequeTypeMap.get(mzyReqrec.getPaymode());
  439. // mzyReqrec.setPaymode(paymode == null ? "" : paymode);
  440. // }
  441. // if (workTimeMap != null) {
  442. // String workTime = workTimeMap.get(mzyReqrec.getAmpm());
  443. // mzyReqrec.setAmpm(workTime == null ? "" : workTime);
  444. // }
  445. // if (mzyZdChargeTypeMap != null) {
  446. // String chargeType = mzyZdChargeTypeMap.get(mzyReqrec.getChargeType());
  447. // mzyReqrec.setChargeType(chargeType == null ? "" : chargeType);
  448. // }
  449. // //傻b们写的医生接诊逻辑不设置visitedMark 字段 挂号的时候还设置成已接诊
  450. // if (mzyReqrec.getVisitDate() != null) {
  451. // mzyReqrec.setVisitedMark(YesNoEnum.YES.code);
  452. // } else {
  453. // mzyReqrec.setVisitedMark(YesNoEnum.NO.code);
  454. // }
  455. // MzyReqrecVo mzyReqrecVo = new MzyReqrecVo();
  456. // mzyReqrecVo.setMzyReqrec(mzyReqrec);
  457. // if (mzPatientMiMap != null) {
  458. // MzPatientMi mzPatientMi = mzPatientMiMap.get(mzyReqrec.getPatientId());
  459. // mzPatientMi.setFullAddress(regionMap, sbf);
  460. // mzyReqrecVo.setMzPatientMi(mzPatientMi);
  461. // }
  462. // mzyReqrecVos.add(mzyReqrecVo);
  463. // }
  464. // }
  465. // return mzyReqrecVos;
  466. // }
  467. /**
  468. * 根据病人id查询挂号信息
  469. *
  470. * @return
  471. */
  472. @UserLoginToken
  473. @RequestMapping(value = "/getMzyReqrecByPatientIdAndTimes", method = {RequestMethod.POST})
  474. public Map<String, Object> getMzyReqrecByPatientIdAndTimes(@RequestBody MzyReqrec mzyReqrec) {
  475. Map<String, Object> resultMap = new HashMap<>();
  476. try {
  477. if (mzyReqrec == null) {
  478. resultMap.put("code", -1);
  479. resultMap.put("message", "挂号查询参数不能为空");
  480. return resultMap;
  481. }
  482. if (StringUtils.isBlank(mzyReqrec.getPatientId())) {
  483. resultMap.put("code", -1);
  484. resultMap.put("message", "病人id不能为空");
  485. return resultMap;
  486. }
  487. if (mzyReqrec.getTimes() == null) {
  488. resultMap.put("code", -1);
  489. resultMap.put("message", "病人挂号次数不能为空");
  490. return resultMap;
  491. }
  492. MzyReqrec result = mzyReqrecService.queryMzyReqrecByPatientIdAndTimes(mzyReqrec.getPatientId(), mzyReqrec.getTimes());
  493. if (result != null) {
  494. BigDecimal totalAmount= result.getTotalAmount();
  495. List<MzyReqrecVo> mzyReqrecVos = mzyReqrecService.getMzyReqrecVo(Arrays.asList(result));
  496. if (mzyReqrecVos != null && mzyReqrecVos.size() > 0) {
  497. resultMap.put("code", 0);
  498. resultMap.put("message", "查询挂号信息成功");
  499. resultMap.put("data", mzyReqrecVos.get(0));
  500. resultMap.put("totalAmount", totalAmount);
  501. return resultMap;
  502. }
  503. }
  504. resultMap.put("code", -1);
  505. resultMap.put("message", "查询挂号信息失败,没有相应的挂号信息");
  506. return resultMap;
  507. } catch (Exception e) {
  508. e.printStackTrace();
  509. resultMap.put("code", -1);
  510. resultMap.put("message", "查询挂号信息失败,系统出错,请联系管理员");
  511. log.error("查询挂号信息失败,系统异常,错误信息{}", e);
  512. return resultMap;
  513. }
  514. }
  515. /**
  516. * 更新挂号信息
  517. *
  518. * @return
  519. */
  520. @UserLoginToken
  521. @RequestMapping(value = "/updateReqrec", method = {RequestMethod.POST})
  522. public Map<String, Object> updateReqrec(@RequestBody MzyReqrec mzyReqrec, HttpServletRequest httpServletRequest) {
  523. Map<String, Object> resultMap = new HashMap<>();
  524. try {
  525. if (mzyReqrec == null) {
  526. resultMap.put("code", -1);
  527. resultMap.put("message", "更新挂号信息参数不能为空");
  528. return resultMap;
  529. }
  530. if (StringUtils.isBlank(mzyReqrec.getPatientId())) {
  531. resultMap.put("code", -1);
  532. resultMap.put("message", "病人id不能为空");
  533. return resultMap;
  534. }
  535. if (mzyReqrec.getTimes() == null) {
  536. resultMap.put("code", -1);
  537. resultMap.put("message", "病人挂号次数不能为空");
  538. return resultMap;
  539. }
  540. User tokenUser = TokenUtil.getUser(httpServletRequest);
  541. if (tokenUser == null) {
  542. resultMap.put("code", -1);
  543. resultMap.put("message", "查询窗口号失败,用户Token不存在");
  544. return resultMap;
  545. }
  546. mzyReqrec.setOpId(tokenUser.getUserIdCode());
  547. int num = mzyReqrecService.modifyMzyReqrec(mzyReqrec, tokenUser);
  548. if (num == 1) {
  549. resultMap.put("code", 0);
  550. resultMap.put("message", "更新挂号信息成功");
  551. return resultMap;
  552. }
  553. resultMap.put("code", -1);
  554. resultMap.put("message", "更新挂号信息失败");
  555. return resultMap;
  556. } catch (Exception e) {
  557. e.printStackTrace();
  558. resultMap.put("code", -1);
  559. resultMap.put("message", "更新挂号信息失败,系统出错,请联系管理员");
  560. log.error("更新挂号信息失败,系统异常,错误信息{}", e);
  561. return resultMap;
  562. }
  563. }
  564. /**
  565. * 打印当前挂号的发票信息
  566. *
  567. * @return
  568. */
  569. @UserLoginToken
  570. @RequestMapping(value = "/printMzyReqrecRecept", method = {RequestMethod.GET})
  571. public Map<String, Object> printMzyReqrecRecept(@RequestParam("patientId") String patientId, @RequestParam("times") Integer times, HttpServletRequest httpServletRequest) {
  572. Map<String, Object> resultMap = new HashMap<>();
  573. try {
  574. if (StringUtils.isBlank(patientId)) {
  575. resultMap.put("code", -1);
  576. resultMap.put("message", "病人编号参数不能为空");
  577. return resultMap;
  578. }
  579. if (times == null) {
  580. resultMap.put("code", -1);
  581. resultMap.put("message", "病人就诊次数不能为空");
  582. return resultMap;
  583. }
  584. User tokenUser = TokenUtil.getUser(httpServletRequest);
  585. if (tokenUser == null) {
  586. resultMap.put("code", -1);
  587. resultMap.put("message", "打印当前挂号的发票信息失败,用户Token不存在");
  588. return resultMap;
  589. }
  590. MzyReqrec mzyReqrec;
  591. if (times == -1) {
  592. mzyReqrec = mzyReqrecService.queryLastMzyReqrecByPatientId(patientId);
  593. } else {
  594. mzyReqrec = mzyReqrecService.queryMzyReqrecByPatientIdAndTimes(patientId, times);
  595. }
  596. if (mzyReqrec == null) {
  597. resultMap.put("code", -1);
  598. resultMap.put("message", "当前病人不存在挂号信息");
  599. return resultMap;
  600. }
  601. if (StringUtils.isNotBlank(mzyReqrec.getPrinterId())) {
  602. resultMap.put("code", -1);
  603. resultMap.put("message", "当前挂号信息已经打印过发票,请勿重复操作");
  604. return resultMap;
  605. }
  606. if (Constants.BYJZ.equals(mzyReqrec.getPaymode())) {
  607. //当前病人没有实际缴费,暂时不打印发票
  608. resultMap.put("code", -2);
  609. resultMap.put("message", "挂号成功,记账不打发票");
  610. log.info("当前病人没有实际缴费,暂时不打印发票,patientId={},time={}", patientId, times);
  611. return resultMap;
  612. }
  613. ZdUnitCode zdUnitCode = zdUnitCodeService.queryByCode(mzyReqrec.getUnitCode());
  614. if (zdUnitCode != null) {
  615. mzyReqrec.setUnitCode(zdUnitCode.getName());
  616. resultMap.put("officePos", zdUnitCode.getOfficePos());
  617. }
  618. Employee employee = employeeService.queryByUserCode(mzyReqrec.getDoctorCode());
  619. if (employee != null) {
  620. mzyReqrec.setDoctorCode(employee.getEmployeeName());
  621. }
  622. MzyZdChargeType mzyZdChargeType = mzyZdChargeTypeService.queryByCode(mzyReqrec.getChargeType());
  623. if (mzyZdChargeType != null) {
  624. mzyReqrec.setChargeType(mzyZdChargeType.getName());
  625. }
  626. MzZdWorkTime mzZdWorkTime = mzZdWorkTimeService.queryMzZdWorkTimeByCode(mzyReqrec.getAmpm());
  627. if (mzZdWorkTime == null) {
  628. resultMap.put("code", -1);
  629. resultMap.put("message", "号段不存在");
  630. return resultMap;
  631. }
  632. mzyReqrec.setAmpm(mzZdWorkTime.getName());
  633. BigDecimal totalFee = mzyReqrec.getReqFee().add(mzyReqrec.getClinicFee()).add(mzyReqrec.getOthFee()).add(mzyReqrec.getBrochureFee());
  634. if (totalFee.compareTo(BigDecimal.ZERO) == 0) {
  635. resultMap.put("code", -2);
  636. resultMap.put("message", "当前病人无费用信息,无需开具发票");
  637. return resultMap;
  638. }
  639. resultMap.put("totalFee", totalFee);
  640. resultMap.put("totalFeeStr", NumberToCN.number2CNMontrayUnit(totalFee));
  641. Date chargeDate = mzyReqrec.getRequestDay();
  642. if (chargeDate == null) {
  643. chargeDate = new Date();
  644. }
  645. Calendar calendar = Calendar.getInstance();
  646. calendar.setTime(chargeDate);
  647. resultMap.put("year", calendar.get(Calendar.YEAR));
  648. Integer month = calendar.get(Calendar.MONTH) + 1;
  649. if (month < 10) {
  650. resultMap.put("month", "0" + month);
  651. } else {
  652. resultMap.put("month", month.toString());
  653. }
  654. Integer day = calendar.get(Calendar.DAY_OF_MONTH);
  655. if (day < 10) {
  656. resultMap.put("day", "0" + day);
  657. } else {
  658. resultMap.put("day", day.toString());
  659. }
  660. mzyReqrec.setPrinterId(tokenUser.getUserIdCode());
  661. mzyReqrecService.printMzyReqrecRecept(mzyReqrec);
  662. resultMap.put("code", 0);
  663. resultMap.put("data", mzyReqrec);
  664. resultMap.put("user", tokenUser);
  665. return resultMap;
  666. } catch (MzException e) {
  667. resultMap.put("code", -1);
  668. resultMap.put("message", "获取当前挂号的发票信息失败," + e.getMessage());
  669. log.error("获取当前挂号的发票信息失败,系统异常,错误信息{}", e);
  670. return resultMap;
  671. } catch (Exception e) {
  672. e.printStackTrace();
  673. resultMap.put("code", -1);
  674. resultMap.put("message", "获取当前挂号的发票信息失败,系统出错,请联系管理员");
  675. log.error("获取当前挂号的发票信息失败,系统异常,错误信息{}", e);
  676. return resultMap;
  677. }
  678. }
  679. /**
  680. * 本院记账退费重收
  681. *
  682. * @param serialNo
  683. * @param paymode 付费方式
  684. * @return
  685. */
  686. @UserLoginToken
  687. @RequestMapping(value = "/chargeFeeForByjz", method = {RequestMethod.GET})
  688. public Map<String, Object> chargeFeeForByjz(@RequestParam Integer serialNo, @RequestParam String paymode, HttpServletRequest httpServletRequest) {
  689. Map<String, Object> resultMap = new HashMap<>();
  690. try {
  691. if (serialNo == null) {
  692. resultMap.put("code", -1);
  693. resultMap.put("message", "需要退费重收的流水号不能为空");
  694. return resultMap;
  695. }
  696. User tokenUser = TokenUtil.getUser(httpServletRequest);
  697. if (tokenUser == null) {
  698. resultMap.put("code", -1);
  699. resultMap.put("message", "本院记账退费重收失败,用户Token不存在");
  700. return resultMap;
  701. }
  702. MzyReqrec mzyReqrec = mzyReqrecService.chargeFeeForByjz(serialNo, paymode, tokenUser.getUserIdCode());
  703. if (mzyReqrec == null) {
  704. resultMap.put("code", -1);
  705. resultMap.put("message", "本院记账退费重收操作失败");
  706. return resultMap;
  707. }
  708. resultMap.put("code", 0);
  709. resultMap.put("data", mzyReqrec);
  710. resultMap.put("message", "本院记账退费重收成功");
  711. return resultMap;
  712. } catch (Exception e) {
  713. e.printStackTrace();
  714. resultMap.put("code", -1);
  715. resultMap.put("message", e.getMessage());
  716. log.error("本院记账退费重收失败,系统异常,错误信息{}", e);
  717. return resultMap;
  718. }
  719. }
  720. /**
  721. * 判断当前病人的挂号信息是否有效
  722. *
  723. * @param patientId
  724. * @param deptCode
  725. * @return
  726. */
  727. @UserLoginToken
  728. @RequestMapping(value = "/validMzyReqrec", method = {RequestMethod.GET})
  729. public Map<String, Object> validMzyReqrec(@RequestParam String patientId, @RequestParam String deptCode, HttpServletRequest httpServletRequest) {
  730. Map<String, Object> resultMap = new HashMap<>();
  731. try {
  732. if (StringUtils.isBlank(patientId)) {
  733. resultMap.put("code", -1);
  734. resultMap.put("message", "病人ID不能为空");
  735. return resultMap;
  736. }
  737. if (StringUtils.isBlank(deptCode)) {
  738. resultMap.put("code", -1);
  739. resultMap.put("message", "病人就诊科室编码不能为空");
  740. return resultMap;
  741. }
  742. User tokenUser = TokenUtil.getUser(httpServletRequest);
  743. if (tokenUser == null) {
  744. resultMap.put("code", -1);
  745. resultMap.put("message", "查询患者有效挂号信息失败,用户Token不存在");
  746. return resultMap;
  747. }
  748. Date beforeDate = null;
  749. Integer count = null;
  750. if (Constants.EMERGENCY_WARD_CODE.equals(deptCode)) {
  751. beforeDate = DateUtil.getDateFromNow(-3);
  752. count = mzyReqrecService.queryValidMzyReqrec(patientId, null, deptCode, beforeDate);
  753. } else {
  754. beforeDate = DateUtil.getDateFromNow(-1);
  755. count = mzyReqrecService.queryValidMzyReqrec(patientId, null, deptCode, beforeDate);
  756. }
  757. if (count == null) {
  758. count = 0;
  759. }
  760. resultMap.put("code", 0);
  761. resultMap.put("data", count);
  762. resultMap.put("message", "判断当前病人的挂号信息是否有效成功");
  763. return resultMap;
  764. } catch (Exception e) {
  765. e.printStackTrace();
  766. resultMap.put("code", -1);
  767. resultMap.put("message", e.getMessage());
  768. log.error("判断当前病人的挂号信息是否有效失败,系统异常,错误信息{}", e);
  769. return resultMap;
  770. }
  771. }
  772. /**
  773. * 修改收费方式
  774. *
  775. * @param patientId
  776. * @param times
  777. * @param payMode 付费方式
  778. * @return
  779. */
  780. @UserLoginToken
  781. @RequestMapping(value = "/updatePayMode", method = {RequestMethod.GET})
  782. public Map<String, Object> updatePayMode(@RequestParam String patientId, @RequestParam Integer times, @RequestParam String payMode, HttpServletRequest httpServletRequest) {
  783. Map<String, Object> resultMap = new HashMap<>();
  784. try {
  785. if (StringUtils.isBlank(patientId)) {
  786. resultMap.put("code", -1);
  787. resultMap.put("message", "病人ID不能为空");
  788. return resultMap;
  789. }
  790. if (times == null) {
  791. resultMap.put("code", -1);
  792. resultMap.put("message", "就诊次数不能为空");
  793. return resultMap;
  794. }
  795. if (times < 0) {
  796. resultMap.put("code", -1);
  797. resultMap.put("message", "就诊次数必须是正数");
  798. return resultMap;
  799. }
  800. if (StringUtils.isBlank(payMode)) {
  801. resultMap.put("code", -1);
  802. resultMap.put("message", "新的付款方式不能为空");
  803. return resultMap;
  804. }
  805. User tokenUser = TokenUtil.getUser(httpServletRequest);
  806. if (tokenUser == null) {
  807. resultMap.put("code", -1);
  808. resultMap.put("message", "修改收费方式失败,用户Token不存在");
  809. return resultMap;
  810. }
  811. MzyReqrec mzyReqrec = mzyReqrecService.queryMzyReqrecByPatientIdAndTimes(patientId, times);
  812. if (mzyReqrec == null) {
  813. resultMap.put("code", -1);
  814. resultMap.put("message", "没有找到对应的挂号记录");
  815. return resultMap;
  816. }
  817. // if(YesNoEnum.YES.code.equals(mzyReqrec.getDcountNo())){
  818. // resultMap.put("code", -1);
  819. // resultMap.put("message", "挂号记录已经结算,无法修复付款方式");
  820. // return resultMap;
  821. // }
  822. if (payMode.equals(mzyReqrec.getPaymode())) {
  823. resultMap.put("code", -1);
  824. resultMap.put("message", "新的付款方式与原付款方式一致,无需修改");
  825. return resultMap;
  826. }
  827. MzyReqrec updateMzyReqrec = new MzyReqrec();
  828. updateMzyReqrec.setPaymode(payMode);
  829. updateMzyReqrec.setPatientId(mzyReqrec.getPatientId());
  830. updateMzyReqrec.setTimes(mzyReqrec.getTimes());
  831. mzyReqrecService.modifyMzyReqrec(updateMzyReqrec);
  832. resultMap.put("code", 0);
  833. resultMap.put("message", "修改收费方式成功");
  834. return resultMap;
  835. } catch (Exception e) {
  836. e.printStackTrace();
  837. resultMap.put("code", -1);
  838. resultMap.put("message", e.getMessage());
  839. log.error("修改挂号收费方式失败,系统异常,错误信息{}", e);
  840. return resultMap;
  841. }
  842. }
  843. /**
  844. * 门诊号别统计表
  845. *
  846. * @return
  847. */
  848. @UserLoginToken
  849. @RequestMapping(value = "/getMzhbCount", method = {RequestMethod.POST})
  850. public Map<String, Object> getMzhbCount(@RequestBody ThmzmxsrParamsVo thmzmxsrParamsVo) {
  851. Map<String, Object> resultMap = new HashMap<>();
  852. try {
  853. if (thmzmxsrParamsVo == null) {
  854. resultMap.put("code", -1);
  855. resultMap.put("message", "门诊号别统计表失败,参数为空");
  856. return resultMap;
  857. }
  858. if (thmzmxsrParamsVo.getBeginDate() == null) {
  859. resultMap.put("code", -1);
  860. resultMap.put("message", "门诊号别统计表失败,开始时间为空");
  861. return resultMap;
  862. }
  863. if (thmzmxsrParamsVo.getEndDate() == null) {
  864. resultMap.put("code", -1);
  865. resultMap.put("message", "门诊号别统计表失败,结束时间为空");
  866. return resultMap;
  867. }
  868. if (StringUtils.isBlank(thmzmxsrParamsVo.getCaseType())) {
  869. thmzmxsrParamsVo.setCaseType(YesNoEnum.NO.code.toString());
  870. }
  871. if (StringUtils.isBlank(thmzmxsrParamsVo.getJzSqDept())) {
  872. thmzmxsrParamsVo.setJzSqDept(null);
  873. }
  874. if (StringUtils.isBlank(thmzmxsrParamsVo.getJzSqDoctor())) {
  875. thmzmxsrParamsVo.setJzSqDoctor(null);
  876. }
  877. resultMap.put("code", 0);
  878. resultMap.put("message", "门诊号别统计表成功");
  879. List<Map<String, Object>> mzhbCounts = mzyReqrecService.queryMzhbCount(thmzmxsrParamsVo);
  880. if (mzhbCounts == null || mzhbCounts.size() == 0) {
  881. resultMap.put("code", -1);
  882. resultMap.put("message", "没有查询到符合条件的门诊挂号统计信息");
  883. return resultMap;
  884. }
  885. Set<String> chargeTypeSet = new HashSet<>();
  886. Set<String> depetSet = new HashSet<>();
  887. //医生类别列表
  888. List<Map<String, Object>> chargeTypeList = new ArrayList<>();
  889. //科室列表
  890. List<Map<String, Object>> depetList = new ArrayList<>();
  891. //按照科室合计统计
  892. Map<String, Map<String, Object>> deptHjMap = new HashMap<>();
  893. //按照号别类型合计统计
  894. Map<String, Map<String, Object>> chargeTypeHjMap = new HashMap<>();
  895. for (Map<String, Object> map : mzhbCounts) {
  896. String chargeType = (String) map.get("charge_type");
  897. if (!chargeTypeSet.contains(chargeType)) {
  898. Map<String, Object> chargeTemp = new HashMap<>();
  899. chargeTemp.put("charge_type_name", map.get("charge_type_name"));
  900. chargeTemp.put("charge_type", chargeType);
  901. chargeTypeList.add(chargeTemp);
  902. chargeTypeSet.add(chargeType);
  903. chargeTypeHjMap.put(chargeType, chargeTemp);
  904. }
  905. String unitCode = (String) map.get("unit_code");
  906. if (!depetSet.contains(unitCode)) {
  907. Map<String, Object> deptTemp = new HashMap<>();
  908. deptTemp.put("dept_name", map.get("dept_name"));
  909. deptTemp.put("unit_code", unitCode);
  910. depetList.add(deptTemp);
  911. depetSet.add(unitCode);
  912. deptHjMap.put(unitCode, deptTemp);
  913. }
  914. Map<String, Object> deptMap = deptHjMap.get(unitCode);
  915. Integer hshj = (Integer) deptMap.get("hshj");
  916. Double jehj = (Double) deptMap.get("jehj");
  917. if (hshj == null) {
  918. hshj = 0;
  919. }
  920. if (jehj == null) {
  921. jehj = 0D;
  922. }
  923. Integer patientCount = (Integer) map.get("patient_count");
  924. Double reqFee = ((Double) map.get("req_fee"));
  925. hshj = hshj + patientCount;
  926. jehj = jehj + reqFee;
  927. deptMap.put("hshj", hshj);
  928. deptMap.put("jehj", jehj);
  929. Map<String, Object> chargeMap = chargeTypeHjMap.get(chargeType);
  930. Integer chargeHshj = (Integer) chargeMap.get("chargeHshj");
  931. Double chargeHehj = (Double) chargeMap.get("chargeHehj");
  932. if (chargeHshj == null) {
  933. chargeHshj = 0;
  934. }
  935. if (chargeHehj == null) {
  936. chargeHehj = 0D;
  937. }
  938. chargeHshj = chargeHshj + patientCount;
  939. chargeHehj = chargeHehj + reqFee;
  940. chargeMap.put("chargeHshj", chargeHshj);
  941. chargeMap.put("chargeHehj", chargeHehj);
  942. }
  943. resultMap.put("depetList", depetList);
  944. resultMap.put("chargeTypeList", chargeTypeList);
  945. resultMap.put("data", mzhbCounts);
  946. return resultMap;
  947. } catch (Exception e) {
  948. e.printStackTrace();
  949. log.error("门诊号别统计表失败,错误信息{}", e);
  950. resultMap.put("code", -1);
  951. resultMap.put("message", "门诊号别统计表失败");
  952. return resultMap;
  953. }
  954. }
  955. /**
  956. * 支付未缴费的挂号记录
  957. *
  958. * @return
  959. */
  960. @UserLoginToken
  961. @RequestMapping(value = "/payRegistration", method = {RequestMethod.POST})
  962. public Map<String, Object> payRegistration(@RequestBody MzyReqrec mzyReqrec, HttpServletRequest httpServletRequest) {
  963. Map<String, Object> resultMap = new HashMap<>();
  964. try {
  965. if (mzyReqrec == null) {
  966. resultMap.put("code", -1);
  967. resultMap.put("message", "支付未缴费的挂号记录参数不能为空");
  968. return resultMap;
  969. }
  970. if (StringUtils.isBlank(mzyReqrec.getPatientId())) {
  971. resultMap.put("code", -1);
  972. resultMap.put("message", "病人id不能为空");
  973. return resultMap;
  974. }
  975. if (mzyReqrec.getTimes() == null) {
  976. resultMap.put("code", -1);
  977. resultMap.put("message", "病人挂号次数不能为空");
  978. return resultMap;
  979. }
  980. if (mzyReqrec.getPaymode() == null || StringUtils.isBlank(mzyReqrec.getPaymode())) {
  981. resultMap.put("code", -1);
  982. resultMap.put("message", "支付方式不能为空");
  983. return resultMap;
  984. }
  985. if (mzyReqrec.getAmount() == null) {
  986. resultMap.put("code", -1);
  987. resultMap.put("message", "支付总金额不能为空");
  988. return resultMap;
  989. }
  990. User tokenUser = TokenUtil.getUser(httpServletRequest);
  991. if (tokenUser == null) {
  992. resultMap.put("code", -1);
  993. resultMap.put("message", "支付未缴费的挂号记录失败,用户Token不存在");
  994. return resultMap;
  995. }
  996. int num = mzyReqrecService.payRegistration(mzyReqrec.getPatientId(), mzyReqrec.getTimes(), mzyReqrec.getPaymode(), null, null, mzyReqrec.getAmount(),tokenUser.getUserIdCode());
  997. if (num == 1) {
  998. resultMap.put("code", 0);
  999. resultMap.put("message", "支付未缴费的挂号记录成功");
  1000. return resultMap;
  1001. }
  1002. resultMap.put("code", -1);
  1003. resultMap.put("message", "支付未缴费的挂号记录失败");
  1004. return resultMap;
  1005. } catch (Exception e) {
  1006. e.printStackTrace();
  1007. resultMap.put("code", -1);
  1008. resultMap.put("message", "支付未缴费的挂号记录失败,系统出错,请联系管理员");
  1009. log.error("支付未缴费的挂号记录失败,系统异常,错误信息{}", e);
  1010. return resultMap;
  1011. }
  1012. }
  1013. }