MedicalViewApiController.java 153 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330
  1. package cn.hnthyy.thmz.controller.api;
  2. import cn.hnthyy.thmz.Utils.*;
  3. import cn.hnthyy.thmz.common.Constants;
  4. import cn.hnthyy.thmz.common.exception.BizException;
  5. import cn.hnthyy.thmz.common.validate.ValidatorUtils;
  6. import cn.hnthyy.thmz.entity.MzException;
  7. import cn.hnthyy.thmz.entity.haici.HaiciCharge;
  8. import cn.hnthyy.thmz.entity.haici.Haicipat;
  9. import cn.hnthyy.thmz.entity.his.mz.*;
  10. import cn.hnthyy.thmz.entity.his.zd.ZdEmpTitle;
  11. import cn.hnthyy.thmz.entity.his.zd.ZdMzClass;
  12. import cn.hnthyy.thmz.entity.his.zd.ZdUnitCode;
  13. import cn.hnthyy.thmz.entity.his.zy.ZyActpatient;
  14. import cn.hnthyy.thmz.entity.his.zy.ZyDepositFile;
  15. import cn.hnthyy.thmz.entity.thmz.*;
  16. import cn.hnthyy.thmz.enums.*;
  17. import cn.hnthyy.thmz.pageDto.MzChargeDetailPageDto;
  18. import cn.hnthyy.thmz.pageDto.MzyReqrecPageDto;
  19. import cn.hnthyy.thmz.pageDto.ZdUnitCodePageDto;
  20. import cn.hnthyy.thmz.service.his.RegionService;
  21. import cn.hnthyy.thmz.service.his.ResponceTypeService;
  22. import cn.hnthyy.thmz.service.his.mz.*;
  23. import cn.hnthyy.thmz.service.his.zd.ZdEmpTitleService;
  24. import cn.hnthyy.thmz.service.his.zd.ZdMzClassService;
  25. import cn.hnthyy.thmz.service.his.zd.ZdUnitCodeService;
  26. import cn.hnthyy.thmz.service.his.zy.APatientMiService;
  27. import cn.hnthyy.thmz.service.his.zy.ZyActpatientService;
  28. import cn.hnthyy.thmz.service.his.zy.ZyDepositFileService;
  29. import cn.hnthyy.thmz.service.thmz.*;
  30. import cn.hnthyy.thmz.vo.*;
  31. import cn.hutool.core.collection.CollUtil;
  32. import cn.hutool.core.convert.Convert;
  33. import cn.hutool.core.util.StrUtil;
  34. import lombok.extern.slf4j.Slf4j;
  35. import org.apache.commons.lang3.StringUtils;
  36. import org.springframework.beans.factory.annotation.Autowired;
  37. import org.springframework.dao.DataIntegrityViolationException;
  38. import org.springframework.web.bind.annotation.*;
  39. import javax.servlet.http.HttpServletRequest;
  40. import java.math.BigDecimal;
  41. import java.text.SimpleDateFormat;
  42. import java.util.*;
  43. import java.util.stream.Collectors;
  44. @RestController
  45. @RequestMapping("/api/v1")
  46. @Slf4j
  47. public class MedicalViewApiController {
  48. @Autowired
  49. private MzPatientMiService mzPatientMiService;
  50. @Autowired
  51. private MzChargeDetailService mzChargeDetailService;
  52. @Autowired
  53. private MzDepositFileService mzDepositFileService;
  54. @Autowired
  55. private MzVisitTableService mzVisitTableService;
  56. @Autowired
  57. private EmployeeService employeeService;
  58. @Autowired
  59. private MzZdSupplyTypeService zdSupplyTypeService;
  60. @Autowired
  61. private ZdUnitCodeService zdUnitCodeService;
  62. @Autowired
  63. private MzBillItemService mzBillItemService;
  64. @Autowired
  65. private APatientMiService aPatientMiService;
  66. @Autowired
  67. private ZdMzClassService zdMzClassService;
  68. @Autowired
  69. private MzyRequestService mzyRequestService;
  70. @Autowired
  71. private ZdEmpTitleService zdEmpTitleService;
  72. @Autowired
  73. private MzyZdChargeTypeService mzyZdChargeTypeService;
  74. @Autowired
  75. private MzZdWorkTimeService mzZdWorkTimeService;
  76. @Autowired
  77. private MzyReqrecService mzyReqrecService;
  78. @Autowired
  79. private UserService userService;
  80. @Autowired
  81. private ZyActpatientService zyActpatientService;
  82. @Autowired
  83. private ZyDepositFileService zyDepositFileService;
  84. @Autowired
  85. private MzReceiptSerialService mzReceiptSerialService;
  86. @Autowired
  87. private HybirdTestService hybirdTestService;
  88. @Autowired
  89. private ResponceTypeService responceTypeService;
  90. @Autowired
  91. private ClinicService clinicService;
  92. @Autowired
  93. private WhiteListService whiteListService;
  94. @Autowired
  95. private TsmzService tsmzService;
  96. @Autowired
  97. private ConfigService configService;
  98. @Autowired
  99. private RegionService regionService;
  100. @Autowired
  101. private DiscountService discountService;
  102. //海慈身份证类型
  103. private static final String ID_CARD_TYPE = "11";
  104. //诊疗卡类型
  105. private static final String MEDICAL_CARD_TYPE = "99";
  106. //海慈参数男性
  107. private static final String MAN = "M";
  108. //海慈参数女性
  109. private static final String WONMAN = "F";
  110. //海慈参数成年人
  111. private static final String PERSON = "1";
  112. //海慈参数儿童
  113. private static final String CHILD = "2";
  114. //微信支付
  115. private static final String WX = "WX";
  116. //支付宝
  117. private static final String ZFB = "ZFB";
  118. /**
  119. * 患者信息查询
  120. *
  121. * @param haicipat
  122. * @return
  123. */
  124. @RequestMapping(value = "/queryPatientInfo", method = {RequestMethod.POST})
  125. public Map<String, Object> queryPatientInfo(@RequestBody Haicipat haicipat) {
  126. Map<String, Object> results = new HashMap<>();
  127. if (StringUtils.isBlank(haicipat.getPatIdType())) {
  128. results.put("resultCode", -1);
  129. results.put("resultMessage", "顾客证件类型不能为空");
  130. return results;
  131. }
  132. if (StringUtils.isBlank(haicipat.getPatIdNo())) {
  133. results.put("resultCode", -1);
  134. results.put("resultMessage", "顾客证件号码不能为空");
  135. return results;
  136. }
  137. if (!Arrays.asList(ID_CARD_TYPE, MEDICAL_CARD_TYPE).contains(haicipat.getPatIdType())) {
  138. results.put("resultCode", -1);
  139. results.put("resultMessage", "顾客证件类型非身份证或者诊疗卡,暂不支持");
  140. return results;
  141. }
  142. List<MzPatientMi> mzPatientMis = null;
  143. if (ID_CARD_TYPE.equals(haicipat.getPatIdType())) {
  144. mzPatientMis = mzPatientMiService.queryBySocialNo(haicipat.getPatIdNo(), null);
  145. } else if (MEDICAL_CARD_TYPE.equals(haicipat.getPatIdType())) {
  146. MzPatientMi mzPatientMi = mzPatientMiService.queryByIcCardNo(haicipat.getPatIdNo());
  147. if (mzPatientMi != null) {
  148. mzPatientMis = Arrays.asList(mzPatientMi);
  149. }
  150. }
  151. if (mzPatientMis == null || mzPatientMis.size() == 0) {
  152. results.put("resultCode", -1);
  153. results.put("resultMessage", "没有查询到病人信息");
  154. return results;
  155. }
  156. results.put("resultCode", 0);
  157. MzPatientMi mzPatientMi = mzPatientMis.get(0);
  158. results.put("patName", mzPatientMi.getName());
  159. results.put("patSex", YesNoEnum.YES.code.equals(mzPatientMi.getSex()) ? MAN : WONMAN);
  160. results.put("patAge", mzPatientMi.getAge());
  161. results.put("patBirth", mzPatientMi.getBirthDayStr());
  162. results.put("patAddress", mzPatientMi.getAddress());
  163. results.put("patMobile", mzPatientMi.getPhoneNo());
  164. results.put("patIdType", YesNoEnum.YES.code);
  165. results.put("patIdNo", mzPatientMi.getSocialNo());
  166. results.put("patCardType", YesNoEnum.YES.code);
  167. results.put("patCardNo", mzPatientMi.getIcCardNo());
  168. results.put("patHisNo", mzPatientMi.getPatientId());
  169. List<String> inPatientNos = aPatientMiService.queryInPatientNoByMzNo(mzPatientMi.getPatientId());
  170. if (inPatientNos != null && inPatientNos.size() > 0) {
  171. results.put("inPatientNo", inPatientNos.get(0));
  172. } else {
  173. results.put("inPatientNo", "");
  174. }
  175. return results;
  176. }
  177. /**
  178. * 首诊患者建档
  179. *
  180. * @param haicipat
  181. * @return
  182. */
  183. @RequestMapping(value = "/savePatientInfo", method = {RequestMethod.POST})
  184. public Map<String, Object> savePatientInfo(@RequestBody Haicipat haicipat) {
  185. Map<String, Object> results = new HashMap<>();
  186. if (haicipat == null) {
  187. results.put("resultCode", -1);
  188. results.put("resultMessage", "建档参数为空");
  189. return results;
  190. }
  191. if (StringUtils.isBlank(haicipat.getPatType())) {
  192. results.put("resultCode", -1);
  193. results.put("resultMessage", "患者类型不能为空");
  194. return results;
  195. }
  196. if (StringUtils.isBlank(haicipat.getPatName())) {
  197. results.put("resultCode", -1);
  198. results.put("resultMessage", "患者姓名不能为空");
  199. return results;
  200. }
  201. if (StringUtils.isBlank(haicipat.getPatSex())) {
  202. results.put("resultCode", -1);
  203. results.put("resultMessage", "患者性别不能为空");
  204. return results;
  205. }
  206. if (haicipat.getPatAge() == null) {
  207. results.put("resultCode", -1);
  208. results.put("resultMessage", "患者年龄不能为空");
  209. return results;
  210. }
  211. if (haicipat.getPatBirth() == null) {
  212. results.put("resultCode", -1);
  213. results.put("resultMessage", "患者出生日期不能为空");
  214. return results;
  215. }
  216. if (StringUtils.isBlank(haicipat.getPatAddress())) {
  217. results.put("resultCode", -1);
  218. results.put("resultMessage", "患者地址不能为空");
  219. return results;
  220. }
  221. if (StringUtils.isBlank(haicipat.getPatMobile())) {
  222. results.put("resultCode", -1);
  223. results.put("resultMessage", "患者电话不能为空");
  224. return results;
  225. }
  226. if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdType())) {
  227. results.put("resultCode", -1);
  228. results.put("resultMessage", "患者证件类型不能为空");
  229. return results;
  230. }
  231. if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdNo())) {
  232. results.put("resultCode", -1);
  233. results.put("resultMessage", "患者证件号码不能为空");
  234. return results;
  235. }
  236. if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardName())) {
  237. results.put("resultCode", -1);
  238. results.put("resultMessage", "患者监护人姓名不能为空");
  239. return results;
  240. }
  241. if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdType())) {
  242. results.put("resultCode", -1);
  243. results.put("resultMessage", "患者监护人证件类型不能为空");
  244. return results;
  245. }
  246. if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdNo())) {
  247. results.put("resultCode", -1);
  248. results.put("resultMessage", "患者监护人证件号码不能为空");
  249. return results;
  250. }
  251. List<MzPatientMi> mzPatientMis = mzPatientMiService.queryBySocialNo(haicipat.getPatIdNo(), null);
  252. if (mzPatientMis != null && mzPatientMis.size() > 0) {
  253. results.put("resultCode", -1);
  254. results.put("resultMessage", "保存病人信息失败,已经存在相同的身份证号码记录");
  255. return results;
  256. }
  257. MzPatientMi mzPatientMi = new MzPatientMi();
  258. mzPatientMi.setName(haicipat.getPatName());
  259. mzPatientMi.setSex(MAN.equals(haicipat.getPatSex()) ? YesNoEnum.YES.code : 2);
  260. mzPatientMi.setAge(haicipat.getPatAge());
  261. mzPatientMi.setBirthDay(haicipat.getPatBirth());
  262. Map<String, String> result = AddressResolutionUtil.addressResolution(haicipat.getPatAddress());
  263. String province = result.get("province");
  264. String city = result.get("city");
  265. String district = result.get("district");
  266. CodeNameEntity codeNameEntity = regionService.queryByName(province, null);
  267. if (codeNameEntity != null && StringUtils.isNotBlank(codeNameEntity.getName())) {
  268. mzPatientMi.setProvinceCode(codeNameEntity.getCode());
  269. }
  270. if ((district == null || StringUtils.isBlank(district) && (city != null && StringUtils.isNotBlank(city)))) {
  271. district = city;
  272. //只有市,没有区,将市设置到区
  273. }
  274. codeNameEntity = regionService.queryByName(district, codeNameEntity == null ? null : codeNameEntity.getCode());
  275. if (codeNameEntity != null && StringUtils.isNotBlank(codeNameEntity.getName())) {
  276. mzPatientMi.setCityCode(codeNameEntity.getParentCode());
  277. mzPatientMi.setDistrictCode(codeNameEntity.getCode());
  278. }
  279. mzPatientMi.setDetail(result.get("detail"));
  280. mzPatientMi.setAddress(haicipat.getPatAddress());
  281. mzPatientMi.setPhoneNo(haicipat.getPatMobile());
  282. mzPatientMi.setSocialNo(haicipat.getPatIdNo());
  283. mzPatientMi.setContractHz(haicipat.getGuardIdNo());
  284. mzPatientMi.setResponseType("01");
  285. try {
  286. int num = mzPatientMiService.saveMzPatientMi(mzPatientMi);
  287. if (num == 1) {
  288. results.put("resultCode", 0);
  289. results.put("resultMessage", "保存病人信息成功");
  290. results.put("patCardType", 1);
  291. results.put("data", mzPatientMi.getPatientId());
  292. return results;
  293. }
  294. results.put("resultCode", -1);
  295. results.put("resultMessage", "保存病人信息失败");
  296. return results;
  297. } catch (Exception e) {
  298. if (e instanceof DataIntegrityViolationException) {
  299. if (e.getMessage().contains("将截断字符串或二进制数据")) {
  300. results.put("resultCode", -1);
  301. results.put("resultMessage", "病人地址信息超长");
  302. log.error("系统异常,错误信息{病人地址信息超长}");
  303. return results;
  304. }
  305. }
  306. e.printStackTrace();
  307. results.put("resultCode", -1);
  308. results.put("resultMessage", StringUtils.isBlank(e.getMessage()) ? "系统出错,请联系管理员" : e.getMessage());
  309. log.error("系统异常,错误信息{}", e);
  310. return results;
  311. }
  312. }
  313. /**
  314. * 绑定通知
  315. *
  316. * @param haicipat
  317. * @return
  318. */
  319. @RequestMapping(value = "/boundPatCardNoInfo", method = {RequestMethod.POST})
  320. public Map<String, Object> boundPatCardNoInfo(@RequestBody Haicipat haicipat) {
  321. Map<String, Object> results = new HashMap<>();
  322. if (haicipat == null) {
  323. results.put("resultCode", -1);
  324. results.put("resultMessage", "绑定通知参数为空");
  325. return results;
  326. }
  327. if (StringUtils.isBlank(haicipat.getPatType())) {
  328. results.put("resultCode", -1);
  329. results.put("resultMessage", "患者类型不能为空");
  330. return results;
  331. }
  332. if (StringUtils.isBlank(haicipat.getPatName())) {
  333. results.put("resultCode", -1);
  334. results.put("resultMessage", "患者姓名不能为空");
  335. return results;
  336. }
  337. if (StringUtils.isBlank(haicipat.getPatSex())) {
  338. results.put("resultCode", -1);
  339. results.put("resultMessage", "患者性别不能为空");
  340. return results;
  341. }
  342. if (haicipat.getPatAge() == null) {
  343. results.put("resultCode", -1);
  344. results.put("resultMessage", "患者年龄不能为空");
  345. return results;
  346. }
  347. if (haicipat.getPatBirth() == null) {
  348. results.put("resultCode", -1);
  349. results.put("resultMessage", "患者出生日期不能为空");
  350. return results;
  351. }
  352. if (StringUtils.isBlank(haicipat.getPatAddress())) {
  353. results.put("resultCode", -1);
  354. results.put("resultMessage", "患者地址不能为空");
  355. return results;
  356. }
  357. if (StringUtils.isBlank(haicipat.getPatMobile())) {
  358. results.put("resultCode", -1);
  359. results.put("resultMessage", "患者电话不能为空");
  360. return results;
  361. }
  362. if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdType())) {
  363. results.put("resultCode", -1);
  364. results.put("resultMessage", "患者证件类型不能为空");
  365. return results;
  366. }
  367. if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdNo())) {
  368. results.put("resultCode", -1);
  369. results.put("resultMessage", "患者证件号码不能为空");
  370. return results;
  371. }
  372. if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardName())) {
  373. results.put("resultCode", -1);
  374. results.put("resultMessage", "患者监护人姓名不能为空");
  375. return results;
  376. }
  377. if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdType())) {
  378. results.put("resultCode", -1);
  379. results.put("resultMessage", "患者监护人证件类型不能为空");
  380. return results;
  381. }
  382. if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdNo())) {
  383. results.put("resultCode", -1);
  384. results.put("resultMessage", "患者监护人证件号码不能为空");
  385. return results;
  386. }
  387. MzPatientMi mzPatientMi = new MzPatientMi();
  388. mzPatientMi.setPatientId(haicipat.getPatCardNo());
  389. mzPatientMi.setIcCardNo(haicipat.getPatCardNo());
  390. try {
  391. //int num=mzPatientMiService.modifyMzPatientMi(mzPatientMi);
  392. int num = 1;
  393. if (num == 1) {
  394. results.put("resultCode", 0);
  395. results.put("resultMessage", "绑定病人信息成功");
  396. return results;
  397. }
  398. results.put("resultCode", -1);
  399. results.put("resultMessage", "绑定病人信息失败");
  400. return results;
  401. } catch (Exception e) {
  402. e.printStackTrace();
  403. results.put("resultCode", -1);
  404. results.put("resultMessage", "绑定失败,请联系管理员");
  405. log.error("系统异常,错误信息{}", e);
  406. return results;
  407. }
  408. }
  409. /**
  410. * 取消绑定通知
  411. *
  412. * @param haicipat
  413. * @return
  414. */
  415. @RequestMapping(value = "/cancelBoundPatCardNoInfo", method = {RequestMethod.POST})
  416. public Map<String, Object> cancelBoundPatCardNoInfo(@RequestBody Haicipat haicipat) {
  417. Map<String, Object> results = new HashMap<>();
  418. if (haicipat == null) {
  419. results.put("resultCode", -1);
  420. results.put("resultMessage", "取消绑定通知参数为空");
  421. return results;
  422. }
  423. if (StringUtils.isBlank(haicipat.getPatCardNo())) {
  424. results.put("resultCode", -1);
  425. results.put("resultMessage", "患者诊疗卡不能为空");
  426. return results;
  427. }
  428. if (StringUtils.isBlank(haicipat.getPatType())) {
  429. results.put("resultCode", -1);
  430. results.put("resultMessage", "患者类型不能为空");
  431. return results;
  432. }
  433. if (StringUtils.isBlank(haicipat.getPatName())) {
  434. results.put("resultCode", -1);
  435. results.put("resultMessage", "患者姓名不能为空");
  436. return results;
  437. }
  438. if (StringUtils.isBlank(haicipat.getPatSex())) {
  439. results.put("resultCode", -1);
  440. results.put("resultMessage", "患者性别不能为空");
  441. return results;
  442. }
  443. if (haicipat.getPatAge() == null) {
  444. results.put("resultCode", -1);
  445. results.put("resultMessage", "患者年龄不能为空");
  446. return results;
  447. }
  448. if (haicipat.getPatBirth() == null) {
  449. results.put("resultCode", -1);
  450. results.put("resultMessage", "患者出生日期不能为空");
  451. return results;
  452. }
  453. if (StringUtils.isBlank(haicipat.getPatAddress())) {
  454. results.put("resultCode", -1);
  455. results.put("resultMessage", "患者地址不能为空");
  456. return results;
  457. }
  458. if (StringUtils.isBlank(haicipat.getPatMobile())) {
  459. results.put("resultCode", -1);
  460. results.put("resultMessage", "患者电话不能为空");
  461. return results;
  462. }
  463. if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdType())) {
  464. results.put("resultCode", -1);
  465. results.put("resultMessage", "患者证件类型不能为空");
  466. return results;
  467. }
  468. if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdNo())) {
  469. results.put("resultCode", -1);
  470. results.put("resultMessage", "患者证件号码不能为空");
  471. return results;
  472. }
  473. if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardName())) {
  474. results.put("resultCode", -1);
  475. results.put("resultMessage", "患者监护人姓名不能为空");
  476. return results;
  477. }
  478. if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdType())) {
  479. results.put("resultCode", -1);
  480. results.put("resultMessage", "患者监护人证件类型不能为空");
  481. return results;
  482. }
  483. if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdNo())) {
  484. results.put("resultCode", -1);
  485. results.put("resultMessage", "患者监护人证件号码不能为空");
  486. return results;
  487. }
  488. try {
  489. //int num=mzPatientMiService.clearIcCardNo(haicipat.getPatCardNo());
  490. int num = 1;
  491. if (num == 1) {
  492. results.put("resultCode", 0);
  493. results.put("resultMessage", "取消绑定成功");
  494. return results;
  495. }
  496. results.put("resultCode", -1);
  497. results.put("resultMessage", "取消绑定失败");
  498. return results;
  499. } catch (Exception e) {
  500. e.printStackTrace();
  501. results.put("resultCode", -1);
  502. results.put("resultMessage", "取消绑定失败,请联系管理员");
  503. log.error("系统异常,错误信息{}", e);
  504. return results;
  505. }
  506. }
  507. /**
  508. * @description: 获取token 直接登录
  509. * @author: lihong
  510. * @date: 2023/12/11 16:00
  511. * @param: userCode
  512. * @param: httpServletRequest
  513. * @return: cn.hnthyy.thmz.Utils.R
  514. **/
  515. @GetMapping("/getToken")
  516. public R getToken(String userCode, HttpServletRequest httpServletRequest) {
  517. String ip = HttpUtil.getIPAddress(httpServletRequest);
  518. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  519. AssertUtil.isNotBlank(whiteList, "当前请求来源未在白名单中【" + ip + "】");
  520. AssertUtil.isNotBlank(userCode, "用户编码不能为空");
  521. User user = userService.queryUserByCode(userCode);
  522. AssertUtil.isNotBlank(userCode, "没有该用户");
  523. Employee employee = employeeService.queryByCodeRs(userCode);
  524. if (employee != null && StrUtil.isNotBlank(employee.getYbCode())) {
  525. user.setYbCode(employee.getYbCode());
  526. }
  527. Date deadTime = DateUtil.getDate(Constants.JWT_TTL * 30);
  528. String token = TokenUtil.createJWT(JsonUtil.object2Json(user), deadTime);
  529. return R.ok().put("data", token);
  530. }
  531. /**
  532. * 门诊待缴费记录查询
  533. *
  534. * @param haicipat
  535. * @return
  536. */
  537. @RequestMapping(value = "/getMzChargeDetailForUnPaid", method = {RequestMethod.POST})
  538. public Map<String, Object> getMzChargeDetailForUnPaid(@RequestBody Haicipat haicipat, HttpServletRequest httpServletRequest) {
  539. Map<String, Object> results = new HashMap<>();
  540. String ip = HttpUtil.getIPAddress(httpServletRequest);
  541. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  542. if (whiteList == null) {
  543. results.put("resultCode", -1);
  544. results.put("resultMessage", "当前请求来源未在白名单中【" + ip + "】");
  545. return results;
  546. }
  547. if (haicipat == null) {
  548. results.put("resultCode", -1);
  549. results.put("resultMessage", "门诊待缴费记录查询参数为空");
  550. return results;
  551. }
  552. if (haicipat.getPatCardType() == null) {
  553. results.put("resultCode", -1);
  554. results.put("resultMessage", "患者诊疗卡类型不能为空");
  555. return results;
  556. }
  557. if (StringUtils.isBlank(haicipat.getPatCardNo())) {
  558. results.put("resultCode", -1);
  559. results.put("resultMessage", "患者诊疗卡号不能为空");
  560. return results;
  561. }
  562. try {
  563. MzPatientMi mzPatientMi = mzPatientMiService.queryByIcCardNo(haicipat.getPatCardNo());
  564. if (mzPatientMi == null) {
  565. results.put("resultCode", -1);
  566. log.warn("海慈传入的病人卡号查询不到对应的患者信息,卡号信息:" + haicipat.getPatCardNo());
  567. results.put("resultMessage", "患者诊疗卡号查询不到对应的患者信息");
  568. return results;
  569. }
  570. List<MzChargeDetail> mzChargeDetailList = mzChargeDetailService.unPaidToFullChargeDetail(mzPatientMi.getPatientId(), mzPatientMi.getName());
  571. if (mzChargeDetailList == null || mzChargeDetailList.size() == 0) {
  572. results.put("resultCode", -1);
  573. results.put("resultMessage", "未查询到待缴费记录");
  574. return results;
  575. }
  576. mzChargeDetailService.formatMzChargeDetail(mzChargeDetailList);
  577. List<Map<String, Object>> returnList = new ArrayList<>();
  578. for (MzChargeDetail mzChargeDetail : mzChargeDetailList) {
  579. Clinic clinic = clinicService.queryByPatientIdAndTimesAndReceiptNo(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(), mzChargeDetail.getReceiptNo());
  580. if (clinic != null && StringUtils.isNotBlank(clinic.getOpId()) && Constants.HLWYY_CODE.equals(clinic.getOpId()) && !whiteList.getOpId().equals(clinic.getOpId())) {
  581. continue;
  582. }
  583. Map<String, Object> map = new HashMap<>();
  584. map.put("hisOrdNum", mzChargeDetail.getPatientId() + "_" + mzChargeDetail.getTimes() + "_" + mzChargeDetail.getReceiptNo());
  585. map.put("patName", mzChargeDetail.getName());
  586. map.put("payName", "");
  587. map.put("deptName", mzChargeDetail.getWarnDept());
  588. map.put("doctorCode", mzChargeDetail.getRealDoctorCode());
  589. map.put("doctorName", mzChargeDetail.getDoctorCode());
  590. BigDecimal totalAmount = mzChargeDetail.getAmount().multiply(BigDecimal.valueOf(100));
  591. map.put("totalAmt", totalAmount);
  592. map.put("medInsAmt", BigDecimal.ZERO);
  593. map.put("selfAmt", totalAmount);
  594. map.put("priceTime", DateUtil.fomart(mzChargeDetail.getPriceTime(), "yyyy-MM-dd HH:mm:ss"));
  595. //不是医保查询的时候调用,需要查询是否有医保报销信息
  596. // if (haicipat.getYbRequest() == null || !YesNoEnum.YES.code.equals(haicipat.getYbRequest())) {
  597. // PayInfo payInfo = tsmzService.uploadFees(whiteList.getOpId(), mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(), mzChargeDetail.getReceiptNo(),null);
  598. // if (payInfo != null && payInfo.getCode() == 0) {
  599. // if (payInfo.getAcctPay() == null) {
  600. // payInfo.setAcctPay(BigDecimal.ZERO);
  601. // }
  602. // if (payInfo.getFundPay() == null) {
  603. // payInfo.setFundPay(BigDecimal.ZERO);
  604. // }
  605. // //个人医保账户支付
  606. // map.put("acctPay", payInfo.getAcctPay().multiply(BigDecimal.valueOf(100)));
  607. // //医保统筹报销
  608. // map.put("fundPay", payInfo.getFundPay().multiply(BigDecimal.valueOf(100)));
  609. // map.put("selfAmt", mzChargeDetail.getAmount().subtract(payInfo.getAcctPay()).subtract(payInfo.getFundPay()).multiply(BigDecimal.valueOf(100)));
  610. // }
  611. // }
  612. returnList.add(map);
  613. }
  614. results.put("resultCode", 0);
  615. results.put("resultMessage", "待缴费记录查询成功");
  616. results.put("data", returnList);
  617. return results;
  618. } catch (Exception e) {
  619. e.printStackTrace();
  620. results.put("resultCode", -1);
  621. results.put("resultMessage", "门诊待缴费记录查询失败,请联系管理员,错误信息{" + e.getMessage() + "}");
  622. log.error("系统异常,错误信息{}", e);
  623. return results;
  624. }
  625. }
  626. /**
  627. * 门诊待缴费记录明细查询
  628. *
  629. * @param haiciCharge
  630. * @return
  631. */
  632. @RequestMapping(value = "/getChargeDetailByHisOrdNum", method = {RequestMethod.POST})
  633. public Map<String, Object> getChargeDetailByHisOrdNum(@RequestBody HaiciCharge haiciCharge) {
  634. Map<String, Object> results = new HashMap<>();
  635. if (haiciCharge == null) {
  636. results.put("resultCode", -1);
  637. results.put("resultMessage", "门诊待缴费记录明细查询参数为空");
  638. return results;
  639. }
  640. if (haiciCharge.getPatCardType() == null) {
  641. results.put("resultCode", -1);
  642. results.put("resultMessage", "患者诊疗卡类型不能为空");
  643. return results;
  644. }
  645. if (StringUtils.isBlank(haiciCharge.getPatCardNo())) {
  646. results.put("resultCode", -1);
  647. results.put("resultMessage", "患者诊疗卡号不能为空");
  648. return results;
  649. }
  650. if (StringUtils.isBlank(haiciCharge.getHisOrdNum())) {
  651. results.put("resultCode", -1);
  652. results.put("resultMessage", "医院订单号不能为空");
  653. return results;
  654. }
  655. try {
  656. log.info("微信查询待缴费记录传参====>{}", JsonUtil.object2Json(haiciCharge));
  657. String[] arr = haiciCharge.getHisOrdNum().split("_");
  658. MzChargeDetail mzChargeDetail = new MzChargeDetail(arr[0], Integer.valueOf(arr[1]));
  659. mzChargeDetail.setBillItemCode("100");
  660. List<MzChargeDetail> mzChargeDetailList = mzChargeDetailService.getTempMzChargeDetailListForUnPaid(mzChargeDetail);
  661. if (mzChargeDetailList == null || mzChargeDetailList.size() == 0) {
  662. results.put("resultCode", -1);
  663. results.put("resultMessage", "未查询到待缴费明细记录");
  664. return results;
  665. }
  666. mzChargeDetailList = mzChargeDetailService.getMzChargeDetails(mzChargeDetailList);
  667. List<Map<String, Object>> returnList = new ArrayList<>();
  668. Map<String, ZdUnitCode> unitCodeMap = new HashMap<>();
  669. List<BillItem> mzBillItems = mzBillItemService.queryMzBillItem();
  670. Map<String, String> mzBillItemMap = null;
  671. if (mzBillItems != null) {
  672. mzBillItemMap = mzBillItems.stream().collect(Collectors.toMap(BillItem::getCode, BillItem::getName));
  673. }
  674. for (MzChargeDetail mz : mzChargeDetailList) {
  675. if (Arrays.asList(Constants.TC, Constants.SSWRF).contains(mz.getBillItemCode())) {
  676. continue;
  677. }
  678. Map<String, Object> map = new HashMap<>();
  679. map.put("itemCode", mz.getChargeItemCode());
  680. map.put("itemName", mz.getTcName());
  681. map.put("itemType", "");
  682. map.put("itemUnit", "");
  683. BigDecimal unitPrice = mz.getUnitPrice().setScale(2, BigDecimal.ROUND_HALF_UP);
  684. if (BigDecimal.ZERO.equals(unitPrice)) {
  685. unitPrice = BigDecimal.valueOf(0.01D);
  686. }
  687. unitPrice = unitPrice.multiply(BigDecimal.valueOf(100));
  688. map.put("itemPrice", unitPrice);
  689. map.put("itemSpec", "");
  690. BigDecimal quantity = mz.getQuantity() == null ? BigDecimal.ONE : BigDecimal.valueOf(mz.getQuantity());
  691. BigDecimal drugWin = mz.getDrugWin() == null ? BigDecimal.ONE : BigDecimal.valueOf(mz.getDrugWin());
  692. map.put("itemNumber", quantity.multiply(drugWin));
  693. map.put("itemTotalFee", unitPrice.multiply(quantity).multiply(drugWin));
  694. ZdUnitCode unitCode = unitCodeMap.get(mz.getExecDept());
  695. if (unitCode == null && StringUtils.isNotBlank(mz.getExecDept())) {
  696. unitCode = zdUnitCodeService.queryByCode(mz.getExecDept());
  697. unitCodeMap.put(mz.getExecDept(), unitCode);
  698. }
  699. if (mzBillItemMap != null) {
  700. map.put("itemType", mzBillItemMap.get(mz.getBillItemCode()));
  701. }
  702. map.put("execDeptName", unitCode == null ? "" : unitCode.getName());
  703. map.put("execDeptAddress", (unitCode == null || unitCode.getOfficePos() == null) ? "" : unitCode.getOfficePos());
  704. returnList.add(map);
  705. }
  706. log.info("微信查询待缴费门诊号===>{},就诊次数====>{}", arr[0], arr[1]);
  707. log.info("微信查询待缴费记录明细===>{}", JsonUtil.object2Json(returnList));
  708. results.put("resultCode", 0);
  709. results.put("resultMessage", "待缴费记录明细查询成功");
  710. results.put("data", returnList);
  711. return results;
  712. } catch (Exception e) {
  713. e.printStackTrace();
  714. results.put("resultCode", -1);
  715. results.put("resultMessage", "门诊待缴费记录明细查询失败,请联系管理员");
  716. log.error("系统异常,错误信息{}", e);
  717. return results;
  718. }
  719. }
  720. /**
  721. * 门诊缴费订单支付
  722. *
  723. * @param haiciCharge
  724. * @return
  725. */
  726. @RequestMapping(value = "/payChargeDetailFormHaiCi", method = {RequestMethod.POST})
  727. public Map<String, Object> payChargeDetailFormHaiCi(@RequestBody HaiciCharge haiciCharge, HttpServletRequest httpServletRequest) {
  728. Map<String, Object> results = new HashMap<>();
  729. String ip = HttpUtil.getIPAddress(httpServletRequest);
  730. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  731. if (whiteList == null) {
  732. results.put("resultCode", -1);
  733. results.put("resultMessage", "当前请求来源未在白名单中【" + ip + "】");
  734. return results;
  735. }
  736. if (haiciCharge == null) {
  737. results.put("resultCode", -1);
  738. results.put("resultMessage", "门诊缴费订单支付参数为空");
  739. return results;
  740. }
  741. if (haiciCharge.getPatCardType() == null) {
  742. results.put("resultCode", -1);
  743. results.put("resultMessage", "患者诊疗卡类型不能为空");
  744. return results;
  745. }
  746. if (StringUtils.isBlank(haiciCharge.getPatCardNo())) {
  747. results.put("resultCode", -1);
  748. results.put("resultMessage", "患者诊疗卡号不能为空");
  749. return results;
  750. }
  751. if (StringUtils.isBlank(haiciCharge.getHisOrdNum())) {
  752. results.put("resultCode", -1);
  753. results.put("resultMessage", "医院订单号不能为空");
  754. return results;
  755. }
  756. if (StringUtils.isBlank(haiciCharge.getPsOrdNum())) {
  757. results.put("resultCode", -1);
  758. results.put("resultMessage", "平台订单号不能为空");
  759. return results;
  760. }
  761. //if (StringUtils.isBlank(haiciCharge.getPayMode())) {
  762. // results.put("resultCode", -1);
  763. // results.put("resultMessage", "支付方式不能为空");
  764. // return results;
  765. //}
  766. //if (!Arrays.asList(WX, ZFB).contains(haiciCharge.getPayMode())) {
  767. // results.put("resultCode", -1);
  768. // results.put("resultMessage", "支付方式有误,请联系管理员");
  769. // return results;
  770. //}
  771. if (haiciCharge.getPayAmt() == null) {
  772. results.put("resultCode", -1);
  773. results.put("resultMessage", "支付金额不能为空");
  774. return results;
  775. }
  776. if (StringUtils.isBlank(haiciCharge.getAgtOrdNum())) {
  777. results.put("resultCode", -1);
  778. results.put("resultMessage", "支付机构流水号不能为空");
  779. return results;
  780. }
  781. if (haiciCharge.getPayTime() == null) {
  782. results.put("resultCode", -1);
  783. results.put("resultMessage", "支付时间不能为空");
  784. return results;
  785. }
  786. try {
  787. MzDepositFile mzDepositFileDb = mzDepositFileService.queryMzDepositFileByAgtordnum(haiciCharge.getPsOrdNum(), haiciCharge.getAgtOrdNum(), null);
  788. if (mzDepositFileDb != null && PayMarkEnum.CHARGED.code.equals(mzDepositFileDb.getPayMark())) {
  789. results.put("resultCode", 0);
  790. results.put("resultMessage", "缴费成功");
  791. results.put("guideListInfo", "");
  792. return results;
  793. }
  794. String[] arr = haiciCharge.getHisOrdNum().split("_");
  795. MzDepositFileVo mzDepositFileVo = new MzDepositFileVo();
  796. mzDepositFileVo.setPatientId(arr[0]);
  797. mzDepositFileVo.setTimes(Integer.valueOf(arr[1]));
  798. mzDepositFileVo.setReceiptNo(Integer.valueOf(arr[2]));
  799. List<MzDepositFile> mzDepositFiles = new ArrayList<>();
  800. mzDepositFileVo.setMzDepositFiles(mzDepositFiles);
  801. if (haiciCharge.getCashpayAmt() !=null && haiciCharge.getCashpayAmt().compareTo(BigDecimal.ZERO) == 1) {
  802. setAllDepositFile(mzDepositFiles,haiciCharge,Constants.ZZWX,haiciCharge.getCashpayAmt());
  803. }
  804. if (haiciCharge.getAcctpayAmt() !=null && haiciCharge.getAcctpayAmt().compareTo(BigDecimal.ZERO) == 1) {
  805. setAllDepositFile(mzDepositFiles,haiciCharge, Constants.SHENYGZ,haiciCharge.getAcctpayAmt());
  806. }
  807. if (haiciCharge.getFundpayAmt() !=null && haiciCharge.getFundpayAmt().compareTo(BigDecimal.ZERO) == 1) {
  808. setAllDepositFile(mzDepositFiles,haiciCharge, Constants.YBJZ,haiciCharge.getFundpayAmt());
  809. }
  810. if (haiciCharge.getCouponAmt() !=null && haiciCharge.getCouponAmt().compareTo(BigDecimal.ZERO) == 1) {
  811. BigDecimal tempCouponAmt = calcuCouponAmt(haiciCharge);
  812. setAllDepositFile(mzDepositFiles,haiciCharge, Constants.DJZ,tempCouponAmt);
  813. }
  814. mzChargeDetailService.chargeFee(whiteList.getOpId(), mzDepositFileVo, whiteList.getOpId());
  815. results.put("resultCode", 0);
  816. results.put("resultMessage", "缴费成功");
  817. results.put("guideListInfo", "");
  818. return results;
  819. } catch (MzException e) {
  820. e.printStackTrace();
  821. results.put("resultCode", -1);
  822. results.put("resultMessage", "缴费失败," + e.getMessage());
  823. log.error("缴费失败,系统异常,错误信息【{}】", e);
  824. return results;
  825. } catch (Exception e) {
  826. e.printStackTrace();
  827. results.put("resultCode", -1);
  828. results.put("resultMessage", "门诊缴费订单支付失败,请联系管理员");
  829. log.error("系统异常,错误信息{}", e);
  830. return results;
  831. }
  832. }
  833. private BigDecimal calcuCouponAmt(HaiciCharge haiciCharge) {
  834. BigDecimal temp = haiciCharge.getPayAmt().subtract(Convert.toBigDecimal(haiciCharge.getAcctpayAmt(), BigDecimal.ZERO)).subtract(Convert.toBigDecimal(haiciCharge.getCashpayAmt(), BigDecimal.ZERO)).subtract(Convert.toBigDecimal(haiciCharge.getFundpayAmt(), BigDecimal.ZERO));
  835. if(temp.compareTo(haiciCharge.getCouponAmt()) < 0 ){
  836. return temp;
  837. }
  838. return haiciCharge.getCouponAmt();
  839. }
  840. private void setAllDepositFile(List<MzDepositFile> mzDepositFiles,HaiciCharge haiciCharge,String chequeType,BigDecimal amount) {
  841. MzDepositFile mzDepositFile = new MzDepositFile();
  842. mzDepositFile.setChequeType(chequeType);
  843. if(Constants.ZZWX.equals(chequeType)){
  844. mzDepositFile.setPsordnum(haiciCharge.getPsOrdNum());
  845. mzDepositFile.setAgtordnum(haiciCharge.getAgtOrdNum());
  846. }
  847. mzDepositFile.setAmount(amount);
  848. mzDepositFiles.add(mzDepositFile);
  849. }
  850. private void setYbDepositFile(WhiteList whiteList, MzDepositFileVo mzDepositFileVo, MzDepositFile mzDepositFile, List<MzDepositFile> mzDepositFiles) {
  851. PayInfo payInfo = tsmzService.calculateCost(whiteList.getOpId(), mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), mzDepositFileVo.getReceiptNo(), null);
  852. if (payInfo != null && payInfo.getCode() == 0) {
  853. //如果门诊统筹支付有值,添加收费方式
  854. if (payInfo.getFundPay().compareTo(BigDecimal.ZERO) == 1) {
  855. MzDepositFile ybjzmzDepositFile = CloneUtil.clone(mzDepositFile);
  856. ybjzmzDepositFile.setAmount(payInfo.getFundPay());
  857. ybjzmzDepositFile.setChequeType(Constants.YBJZ);
  858. ybjzmzDepositFile.setPsordnum(null);
  859. ybjzmzDepositFile.setAgtordnum(null);
  860. mzDepositFiles.add(ybjzmzDepositFile);
  861. }
  862. //如果个人账户支付有值,添加收费方式
  863. if (payInfo.getAcctPay().compareTo(BigDecimal.ZERO) == 1) {
  864. MzDepositFile grzhmzDepositFile = CloneUtil.clone(mzDepositFile);
  865. grzhmzDepositFile.setAmount(payInfo.getAcctPay());
  866. grzhmzDepositFile.setChequeType(Integer.valueOf(2).equals(payInfo.getCardType()) ? Constants.SHENYGZ : Constants.SSHIYBGZ);
  867. grzhmzDepositFile.setPsordnum(null);
  868. grzhmzDepositFile.setAgtordnum(null);
  869. mzDepositFiles.add(grzhmzDepositFile);
  870. }
  871. }
  872. }
  873. @PostMapping("/mzChargeFee")
  874. public R mzChargeFee(@RequestBody Map<String, Object> query, HttpServletRequest httpServletRequest) {
  875. String patientId = Convert.toStr(query.get("patientId"));
  876. AssertUtil.isNotBlank(patientId, "门诊号不能为空");
  877. BigDecimal totalFee = Convert.toBigDecimal(query.get("totalFee"));
  878. Integer times = Convert.toInt(query.get("times"));
  879. AssertUtil.isNotBlank(times, "就诊次数不能为空");
  880. MzDepositFileVo mzDepositFileVo = new MzDepositFileVo();
  881. mzDepositFileVo.setPatientId(patientId);
  882. mzDepositFileVo.setTimes(times);
  883. mzDepositFileVo.setReceiptNo(1);
  884. MzDepositFile tempDepositFile = new MzDepositFile();
  885. tempDepositFile.setPatientId(patientId);
  886. tempDepositFile.setTimes(times);
  887. tempDepositFile.setPayMark(PayMarkEnum.CHARGED.code);
  888. tempDepositFile.setReceiptNo(1);
  889. List<MzDepositFile> tempList = mzDepositFileService.queryMzDepositFileByTimesAndPayMark(tempDepositFile);
  890. if (CollUtil.isNotEmpty(tempList)) {
  891. return R.error("已经收费");
  892. }
  893. try {
  894. MzChargeDetail mzChargeDetail = mzChargeDetailService.unPaidToFullChargeDetail(new MzChargeDetail(patientId, times));
  895. if (mzChargeDetail == null) {
  896. return R.error("没有待收费记录");
  897. }
  898. PayInfo payInfo = tsmzService.calculateCost(Constants.BRZZJF_CODE, patientId, times, 1, null);
  899. if (payInfo != null && payInfo.getCode() == 0) {
  900. List<MzDepositFile> mzDepositFiles = new ArrayList<>();
  901. BigDecimal tempTotal = BigDecimal.ZERO;
  902. if (payInfo.getAcctPay().compareTo(BigDecimal.ZERO) == 1) {
  903. tempTotal = tempTotal.add(payInfo.getAcctPay());
  904. }
  905. if (payInfo.getFundPay().compareTo(BigDecimal.ZERO) == 1) {
  906. tempTotal = tempTotal.add(payInfo.getFundPay());
  907. }
  908. if (totalFee.compareTo(tempTotal) == 1) {
  909. MzDepositFile mzDepositFile = new MzDepositFile();
  910. if (totalFee.compareTo(BigDecimal.ZERO) == 0) {
  911. mzDepositFile.setChequeType(Constants.CASH);
  912. } else {
  913. mzDepositFile.setChequeType(Constants.ZZWX);
  914. }
  915. mzDepositFile.setAmount(totalFee.subtract(tempTotal));
  916. mzDepositFiles.add(mzDepositFile);
  917. }
  918. //如果门诊统筹支付有值,添加收费方式
  919. if (payInfo.getFundPay().compareTo(BigDecimal.ZERO) == 1) {
  920. MzDepositFile ybjzmzDepositFile = new MzDepositFile();
  921. ybjzmzDepositFile.setAmount(payInfo.getFundPay());
  922. ybjzmzDepositFile.setChequeType(Constants.YBJZ);
  923. ybjzmzDepositFile.setPsordnum(null);
  924. ybjzmzDepositFile.setAgtordnum(null);
  925. mzDepositFiles.add(ybjzmzDepositFile);
  926. }
  927. //如果个人账户支付有值,添加收费方式
  928. if (payInfo.getAcctPay().compareTo(BigDecimal.ZERO) == 1) {
  929. MzDepositFile grzhmzDepositFile = new MzDepositFile();
  930. grzhmzDepositFile.setAmount(payInfo.getAcctPay());
  931. grzhmzDepositFile.setChequeType(Integer.valueOf(2).equals(payInfo.getCardType()) ? Constants.SHENYGZ : Constants.SSHIYBGZ);
  932. grzhmzDepositFile.setPsordnum(null);
  933. grzhmzDepositFile.setAgtordnum(null);
  934. mzDepositFiles.add(grzhmzDepositFile);
  935. }
  936. if (CollUtil.isNotEmpty(mzDepositFiles)) {
  937. mzDepositFileVo.setMzDepositFiles(mzDepositFiles);
  938. mzChargeDetailService.chargeFee(Constants.BRZZJF_CODE, mzDepositFileVo, Constants.BRZZJF_CODE);
  939. } else {
  940. throw new BizException("获取医保费用失败");
  941. }
  942. } else {
  943. throw new BizException("获取医保费用失败");
  944. }
  945. } catch (MzException e) {
  946. throw new BizException(e.getMessage());
  947. }
  948. return R.ok("收费成功");
  949. }
  950. /**
  951. * 门诊缴费订单支付状态查询
  952. *
  953. * @param haiciCharge
  954. * @return
  955. */
  956. @RequestMapping(value = "/getPayStatus", method = {RequestMethod.POST})
  957. public Map<String, Object> getPayStatus(@RequestBody HaiciCharge haiciCharge) {
  958. Map<String, Object> results = new HashMap<>();
  959. if (haiciCharge == null) {
  960. results.put("resultCode", -1);
  961. results.put("resultMessage", "门诊缴费订单支付状态查询参数为空");
  962. return results;
  963. }
  964. if (StringUtils.isBlank(haiciCharge.getHisOrdNum())) {
  965. results.put("resultCode", -1);
  966. results.put("resultMessage", "医院订单号不能为空");
  967. return results;
  968. }
  969. if (StringUtils.isBlank(haiciCharge.getPsOrdNum())) {
  970. results.put("resultCode", -1);
  971. results.put("resultMessage", "平台订单号不能为空");
  972. return results;
  973. }
  974. if (StringUtils.isBlank(haiciCharge.getPayMode())) {
  975. results.put("resultCode", -1);
  976. results.put("resultMessage", "支付方式不能为空");
  977. return results;
  978. }
  979. if (!Arrays.asList(WX, ZFB).contains(haiciCharge.getPayMode())) {
  980. results.put("resultCode", -1);
  981. results.put("resultMessage", "支付方式有误,请联系管理员");
  982. return results;
  983. }
  984. if (haiciCharge.getPayAmt() == null) {
  985. results.put("resultCode", -1);
  986. results.put("resultMessage", "支付金额不能为空");
  987. return results;
  988. }
  989. if (StringUtils.isBlank(haiciCharge.getAgtOrdNum())) {
  990. results.put("resultCode", -1);
  991. results.put("resultMessage", "支付机构流水号不能为空");
  992. return results;
  993. }
  994. if (haiciCharge.getPayTime() == null) {
  995. results.put("resultCode", -1);
  996. results.put("resultMessage", "支付时间不能为空");
  997. return results;
  998. }
  999. try {
  1000. MzDepositFile mzDepositFileDb = mzDepositFileService.queryMzDepositFileByAgtordnum(haiciCharge.getPsOrdNum(), haiciCharge.getAgtOrdNum(), null);
  1001. if (mzDepositFileDb != null && PayMarkEnum.CHARGED.code.equals(mzDepositFileDb.getPayMark())) {
  1002. results.put("resultCode", 0);
  1003. results.put("resultMessage", "门诊缴费订单支付状态查询成功");
  1004. results.put("payStatus", "1");
  1005. results.put("guideListInfo", "");
  1006. results.put("receiptNum", "");
  1007. return results;
  1008. }
  1009. results.put("resultCode", 0);
  1010. results.put("resultMessage", "门诊缴费订单支付状态查询失败");
  1011. results.put("payStatus", "2");
  1012. results.put("guideListInfo", "");
  1013. results.put("receiptNum", "");
  1014. return results;
  1015. } catch (Exception e) {
  1016. e.printStackTrace();
  1017. results.put("resultCode", -1);
  1018. results.put("resultMessage", "门诊缴费订单支付状态查询失败,请联系管理员");
  1019. results.put("payStatus", "2");
  1020. log.error("系统异常,错误信息{}", e);
  1021. return results;
  1022. }
  1023. }
  1024. /**
  1025. * 门诊缴费订单退费
  1026. *
  1027. * @param haiciCharge
  1028. * @return
  1029. */
  1030. @RequestMapping(value = "/saveRefundFeeFormHaiCi", method = {RequestMethod.POST})
  1031. public Map<String, Object> saveRefundFeeFormHaiCi(@RequestBody HaiciCharge haiciCharge) {
  1032. Map<String, Object> results = new HashMap<>();
  1033. if (haiciCharge == null) {
  1034. results.put("resultCode", -1);
  1035. results.put("resultMessage", "门诊缴费订单退费参数为空");
  1036. return results;
  1037. }
  1038. if (StringUtils.isBlank(haiciCharge.getHisOrdNum())) {
  1039. results.put("resultCode", -1);
  1040. results.put("resultMessage", "医院订单号不能为空");
  1041. return results;
  1042. }
  1043. try {
  1044. String[] arr = haiciCharge.getHisOrdNum().split("_");
  1045. MzChargeDetail mzChargeDetail = new MzChargeDetail(arr[0], Integer.valueOf(arr[1]));
  1046. mzChargeDetail.setReceiptNo(Integer.valueOf(arr[2]));
  1047. List<MzChargeDetail> mzChargeDetailList = mzChargeDetailService.queryMzChargeDetailByBillItemCode(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(), mzChargeDetail.getReceiptNo(), PayMarkEnum.CHARGED.code, "2", Arrays.asList("TC"));
  1048. if (mzChargeDetailList == null || mzChargeDetailList.size() == 0) {
  1049. results.put("resultCode", -1);
  1050. results.put("resultMessage", "未查询到已缴费明细记录");
  1051. return results;
  1052. }
  1053. String chargeItemCodes = null;
  1054. for (MzChargeDetail md : mzChargeDetailList) {
  1055. if (md == null || Constants.TC.equals(md.getBillItemCode())) {
  1056. continue;
  1057. }
  1058. if (ConfirmFlagEnum.CONFIRM.code.equals(md.getConfirmFlag())) {
  1059. results.put("resultCode", -1);
  1060. results.put("resultMessage", "无法退费,当前处方已经被确认,请您联系该科室进行处理");
  1061. return results;
  1062. }
  1063. if (chargeItemCodes == null) {
  1064. chargeItemCodes = md.getOrderNo() + "_" + md.getItemNo() + "_" + md.getChargeItemCode();
  1065. } else {
  1066. chargeItemCodes += "," + md.getOrderNo() + "_" + md.getItemNo() + "_" + md.getChargeItemCode();
  1067. }
  1068. }
  1069. MzDepositFileVo mzDepositFileVo = new MzDepositFileVo();
  1070. mzDepositFileVo.setPatientId(arr[0]);
  1071. mzDepositFileVo.setTimes(Integer.valueOf(arr[1]));
  1072. mzDepositFileVo.setReceiptNo(Integer.valueOf(arr[2]));
  1073. mzDepositFileVo.setChargeItemCodes(chargeItemCodes);
  1074. mzDepositFileVo.setRefundType(YesNoEnum.YES.code);
  1075. User tokenUser = userService.queryUserByUserIdCode(Constants.BRZZJF_CODE);
  1076. mzChargeDetailService.refundFee(tokenUser.getUserIdCode(), mzDepositFileVo, Constants.BRZZJF_CODE);
  1077. results.put("resultCode", 0);
  1078. results.put("resultMessage", "退费成功");
  1079. results.put("guideListInfo", "");
  1080. return results;
  1081. } catch (Exception e) {
  1082. e.printStackTrace();
  1083. results.put("resultCode", -1);
  1084. results.put("resultMessage", "门诊订单退费失败,请联系管理员");
  1085. log.error("系统异常,错误信息{}", e);
  1086. return results;
  1087. }
  1088. }
  1089. /**
  1090. * @description: 套餐退费
  1091. * @author: lihong
  1092. * @date: 2023/11/30 14:24
  1093. * @param: params
  1094. * @param: httpServletRequest
  1095. * @return: cn.hnthyy.thmz.Utils.R
  1096. **/
  1097. @PostMapping("/tcRefundFee")
  1098. public R tcRefundFee(@RequestBody List<TcRefundFeeVo> params, HttpServletRequest httpServletRequest) {
  1099. String ip = HttpUtil.getIPAddress(httpServletRequest);
  1100. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  1101. AssertUtil.isNotBlank(whiteList, "当前请求来源未在白名单中【" + ip + "】");
  1102. mzChargeDetailService.tcRefundFee(params, whiteList.getOpId());
  1103. return R.ok("退费成功");
  1104. }
  1105. /**
  1106. * 门诊已缴费记录查询
  1107. *
  1108. * @param mzDepositFile
  1109. * @return
  1110. */
  1111. @RequestMapping(value = "/getMzChargeDetailForPaid", method = {RequestMethod.POST})
  1112. public Map<String, Object> getMzChargeDetailForPaid(@RequestBody MzDepositFile mzDepositFile, HttpServletRequest httpServletRequest) {
  1113. Map<String, Object> results = new HashMap<>();
  1114. String ip = HttpUtil.getIPAddress(httpServletRequest);
  1115. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  1116. if (whiteList == null) {
  1117. results.put("resultCode", -1);
  1118. results.put("resultMessage", "当前请求来源未在白名单中【" + ip + "】");
  1119. return results;
  1120. }
  1121. if (mzDepositFile == null) {
  1122. results.put("resultCode", -1);
  1123. results.put("resultMessage", "门诊待已费记录查询参数为空");
  1124. return results;
  1125. }
  1126. if (mzDepositFile.getPatientId() == null) {
  1127. results.put("resultCode", -1);
  1128. results.put("resultMessage", "患者ID不能为空");
  1129. return results;
  1130. }
  1131. mzDepositFile.setOpId(whiteList.getOpId());
  1132. try {
  1133. List<Map<String, Object>> mzChargeDetailList = mzDepositFileService.queryMzDepositFileForZZ(mzDepositFile);
  1134. if (mzChargeDetailList == null || mzChargeDetailList.size() == 0) {
  1135. results.put("resultCode", -1);
  1136. results.put("resultMessage", "未查询到已缴费记录");
  1137. return results;
  1138. }
  1139. results.put("resultCode", 0);
  1140. results.put("resultMessage", "已缴费记录查询成功");
  1141. results.put("data", mzChargeDetailList);
  1142. return results;
  1143. } catch (Exception e) {
  1144. e.printStackTrace();
  1145. results.put("resultCode", -1);
  1146. results.put("resultMessage", "门诊已缴费记录查询失败,请联系管理员,错误信息{" + e.getMessage() + "}");
  1147. log.error("系统异常,错误信息{}", e);
  1148. return results;
  1149. }
  1150. }
  1151. /**
  1152. * 门诊挂号记录查询
  1153. *
  1154. * @param mzyReqrec
  1155. * @return
  1156. */
  1157. @RequestMapping(value = "/getRegistrationForPaid", method = {RequestMethod.POST})
  1158. public Map<String, Object> getRegistrationForPaid(@RequestBody MzyReqrec mzyReqrec) {
  1159. Map<String, Object> results = new HashMap<>();
  1160. if (mzyReqrec == null) {
  1161. results.put("resultCode", -1);
  1162. results.put("resultMessage", "门诊挂号记录查询参数为空");
  1163. return results;
  1164. }
  1165. if (mzyReqrec.getPatientId() == null) {
  1166. results.put("resultCode", -1);
  1167. results.put("resultMessage", "患者ID不能为空");
  1168. return results;
  1169. }
  1170. try {
  1171. mzyReqrec.setOpId(Constants.BRZZJF_CODE);
  1172. MzyReqrecPageDto mzyReqrecPageDto = new MzyReqrecPageDto();
  1173. mzyReqrecPageDto.setPageSize(1000);
  1174. mzyReqrecPageDto.setMzyReqrec(mzyReqrec);
  1175. mzyReqrecPageDto.setPatientIds(Arrays.asList(mzyReqrec.getPatientId()));
  1176. mzyReqrecPageDto.setTableName("mzy_reqrec");
  1177. List<MzyReqrec> mzyReqrecList = mzyReqrecService.queryMzyReqrecWithPage(mzyReqrecPageDto);
  1178. List<Map<String, Object>> list = new ArrayList<>();
  1179. Map<String, String> employeeMap = null;
  1180. Set<String> set = new HashSet<>();
  1181. getStringStringMap(mzyReqrecList, list, employeeMap, set);
  1182. // mzyReqrecPageDto.setTableName("mzy_reqrec_b");
  1183. // mzyReqrecList = mzyReqrecService.queryMzyReqrecWithPage(mzyReqrecPageDto);
  1184. // getStringStringMap(mzyReqrecList, list, employeeMap, set);
  1185. if (list == null || list.size() == 0) {
  1186. results.put("resultCode", -1);
  1187. results.put("resultMessage", "未查询到挂号记录");
  1188. return results;
  1189. }
  1190. results.put("resultCode", 0);
  1191. results.put("resultMessage", "挂号记录查询成功");
  1192. results.put("data", list);
  1193. return results;
  1194. } catch (Exception e) {
  1195. e.printStackTrace();
  1196. results.put("resultCode", -1);
  1197. results.put("resultMessage", "门诊挂号记录查询失败,请联系管理员,错误信息{" + e.getMessage() + "}");
  1198. log.error("系统异常,错误信息{}", e);
  1199. return results;
  1200. }
  1201. }
  1202. private Map<String, String> getStringStringMap(List<MzyReqrec> mzyReqrecList, List<Map<String, Object>> list, Map<String, String> employeeMap, Set<String> set) {
  1203. if (mzyReqrecList != null && mzyReqrecList.size() > 0) {
  1204. if (employeeMap == null) {
  1205. List<Employee> employees = employeeService.queryAll();
  1206. if (employees != null) {
  1207. employeeMap = employees.stream().collect(Collectors.toMap(Employee::getEmployeeCode, Employee::getEmployeeName));
  1208. }
  1209. }
  1210. for (MzyReqrec mr : mzyReqrecList) {
  1211. if (set.contains(mr.getPsordnum())) {
  1212. continue;
  1213. }
  1214. Map<String, Object> map = new HashMap<>();
  1215. map.put("patientId", mr.getPatientId());
  1216. map.put("doctorName", employeeMap.get(mr.getDoctorCode()));
  1217. map.put("unitName", zdUnitCodeService.queryDeptNameByIdInCache(mr.getUnitCode()));
  1218. map.put("requestDay", DateUtil.fomart(mr.getRequestDay(), "yyyy-MM-dd HH:mm:ss"));
  1219. map.put("opDay", DateUtil.fomart(mr.getOpDay(), "yyyy-MM-dd HH:mm:ss"));
  1220. if (StringUtils.isNotBlank(mr.getChargeType())) {
  1221. MzyZdChargeType mzyZdChargeType = mzyZdChargeTypeService.queryByCode(mr.getChargeType());
  1222. if (mzyZdChargeType != null) {
  1223. map.put("chargeType", mzyZdChargeType.getName());
  1224. } else {
  1225. map.put("chargeType", "");
  1226. }
  1227. }
  1228. BigDecimal fee = BigDecimal.ZERO;
  1229. if (mr.getReqFee() == null) {
  1230. mr.setReqFee(BigDecimal.ZERO);
  1231. }
  1232. if (mr.getClinicFee() == null) {
  1233. mr.setClinicFee(BigDecimal.ZERO);
  1234. }
  1235. if (mr.getOthFee() == null) {
  1236. mr.setOthFee(BigDecimal.ZERO);
  1237. }
  1238. fee = fee.add(mr.getReqFee()).add(mr.getClinicFee()).add(mr.getOthFee());
  1239. map.put("fee", fee);
  1240. list.add(map);
  1241. set.add(mr.getPatientId());
  1242. }
  1243. }
  1244. return employeeMap;
  1245. }
  1246. /**
  1247. * 保存处方信息
  1248. *
  1249. * @param mzPrescriptionVo
  1250. * @return
  1251. */
  1252. @RequestMapping(value = "/savePrescription", method = {RequestMethod.POST})
  1253. public Map<String, Object> savePrescription(@RequestBody MzPrescriptionVo mzPrescriptionVo, HttpServletRequest httpServletRequest) {
  1254. Map<String, Object> results = new HashMap<>();
  1255. try {
  1256. String ip = HttpUtil.getIPAddress(httpServletRequest);
  1257. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  1258. if (whiteList == null) {
  1259. results.put("resultCode", -1);
  1260. results.put("resultMessage", "当前请求来源未在白名单中【" + ip + "】");
  1261. return results;
  1262. }
  1263. mzPrescriptionVo.setJzFlag(YesNoEnum.NO.code);
  1264. mzPrescriptionVo.setFirstOrNot(YesNoEnum.NO.code);
  1265. if (StringUtils.isBlank(mzPrescriptionVo.getDoctorCode())) {
  1266. mzPrescriptionVo.setDoctorCode(whiteList.getOpId());
  1267. }
  1268. if (StringUtils.isBlank(mzPrescriptionVo.getVisitDeptCode())) {
  1269. mzPrescriptionVo.setVisitDeptCode(Constants.ZZBM);
  1270. }
  1271. mzPrescriptionVo.setOpId(whiteList.getOpId());
  1272. Clinic clinic = mzChargeDetailService.savePrescription(mzPrescriptionVo, null, true);
  1273. if (clinic != null && clinic.getId() != null) {
  1274. results.put("resultCode", 0);
  1275. results.put("resultMessage", "门诊处方保存成功");
  1276. return results;
  1277. }
  1278. results.put("resultCode", -1);
  1279. results.put("resultMessage", "门诊处方保存失败");
  1280. return results;
  1281. } catch (MzException e) {
  1282. results.put("resultCode", -1);
  1283. results.put("resultMessage", e.getMessage());
  1284. log.error("系统异常,错误信息{}", e);
  1285. return results;
  1286. } catch (Exception e) {
  1287. e.printStackTrace();
  1288. results.put("resultCode", -1);
  1289. results.put("resultMessage", "门诊处方保存失败,请联系管理员");
  1290. log.error("系统异常,错误信息{}", e);
  1291. return results;
  1292. }
  1293. }
  1294. /**
  1295. * 核酸(单人单管[仅黄码人员])申请
  1296. *
  1297. * @param patientId
  1298. * @return
  1299. */
  1300. @RequestMapping(value = "/nucleicOnlyYellowAcidApplication", method = {RequestMethod.GET})
  1301. public Map<String, Object> nucleicOnlyYellowAcidApplication(@RequestParam("patientId") String patientId, HttpServletRequest httpServletRequest) {
  1302. Map<String, Object> results = new HashMap<>();
  1303. try {
  1304. String ip = HttpUtil.getIPAddress(httpServletRequest);
  1305. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  1306. if (whiteList == null) {
  1307. results.put("resultCode", -1);
  1308. results.put("resultMessage", "当前请求来源未在白名单中【" + ip + "】");
  1309. return results;
  1310. }
  1311. if (StringUtils.isBlank(patientId)) {
  1312. results.put("resultCode", -1);
  1313. results.put("resultMessage", "患者ID不能为空");
  1314. return results;
  1315. }
  1316. Clinic clinic = mzChargeDetailService.nucleicOnlyYellowAcidApplication(patientId, whiteList.getOpId());
  1317. if (clinic != null && clinic.getId() != null) {
  1318. // MzDepositFileVo mzDepositFileVo = new MzDepositFileVo();
  1319. // mzDepositFileVo.setPatientId(clinic.getPatientId());
  1320. // mzDepositFileVo.setTimes(clinic.getTimes());
  1321. // mzDepositFileVo.setReceiptNo(clinic.getReceiptNo());
  1322. // MzDepositFile mzDepositFile = new MzDepositFile();
  1323. // mzDepositFile.setChequeType(Constants.CASH);
  1324. // mzDepositFile.setAmount(BigDecimal.ZERO);
  1325. // mzDepositFile.setResponceType(Constants.NUCLEIC_ONLY_YELLOW_ACID_APPLICATION);
  1326. // mzDepositFileVo.setMzDepositFiles(Arrays.asList(mzDepositFile));
  1327. // mzChargeDetailService.chargeFee(Constants.BRZZJF_CODE, mzDepositFileVo, Constants.BRZZJF_CODE);
  1328. results.put("resultCode", 0);
  1329. results.put("resultMessage", "核酸(单人单管[仅黄码人员])申请保存成功");
  1330. return results;
  1331. }
  1332. results.put("resultCode", -1);
  1333. results.put("resultMessage", "核酸(单人单管[仅黄码人员])申请保存失败");
  1334. return results;
  1335. } catch (MzException e) {
  1336. results.put("resultCode", -1);
  1337. results.put("resultMessage", e.getMessage());
  1338. log.error("系统异常,错误信息{}", e);
  1339. return results;
  1340. } catch (Exception e) {
  1341. e.printStackTrace();
  1342. results.put("resultCode", -1);
  1343. results.put("resultMessage", "核酸(单人单管[仅黄码人员])申请保存失败,请联系管理员");
  1344. log.error("系统异常,错误信息{}", e);
  1345. return results;
  1346. }
  1347. }
  1348. /**
  1349. * 核酸(单人单管)申请
  1350. *
  1351. * @param patientId
  1352. * @return
  1353. */
  1354. @RequestMapping(value = "/nucleicAcidApplication", method = {RequestMethod.GET})
  1355. public Map<String, Object> nucleicAcidApplication(@RequestParam("patientId") String patientId, HttpServletRequest httpServletRequest) {
  1356. Map<String, Object> results = new HashMap<>();
  1357. try {
  1358. String ip = HttpUtil.getIPAddress(httpServletRequest);
  1359. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  1360. if (whiteList == null) {
  1361. results.put("resultCode", -1);
  1362. results.put("resultMessage", "当前请求来源未在白名单中【" + ip + "】");
  1363. return results;
  1364. }
  1365. if (StringUtils.isBlank(patientId)) {
  1366. results.put("resultCode", -1);
  1367. results.put("resultMessage", "患者ID不能为空");
  1368. return results;
  1369. }
  1370. Clinic clinic = mzChargeDetailService.nucleicAcidApplication(patientId, whiteList.getOpId());
  1371. if (clinic != null && clinic.getId() != null) {
  1372. results.put("resultCode", 0);
  1373. results.put("resultMessage", "核酸申请(单人单管)保存成功");
  1374. return results;
  1375. }
  1376. results.put("resultCode", -1);
  1377. results.put("resultMessage", "核酸申请(单人单管)保存失败");
  1378. return results;
  1379. } catch (MzException e) {
  1380. results.put("resultCode", -1);
  1381. results.put("resultMessage", e.getMessage());
  1382. log.error("系统异常,错误信息{}", e);
  1383. return results;
  1384. } catch (Exception e) {
  1385. e.printStackTrace();
  1386. results.put("resultCode", -1);
  1387. results.put("resultMessage", "核酸申请(单人单管)保存失败,请联系管理员");
  1388. log.error("系统异常,错误信息{}", e);
  1389. return results;
  1390. }
  1391. }
  1392. /**
  1393. * 核酸(混检)申请
  1394. *
  1395. * @param patientId
  1396. * @return
  1397. */
  1398. @RequestMapping(value = "/hybridTestApplication", method = {RequestMethod.GET})
  1399. public Map<String, Object> hybridTestApplication(@RequestParam("patientId") String patientId, HttpServletRequest httpServletRequest) {
  1400. Map<String, Object> results = new HashMap<>();
  1401. try {
  1402. String ip = HttpUtil.getIPAddress(httpServletRequest);
  1403. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  1404. if (whiteList == null) {
  1405. results.put("resultCode", -1);
  1406. results.put("resultMessage", "当前请求来源未在白名单中【" + ip + "】");
  1407. return results;
  1408. }
  1409. if (StringUtils.isBlank(patientId)) {
  1410. results.put("resultCode", -1);
  1411. results.put("resultMessage", "患者ID不能为空");
  1412. return results;
  1413. }
  1414. Clinic clinic = mzChargeDetailService.hybridTestApplication(patientId, whiteList.getOpId());
  1415. if (clinic != null && clinic.getId() != null) {
  1416. results.put("resultCode", 0);
  1417. results.put("resultMessage", "核酸申请(混检)保存成功");
  1418. return results;
  1419. }
  1420. results.put("resultCode", -1);
  1421. results.put("resultMessage", "核酸申请(混检)保存失败");
  1422. return results;
  1423. } catch (MzException e) {
  1424. results.put("resultCode", -1);
  1425. results.put("resultMessage", e.getMessage());
  1426. log.error("系统异常,错误信息{}", e);
  1427. return results;
  1428. } catch (Exception e) {
  1429. e.printStackTrace();
  1430. results.put("resultCode", -1);
  1431. results.put("resultMessage", "核酸申请(混检)保存失败,请联系管理员");
  1432. log.error("系统异常,错误信息{}", e);
  1433. return results;
  1434. }
  1435. }
  1436. @PostMapping("/saveTcPrescription")
  1437. public R saveTcPrescription(@RequestBody DiscountVo param, HttpServletRequest httpServletRequest) {
  1438. String ip = HttpUtil.getIPAddress(httpServletRequest);
  1439. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  1440. AssertUtil.isNotBlank(whiteList, "当前请求来源未在白名单中【" + ip + "】");
  1441. param.setOpId(whiteList.getOpId());
  1442. try {
  1443. mzChargeDetailService.saveTcPrescription(param);
  1444. } catch (MzException e) {
  1445. return R.error(e.getMessage());
  1446. }
  1447. return R.ok("保存套餐处方成功");
  1448. }
  1449. /**
  1450. * 根据病人住院号查询住院病人信息
  1451. *
  1452. * @return
  1453. */
  1454. @RequestMapping(value = "/getCountByInpatientNo", method = {RequestMethod.GET})
  1455. public Map<String, Object> getCountByInpatientNo(@RequestParam("inpatientNo") String inpatientNo) {
  1456. log.info("根据病人住院号查询住院病人信息");
  1457. Map<String, Object> resultMap = new HashMap<>();
  1458. try {
  1459. if (StringUtils.isBlank(inpatientNo)) {
  1460. resultMap.put("resultCode", -1);
  1461. resultMap.put("resultMessage", "病人住院号不能为空");
  1462. return resultMap;
  1463. }
  1464. resultMap.put("resultCode", 0);
  1465. resultMap.put("resultMessage", "查询病人信息成功");
  1466. resultMap.put("data", zyActpatientService.queryCountByInpatientNo(inpatientNo));
  1467. return resultMap;
  1468. } catch (Exception e) {
  1469. e.printStackTrace();
  1470. resultMap.put("resultCode", -1);
  1471. resultMap.put("resultMessage", "根据病人住院号查询住院病人信息出错,请联系管理员");
  1472. log.error("根据病人住院号查询住院病人信息异常,错误信息{}", e);
  1473. return resultMap;
  1474. }
  1475. }
  1476. /**
  1477. * 根据住院号查询院记录的
  1478. *
  1479. * @return
  1480. */
  1481. @RequestMapping(value = "/getByInpatientNo", method = {RequestMethod.GET})
  1482. public Map<String, Object> getByInpatientNo(@RequestParam("inpatientNo") String inpatientNo) {
  1483. log.info("根据住院号查询在院记录");
  1484. Map<String, Object> resultMap = new HashMap<>();
  1485. try {
  1486. if (StringUtils.isBlank(inpatientNo)) {
  1487. resultMap.put("resultCode", -1);
  1488. resultMap.put("resultMessage", "病人住院号不能为空");
  1489. return resultMap;
  1490. }
  1491. resultMap.put("resultCode", 0);
  1492. resultMap.put("resultMessage", "根据住院号查询在院记录成功");
  1493. ZyActpatient zyActpatient = zyActpatientService.queryByInpatientNo("zy_actpatient", inpatientNo, null);
  1494. GenderEnum genderEnum = GenderEnum.getGenderByCode(Integer.valueOf(zyActpatient.getSex()));
  1495. zyActpatient.setGender(genderEnum == null ? GenderEnum.UNKNOWN.name : genderEnum.name);
  1496. zyActpatient.setDeptName(zdUnitCodeService.queryDeptNameByIdInCache(zyActpatient.getDept()));
  1497. zyActpatient.setResponceTypeName(responceTypeService.queryNameByCode(zyActpatient.getResponceType()));
  1498. resultMap.put("data", zyActpatient);
  1499. return resultMap;
  1500. } catch (Exception e) {
  1501. e.printStackTrace();
  1502. resultMap.put("resultCode", -1);
  1503. resultMap.put("resultMessage", "根据住院号查询在院记录出错,请联系管理员");
  1504. log.error("根据住院号查询在院记录异常,错误信息{}", e);
  1505. return resultMap;
  1506. }
  1507. }
  1508. /**
  1509. * 保存住院收费
  1510. *
  1511. * @return
  1512. */
  1513. @RequestMapping(value = "/saveZyDepositFile", method = {RequestMethod.POST})
  1514. public Map<String, Object> saveZyDepositFile(@RequestBody ZyDepositFile zyDepositFile) {
  1515. log.info("保存住院收费或者退费");
  1516. Map<String, Object> resultMap = new HashMap<>();
  1517. try {
  1518. if (zyDepositFile == null) {
  1519. resultMap.put("resultCode", -1);
  1520. resultMap.put("resultMessage", "参数不能为空");
  1521. return resultMap;
  1522. }
  1523. zyDepositFile.setStatus(YesNoEnum.YES.code.toString());
  1524. if (StringUtils.isBlank(zyDepositFile.getDepoType())) {
  1525. resultMap.put("resultCode", -1);
  1526. resultMap.put("resultMessage", "支付方式不能为空");
  1527. return resultMap;
  1528. }
  1529. if (StringUtils.isBlank(zyDepositFile.getInpatientNo())) {
  1530. resultMap.put("resultCode", -1);
  1531. resultMap.put("resultMessage", "病人住院号不能为空");
  1532. return resultMap;
  1533. }
  1534. if (zyDepositFile.getDepoAmount() == null) {
  1535. resultMap.put("resultCode", -1);
  1536. resultMap.put("resultMessage", "缴费金额不能为空");
  1537. return resultMap;
  1538. }
  1539. if (StringUtils.isBlank(zyDepositFile.getReceiptNo())) {
  1540. resultMap.put("resultCode", -1);
  1541. resultMap.put("resultMessage", "缴费流水号不能为空");
  1542. return resultMap;
  1543. }
  1544. zyDepositFile.setOpIdCode(Constants.BRZZJF_CODE);
  1545. zyDepositFileService.saveZyDepositFile(zyDepositFile);
  1546. resultMap.put("resultCode", 0);
  1547. resultMap.put("resultMessage", "操作成功");
  1548. resultMap.put("receiptNo", zyDepositFile.getReceiptNo());
  1549. //resultMap.put("zyDepositFile", zyDepositFileService.queryZyDepositFileByReceiptNo(zyDepositFile.getReceiptNo()));
  1550. return resultMap;
  1551. } catch (Exception e) {
  1552. e.printStackTrace();
  1553. resultMap.put("resultCode", -1);
  1554. resultMap.put("resultMessage", "保存住院收费出错,错误信息【" + e.getMessage() + "】,请联系管理员");
  1555. log.error("保存住院收费异常,错误信息{}", e.getMessage());
  1556. return resultMap;
  1557. }
  1558. }
  1559. /**
  1560. * 查询挂号科室分类
  1561. *
  1562. * @return
  1563. */
  1564. @RequestMapping(value = "/getMzClass", method = {RequestMethod.GET})
  1565. public Map<String, Object> getMzClass() {
  1566. Map<String, Object> results = new HashMap<>();
  1567. List<ZdMzClass> zdMzClassList = zdMzClassService.queryAllZdMzClass(null);
  1568. if (zdMzClassList == null || zdMzClassList.size() == 0) {
  1569. results.put("resultCode", -1);
  1570. results.put("resultMessage", "没有查询挂号科室分类");
  1571. return results;
  1572. }
  1573. results.put("resultCode", 0);
  1574. results.put("data", zdMzClassList);
  1575. return results;
  1576. }
  1577. /**
  1578. * 新冠拦截手机挂号
  1579. *
  1580. * @return
  1581. */
  1582. @RequestMapping(value = "/covidManageForHaici", method = {RequestMethod.GET})
  1583. public Map<String, Object> covidManageForHaici(@RequestParam("patientId") String patientId, @RequestParam("unitCode") String unitCode) {
  1584. Map<String, Object> resultMap = new HashMap<>();
  1585. if (StringUtils.isBlank(patientId)) {
  1586. resultMap.put("code", -1);
  1587. resultMap.put("message", "查询当前病人流调失败,病人id为空");
  1588. return resultMap;
  1589. }
  1590. if (StringUtils.isBlank(unitCode)) {
  1591. resultMap.put("code", -1);
  1592. resultMap.put("message", "查询当前病人流调失败,科室编码为空");
  1593. return resultMap;
  1594. }
  1595. try {
  1596. mzyReqrecService.covidManageForHaici(patientId, unitCode);
  1597. resultMap.put("code", 0);
  1598. resultMap.put("message", "当前病人已经通过流调");
  1599. return resultMap;
  1600. } catch (MzException e) {
  1601. e.printStackTrace();
  1602. log.error("系统异常,请联系管理员,{}", e);
  1603. resultMap.put("code", e.getValue());
  1604. resultMap.put("message", e.getMessage());
  1605. return resultMap;
  1606. }
  1607. }
  1608. /**
  1609. * 根据门诊科室分类码查询科室列表
  1610. *
  1611. * @return
  1612. */
  1613. @RequestMapping(value = "/getUnitCodeByMzClass", method = {RequestMethod.POST})
  1614. public Map<String, Object> getUnitCodeByMzClass(@RequestBody ZdUnitCode zdUnitCode) {
  1615. Map<String, Object> resultMap = new HashMap<>();
  1616. try {
  1617. if (zdUnitCode == null) {
  1618. resultMap.put("resultCode", -1);
  1619. resultMap.put("resultMessage", "查询科室列表失败,参数为空");
  1620. return resultMap;
  1621. }
  1622. if (StringUtils.isBlank(zdUnitCode.getMzClass())) {
  1623. resultMap.put("resultCode", -1);
  1624. resultMap.put("resultMessage", "查询科室列表失败,门诊分类码为空");
  1625. return resultMap;
  1626. }
  1627. ZdUnitCodePageDto zdUnitCodePageDto = new ZdUnitCodePageDto();
  1628. zdUnitCode.setDelFlag(YesNoEnum.NO.code);
  1629. zdUnitCode.setMzFlag(YesNoEnum.YES.code);
  1630. zdUnitCode.setClassCode(YesNoEnum.YES.code);
  1631. zdUnitCodePageDto.setOrderByCase("sort_code");
  1632. zdUnitCodePageDto.setZdUnitCode(zdUnitCode);
  1633. List<ZdUnitCode> zdUnitCodeList = zdUnitCodeService.queryZdUnitCode(zdUnitCodePageDto);
  1634. if (zdUnitCodeList == null || zdUnitCodeList.size() == 0) {
  1635. resultMap.put("resultCode", -1);
  1636. resultMap.put("message", "没有查询到符合条件的科室列表");
  1637. return resultMap;
  1638. }
  1639. List<ZdUnitCode> children = new ArrayList<>();
  1640. for (ZdUnitCode zu : zdUnitCodeList) {
  1641. zu.setChildren(zdUnitCodeService.queryChildren(zu.getCode()));
  1642. //如果科室父科室不为空,且没有子科室,那么就是二级科室,二级科室不在一级科室列表显示
  1643. if (StringUtils.isNotBlank(zu.getParentCode()) && (zu.getChildren() == null || zu.getChildren().size() == 0)) {
  1644. children.add(zu);
  1645. }
  1646. }
  1647. //如果是二级科室,就不在父科室列表显示
  1648. zdUnitCodeList.removeAll(children);
  1649. resultMap.put("resultCode", 0);
  1650. resultMap.put("data", zdUnitCodeList);
  1651. return resultMap;
  1652. } catch (Exception e) {
  1653. log.error("系统异常,请联系管理员,{}", e);
  1654. resultMap.put("resultCode", -1);
  1655. resultMap.put("message", "没有查询到符合条件的科室列表");
  1656. return resultMap;
  1657. }
  1658. }
  1659. /**
  1660. * 预约号源统计信息查询
  1661. *
  1662. * @return
  1663. */
  1664. @RequestMapping(value = "/getNumByDateAndDept", method = {RequestMethod.GET})
  1665. public Map<String, Object> getNumByDateAndDept(@RequestParam("beginDate") String beginDate, @RequestParam("endDate") String endDate, @RequestParam("unitCode") String unitCode) {
  1666. Map<String, Object> results = new HashMap<>();
  1667. try {
  1668. if (StringUtils.isBlank(beginDate)) {
  1669. results.put("resultCode", -1);
  1670. results.put("resultMessage", "开始时间不能为空");
  1671. return results;
  1672. }
  1673. if (StringUtils.isBlank(endDate)) {
  1674. results.put("resultCode", -1);
  1675. results.put("resultMessage", "结束时间不能为空");
  1676. return results;
  1677. }
  1678. if (StringUtils.isBlank(unitCode)) {
  1679. results.put("resultCode", -1);
  1680. results.put("resultMessage", "科室编码不能为空");
  1681. return results;
  1682. }
  1683. Date beginDateD = DateUtil.pase(beginDate, "yyyy-MM-dd");
  1684. Date endDateD = DateUtil.pase(endDate, "yyyy-MM-dd");
  1685. List<Map<String, Object>> list = mzyRequestService.queryNumByDateAndDept(beginDateD, endDateD, unitCode);
  1686. if (list == null || list.size() == 0) {
  1687. results.put("resultCode", -1);
  1688. results.put("resultMessage", "预约号源统计信息查询失败");
  1689. return results;
  1690. }
  1691. Map<String, Map<String, Object>> tempMap = new HashMap<>();
  1692. for (Map map : list) {
  1693. tempMap.put((String) map.get("scheduleDate"), map);
  1694. }
  1695. //获取时间区间内的日期集合
  1696. List<Date> days = DateUtil.getBetweenDates(beginDateD, endDateD);
  1697. List<Map<String, Object>> resultMap = new ArrayList<>();
  1698. for (Date date : days) {
  1699. String key = DateUtil.fomart(date, "yyyy-MM-dd");
  1700. Map<String, Object> item = tempMap.get(key);
  1701. if (item == null) {
  1702. item = new HashMap<>();
  1703. item.put("scheduleDate", key);
  1704. item.put("status", 2);
  1705. } else {
  1706. Integer leftNum = (Integer) item.get("leftNum");
  1707. if (leftNum == null || leftNum <= 0) {
  1708. item.put("status", 2);
  1709. item.remove("leftNum");
  1710. item.remove("totalNum");
  1711. } else {
  1712. item.put("status", 1);
  1713. }
  1714. }
  1715. resultMap.add(item);
  1716. }
  1717. results.put("resultCode", 0);
  1718. results.put("resultMessage", "预约号源统计信息查询成功");
  1719. results.put("data", resultMap);
  1720. return results;
  1721. } catch (Exception e) {
  1722. results.put("resultCode", -1);
  1723. results.put("resultMessage", "预约号源统计信息查询失败");
  1724. return results;
  1725. }
  1726. }
  1727. /**
  1728. * 查询所有门诊医生信息
  1729. *
  1730. * @return
  1731. */
  1732. @RequestMapping(value = "/getAllMzDoctor", method = {RequestMethod.GET})
  1733. public Map<String, Object> getAllMzDoctor() {
  1734. Map<String, Object> results = new HashMap<>();
  1735. try {
  1736. List<ZdUnitCode> list = zdUnitCodeService.queryAllMzDeptFromDb();
  1737. List<String> codes = list.stream().map(ZdUnitCode::getCode).collect(Collectors.toList());
  1738. List<Employee> employees = employeeService.queryEmployeeByDepts(codes);
  1739. if (employees == null || employees.size() == 0) {
  1740. results.put("resultCode", -1);
  1741. results.put("resultMessage", "没有医生信息");
  1742. return results;
  1743. }
  1744. List<ZdEmpTitle> zdEmpTitles = zdEmpTitleService.queryZdEmpTitle();
  1745. Map<String, String> titleMap = null;
  1746. Map<String, Integer> titGradeMap = null;
  1747. Map<String, String> zdUnitCodeMap = list.stream().collect(Collectors.toMap(ZdUnitCode::getCode, ZdUnitCode::getName));
  1748. if (zdEmpTitles != null && zdEmpTitles.size() > 0) {
  1749. titleMap = zdEmpTitles.stream().collect(Collectors.toMap(ZdEmpTitle::getCode, ZdEmpTitle::getName));
  1750. titGradeMap = zdEmpTitles.stream().collect(Collectors.toMap(ZdEmpTitle::getCode, zdEmpTitle -> zdEmpTitle.getTitGrade() == null ? 3 : zdEmpTitle.getTitGrade()));
  1751. }
  1752. List<Employee> notDoctors = new ArrayList<>();
  1753. for (Employee employee : employees) {
  1754. if (titGradeMap != null) {
  1755. Integer titGrade = titGradeMap.get(employee.getEmpTitCode());
  1756. if (!Constants.DOCTOR_TIT_GRADE.equals(titGrade)) {
  1757. notDoctors.add(employee);
  1758. continue;
  1759. }
  1760. }
  1761. if (titleMap != null) {
  1762. employee.setDoctorTitle(titleMap.get(employee.getEmpTitCode()));
  1763. }
  1764. employee.setDeptName(zdUnitCodeMap.get(employee.getDeptCode()));
  1765. }
  1766. employees.removeAll(notDoctors);
  1767. results.put("resultCode", 0);
  1768. results.put("resultMessage", "查询所有门诊医生信息成功");
  1769. results.put("data", employees);
  1770. return results;
  1771. } catch (Exception e) {
  1772. e.printStackTrace();
  1773. results.put("resultCode", -1);
  1774. results.put("resultMessage", "查询所有门诊医生信息失败");
  1775. return results;
  1776. }
  1777. }
  1778. /**
  1779. * 查询可以挂号的科室内医生信息
  1780. *
  1781. * @return
  1782. */
  1783. @RequestMapping(value = "/getDoctorByDateAndDept", method = {RequestMethod.GET})
  1784. public Map<String, Object> getDoctorByDateAndDept(@RequestParam("requestDay") String requestDay, @RequestParam("unitCode") String unitCode) {
  1785. Map<String, Object> results = new HashMap<>();
  1786. try {
  1787. if (StringUtils.isBlank(requestDay)) {
  1788. results.put("resultCode", -1);
  1789. results.put("resultMessage", "预约挂号时间不能为空");
  1790. return results;
  1791. }
  1792. if (StringUtils.isBlank(unitCode)) {
  1793. results.put("resultCode", -1);
  1794. results.put("resultMessage", "科室编码不能为空");
  1795. return results;
  1796. }
  1797. List<String> ampms = mzZdWorkTimeService.getNotUsedWorkTimes(requestDay);
  1798. Date requestDayD = DateUtil.pase(requestDay, "yyyy-MM-dd");
  1799. Date toDay = DateUtil.pase(new Date(), "yyyy-MM-dd");
  1800. if (requestDayD.before(toDay)) {
  1801. results.put("resultCode", -1);
  1802. results.put("resultMessage", "预约挂号时间已过,无法挂号,请重新选择!");
  1803. return results;
  1804. }
  1805. List<Map<String, Object>> list = mzyRequestService.queryDoctorByDateAndDept(requestDayD, ampms, unitCode);
  1806. if (list == null || list.size() == 0) {
  1807. results.put("resultCode", -1);
  1808. results.put("resultMessage", "没有医生排班信息");
  1809. return results;
  1810. }
  1811. List<Map<String, Object>> removeList = new ArrayList<>();
  1812. for (Map map : list) {
  1813. //BigDecimal fee = BigDecimal.ZERO;
  1814. String chargeType = (String) map.get("chargeType");
  1815. if (StringUtils.isNotBlank(chargeType)) {
  1816. MzyZdChargeType mzyZdChargeType = mzyZdChargeTypeService.queryByCode(chargeType);
  1817. if (mzyZdChargeType != null) {
  1818. map.put("chargeType", mzyZdChargeType.getName());
  1819. // if (mzyZdChargeType.getReqFee() == null) {
  1820. // mzyZdChargeType.setReqFee(BigDecimal.ZERO);
  1821. // }
  1822. // if (mzyZdChargeType.getClinicFee() == null) {
  1823. // mzyZdChargeType.setClinicFee(BigDecimal.ZERO);
  1824. // }
  1825. // if (mzyZdChargeType.getOthFee() == null) {
  1826. // mzyZdChargeType.setOthFee(BigDecimal.ZERO);
  1827. // }
  1828. // fee = fee.add(mzyZdChargeType.getReqFee()).add(mzyZdChargeType.getClinicFee()).add(mzyZdChargeType.getOthFee());
  1829. }
  1830. }
  1831. // BigDecimal checkFee = (BigDecimal) map.get("checkFee");
  1832. // if (checkFee == null) {
  1833. // checkFee = BigDecimal.ZERO;
  1834. // }
  1835. // fee = fee.add(checkFee);
  1836. // //周末挂号费为0,不收挂号费
  1837. // if(DateUtil.isWeekend(requestDayD)){
  1838. // fee=BigDecimal.ZERO;
  1839. // }
  1840. // map.put("fee", fee);
  1841. // map.remove("checkFee");
  1842. String doctorCode = (String) map.get("doctorCode");
  1843. //核酸需要简易门诊
  1844. if (StringUtils.isBlank(doctorCode) && !Constants.JY_EXEC_CODE.equals(unitCode)) {
  1845. removeList.add(map);
  1846. continue;
  1847. }
  1848. //核酸需要简易门诊开始
  1849. if (Constants.JY_EXEC_CODE.equals(unitCode)) {
  1850. List<Map<String, Object>> tempList = mzyRequestService.queryRequestByDateAndDeptAndDoctor(requestDayD, ampms, unitCode, doctorCode);
  1851. if (tempList != null && tempList.size() > 0) {
  1852. map.put("mzyRequestId", tempList.get(0).get("mzyRequestId"));
  1853. }
  1854. }
  1855. //核酸需要简易门诊结束
  1856. Employee employee = employeeService.queryByUserCode(doctorCode);
  1857. if (employee == null) {
  1858. continue;
  1859. }
  1860. map.put("doctorName", employee.getEmployeeName());
  1861. if (employee.getEmpTitCode() != null && StringUtils.isNotBlank(employee.getEmpTitCode())) {
  1862. map.put("empTitCode", employee.getEmpTitCode());
  1863. } else {
  1864. map.put("empTitCode", "100");
  1865. }
  1866. if (StringUtils.isNotBlank(employee.getEmpTitCode())) {
  1867. ZdEmpTitle zdEmpTitle = zdEmpTitleService.queryByCode(employee.getEmpTitCode());
  1868. if (zdEmpTitle == null) {
  1869. continue;
  1870. }
  1871. map.put("doctorTitle", zdEmpTitle.getName());
  1872. }
  1873. int isP4Request = mzyRequestService.isP4Request(requestDayD, unitCode, doctorCode);
  1874. if (isP4Request > 0) {
  1875. map.put("isP4Request", true);
  1876. } else {
  1877. map.put("isP4Request", false);
  1878. }
  1879. }
  1880. list.removeAll(removeList);
  1881. results.put("resultCode", 0);
  1882. results.put("resultMessage", "查询可以挂号的科室内医生信息成功");
  1883. results.put("data", list);
  1884. return results;
  1885. } catch (Exception e) {
  1886. e.printStackTrace();
  1887. results.put("resultCode", -1);
  1888. results.put("resultMessage", "查询可以挂号的科室内医生信息失败");
  1889. return results;
  1890. }
  1891. }
  1892. /**
  1893. * 查询可以挂号的医生号源信息
  1894. *
  1895. * @return
  1896. */
  1897. @RequestMapping(value = "/getRequestByDateAndDeptAndDoctor", method = {RequestMethod.GET})
  1898. public Map<String, Object> getRequestByDateAndDeptAndDoctor(@RequestParam("requestDay") String requestDay, @RequestParam("unitCode") String unitCode, @RequestParam("doctorCode") String doctorCode) {
  1899. Map<String, Object> results = new HashMap<>();
  1900. try {
  1901. if (StringUtils.isBlank(requestDay)) {
  1902. results.put("resultCode", -1);
  1903. results.put("resultMessage", "预约挂号时间不能为空");
  1904. return results;
  1905. }
  1906. if (StringUtils.isBlank(unitCode)) {
  1907. results.put("resultCode", -1);
  1908. results.put("resultMessage", "科室编码不能为空");
  1909. return results;
  1910. }
  1911. if (StringUtils.isBlank(doctorCode)) {
  1912. results.put("resultCode", -1);
  1913. results.put("resultMessage", "医生编码不能为空");
  1914. return results;
  1915. }
  1916. List<String> ampms = mzZdWorkTimeService.getNotUsedWorkTimes(requestDay);
  1917. Date requestDayD = DateUtil.pase(requestDay, "yyyy-MM-dd");
  1918. if (requestDayD == null) {
  1919. results.put("resultCode", -1);
  1920. results.put("resultMessage", "预约挂号时间错误,无法挂号!");
  1921. return results;
  1922. }
  1923. Date toDay = DateUtil.pase(new Date(), "yyyy-MM-dd");
  1924. if (requestDayD.before(toDay)) {
  1925. results.put("resultCode", -1);
  1926. results.put("resultMessage", "预约挂号时间已过,无法挂号,请重新选择!");
  1927. return results;
  1928. }
  1929. List<Map<String, Object>> list = mzyRequestService.queryRequestByDateAndDeptAndDoctor(requestDayD, ampms, unitCode, doctorCode);
  1930. if (list == null || list.size() == 0) {
  1931. results.put("resultCode", -1);
  1932. results.put("resultMessage", "没有医生排班信息");
  1933. return results;
  1934. }
  1935. for (Map map : list) {
  1936. BigDecimal fee = BigDecimal.ZERO;
  1937. String chargeType = (String) map.get("chargeType");
  1938. if (StringUtils.isNotBlank(chargeType)) {
  1939. MzyZdChargeType mzyZdChargeType = mzyZdChargeTypeService.queryByCode(chargeType);
  1940. if (mzyZdChargeType != null) {
  1941. map.put("chargeType", mzyZdChargeType.getName());
  1942. if (mzyZdChargeType.getReqFee() == null) {
  1943. mzyZdChargeType.setReqFee(BigDecimal.ZERO);
  1944. }
  1945. if (mzyZdChargeType.getClinicFee() == null) {
  1946. mzyZdChargeType.setClinicFee(BigDecimal.ZERO);
  1947. }
  1948. if (mzyZdChargeType.getOthFee() == null) {
  1949. mzyZdChargeType.setOthFee(BigDecimal.ZERO);
  1950. }
  1951. fee = fee.add(mzyZdChargeType.getReqFee()).add(mzyZdChargeType.getClinicFee()).add(mzyZdChargeType.getOthFee());
  1952. }
  1953. }
  1954. String ampm = (String) map.get("ampm");
  1955. BigDecimal checkFee = (BigDecimal) map.get("checkFee");
  1956. if (checkFee == null) {
  1957. checkFee = BigDecimal.ZERO;
  1958. }
  1959. fee = fee.add(checkFee);
  1960. if (mzyReqrecService.notPayGhFee(unitCode, requestDayD, ampm)) {
  1961. fee = BigDecimal.ZERO;
  1962. }
  1963. map.put("fee", fee);
  1964. map.remove("checkFee");
  1965. Employee employee = employeeService.queryByUserCode(doctorCode);
  1966. if (employee != null) {
  1967. map.put("doctorName", employee.getEmployeeName());
  1968. if (StringUtils.isNotBlank(employee.getEmpTitCode())) {
  1969. ZdEmpTitle zdEmpTitle = zdEmpTitleService.queryByCode(employee.getEmpTitCode());
  1970. if (zdEmpTitle != null) {
  1971. map.put("doctorTitle", zdEmpTitle.getName());
  1972. }
  1973. }
  1974. }
  1975. if (Constants.AM.equals(ampm)) {
  1976. map.remove("p1");
  1977. map.remove("p2");
  1978. map.remove("p3");
  1979. map.remove("p4");
  1980. map.remove("p5");
  1981. map.remove("p6");
  1982. map.remove("p7");
  1983. } else if (Constants.PM.equals(ampm)) {
  1984. map.remove("a1");
  1985. map.remove("a2");
  1986. map.remove("a3");
  1987. map.remove("a4");
  1988. map.remove("a5");
  1989. map.remove("a6");
  1990. map.remove("a7");
  1991. map.remove("a8");
  1992. } else {
  1993. map.remove("a1");
  1994. map.remove("a2");
  1995. map.remove("a3");
  1996. map.remove("a4");
  1997. map.remove("a5");
  1998. map.remove("a6");
  1999. map.remove("a7");
  2000. map.remove("a8");
  2001. map.remove("p1");
  2002. map.remove("p2");
  2003. map.remove("p3");
  2004. map.remove("p4");
  2005. map.remove("p5");
  2006. map.remove("p6");
  2007. map.remove("p7");
  2008. }
  2009. MzZdWorkTime mzZdWorkTime = mzZdWorkTimeService.queryMzZdWorkTimeByCode(ampm);
  2010. if (mzZdWorkTime == null) {
  2011. results.put("resultCode", -1);
  2012. results.put("resultMessage", "号源时间段错误!");
  2013. return results;
  2014. }
  2015. // WorkTimeEnum workTimeEnum = WorkTimeEnum.geteBedStatusByCode(ampm);
  2016. // map.put("ampm", workTimeEnum == null ? "" : workTimeEnum.name);
  2017. map.put("ampm", mzZdWorkTime.getName());
  2018. map.put("startTime", mzZdWorkTime.getStartTime());
  2019. map.put("endTime", mzZdWorkTime.getEndTime());
  2020. }
  2021. results.put("resultCode", 0);
  2022. results.put("resultMessage", "查询可以挂号的医生号源信息成功");
  2023. results.put("data", list);
  2024. return results;
  2025. } catch (Exception e) {
  2026. e.printStackTrace();
  2027. results.put("resultCode", -1);
  2028. results.put("resultMessage", "查询可以挂号的医生号源信息失败");
  2029. return results;
  2030. }
  2031. }
  2032. /**
  2033. * 根据时间范围和科室分类码查询号标数据
  2034. *
  2035. * @return
  2036. */
  2037. @RequestMapping(value = "/getP4UnitCode", method = {RequestMethod.POST})
  2038. public Map<String, Object> getP4UnitCode(@RequestBody Map<String, String> requestParamsVo) {
  2039. Map<String, Object> resultMap = new HashMap<>();
  2040. try {
  2041. if (requestParamsVo == null) {
  2042. resultMap.put("resultCode", -1);
  2043. resultMap.put("resultMessage", "根据时间范围查询号标数据失败,参数为空");
  2044. return resultMap;
  2045. }
  2046. String beginTime = requestParamsVo.get("beginTime");
  2047. String endTime = requestParamsVo.get("endTime");
  2048. String mzClass = requestParamsVo.get("mzClass");
  2049. if (StringUtils.isBlank(beginTime)) {
  2050. resultMap.put("resultCode", -1);
  2051. resultMap.put("resultMessage", "根据时间范围查询号标数据失败,开始时间为空");
  2052. return resultMap;
  2053. }
  2054. if (StringUtils.isBlank(endTime)) {
  2055. resultMap.put("resultCode", -1);
  2056. resultMap.put("resultMessage", "根据时间范围查询号标数据失败,结束时间为空");
  2057. return resultMap;
  2058. }
  2059. if (StringUtils.isBlank(mzClass)) {
  2060. resultMap.put("resultCode", -1);
  2061. resultMap.put("resultMessage", "根据时间范围查询号标数据失败,科室分类码为空");
  2062. return resultMap;
  2063. }
  2064. Date beginTimeD = DateUtil.pase(beginTime, "yyyy-MM-dd HH:mm:ss");
  2065. if (beginTimeD == null) {
  2066. resultMap.put("resultCode", -1);
  2067. resultMap.put("resultMessage", "根据时间范围查询号标数据失败,开始时间为空");
  2068. return resultMap;
  2069. }
  2070. Date endTimeD = DateUtil.pase(endTime, "yyyy-MM-dd HH:mm:ss");
  2071. if (endTimeD == null) {
  2072. resultMap.put("resultCode", -1);
  2073. resultMap.put("resultMessage", "根据时间范围查询号标数据失败,结束时间为空");
  2074. return resultMap;
  2075. }
  2076. resultMap.put("resultCode", 0);
  2077. resultMap.put("resultMessage", "根据时间范围查询号标数据成功");
  2078. List<MzyRequest> mzyRequests = mzyRequestService.queryByTimes(beginTimeD, endTimeD, null, Constants.NIGHT);
  2079. List<ZdUnitCode> zdUnitCodeList = new ArrayList<>();
  2080. Set<String> codeSet = new HashSet<>();
  2081. if (mzyRequests != null && mzyRequests.size() > 0) {
  2082. for (MzyRequest mzyRequest : mzyRequests) {
  2083. if (mzyRequest == null || StringUtils.isBlank(mzyRequest.getUnitCode())) {
  2084. continue;
  2085. }
  2086. if (codeSet.contains(mzyRequest.getUnitCode())) {
  2087. continue;
  2088. }
  2089. ZdUnitCode zdUnitCode = zdUnitCodeService.queryByCode(mzyRequest.getUnitCode());
  2090. if (zdUnitCode == null) {
  2091. continue;
  2092. }
  2093. if (mzClass.equals(zdUnitCode.getMzClass())) {
  2094. zdUnitCodeList.add(zdUnitCode);
  2095. codeSet.add(mzyRequest.getUnitCode());
  2096. }
  2097. }
  2098. }
  2099. resultMap.put("data", zdUnitCodeList);
  2100. return resultMap;
  2101. } catch (Exception e) {
  2102. e.printStackTrace();
  2103. log.error("根据时间范围查询号标数据失败,错误信息{}", e);
  2104. resultMap.put("code", -1);
  2105. resultMap.put("message", "根据时间范围查询号标数据失败");
  2106. return resultMap;
  2107. }
  2108. }
  2109. /**
  2110. * 根据排班主键和生日查询挂号费用 (费用确认低于7岁儿童增加挂号费 上调50%)
  2111. *
  2112. * @return
  2113. */
  2114. @RequestMapping(value = "/getMzChargeTypeByRequestIdForHaiCi", method = {RequestMethod.GET})
  2115. public Map<String, Object> getMzChargeTypeByRequestIdForHaiCi(@RequestParam("mzyRequestId") Long mzyRequestId, @RequestParam("patientId") String patientId) {
  2116. Map<String, Object> resultMap = new HashMap<>();
  2117. try {
  2118. if (mzyRequestId == null) {
  2119. resultMap.put("code", -1);
  2120. resultMap.put("message", "排班主键不能为空");
  2121. return resultMap;
  2122. }
  2123. if (StringUtils.isBlank(patientId)) {
  2124. resultMap.put("code", -1);
  2125. resultMap.put("message", "病人门诊ID不能为空");
  2126. return resultMap;
  2127. }
  2128. MzPatientMi mzPatientMi = mzPatientMiService.queryByPatientId(patientId);
  2129. if (mzPatientMi == null) {
  2130. resultMap.put("code", -1);
  2131. resultMap.put("message", "病人不存在");
  2132. return resultMap;
  2133. }
  2134. Date birthDayD = mzPatientMi.getBirthDay();
  2135. MzyZdChargeType mzyZdChargeType = mzyRequestService.calculateAddition(null,mzyRequestId, birthDayD,patientId);
  2136. BigDecimal fee = BigDecimal.ZERO;
  2137. if (mzyZdChargeType.getReqFee() != null) {
  2138. fee = fee.add(mzyZdChargeType.getReqFee());
  2139. }
  2140. if (mzyZdChargeType.getClinicFee() != null) {
  2141. fee = fee.add(mzyZdChargeType.getClinicFee());
  2142. }
  2143. if (mzyZdChargeType.getOthFee() != null) {
  2144. fee = fee.add(mzyZdChargeType.getOthFee());
  2145. }
  2146. resultMap.put("code", 0);
  2147. resultMap.put("message", "根据排班主键和生日查询挂号费用功");
  2148. resultMap.put("data", fee);
  2149. resultMap.put("message", mzyZdChargeType.getMessage());
  2150. return resultMap;
  2151. } catch (Exception e) {
  2152. e.printStackTrace();
  2153. log.error("根据排班主键和生日查询挂号费用失败,错误信息{}", e);
  2154. resultMap.put("code", -1);
  2155. resultMap.put("message", "根据排班主键和生日查询挂号费用失败");
  2156. return resultMap;
  2157. }
  2158. }
  2159. /**
  2160. * 门诊挂号支付
  2161. *
  2162. * @return
  2163. */
  2164. @RequestMapping(value = "/payRegistrationFormHaiCi", method = {RequestMethod.POST})
  2165. public Map<String, Object> payRegistrationFormHaiCi(@RequestBody MzyReqrecPageDto mzyReqrecPageDto, HttpServletRequest httpServletRequest) {
  2166. Map<String, Object> resultMap = new HashMap<>();
  2167. try {
  2168. String ip = HttpUtil.getIPAddress(httpServletRequest);
  2169. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  2170. if (whiteList == null) {
  2171. resultMap.put("resultCode", -1);
  2172. resultMap.put("message", "当前请求来源未在白名单中【" + ip + "】");
  2173. return resultMap;
  2174. }
  2175. if (mzyReqrecPageDto == null || mzyReqrecPageDto.getMzyReqrec() == null) {
  2176. resultMap.put("resultCode", -1);
  2177. resultMap.put("message", "挂号参数不能为空");
  2178. return resultMap;
  2179. }
  2180. MzyReqrec mzyReqrec = mzyReqrecPageDto.getMzyReqrec();
  2181. if (StringUtils.isBlank(mzyReqrec.getPatientId())) {
  2182. resultMap.put("resultCode", -1);
  2183. resultMap.put("message", "病人id不能为空");
  2184. return resultMap;
  2185. }
  2186. if (StringUtils.isBlank(mzyReqrec.getPaymode())) {
  2187. resultMap.put("resultCode", -1);
  2188. resultMap.put("message", "付款方式不能为空");
  2189. return resultMap;
  2190. }
  2191. if (!Arrays.asList(WX, ZFB).contains(mzyReqrec.getPaymode())) {
  2192. resultMap.put("resultCode", -1);
  2193. resultMap.put("message", "支付方式有误,请联系管理员");
  2194. return resultMap;
  2195. }
  2196. // if (StringUtils.isBlank(mzyReqrec.getAgtordnum())) {
  2197. // resultMap.put("resultCode", -1);
  2198. // resultMap.put("message", "流水号不能为空");
  2199. // return resultMap;
  2200. // }
  2201. if (StringUtils.isBlank(mzyReqrec.getPsordnum())) {
  2202. resultMap.put("resultCode", -1);
  2203. resultMap.put("message", "订单号不能为空");
  2204. return resultMap;
  2205. }
  2206. if (mzyReqrecPageDto.getMzyRequestId() == null) {
  2207. resultMap.put("resultCode", -1);
  2208. resultMap.put("message", "门诊号表主键不能为空");
  2209. return resultMap;
  2210. }
  2211. if (mzyReqrecPageDto.getTotalFee() == null) {
  2212. resultMap.put("resultCode", -1);
  2213. resultMap.put("message", "实缴费用不能为空");
  2214. return resultMap;
  2215. }
  2216. mzyReqrecPageDto.setResponceType("01");
  2217. mzyReqrecPageDto.setPayMark(PayMarkEnum.CHARGED.code);
  2218. MzyRequest mzyRequest = mzyRequestService.queryById(mzyReqrecPageDto.getMzyRequestId());
  2219. if (mzyRequest == null) {
  2220. resultMap.put("resultCode", -1);
  2221. resultMap.put("message", "挂号信息对应的号表不存在");
  2222. return resultMap;
  2223. }
  2224. if (Constants.AM.equals(mzyRequest.getAmpm())) {
  2225. if (StringUtils.isBlank(mzyReqrec.getApTime())) {
  2226. }
  2227. } else if (Constants.PM.equals(mzyRequest.getAmpm())) {
  2228. }
  2229. mzyReqrec.setAmpm(mzyRequest.getAmpm());
  2230. mzyReqrec.setUnitCode(mzyRequest.getUnitCode());
  2231. mzyReqrec.setChargeType(mzyRequest.getChargeType());
  2232. mzyReqrec.setDoctorCode(mzyRequest.getDoctorCode());
  2233. Date now = new Date();
  2234. if (DateUtil.fomart(now, "yyyy-MM-dd").equals(DateUtil.fomart(mzyRequest.getRequestDay(), "yyyy-MM-dd"))) {
  2235. mzyReqrec.setRequestDay(now);
  2236. } else {
  2237. mzyReqrec.setRequestDay(mzyRequest.getRequestDay());
  2238. }
  2239. if (WX.equals(mzyReqrec.getPaymode())) {
  2240. mzyReqrec.setPaymode(Constants.ZZWX);
  2241. } else {
  2242. mzyReqrec.setPaymode(Constants.ZZZFB);
  2243. }
  2244. MzZdWorkTime mzZdWorkTime = mzZdWorkTimeService.queryMzZdWorkTimeByCode(mzyReqrec.getAmpm());
  2245. if (mzZdWorkTime == null) {
  2246. resultMap.put("resultCode", -1);
  2247. resultMap.put("message", "号段不存在");
  2248. return resultMap;
  2249. }
  2250. mzyReqrec.setOpId(whiteList.getOpId());
  2251. int num = mzyReqrecService.saveMzyReqrec(mzyReqrecPageDto, whiteList.getOpId());
  2252. if (num == 0) {
  2253. resultMap.put("resultCode", -1);
  2254. resultMap.put("message", "挂号失败,请稍后重试!");
  2255. return resultMap;
  2256. }
  2257. resultMap.put("resultCode", 0);
  2258. resultMap.put("message", "保存挂号信息成功");
  2259. return resultMap;
  2260. } catch (Exception e) {
  2261. e.printStackTrace();
  2262. resultMap.put("resultCode", -1);
  2263. resultMap.put("message", StringUtils.isBlank(e.getMessage()) ? "挂号失败,系统出错,请联系管理员" : e.getMessage());
  2264. log.error("挂号失败,系统异常,错误信息{}", e);
  2265. return resultMap;
  2266. }
  2267. }
  2268. /**
  2269. * 门诊挂号订单支付状态查询
  2270. *
  2271. * @param haiciCharge
  2272. * @return
  2273. */
  2274. @RequestMapping(value = "/getPayStatusForRegistration", method = {RequestMethod.POST})
  2275. public Map<String, Object> getPayStatusForRegistration(@RequestBody HaiciCharge haiciCharge) {
  2276. Map<String, Object> results = new HashMap<>();
  2277. if (haiciCharge == null) {
  2278. results.put("resultCode", -1);
  2279. results.put("resultMessage", "门诊挂号订单支付状态查询参数为空");
  2280. return results;
  2281. }
  2282. if (StringUtils.isBlank(haiciCharge.getPsOrdNum())) {
  2283. results.put("resultCode", -1);
  2284. results.put("resultMessage", "平台订单号不能为空");
  2285. return results;
  2286. }
  2287. if (StringUtils.isBlank(haiciCharge.getPayMode())) {
  2288. results.put("resultCode", -1);
  2289. results.put("resultMessage", "支付方式不能为空");
  2290. return results;
  2291. }
  2292. if (!Arrays.asList(WX, ZFB).contains(haiciCharge.getPayMode())) {
  2293. results.put("resultCode", -1);
  2294. results.put("resultMessage", "支付方式有误,请联系管理员");
  2295. return results;
  2296. }
  2297. if (haiciCharge.getPayAmt() == null) {
  2298. results.put("resultCode", -1);
  2299. results.put("resultMessage", "支付金额不能为空");
  2300. return results;
  2301. }
  2302. if (StringUtils.isBlank(haiciCharge.getAgtOrdNum())) {
  2303. results.put("resultCode", -1);
  2304. results.put("resultMessage", "支付机构流水号不能为空");
  2305. return results;
  2306. }
  2307. // if (haiciCharge.getPayTime() == null) {
  2308. // results.put("resultCode", -1);
  2309. // results.put("resultMessage", "支付时间不能为空");
  2310. // return results;
  2311. // }
  2312. try {
  2313. MzyReqrec mzyReqrec = mzyReqrecService.queryMzyReqrecByAgtordnum(haiciCharge.getPsOrdNum(), haiciCharge.getAgtOrdNum(), null);
  2314. if (mzyReqrec != null) {
  2315. results.put("resultCode", 0);
  2316. results.put("resultMessage", "门诊挂号订单支付状态查询成功");
  2317. results.put("payStatus", "1");
  2318. results.put("guideListInfo", "");
  2319. results.put("receiptNum", "");
  2320. return results;
  2321. }
  2322. results.put("resultCode", 0);
  2323. results.put("resultMessage", "门诊挂号订单支付状态查询失败");
  2324. results.put("payStatus", "2");
  2325. results.put("guideListInfo", "");
  2326. results.put("receiptNum", "");
  2327. return results;
  2328. } catch (Exception e) {
  2329. e.printStackTrace();
  2330. results.put("resultCode", -1);
  2331. results.put("resultMessage", "门诊挂号订单支付状态查询失败,请联系管理员");
  2332. results.put("payStatus", "2");
  2333. log.error("系统异常,错误信息{}", e);
  2334. return results;
  2335. }
  2336. }
  2337. /**
  2338. * 查询门诊记录表 医患通已收费记录查询
  2339. *
  2340. * @return
  2341. */
  2342. @RequestMapping(value = "/listMzChargeDetail", method = {RequestMethod.POST})
  2343. public Map<String, Object> listMzChargeDetail(@RequestBody MzChargeDetailPageDto mzChargeDetailPageDto) {
  2344. Map<String, Object> resultMap = new HashMap<>();
  2345. try {
  2346. if (mzChargeDetailPageDto == null) {
  2347. resultMap.put("code", -1);
  2348. resultMap.put("message", "查询门诊记录表参数不能为空");
  2349. return resultMap;
  2350. }
  2351. if (StringUtils.isBlank(mzChargeDetailPageDto.getBeginTimeStr()) && mzChargeDetailPageDto.getBeginTime() == null) {
  2352. resultMap.put("code", -1);
  2353. resultMap.put("message", "查询门诊记录表开始时间参数不能为空");
  2354. return resultMap;
  2355. }
  2356. if (StringUtils.isBlank(mzChargeDetailPageDto.getEndTimeStr()) && mzChargeDetailPageDto.getEndTime() == null) {
  2357. resultMap.put("code", -1);
  2358. resultMap.put("message", "查询门诊记录表结束时间参数不能为空");
  2359. return resultMap;
  2360. }
  2361. //日期参数为了兼容不同的接口,设计了两个不同的字段
  2362. if (StringUtils.isNotBlank(mzChargeDetailPageDto.getBeginTimeStr())) {
  2363. mzChargeDetailPageDto.setBeginTime(DateUtil.pase(mzChargeDetailPageDto.getBeginTimeStr(), "yyyy-MM-dd HH:mm:ss"));
  2364. }
  2365. if (StringUtils.isNotBlank(mzChargeDetailPageDto.getEndTimeStr())) {
  2366. mzChargeDetailPageDto.setEndTime(DateUtil.pase(mzChargeDetailPageDto.getEndTimeStr(), "yyyy-MM-dd HH:mm:ss"));
  2367. }
  2368. PageViewVo pageViewVo = new PageViewVo();
  2369. MzChargeDetail mzChargeDetail = mzChargeDetailPageDto.getMzChargeDetail();
  2370. if (mzChargeDetail == null) {
  2371. mzChargeDetail = new MzChargeDetail();
  2372. mzChargeDetailPageDto.setMzChargeDetail(mzChargeDetail);
  2373. }
  2374. if (StringUtils.isBlank(mzChargeDetail.getPayMark())) {
  2375. mzChargeDetail.setPayMark(PayMarkEnum.CHARGED.code);
  2376. } else {
  2377. if (!Arrays.asList(PayMarkEnum.CHARGED.code, PayMarkEnum.RETURN_PREMIUM.code).contains(mzChargeDetail.getPayMark())) {
  2378. resultMap.put("code", -1);
  2379. resultMap.put("message", "订单状态参数错误");
  2380. return resultMap;
  2381. }
  2382. }
  2383. pageViewVo.setPageIndex(mzChargeDetailPageDto.getPageIndex());
  2384. pageViewVo.setTotal(mzChargeDetailService.countMzChargeDetail(mzChargeDetailPageDto));
  2385. mzChargeDetailPageDto.setPageSize(pageViewVo.getTotal());
  2386. List<MzChargeDetail> mzChargeDetails = mzChargeDetailService.queryMzChargeDetailWithPage(mzChargeDetailPageDto);
  2387. List<SfjkMzbrxxVo> resultList = new ArrayList<>();
  2388. if (mzChargeDetails != null && mzChargeDetails.size() > 0) {
  2389. Set<String> doctorCodes = mzChargeDetails.stream().filter(u -> StringUtils.isNotBlank(u.getDoctorCode())).map(u -> u.getDoctorCode()).collect(Collectors.toSet());
  2390. Map<String, String> employeeMap = null;
  2391. if (doctorCodes != null && doctorCodes.size() > 0) {
  2392. List<Employee> employees = employeeService.queryByCodes(new ArrayList<>(doctorCodes));
  2393. if (employees != null) {
  2394. employeeMap = employees.stream().collect(Collectors.toMap(Employee::getEmployeeCode, Employee::getEmployeeName));
  2395. }
  2396. }
  2397. for (MzChargeDetail mz : mzChargeDetails) {
  2398. if (mz != null) {
  2399. MzPatientMi mzPatientMi = mzPatientMiService.queryByPatientId(mz.getPatientId());
  2400. SfjkMzbrxxVo sfjkMzbrxxVo = new SfjkMzbrxxVo();
  2401. sfjkMzbrxxVo.setBrbh(mz.getPatientId());
  2402. sfjkMzbrxxVo.setDjh(mz.getPatientId() + "_" + mz.getTimes() + "_" + mz.getReceiptNo());
  2403. sfjkMzbrxxVo.setMzbh(mz.getRealNo().toString());
  2404. sfjkMzbrxxVo.setBrxm(mz.getName());
  2405. if (mzPatientMi != null) {
  2406. sfjkMzbrxxVo.setBrxb(mzPatientMi.getSex());
  2407. sfjkMzbrxxVo.setBrxm(mzPatientMi.getName());
  2408. sfjkMzbrxxVo.setCsrq(mzPatientMi.getBirthDay());
  2409. sfjkMzbrxxVo.setSfzh(mzPatientMi.getSocialNo());
  2410. sfjkMzbrxxVo.setXzdz(mzPatientMi.getAddress());
  2411. sfjkMzbrxxVo.setSjhm(mzPatientMi.getPhoneNo());
  2412. sfjkMzbrxxVo.setLxdh(mzPatientMi.getPhoneNo());
  2413. }
  2414. sfjkMzbrxxVo.setMzrq(mz.getChargeDate());
  2415. sfjkMzbrxxVo.setMzks(mz.getWarnDept());
  2416. sfjkMzbrxxVo.setYsbh(mz.getDoctorCode());
  2417. if (employeeMap != null) {
  2418. String doctorCode = employeeMap.get(mz.getDoctorCode());
  2419. sfjkMzbrxxVo.setMzys(doctorCode == null ? "" : doctorCode);
  2420. }
  2421. if (mz.getAmount() != null) {
  2422. sfjkMzbrxxVo.setZfy(mz.getAmount().setScale(1, BigDecimal.ROUND_HALF_UP));
  2423. }
  2424. sfjkMzbrxxVo.setYblx("01");
  2425. sfjkMzbrxxVo.setYbfy(BigDecimal.ZERO);
  2426. MzVisitTable mzVisitTable = mzVisitTableService.queryByPatientIdAndTimes(mz.getPatientId(), mz.getTimes());
  2427. if (mzVisitTable != null) {
  2428. sfjkMzbrxxVo.setIcd(mzVisitTable.getIcdCode());
  2429. sfjkMzbrxxVo.setMzzd(mzVisitTable.getIcdText());
  2430. sfjkMzbrxxVo.setBrzz(mzVisitTable.getIcdText());
  2431. }
  2432. resultList.add(sfjkMzbrxxVo);
  2433. }
  2434. }
  2435. }
  2436. resultMap.put("code", 0);
  2437. resultMap.put("message", "查询门诊记录表成功");
  2438. resultMap.put("pageViewVo", resultList);
  2439. return resultMap;
  2440. } catch (Exception e) {
  2441. e.printStackTrace();
  2442. resultMap.put("code", -1);
  2443. resultMap.put("message", "查询门诊记录表失败,系统出错,请联系管理员");
  2444. log.error("查询门诊记录表失败,系统异常,错误信息{}", e);
  2445. return resultMap;
  2446. }
  2447. }
  2448. /**
  2449. * 门诊已缴费记录明细查询 医患通已收费记录查询
  2450. *
  2451. * @param djh 门诊号
  2452. * @return
  2453. */
  2454. @RequestMapping(value = "/getSfjkMzbrmx", method = {RequestMethod.GET})
  2455. public Map<String, Object> getSfjkMzbrmx(@RequestParam("djh") String djh) {
  2456. Map<String, Object> results = new HashMap<>();
  2457. if (StringUtils.isBlank(djh)) {
  2458. results.put("resultCode", -1);
  2459. results.put("resultMessage", "门诊已缴费记录明细查询参数为空");
  2460. return results;
  2461. }
  2462. try {
  2463. String[] arr = djh.split("_");
  2464. MzChargeDetail mzChargeDetail = new MzChargeDetail(arr[0], Integer.valueOf(arr[1]));
  2465. mzChargeDetail.setReceiptNo(Integer.valueOf(arr[2]));
  2466. List<MzChargeDetail> mzChargeDetailList = mzChargeDetailService.queryMzChargeDetailByBillItemCode(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(), mzChargeDetail.getReceiptNo(), PayMarkEnum.CHARGED.code, "3", Arrays.asList("TC"));
  2467. if (mzChargeDetailList == null || mzChargeDetailList.size() == 0) {
  2468. results.put("resultCode", -1);
  2469. results.put("resultMessage", "未查询到已缴费明细记录");
  2470. return results;
  2471. }
  2472. mzChargeDetailList = mzChargeDetailService.getMzChargeDetails(mzChargeDetailList);
  2473. List<SfjkMzbrmxVo> returnList = new ArrayList<>();
  2474. for (MzChargeDetail mz : mzChargeDetailList) {
  2475. SfjkMzbrmxVo sfjkMzbrmxVo = new SfjkMzbrmxVo();
  2476. sfjkMzbrmxVo.setMzbh(djh);
  2477. sfjkMzbrmxVo.setXmmc(mz.getTcName());
  2478. if (StringUtils.isNotBlank(mz.getSupplyCode())) {
  2479. MzZdSupplyType mzZdSupplyType = zdSupplyTypeService.selectMzZdSupplyTypeByCode(mz.getSupplyCode());
  2480. if (mzZdSupplyType != null) {
  2481. sfjkMzbrmxVo.setYpyf(mzZdSupplyType.getSupplyName());
  2482. }
  2483. }
  2484. sfjkMzbrmxVo.setJcjg("");
  2485. BigDecimal zsl = BigDecimal.ZERO;
  2486. if (mz.getDrugWin() != null) {
  2487. zsl = BigDecimal.valueOf(mz.getDrugWin());
  2488. }
  2489. if (mz.getQuantity() == null) {
  2490. zsl = BigDecimal.ZERO;
  2491. } else {
  2492. zsl = zsl.multiply(BigDecimal.valueOf(mz.getQuantity()));
  2493. }
  2494. sfjkMzbrmxVo.setZsl(zsl.toString());
  2495. if (mz.getUnitPrice() == null) {
  2496. sfjkMzbrmxVo.setZfy(BigDecimal.ZERO);
  2497. } else {
  2498. sfjkMzbrmxVo.setZfy(zsl.multiply(mz.getUnitPrice()));
  2499. }
  2500. returnList.add(sfjkMzbrmxVo);
  2501. }
  2502. results.put("resultCode", 0);
  2503. results.put("resultMessage", "已缴费记录明细查询成功");
  2504. results.put("data", returnList);
  2505. return results;
  2506. } catch (Exception e) {
  2507. e.printStackTrace();
  2508. results.put("resultCode", -1);
  2509. results.put("resultMessage", "门诊已缴费记录明细查询失败,请联系管理员");
  2510. log.error("系统异常,错误信息{}", e);
  2511. return results;
  2512. }
  2513. }
  2514. /**
  2515. * 门诊缴费订单支付(单病种)
  2516. *
  2517. * @param mzDepositFileVo
  2518. * @return
  2519. */
  2520. @RequestMapping(value = "/payChargeDetailFormDbzsf", method = {RequestMethod.POST})
  2521. public Map<String, Object> payChargeDetailFormDbzsf(@RequestBody MzDepositFileVo mzDepositFileVo) {
  2522. Map<String, Object> results = new HashMap<>();
  2523. if (mzDepositFileVo == null) {
  2524. results.put("resultCode", -1);
  2525. results.put("resultMessage", "门诊缴费订单支付参数为空");
  2526. return results;
  2527. }
  2528. if (StringUtils.isBlank(mzDepositFileVo.getPatientId())) {
  2529. results.put("resultCode", -1);
  2530. results.put("resultMessage", "病人编码不能为空");
  2531. return results;
  2532. }
  2533. if (mzDepositFileVo.getTimes() == null) {
  2534. results.put("resultCode", -1);
  2535. results.put("resultMessage", "病人就诊次数不能为空");
  2536. return results;
  2537. }
  2538. if (mzDepositFileVo.getReceiptNo() == null) {
  2539. results.put("resultCode", -1);
  2540. results.put("resultMessage", "病人结算次数不能为空");
  2541. return results;
  2542. }
  2543. try {
  2544. MzDepositFile mzDepositFile = new MzDepositFile();
  2545. mzDepositFile.setChequeType(Constants.YBJZ);
  2546. mzDepositFileVo.setMzDepositFiles(Arrays.asList(mzDepositFile));
  2547. mzChargeDetailService.chargeFee(Constants.DBZJF_CODE, mzDepositFileVo, Constants.DBZJF_CODE);
  2548. results.put("resultCode", 0);
  2549. results.put("resultMessage", "单病种缴费成功");
  2550. results.put("guideListInfo", "");
  2551. return results;
  2552. } catch (Exception e) {
  2553. e.printStackTrace();
  2554. results.put("resultCode", -1);
  2555. results.put("resultMessage", "单病种门诊缴费订单支付失败,请联系管理员");
  2556. log.error("系统异常,错误信息{}", e);
  2557. return results;
  2558. }
  2559. }
  2560. /**
  2561. * 门诊待缴费记录明细查询(原始数据,给特门查询使用)
  2562. *
  2563. * @param mzChargeDetail
  2564. * @return
  2565. */
  2566. @RequestMapping(value = "/unPaidToFullChargeDetail", method = {RequestMethod.POST})
  2567. public Map<String, Object> unPaidToFullChargeDetail(@RequestBody MzChargeDetail mzChargeDetail) {
  2568. Map<String, Object> results = new HashMap<>();
  2569. if (mzChargeDetail == null) {
  2570. results.put("resultCode", -1);
  2571. results.put("resultMessage", "门诊待缴费记录明细查询参数为空");
  2572. return results;
  2573. }
  2574. if (StringUtils.isBlank(mzChargeDetail.getPatientId())) {
  2575. results.put("resultCode", -1);
  2576. results.put("resultMessage", "患者ID不能为空");
  2577. return results;
  2578. }
  2579. if (mzChargeDetail.getTimes() == null) {
  2580. results.put("resultCode", -1);
  2581. results.put("resultMessage", "病人就诊次数不能为空");
  2582. return results;
  2583. }
  2584. try {
  2585. mzChargeDetail.setBillItemCode("100");
  2586. List<MzChargeDetail> mzChargeDetailList = mzChargeDetailService.getTempMzChargeDetailListForUnPaid(mzChargeDetail);
  2587. if (mzChargeDetailList == null || mzChargeDetailList.size() == 0) {
  2588. results.put("resultCode", -1);
  2589. results.put("resultMessage", "未查询到待缴费明细记录");
  2590. return results;
  2591. }
  2592. mzChargeDetailService.getMzChargeDetails(mzChargeDetailList);
  2593. log.info("[unPaidToFullChargeDetail]:{}",JsonUtil.object2Json(mzChargeDetailList));
  2594. results.put("resultCode", 0);
  2595. results.put("resultMessage", "待缴费记录明细查询成功");
  2596. results.put("data", mzChargeDetailList);
  2597. return results;
  2598. } catch (Exception e) {
  2599. results.put("resultCode", -1);
  2600. results.put("resultMessage", "门诊待缴费记录明细查询失败,请联系管理员");
  2601. log.error("系统异常,错误信息{}", e);
  2602. return results;
  2603. }
  2604. }
  2605. /**
  2606. * 根据病人id查询所有未打印的发票
  2607. *
  2608. * @return
  2609. */
  2610. @RequestMapping(value = "/getUnPrintReceiptSerial", method = {RequestMethod.GET})
  2611. public Map<String, Object> getUnPrintReceiptSerial(@RequestParam("patientId") String patientId) {
  2612. Map<String, Object> resultMap = new HashMap<>();
  2613. try {
  2614. if (StringUtils.isBlank(patientId)) {
  2615. resultMap.put("code", -1);
  2616. resultMap.put("message", "病人门诊ID不能为空");
  2617. return resultMap;
  2618. }
  2619. List<Map<String, Object>> resultList = mzyReqrecService.queryUnPrintReceiptSerial(patientId);
  2620. if (resultList == null) {
  2621. resultList = mzReceiptSerialService.queryUnPrintReceiptSerial(patientId);
  2622. } else {
  2623. resultList.addAll(mzReceiptSerialService.queryUnPrintReceiptSerial(patientId));
  2624. }
  2625. if (resultList == null) {
  2626. resultMap.put("code", -1);
  2627. resultMap.put("message", "很抱歉,未查询到您有未打印的发票信息");
  2628. return resultMap;
  2629. }
  2630. resultMap.put("code", 0);
  2631. resultMap.put("message", "未打印的发票信息查询成功");
  2632. resultMap.put("data", resultList);
  2633. return resultMap;
  2634. } catch (Exception e) {
  2635. log.error("未打印的发票信息查询失败,错误信息{}", e);
  2636. resultMap.put("code", -1);
  2637. resultMap.put("message", "未打印的发票信息查询失败");
  2638. return resultMap;
  2639. }
  2640. }
  2641. /**
  2642. * 获取发票内容发票
  2643. *
  2644. * @return
  2645. */
  2646. @RequestMapping(value = "/getReceiptSerialDetail", method = {RequestMethod.POST})
  2647. public Map<String, Object> getReceiptSerialDetail(@RequestBody Map<String, Object> params) {
  2648. Map<String, Object> resultMap = new HashMap<>();
  2649. try {
  2650. if (params == null) {
  2651. resultMap.put("code", -1);
  2652. resultMap.put("message", "发票详情查询参数不能为空");
  2653. return resultMap;
  2654. }
  2655. String patientId = (String) params.get("patientId");
  2656. Integer times = (Integer) params.get("times");
  2657. Integer type = (Integer) params.get("type");
  2658. Integer receiptNo = (Integer) params.get("receiptNo");
  2659. String chequeType = (String) params.get("chequeType");
  2660. String receiptBill = (String) params.get("receiptBill");
  2661. if (StringUtils.isBlank(patientId)) {
  2662. resultMap.put("code", -1);
  2663. resultMap.put("message", "病人门诊ID不能为空");
  2664. return resultMap;
  2665. }
  2666. if (StringUtils.isBlank(receiptBill)) {
  2667. resultMap.put("code", -1);
  2668. resultMap.put("message", "发票号不能为空");
  2669. return resultMap;
  2670. }
  2671. if (times == null) {
  2672. resultMap.put("code", -1);
  2673. resultMap.put("message", "病人就诊次数不能为空");
  2674. return resultMap;
  2675. }
  2676. if (type == null) {
  2677. resultMap.put("code", -1);
  2678. resultMap.put("message", "发票类型不能为空");
  2679. return resultMap;
  2680. }
  2681. if (type == 2) {
  2682. if (receiptNo == null) {
  2683. resultMap.put("code", -1);
  2684. resultMap.put("message", "病人缴费次数不能为空");
  2685. return resultMap;
  2686. }
  2687. if (StringUtils.isBlank(chequeType)) {
  2688. resultMap.put("code", -1);
  2689. resultMap.put("message", "病人缴费方式不能为空");
  2690. return resultMap;
  2691. }
  2692. List<MzReceiptSerial> mzReceiptSerials = mzReceiptSerialService.queryAllSerialForThisTime(patientId, times, receiptNo);
  2693. if (mzReceiptSerials == null || mzReceiptSerials.size() == 0) {
  2694. resultMap.put("code", -1);
  2695. resultMap.put("message", "没有查询到对应的发票!");
  2696. return resultMap;
  2697. }
  2698. MzReceiptSerial mzReceiptSerial = mzReceiptSerials.get(0);
  2699. // if (mzReceiptSerial == null) {
  2700. // mzReceiptSerialService.repairDataFromBack(patientId, times, receiptNo);
  2701. // mzReceiptSerial = mzReceiptSerialService.queryAllSerialForThisTime(patientId, times, receiptNo);
  2702. // }
  2703. if (StringUtils.isBlank(mzReceiptSerial.getChequeType())) {
  2704. resultMap.put("code", -1);
  2705. resultMap.put("message", "当前病人发票表中的收费类型为空,无法打印发票,请及时联系管理员");
  2706. log.info("当前病人发票表中的收费类型为空,无法打印发票,请及时联系管理员,patientId={},time={},receiptNo={}", patientId, times, receiptNo);
  2707. return resultMap;
  2708. }
  2709. List<Integer> timesList = new ArrayList<>();
  2710. List<MzReceiptSerialVo> mzReceiptSerialVos = mzReceiptSerialService.getMzReceiptSerialVos(mzReceiptSerial, timesList, receiptBill);
  2711. resultMap.put("data", mzReceiptSerialVos);
  2712. resultMap.put("printerId", Constants.BRZZJF_NAME);
  2713. resultMap.put("message", "发票详情查询成功");
  2714. return resultMap;
  2715. }
  2716. MzyReqrec mzyReqrec = mzyReqrecService.queryMzyReqrecByPatientIdAndTimes(patientId, times);
  2717. if (mzyReqrec == null) {
  2718. resultMap.put("code", -1);
  2719. resultMap.put("message", "当前病人不存在挂号信息");
  2720. return resultMap;
  2721. }
  2722. if (StringUtils.isNotBlank(mzyReqrec.getPrinterId())) {
  2723. resultMap.put("code", -1);
  2724. resultMap.put("message", "当前挂号信息已经打印过发票,请勿重复操作");
  2725. return resultMap;
  2726. }
  2727. ZdUnitCode zdUnitCode = zdUnitCodeService.queryByCode(mzyReqrec.getUnitCode());
  2728. if (zdUnitCode != null) {
  2729. mzyReqrec.setUnitCode(zdUnitCode.getName());
  2730. resultMap.put("officePos", zdUnitCode.getOfficePos());
  2731. }
  2732. Employee employee = employeeService.queryByUserCode(mzyReqrec.getDoctorCode());
  2733. if (employee != null) {
  2734. mzyReqrec.setDoctorCode(employee.getEmployeeName());
  2735. }
  2736. MzyZdChargeType mzyZdChargeType = mzyZdChargeTypeService.queryByCode(mzyReqrec.getChargeType());
  2737. if (mzyZdChargeType != null) {
  2738. mzyReqrec.setChargeType(mzyZdChargeType.getName());
  2739. }
  2740. if ("a".equals(mzyReqrec.getAmpm())) {
  2741. mzyReqrec.setAmpm("上午");
  2742. } else if ("p".equals(mzyReqrec.getAmpm())) {
  2743. mzyReqrec.setAmpm("下午");
  2744. } else if ("n".equals(mzyReqrec.getAmpm())) {
  2745. mzyReqrec.setAmpm("中午");
  2746. } else if ("d".equals(mzyReqrec.getAmpm())) {
  2747. mzyReqrec.setAmpm("全天");
  2748. }
  2749. BigDecimal totalFee = mzyReqrec.getReqFee().add(mzyReqrec.getClinicFee()).add(mzyReqrec.getOthFee()).add(mzyReqrec.getBrochureFee());
  2750. if (totalFee.compareTo(BigDecimal.ZERO) == 0) {
  2751. resultMap.put("code", -1);
  2752. resultMap.put("message", "当前病人无费用信息,无需开具发票");
  2753. return resultMap;
  2754. }
  2755. resultMap.put("totalFee", totalFee);
  2756. resultMap.put("totalFeeStr", NumberToCN.number2CNMontrayUnit(totalFee));
  2757. Date chargeDate = mzyReqrec.getRequestDay();
  2758. if (chargeDate == null) {
  2759. chargeDate = new Date();
  2760. }
  2761. Calendar calendar = Calendar.getInstance();
  2762. calendar.setTime(chargeDate);
  2763. resultMap.put("year", calendar.get(Calendar.YEAR));
  2764. Integer month = calendar.get(Calendar.MONTH) + 1;
  2765. if (month < 10) {
  2766. resultMap.put("month", "0" + month);
  2767. } else {
  2768. resultMap.put("month", month.toString());
  2769. }
  2770. Integer day = calendar.get(Calendar.DAY_OF_MONTH);
  2771. if (day < 10) {
  2772. resultMap.put("day", "0" + day);
  2773. } else {
  2774. resultMap.put("day", day.toString());
  2775. }
  2776. resultMap.put("printerId", Constants.BRZZJF_NAME);
  2777. resultMap.put("code", 0);
  2778. resultMap.put("data", mzyReqrec);
  2779. resultMap.put("message", "发票详情查询成功");
  2780. return resultMap;
  2781. } catch (MzException e) {
  2782. resultMap.put("code", -1);
  2783. resultMap.put("message", e.getMessage());
  2784. log.error("打印发票失败,系统异常,错误信息{}", e);
  2785. return resultMap;
  2786. } catch (Exception e) {
  2787. log.error("发票详情查询失败,错误信息{}", e);
  2788. resultMap.put("code", -1);
  2789. resultMap.put("message", "发票详情查询失败");
  2790. return resultMap;
  2791. }
  2792. }
  2793. /**
  2794. * 打印发票
  2795. *
  2796. * @return
  2797. */
  2798. @RequestMapping(value = "/printReceiptSerial", method = {RequestMethod.POST})
  2799. public Map<String, Object> printReceiptSerial(@RequestBody Map<String, Object> params) {
  2800. Map<String, Object> resultMap = new HashMap<>();
  2801. try {
  2802. if (params == null) {
  2803. resultMap.put("code", -1);
  2804. resultMap.put("message", "打印发票参数不能为空");
  2805. return resultMap;
  2806. }
  2807. String patientId = (String) params.get("patientId");
  2808. Integer times = (Integer) params.get("times");
  2809. Integer type = (Integer) params.get("type");
  2810. Integer receiptNo = (Integer) params.get("receiptNo");
  2811. String chequeType = (String) params.get("chequeType");
  2812. String receiptBill = (String) params.get("receiptBill");
  2813. if (StringUtils.isBlank(patientId)) {
  2814. resultMap.put("code", -1);
  2815. resultMap.put("message", "病人门诊ID不能为空");
  2816. return resultMap;
  2817. }
  2818. if (StringUtils.isBlank(receiptBill)) {
  2819. resultMap.put("code", -1);
  2820. resultMap.put("message", "发票号不能为空");
  2821. return resultMap;
  2822. }
  2823. if (times == null) {
  2824. resultMap.put("code", -1);
  2825. resultMap.put("message", "病人就诊次数不能为空");
  2826. return resultMap;
  2827. }
  2828. if (type == null) {
  2829. resultMap.put("code", -1);
  2830. resultMap.put("message", "发票类型不能为空");
  2831. return resultMap;
  2832. }
  2833. int num = 0;
  2834. if (type == 2) {
  2835. if (receiptNo == null) {
  2836. resultMap.put("code", -1);
  2837. resultMap.put("message", "病人缴费次数不能为空");
  2838. return resultMap;
  2839. }
  2840. if (StringUtils.isBlank(chequeType)) {
  2841. resultMap.put("code", -1);
  2842. resultMap.put("message", "病人缴费方式不能为空");
  2843. return resultMap;
  2844. }
  2845. num = mzReceiptSerialService.printReceiptSerial(patientId, times, receiptNo, chequeType, receiptBill);
  2846. } else {
  2847. num = mzyReqrecService.printMzyReqrecRecept(patientId, times, receiptBill);
  2848. }
  2849. if (num == 0) {
  2850. resultMap.put("code", -1);
  2851. resultMap.put("message", "打印发票失败,请重试");
  2852. return resultMap;
  2853. }
  2854. resultMap.put("code", 0);
  2855. resultMap.put("message", "发票打印成功");
  2856. return resultMap;
  2857. } catch (MzException e) {
  2858. log.error("发票打印失败,错误信息{}", e);
  2859. resultMap.put("code", -1);
  2860. resultMap.put("message", e.getMessage());
  2861. return resultMap;
  2862. } catch (Exception e) {
  2863. log.error("发票打印失败,错误信息{}", e);
  2864. resultMap.put("code", -1);
  2865. resultMap.put("message", "发票打印失败失败");
  2866. return resultMap;
  2867. }
  2868. }
  2869. /**
  2870. * 根据父id查询所有的子id集合
  2871. *
  2872. * @return
  2873. */
  2874. @RequestMapping(value = "/getPatientIdByParentId", method = {RequestMethod.GET})
  2875. public Map<String, Object> getPatientIdByParentId(@RequestParam("patientId") String patientId) {
  2876. Map<String, Object> resultMap = new HashMap<>();
  2877. try {
  2878. if (StringUtils.isBlank(patientId)) {
  2879. resultMap.put("code", -1);
  2880. resultMap.put("message", "混检主体ID不能为空");
  2881. return resultMap;
  2882. }
  2883. List<String> parentIds = hybirdTestService.queryPatientIdByParentId(patientId);
  2884. if (parentIds == null) {
  2885. resultMap.put("code", -1);
  2886. resultMap.put("message", "没有查询到对应的实际被检人集");
  2887. return resultMap;
  2888. }
  2889. List<MzPatientMi> mzPatientMiList = mzPatientMiService.queryByPatientIds(parentIds);
  2890. if (mzPatientMiList == null || mzPatientMiList.size() == 0) {
  2891. resultMap.put("code", -1);
  2892. resultMap.put("message", "没有查询到对应的实际被检人集");
  2893. return resultMap;
  2894. }
  2895. List<Map<String, String>> resultList = new ArrayList<>();
  2896. for (MzPatientMi mzPatientMi : mzPatientMiList) {
  2897. if (mzPatientMi != null) {
  2898. Map<String, String> map = new HashMap<>();
  2899. map.put("name", mzPatientMi.getName());
  2900. map.put("socialNo", mzPatientMi.getSocialNo());
  2901. resultList.add(map);
  2902. }
  2903. }
  2904. resultMap.put("code", 0);
  2905. resultMap.put("message", "信息查询成功");
  2906. resultMap.put("data", resultList);
  2907. return resultMap;
  2908. } catch (Exception e) {
  2909. log.error("信息查询失败,错误信息{}", e);
  2910. resultMap.put("code", -1);
  2911. resultMap.put("message", "信息查询失败");
  2912. return resultMap;
  2913. }
  2914. }
  2915. /**
  2916. * 根据混检实际人员的参数查询混检主体id
  2917. *
  2918. * @param patientId
  2919. * @return
  2920. */
  2921. @RequestMapping(value = "/getParentIdByPatientId", method = {RequestMethod.GET})
  2922. public Map<String, Object> getParentIdByPatientId(@RequestParam("patientId") String patientId) {
  2923. Map<String, Object> resultMap = new HashMap<>();
  2924. try {
  2925. if (StringUtils.isBlank(patientId)) {
  2926. resultMap.put("code", -1);
  2927. resultMap.put("message", "门诊病人ID不能为空");
  2928. return resultMap;
  2929. }
  2930. List<HybirdTest> hybirdTestList = hybirdTestService.queryByPatientId(patientId);
  2931. if (hybirdTestList == null || hybirdTestList.size() == 0) {
  2932. resultMap.put("code", -1);
  2933. resultMap.put("message", "没有查询到对应混检记录");
  2934. return resultMap;
  2935. }
  2936. resultMap.put("code", 0);
  2937. resultMap.put("message", "信息查询成功");
  2938. resultMap.put("data", hybirdTestList);
  2939. return resultMap;
  2940. } catch (Exception e) {
  2941. log.error("信息查询失败,错误信息{}", e);
  2942. resultMap.put("code", -1);
  2943. resultMap.put("message", "信息查询失败");
  2944. return resultMap;
  2945. }
  2946. }
  2947. /**
  2948. * 医技申请确认费用
  2949. *
  2950. * @return
  2951. */
  2952. @RequestMapping(value = "/confirmYjReqFlag", method = {RequestMethod.GET})
  2953. public Map<String, Object> confirmYjReqFlag(@RequestParam("flag") String flag, @RequestParam("opId") String opId, @RequestParam("reqNo") Integer reqNo) {
  2954. Map<String, Object> resultMap = new HashMap<>();
  2955. try {
  2956. mzChargeDetailService.modifyReceiveFlagAndConfirmFlag(flag, opId, reqNo);
  2957. resultMap.put("code", 0);
  2958. resultMap.put("message", "医技申请确认费用成功");
  2959. return resultMap;
  2960. } catch (MzException me) {
  2961. resultMap.put("code", -1);
  2962. resultMap.put("message", me.getMessage());
  2963. return resultMap;
  2964. } catch (Exception e) {
  2965. log.error("信息查询失败,错误信息{}", e);
  2966. resultMap.put("code", -1);
  2967. resultMap.put("message", "信息查询失败");
  2968. return resultMap;
  2969. }
  2970. }
  2971. /**
  2972. * 获取核酸混采时间
  2973. *
  2974. * @return
  2975. */
  2976. @RequestMapping(value = "/getHyBirdTime", method = {RequestMethod.GET})
  2977. public Map<String, Object> getHyBirdTime() {
  2978. Map<String, Object> resultMap = new HashMap<>();
  2979. try {
  2980. Config config = configService.queryUserByKey(Constants.HYBIRD_TIME_KEY);
  2981. if (config == null) {
  2982. resultMap.put("code", -1);
  2983. resultMap.put("message", "该键没有对应的配置");
  2984. return resultMap;
  2985. }
  2986. resultMap.put("code", 0);
  2987. resultMap.put("message", "获取核酸混采时间成功");
  2988. resultMap.put("data", config);
  2989. return resultMap;
  2990. } catch (Exception e) {
  2991. e.printStackTrace();
  2992. log.error("获取核酸混采时间失败,错误信息{}", e);
  2993. resultMap.put("code", -1);
  2994. resultMap.put("message", "获取核酸混采时间失败");
  2995. return resultMap;
  2996. }
  2997. }
  2998. /**
  2999. * 查询挂号列表
  3000. *
  3001. * @param patientId 患者id
  3002. * @param payMark 列表类型 5 未缴费 0 已缴费 1 已退费
  3003. * @return
  3004. */
  3005. @RequestMapping(value = "/listMzyReqrec", method = {RequestMethod.GET})
  3006. public Map<String, Object> listMzyReqrec(@RequestParam("patientId") String patientId, @RequestParam("payMark") String payMark, HttpServletRequest httpServletRequest) {
  3007. Map<String, Object> resultMap = new HashMap<>();
  3008. try {
  3009. String ip = HttpUtil.getIPAddress(httpServletRequest);
  3010. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  3011. if (whiteList == null) {
  3012. resultMap.put("resultCode", -1);
  3013. resultMap.put("message", "当前请求来源未在白名单中【" + ip + "】");
  3014. return resultMap;
  3015. }
  3016. if (patientId == null || StringUtils.isBlank(patientId)) {
  3017. resultMap.put("resultCode", -1);
  3018. resultMap.put("message", "患者ID不能为空");
  3019. return resultMap;
  3020. }
  3021. MzyReqrecPageDto mzyReqrecPageDto = new MzyReqrecPageDto();
  3022. MzyReqrec mzyReqrec = new MzyReqrec();
  3023. mzyReqrecPageDto.setMzyReqrec(mzyReqrec);
  3024. mzyReqrecPageDto.setPatientIds(Arrays.asList(patientId));
  3025. mzyReqrecPageDto.setPageSize(2000);
  3026. resultMap.put("resultCode", 0);
  3027. resultMap.put("message", "查询挂号信息成功");
  3028. if (PayMarkEnum.NO_CHARGE.code.equals(payMark)) {
  3029. mzyReqrec.setVisitedMark(YesNoEnum.NO.code);
  3030. mzyReqrec.setCancelMark(YesNoEnum.NO.code);
  3031. mzyReqrecPageDto.setBeginTime(DateUtil.pase("2023-03-01:00:00:00", "yyyy-MM-dd HH:mm:ss"));
  3032. mzyReqrecPageDto.setPayMark(PayMarkEnum.NO_CHARGE.code);
  3033. resultMap.put("data", mzyReqrecService.getMzyReqrecVo(mzyReqrecService.queryMzyReqrecWithPage(mzyReqrecPageDto)));
  3034. return resultMap;
  3035. }
  3036. if (PayMarkEnum.CHARGED.code.equals(payMark)) {
  3037. mzyReqrec.setOpId(whiteList.getOpId());
  3038. mzyReqrec.setVisitedMark(YesNoEnum.NO.code);
  3039. mzyReqrec.setCancelMark(YesNoEnum.NO.code);
  3040. List<MzyReqrec> chargedLIst = mzyReqrecService.queryMzyReqrecWithPage(mzyReqrecPageDto);
  3041. mzyReqrec.setVisitedMark(YesNoEnum.YES.code);
  3042. if (chargedLIst == null) {
  3043. chargedLIst = mzyReqrecService.queryMzyReqrecWithPage(mzyReqrecPageDto);
  3044. } else {
  3045. chargedLIst.addAll(mzyReqrecService.queryMzyReqrecWithPage(mzyReqrecPageDto));
  3046. }
  3047. resultMap.put("data", mzyReqrecService.getMzyReqrecVo(chargedLIst));
  3048. return resultMap;
  3049. }
  3050. if (PayMarkEnum.RETURN_PREMIUM.code.equals(payMark)) {
  3051. mzyReqrec.setOpId(whiteList.getOpId());
  3052. mzyReqrec.setCancelMark(YesNoEnum.YES.code);
  3053. resultMap.put("data", mzyReqrecService.getMzyReqrecVo(mzyReqrecService.queryMzyReqrecWithPage(mzyReqrecPageDto)));
  3054. return resultMap;
  3055. }
  3056. resultMap.put("resultCode", -1);
  3057. resultMap.put("message", "查询挂号信息失败,请求状态异常");
  3058. return resultMap;
  3059. } catch (Exception e) {
  3060. e.printStackTrace();
  3061. resultMap.put("resultCode", -1);
  3062. resultMap.put("message", "查询未缴费的挂号列表失败,系统出错,请联系管理员");
  3063. log.error("查询未缴费的挂号列表失败,系统异常,错误信息{}", e);
  3064. return resultMap;
  3065. }
  3066. }
  3067. /**
  3068. * 查询挂号信息明细
  3069. *
  3070. * @return
  3071. */
  3072. @RequestMapping(value = "/getMzyReqrecInfo", method = {RequestMethod.GET})
  3073. public Map<String, Object> getMzyReqrecInfo(@RequestParam("patientId") String patientId, @RequestParam("times") Integer times) {
  3074. Map<String, Object> resultMap = new HashMap<>();
  3075. try {
  3076. if (patientId == null || StringUtils.isBlank(patientId)) {
  3077. resultMap.put("resultCode", -1);
  3078. resultMap.put("message", "患者ID不能为空");
  3079. return resultMap;
  3080. }
  3081. if (times == null) {
  3082. resultMap.put("resultCode", -1);
  3083. resultMap.put("message", "患者就诊次数不能为空");
  3084. return resultMap;
  3085. }
  3086. MzyReqrec mzyReqrec = mzyReqrecService.queryMzyReqrecByPatientIdAndTimes(patientId, times);
  3087. if (mzyReqrec == null) {
  3088. resultMap.put("resultCode", -1);
  3089. resultMap.put("message", "未查询到符合条件的挂号详情");
  3090. return resultMap;
  3091. }
  3092. resultMap.put("resultCode", 0);
  3093. resultMap.put("message", "查询挂号信息明细成功");
  3094. resultMap.put("data", mzyReqrec);
  3095. return resultMap;
  3096. } catch (Exception e) {
  3097. e.printStackTrace();
  3098. resultMap.put("resultCode", -1);
  3099. resultMap.put("message", "查询挂号信息明细失败,系统出错,请联系管理员");
  3100. log.error("查询挂号信息明细失败,系统异常,错误信息{}", e);
  3101. return resultMap;
  3102. }
  3103. }
  3104. /**
  3105. * 支付未缴费的挂号记录
  3106. *
  3107. * @return
  3108. */
  3109. @RequestMapping(value = "/payRegistration", method = {RequestMethod.POST})
  3110. public Map<String, Object> payRegistration(@RequestBody MzyReqrec mzyReqrec, HttpServletRequest httpServletRequest) {
  3111. Map<String, Object> resultMap = new HashMap<>();
  3112. try {
  3113. String ip = HttpUtil.getIPAddress(httpServletRequest);
  3114. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  3115. if (whiteList == null) {
  3116. resultMap.put("resultCode", -1);
  3117. resultMap.put("message", "当前请求来源未在白名单中【" + ip + "】");
  3118. return resultMap;
  3119. }
  3120. if (mzyReqrec == null) {
  3121. resultMap.put("resultCode", -1);
  3122. resultMap.put("message", "支付未缴费的挂号记录参数不能为空");
  3123. return resultMap;
  3124. }
  3125. if (StringUtils.isBlank(mzyReqrec.getPatientId())) {
  3126. resultMap.put("resultCode", -1);
  3127. resultMap.put("message", "病人id不能为空");
  3128. return resultMap;
  3129. }
  3130. if (mzyReqrec.getTimes() == null) {
  3131. resultMap.put("resultCode", -1);
  3132. resultMap.put("message", "病人挂号次数不能为空");
  3133. return resultMap;
  3134. }
  3135. if (StringUtils.isBlank(mzyReqrec.getPaymode())) {
  3136. resultMap.put("resultCode", -1);
  3137. resultMap.put("message", "付款方式不能为空");
  3138. return resultMap;
  3139. }
  3140. if (!Arrays.asList(WX, ZFB).contains(mzyReqrec.getPaymode())) {
  3141. resultMap.put("resultCode", -1);
  3142. resultMap.put("message", "支付方式有误,请联系管理员");
  3143. return resultMap;
  3144. }
  3145. if (StringUtils.isBlank(mzyReqrec.getPsordnum())) {
  3146. resultMap.put("resultCode", -1);
  3147. resultMap.put("message", "订单号不能为空");
  3148. return resultMap;
  3149. }
  3150. if (mzyReqrec.getAmount() == null) {
  3151. resultMap.put("resultCode", -1);
  3152. resultMap.put("message", "实缴费用不能为空");
  3153. return resultMap;
  3154. }
  3155. if (WX.equals(mzyReqrec.getPaymode())) {
  3156. mzyReqrec.setPaymode(Constants.ZZWX);
  3157. } else {
  3158. mzyReqrec.setPaymode(Constants.ZZZFB);
  3159. }
  3160. int num = mzyReqrecService.payRegistration(mzyReqrec.getPatientId(), mzyReqrec.getTimes(), mzyReqrec.getPaymode(), mzyReqrec.getPsordnum(), mzyReqrec.getAgtordnum(), mzyReqrec.getAmount(), whiteList.getOpId());
  3161. if (num == 1) {
  3162. resultMap.put("resultCode", 0);
  3163. resultMap.put("message", "支付未缴费的挂号记录成功");
  3164. return resultMap;
  3165. }
  3166. resultMap.put("resultCode", -1);
  3167. resultMap.put("message", "支付未缴费的挂号记录失败");
  3168. return resultMap;
  3169. } catch (Exception e) {
  3170. e.printStackTrace();
  3171. resultMap.put("resultCode", -1);
  3172. resultMap.put("message", StringUtils.isBlank(e.getMessage()) ? "支付未缴费的挂号记录失败,系统出错,请联系管理员" : e.getMessage());
  3173. log.error("支付未缴费的挂号记录失败,系统异常,错误信息{}", e);
  3174. return resultMap;
  3175. }
  3176. }
  3177. /**
  3178. * 自助挂号退费
  3179. *
  3180. * @return
  3181. */
  3182. @RequestMapping(value = "/cancelReqrec", method = {RequestMethod.POST})
  3183. public Map<String, Object> cancelReqrec(@RequestBody MzyReqrec mzyReqrec, HttpServletRequest httpServletRequest) {
  3184. Map<String, Object> resultMap = new HashMap<>();
  3185. try {
  3186. String ip = HttpUtil.getIPAddress(httpServletRequest);
  3187. WhiteList whiteList = whiteListService.queryByIpAddress(ip);
  3188. if (whiteList == null) {
  3189. resultMap.put("resultCode", -1);
  3190. resultMap.put("message", "当前请求来源未在白名单中【" + ip + "】");
  3191. return resultMap;
  3192. }
  3193. if (mzyReqrec == null) {
  3194. resultMap.put("resultCode", -1);
  3195. resultMap.put("message", "自助挂号退费参数不能为空");
  3196. return resultMap;
  3197. }
  3198. if (StringUtils.isBlank(mzyReqrec.getPatientId())) {
  3199. resultMap.put("resultCode", -1);
  3200. resultMap.put("message", "病人id不能为空");
  3201. return resultMap;
  3202. }
  3203. if (mzyReqrec.getTimes() == null) {
  3204. resultMap.put("resultCode", -1);
  3205. resultMap.put("message", "病人挂号次数不能为空");
  3206. return resultMap;
  3207. }
  3208. mzyReqrec.setCancelMark(YesNoEnum.YES.code);
  3209. mzyReqrec.setRefundType(YesNoEnum.YES.code);
  3210. int num = mzyReqrecService.modifyMzyReqrec(mzyReqrec, whiteList.getOpId());
  3211. if (num == 1) {
  3212. resultMap.put("resultCode", 0);
  3213. resultMap.put("message", "自助挂号退费成功");
  3214. return resultMap;
  3215. }
  3216. resultMap.put("resultCode", -1);
  3217. resultMap.put("message", "自助挂号退费失败");
  3218. return resultMap;
  3219. } catch (MzException e) {
  3220. resultMap.put("resultCode", -1);
  3221. resultMap.put("message", e.getMessage());
  3222. return resultMap;
  3223. } catch (Exception e) {
  3224. e.printStackTrace();
  3225. resultMap.put("resultCode", -1);
  3226. resultMap.put("message", "自助挂号退费失败,系统出错,请联系管理员");
  3227. log.error("自助挂号退费失败,系统异常,错误信息{}", e);
  3228. return resultMap;
  3229. }
  3230. }
  3231. }