zjh
2025-04-16 e607595f8a4df7d4d577f64ae577b658bdd98c7e
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjHomePageController.java
@@ -18,6 +18,8 @@
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -59,7 +61,8 @@
    @Resource
    private ITjFlowingWaterService tjFlowingWaterService;
    @Resource
    private LtkjHysqdService hysqdService;
    @GetMapping("/GetChartByDate")
    @ApiOperation(value = "条形统计时间段内个人和团队体检数")
@@ -74,13 +77,13 @@
                Date beginTime = DateUtils.parseDate(date + " 00:00:00");
                Date endTime = DateUtils.parseDate(date + " 23:59:59");
                QueryWrapper<TjOrder> queryWrapper1 = new QueryWrapper<>();
                queryWrapper1.ge("finish_time", beginTime);
                queryWrapper1.lt("finish_time", endTime);
                queryWrapper1.ge("create_time", beginTime);
                queryWrapper1.lt("create_time", endTime);
                queryWrapper1.eq("tj_type", 2);
                Integer personCount = orderService.count(queryWrapper1);
                QueryWrapper<TjOrder> queryWrapper2 = new QueryWrapper<>();
                queryWrapper2.ge("finish_time", beginTime);
                queryWrapper2.lt("finish_time", endTime);
                queryWrapper2.ge("create_time", beginTime);
                queryWrapper2.lt("create_time", endTime);
                queryWrapper2.eq("tj_type", 1);
                Integer teamCount = orderService.count(queryWrapper2);
@@ -100,14 +103,14 @@
                Date beginTime = DateUtils.parseDate(formatdate + " 00:00:00");
                Date endTime = DateUtils.parseDate(formatdate + " 23:59:59");
                QueryWrapper<TjOrder> queryWrapper1 = new QueryWrapper<>();
                queryWrapper1.ge("finish_time", beginTime);
                queryWrapper1.lt("finish_time", endTime);
                queryWrapper1.ge("create_time", beginTime);
                queryWrapper1.lt("create_time", endTime);
                queryWrapper1.eq("tj_type", 2);
                Integer personCount = orderService.count(queryWrapper1);
                QueryWrapper<TjOrder> queryWrapper2 = new QueryWrapper<>();
                queryWrapper2.ge("finish_time", beginTime);
                queryWrapper2.lt("finish_time", endTime);
                queryWrapper2.ge("create_time", beginTime);
                queryWrapper2.lt("create_time", endTime);
                queryWrapper2.eq("tj_type", 1);
                Integer teamCount = orderService.count(queryWrapper2);
@@ -151,179 +154,6 @@
        cal.set(Calendar.DATE, cal.get(Calendar.DATE) - i);
        return cal.getTime();
    }
   /* @GetMapping("/getTjDeptCountList")
    @ApiOperation(value = "体检科室工作量数据统计接口")
//    @PreAuthorize("@ss.hasPermi('home:page:getTjDeptCountList')")
    public AjaxResult getTjDeptCountList(@RequestParam(required = false) @ApiParam(value = "开始时间") String beginTime, @RequestParam(required = false) @ApiParam(value = "结束时间") String endTime) {
        List<SysDept> deptList = deptService.list();
        if (null != deptList && deptList.size() > 0) {
            List<TjDeptCountVo> deptCountVoList = new ArrayList<>();
            for (SysDept sysDept : deptList) {
                LambdaQueryWrapper<SysUser> wq0 = new LambdaQueryWrapper<>();
                wq0.eq(SysUser::getDeptId, sysDept.getDeptId());
                List<SysUser> sysUserList = userService.list(wq0);
                if (null == sysUserList) {
                    return AjaxResult.error("该科室下没有人员");
                }
                TjDeptCountVo deptCountVo = new TjDeptCountVo();
                deptCountVo.setDoctorName("/");
                deptCountVo.setDeptName(sysDept.getDeptName());
                LambdaQueryWrapper<TjProject> wq1 = new LambdaQueryWrapper<>();
                wq1.eq(TjProject::getDeptId, sysDept.getDeptId());
                List<TjProject> list = projectService.list(wq1);
                LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
                LambdaQueryWrapper<TjOrderDetail> wq3 = new LambdaQueryWrapper<>();
                wq2.eq(TjOrderDetail::getTjStatus, 0);
                if (null != beginTime && null != endTime) {
                    wq2.between(TjOrderDetail::getCreateTime, DateUtil.parse(beginTime), DateUtil.parse(endTime));
                    wq3.between(TjOrderDetail::getCreateTime, DateUtil.parse(beginTime), DateUtil.parse(endTime));
                } else {
                    wq2.between(TjOrderDetail::getCreateTime, DateUtil.lastWeek(), DateUtil.now());
                    wq3.between(TjOrderDetail::getCreateTime, DateUtil.lastWeek(), DateUtil.now());
                }
                wq3.eq(TjOrderDetail::getTjStatus, 1);
                if (null != list && list.size() > 0) {
                    //获取该科室下的项目
                    List<Long> ksproList = list.stream().map(TjProject::getProId).collect(Collectors.toList());
                    wq2.in(TjOrderDetail::getProId, ksproList);
                    wq3.in(TjOrderDetail::getProId, ksproList);
                } else {
                    continue;
                }
                LambdaQueryWrapper<TjOrderRemark> wq4 = new LambdaQueryWrapper<>();
                wq4.eq(TjOrderRemark::getDeptId, sysDept.getDeptId());
                List<TjOrderDetail> detailList = detailService.list(wq2);
                List<TjOrderDetail> detailList1 = detailService.list(wq3);
                List<TjOrderRemark> remarkList = remarkService.list(wq4);
                if (detailList == null && detailList1 != null && remarkList != null) {
                    deptCountVo.setTjCount(0);
                    deptCountVo.setTjFinishCount(detailList1.size());
                    deptCountVo.setTjFinishRate("0%");
                    deptCountVo.setReportCount(remarkList.size());
                    deptCountVo.setReportRate("0%");
                } else if (detailList1 == null && detailList != null && remarkList != null) {
                    deptCountVo.setTjCount(detailList.size());
                    deptCountVo.setTjFinishCount(0);
                    deptCountVo.setTjFinishRate("0%");
                    deptCountVo.setReportCount(remarkList.size());
                    deptCountVo.setReportRate((remarkList.size()) / (detailList.size()) * 100 + "%");
                } else if (detailList1 != null && detailList != null && remarkList == null) {
                    deptCountVo.setTjCount(detailList.size());
                    deptCountVo.setTjFinishCount(detailList1.size());
                    deptCountVo.setTjFinishRate((detailList1.size()) / (detailList.size()) * 100 + "%");
                    deptCountVo.setReportCount(0);
                    deptCountVo.setReportRate("0%");
                } else {
                    deptCountVo.setTjCount(0);
                    deptCountVo.setTjFinishCount(0);
                    deptCountVo.setTjFinishRate("0%");
                    deptCountVo.setReportCount(0);
                    deptCountVo.setReportRate("0%");
                }
                deptCountVoList.add(deptCountVo);
            }
            return AjaxResult.success("操作成功", deptCountVoList);
        }
        return AjaxResult.error();
    }*/
    /*@GetMapping("/GetCheckDate")
    @ApiOperation(value = "报告工作量统计")
//    @PreAuthorize("@ss.hasPermi('home:page:GetCheckDate')")
    public List<CheckDataVO> GetCheckDate(@RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate) {
        List<CheckDataVO> list = new ArrayList<>();
        if (startDate != null & endDate != null) {
            Date beginTime = DateUtils.parseDate(startDate + " 00:00:00");
            Date endTime = DateUtils.parseDate(endDate + " 23:59:59");
            QueryWrapper<TjOrder> queryWrapper1 = new QueryWrapper<>();
            queryWrapper1.ge("finish_time", beginTime);
            queryWrapper1.lt("finish_time", endTime);
            List<TjOrder> list1 = orderService.list(queryWrapper1);
            //不可重复  所有医生名
            Set<String> collect1 = list1.stream().map(TjOrder::getCheckDoctor).collect(Collectors.toSet());
            for (String s : collect1) {
                QueryWrapper<TjOrder> queryWrapper2 = new QueryWrapper<>();
                queryWrapper2.ge("finish_time", beginTime);
                queryWrapper2.lt("finish_time", endTime);
                queryWrapper2.eq("check_doctor", s);
                List<TjOrder> list2 = orderService.list(queryWrapper2);
                CheckDataVO checkDataVO = new CheckDataVO();
                Integer checkCount = 0;
                Integer releaseCount = 0;
                Integer messageCount = 0;
                Integer printCount = 0;
                for (TjOrder tjOrder : list2) {
                    if (s.equals(tjOrder.getCheckDoctor()) && tjOrder.getCheckStatus() == 1) {
                        checkCount++;
                    }
                    if (s.equals(tjOrder.getCheckDoctor()) && tjOrder.getReleaseTime() != null) {
                        releaseCount++;
                    }
                    if (s.equals(tjOrder.getCheckDoctor()) && "1".equals(tjOrder.getSendMessage())) {
                        messageCount++;
                    }
                    //报告生成时间
                    if (s.equals(tjOrder.getCheckDoctor()) && tjOrder.getReportTime() != null) {
                        printCount++;
                    }
                    checkDataVO.setDoctorName(s);
                    checkDataVO.setCheckCount(checkCount);
                    checkDataVO.setReleaseCount(releaseCount);
                    checkDataVO.setMessageCount(messageCount);
                    checkDataVO.setPrintCount(printCount);
                }
                list.add(checkDataVO);
            }
        } else {
            LambdaQueryWrapper<TjOrder> queryWrapper1 = new LambdaQueryWrapper<>();
            queryWrapper1.between(TjOrder::getFinishTime, DateUtil.lastWeek(), DateUtil.now());
            List<TjOrder> list1 = orderService.list(queryWrapper1);
            //List<String> collect = list1.stream().map(TjOrder::getCheckDoctor).collect(Collectors.toList());
            //不可重复  所有医生名
            Set<String> collect1 = list1.stream().map(TjOrder::getCheckDoctor).collect(Collectors.toSet());
            for (String s : collect1) {
                QueryWrapper<TjOrder> queryWrapper2 = new QueryWrapper<>();
                queryWrapper2.between("finish_time", DateUtil.lastWeek(), DateUtil.now());
                queryWrapper2.eq("check_doctor", s);
                List<TjOrder> list2 = orderService.list(queryWrapper2);
                CheckDataVO checkDataVO = new CheckDataVO();
                Integer checkCount = 0;
                Integer releaseCount = 0;
                Integer messageCount = 0;
                Integer printCount = 0;
                for (TjOrder tjOrder : list2) {
                    if (s.equals(tjOrder.getCheckDoctor()) && tjOrder.getCheckStatus() == 1) {
                        checkCount++;
                    }
                    if (s.equals(tjOrder.getCheckDoctor()) && tjOrder.getReleaseTime() != null) {
                        releaseCount++;
                    }
                    if (s.equals(tjOrder.getCheckDoctor()) && "1".equals(tjOrder.getSendEmail())) {
                        messageCount++;
                    }
                    if (s.equals(tjOrder.getCheckDoctor()) && tjOrder.getReportTime() != null) {
                        printCount++;
                    }
                    checkDataVO.setDoctorName(s);
                    checkDataVO.setCheckCount(checkCount);
                    checkDataVO.setReleaseCount(releaseCount);
                    checkDataVO.setMessageCount(messageCount);
                    checkDataVO.setPrintCount(printCount);
                }
                list.add(checkDataVO);
            }
        }
        return list;
    }*/
    @GetMapping("/GetAbnormalData")
    @ApiOperation(value = "体检结果异常数据统计分析")
@@ -456,10 +286,10 @@
    @GetMapping("/getLineChart")
    @ApiOperation(value = "首页折线图数据")
    public AjaxResult getLineChart() {
        asyncService.getLineChart();
        if(redisCache.hasKey("getLineChart")){
            return redisCache.getCacheObject("getLineChart");
        }
//        asyncService.getLineChart();
//        if(redisCache.hasKey("getLineChart")){
//            return redisCache.getCacheObject("getLineChart");
//        }
        return getResult();
    }
@@ -473,33 +303,37 @@
    @GetMapping("/getPieChart")
    @ApiOperation(value = "首页饼状图登记人数接口")
    public AjaxResult getPieChart() {
        asyncService.getPieChart();
        if(redisCache.hasKey("getPieChart")){
            return redisCache.getCacheObject("getPieChart");
        }
//        asyncService.getPieChart();
//        if(redisCache.hasKey("getPieChart")){
//            return redisCache.getCacheObject("getPieChart");
//        }
        return getAjaxResult();
    }
    private AjaxResult getAjaxResult() {
        Map<String, Object> map = new HashMap<>();
        Date date=new Date();
        //获取体检登记数
        LambdaQueryWrapper<TjOrder> wq0 = new LambdaQueryWrapper<>();
        wq0.between(TjOrder::getCreateTime, DateUtil.lastMonth(), DateUtil.now());
        wq0.between(TjOrder::getCreateTime,DateUtil.offsetMonth(date,-1),date);
        List<TjOrder> orderCountList = orderService.list(wq0);
        if (null != orderCountList && orderCountList.size() > 0) {
            List<PieChartVo> pieChartVoList = getTjorderCountMap(orderCountList);
        if (null != orderCountList && !orderCountList.isEmpty()) {
            List<PieChartVo> pieChartVoList = getTjorderCountMap();
            map.put("tjdj", pieChartVoList);
        } else {
            map.put("tjdj", 0);
        }
        //获取体检异常数
        LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
        wq1.between(TjOrder::getFinishTime, DateUtil.lastMonth(), DateUtil.now());
        wq1.eq(TjOrder::getCheckStatus, 1);
        List<TjOrder> orderAbnormalCountList = orderService.list(wq1);
        if (null != orderAbnormalCountList && orderAbnormalCountList.size() > 0) {
            List<PieChartVo> pieChartVoList = getTjorderAbnormalCountMap(orderAbnormalCountList);
        wq1.between(TjOrder::getCreateTime,DateUtil.offsetMonth(date,-1),date);
//        wq1.isNotNull(TjOrder::getFinishTime);
//        wq1.eq(TjOrder::getCheckStatus, 1);
        List<TjOrder> orderList = orderService.list(wq1);
        if (null !=orderList && !orderList.isEmpty()) {
//            List<TjOrder> orderList = orderAbnormalCountList.stream().distinct().collect(Collectors.toList());
            List<PieChartVo> pieChartVoList = getTjorderAbnormalCountMap();
            map.put("tjyc", pieChartVoList);
        } else {
            map.put("tjyc", 0);
@@ -509,17 +343,17 @@
    }
    //获取体检登记数
    private List<PieChartVo> getTjorderCountMap(List<TjOrder> orderList) {
    private List<PieChartVo> getTjorderCountMap() {
        int a = 0;
        int b = 0;
        int c = 0;
        int d = 0;
        int e = 0;
        Map<String, Object> map = null;
        for (TjOrder tjOrder : orderList) {
            map = new HashMap<>();
            TjCustomer customer = customerService.getById(tjOrder.getUserId());
            if (null != customer) {
        Map<String, Object> map = new HashMap<>();
        Date date=new Date();
        List<TjCustomer> customers = hysqdService.getCgYcXmList(DateUtil.offsetMonth(date, -1), date);
        if (null != customers && !customers.isEmpty()) {
            for (TjCustomer customer : customers) {
                int age = DateUtil.ageOfNow(customer.getCusBrithday());
                if (age >= 0 && age <= 3) {
                    a += 1;
@@ -533,14 +367,13 @@
                    e += 1;
                }
            }
            map.put("0-3岁", a);
            map.put("3-16岁", b);
            map.put("16-40岁", c);
            map.put("40-60岁", d);
            map.put("60岁以上", e);
        }
        map.put("0-3岁", a);
        map.put("3-16岁", b);
        map.put("16-40岁", c);
        map.put("40-60岁", d);
        map.put("60岁以上", e);
        List<PieChartVo> pieChartVoList = new ArrayList<>();
        assert map != null;
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            PieChartVo pieChartVo = new PieChartVo();
            pieChartVo.setName(entry.getKey());
@@ -551,44 +384,37 @@
    }
    //获取体检异常数
    private List<PieChartVo> getTjorderAbnormalCountMap(List<TjOrder> orderList) {
    private List<PieChartVo> getTjorderAbnormalCountMap() {
        int a = 0;
        int b = 0;
        int c = 0;
        int d = 0;
        int e = 0;
        Map<String, Object> map = null;
        for (TjOrder tjOrder : orderList) {
            map = new HashMap<>();
            LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
            wq.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
            wq.eq(TjOrderDetail::getExceptionDesc, 1);
            List<TjOrderDetail> list = detailService.list(wq);
            if (null != list && list.size() > 0) {
                TjCustomer customer = customerService.getById(tjOrder.getUserId());
                if (null != customer) {
                    int age = DateUtil.ageOfNow(customer.getCusBrithday());
                    if (age >= 0 && age <= 3) {
                        a += 1;
                    } else if (age > 3 && age <= 16) {
                        b += 1;
                    } else if (age > 16 && age <= 40) {
                        c += 1;
                    } else if (age > 40 && age <= 60) {
                        d += 1;
                    } else {
                        e += 1;
                    }
        Map<String, Object> map = new HashMap<>();
        Date date=new Date();
        List<TjCustomer> customers = hysqdService.getHyYcXmList(DateUtil.offsetMonth(date, -1), date);
        if (null != customers && !customers.isEmpty()) {
        for (TjCustomer customer : customers) {
                int age = DateUtil.ageOfNow(customer.getCusBrithday());
                if (age >= 0 && age <= 3) {
                    a += 1;
                } else if (age > 3 && age <= 16) {
                    b += 1;
                } else if (age > 16 && age <= 40) {
                    c += 1;
                } else if (age > 40 && age <= 60) {
                    d += 1;
                } else {
                    e += 1;
                }
                map.put("0-3岁", a);
                map.put("3-16岁", b);
                map.put("16-40岁", c);
                map.put("40-60岁", d);
                map.put("60岁以上", e);
            }
        }
        map.put("0-3岁", a);
        map.put("3-16岁", b);
        map.put("16-40岁", c);
        map.put("40-60岁", d);
        map.put("60岁以上", e);
        List<PieChartVo> pieChartVoList = new ArrayList<>();
        assert map != null;
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            PieChartVo pieChartVo = new PieChartVo();
            pieChartVo.setName(entry.getKey());
@@ -609,7 +435,12 @@
    public Integer ToBeToday() {
        //当前日期拼接开始和结束时间
        //时间字符串类型转换时间类型
        return orderService.count(new QueryWrapper<TjOrder>().between("create_time", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date())).eq("check_status", 0));
        return orderService.count(new QueryWrapper<TjOrder>()
                .between("create_time", DateUtil.beginOfDay(new Date()),
                        DateUtil.endOfDay(new Date()))
                .isNotNull("finish_time")
                .eq("check_status", 0)
                .ne("tj_category","13"));
    }
    /**
@@ -622,7 +453,10 @@
    public Integer checkedToday() {
        //当前日期拼接开始和结束时间
        //时间字符串类型转换时间类型
        return orderService.count(new QueryWrapper<TjOrder>().isNotNull("finish_time").between("finish_time", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date())));
        return orderService.count(new QueryWrapper<TjOrder>()
                .isNotNull("finish_time")
                .between("create_time", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()))
                .last("and (check_status=1 OR tj_category=13)"));
    }
    /**
@@ -633,7 +467,9 @@
    public Integer ReportToday() {
        //当前日期拼接开始和结束时间
        //时间字符串类型转换时间类型
        return orderService.count(new QueryWrapper<TjOrder>().isNotNull("report_time").between("report_time", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date())));
        return orderService.count(new QueryWrapper<TjOrder>()
                .isNotNull("report_time")
                .between("create_time", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date())));
    }
    /**
@@ -644,7 +480,8 @@
    @GetMapping("/registerToday")
    @ApiOperation(value = "查询今日登记")
    public Integer RegisterToday() {
        return orderService.count(new QueryWrapper<TjOrder>().between("create_time", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date())));
        return orderService.count(new QueryWrapper<TjOrder>()
                .between("create_time", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date())));
    }
@@ -719,13 +556,14 @@
        Integer tuan=0;
        BigDecimal shouyi=new BigDecimal(0);
        for (TjOrder tjOrder : list) {
            final TjCustomer byId = customerService.getById(tjOrder.getUserId());
            if (byId.getCusSex()==0){
                boys+=1;
            }else if (byId.getCusSex()==1){
                girls+=1;
            TjCustomer customer = customerService.getById(tjOrder.getUserId());
            if(null !=customer){
                if (customer.getCusSex()==0){
                    boys+=1;
                }else if (customer.getCusSex()==1){
                    girls+=1;
                }
            }
            if ("2".equals(tjOrder.getTjType())){
                person+=1;
            } else if ("1".equals(tjOrder.getTjType())) {
@@ -736,7 +574,10 @@
            wqqq.eq(TjFlowingWater::getOrderId,tjOrder.getOrderId());
            final List<TjFlowingWater> list1 = tjFlowingWaterService.list(wqqq);
            for (TjFlowingWater tjFlowingWater : list1) {
                shouyi.add(tjFlowingWater.getPaidIn());
                if(null !=tjFlowingWater.getPaidIn()){
                    shouyi.add(tjFlowingWater.getPaidIn());
                }
            }
        }
        chartVo.setBoysNum(boys);