| | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.io.FileUtil; |
| | | import cn.hutool.extra.pinyin.PinyinUtil; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.google.common.base.Joiner; |
| | | import com.ltkj.common.annotation.RepeatSubmit; |
| | | import com.ltkj.common.core.domain.entity.SysDictData; |
| | | import com.ltkj.common.excelConfig.ExcelUtils; |
| | | import com.ltkj.common.task.TaskService; |
| | | import com.ltkj.common.utils.SecurityUtils; |
| | |
| | | import com.ltkj.hosp.dto.ExcelImportDto; |
| | | import com.ltkj.hosp.service.*; |
| | | import com.ltkj.mall.mallOrderUtils.TjConstants; |
| | | import com.ltkj.system.service.ISysConfigService; |
| | | import com.ltkj.system.service.ISysDictDataService; |
| | | import com.ltkj.web.config.pdfutils.PDFBinaryUtil; |
| | | import com.ltkj.web.config.redis.OrderDelayService; |
| | | import com.ltkj.web.config.task.TjReservationTask; |
| | |
| | | private TaskService taskService; |
| | | @Resource |
| | | private ITjReportTemplateService reportTemplateService; |
| | | @Autowired |
| | | private ISysDictDataService dictDataService; |
| | | @Autowired |
| | | private ISysConfigService configService; |
| | | |
| | | @Value("${path.filePath}") |
| | | private String value; |
| | |
| | | @ApiOperation(value = "查询体检预约列表接口(默认)") |
| | | public TableDataInfo list(TjReservation tjReservation) { |
| | | startPage(); |
| | | tjReservation.setIsExpire(2); |
| | | List<TjReservation> list = tjReservationService.selectTjReservationList(tjReservation); |
| | | if(null !=list && list.size()>0){ |
| | | for (TjReservation reservation : list) { |
| | | reservation.setName(MatchUtils.hideCusName(reservation.getName())); |
| | | reservation.setPhoe(MatchUtils.hidePhoneNum(reservation.getPhoe())); |
| | | reservation.setIdCard(MatchUtils.hideIdCardNum(reservation.getIdCard())); |
| | | } |
| | | } |
| | | // if(null !=list && list.size()>0){ |
| | | // for (TjReservation reservation : list) { |
| | | // reservation.setName(MatchUtils.hideCusName(reservation.getName())); |
| | | // reservation.setPhoe(MatchUtils.hidePhoneNum(reservation.getPhoe())); |
| | | // reservation.setIdCard(MatchUtils.hideIdCardNum(reservation.getIdCard())); |
| | | // } |
| | | // } |
| | | return getDataTable(list); |
| | | } |
| | | |
| | |
| | | public TableDataInfo selectTjReservationByDelete(TjReservation tjReservation) { |
| | | startPage(); |
| | | List<TjReservation> list = tjReservationService.selectTjReservationByDelete(tjReservation); |
| | | if(null !=list && list.size()>0){ |
| | | for (TjReservation reservation : list) { |
| | | reservation.setName(MatchUtils.hideCusName(reservation.getName())); |
| | | reservation.setPhoe(MatchUtils.hidePhoneNum(reservation.getPhoe())); |
| | | reservation.setIdCard(MatchUtils.hideIdCardNum(reservation.getIdCard())); |
| | | } |
| | | if(null !=list && !list.isEmpty()){ |
| | | // for (TjReservation reservation : list) { |
| | | // reservation.setName(MatchUtils.hideCusName(reservation.getName())); |
| | | // reservation.setPhoe(MatchUtils.hidePhoneNum(reservation.getPhoe())); |
| | | // reservation.setIdCard(MatchUtils.hideIdCardNum(reservation.getIdCard())); |
| | | // } |
| | | } |
| | | return getDataTable(list); |
| | | } |
| | |
| | | * 导入团体体检预约列表 |
| | | */ |
| | | @PostMapping("/newExcelImport") |
| | | @ApiOperation(value = "团体导入 (新版本)") |
| | | @ApiOperation(value = "团体excel表导入") |
| | | @Transactional |
| | | public AjaxResult newExcelImport(@RequestPart(value = "file") @ApiParam(value = "Excel文件") MultipartFile file, |
| | | @RequestParam @ApiParam(value = "单位id") String dwId, |
| | |
| | | String idCard = tjReservation.getIdCard(); |
| | | String phoe = tjReservation.getPhoe(); |
| | | if (null != idCard && null != phoe) { |
| | | if (!MatchUtils.isIdCard(idCard) || !MatchUtils.isMobileNO(phoe)) { |
| | | // if (!MatchUtils.isIdCard(idCard) || !MatchUtils.isMobileNO(phoe)) { |
| | | if (idCard.isEmpty() || phoe.isEmpty()) { |
| | | wrongList.add(tjReservation.getName()); |
| | | } else { |
| | | //年龄 |
| | | tjReservation.setAge(String.valueOf(MatchUtils.getAgeByIdCard(tjReservation.getIdCard()))); |
| | | //出生日期 |
| | | tjReservation.setBirthday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(tjReservation.getIdCard()),"yyyy-MM-dd")); |
| | | |
| | | if (null != groupingMan && groupingMan.getSex().equals(String.valueOf(tjReservation.getSex()))) { |
| | | |
| | | tjReservation.setGroupingId(groupingMan.getId()); |
| | |
| | | map.put("list", wrongList); |
| | | map.put("hjMoney", hjMoney); |
| | | return AjaxResult.error("操作失败, 请核对信息后重新导入!!!", map); |
| | | } else { |
| | | map.put("list", rightList); |
| | | map.put("count", count); |
| | | map.put("hjMoney", hjMoney); |
| | | map.put("manCount", manCount); |
| | | map.put("manMoney", manMoney); |
| | | map.put("woManCount", woManCount); |
| | | map.put("woManMoney", woManMoney); |
| | | return AjaxResult.success("操作成功", map); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 导入团体体检预约列表 |
| | | */ |
| | | @PostMapping("/newExcelImportNotDwDeptId") |
| | | @ApiOperation(value = "团体excel表导入 (新版本不传单位部门id)") |
| | | @Transactional |
| | | public AjaxResult newExcelImportNotDwDeptId(@RequestPart(value = "file") @ApiParam(value = "Excel文件") MultipartFile file, |
| | | @RequestParam @ApiParam(value = "单位id") String dwId) { |
| | | List<TjReservation> tjReservations = null; |
| | | try { |
| | | tjReservations = ExcelUtils.readMultipartFile(file, TjReservation.class); |
| | | } catch (Exception e) { |
| | | return AjaxResult.error("导入文件有误请检查导入文件!"); |
| | | } |
| | | int grouping = dwGroupingService.selectTjDwGroupingByDwId(dwId); |
| | | |
| | | if(grouping==0){ |
| | | return AjaxResult.error("请检查该单位是否存否存在项目!"); |
| | | } |
| | | |
| | | List<String> wrongList = new ArrayList<>(); |
| | | List<TjReservation> rightList = new ArrayList<>(); |
| | | List<TjReservation> yyList = new ArrayList<>(); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<TjDwGrouping> groupingMans = null;//男 |
| | | List<TjDwGrouping> groupingWoMans = null;//女 |
| | | List<TjDwGrouping> groupingWzs = null;//未知(不分性别) |
| | | try { |
| | | groupingMans = dwGroupingService.list(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId,dwId) |
| | | .eq(TjDwGrouping::getSex, 0)); |
| | | groupingWoMans = dwGroupingService.list(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId,dwId) |
| | | .eq(TjDwGrouping::getSex, 1)); |
| | | groupingWzs = dwGroupingService.list(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId,dwId) |
| | | .eq(TjDwGrouping::getSex, 2)); |
| | | } catch (Exception e) { |
| | | return AjaxResult.error("分组信息有误请重新分组!"); |
| | | } |
| | | //计算合计 |
| | | BigDecimal hjMoney = new BigDecimal("0.00"); |
| | | //男组金额 |
| | | BigDecimal manMoney = new BigDecimal("0.00"); |
| | | //女组金额 |
| | | BigDecimal woManMoney = new BigDecimal("0.00"); |
| | | int count=0;//总计人数 |
| | | int manCount=0;//男组人数 |
| | | int woManCount=0;//女组人数 |
| | | for (TjReservation tjReservation : tjReservations) { |
| | | String idCard = tjReservation.getIdCard(); |
| | | String phoe = tjReservation.getPhoe(); |
| | | if (null != idCard && null != phoe) { |
| | | // if (!MatchUtils.isIdCard(idCard) || !MatchUtils.isMobileNO(phoe)) { |
| | | if (idCard.isEmpty() || phoe.isEmpty() || null==tjReservation.getDwxm()) { |
| | | wrongList.add(tjReservation.getName()); |
| | | } else { |
| | | //年龄 |
| | | tjReservation.setAge(String.valueOf(MatchUtils.getAgeByIdCard(tjReservation.getIdCard()))); |
| | | //出生日期 |
| | | tjReservation.setBirthday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(tjReservation.getIdCard()),"yyyy-MM-dd")); |
| | | |
| | | TjDwDept dwDept = dwDeptService.getOne(new LambdaQueryWrapper<TjDwDept>().eq(TjDwDept::getDwDeptName, tjReservation.getDwxm())); |
| | | if(null !=dwDept){ |
| | | for (TjDwGrouping groupingMan : groupingMans) { |
| | | if (null != groupingMan && groupingMan.getSex().equals(String.valueOf(tjReservation.getSex())) && groupingMan.getDwDeptId().equals(dwDept.getId())) { |
| | | tjReservation.setGroupingId(groupingMan.getId()); |
| | | tjReservation.setGroupingName(groupingMan.getGroupingName()); |
| | | tjReservation.setYsPrice(groupingMan.getYsPrice()); |
| | | //合计 |
| | | hjMoney = hjMoney.add(groupingMan.getYsPrice()); count+=1; |
| | | //男组人数 |
| | | manMoney=manMoney.add(groupingMan.getYsPrice()); manCount+=1; |
| | | } |
| | | } |
| | | |
| | | for (TjDwGrouping groupingWoMan : groupingWoMans) { |
| | | if (null != groupingWoMan && groupingWoMan.getSex().equals(String.valueOf(tjReservation.getSex())) && groupingWoMan.getDwDeptId().equals(dwDept.getId())) { |
| | | tjReservation.setGroupingId(groupingWoMan.getId()); |
| | | tjReservation.setGroupingName(groupingWoMan.getGroupingName()); |
| | | tjReservation.setYsPrice(groupingWoMan.getYsPrice()); |
| | | //合计 |
| | | hjMoney = hjMoney.add(groupingWoMan.getYsPrice()); count+=1; |
| | | woManMoney=woManMoney.add(groupingWoMan.getYsPrice());woManCount+=1; |
| | | } |
| | | } |
| | | for (TjDwGrouping groupingWz : groupingWzs) { |
| | | if (null != groupingWz && groupingWz.getDwDeptId().equals(dwDept.getId())) { |
| | | tjReservation.setGroupingId(groupingWz.getId()); |
| | | tjReservation.setGroupingName(groupingWz.getGroupingName()); |
| | | tjReservation.setYsPrice(groupingWz.getYsPrice()); |
| | | //合计 |
| | | hjMoney = hjMoney.add(groupingWz.getYsPrice());count+=1; |
| | | if(tjReservation.getSex()==0){ |
| | | manMoney=manMoney.add(groupingWz.getYsPrice()); manCount+=1; |
| | | } |
| | | if(tjReservation.getSex()==1){ |
| | | woManMoney=woManMoney.add(groupingWz.getYsPrice());woManCount+=1; |
| | | } |
| | | |
| | | } |
| | | } |
| | | LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>(); |
| | | wq.eq(TjReservation::getIdCard, tjReservation.getIdCard()); |
| | | wq.eq(TjReservation::getIsExpire, 2); |
| | | TjReservation one = tjReservationService.getOne(wq); |
| | | if (null != one) { |
| | | yyList.add(one); |
| | | } |
| | | rightList.add(tjReservation); |
| | | }else { |
| | | wrongList.add(tjReservation.getName()); |
| | | } |
| | | |
| | | } |
| | | } else { |
| | | wrongList.add(tjReservation.getName()); |
| | | } |
| | | } |
| | | if (!yyList.isEmpty()) { |
| | | map.put("list", yyList); |
| | | map.put("hjMoney", hjMoney); |
| | | return AjaxResult.error("操作失败,以上人员已经预约无需导入!!!", map); |
| | | } |
| | | |
| | | if (!wrongList.isEmpty()) { |
| | | map.put("list", wrongList); |
| | | map.put("hjMoney", hjMoney); |
| | | return AjaxResult.error("操作失败, 请认真核对信息后重新导入!!!", map); |
| | | } else { |
| | | map.put("list", rightList); |
| | | map.put("count", count); |
| | |
| | | */ |
| | | @PostMapping("/tjReappoint") |
| | | @ApiOperation(value = "体检预约修改接口") |
| | | @Transactional |
| | | public AjaxResult tjReappoint(@RequestBody TjReservation tjReservation) { |
| | | TjReservation reservation = tjReservationService.getById(tjReservation.getId()); |
| | | |
| | |
| | | if (tjReservationService.updateById(tjReservation)) { |
| | | taskService.removeTask(new TjReservationTask(tjReservation.getId())); |
| | | taskService.addTask(new TjReservationTask(tjReservation.getId(), |
| | | DateUtil.between(new Date(),DateUtil.endOfDay(tjReservation.getReservationTime()), DateUnit.MS))); |
| | | DateUtil.between(new Date(),DateUtil.endOfDay(DateUtil.offsetDay(tjReservation.getReservationTime(),reservation.getYxts())), DateUnit.MS))); |
| | | return AjaxResult.success("操作成功"); |
| | | } |
| | | return AjaxResult.error("操作失败"); |
| | |
| | | |
| | | |
| | | @PostMapping("/newReservationConfirm") |
| | | @ApiOperation(value = "团体预约确认接口 (新版本)") |
| | | @ApiOperation(value = "团体预约确认接口") |
| | | @Transactional |
| | | @RepeatSubmit |
| | | public AjaxResult newReservationConfirm(@RequestBody ConfirmDto dto) { |
| | |
| | | tramNum+=1; |
| | | reservation.setTjType(String.valueOf(1)); |
| | | reservation.setTeamNo(teamNo); |
| | | reservation.setYxts(dto.getYxts()); |
| | | tjReservationService.save(reservation); |
| | | taskService.addTask(new TjReservationTask(reservation.getId(),DateUtil.between(new Date(),DateUtil.endOfDay(reservation.getReservationTime()), DateUnit.MS))); |
| | | taskService.addTask(new TjReservationTask(reservation.getId(),DateUtil.between(new Date(),DateUtil.endOfDay(DateUtil.offsetDay(reservation.getReservationTime(),dto.getYxts())), DateUnit.MS))); |
| | | } |
| | | LambdaQueryWrapper<TjCompPay> wq0 = new LambdaQueryWrapper<>(); |
| | | wq0.eq(TjCompPay::getCompId, dwDept.getDwId()); |
| | |
| | | return AjaxResult.error("请选择预约对象"); |
| | | } |
| | | |
| | | |
| | | @PostMapping("/newReservationConfirmxbb") |
| | | @ApiOperation(value = "团体预约确认接口 (新版本)") |
| | | @Transactional |
| | | @RepeatSubmit |
| | | public AjaxResult newReservationConfirmxbb(@RequestBody ConfirmDto dto) { |
| | | //预约的所有人 |
| | | List<TjReservation> rightList = dto.getReservations(); |
| | | |
| | | //预约时间 |
| | | String reservationTime = dto.getReservationTime(); |
| | | if (null == reservationTime) { |
| | | return AjaxResult.error("请选择预约时间!"); |
| | | } |
| | | |
| | | Date date = new Date(); |
| | | |
| | | //异步数据 |
| | | // asyncService.addNewReservationConfirm(rightList); |
| | | asyncService.saveNewReservationConfirm(rightList); |
| | | |
| | | //体检单位部门 |
| | | DictComp comp = compService.getById(dto.getDwId()); |
| | | |
| | | String teamNo = PinyinUtil.getFirstLetter(comp.getCnName(), "") + DateUtil.format(date, "yyMMddHHmmss"); |
| | | |
| | | //团体人数合计价格 |
| | | BigDecimal compPay=new BigDecimal("0.00"); |
| | | |
| | | String payTypeGlTjType = configService.selectConfigByKey("reservation_pay_type_gl_tj_type"); |
| | | JSONObject parseObj = JSONUtil.parseObj(payTypeGlTjType); |
| | | if (null != rightList && !rightList.isEmpty()) { |
| | | |
| | | for (TjReservation reservation : rightList) { |
| | | |
| | | TjDwGrouping dwGrouping = dwGroupingService.getById(reservation.getGroupingId()); |
| | | |
| | | TjDwDept dwDept = dwDeptService.getById(dwGrouping.getDwDeptId()); |
| | | |
| | | LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>(); |
| | | wq.eq(TjReservation::getIdCard, reservation.getIdCard()); |
| | | wq.eq(TjReservation::getIsExpire, 2); |
| | | TjReservation one = tjReservationService.getOne(wq); |
| | | if (null != one) { |
| | | continue; |
| | | } |
| | | LambdaQueryWrapper<TjGroupingPro> wq1 = new LambdaQueryWrapper<>(); |
| | | wq1.eq(TjGroupingPro::getGroupingId, reservation.getGroupingId()); |
| | | List<String> proIds = groupingProService.list(wq1).stream().map(TjGroupingPro::getProId).collect(Collectors.toList()); |
| | | reservation.setProIds(Joiner.on(",").join(proIds)); |
| | | reservation.setReservationTime(DateUtil.parse(reservationTime, "yyyy-MM-dd")); |
| | | reservation.setCompanyId(dwGrouping.getDwId()); |
| | | reservation.setCompany(dwGrouping.getDwName()); |
| | | reservation.setPayType(Long.valueOf(dwGrouping.getPayType())); |
| | | LambdaQueryWrapper<SysDictData> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(SysDictData::getDictType,"reservation_pay_type"); |
| | | wrapper.eq(SysDictData::getDictValue,reservation.getPayType()); |
| | | SysDictData dictData = dictDataService.getOne(wrapper); |
| | | for (Map.Entry<String, Object> entry : parseObj.entrySet()) { |
| | | String[] split = entry.getValue().toString().split("-"); |
| | | if (split[0].equals(String.valueOf(dictData.getDictCode()))){ |
| | | reservation.setTjType(dictDataService.selectDictDataById(Long.valueOf(split[1])).getDictValue()); |
| | | } |
| | | } |
| | | |
| | | |
| | | reservation.setPacId(dwDept.getId()); |
| | | compPay=compPay.add(dwGrouping.getYsPrice()); |
| | | // reservation.setTjType(String.valueOf(1)); |
| | | reservation.setTeamNo(teamNo); |
| | | reservation.setYxts(dto.getYxts()); |
| | | tjReservationService.save(reservation); |
| | | taskService.addTask(new TjReservationTask(reservation.getId(), |
| | | DateUtil.between(date,DateUtil.endOfDay(DateUtil.offsetDay(reservation.getReservationTime(),dto.getYxts())), DateUnit.MS))); |
| | | } |
| | | |
| | | LambdaQueryWrapper<TjCompPay> wq0 = new LambdaQueryWrapper<>(); |
| | | wq0.eq(TjCompPay::getCompId,dto.getDwId()); |
| | | wq0.eq(TjCompPay::getTeamNo, teamNo); |
| | | TjCompPay one = compPayService.getOne(wq0); |
| | | if (null != one) { |
| | | one.setCopeWith(compPay); |
| | | one.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(date, "yyMMddHHmmssSSS")); |
| | | one.setInvoiceNo("FP" + DateUtil.format(date, "yyMMddHHmmssSSS")); |
| | | one.setPaidIn(new BigDecimal("0.00")); |
| | | compPayService.updateById(one); |
| | | } else { |
| | | TjCompPay tjCompPay = new TjCompPay(); |
| | | tjCompPay.setCompId(dto.getDwId()); |
| | | tjCompPay.setTeamNo(teamNo); |
| | | tjCompPay.setCopeWith(compPay); |
| | | tjCompPay.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(date, "yyMMddHHmmssSSS")); |
| | | tjCompPay.setInvoiceNo("FP" + DateUtil.format(date, "yyMMddHHmmssSSS")); |
| | | tjCompPay.setPaidIn(new BigDecimal("0.00")); |
| | | tjCompPay.setDifference(tjCompPay.getCopeWith().subtract(BigDecimal.valueOf(0.00))); |
| | | compPayService.save(tjCompPay); |
| | | } |
| | | |
| | | Map<String, List<TjReservation>> collect = rightList.stream().collect(Collectors.groupingBy(TjReservation::getPacId)); |
| | | |
| | | if(!collect.isEmpty()){ |
| | | for (Map.Entry<String, List<TjReservation>> entry : collect.entrySet()) { |
| | | LambdaQueryWrapper<TjTeamSelectRecord> wq = new LambdaQueryWrapper<>(); |
| | | wq.eq(TjTeamSelectRecord::getTeamNo, teamNo); |
| | | wq.eq(TjTeamSelectRecord::getCompId,dto.getDwId()); |
| | | TjTeamSelectRecord recordServiceOne = selectRecordService.getOne(wq); |
| | | if (null != recordServiceOne) { |
| | | recordServiceOne.setPacId(entry.getKey()); |
| | | recordServiceOne.setCompId(dto.getDwId()); |
| | | recordServiceOne.setTeamNo(teamNo); |
| | | recordServiceOne.setTransactionAmount(new BigDecimal("0.00")); |
| | | recordServiceOne.setCount(entry.getValue().size()); |
| | | recordServiceOne.setDifference(compPay); |
| | | selectRecordService.updateById(recordServiceOne); |
| | | }else { |
| | | TjTeamSelectRecord selectRecord = new TjTeamSelectRecord(); |
| | | selectRecord.setCompId(dto.getDwId()); |
| | | selectRecord.setPacId(entry.getKey()); |
| | | selectRecord.setTeamNo(teamNo); |
| | | selectRecord.setTransactionAmount(new BigDecimal("0.00")); |
| | | selectRecord.setCount(entry.getValue().size()); |
| | | selectRecord.setDifference(compPay); |
| | | selectRecordService.save(selectRecord); |
| | | } |
| | | } |
| | | } |
| | | return AjaxResult.success("预约成功"); |
| | | } |
| | | return AjaxResult.error("请选择预约对象"); |
| | | } |
| | | |
| | | } |