| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537 |
- package cn.hnthyy.thmz.controller.api;
- import cn.hnthyy.thmz.Utils.DateUtil;
- import cn.hnthyy.thmz.common.Constants;
- import cn.hnthyy.thmz.entity.MzException;
- import cn.hnthyy.thmz.entity.haici.HaiciCharge;
- import cn.hnthyy.thmz.entity.haici.Haicipat;
- import cn.hnthyy.thmz.entity.his.*;
- import cn.hnthyy.thmz.enums.PayMarkEnum;
- import cn.hnthyy.thmz.enums.YesNoEnum;
- import cn.hnthyy.thmz.pageDto.MzChargeDetailPageDto;
- import cn.hnthyy.thmz.pageDto.MzyReqrecPageDto;
- import cn.hnthyy.thmz.pageDto.ZdUnitCodePageDto;
- import cn.hnthyy.thmz.service.his.*;
- import cn.hnthyy.thmz.vo.*;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.dao.DataIntegrityViolationException;
- import org.springframework.web.bind.annotation.*;
- import java.math.BigDecimal;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.stream.Collectors;
- @RestController
- @RequestMapping("/api/v1")
- @Slf4j
- public class MedicalViewApiController {
- @Autowired
- private MzPatientMiService mzPatientMiService;
- @Autowired
- private MzChargeDetailService mzChargeDetailService;
- @Autowired
- private MzDepositFileService mzDepositFileService;
- @Autowired
- private MzVisitTableService mzVisitTableService;
- @Autowired
- private EmployeeService employeeService;
- @Autowired
- private MzZdSupplyTypeService zdSupplyTypeService;
- @Autowired
- private ZdUnitCodeService zdUnitCodeService;
- @Autowired
- private MzBillItemService mzBillItemService;
- @Autowired
- private APatientMiService aPatientMiService;
- @Autowired
- private ZdMzClassService zdMzClassService;
- @Autowired
- private MzyRequestService mzyRequestService;
- @Autowired
- private ZdEmpTitleService zdEmpTitleService;
- @Autowired
- private MzyZdChargeTypeService mzyZdChargeTypeService;
- @Autowired
- private MzZdWorkTimeService mzZdWorkTimeService;
- @Autowired
- private MzyReqrecService mzyReqrecService;
- //海慈身份证类型
- private static final String ID_CARD_TYPE = "11";
- //海慈参数男性
- private static final String MAN = "M";
- //海慈参数女性
- private static final String WONMAN = "F";
- //海慈参数成年人
- private static final String PERSON = "1";
- //海慈参数儿童
- private static final String CHILD = "2";
- //微信支付
- private static final String WX = "WX";
- //支付宝
- private static final String ZFB = "ZFB";
- /**
- * 患者信息查询
- *
- * @param haicipat
- * @return
- */
- @RequestMapping(value = "/queryPatientInfo", method = {RequestMethod.POST})
- public Map<String, Object> queryPatientInfo(@RequestBody Haicipat haicipat) {
- Map<String, Object> results = new HashMap<>();
- if (StringUtils.isBlank(haicipat.getPatIdType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "顾客证件类型不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatIdNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "顾客证件号码不能为空");
- return results;
- }
- if (!ID_CARD_TYPE.equals(haicipat.getPatIdType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "顾客证件号码非身份证,暂不支持");
- return results;
- }
- List<MzPatientMi> mzPatientMis = mzPatientMiService.queryBySocialNo(haicipat.getPatIdNo(), null);
- if (mzPatientMis == null || mzPatientMis.size() == 0) {
- results.put("resultCode", -1);
- results.put("resultMessage", "没有查询到病人信息");
- return results;
- }
- results.put("resultCode", 0);
- MzPatientMi mzPatientMi=mzPatientMis.get(0);
- results.put("patName", mzPatientMi.getName());
- results.put("patSex", YesNoEnum.YES.code.equals(mzPatientMi.getSex()) ? MAN : WONMAN);
- results.put("patAge", mzPatientMi.getAge());
- results.put("patBirth", mzPatientMi.getBirthDayStr());
- results.put("patAddress", mzPatientMi.getAddress());
- results.put("patMobile", mzPatientMi.getPhoneNo());
- results.put("patIdType", YesNoEnum.YES.code);
- results.put("patIdNo", mzPatientMi.getSocialNo());
- results.put("patCardType", YesNoEnum.YES.code);
- results.put("patCardNo", mzPatientMi.getIcCardNo());
- results.put("patHisNo", mzPatientMi.getPatientId());
- List<String> inPatientNos=aPatientMiService.queryInPatientNoByMzNo(mzPatientMi.getPatientId());
- if(inPatientNos!=null && inPatientNos.size()>0){
- results.put("inPatientNo", inPatientNos.get(0));
- }else {
- results.put("inPatientNo", "");
- }
- return results;
- }
- /**
- * 首诊患者建档
- *
- * @param haicipat
- * @return
- */
- @RequestMapping(value = "/savePatientInfo", method = {RequestMethod.POST})
- public Map<String, Object> savePatientInfo(@RequestBody Haicipat haicipat) {
- Map<String, Object> results = new HashMap<>();
- if (haicipat == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "建档参数为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者类型不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatName())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者姓名不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatSex())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者性别不能为空");
- return results;
- }
- if (haicipat.getPatAge() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者年龄不能为空");
- return results;
- }
- if (haicipat.getPatBirth() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者出生日期不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatAddress())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者地址不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatMobile())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者电话不能为空");
- return results;
- }
- if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者证件类型不能为空");
- return results;
- }
- if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者证件号码不能为空");
- return results;
- }
- if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardName())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者监护人姓名不能为空");
- return results;
- }
- if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者监护人证件类型不能为空");
- return results;
- }
- if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者监护人证件号码不能为空");
- return results;
- }
- List<MzPatientMi> mzPatientMis = mzPatientMiService.queryBySocialNo(haicipat.getPatIdNo(), null);
- if (mzPatientMis != null && mzPatientMis.size() > 0) {
- results.put("resultCode", -1);
- results.put("resultMessage", "保存病人信息失败,已经存在相同的身份证号码记录");
- return results;
- }
- MzPatientMi mzPatientMi = new MzPatientMi();
- mzPatientMi.setName(haicipat.getPatName());
- mzPatientMi.setSex(MAN.equals(haicipat.getPatSex()) ? YesNoEnum.YES.code : 2);
- mzPatientMi.setAge(haicipat.getPatAge());
- mzPatientMi.setBirthDay(haicipat.getPatBirth());
- mzPatientMi.setAddress(haicipat.getPatAddress());
- mzPatientMi.setPhoneNo(haicipat.getPatMobile());
- mzPatientMi.setSocialNo(haicipat.getPatIdNo());
- mzPatientMi.setContractHz(haicipat.getGuardIdNo());
- mzPatientMi.setResponseType("01");
- try {
- int num = mzPatientMiService.saveMzPatientMi(mzPatientMi);
- if (num == 1) {
- results.put("resultCode", 0);
- results.put("resultMessage", "保存病人信息成功");
- results.put("patCardType", 1);
- results.put("data", mzPatientMi.getPatientId());
- return results;
- }
- results.put("resultCode", -1);
- results.put("resultMessage", "保存病人信息失败");
- return results;
- } catch (Exception e) {
- if (e instanceof DataIntegrityViolationException) {
- if (e.getMessage().contains("将截断字符串或二进制数据")) {
- results.put("resultCode", -1);
- results.put("resultMessage", "病人地址信息超长");
- log.error("系统异常,错误信息{病人地址信息超长}");
- return results;
- }
- }
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", StringUtils.isBlank(e.getMessage()) ? "系统出错,请联系管理员" : e.getMessage());
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- }
- }
- /**
- * 绑定通知
- *
- * @param haicipat
- * @return
- */
- @RequestMapping(value = "/boundPatCardNoInfo", method = {RequestMethod.POST})
- public Map<String, Object> boundPatCardNoInfo(@RequestBody Haicipat haicipat) {
- Map<String, Object> results = new HashMap<>();
- if (haicipat == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "绑定通知参数为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者类型不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatName())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者姓名不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatSex())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者性别不能为空");
- return results;
- }
- if (haicipat.getPatAge() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者年龄不能为空");
- return results;
- }
- if (haicipat.getPatBirth() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者出生日期不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatAddress())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者地址不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatMobile())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者电话不能为空");
- return results;
- }
- if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者证件类型不能为空");
- return results;
- }
- if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者证件号码不能为空");
- return results;
- }
- if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardName())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者监护人姓名不能为空");
- return results;
- }
- if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者监护人证件类型不能为空");
- return results;
- }
- if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者监护人证件号码不能为空");
- return results;
- }
- MzPatientMi mzPatientMi = new MzPatientMi();
- mzPatientMi.setPatientId(haicipat.getPatCardNo());
- mzPatientMi.setIcCardNo(haicipat.getPatCardNo());
- try {
- //int num=mzPatientMiService.modifyMzPatientMi(mzPatientMi);
- int num = 1;
- if (num == 1) {
- results.put("resultCode", 0);
- results.put("resultMessage", "绑定病人信息成功");
- return results;
- }
- results.put("resultCode", -1);
- results.put("resultMessage", "绑定病人信息失败");
- return results;
- } catch (Exception e) {
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "绑定失败,请联系管理员");
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- }
- }
- /**
- * 取消绑定通知
- *
- * @param haicipat
- * @return
- */
- @RequestMapping(value = "/cancelBoundPatCardNoInfo", method = {RequestMethod.POST})
- public Map<String, Object> cancelBoundPatCardNoInfo(@RequestBody Haicipat haicipat) {
- Map<String, Object> results = new HashMap<>();
- if (haicipat == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "取消绑定通知参数为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatCardNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者诊疗卡不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者类型不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatName())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者姓名不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatSex())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者性别不能为空");
- return results;
- }
- if (haicipat.getPatAge() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者年龄不能为空");
- return results;
- }
- if (haicipat.getPatBirth() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者出生日期不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatAddress())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者地址不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatMobile())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者电话不能为空");
- return results;
- }
- if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者证件类型不能为空");
- return results;
- }
- if (PERSON.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getPatIdNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者证件号码不能为空");
- return results;
- }
- if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardName())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者监护人姓名不能为空");
- return results;
- }
- if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdType())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者监护人证件类型不能为空");
- return results;
- }
- if (CHILD.equals(haicipat.getPatType()) && StringUtils.isBlank(haicipat.getGuardIdNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者监护人证件号码不能为空");
- return results;
- }
- try {
- //int num=mzPatientMiService.clearIcCardNo(haicipat.getPatCardNo());
- int num = 1;
- if (num == 1) {
- results.put("resultCode", 0);
- results.put("resultMessage", "取消绑定成功");
- return results;
- }
- results.put("resultCode", -1);
- results.put("resultMessage", "取消绑定失败");
- return results;
- } catch (Exception e) {
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "取消绑定失败,请联系管理员");
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- }
- }
- /**
- * 门诊待缴费记录查询
- *
- * @param haicipat
- * @return
- */
- @RequestMapping(value = "/getMzChargeDetailForUnPaid", method = {RequestMethod.POST})
- public Map<String, Object> getMzChargeDetailForUnPaid(@RequestBody Haicipat haicipat) {
- Map<String, Object> results = new HashMap<>();
- if (haicipat == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊待缴费记录查询参数为空");
- return results;
- }
- if (haicipat.getPatCardType() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者诊疗卡类型不能为空");
- return results;
- }
- if (StringUtils.isBlank(haicipat.getPatCardNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者诊疗卡号不能为空");
- return results;
- }
- try {
- MzPatientMi mzPatientMi = mzPatientMiService.queryByIcCardNo(haicipat.getPatCardNo());
- if (mzPatientMi == null) {
- results.put("resultCode", -1);
- log.warn("海慈传入的病人卡号查询不到对应的患者信息,卡号信息:" + haicipat.getPatCardNo());
- results.put("resultMessage", "患者诊疗卡号查询不到对应的患者信息");
- return results;
- }
- List<MzChargeDetail> mzChargeDetailList = mzChargeDetailService.unPaidToFullChargeDetail(mzPatientMi.getPatientId());
- if (mzChargeDetailList == null || mzChargeDetailList.size() == 0) {
- results.put("resultCode", -1);
- results.put("resultMessage", "未查询到待缴费记录");
- return results;
- }
- mzChargeDetailService.formatMzChargeDetail(mzChargeDetailList);
- List<Map<String, Object>> returnList = new ArrayList<>();
- for (MzChargeDetail mzChargeDetail : mzChargeDetailList) {
- Map<String, Object> map = new HashMap<>();
- map.put("hisOrdNum", mzChargeDetail.getPatientId() + "_" + mzChargeDetail.getTimes() + "_" + mzChargeDetail.getReceiptNo());
- map.put("patName", mzChargeDetail.getName());
- map.put("payName", "");
- map.put("deptName", mzChargeDetail.getWarnDept());
- map.put("doctorName", mzChargeDetail.getDoctorCode());
- BigDecimal totalAmount = mzChargeDetail.getAmount().multiply(BigDecimal.valueOf(100));
- map.put("totalAmt", totalAmount);
- map.put("medInsAmt", BigDecimal.ZERO);
- map.put("selfAmt", totalAmount);
- map.put("priceTime", DateUtil.fomart(mzChargeDetail.getPriceTime(), "yyyy-MM-dd HH:mm:ss"));
- returnList.add(map);
- }
- results.put("resultCode", 0);
- results.put("resultMessage", "待缴费记录查询成功");
- results.put("data", returnList);
- return results;
- } catch (Exception e) {
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊待缴费记录查询失败,请联系管理员");
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- }
- }
- /**
- * 门诊待缴费记录明细查询
- *
- * @param haiciCharge
- * @return
- */
- @RequestMapping(value = "/getChargeDetailByHisOrdNum", method = {RequestMethod.POST})
- public Map<String, Object> getChargeDetailByHisOrdNum(@RequestBody HaiciCharge haiciCharge) {
- Map<String, Object> results = new HashMap<>();
- if (haiciCharge == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊待缴费记录明细查询参数为空");
- return results;
- }
- if (haiciCharge.getPatCardType() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者诊疗卡类型不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getPatCardNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者诊疗卡号不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getHisOrdNum())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "医院订单号不能为空");
- return results;
- }
- try {
- String[] arr = haiciCharge.getHisOrdNum().split("_");
- MzChargeDetail mzChargeDetail = new MzChargeDetail(arr[0], Integer.valueOf(arr[1]));
- mzChargeDetail.setBillItemCode("100");
- List<MzChargeDetail> mzChargeDetailList = mzChargeDetailService.getTempMzChargeDetailListForUnPaid(mzChargeDetail);
- if (mzChargeDetailList == null || mzChargeDetailList.size() == 0) {
- results.put("resultCode", -1);
- results.put("resultMessage", "未查询到待缴费明细记录");
- return results;
- }
- mzChargeDetailList = mzChargeDetailService.getMzChargeDetails(mzChargeDetailList);
- List<Map<String, Object>> returnList = new ArrayList<>();
- Map<String, ZdUnitCode> unitCodeMap = new HashMap<>();
- List<MzBillItem> mzBillItems = mzBillItemService.queryMzBillItem();
- Map<String, String> mzBillItemMap = null;
- if (mzBillItems != null) {
- mzBillItemMap = mzBillItems.stream().collect(Collectors.toMap(MzBillItem::getCode, MzBillItem::getName));
- }
- for (MzChargeDetail mz : mzChargeDetailList) {
- if (Arrays.asList(Constants.TC, Constants.SSWRF).contains(mz.getBillItemCode())) {
- continue;
- }
- Map<String, Object> map = new HashMap<>();
- map.put("itemName", mz.getTcName());
- map.put("itemType", "");
- map.put("itemUnit", "");
- BigDecimal unitPrice = mz.getUnitPrice().setScale(1, BigDecimal.ROUND_HALF_UP);
- if (BigDecimal.ZERO.equals(unitPrice)) {
- unitPrice = BigDecimal.valueOf(0.01D);
- }
- unitPrice = unitPrice.multiply(BigDecimal.valueOf(100));
- map.put("itemPrice", unitPrice);
- map.put("itemSpec", "");
- BigDecimal quantity = mz.getQuantity() == null ? BigDecimal.ONE : BigDecimal.valueOf(mz.getQuantity());
- BigDecimal drugWin = mz.getDrugWin() == null ? BigDecimal.ONE : BigDecimal.valueOf(mz.getDrugWin());
- map.put("itemNumber", quantity.multiply(drugWin));
- map.put("itemTotalFee", unitPrice.multiply(quantity).multiply(drugWin));
- ZdUnitCode unitCode = unitCodeMap.get(mz.getExecDept());
- if (unitCode == null && StringUtils.isNotBlank(mz.getExecDept())) {
- unitCode = zdUnitCodeService.queryByCode(mz.getExecDept());
- unitCodeMap.put(mz.getExecDept(), unitCode);
- }
- if (mzBillItemMap != null) {
- map.put("itemType", mzBillItemMap.get(mz.getBillItemCode()));
- }
- map.put("execDeptName", unitCode == null ? "" : unitCode.getName());
- map.put("execDeptAddress", (unitCode == null || unitCode.getOfficePos() == null) ? "" : unitCode.getOfficePos());
- returnList.add(map);
- }
- results.put("resultCode", 0);
- results.put("resultMessage", "待缴费记录明细查询成功");
- results.put("data", returnList);
- return results;
- } catch (Exception e) {
- log.error(haiciCharge.toString());
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊待缴费记录明细查询失败,请联系管理员");
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- }
- }
- /**
- * 门诊缴费订单支付
- *
- * @param haiciCharge
- * @return
- */
- @RequestMapping(value = "/payChargeDetailFormHaiCi", method = {RequestMethod.POST})
- public Map<String, Object> payChargeDetailFormHaiCi(@RequestBody HaiciCharge haiciCharge) {
- Map<String, Object> results = new HashMap<>();
- if (haiciCharge == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊缴费订单支付参数为空");
- return results;
- }
- if (haiciCharge.getPatCardType() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者诊疗卡类型不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getPatCardNo())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "患者诊疗卡号不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getHisOrdNum())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "医院订单号不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getPsOrdNum())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "平台订单号不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getPayMode())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付方式不能为空");
- return results;
- }
- if (!Arrays.asList(WX, ZFB).contains(haiciCharge.getPayMode())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付方式有误,请联系管理员");
- return results;
- }
- if (haiciCharge.getPayAmt() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付金额不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getAgtOrdNum())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付机构流水号不能为空");
- return results;
- }
- if (haiciCharge.getPayTime() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付时间不能为空");
- return results;
- }
- try {
- MzDepositFile mzDepositFileDb = mzDepositFileService.queryMzDepositFileByAgtordnum(haiciCharge.getPsOrdNum(), haiciCharge.getAgtOrdNum());
- if (mzDepositFileDb != null && PayMarkEnum.CHARGED.code.equals(mzDepositFileDb.getPayMark())) {
- results.put("resultCode", 0);
- results.put("resultMessage", "缴费成功");
- results.put("guideListInfo", "");
- }
- String[] arr = haiciCharge.getHisOrdNum().split("_");
- MzDepositFileVo mzDepositFileVo = new MzDepositFileVo();
- mzDepositFileVo.setPatientId(arr[0]);
- mzDepositFileVo.setTimes(Integer.valueOf(arr[1]));
- mzDepositFileVo.setReceiptNo(Integer.valueOf(arr[2]));
- MzDepositFile mzDepositFile = new MzDepositFile();
- if (WX.equals(haiciCharge.getPayMode())) {
- mzDepositFile.setChequeType(Constants.ZZWX);
- } else {
- mzDepositFile.setChequeType(Constants.ZZZFB);
- }
- mzDepositFile.setPsordnum(haiciCharge.getPsOrdNum());
- mzDepositFile.setAgtordnum(haiciCharge.getAgtOrdNum());
- mzDepositFile.setAmount(haiciCharge.getPayAmt().divide(BigDecimal.valueOf(100)));
- mzDepositFileVo.setMzDepositFiles(Arrays.asList(mzDepositFile));
- mzChargeDetailService.chargeFee(Constants.BRZZJF_CODE, mzDepositFileVo);
- results.put("resultCode", 0);
- results.put("resultMessage", "缴费成功");
- results.put("guideListInfo", "");
- return results;
- } catch (Exception e) {
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊缴费订单支付失败,请联系管理员");
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- }
- }
- /**
- * 门诊缴费订单支付状态查询
- *
- * @param haiciCharge
- * @return
- */
- @RequestMapping(value = "/getPayStatus", method = {RequestMethod.POST})
- public Map<String, Object> getPayStatus(@RequestBody HaiciCharge haiciCharge) {
- Map<String, Object> results = new HashMap<>();
- if (haiciCharge == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊缴费订单支付状态查询参数为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getHisOrdNum())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "医院订单号不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getPsOrdNum())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "平台订单号不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getPayMode())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付方式不能为空");
- return results;
- }
- if (!Arrays.asList(WX, ZFB).contains(haiciCharge.getPayMode())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付方式有误,请联系管理员");
- return results;
- }
- if (haiciCharge.getPayAmt() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付金额不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getAgtOrdNum())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付机构流水号不能为空");
- return results;
- }
- if (haiciCharge.getPayTime() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付时间不能为空");
- return results;
- }
- try {
- MzDepositFile mzDepositFileDb = mzDepositFileService.queryMzDepositFileByAgtordnum(haiciCharge.getPsOrdNum(), haiciCharge.getAgtOrdNum());
- if (mzDepositFileDb != null && PayMarkEnum.CHARGED.code.equals(mzDepositFileDb.getPayMark())) {
- results.put("resultCode", 0);
- results.put("resultMessage", "门诊缴费订单支付状态查询成功");
- results.put("payStatus", "1");
- results.put("guideListInfo", "");
- results.put("receiptNum", "");
- return results;
- }
- results.put("resultCode", 0);
- results.put("resultMessage", "门诊缴费订单支付状态查询失败");
- results.put("payStatus", "2");
- results.put("guideListInfo", "");
- results.put("receiptNum", "");
- return results;
- } catch (Exception e) {
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊缴费订单支付状态查询失败,请联系管理员");
- results.put("payStatus", "2");
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- }
- }
- /**
- * 保存处方信息
- *
- * @param mzPrescriptionVo
- * @return
- */
- @RequestMapping(value = "/savePrescription", method = {RequestMethod.POST})
- public Map<String, Object> savePrescription(@RequestBody MzPrescriptionVo mzPrescriptionVo) {
- Map<String, Object> results = new HashMap<>();
- try {
- int num = mzChargeDetailService.savePrescription(mzPrescriptionVo);
- if (num == 1) {
- results.put("resultCode", 0);
- results.put("resultMessage", "门诊处方保存成功");
- return results;
- }
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊处方保存失败");
- return results;
- } catch (MzException e) {
- results.put("resultCode", -1);
- results.put("resultMessage", e.getMessage());
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- } catch (Exception e) {
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊处方保存失败,请联系管理员");
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- }
- }
- /**
- * 查询挂号科室分类
- *
- * @return
- */
- @RequestMapping(value = "/getMzClass", method = {RequestMethod.GET})
- public Map<String, Object> getMzClass() {
- Map<String, Object> results = new HashMap<>();
- List<ZdMzClass> zdMzClassList = zdMzClassService.queryAllZdMzClass();
- if (zdMzClassList == null || zdMzClassList.size() == 0) {
- results.put("resultCode", -1);
- results.put("resultMessage", "没有查询挂号科室分类");
- return results;
- }
- results.put("resultCode", 0);
- results.put("data", zdMzClassList);
- return results;
- }
- /**
- * 根据门诊科室分类码查询科室列表
- *
- * @return
- */
- @RequestMapping(value = "/getUnitCodeByMzClass", method = {RequestMethod.POST})
- public Map<String, Object> getUnitCodeByMzClass(@RequestBody ZdUnitCode zdUnitCode) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (zdUnitCode == null) {
- resultMap.put("resultCode", -1);
- resultMap.put("resultMessage", "查询科室列表失败,参数为空");
- return resultMap;
- }
- if (StringUtils.isBlank(zdUnitCode.getMzClass())) {
- resultMap.put("resultCode", -1);
- resultMap.put("resultMessage", "查询科室列表失败,门诊分类码为空");
- return resultMap;
- }
- ZdUnitCodePageDto zdUnitCodePageDto = new ZdUnitCodePageDto();
- zdUnitCode.setDelFlag(YesNoEnum.NO.code);
- zdUnitCode.setMzFlag(YesNoEnum.YES.code);
- zdUnitCode.setClassCode(YesNoEnum.YES.code);
- zdUnitCodePageDto.setOrderByCase("sort_code");
- zdUnitCodePageDto.setZdUnitCode(zdUnitCode);
- List<ZdUnitCode> zdUnitCodeList = zdUnitCodeService.queryZdUnitCode(zdUnitCodePageDto);
- if (zdUnitCodeList == null || zdUnitCodeList.size() == 0) {
- resultMap.put("code", -1);
- resultMap.put("message", "没有查询到符合条件的科室列表");
- return resultMap;
- }
- resultMap.put("resultCode", 0);
- resultMap.put("data", zdUnitCodeList);
- return resultMap;
- }catch (Exception e){
- log.error("系统异常,请联系管理员");
- resultMap.put("code", -1);
- resultMap.put("message", "没有查询到符合条件的科室列表");
- return resultMap;
- }
- }
- /**
- * 预约号源统计信息查询
- *
- * @return
- */
- @RequestMapping(value = "/getNumByDateAndDept", method = {RequestMethod.GET})
- public Map<String, Object> getNumByDateAndDept(@RequestParam("beginDate") String beginDate, @RequestParam("endDate") String endDate, @RequestParam("unitCode")String unitCode ) {
- Map<String, Object> results = new HashMap<>();
- try {
- if(StringUtils.isBlank(beginDate)){
- results.put("resultCode", -1);
- results.put("resultMessage", "开始时间不能为空");
- return results;
- }
- if(StringUtils.isBlank(endDate)){
- results.put("resultCode", -1);
- results.put("resultMessage", "结束时间不能为空");
- return results;
- }
- if(StringUtils.isBlank(unitCode)){
- results.put("resultCode", -1);
- results.put("resultMessage", "科室编码不能为空");
- return results;
- }
- Date beginDateD = DateUtil.pase(beginDate,"yyyy-MM-dd");
- Date endDateD = DateUtil.pase(endDate,"yyyy-MM-dd");
- List<Map<String,Object>> list=mzyRequestService.queryNumByDateAndDept(beginDateD,endDateD,unitCode);
- if (list == null || list.size() == 0) {
- results.put("resultCode", -1);
- results.put("resultMessage", "预约号源统计信息查询失败");
- return results;
- }
- Map<String, Map<String,Object>> tempMap= new HashMap<>();
- for(Map map :list){
- tempMap.put((String) map.get("scheduleDate"),map);
- }
- //获取时间区间内的日期集合
- List<Date> days = DateUtil.getBetweenDates(beginDateD, endDateD);
- List<Map<String,Object>> resultMap= new ArrayList<>();
- for (Date date : days){
- String key=DateUtil.fomart(date,"yyyy-MM-dd");
- Map<String,Object> item=tempMap.get(key);
- if(item==null){
- item=new HashMap<>();
- item.put("scheduleDate",key);
- item.put("status",2);
- }else {
- Integer leftNum=(Integer)item.get("leftNum");
- if(leftNum==null || leftNum<=0){
- item.put("status",2);
- item.remove("leftNum");
- item.remove("totalNum");
- }else {
- item.put("status",1);
- }
- }
- resultMap.add(item);
- }
- results.put("resultCode", 0);
- results.put("resultMessage", "预约号源统计信息查询成功");
- results.put("data", resultMap);
- return results;
- }catch (Exception e){
- results.put("resultCode", -1);
- results.put("resultMessage", "预约号源统计信息查询失败");
- return results;
- }
- }
- /**
- * 查询所有门诊医生信息
- *
- * @return
- */
- @RequestMapping(value = "/getAllMzDoctor", method = {RequestMethod.GET})
- public Map<String, Object> getAllMzDoctor() {
- Map<String, Object> results = new HashMap<>();
- try {
- List<ZdUnitCode> list=zdUnitCodeService.queryAllMzDeptFromDb();
- List<String> codes =list.stream().map(ZdUnitCode::getCode).collect(Collectors.toList());
- List<Employee> employees=employeeService.queryEmployeeByDepts(codes);
- if (employees == null || employees.size() == 0) {
- results.put("resultCode", -1);
- results.put("resultMessage", "没有医生信息");
- return results;
- }
- List<ZdEmpTitle> zdEmpTitles=zdEmpTitleService.queryZdEmpTitle();
- Map<String,String> titleMap =null;
- Map<String,String> zdUnitCodeMap =list.stream().collect(Collectors.toMap(ZdUnitCode::getCode, ZdUnitCode::getName));
- if(zdEmpTitles!=null && zdEmpTitles.size()>0){
- titleMap=zdEmpTitles.stream().collect(Collectors.toMap(ZdEmpTitle::getCode, ZdEmpTitle::getName));
- }
- for (Employee employee:employees){
- if(titleMap!=null){
- employee.setDoctorTitle(titleMap.get(employee.getEmpTitCode()));
- }
- employee.setDeptName(zdUnitCodeMap.get(employee.getDeptCode()));
- }
- results.put("resultCode", 0);
- results.put("resultMessage", "查询所有门诊医生信息成功");
- results.put("data", employees);
- return results;
- }catch (Exception e){
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "查询所有门诊医生信息失败");
- return results;
- }
- }
- /**
- * 查询可以挂号的科室内医生信息
- *
- * @return
- */
- @RequestMapping(value = "/getDoctorByDateAndDept", method = {RequestMethod.GET})
- public Map<String, Object> getDoctorByDateAndDept(@RequestParam("requestDay") String requestDay, @RequestParam("unitCode")String unitCode ) {
- Map<String, Object> results = new HashMap<>();
- try {
- if(StringUtils.isBlank(requestDay)){
- results.put("resultCode", -1);
- results.put("resultMessage", "预约挂号时间不能为空");
- return results;
- }
- if(StringUtils.isBlank(unitCode)){
- results.put("resultCode", -1);
- results.put("resultMessage", "科室编码不能为空");
- return results;
- }
- List<String> ampms=null;
- int flg = DateUtil.IsAfternoon(java.util.Calendar.getInstance().getTime().getHours());
- if (flg >= 0){
- ampms=Arrays.asList(Constants.AM);
- }
- MzZdWorkTime mzZdWorkTime=mzZdWorkTimeService.queryMzZdWorkTimeByCode(Constants.PM);
- SimpleDateFormat simpleDateFormat=new SimpleDateFormat("HH:mm");
- Date dateEndTime=simpleDateFormat.parse(mzZdWorkTime.getEndTime());
- long tsEndTime =dateEndTime.getTime();
- String realNowStr = simpleDateFormat.format(new Date());
- Date realHour = simpleDateFormat.parse(realNowStr);
- long realHourTs = realHour.getTime();
- if(realHourTs>tsEndTime){
- ampms=new ArrayList<>(ampms);
- ampms.add(Constants.PM);
- }
- Date requestDayD = DateUtil.pase(requestDay,"yyyy-MM-dd");
- Date toDay = DateUtil.pase(new Date(),"yyyy-MM-dd");
- if(requestDayD.before(toDay)){
- results.put("resultCode", -1);
- results.put("resultMessage", "预约挂号时间已过,无法挂号,请重新选择!");
- return results;
- }
- List<Map<String,Object>> list=mzyRequestService.queryDoctorByDateAndDept(requestDayD,ampms,unitCode);
- if (list == null || list.size() == 0) {
- results.put("resultCode", -1);
- results.put("resultMessage", "没有医生排班信息");
- return results;
- }
- List<Map<String,Object>> removeList = new ArrayList<>();
- for(Map map :list){
- BigDecimal fee = BigDecimal.ZERO;
- String chargeType= (String) map.get("chargeType");
- if(StringUtils.isNotBlank(chargeType)){
- MzyZdChargeType mzyZdChargeType=mzyZdChargeTypeService.queryByCode(chargeType);
- if(mzyZdChargeType!=null){
- map.put("chargeType",mzyZdChargeType.getName());
- if(mzyZdChargeType.getReqFee()==null){
- mzyZdChargeType.setReqFee(BigDecimal.ZERO);
- }
- if(mzyZdChargeType.getClinicFee()==null){
- mzyZdChargeType.setClinicFee(BigDecimal.ZERO);
- }
- if(mzyZdChargeType.getOthFee()==null){
- mzyZdChargeType.setOthFee(BigDecimal.ZERO);
- }
- fee=fee.add(mzyZdChargeType.getReqFee()).add(mzyZdChargeType.getClinicFee()).add(mzyZdChargeType.getOthFee());
- }
- }
- BigDecimal checkFee= (BigDecimal) map.get("checkFee");
- if(checkFee==null){
- checkFee=BigDecimal.ZERO;
- }
- fee=fee.add(checkFee);
- map.put("fee",fee);
- map.remove("checkFee");
- String doctorCode= (String) map.get("doctorCode");
- if(StringUtils.isBlank(doctorCode)){
- removeList.add(map);
- continue;
- }
- Employee employee= employeeService.queryByUserCode(doctorCode);
- if(employee==null){
- continue;
- }
- map.put("doctorName",employee.getEmployeeName());
- if(StringUtils.isNotBlank(employee.getEmpTitCode())){
- ZdEmpTitle zdEmpTitle=zdEmpTitleService.queryByCode(employee.getEmpTitCode());
- if(zdEmpTitle==null){
- continue;
- }
- map.put("doctorTitle",zdEmpTitle.getName());
- }
- }
- list.removeAll(removeList);
- results.put("resultCode", 0);
- results.put("resultMessage", "查询可以挂号的科室内医生信息成功");
- results.put("data", list);
- return results;
- }catch (Exception e){
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "查询可以挂号的科室内医生信息失败");
- return results;
- }
- }
- /**
- * 查询可以挂号的医生号源信息
- *
- * @return
- */
- @RequestMapping(value = "/getRequestByDateAndDeptAndDoctor", method = {RequestMethod.GET})
- public Map<String, Object> getRequestByDateAndDeptAndDoctor(@RequestParam("requestDay") String requestDay, @RequestParam("unitCode")String unitCode, @RequestParam("doctorCode")String doctorCode ) {
- Map<String, Object> results = new HashMap<>();
- try {
- if(StringUtils.isBlank(requestDay)){
- results.put("resultCode", -1);
- results.put("resultMessage", "预约挂号时间不能为空");
- return results;
- }
- if(StringUtils.isBlank(unitCode)){
- results.put("resultCode", -1);
- results.put("resultMessage", "科室编码不能为空");
- return results;
- }
- if(StringUtils.isBlank(doctorCode)){
- results.put("resultCode", -1);
- results.put("resultMessage", "医生编码不能为空");
- return results;
- }
- List<String> ampms=null;
- int flg = DateUtil.IsAfternoon(java.util.Calendar.getInstance().getTime().getHours());
- if (flg >= 0){
- ampms=Arrays.asList(Constants.AM);
- }
- MzZdWorkTime mzZdWorkTime=mzZdWorkTimeService.queryMzZdWorkTimeByCode(Constants.PM);
- SimpleDateFormat simpleDateFormat=new SimpleDateFormat("HH:mm");
- Date dateEndTime=simpleDateFormat.parse(mzZdWorkTime.getEndTime());
- long tsEndTime =dateEndTime.getTime();
- String realNowStr = simpleDateFormat.format(new Date());
- Date realHour = simpleDateFormat.parse(realNowStr);
- long realHourTs = realHour.getTime();
- if(realHourTs>tsEndTime){
- ampms=new ArrayList<>(ampms);
- ampms.add(Constants.PM);
- }
- Date requestDayD = DateUtil.pase(requestDay,"yyyy-MM-dd");
- Date toDay = DateUtil.pase(new Date(),"yyyy-MM-dd");
- if(requestDayD.before(toDay)){
- results.put("resultCode", -1);
- results.put("resultMessage", "预约挂号时间已过,无法挂号,请重新选择!");
- return results;
- }
- List<Map<String,Object>> list=mzyRequestService.queryRequestByDateAndDeptAndDoctor(requestDayD,ampms,unitCode,doctorCode);
- if (list == null || list.size() == 0) {
- results.put("resultCode", -1);
- results.put("resultMessage", "没有医生排班信息");
- return results;
- }
- for(Map map :list){
- BigDecimal fee = BigDecimal.ZERO;
- String chargeType= (String) map.get("chargeType");
- if(StringUtils.isNotBlank(chargeType)){
- MzyZdChargeType mzyZdChargeType=mzyZdChargeTypeService.queryByCode(chargeType);
- if(mzyZdChargeType!=null){
- map.put("chargeType",mzyZdChargeType.getName());
- if(mzyZdChargeType.getReqFee()==null){
- mzyZdChargeType.setReqFee(BigDecimal.ZERO);
- }
- if(mzyZdChargeType.getClinicFee()==null){
- mzyZdChargeType.setClinicFee(BigDecimal.ZERO);
- }
- if(mzyZdChargeType.getOthFee()==null){
- mzyZdChargeType.setOthFee(BigDecimal.ZERO);
- }
- fee=fee.add(mzyZdChargeType.getReqFee()).add(mzyZdChargeType.getClinicFee()).add(mzyZdChargeType.getOthFee());
- }
- }
- BigDecimal checkFee= (BigDecimal) map.get("checkFee");
- if(checkFee==null){
- checkFee=BigDecimal.ZERO;
- }
- fee=fee.add(checkFee);
- map.put("fee",fee);
- map.remove("checkFee");
- Employee employee= employeeService.queryByUserCode(doctorCode);
- if(employee!=null){
- map.put("doctorName",employee.getEmployeeName());
- if(StringUtils.isNotBlank(employee.getEmpTitCode())){
- ZdEmpTitle zdEmpTitle=zdEmpTitleService.queryByCode(employee.getEmpTitCode());
- if(zdEmpTitle!=null){
- map.put("doctorTitle",zdEmpTitle.getName());
- }
- }
- }
- String ampm = (String) map.get("ampm");
- if(Constants.AM.equals(ampm)){
- ampm="上午";
- }else if(Constants.PM.equals(ampm)){
- ampm="下午";
- }else if (Constants.DAY.equals(ampm)){
- ampm="全天";
- }
- map.put("ampm",ampm);
- }
- results.put("resultCode", 0);
- results.put("resultMessage", "查询可以挂号的医生号源信息成功");
- results.put("data", list);
- return results;
- }catch (Exception e){
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "查询可以挂号的医生号源信息失败");
- return results;
- }
- }
- /**
- * 门诊挂号支付
- * @return
- */
- @RequestMapping(value = "/payRegistrationFormHaiCi", method = {RequestMethod.POST})
- public Map<String, Object> payRegistrationFormHaiCi(@RequestBody MzyReqrecPageDto mzyReqrecPageDto) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if(mzyReqrecPageDto==null || mzyReqrecPageDto.getMzyReqrec()==null){
- resultMap.put("code", -1);
- resultMap.put("message", "挂号参数不能为空");
- return resultMap;
- }
- MzyReqrec mzyReqrec = mzyReqrecPageDto.getMzyReqrec();
- if(StringUtils.isBlank(mzyReqrec.getPatientId())){
- resultMap.put("code", -1);
- resultMap.put("message", "病人id不能为空");
- return resultMap;
- }
- if(StringUtils.isBlank(mzyReqrec.getPaymode())){
- resultMap.put("code", -1);
- resultMap.put("message", "付款方式不能为空");
- return resultMap;
- }
- if (!Arrays.asList(WX, ZFB).contains(mzyReqrec.getPaymode())) {
- resultMap.put("resultCode", -1);
- resultMap.put("resultMessage", "支付方式有误,请联系管理员");
- return resultMap;
- }
- if(StringUtils.isBlank(mzyReqrec.getAgtordnum())){
- resultMap.put("code", -1);
- resultMap.put("message", "流水号不能为空");
- return resultMap;
- }
- if(StringUtils.isBlank(mzyReqrec.getPsordnum())){
- resultMap.put("code", -1);
- resultMap.put("message", "订单号不能为空");
- return resultMap;
- }
- if(mzyReqrecPageDto.getMzyRequestId()==null){
- resultMap.put("code", -1);
- resultMap.put("message", "门诊号表主键不能为空");
- return resultMap;
- }
- mzyReqrecPageDto.setResponceType("01");
- MzyRequest mzyRequest= mzyRequestService.queryById(mzyReqrecPageDto.getMzyRequestId());
- if(mzyRequest==null){
- resultMap.put("code", -1);
- resultMap.put("message", "挂号信息对应的号表不存在");
- return resultMap;
- }
- mzyReqrec.setAmpm(mzyRequest.getAmpm());
- mzyReqrec.setUnitCode(mzyRequest.getUnitCode());
- mzyReqrec.setChargeType(mzyRequest.getChargeType());
- mzyReqrec.setDoctorCode(mzyRequest.getDoctorCode());
- MzZdWorkTime mzZdWorkTime=mzZdWorkTimeService.queryMzZdWorkTimeByCode(mzyReqrec.getAmpm());
- if(mzZdWorkTime==null){
- resultMap.put("code", -1);
- resultMap.put("message", "号段不存在");
- return resultMap;
- }
- mzyReqrec.setOpId(Constants.BRZZJF_CODE);
- int num =mzyReqrecService.saveMzyReqrec(mzyReqrecPageDto);
- if(num==0){
- resultMap.put("code", -1);
- resultMap.put("message", "挂号失败,请稍后重试!");
- return resultMap;
- }
- resultMap.put("code", 0);
- resultMap.put("message", "保存挂号信息成功");
- return resultMap;
- }catch (Exception e){
- e.printStackTrace();
- resultMap.put("code", -1);
- resultMap.put("message", StringUtils.isBlank(e.getMessage())?"挂号失败,系统出错,请联系管理员":e.getMessage());
- log.error("挂号失败,系统异常,错误信息{}",e.getMessage());
- return resultMap;
- }
- }
- /**
- * 门诊挂号订单支付状态查询
- *
- * @param haiciCharge
- * @return
- */
- @RequestMapping(value = "/getPayStatusForRegistration", method = {RequestMethod.POST})
- public Map<String, Object> getPayStatusForRegistration(@RequestBody HaiciCharge haiciCharge) {
- Map<String, Object> results = new HashMap<>();
- if (haiciCharge == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊挂号订单支付状态查询参数为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getPsOrdNum())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "平台订单号不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getPayMode())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付方式不能为空");
- return results;
- }
- if (!Arrays.asList(WX, ZFB).contains(haiciCharge.getPayMode())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付方式有误,请联系管理员");
- return results;
- }
- if (haiciCharge.getPayAmt() == null) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付金额不能为空");
- return results;
- }
- if (StringUtils.isBlank(haiciCharge.getAgtOrdNum())) {
- results.put("resultCode", -1);
- results.put("resultMessage", "支付机构流水号不能为空");
- return results;
- }
- // if (haiciCharge.getPayTime() == null) {
- // results.put("resultCode", -1);
- // results.put("resultMessage", "支付时间不能为空");
- // return results;
- // }
- try {
- MzyReqrec mzyReqrec = mzyReqrecService.queryMzyReqrecByAgtordnum(haiciCharge.getPsOrdNum(), haiciCharge.getAgtOrdNum());
- if (mzyReqrec != null) {
- results.put("resultCode", 0);
- results.put("resultMessage", "门诊挂号订单支付状态查询成功");
- results.put("payStatus", "1");
- results.put("guideListInfo", "");
- results.put("receiptNum", "");
- return results;
- }
- results.put("resultCode", 0);
- results.put("resultMessage", "门诊挂号订单支付状态查询失败");
- results.put("payStatus", "2");
- results.put("guideListInfo", "");
- results.put("receiptNum", "");
- return results;
- } catch (Exception e) {
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊挂号订单支付状态查询失败,请联系管理员");
- results.put("payStatus", "2");
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- }
- }
- /**
- * 查询门诊记录表 医患通已收费记录查询
- *
- * @return
- */
- @RequestMapping(value = "/listMzChargeDetail", method = {RequestMethod.POST})
- public Map<String, Object> listMzChargeDetail(@RequestBody MzChargeDetailPageDto mzChargeDetailPageDto) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (mzChargeDetailPageDto == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询门诊记录表参数不能为空");
- return resultMap;
- }
- if (mzChargeDetailPageDto.getBeginTime() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询门诊记录表开始时间参数不能为空");
- return resultMap;
- }
- if (mzChargeDetailPageDto.getEndTime() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询门诊记录表结束时间参数不能为空");
- return resultMap;
- }
- PageViewVo pageViewVo = new PageViewVo();
- MzChargeDetail mzChargeDetail = new MzChargeDetail();
- mzChargeDetail.setPayMark(PayMarkEnum.CHARGED.code);
- mzChargeDetailPageDto.setMzChargeDetail(mzChargeDetail);
- pageViewVo.setPageIndex(mzChargeDetailPageDto.getPageIndex());
- pageViewVo.setTotal(mzChargeDetailService.countMzChargeDetail(mzChargeDetailPageDto));
- mzChargeDetailPageDto.setPageSize(pageViewVo.getTotal());
- List<MzChargeDetail> mzChargeDetails = mzChargeDetailService.queryMzChargeDetailWithPage(mzChargeDetailPageDto);
- List<SfjkMzbrxxVo> resultList = new ArrayList<>();
- if (mzChargeDetails != null && mzChargeDetails.size() > 0) {
- List<String> doctorCodes = mzChargeDetails.stream().filter(u -> StringUtils.isNotBlank(u.getDoctorCode())).map(u -> u.getDoctorCode()).collect(Collectors.toList());
- Map<String, String> employeeMap = null;
- List<Employee> employees = employeeService.queryByCodes(doctorCodes);
- if (employees != null) {
- employeeMap = employees.stream().collect(Collectors.toMap(Employee::getEmployeeCode, Employee::getEmployeeName));
- }
- for (MzChargeDetail mz : mzChargeDetails) {
- if (mz != null) {
- MzPatientMi mzPatientMi = mzPatientMiService.queryByPatientId(mz.getPatientId());
- SfjkMzbrxxVo sfjkMzbrxxVo = new SfjkMzbrxxVo();
- sfjkMzbrxxVo.setBrbh(mz.getPatientId());
- sfjkMzbrxxVo.setDjh(mz.getPatientId() + "_" + mz.getTimes() + "_" + mz.getReceiptNo());
- sfjkMzbrxxVo.setMzbh(mz.getRealNo().toString());
- sfjkMzbrxxVo.setBrxm(mz.getName());
- if (mzPatientMi != null) {
- sfjkMzbrxxVo.setBrxb(mzPatientMi.getSex());
- sfjkMzbrxxVo.setBrxm(mzPatientMi.getName());
- sfjkMzbrxxVo.setCsrq(mzPatientMi.getBirthDay());
- sfjkMzbrxxVo.setSfzh(mzPatientMi.getSocialNo());
- sfjkMzbrxxVo.setXzdz(mzPatientMi.getAddress());
- sfjkMzbrxxVo.setSjhm(mzPatientMi.getPhoneNo());
- sfjkMzbrxxVo.setLxdh(mzPatientMi.getPhoneNo());
- }
- sfjkMzbrxxVo.setMzrq(mz.getChargeDate());
- sfjkMzbrxxVo.setMzks(mz.getWarnDept());
- sfjkMzbrxxVo.setYsbh(mz.getDoctorCode());
- if (employeeMap != null) {
- String doctorCode = employeeMap.get(mz.getDoctorCode());
- sfjkMzbrxxVo.setMzys(doctorCode == null ? "" : doctorCode);
- }
- if (mz.getAmount() != null) {
- sfjkMzbrxxVo.setZfy(mz.getAmount().setScale(1, BigDecimal.ROUND_HALF_UP));
- }
- sfjkMzbrxxVo.setYblx("01");
- sfjkMzbrxxVo.setYbfy(BigDecimal.ZERO);
- MzVisitTable mzVisitTable = mzVisitTableService.queryByPatientIdAndTimes(mz.getPatientId(), mz.getTimes());
- if (mzVisitTable != null) {
- sfjkMzbrxxVo.setIcd(mzVisitTable.getIcdCode());
- sfjkMzbrxxVo.setMzzd(mzVisitTable.getIcdText());
- sfjkMzbrxxVo.setBrzz(mzVisitTable.getIcdText());
- }
- resultList.add(sfjkMzbrxxVo);
- }
- }
- }
- resultMap.put("code", 0);
- resultMap.put("message", "查询门诊记录表成功");
- resultMap.put("pageViewVo", resultList);
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- resultMap.put("code", -1);
- resultMap.put("message", "查询门诊记录表失败,系统出错,请联系管理员");
- log.error("查询门诊记录表失败,系统异常,错误信息{}", e.getMessage());
- return resultMap;
- }
- }
- /**
- * 门诊已缴费记录明细查询 医患通已收费记录查询
- *
- * @param djh 门诊号
- * @return
- */
- @RequestMapping(value = "/getSfjkMzbrmx", method = {RequestMethod.GET})
- public Map<String, Object> getSfjkMzbrmx(@RequestParam("djh") String djh) {
- Map<String, Object> results = new HashMap<>();
- if (StringUtils.isBlank(djh)) {
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊已缴费记录明细查询参数为空");
- return results;
- }
- try {
- String[] arr = djh.split("_");
- MzChargeDetail mzChargeDetail = new MzChargeDetail(arr[0], Integer.valueOf(arr[1]));
- mzChargeDetail.setReceiptNo(Integer.valueOf(arr[2]));
- List<MzChargeDetail> mzChargeDetailList = mzChargeDetailService.queryMzChargeDetailByBillItemCode(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(), mzChargeDetail.getReceiptNo(), PayMarkEnum.CHARGED.code, "2", Arrays.asList("TC"));
- if (mzChargeDetailList == null || mzChargeDetailList.size() == 0) {
- results.put("resultCode", -1);
- results.put("resultMessage", "未查询到待缴费明细记录");
- return results;
- }
- List<SfjkMzbrmxVo> returnList = new ArrayList<>();
- for (MzChargeDetail mz : mzChargeDetailList) {
- SfjkMzbrmxVo sfjkMzbrmxVo = new SfjkMzbrmxVo();
- sfjkMzbrmxVo.setMzbh(djh);
- sfjkMzbrmxVo.setXmmc(mz.getTcName());
- if (StringUtils.isNotBlank(mz.getSupplyCode())) {
- MzZdSupplyType mzZdSupplyType = zdSupplyTypeService.selectMzZdSupplyTypeByCode(mz.getSupplyCode());
- if (mzZdSupplyType != null) {
- sfjkMzbrmxVo.setYpyf(mzZdSupplyType.getSupplyName());
- }
- }
- sfjkMzbrmxVo.setJcjg("");
- BigDecimal zsl = BigDecimal.ZERO;
- if (mz.getDrugWin() != null) {
- zsl = BigDecimal.valueOf(mz.getDrugWin());
- }
- if (mz.getQuantity() == null) {
- zsl = BigDecimal.ZERO;
- } else {
- zsl = zsl.multiply(BigDecimal.valueOf(mz.getQuantity()));
- }
- sfjkMzbrmxVo.setZsl(zsl.toString());
- if (mz.getUnitPrice() == null) {
- sfjkMzbrmxVo.setZfy(BigDecimal.ZERO);
- } else {
- sfjkMzbrmxVo.setZfy(zsl.multiply(mz.getUnitPrice()));
- }
- returnList.add(sfjkMzbrmxVo);
- }
- results.put("resultCode", 0);
- results.put("resultMessage", "已缴费记录明细查询成功");
- results.put("data", returnList);
- return results;
- } catch (Exception e) {
- e.printStackTrace();
- results.put("resultCode", -1);
- results.put("resultMessage", "门诊已缴费记录明细查询失败,请联系管理员");
- log.error("系统异常,错误信息{}", e.getMessage());
- return results;
- }
- }
- }
|