123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755 |
- package cn.hnthyy.thmz.controller.mz;
- import cn.hnthyy.thmz.Utils.*;
- import cn.hnthyy.thmz.comment.UserLoginToken;
- import cn.hnthyy.thmz.common.Constants;
- import cn.hnthyy.thmz.entity.MzException;
- import cn.hnthyy.thmz.entity.his.mz.*;
- import cn.hnthyy.thmz.entity.his.zd.ZdChequeType;
- import cn.hnthyy.thmz.entity.his.zy.ZyZdAuditItem;
- import cn.hnthyy.thmz.entity.thmz.FileUpload;
- import cn.hnthyy.thmz.entity.thmz.Mzmxsr;
- import cn.hnthyy.thmz.entity.thmz.User;
- import cn.hnthyy.thmz.enums.FileTypeEnum;
- import cn.hnthyy.thmz.enums.PayMarkEnum;
- import cn.hnthyy.thmz.enums.YesNoEnum;
- import cn.hnthyy.thmz.service.his.RegionService;
- import cn.hnthyy.thmz.service.his.mz.*;
- import cn.hnthyy.thmz.service.his.zd.ZdChequeTypeService;
- import cn.hnthyy.thmz.service.his.zd.ZdUnitCodeService;
- import cn.hnthyy.thmz.service.his.zy.ZyZdAuditItemService;
- import cn.hnthyy.thmz.service.thmz.ClinicService;
- import cn.hnthyy.thmz.service.thmz.FileUploadService;
- import cn.hnthyy.thmz.service.thmz.MzmxsrService;
- import cn.hnthyy.thmz.service.thmz.UserService;
- import cn.hnthyy.thmz.vo.*;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.commons.lang3.time.DateUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.text.ParseException;
- import java.util.*;
- import java.util.stream.Collectors;
- @Slf4j
- @RestController
- public class ChargeFeeVoController {
- @Autowired
- private ChargeFeeVoService chargeFeeVoService;
- @Autowired
- private ZdUnitCodeService zdUnitCodeService;
- @Autowired
- private MzyZdChargeTypeService mzyZdChargeTypeService;
- @Autowired
- private ZdChequeTypeService zdChequeTypeService;
- @Autowired
- private EmployeeService employeeService;
- @Autowired
- private UserService userService;
- @Autowired
- private MzBillItemService mzBillItemService;
- @Autowired
- private MzPatientMiService mzPatientMiService;
- @Autowired
- private MzmxsrService mzmxsrService;
- @Autowired
- private MzReceiptSerialService mzReceiptSerialService;
- @Autowired
- private FileUploadService fileUploadService;
- @Autowired
- private MzZyReqService mzZyReqService;
- @Autowired
- private MzZdCommonService mzZdCommonService;
- @Autowired
- private ZyZdAuditItemService zyZdAuditItemService;
- @Autowired
- private RegionService regionService;
- @Autowired
- private ClinicService clinicService;
- /**
- * 查询日结列表收费清单 未结账
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getChargeFeeVoUnAccount", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getChargeFeeVoUnAccount(HttpServletRequest httpServletRequest) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- User tokenUser = TokenUtil.getUser(httpServletRequest);
- resultMap.put("code", 0);
- resultMap.put("message", "查询日结列表收费清单成功");
- List<ChargeFeeVo> chargeFeeVos = chargeFeeVoService.queryChargeFeeVoUnAccount(tokenUser.getUserIdCode());
- fomartChargeVo(chargeFeeVos, YesNoEnum.NO,YesNoEnum.YES);
- resultMap.put("data", chargeFeeVos);
- return resultMap;
- } catch (MzException e) {
- log.error("查询日结列表收费清单失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询日结列表收费清单失败");
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("查询日结列表收费清单失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询日结列表收费清单失败");
- return resultMap;
- }
- }
- /**
- *
- * @param chargeFeeVos
- * @param fitEmpName 是否设置医生名称
- * @param fitPatientInfo 是否设置患者信息
- */
- private void fomartChargeVo(List<ChargeFeeVo> chargeFeeVos, YesNoEnum fitEmpName,YesNoEnum fitPatientInfo) {
- if (chargeFeeVos != null && chargeFeeVos.size() > 0) {
- List<ZdChequeType> chequeTypes = zdChequeTypeService.queryAllZdChequeType();
- Map<String, String> employeeMap = null;
- if (YesNoEnum.YES.equals(fitEmpName)) {
- Set<String> opIds = chargeFeeVos.stream().filter(u -> StringUtils.isNotBlank(u.getOpId())).map(u -> u.getOpId()).collect(Collectors.toSet());
- if (opIds != null) {
- List<Employee> employees = employeeService.queryByCodes(new ArrayList<>(opIds));
- if (employees != null) {
- employeeMap = employees.stream().collect(Collectors.toMap(Employee::getEmployeeCode, Employee::getEmployeeName));
- }
- }
- }
- Map<String, String> chequeTypeMap = chequeTypes.stream().collect(Collectors.toMap(ZdChequeType::getCode, ZdChequeType::getName));
- Map<String, String> regionMap=null;
- StringBuffer sbf =null;
- Map<String, MzPatientMi> mzPatientMiMap = null;
- if(YesNoEnum.YES.equals(fitPatientInfo)){
- regionMap = regionService.queryAll().stream().collect(Collectors.toMap(CodeNameEntity::getCode, CodeNameEntity::getName));
- sbf = new StringBuffer();
- Set<String> patientIdSet= chargeFeeVos.stream().map(ChargeFeeVo::getPatientId).collect(Collectors.toSet());
- List<String> patientIds = new ArrayList<>(patientIdSet);
- List<MzPatientMi> mzPatientMis=mzPatientMiService.queryByPatientIds(patientIds);
- if (mzPatientMis != null) {
- mzPatientMiMap = mzPatientMis.stream().collect(Collectors.toMap(MzPatientMi::getPatientId, mzPatientMi -> mzPatientMi));
- }
- }
- for (ChargeFeeVo co : chargeFeeVos) {
- PayMarkEnum payMark = PayMarkEnum.getPayMarkByCode(co.getPayMark());
- co.setPayMark(payMark == null ? co.getPayMark() : payMark.name);
- if (Constants.BRZZJF_CODE.equalsIgnoreCase(co.getOpId())) {
- if (Constants.WX.equalsIgnoreCase(co.getChequeType()) || Constants.BYJZ.equalsIgnoreCase(co.getChequeType())) {
- co.setChequeType(Constants.ZZWX);
- } else if (Constants.ZFB.equalsIgnoreCase(co.getChequeType())) {
- co.setChequeType(Constants.ZZZFB);
- }
- }
- co.setChequeType(chequeTypeMap.get(co.getChequeType()));
- if (YesNoEnum.YES.equals(fitEmpName)) {
- co.setOpId(employeeMap.get(co.getOpId()));
- }
- if (mzPatientMiMap != null) {
- MzPatientMi mzPatientMi = mzPatientMiMap.get(co.getPatientId());
- if(mzPatientMi==null){
- continue;
- }
- mzPatientMi.setFullAddress(regionMap,sbf);
- co.setAddress(mzPatientMi.getAddress());
- co.setPatientName(mzPatientMi.getName());
- }
- }
- }
- }
- // private User getUser(HttpServletRequest httpServletRequest) throws MzException {
- // String token = TokenUtil.getToken(httpServletRequest);
- // if (StringUtils.isBlank(token)) {
- // throw new MzException("业务处理失败,用户Token不存在");
- // }
- // DecodedJWT decodedJWT = TokenUtil.parseJWT(token);
- // return (User) JsonUtil.jsontoObject(decodedJWT.getSubject(), User.class);
- // }
- /**
- * 日结汇总的收费清单
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getChargeFeeVoCollect", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getChargeFeeVoCollect(@RequestBody ChargeFeeParamsVo chargeFeeParamsVo) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (chargeFeeParamsVo == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "日结汇总的收费清单失败,参数为空");
- return resultMap;
- }
- if (chargeFeeParamsVo.getBeginDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "日结汇总的收费清单失败,开始时间为空");
- return resultMap;
- }
- if (chargeFeeParamsVo.getEndDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "日结汇总的收费清单失败,结束时间为空");
- return resultMap;
- }
- // if (chargeFeeParamsVo.getHisData() == null) {
- // chargeFeeParamsVo.setHisData(YesNoEnum.NO);
- // }
- if (StringUtils.isBlank(chargeFeeParamsVo.getCaseType())) {
- chargeFeeParamsVo.setCaseType(YesNoEnum.NO.code.toString());
- }
- resultMap.put("code", 0);
- resultMap.put("message", "日结汇总的收费清单成功");
- List<ChargeFeeVo> chargeFeeVos = chargeFeeVoService.queryChargeFeeVoCollect(chargeFeeParamsVo.getCaseType(), chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate());
- fomartChargeVo(chargeFeeVos, YesNoEnum.YES,YesNoEnum.YES);
- resultMap.put("data", chargeFeeVos);
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("日结汇总的收费清单失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "日结汇总的收费清单失败");
- return resultMap;
- }
- }
- /**
- * 重打结算单的收费清单
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getChargeFeeVoReprint", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getChargeFeeVoReprint(@RequestBody ChargeFeeParamsVo chargeFeeParamsVo) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (chargeFeeParamsVo == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "重打结算单的收费清单失败,参数为空");
- return resultMap;
- }
- if (StringUtils.isBlank(chargeFeeParamsVo.getCaseType())) {
- chargeFeeParamsVo.setCaseType(YesNoEnum.NO.code.toString());
- }
- if (chargeFeeParamsVo.getDcountDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "重打结算单的收费清单失败,结算时间为空");
- return resultMap;
- }
- resultMap.put("code", 0);
- resultMap.put("message", "重打结算单的收费清单成功");
- List<ChargeFeeVo> chargeFeeVos = chargeFeeVoService.queryChargeFeeVoReprint(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getCaseType(), chargeFeeParamsVo.getDcountDate());
- fomartChargeVo(chargeFeeVos, YesNoEnum.NO,YesNoEnum.YES);
- resultMap.put("data", chargeFeeVos);
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("重打结算单的收费清单失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "重打结算单的收费清单失败");
- return resultMap;
- }
- }
- /**
- * 日结列表的挂号清单 未结账
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getReqrecVoUnAccount", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getReqrecVoUnAccount(HttpServletRequest httpServletRequest) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- User tokenUser = TokenUtil.getUser(httpServletRequest);
- resultMap.put("code", 0);
- resultMap.put("message", "查询日结列表的挂号清单成功");
- List<ReqrecVo> reqrecVos = chargeFeeVoService.queryReqrecVoUnAccount(tokenUser.getUserIdCode());
- frmartReQrecVo(reqrecVos, YesNoEnum.NO);
- resultMap.put("data", reqrecVos);
- return resultMap;
- } catch (MzException e) {
- log.error("查询日结列表的挂号清单失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询日结列表的挂号清单失败");
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("查询日结列表的挂号清单失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询日结列表的挂号清单失败");
- return resultMap;
- }
- }
- private void frmartReQrecVo(List<ReqrecVo> reqrecVos, YesNoEnum fitEmpName) {
- if (reqrecVos != null && reqrecVos.size() > 0) {
- List<MzyZdChargeType> mzyZdChargeTypes = mzyZdChargeTypeService.queryAllMzyZdChargeType();
- Map<String, String> chargeTypeMap = mzyZdChargeTypes.stream().collect(Collectors.toMap(MzyZdChargeType::getCode, MzyZdChargeType::getName));
- Map<String, String> employeeMap = null;
- if (YesNoEnum.YES.equals(fitEmpName)) {
- Set<String> opIds = reqrecVos.stream().filter(u -> StringUtils.isNotBlank(u.getOpId())).map(u -> u.getOpId()).collect(Collectors.toSet());
- if (opIds != null) {
- List<Employee> employees = employeeService.queryByCodes(new ArrayList<>(opIds));
- if (employees != null) {
- employeeMap = employees.stream().collect(Collectors.toMap(Employee::getEmployeeCode, Employee::getEmployeeName));
- }
- }
- }
- List<ZdChequeType> chequeTypes = zdChequeTypeService.queryAllZdChequeType();
- Map<String, String> chequeTypeMap = chequeTypes.stream().collect(Collectors.toMap(ZdChequeType::getCode, ZdChequeType::getName));
- for (ReqrecVo ro : reqrecVos) {
- ro.setUnitCode(zdUnitCodeService.queryDeptNameByIdInCache(ro.getUnitCode()));
- ro.setChargeType(chargeTypeMap.get(ro.getChargeType()));
- ro.setCancelMark(YesNoEnum.YES.code.equals(ro.getCancelMark()) ? "退费" : "正常");
- if (YesNoEnum.YES.equals(fitEmpName)) {
- ro.setOpId(employeeMap.get(ro.getOpId()));
- }
- if (Constants.BRZZJF_CODE.equalsIgnoreCase(ro.getOpId())) {
- if (Constants.WX.equalsIgnoreCase(ro.getPaymode()) || Constants.BYJZ.equalsIgnoreCase(ro.getPaymode())) {
- ro.setPaymode(Constants.ZZWX);
- } else if (Constants.ZFB.equalsIgnoreCase(ro.getPaymode())) {
- ro.setPaymode(Constants.ZZZFB);
- }
- }
- ro.setPaymode(chequeTypeMap.get(ro.getPaymode()));
- }
- }
- }
- /**
- * 重打日结列表的挂号清单 已结账
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getReqrecVoReprint", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getReqrecVoReprint(@RequestBody ChargeFeeParamsVo chargeFeeParamsVo) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (chargeFeeParamsVo == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询重打日结列表的挂号清单失败,参数为空");
- return resultMap;
- }
- if (StringUtils.isBlank(chargeFeeParamsVo.getCaseType())) {
- chargeFeeParamsVo.setCaseType(YesNoEnum.NO.code.toString());
- }
- if (chargeFeeParamsVo.getDcountDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询重打日结列表的挂号清单失败,结算时间为空");
- return resultMap;
- }
- resultMap.put("code", 0);
- resultMap.put("message", "查询重打日结列表的挂号清单成功");
- List<ReqrecVo> reqrecVos = chargeFeeVoService.queryReqrecVoReprint(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getCaseType(), chargeFeeParamsVo.getDcountDate());
- frmartReQrecVo(reqrecVos, YesNoEnum.NO);
- resultMap.put("data", reqrecVos);
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("查询重打日结列表的挂号清单失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询重打日结列表的挂号清单失败");
- return resultMap;
- }
- }
- /**
- * 费用汇总挂号清单
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getReqrecVoCollect", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getReqrecVoCollect(@RequestBody ChargeFeeParamsVo chargeFeeParamsVo) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (chargeFeeParamsVo == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询费用汇总挂号清单失败,参数为空");
- return resultMap;
- }
- if (chargeFeeParamsVo.getBeginDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询费用汇总挂号清单失败,开始时间为空");
- return resultMap;
- }
- if (chargeFeeParamsVo.getEndDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询费用汇总挂号清单失败,结束时间为空");
- return resultMap;
- }
- // if (chargeFeeParamsVo.getHisData() == null) {
- // chargeFeeParamsVo.setHisData(YesNoEnum.NO);
- // }
- if (StringUtils.isBlank(chargeFeeParamsVo.getCaseType())) {
- chargeFeeParamsVo.setCaseType(YesNoEnum.NO.code.toString());
- }
- resultMap.put("code", 0);
- resultMap.put("message", "查询费用汇总挂号清单成功");
- List<ReqrecVo> reqrecVos = chargeFeeVoService.queryReqrecVoCollect(chargeFeeParamsVo.getCaseType(), chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate());
- frmartReQrecVo(reqrecVos, YesNoEnum.YES);
- resultMap.put("data", reqrecVos);
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("查询费用汇总挂号清单失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询费用汇总挂号清单失败");
- return resultMap;
- }
- }
- /**
- * 收费与挂号列表导出
- *
- * @param opId 报表归属人id
- * @param type 类型 1 重打日结收费列表 2 重打日结挂号列表 3 费用汇总收费列表 4 费用汇总挂号列表
- * @param dcountDate 第一个日期
- * @param dcountDate2 第二个日期
- * @param request
- * @param response
- * @return
- */
- @RequestMapping(value = "/excelChargeFeeVoReprint", method = {RequestMethod.GET})
- public Map<String, Object> excelChargeFeeVoReprint(@RequestParam("opId") String opId, @RequestParam("type") Integer type, @RequestParam("dcountDate") String dcountDate, @RequestParam("dcountDate2") String dcountDate2, HttpServletRequest request, HttpServletResponse response) {
- if (type == 1 || type == 2) {
- if (StringUtils.isBlank(opId) || StringUtils.isBlank(dcountDate)) {
- return null;
- }
- Date dcountDateD = null;
- try {
- dcountDateD = DateUtils.parseDate(dcountDate, "yyyy-MM-dd HH:mm:ss:SSS");
- } catch (ParseException e) {
- log.error("开始时间转换错误:{}", e);
- return null;
- }
- //重打日结收费清单
- if (type == 1) {
- List<ChargeFeeVo> chargeFeeVos = chargeFeeVoService.queryChargeFeeVoReprint(opId, YesNoEnum.NO.code.toString(), dcountDateD);
- fomartChargeVo(chargeFeeVos, YesNoEnum.NO,YesNoEnum.YES);
- ExcelUtil.exportExcelForChargeDetail(request, response, chargeFeeVos);
- return null;
- }
- //重打日结挂号清单
- List<ReqrecVo> reqrecVos = chargeFeeVoService.queryReqrecVoReprint(opId, YesNoEnum.NO.code.toString(), dcountDateD);
- frmartReQrecVo(reqrecVos, YesNoEnum.NO);
- ExcelUtil.exportExcelForReqrec(request, response, reqrecVos);
- return null;
- } else if (type == 3 || type == 4) {
- Date dcountDateD = null;
- try {
- dcountDateD = DateUtils.parseDate(dcountDate, "yyyy-MM-dd HH:mm:ss");
- } catch (ParseException e) {
- log.error("开始时间转换错误:{}", e);
- return null;
- }
- Date dcountDate2D = null;
- try {
- dcountDate2D = DateUtils.parseDate(dcountDate2, "yyyy-MM-dd HH:mm:ss");
- } catch (ParseException e) {
- log.error("开始时间转换错误:{}", e);
- return null;
- }
- if (type == 3) {
- List<ChargeFeeVo> chargeFeeVos = chargeFeeVoService.queryChargeFeeVoCollect(YesNoEnum.NO.code.toString(), dcountDateD, dcountDate2D);
- fomartChargeVo(chargeFeeVos, YesNoEnum.YES,YesNoEnum.YES);
- ExcelUtil.exportExcelForChargeDetail(request, response, chargeFeeVos);
- return null;
- }
- List<ReqrecVo> reqrecVos = chargeFeeVoService.queryReqrecVoCollect(YesNoEnum.NO.code.toString(), dcountDateD, dcountDate2D);
- frmartReQrecVo(reqrecVos, YesNoEnum.YES);
- ExcelUtil.exportExcelForReqrec(request, response, reqrecVos);
- return null;
- }
- return null;
- }
- /**
- * 费用日结报表
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getFullChargeUnAccount", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getFullChargeUnAccount(HttpServletRequest httpServletRequest) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- User tokenUser = TokenUtil.getUser(httpServletRequest);
- // //数据清洗,将已经做了日结的发票数据清洗,
- // chargeFeeVoService.setPayId();
- //挂号收入构成表格数据
- ReqrecVo reqrecVo = chargeFeeVoService.queryMzReceiptSerialCount(tokenUser.getUserIdCode(), null, null, null).get(0);
- reqrecVo.fomartReqrecVo();
- resultMap.put("ghsrgcmx", reqrecVo);
- MzReceiptSerial mzReceiptSerial = chargeFeeVoService.queryMzReceiptSerial(tokenUser.getUserIdCode(), null, null, null).get(0);
- mzReceiptSerial.setGhf(reqrecVo.getHjss());
- resultMap.put("mzReceiptSerial", mzReceiptSerial);
- ChargeCountVo chargeCountVo = chargeFeeVoService.queryChargeCountVo(tokenUser.getUserIdCode(), null, null, null).get(0);
- chargeCountVo.fomartChargeCountVo();
- resultMap.put("chargeCountVo", chargeCountVo);
- //收费所用票号
- List<ReceiptBillVo> sfReceipts = chargeFeeVoService.querySfReceiptBillVoUnAccount(tokenUser.getUserIdCode());
- //挂号所用票号
- List<ReceiptBillVo> ghReceipts = chargeFeeVoService.queryGhReceiptBillVoUnAccount(tokenUser.getUserIdCode());
- sfReceipts.addAll(ghReceipts);
- List<ReceiptBillVo> notFpList = new ArrayList<>();
- sfReceipts.forEach(s -> {
- if (s.getReceiptBill() != null && s.getReceiptBill().length() != 8) {
- s.setReceiptBill(null);
- }
- if (s.getReceiptBill() == null || "00000000".equals(s.getReceiptBill())) {
- notFpList.add(s);
- }
- });
- sfReceipts.removeAll(notFpList);
- Collections.sort(sfReceipts); // 按发票号排序
- List<String> receiptBills = getStrings(sfReceipts);
- resultMap.put("receiptBills", receiptBills);
- Integer sffps = chargeFeeVoService.countReceipt(tokenUser.getUserIdCode(), PayMarkEnum.CHARGED.code, null);
- Integer tpzs = chargeFeeVoService.countReceipt(tokenUser.getUserIdCode(), PayMarkEnum.RETURN_PREMIUM.code, null);
- Integer zffps = chargeFeeVoService.countReceipt(tokenUser.getUserIdCode(), PayMarkEnum.CANCELLATION.code, null);
- Integer ghfps = chargeFeeVoService.countReqrecReceipt(tokenUser.getUserIdCode(), YesNoEnum.NO.code.toString(), null, null, null);
- Integer ghtpzs = chargeFeeVoService.countReqrecReceipt(tokenUser.getUserIdCode(), YesNoEnum.YES.code.toString(), null, null, null);
- //收费发票总数
- resultMap.put("sffps", sffps + ghfps);
- //退费发票张数
- resultMap.put("tpzs", tpzs + ghtpzs);
- //作废收费发票张数
- resultMap.put("zffps", zffps);
- //收费作废发票明细
- List<ReceiptVo> sfzffpmx = chargeFeeVoService.queryReceiptVo(tokenUser.getUserIdCode(), null);
- //退号发票明细
- List<ReceiptVo> thzffpmx = chargeFeeVoService.queryThMzReceiptSerial(tokenUser.getUserIdCode(), null);
- sfzffpmx.addAll(thzffpmx);
- List<ReceiptVo> notFpGhList = new ArrayList<>();
- sfzffpmx.forEach(s -> {
- if (s.getReceiptBill() != null && s.getReceiptBill().length() != 8) {
- s.setReceiptBill(null);
- }
- if (s.getReceiptBill() == null || "00000000".equals(s.getReceiptBill())) {
- notFpGhList.add(s);
- }
- });
- sfzffpmx.removeAll(notFpGhList);
- Collections.sort(sfzffpmx); // 按发票号排序
- resultMap.put("zffpmx", sfzffpmx);
- resultMap.put("zizhufpmx", chargeFeeVoService.queryZiZhuReceiptVo(tokenUser.getUserIdCode(), null));
- //医保记账明细
- resultMap.put("ybjzmx", chargeFeeVoService.queryMxByChequeType(tokenUser.getUserIdCode(), null,YesNoEnum.YES.code.toString()));
- //个人账户明细
- resultMap.put("grzhmx", chargeFeeVoService.queryMxByChequeType(tokenUser.getUserIdCode(), null,YesNoEnum.NO.code.toString()));
- //门诊补录明细
- resultMap.put("mztcblmx", chargeFeeVoService.queryMxByChequeNo(tokenUser.getUserIdCode(), null));
- resultMap.put("user", tokenUser);
- resultMap.put("code", 0);
- resultMap.put("message", "查询费用日结报表成功");
- return resultMap;
- } catch (MzException e) {
- log.error("查询费用日结报表失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询费用日结报表失败");
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("查询费用日结报表失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询费用日结报表失败");
- return resultMap;
- }
- }
- /**
- * 重打费用日结报表
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getFullChargeReprint", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getFullChargeReprint(@RequestBody ChargeFeeParamsVo chargeFeeParamsVo) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (chargeFeeParamsVo == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询重打费用日结报表失败,参数为空");
- return resultMap;
- }
- if (StringUtils.isBlank(chargeFeeParamsVo.getCaseType())) {
- chargeFeeParamsVo.setCaseType(YesNoEnum.NO.code.toString());
- }
- if (chargeFeeParamsVo.getDcountDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询重打费用日结报表失败,结算时间为空");
- return resultMap;
- }
- //数据清洗,将在老系统日结的数据清洗一次
- // chargeFeeVoService.refeshPayManData(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getDcountDate());
- //门诊部日结没有设置收费人id ,需要清洗
- chargeFeeVoService.modifyMzService();
- User tokenUser = userService.queryUserByUserIdCode(chargeFeeParamsVo.getOpId());
- resultMap.put("user", tokenUser);
- //挂号收入构成表格数据
- ReqrecVo reqrecVo = chargeFeeVoService.queryMzReceiptSerialCount(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getDcountDate(), null, null).get(0);
- reqrecVo.fomartReqrecVo();
- resultMap.put("ghsrgcmx", reqrecVo);
- MzReceiptSerial mzReceiptSerial = chargeFeeVoService.queryMzReceiptSerial(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getDcountDate(), null, null).get(0);
- mzReceiptSerial.setGhf(reqrecVo.getHjss());
- resultMap.put("mzReceiptSerial", mzReceiptSerial);
- ChargeCountVo chargeCountVo = chargeFeeVoService.queryChargeCountVo(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getDcountDate(), null, null).get(0);
- chargeCountVo.fomartChargeCountVo();
- resultMap.put("chargeCountVo", chargeCountVo);
- //收费所用票号
- List<ReceiptBillVo> sfReceipts = chargeFeeVoService.querySfReceiptBillVoReprint(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getDcountDate());
- //挂号所用票号
- List<ReceiptBillVo> ghReceipts = chargeFeeVoService.queryGhReceiptBillVoReprint(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getDcountDate());
- sfReceipts.addAll(ghReceipts);
- List<ReceiptBillVo> notFpList = new ArrayList<>();
- sfReceipts.forEach(s -> {
- if (s.getReceiptBill() != null && s.getReceiptBill().length() != 8) {
- s.setReceiptBill(null);
- }
- if (s.getReceiptBill() == null || "00000000".equals(s.getReceiptBill())) {
- notFpList.add(s);
- }
- });
- sfReceipts.removeAll(notFpList);
- Collections.sort(sfReceipts); // 按发票号排序
- List<String> receiptBills = getStrings(sfReceipts);
- resultMap.put("receiptBills", receiptBills);
- //收费发票张数
- Integer sffps = chargeFeeVoService.countReceipt(chargeFeeParamsVo.getOpId(), PayMarkEnum.CHARGED.code, chargeFeeParamsVo.getDcountDate());
- //退费发票张数
- Integer tpzs = chargeFeeVoService.countReceipt(chargeFeeParamsVo.getOpId(), PayMarkEnum.RETURN_PREMIUM.code, chargeFeeParamsVo.getDcountDate());
- //作废收费发票张数
- Integer zffps = chargeFeeVoService.countReceipt(chargeFeeParamsVo.getOpId(), PayMarkEnum.CANCELLATION.code, chargeFeeParamsVo.getDcountDate());
- //挂号发票张数
- Integer ghfps = chargeFeeVoService.countReqrecReceipt(chargeFeeParamsVo.getOpId(), YesNoEnum.NO.code.toString(), chargeFeeParamsVo.getDcountDate(), null, null);
- //退号发票张数
- Integer ghtpzs = chargeFeeVoService.countReqrecReceipt(chargeFeeParamsVo.getOpId(), YesNoEnum.YES.code.toString(), chargeFeeParamsVo.getDcountDate(), null, null);
- //收费发票总数
- resultMap.put("sffps", sffps + ghfps);
- //退费发票张数
- resultMap.put("tpzs", tpzs + ghtpzs);
- //作废收费发票张数
- resultMap.put("zffps", zffps);
- //收费作废发票明细
- List<ReceiptVo> sfzffpmx = chargeFeeVoService.queryReceiptVo(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getDcountDate());
- //退号发票明细
- List<ReceiptVo> thzffpmx = chargeFeeVoService.queryThMzReceiptSerial(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getDcountDate());
- sfzffpmx.addAll(thzffpmx);
- List<ReceiptVo> notFpGhList = new ArrayList<>();
- sfzffpmx.forEach(s -> {
- if (s.getReceiptBill() != null && s.getReceiptBill().length() != 8) {
- s.setReceiptBill(null);
- }
- if (s.getReceiptBill() == null || "00000000".equals(s.getReceiptBill())) {
- notFpGhList.add(s);
- }
- });
- sfzffpmx.removeAll(notFpGhList);
- Collections.sort(sfzffpmx); // 按发票号排序
- resultMap.put("zffpmx", sfzffpmx);
- resultMap.put("zizhufpmx", chargeFeeVoService.queryZiZhuReceiptVo(chargeFeeParamsVo.getOpId(), chargeFeeParamsVo.getDcountDate()));
- resultMap.put("ybjzmx", chargeFeeVoService.queryMxByChequeType(tokenUser.getUserIdCode(), chargeFeeParamsVo.getDcountDate(),YesNoEnum.YES.code.toString()));
- resultMap.put("grzhmx", chargeFeeVoService.queryMxByChequeType(tokenUser.getUserIdCode(), chargeFeeParamsVo.getDcountDate(),YesNoEnum.NO.code.toString()));
- //门诊补录明细
- resultMap.put("mztcblmx", chargeFeeVoService.queryMxByChequeNo(tokenUser.getUserIdCode(), chargeFeeParamsVo.getDcountDate()));
- resultMap.put("code", 0);
- resultMap.put("message", "查询重打费用日结报表成功");
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("查询重打费用日结报表失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询重打费用日结报表失败");
- return resultMap;
- }
- }
- /**
- * 费用汇总报表
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getFullChargeCollect", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getFullChargeCollect(@RequestBody ChargeFeeParamsVo chargeFeeParamsVo) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- // User tokenUser = TokenUtil.getUser(httpServletRequest);
- if (chargeFeeParamsVo == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询费用汇总报表失败,参数为空");
- return resultMap;
- }
- if (StringUtils.isBlank(chargeFeeParamsVo.getCaseType())) {
- chargeFeeParamsVo.setCaseType(YesNoEnum.NO.code.toString());
- }
- if (chargeFeeParamsVo.getBeginDate() == null || chargeFeeParamsVo.getEndDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询费用汇总报表失败,查询时间为空");
- return resultMap;
- }
- //门诊部日结没有设置收费人id ,需要清洗
- chargeFeeVoService.modifyMzService();
- //挂号收入构成表格数据
- ReqrecVo reqrecVo = chargeFeeVoService.queryMzReceiptSerialCount(null, null, chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate()).get(0);
- reqrecVo.fomartReqrecVo();
- resultMap.put("ghsrgcmx", reqrecVo);
- MzReceiptSerial mzReceiptSerial = chargeFeeVoService.queryMzReceiptSerial(null, null, chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate()).get(0);
- mzReceiptSerial.setGhf(reqrecVo.getHjss());
- resultMap.put("mzReceiptSerial", mzReceiptSerial);
- ChargeCountVo chargeCountVo = chargeFeeVoService.queryChargeCountVo(null, null, chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate()).get(0);
- chargeCountVo.fomartChargeCountVo();
- resultMap.put("chargeCountVo", chargeCountVo);
- List<WorkloadVo> ghWorkloadVos = chargeFeeVoService.queryGhWorkloadVo(chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate(), null, YesNoEnum.YES);
- frmartWorkloadVo(ghWorkloadVos);
- resultMap.put("ghWorkloadVos", ghWorkloadVos);
- List<WorkloadVo> sfWorkloadVos = chargeFeeVoService.querySfWorkloadVo(chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate(), null, YesNoEnum.YES);
- frmartWorkloadVo(sfWorkloadVos);
- resultMap.put("sfWorkloadVos", sfWorkloadVos);
- //resultMap.put("user", tokenUser);
- resultMap.put("code", 0);
- resultMap.put("message", "查询费用汇总报表成功");
- return resultMap;
- }
- // catch (MzException e) {
- // log.error("查询费用汇总报表失败,错误信息{}", e);
- // resultMap.put("code", -1);
- // resultMap.put("message", "查询费用汇总报表失败");
- // return resultMap;
- // }
- catch (Exception e) {
- e.printStackTrace();
- log.error("查询费用汇总报表失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询费用汇总报表失败");
- return resultMap;
- }
- }
- /**
- * 收费员挂号与收费工作量统计
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getCasherWorkCount", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getCasherWorkCount(@RequestBody ChargeFeeParamsVo chargeFeeParamsVo) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (chargeFeeParamsVo == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "收费员挂号与收费工作量统计失败,参数为空");
- return resultMap;
- }
- if (StringUtils.isBlank(chargeFeeParamsVo.getOpId())) {
- chargeFeeParamsVo.setOpId(null);
- }
- if (chargeFeeParamsVo.getBeginDate() == null || chargeFeeParamsVo.getEndDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "收费员挂号与收费工作量统计失败,查询时间为空");
- return resultMap;
- }
- List<WorkloadVo> ghWorkloadVos = chargeFeeVoService.queryGhWorkloadVo(chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate(), chargeFeeParamsVo.getOpId(), null);
- frmartWorkloadVo(ghWorkloadVos);
- List<WorkloadVo> sfWorkloadVos = chargeFeeVoService.querySfWorkloadVo(chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate(), chargeFeeParamsVo.getOpId(), null);
- frmartWorkloadVo(sfWorkloadVos);
- List<Map<String, Object>> resultList = new ArrayList<>();
- Map<String, Map<String, Object>> allMap = new HashMap<>();
- for (WorkloadVo workloadVo : ghWorkloadVos) {
- if (workloadVo.getOpId() == null) {
- continue;
- }
- Map<String, Object> temp = new HashMap<>();
- temp.put("opId", workloadVo.getOpId());
- temp.put("opName", workloadVo.getOpName());
- temp.put("ghCount", workloadVo.getPtCount());
- temp.put("ghAmount", workloadVo.getPtAmount());
- temp.put("thCount", workloadVo.getThCount());
- temp.put("thAmount", workloadVo.getThAmount());
- resultList.add(temp);
- allMap.put(workloadVo.getOpId(), temp);
- }
- for (WorkloadVo workloadVo : sfWorkloadVos) {
- if (workloadVo.getOpId() == null) {
- continue;
- }
- Map<String, Object> temp = allMap.get(workloadVo.getOpId());
- if (temp == null) {
- temp = new HashMap<>();
- resultList.add(temp);
- allMap.put(workloadVo.getOpId(), temp);
- temp.put("opId", workloadVo.getOpId());
- temp.put("opName", workloadVo.getOpName());
- }
- temp.put("sfCount", workloadVo.getPtCount());
- temp.put("sfAmount", workloadVo.getPtAmount());
- temp.put("tfCount", workloadVo.getThCount());
- temp.put("tfAmount", workloadVo.getThAmount());
- }
- resultMap.put("code", 0);
- resultMap.put("message", "收费员挂号与收费工作量统计成功");
- resultMap.put("data", resultList);
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("收费员挂号与收费工作量统计失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "收费员挂号与收费工作量统计失败");
- return resultMap;
- }
- }
- private void frmartWorkloadVo(List<WorkloadVo> workloadVos) {
- if (workloadVos != null && workloadVos.size() > 0) {
- WorkloadVo totalWorkloadVo = new WorkloadVo();
- Map<String, String> employeeMap = null;
- Set<String> opIds = workloadVos.stream().filter(u -> StringUtils.isNotBlank(u.getOpId())).map(u -> u.getOpId()).collect(Collectors.toSet());
- if (opIds != null) {
- List<Employee> employees = employeeService.queryByCodes(new ArrayList<>(opIds));
- if (employees != null) {
- employeeMap = employees.stream().collect(Collectors.toMap(Employee::getEmployeeCode, Employee::getEmployeeName));
- }
- }
- for (WorkloadVo wo : workloadVos) {
- wo.setOpName(employeeMap.get(wo.getOpId()));
- if (totalWorkloadVo.getPtCount() == null) {
- totalWorkloadVo.setPtCount(wo.getPtCount());
- } else {
- totalWorkloadVo.setPtCount(totalWorkloadVo.getPtCount() + wo.getPtCount());
- }
- if (totalWorkloadVo.getThCount() == null) {
- totalWorkloadVo.setThCount(wo.getThCount());
- } else {
- totalWorkloadVo.setThCount(totalWorkloadVo.getThCount() + wo.getThCount());
- }
- if (totalWorkloadVo.getPtAmount() == null) {
- totalWorkloadVo.setPtAmount(wo.getPtAmount());
- } else {
- totalWorkloadVo.setPtAmount(totalWorkloadVo.getPtAmount().add(wo.getPtAmount()));
- }
- if (totalWorkloadVo.getThAmount() == null) {
- totalWorkloadVo.setThAmount(wo.getThAmount());
- } else {
- totalWorkloadVo.setThAmount(totalWorkloadVo.getThAmount().add(wo.getThAmount()));
- }
- if (totalWorkloadVo.getTotalAmount() == null) {
- totalWorkloadVo.setTotalAmount(wo.getTotalAmount());
- } else {
- totalWorkloadVo.setTotalAmount(totalWorkloadVo.getTotalAmount().add(wo.getTotalAmount()));
- }
- }
- workloadVos.add(totalWorkloadVo);
- }
- }
- /**
- * 将发票号转成字符串形式
- *
- * @param sfReceiptBills
- * @return
- */
- private List<String> getStrings(List<ReceiptBillVo> sfReceiptBills) {
- List<String> temp = new ArrayList<>();
- String lastReceiptBill = null;
- String tempBill = null;
- for (ReceiptBillVo rb : sfReceiptBills) {
- if (StringUtils.isBlank(rb.getReceiptBill())) {
- continue;
- }
- if (lastReceiptBill == null) {
- tempBill = rb.getReceiptBill();
- lastReceiptBill = rb.getReceiptBill();
- } else if (Long.valueOf(lastReceiptBill) + 1 < Long.valueOf(rb.getReceiptBill())) {
- temp.add(tempBill + "--" + lastReceiptBill);
- tempBill = rb.getReceiptBill();
- lastReceiptBill = rb.getReceiptBill();
- } else if (Long.valueOf(lastReceiptBill) + 1 == Long.valueOf(rb.getReceiptBill())) {
- lastReceiptBill = rb.getReceiptBill();
- }
- }
- if (tempBill != null && lastReceiptBill != null) {
- temp.add(tempBill + "--" + lastReceiptBill);
- }
- return temp;
- }
- /**
- * 日报结算
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/dcountCharge", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> dcountCharge(HttpServletRequest httpServletRequest) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- User tokenUser = TokenUtil.getUser(httpServletRequest);
- Integer count = chargeFeeVoService.queryCountCanDaily(tokenUser.getUserIdCode());
- if (count == null || count == 0) {
- resultMap.put("code", -1);
- resultMap.put("message", "费用结算失败,无可结算费用");
- return resultMap;
- }
- count = chargeFeeVoService.queryTFWDFPCount(tokenUser.getUserIdCode());
- if (count > 0) {
- resultMap.put("code", -1);
- resultMap.put("message", "存在退费后发票未重打的发票信息,请 处理后再结账!");
- return resultMap;
- }
- Date dcountDate = chargeFeeVoService.dcountCharge(tokenUser.getUserIdCode());
- resultMap.put("dcountDate", dcountDate);
- //resultMap.put("dcountDate", new Date());
- resultMap.put("code", 0);
- resultMap.put("message", "费用结算成功");
- return resultMap;
- } catch (MzException e) {
- log.error("费用结算失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "费用结算失败");
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("费用结算失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "费用结算失败");
- return resultMap;
- }
- }
- /**
- * 查询给定日期内收费员列表
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getAllOperator", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getAllOperator(@RequestBody ChargeFeeParamsVo chargeFeeParamsVo) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (chargeFeeParamsVo == null || chargeFeeParamsVo.getBeginDate() == null || chargeFeeParamsVo.getEndDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询给定日期内收费员列表失败,给定时间不能为空");
- return resultMap;
- }
- Date beginDate = chargeFeeParamsVo.getBeginDate();
- Date endDate = chargeFeeParamsVo.getEndDate();
- List<String> operaotors = chargeFeeVoService.queryAllOperatorFromReceipt(beginDate, endDate);
- List<String> ghOperaotors = chargeFeeVoService.queryAllOperatorFromReqrec(beginDate, endDate);
- ghOperaotors.forEach(o -> {
- if (!operaotors.contains(o)) {
- operaotors.add(o);
- }
- });
- List<Employee> employees = employeeService.queryByCodes(operaotors);
- resultMap.put("employees", employees);
- resultMap.put("code", 0);
- resultMap.put("message", "查询给定日期内收费员列表成功");
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("查询给定日期内收费员列表失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询给定日期内收费员列表失败");
- return resultMap;
- }
- }
- /**
- * 查询可以被重打结算列表用户与日期列表
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getDcountDateList", method = {RequestMethod.GET, RequestMethod.POST})
- public Map<String, Object> getDcountDateList(@RequestBody ChargeFeeParamsVo chargeFeeParamsVo) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (chargeFeeParamsVo == null || chargeFeeParamsVo.getBeginDate() == null || chargeFeeParamsVo.getEndDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询可以被重打结算列表用户与日期列表失败,给定时间不能为空");
- return resultMap;
- }
- if (StringUtils.isBlank(chargeFeeParamsVo.getOpId())) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询可以被重打结算列表用户与日期列表失败,请选择要查询的收费员");
- return resultMap;
- }
- Date beginDate = DateUtil.getFirstSecond(chargeFeeParamsVo.getBeginDate());
- Date endDate = DateUtil.getLastSecond(chargeFeeParamsVo.getEndDate());
- List<DcountDateListVo> dcountDateListVos = chargeFeeVoService.queryDcountDateList(chargeFeeParamsVo.getOpId(), beginDate, endDate);
- resultMap.put("dcountDateListVos", dcountDateListVos);
- resultMap.put("code", 0);
- resultMap.put("message", "查询可以被重打结算列表用户与日期列表成功");
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("查询可以被重打结算列表用户与日期列表失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询可以被重打结算列表用户与日期列表失败");
- return resultMap;
- }
- }
- /**
- * 查询门诊收费明细
- *
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getThmzmxsr", method = {RequestMethod.POST})
- public Map<String, Object> getThmzmxsr(@RequestBody ThmzmxsrParamsVo thmzmxsrParamsVo) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (thmzmxsrParamsVo == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询日结列表收费清单失败,参数为空");
- return resultMap;
- }
- if (thmzmxsrParamsVo.getBeginDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询门诊收费明细失败,开始时间为空");
- return resultMap;
- }
- if (thmzmxsrParamsVo.getEndDate() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询门诊收费明细失败,结束时间为空");
- return resultMap;
- }
- if (thmzmxsrParamsVo.getPageSize() == null) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询门诊收费明细失败,每页显示数据大小不能为空");
- return resultMap;
- }
- List<MzPatientMi> mzPatientMis = mzPatientMiService.queryByCommonParams(thmzmxsrParamsVo.getCommonParams());
- if (mzPatientMis != null && mzPatientMis.size() > 0) {
- List<String> patientIds = mzPatientMis.stream().filter(m -> StringUtils.isNotBlank(m.getPatientId())).map(m -> m.getPatientId()).collect(Collectors.toList());
- if (patientIds != null && patientIds.size() > 0) {
- thmzmxsrParamsVo.setPatientIds(patientIds);
- }
- }
- if (StringUtils.isBlank(thmzmxsrParamsVo.getCaseType())) {
- thmzmxsrParamsVo.setCaseType(YesNoEnum.NO.code.toString());
- }
- if (StringUtils.isBlank(thmzmxsrParamsVo.getJzSqDept())) {
- thmzmxsrParamsVo.setJzSqDept(null);
- }
- if (StringUtils.isBlank(thmzmxsrParamsVo.getJzSqDoctor())) {
- thmzmxsrParamsVo.setJzSqDoctor(null);
- }
- if (StringUtils.isBlank(thmzmxsrParamsVo.getExecDept())) {
- thmzmxsrParamsVo.setExecDept(null);
- }
- if (StringUtils.isBlank(thmzmxsrParamsVo.getHsm())) {
- thmzmxsrParamsVo.setHsm(null);
- }
- if (StringUtils.isBlank(thmzmxsrParamsVo.getParentCode())) {
- thmzmxsrParamsVo.setParentCode(null);
- }
- if (StringUtils.isBlank(thmzmxsrParamsVo.getXmm())) {
- thmzmxsrParamsVo.setXmm(null);
- }
- resultMap.put("code", 0);
- resultMap.put("message", "查询门诊收费明细成功");
- List<Mzmxsr> mzmxsrs = mzmxsrService.queryMzmxsrWithPage(thmzmxsrParamsVo);
- fomartThmzmxsr(mzmxsrs);
- resultMap.put("data", mzmxsrs);
- Integer total = thmzmxsrParamsVo.getTotal();
- if (total < 0) {
- total = mzmxsrService.queryCountMzmxsr(thmzmxsrParamsVo);
- }
- resultMap.put("total", total);
- BigDecimal amount = thmzmxsrParamsVo.getAmount();
- if (amount == null) {
- amount = mzmxsrService.querySumAmount(thmzmxsrParamsVo);
- }
- resultMap.put("totalAmount", amount == null ? BigDecimal.ZERO : amount.setScale(2, BigDecimal.ROUND_FLOOR));
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("查询门诊收费明细失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "查询门诊收费明细失败");
- return resultMap;
- }
- }
- private void fomartThmzmxsr(List<Mzmxsr> mzmxsrs) {
- Map<String, String> mzBillItemMap = null;
- Map<String, String> employeeMap = null;
- if (mzmxsrs != null && mzmxsrs.size() > 0) {
- List<BillItem> mzBillItems = mzBillItemService.queryZyBillItem();
- if (mzBillItems != null) {
- mzBillItemMap = mzBillItems.stream().collect(Collectors.toMap(BillItem::getCode, BillItem::getName));
- }
- List<Employee> employees = employeeService.queryAll();
- if (employees != null) {
- employeeMap = employees.stream().collect(Collectors.toMap(Employee::getEmployeeCode, Employee::getEmployeeName));
- }
- }
- if (mzmxsrs != null && mzmxsrs.size() > 0) {
- for (Mzmxsr mzmxsr : mzmxsrs) {
- getBigDecimal(mzBillItemMap, employeeMap, mzmxsr);
- }
- }
- }
- private void getBigDecimal(Map<String, String> mzBillItemMap, Map<String, String> employeeMap, Mzmxsr mzmxsr) {
- if (mzBillItemMap != null) {
- mzmxsr.setParentCode(mzBillItemMap.get(mzmxsr.getParentCode()));
- }
- mzmxsr.setJzSqDept(zdUnitCodeService.queryDeptNameByIdInCache(mzmxsr.getJzSqDept()));
- mzmxsr.setExecDept(zdUnitCodeService.queryDeptNameByIdInCache(mzmxsr.getExecDept()));
- String jzSqDoctor = mzmxsr.getJzSqDoctor();
- if (StringUtils.isNotBlank(jzSqDoctor)) {
- jzSqDoctor = jzSqDoctor.trim();
- }
- mzmxsr.setJzSqDoctor(employeeMap.get(jzSqDoctor));
- BigDecimal price = mzmxsr.getPrice();
- if (price == null) {
- price = BigDecimal.ZERO;
- }
- mzmxsr.setPrice(price.setScale(2, BigDecimal.ROUND_FLOOR));
- }
- /**
- * 门诊收入明细导出
- *
- * @param request
- * @param response
- * @return
- */
- @RequestMapping(value = "/excelThmzmxsr", method = {RequestMethod.GET})
- public Map<String, Object> excelThmzmxsr(@RequestParam("commonParams") String commonParams, @RequestParam("caseType") String caseType, @RequestParam("beginDate") String beginDate,
- @RequestParam("endDate") String endDate, @RequestParam("jzSqDept") String jzSqDept, @RequestParam("jzSqDoctor") String jzSqDoctor,
- @RequestParam("execDept") String execDept, @RequestParam("hsm") String hsm,
- @RequestParam("parentCode") String parentCode, @RequestParam("xmm") String xmm, @RequestParam("pageSize") String pageSize, HttpServletRequest request, HttpServletResponse response) {
- if (StringUtils.isBlank(caseType)) {
- caseType = YesNoEnum.NO.code.toString();
- }
- if (StringUtils.isBlank(jzSqDept)) {
- jzSqDept = null;
- }
- if (StringUtils.isBlank(jzSqDoctor)) {
- jzSqDoctor = null;
- }
- if (StringUtils.isBlank(execDept)) {
- execDept = null;
- }
- if (StringUtils.isBlank(hsm)) {
- hsm = null;
- }
- if (StringUtils.isBlank(parentCode)) {
- parentCode = null;
- }
- if (StringUtils.isBlank(xmm)) {
- xmm = null;
- }
- Map<String, Object> resultMap = new HashMap<>();
- ThmzmxsrParamsVo thmzmxsrParamsVo = new ThmzmxsrParamsVo();
- thmzmxsrParamsVo.setCommonParams(commonParams);
- thmzmxsrParamsVo.setCaseType(caseType);
- thmzmxsrParamsVo.setBeginDate(DateUtil.pase(beginDate, "yyyy-MM-dd HH:mm:ss"));
- thmzmxsrParamsVo.setEndDate(DateUtil.pase(endDate, "yyyy-MM-dd HH:mm:ss"));
- thmzmxsrParamsVo.setJzSqDept(jzSqDept);
- thmzmxsrParamsVo.setJzSqDoctor(jzSqDoctor);
- thmzmxsrParamsVo.setExecDept(execDept);
- thmzmxsrParamsVo.setHsm(hsm);
- thmzmxsrParamsVo.setParentCode(parentCode);
- thmzmxsrParamsVo.setXmm(xmm);
- thmzmxsrParamsVo.setOffset(0);
- if (DateTimeUtils.periodDays(DateTimeUtils.date2LocalDate(thmzmxsrParamsVo.getBeginDate()), DateTimeUtils.date2LocalDate(thmzmxsrParamsVo.getEndDate())) > 180) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询门诊收费明细失败,时间跨度不能大于六个月");
- return resultMap;
- }
- Integer total = Integer.valueOf(pageSize);
- if (total < 0) {
- total = mzmxsrService.queryCountMzmxsr(thmzmxsrParamsVo);
- }
- thmzmxsrParamsVo.setPageSize(total);
- List<MzPatientMi> mzPatientMis = mzPatientMiService.queryByCommonParams(commonParams);
- if (mzPatientMis != null && mzPatientMis.size() > 0) {
- List<String> patientIds = mzPatientMis.stream().filter(m -> StringUtils.isNotBlank(m.getPatientId())).map(m -> m.getPatientId()).collect(Collectors.toList());
- if (patientIds != null && patientIds.size() > 0) {
- thmzmxsrParamsVo.setPatientIds(patientIds);
- }
- }
- List<Mzmxsr> mzmxsrs = mzmxsrService.queryMzmxsrWithPage(thmzmxsrParamsVo);
- fomartThmzmxsr(mzmxsrs);
- ExcelUtil.exportExcelForThmzmxsrs(request, response, mzmxsrs);
- return null;
- }
- /**
- * 门诊收入明细导出Excel并入库
- *
- * @param request
- * @param response
- * @return
- */
- // @UserLoginToken
- @RequestMapping(value = "/excelThmzmxsrToFile", method = {RequestMethod.GET})
- public Map<String, Object> excelThmzmxsrToFile(@RequestParam("commonParams") String commonParams, @RequestParam("caseType") String caseType, @RequestParam("beginDate") String beginDate,
- @RequestParam("endDate") String endDate, @RequestParam("jzSqDept") String jzSqDept, @RequestParam("jzSqDoctor") String jzSqDoctor,
- @RequestParam("execDept") String execDept, @RequestParam("hsm") String hsm,
- @RequestParam("parentCode") String parentCode, @RequestParam("xmm") String xmm, @RequestParam("pageSize") String pageSize, HttpServletRequest request, HttpServletResponse response) {
- log.info("创建门诊收入明细表格,开始时间{}结束时间{}", beginDate, endDate);
- if (StringUtils.isBlank(caseType)) {
- caseType = YesNoEnum.NO.code.toString();
- }
- if (StringUtils.isBlank(jzSqDept)) {
- jzSqDept = null;
- }
- if (StringUtils.isBlank(jzSqDoctor)) {
- jzSqDoctor = null;
- }
- if (StringUtils.isBlank(execDept)) {
- execDept = null;
- }
- if (StringUtils.isBlank(hsm)) {
- hsm = null;
- }
- if (StringUtils.isBlank(parentCode)) {
- parentCode = null;
- }
- if (StringUtils.isBlank(xmm)) {
- xmm = null;
- }
- Map<String, Object> resultMap = new HashMap<>();
- ThmzmxsrParamsVo thmzmxsrParamsVo = new ThmzmxsrParamsVo();
- thmzmxsrParamsVo.setCommonParams(commonParams);
- thmzmxsrParamsVo.setCaseType(caseType);
- thmzmxsrParamsVo.setBeginDate(DateUtil.pase(beginDate, "yyyy-MM-dd HH:mm:ss"));
- thmzmxsrParamsVo.setEndDate(DateUtil.pase(endDate, "yyyy-MM-dd HH:mm:ss"));
- thmzmxsrParamsVo.setJzSqDept(jzSqDept);
- thmzmxsrParamsVo.setJzSqDoctor(jzSqDoctor);
- thmzmxsrParamsVo.setExecDept(execDept);
- thmzmxsrParamsVo.setHsm(hsm);
- thmzmxsrParamsVo.setParentCode(parentCode);
- thmzmxsrParamsVo.setXmm(xmm);
- thmzmxsrParamsVo.setOffset(0);
- if (DateTimeUtils.periodDays(DateTimeUtils.date2LocalDate(thmzmxsrParamsVo.getBeginDate()), DateTimeUtils.date2LocalDate(thmzmxsrParamsVo.getEndDate())) > 180) {
- resultMap.put("code", -1);
- resultMap.put("message", "查询门诊收费明细失败,时间跨度不能大于六个月");
- return resultMap;
- }
- Integer total = Integer.valueOf(pageSize);
- if (total < 0) {
- total = mzmxsrService.queryCountMzmxsr(thmzmxsrParamsVo);
- }
- thmzmxsrParamsVo.setPageSize(total);
- List<MzPatientMi> mzPatientMis = mzPatientMiService.queryByCommonParams(commonParams);
- if (mzPatientMis != null && mzPatientMis.size() > 0) {
- List<String> patientIds = mzPatientMis.stream().filter(m -> StringUtils.isNotBlank(m.getPatientId())).map(m -> m.getPatientId()).collect(Collectors.toList());
- if (patientIds != null && patientIds.size() > 0) {
- thmzmxsrParamsVo.setPatientIds(patientIds);
- }
- }
- List<Mzmxsr> mzmxsrs = mzmxsrService.queryMzmxsrWithPage(thmzmxsrParamsVo);
- fomartThmzmxsr(mzmxsrs);
- String fileName = "门诊明细收入" + DateUtil.fomart(thmzmxsrParamsVo.getBeginDate(), "yyyy-MM-dd") + "-" + DateUtil.fomart(thmzmxsrParamsVo.getEndDate(), "yyyy-MM-dd") + ".xls";
- FileUpload fileUpload = fileUploadService.queryByName(fileName);
- if (fileUpload != null) {
- resultMap.put("code", -1);
- resultMap.put("message", "已经存在该报表");
- return resultMap;
- }
- byte[] bytes = ExcelUtil.exportExcelForThmzmxsrs(mzmxsrs);
- FileUpload newFile = new FileUpload(fileName, bytes, "application/vnd.ms-excel");
- User user = userService.queryUserByUserIdCode(Constants.QYZH_CODE);
- newFile.setCreateUser(user.getId());
- newFile.setFileType(Integer.valueOf(FileTypeEnum.EXCEL_REPORT.code));
- newFile.setSquareFile(bytes);
- fileUploadService.saveUploadFile(newFile);
- log.info("创建门诊收入明细表格成功,表格名称{}", fileName);
- resultMap.put("code", 0);
- resultMap.put("message", "数据入库成功,列表已经重新加载,请下载对应的列表");
- return resultMap;
- }
- /**
- * 查询费用不一致接口
- *
- * @return
- */
- @RequestMapping(value = "/getDiff", method = {RequestMethod.GET})
- public Map<String, Object> getDiff(@RequestParam("beginDate") String beginDate, @RequestParam("endDate") String endDate) {
- List<String> mzPatientIds = mzmxsrService.queryAllPatientId(beginDate, endDate);
- if (mzPatientIds != null && mzPatientIds.size() > 0) {
- ThmzmxsrParamsVo thmzmxsrParamsVo = new ThmzmxsrParamsVo();
- thmzmxsrParamsVo.setCaseType(YesNoEnum.NO.code.toString());
- thmzmxsrParamsVo.setBeginDate(DateUtil.pase(beginDate, "yyyy-MM-dd HH:mm:ss"));
- thmzmxsrParamsVo.setEndDate(DateUtil.pase(endDate, "yyyy-MM-dd HH:mm:ss"));
- thmzmxsrParamsVo.setOffset(0);
- for (String str : mzPatientIds) {
- thmzmxsrParamsVo.setPatientIds(Arrays.asList(str));
- BigDecimal amount = mzmxsrService.querySumAmount(thmzmxsrParamsVo).setScale(1, BigDecimal.ROUND_HALF_UP);
- BigDecimal fpAmount = mzReceiptSerialService.querySumByPatientId(beginDate, endDate, str).setScale(1, BigDecimal.ROUND_HALF_UP);
- if (amount.compareTo(fpAmount) != 0) {
- log.info("--------------费用明细统计金额 {},发票金额 {},病人id {}-----------------", amount, fpAmount, str);
- }
- }
- System.out.println("计算结束");
- }
- return null;
- }
- /**
- * 门诊医生 (科室)工作量统计
- * @param beginDate
- * @param endDate
- * @param type 1 门诊医生列表 2 科室列表
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getWorkloadStatistics", method = {RequestMethod.GET})
- public Map<String, Object> getWorkloadStatistics(@RequestParam("beginDate") String beginDate, @RequestParam("endDate") String endDate, @RequestParam("type") Integer type, HttpServletRequest httpServletRequest) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (StringUtils.isBlank(beginDate)) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)工作量统计失败,开始时间为空");
- return resultMap;
- }
- if (StringUtils.isBlank(endDate)) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)工作量统计失败,结束时间为空");
- return resultMap;
- }
- if (type==null) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)工作量统计失败,报表类型为空为空");
- return resultMap;
- }
- User tokenUser = TokenUtil.getUser(httpServletRequest);
- String warnDept=null;
- String doctorCode=null;
- if(type==1){
- doctorCode=tokenUser.getUserIdCode();
- }else {
- Employee employee= employeeService.queryByUserCode(tokenUser.getUserIdCode());
- if(employee!=null){
- warnDept=employee.getDeptCode();
- }
- }
- List<Map<String, Object>> mzList = chargeFeeVoService.queryWorkloadStatistics(beginDate, endDate, doctorCode, warnDept,true);
- List<Map<String, Object>> zyList = mzZyReqService.queryWorkloadStatistics(beginDate, endDate, tokenUser.getUserIdCode(), warnDept,true);
- if (mzList != null && mzList.size() > 0 && zyList != null && zyList.size() > 0) {
- Map<String, Map<String, Object>> tempMap = new HashMap<>();
- for (Map<String, Object> map : mzList) {
- tempMap.put(map.get("doctor_code") + "_" + map.get("charge_date"), map);
- Employee employee=employeeService.queryByUserCode((String) map.get("doctor_code"));
- // 门诊就诊人数
- Map<String, Object> rsMap = clinicService.queryMzVisitRs(beginDate, endDate, (String) map.get("doctor_code"), (String) map.get("charge_date"));
- map.put("patient_num", rsMap.get("patient_num"));
- map.put("avg_fee", (String.valueOf(rsMap.get("patient_num")).equals("0")) ? 0 :
- BigDecimal.valueOf((Double) map.get("je")).divide(new BigDecimal((Long) rsMap.get("patient_num")), RoundingMode.CEILING));
- if(employee!=null){
- map.put("doctor_name",employee.getEmployeeName());
- map.put("codeRs",employee.getCodeRs());
- }
- }
- for (Map<String, Object> map : zyList) {
- String key =map.get("doctor_code") + "_" + map.get("charge_date");
- Map<String, Object> mzMap = tempMap.get(key);
- if(mzMap!=null){
- mzMap.put("zy_req_num",map.get("zy_req_num"));
- mzMap.put("zy_req_ry",map.get("zy_req_ry"));
- mzMap.put("zy_req_ty",map.get("zy_req_ty"));
- }else {
- mzList.add(map);
- Employee employee=employeeService.queryByUserCode((String) map.get("doctor_code"));
- if(employee!=null){
- map.put("doctor_name",employee.getEmployeeName());
- map.put("codeRs",employee.getCodeRs());
- }
- }
- }
- } else {
- if ((mzList == null || mzList.size() == 0) && zyList != null && zyList.size() > 0) {
- mzList = zyList;
- }
- for (Map<String, Object> map : mzList) {
- Employee employee=employeeService.queryByUserCode((String) map.get("doctor_code"));
- // 门诊就诊人数
- Map<String, Object> rsMap = clinicService.queryMzVisitRs(beginDate, endDate, (String) map.get("doctor_code"), (String) map.get("charge_date"));
- map.put("patient_num", rsMap.get("patient_num"));
- map.put("avg_fee", (String.valueOf(rsMap.get("patient_num")).equals("0")) ? 0 :
- BigDecimal.valueOf((Double) map.get("je")).divide(new BigDecimal((Long) rsMap.get("patient_num")), RoundingMode.CEILING));
- if(employee!=null){
- map.put("doctor_name",employee.getEmployeeName());
- map.put("codeRs",employee.getCodeRs());
- }
- }
- }
- resultMap.put("code", 0);
- resultMap.put("message", "门诊医生 (科室)工作量统计成功");
- resultMap.put("data", mzList);
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("门诊医生 (科室)工作量统计失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)工作量统计失败");
- return resultMap;
- }
- }
- /**
- * 门诊医生 (科室)工作量统计汇总
- * @param beginDate
- * @param endDate
- * @param type 1 门诊医生列表 2 科室列表
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getWorkloadStatisticsTotal", method = {RequestMethod.GET})
- public Map<String, Object> getWorkloadStatisticsTotal(@RequestParam("beginDate") String beginDate, @RequestParam("endDate") String endDate, @RequestParam("type") Integer type, HttpServletRequest httpServletRequest) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (StringUtils.isBlank(beginDate)) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)工作量统计汇总失败,开始时间为空");
- return resultMap;
- }
- if (StringUtils.isBlank(endDate)) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)工作量统计汇总失败,结束时间为空");
- return resultMap;
- }
- if (type==null) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)工作量统计汇总失败,报表类型为空为空");
- return resultMap;
- }
- User tokenUser = TokenUtil.getUser(httpServletRequest);
- String warnDept=null;
- String doctorCode=null;
- if(type==1){
- doctorCode=tokenUser.getUserIdCode();
- }else {
- Employee employee= employeeService.queryByUserCode(tokenUser.getUserIdCode());
- if(employee!=null){
- warnDept=employee.getDeptCode();
- }
- }
- List<Map<String, Object>> mzList = chargeFeeVoService.queryWorkloadStatistics(beginDate, endDate, doctorCode, warnDept,null);
- List<Map<String, Object>> zyList = mzZyReqService.queryWorkloadStatistics(beginDate, endDate, tokenUser.getUserIdCode(), warnDept,null);
- if (mzList != null && mzList.size() > 0 && zyList != null && zyList.size() > 0) {
- Map<String, Map<String, Object>> tempMap = new HashMap<>();
- for (Map<String, Object> map : mzList) {
- tempMap.put((String) map.get("doctor_code"), map);
- Employee employee=employeeService.queryByUserCode((String) map.get("doctor_code"));
- // 门诊就诊人数
- Map<String, Object> rsMap = clinicService.queryMzVisitRs(beginDate, endDate, (String) map.get("doctor_code"), null);
- map.put("patient_num", rsMap.get("patient_num"));
- map.put("avg_fee", (String.valueOf(rsMap.get("patient_num")).equals("0")) ? 0 :
- BigDecimal.valueOf((Double) map.get("je")).divide(new BigDecimal((Long) rsMap.get("patient_num")), RoundingMode.CEILING));
- if(employee!=null){
- map.put("doctor_name",employee.getEmployeeName());
- map.put("codeRs",employee.getCodeRs());
- }
- }
- for (Map<String, Object> map : zyList) {
- String key =(String)map.get("doctor_code");
- Map<String, Object> mzMap = tempMap.get(key);
- if(mzMap!=null){
- mzMap.put("zy_req_num",map.get("zy_req_num"));
- mzMap.put("zy_req_ry",map.get("zy_req_ry"));
- mzMap.put("zy_req_ty",map.get("zy_req_ty"));
- }else {
- mzList.add(map);
- Employee employee=employeeService.queryByUserCode((String) map.get("doctor_code"));
- if(employee!=null){
- map.put("doctor_name",employee.getEmployeeName());
- map.put("codeRs",employee.getCodeRs());
- }
- }
- }
- } else {
- if ((mzList == null || mzList.size() == 0) && zyList != null && zyList.size() > 0) {
- mzList = zyList;
- }
- for (Map<String, Object> map : mzList) {
- Employee employee=employeeService.queryByUserCode((String) map.get("doctor_code"));
- // 门诊就诊人数
- Map<String, Object> rsMap = clinicService.queryMzVisitRs(beginDate, endDate, (String) map.get("doctor_code"), null);
- map.put("patient_num", rsMap.get("patient_num"));
- map.put("avg_fee", (String.valueOf(rsMap.get("patient_num")).equals("0")) ? 0 :
- BigDecimal.valueOf((Double) map.get("je")).divide(new BigDecimal((Long) rsMap.get("patient_num")), RoundingMode.CEILING));
- if(employee!=null){
- map.put("doctor_name",employee.getEmployeeName());
- map.put("codeRs",employee.getCodeRs());
- }
- }
- }
- resultMap.put("code", 0);
- resultMap.put("message", "门诊医生 (科室)工作量统计汇总成功");
- resultMap.put("data", mzList);
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("门诊医生 (科室)工作量统计汇总失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)工作量统计汇总失败");
- return resultMap;
- }
- }
- /**
- * 门诊医生 (科室)查询住院申请明细
- * @param beginDate
- * @param endDate
- * @param type 1 门诊医生列表 2 科室列表
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getMzZyReqs", method = {RequestMethod.GET})
- public Map<String, Object> getMzZyReqs(@RequestParam("beginDate") String beginDate, @RequestParam("endDate") String endDate, @RequestParam("type") Integer type, HttpServletRequest httpServletRequest) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (StringUtils.isBlank(beginDate)) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)查询住院申请明细失败,开始时间为空");
- return resultMap;
- }
- if (StringUtils.isBlank(endDate)) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)查询住院申请明细失败,结束时间为空");
- return resultMap;
- }
- if (type==null) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)查询住院申请明细失败,报表类型为空为空");
- return resultMap;
- }
- User tokenUser = TokenUtil.getUser(httpServletRequest);
- String warnDept=null;
- String doctorCode=null;
- if(type==1){
- doctorCode=tokenUser.getUserIdCode();
- }else {
- Employee employee= employeeService.queryByUserCode(tokenUser.getUserIdCode());
- if(employee!=null){
- warnDept=employee.getDeptCode();
- }
- }
- List<MzZyReq> mzList = mzZyReqService.queryMzZyReqs(beginDate, endDate, doctorCode, warnDept);
- if(mzList!=null && mzList.size()>0){
- List<CodeNameEntity> admissStatuses=mzZdCommonService.queryAdmissStatus();
- Map<String,String> admissStatusMap = null;
- if(admissStatuses!=null && admissStatuses.size()>0){
- admissStatusMap=admissStatuses.stream().collect(Collectors.toMap(CodeNameEntity::getCode,CodeNameEntity::getName));
- }
- for(MzZyReq mzZyReq:mzList){
- if(StringUtils.isNotBlank(mzZyReq.getDeptCode())){
- mzZyReq.setDeptCode(zdUnitCodeService.queryDeptNameByIdInCache(mzZyReq.getDeptCode()));
- }
- if(StringUtils.isNotBlank(mzZyReq.getReqWard())){
- mzZyReq.setReqWard(zdUnitCodeService.queryDeptNameByIdInCache(mzZyReq.getReqWard()));
- }
- if(StringUtils.isNotBlank(mzZyReq.getDoctorCode())){
- Employee employee= employeeService.queryByUserCode(mzZyReq.getDoctorCode());
- if(employee!=null){
- mzZyReq.setDoctorCode(employee.getEmployeeName());
- }
- }
- if(StringUtils.isNotBlank(mzZyReq.getAdmissStatus()) && admissStatusMap!=null){
- mzZyReq.setAdmissStatus(admissStatusMap.get(mzZyReq.getAdmissStatus()));
- }
- if(StringUtils.isNotBlank(mzZyReq.getReqStatus())){
- mzZyReq.setReqStatus(YesNoEnum.YES.code.toString().equals(mzZyReq.getReqStatus())?"入院":"申请");
- }
- }
- }
- resultMap.put("code", 0);
- resultMap.put("message", "门诊医生 (科室)查询住院申请明细成功");
- resultMap.put("data", mzList);
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("门诊医生 (科室)查询住院申请明细失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)查询住院申请明细失败");
- return resultMap;
- }
- }
- /**
- * 门诊医生 (科室)绩效统计
- * @param beginDate
- * @param endDate
- * @param type 1 门诊医生列表 2 科室列表
- * @return
- */
- @UserLoginToken
- @RequestMapping(value = "/getDoctorPerformanceStatistics", method = {RequestMethod.GET})
- public Map<String, Object> getDoctorPerformanceStatistics(@RequestParam("beginDate") String beginDate, @RequestParam("endDate") String endDate, @RequestParam("type") Integer type, HttpServletRequest httpServletRequest) {
- Map<String, Object> resultMap = new HashMap<>();
- try {
- if (StringUtils.isBlank(beginDate)) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)绩效统计失败,开始时间为空");
- return resultMap;
- }
- if (StringUtils.isBlank(endDate)) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)绩效统计失败,结束时间为空");
- return resultMap;
- }
- if (type==null) {
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)绩效统计失败,报表类型为空为空");
- return resultMap;
- }
- User tokenUser = TokenUtil.getUser(httpServletRequest);
- String warnDept=null;
- String doctorCode=null;
- if(type==1){
- doctorCode=tokenUser.getUserIdCode();
- }else {
- Employee employee= employeeService.queryByUserCode(tokenUser.getUserIdCode());
- if(employee!=null){
- warnDept=employee.getDeptCode();
- }
- }
- List<Map<String, Object>> mzList = chargeFeeVoService.queryDoctorPerformanceStatistics(beginDate, endDate, doctorCode, warnDept);
- List<Map<String, Object>> data = new ArrayList<>();
- Map<String,Object> deptMap = new HashMap<>();
- Map<String,Map<String, Object>> doctorMap = new HashMap<>();
- //列名集合
- List<String> title =new ArrayList<>();
- title.add("科室");
- title.add("医生");
- title.add("工号");
- if(mzList!=null && mzList.size()>0){
- deptMap.put("合计",BigDecimal.ZERO);
- for(Map<String, Object> map:mzList){
- String doctorId=(String) map.get("doctor_id");
- Map<String, Object> temp = doctorMap.get(doctorId);
- if(temp==null){
- temp=new HashMap<>();
- doctorMap.put(doctorId,temp);
- data.add(temp);
- temp.put("科室",map.get("warn_dept"));
- Employee employee= employeeService.queryByUserCode(doctorId);
- if(employee!=null){
- temp.put("医生",employee.getEmployeeName());
- //temp.put("doctor_id",doctorId);
- temp.put("工号",employee.getCodeRs());
- temp.put("合计",BigDecimal.ZERO);
- }
- }
- Double sl=(Double)map.get("sl");
- BigDecimal tempAmount =BigDecimal.ZERO;
- if(sl!=null){
- tempAmount = BigDecimal.valueOf(sl);
- }
- String auditCode=(String) map.get("audit_code");
- ZyZdAuditItem zyZdAuditItem=zyZdAuditItemService.queryByCode(auditCode);
- if(zyZdAuditItem!=null){
- BillItem billItem= mzBillItemService.queryZyBillItemByCode(zyZdAuditItem.getParentCode());
- auditCode=billItem==null?"":billItem.getName();
- }else {
- BillItem billItem= mzBillItemService.queryMzBillItemByCode(auditCode);
- auditCode=billItem==null?"":billItem.getName();
- }
- temp.put(auditCode,tempAmount);
- BigDecimal totalAmount = (BigDecimal)temp.get("合计");
- totalAmount=totalAmount.add(tempAmount==null?BigDecimal.ONE:tempAmount);
- temp.put("合计",totalAmount);
- BigDecimal tempDeptAmount= (BigDecimal)deptMap.get(auditCode);
- if(tempDeptAmount==null){
- tempDeptAmount=BigDecimal.ZERO;
- }
- tempDeptAmount=tempDeptAmount.add(tempAmount==null?BigDecimal.ONE:tempAmount);
- deptMap.put(auditCode,tempDeptAmount);
- BigDecimal deptTotalAmount = (BigDecimal)deptMap.get("合计");
- deptTotalAmount=deptTotalAmount.add(tempAmount==null?BigDecimal.ONE:tempAmount);
- deptMap.put("合计",deptTotalAmount);
- if(!title.contains(auditCode)){
- title.add(auditCode);
- }
- }
- }
- title.add("合计");
- //列表数据集
- List<List<Object>> bodyData = new ArrayList<>();
- List<BigDecimal> totalData = new ArrayList<>();
- if(data.size()>0){
- for(Map<String, Object> map :data){
- if(map==null || map.size()==0){
- continue;
- }
- List<Object> tempList = new ArrayList<>();
- bodyData.add(tempList);
- for(String str:title){
- tempList.add(map.get(str));
- }
- }
- for(String str:title){
- BigDecimal totalAmount=(BigDecimal) deptMap.get(str);
- if(totalAmount==null){
- continue;
- }
- totalData.add(totalAmount);
- }
- }
- resultMap.put("code", 0);
- resultMap.put("message", "门诊医生 (科室)绩效统计成功");
- resultMap.put("title", title);
- resultMap.put("bodyData", bodyData);
- resultMap.put("totalData", totalData);
- return resultMap;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("门诊医生 (科室)绩效统计失败,错误信息{}", e);
- resultMap.put("code", -1);
- resultMap.put("message", "门诊医生 (科室)绩效统计失败");
- return resultMap;
- }
- }
- }
|