zjh
2024-08-07 ff584d153492ea746690cf8e05c2b859f170ae0b
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReservationController.java
@@ -18,6 +18,7 @@
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.excelConfig.ExcelUtils;
import com.ltkj.common.task.TaskService;
import com.ltkj.common.utils.SecurityUtils;
@@ -157,13 +158,13 @@
    public TableDataInfo list(TjReservation tjReservation) {
        startPage();
        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);
    }
@@ -202,40 +203,6 @@
    /**
     * 导入团体体检预约列表
     */
    @PostMapping("/excelImport")
    @ApiOperation(value = "团体导入 (旧版本)")
    public AjaxResult excelImport(@RequestPart(value = "file") @ApiParam(value = "Excel文件") MultipartFile file) {
        List<TjReservation> tjReservations = null;
        try {
            tjReservations = ExcelUtils.readMultipartFile(file, TjReservation.class);
        } catch (Exception e) {
            return AjaxResult.error("导入文件有误请检查导入文件!");
        }
        List<String> wrongList = new ArrayList<>();
        List<TjReservation> rightList = new ArrayList<>();
        for (TjReservation tjReservation : tjReservations) {
            String idCard = tjReservation.getIdCard();
            String phoe = tjReservation.getPhoe();
            if (null != idCard && null != phoe) {
                if (!MatchUtils.isIdCard(idCard) || !MatchUtils.isMobileNO(phoe)) {
                    wrongList.add(tjReservation.getName());
                } else {
                    rightList.add(tjReservation);
                }
            } else {
                wrongList.add(tjReservation.getName());
            }
        }
        if (wrongList.size() > 0) {
            return AjaxResult.success("操作失败", wrongList);
        } else {
            return AjaxResult.success("操作成功",rightList);
        }
    }
    /**
     * 导入团体体检预约列表
     */
    @PostMapping("/newExcelImport")
    @ApiOperation(value = "团体导入 (新版本)")
    @Transactional
@@ -248,6 +215,12 @@
        } catch (Exception e) {
            return AjaxResult.error("导入文件有误请检查导入文件!");
        }
        int grouping = dwGroupingService.selectTjDwGroupingByDwDeptId(dwDeptId);
        if(grouping==0){
            return AjaxResult.error("请检查部门中是否存在分组或分组中是否存在项目!");
        }
        List<String> wrongList = new ArrayList<>();
        List<TjReservation> rightList = new ArrayList<>();
        List<TjReservation> yyList = new ArrayList<>();
@@ -278,9 +251,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());
@@ -346,99 +325,127 @@
    }
    @PostMapping("/reservationConfirm")
    @ApiOperation(value = "团体预约确认接口 (旧版本)")
    public AjaxResult reservationConfirm(@RequestBody Map<String, Object> map) {
        List<TjReservation> rightLists = (List<TjReservation>) map.get("rightList");
        String pacId = map.get("pacId").toString();
        String copeWith = map.get("copeWith").toString();
        String[] proIds = (String[]) map.get("proIds");
        Object compId1 = map.get("compId");
        if (null == compId1 || compId1.equals("")) {
            return AjaxResult.error("请选择单位信息");
    /**
     * 导入团体体检预约列表
     */
    @PostMapping("/newExcelImportNotDwDeptId")
    @ApiOperation(value = "团体导入 (新版本不传单位部门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("导入文件有误请检查导入文件!");
        }
        String compId = map.get("compId").toString();
        Object reservationTime1 = map.get("reservationTime");
        if (null == reservationTime1) {
            return AjaxResult.error("请选择预约时间!");
        }
        String reservationTime = map.get("reservationTime").toString();
        String payType = map.get("payType").toString();
        String jsonString = JSON.toJSONString(rightLists);
        List<TjReservation> rightList = JSON.parseArray(jsonString, TjReservation.class);
        int grouping = dwGroupingService.selectTjDwGroupingByDwId(dwId);
        if (null != rightList) {
            if (null != pacId || null != proIds && proIds.length > 0) {
                String teamNo = PinyinUtil.getFirstLetter(compService.getById(compId).getCnName(), "") + DateUtil.format(new Date(), "yyMMddHHmmss");
                for (TjReservation reservation : rightList) {
        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<>();
        TjDwGrouping groupingMan = null;//男
        TjDwGrouping groupingWoMan = null;//女
        TjDwGrouping groupingWz = null;//未知(不分性别)
        try {
            groupingMan = dwGroupingService.getOne(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId,dwId)
                    .eq(TjDwGrouping::getSex, 0));
            groupingWoMan = dwGroupingService.getOne(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId,dwId)
                    .eq(TjDwGrouping::getSex, 1));
            groupingWz = dwGroupingService.getOne(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()) {
                    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());
                        tjReservation.setGroupingName(groupingMan.getGroupingName());
                        tjReservation.setYsPrice(groupingMan.getYsPrice());
                        //合计
                        hjMoney = hjMoney.add(groupingMan.getYsPrice()); count+=1;
                        //男组人数
                        manMoney=manMoney.add(groupingMan.getYsPrice()); manCount+=1;
                    } else if (null != groupingWoMan && groupingWoMan.getSex().equals(String.valueOf(tjReservation.getSex()))) {
                        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;
                    } else if (null != groupingWz && groupingWz.getSex().equals(String.valueOf(tjReservation.getSex()))) {
                        tjReservation.setGroupingId(groupingWz.getId());
                        tjReservation.setGroupingName(groupingWz.getGroupingName());
                        tjReservation.setYsPrice(groupingWz.getYsPrice());
                        //合计
                        hjMoney = hjMoney.add(groupingWz.getYsPrice()); count+=1;
                    }
                    LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>();
                    wq.eq(TjReservation::getIdCard, reservation.getIdCard());
                    wq.eq(TjReservation::getIdCard, tjReservation.getIdCard());
                    wq.eq(TjReservation::getIsExpire, 2);
                    TjReservation one = tjReservationService.getOne(wq);
                    if (null != one) {
                        continue;
                        yyList.add(one);
                    }
                    if (null != pacId) {
                        reservation.setPacId(pacId);
                    }
                    if (null != proIds && proIds.length > 0) {
                        reservation.setProIds(Joiner.on(",").join(proIds));
                    }
                    reservation.setReservationTime(DateUtil.parse(reservationTime, "yyyy-MM-dd"));
                    reservation.setCompanyId(compId);
                    reservation.setCompany(compService.getById(compId).getCnName());
                    reservation.setPayType(Long.valueOf(payType));
                    reservation.setTjType(String.valueOf(1));
                    reservation.setTeamNo(teamNo);
                    tjReservationService.save(reservation);
//                    delayService.reservation(reservation.getId());
                    rightList.add(tjReservation);
                }
                LambdaQueryWrapper<TjCompPay> wq0 = new LambdaQueryWrapper<>();
                wq0.eq(TjCompPay::getCompId, compId);
                wq0.eq(TjCompPay::getTeamNo, teamNo);
                TjCompPay one = compPayService.getOne(wq0);
                if (null != one) {
                    one.setCopeWith(new BigDecimal(copeWith));
                    one.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
                    one.setInvoiceNo("FP" + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
                    one.setPaidIn(new BigDecimal("0.00"));
                    compPayService.updateById(one);
                } else {
                    TjCompPay tjCompPay = new TjCompPay();
                    tjCompPay.setCompId(compId);
                    tjCompPay.setTeamNo(teamNo);
                    tjCompPay.setCopeWith(new BigDecimal(copeWith));
                    tjCompPay.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
                    tjCompPay.setInvoiceNo("FP" + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
                    tjCompPay.setPaidIn(new BigDecimal("0.00"));
                    tjCompPay.setDifference(tjCompPay.getCopeWith().subtract(BigDecimal.valueOf(0.00)));
                    compPayService.save(tjCompPay);
                }
                LambdaQueryWrapper<TjTeamSelectRecord> wq = new LambdaQueryWrapper<>();
                wq.eq(TjTeamSelectRecord::getTeamNo, teamNo);
                wq.eq(TjTeamSelectRecord::getCompId, compId);
                TjTeamSelectRecord recordServiceOne = selectRecordService.getOne(wq);
                if (null != recordServiceOne) {
                    if (null != pacId) recordServiceOne.setPacId(pacId);
                    recordServiceOne.setProIds(Joiner.on(";").join(proIds != null ? proIds : new String[0]));
                    recordServiceOne.setTeamNo(teamNo);
                    recordServiceOne.setTransactionAmount(new BigDecimal("0.00"));
                    recordServiceOne.setCount(rightList.size());
                    selectRecordService.updateById(recordServiceOne);
                }
                TjTeamSelectRecord selectRecord = new TjTeamSelectRecord();
                selectRecord.setCompId(compId);
                if (null != pacId) selectRecord.setPacId(pacId);
                selectRecord.setProIds(Joiner.on(";").join(proIds != null ? proIds : new String[0]));
                selectRecord.setTeamNo(teamNo);
                selectRecord.setTransactionAmount(new BigDecimal("0.00"));
                selectRecord.setCount(rightList.size());
                selectRecordService.save(selectRecord);
                return AjaxResult.success("预约成功");
            } else {
                wrongList.add(tjReservation.getName());
            }
            return AjaxResult.error("请选择体检内容");
        }
        return AjaxResult.error("请选择预约对象");
        if (yyList.size() > 0) {
            map.put("list", yyList);
            map.put("hjMoney", hjMoney);
            return AjaxResult.error("操作失败,以上人员已经预约无需导入!!!", map);
        }
        if (wrongList.size() > 0) {
            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);
        }
    }
@@ -573,6 +580,7 @@
     */
    @PostMapping("/tjReappoint")
    @ApiOperation(value = "体检预约修改接口")
    @Transactional
    public AjaxResult tjReappoint(@RequestBody TjReservation tjReservation) {
        TjReservation reservation = tjReservationService.getById(tjReservation.getId());
@@ -585,7 +593,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("操作失败");
@@ -605,7 +613,7 @@
            for (TjGroupingPro groupingPro : proList) {
                TjProject project = projectService.getById(groupingPro.getProId());
                if(null !=project){
                    if (project.getProType().equals("") || project.getProType()==null) {
                    if (project.getProType()==null || project.getProType().equals("")) {
                        groupingPro.setProType("2");
                    }else {
                        groupingPro.setProType(project.getProType());
@@ -621,6 +629,7 @@
    @PostMapping("/newReservationConfirm")
    @ApiOperation(value = "团体预约确认接口 (新版本)")
    @Transactional
    @RepeatSubmit
    public AjaxResult newReservationConfirm(@RequestBody ConfirmDto dto) {
        //预约的所有人
        List<TjReservation> rightList = dto.getReservations();
@@ -661,7 +670,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")){
@@ -676,8 +685,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());