zhaowenxuan
2024-10-14 7d702f59202496e28a80582b4aeeab2a9b9da76d
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReservationController.java
@@ -157,14 +157,15 @@
    @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);
    }
@@ -176,12 +177,12 @@
    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);
    }
@@ -204,7 +205,7 @@
     * 导入团体体检预约列表
     */
    @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,
@@ -251,9 +252,15 @@
            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());
@@ -306,6 +313,145 @@
            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);
@@ -450,6 +596,7 @@
     */
    @PostMapping("/tjReappoint")
    @ApiOperation(value = "体检预约修改接口")
    @Transactional
    public AjaxResult tjReappoint(@RequestBody TjReservation tjReservation) {
        TjReservation reservation = tjReservationService.getById(tjReservation.getId());
@@ -462,7 +609,7 @@
        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("操作失败");
@@ -496,7 +643,7 @@
    @PostMapping("/newReservationConfirm")
    @ApiOperation(value = "团体预约确认接口 (新版本)")
    @ApiOperation(value = "团体预约确认接口")
    @Transactional
    @RepeatSubmit
    public AjaxResult newReservationConfirm(@RequestBody ConfirmDto dto) {
@@ -539,7 +686,7 @@
                reservation.setProIds(Joiner.on(",").join(proIds));
                reservation.setReservationTime(DateUtil.parse(reservationTime, "yyyy-MM-dd"));
                reservation.setCompanyId(dwGrouping.getDwId());
                reservation.setCompany(dwGrouping.getDwName());
                reservation.setCompany(dwGrouping.getDwDeptName());
                reservation.setPayType(Long.valueOf(dwGrouping.getPayType()));
                reservation.setPacId(dwDept.getId());
//                if(dwGrouping.getPayType().equals("1")){
@@ -554,8 +701,9 @@
                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());
@@ -605,4 +753,121 @@
        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");
        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()));
                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("请选择预约对象");
    }
}