lige
2024-01-24 f4634091d71bc3e99df179d5976b9c59a24ca5f7
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjHomePageController.java
@@ -6,8 +6,10 @@
import com.ltkj.common.core.domain.AjaxResult;
import com.ltkj.common.core.domain.entity.SysDept;
import com.ltkj.common.core.domain.entity.SysUser;
import com.ltkj.common.core.redis.RedisCache;
import com.ltkj.common.utils.DateUtils;
import com.ltkj.hosp.domain.*;
import com.ltkj.hosp.dto.TjChartVo;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.vodomain.*;
import com.ltkj.system.service.ISysDeptService;
@@ -15,10 +17,12 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -43,11 +47,18 @@
    @Resource
    private ITjProjectService projectService;
    @Resource
    private RedisCache redisCache;
    @Resource
    private TjAsyncService asyncService;
    @Resource
    private ISysDeptService deptService;
    @Resource
    private ISysUserService userService;
    @Resource
    private ITjOrderRemarkService remarkService;
    @Resource
    private ITjFlowingWaterService tjFlowingWaterService;
    @GetMapping("/GetChartByDate")
@@ -295,7 +306,6 @@
                    if (s.equals(tjOrder.getCheckDoctor()) && tjOrder.getReleaseTime() != null) {
                        releaseCount++;
                    }
                    // TODO: 2023/3/31 发送短信/邮件统计
                    if (s.equals(tjOrder.getCheckDoctor()) && "1".equals(tjOrder.getSendEmail())) {
                        messageCount++;
                    }
@@ -317,7 +327,7 @@
    @GetMapping("/GetAbnormalData")
    @ApiOperation(value = "体检结果异常数据统计分析")
    @PreAuthorize("@ss.hasPermi('home:page:GetAbnormalData')")
//    @PreAuthorize("@ss.hasPermi('home:page:GetAbnormalData')")
    public List<AbnormalVO> GetAbnormalData(@RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate) {
        List<AbnormalVO> list = new ArrayList<>();
        List<TjOrderDetail> list1 = detailService.getTjOrderDetailList(startDate,endDate);
@@ -400,7 +410,7 @@
    @GetMapping("/getDiseaseList")
    @ApiOperation("根据疾病名称查询相关人员信息接口")
    @PreAuthorize("@ss.hasPermi('home:page:getDiseaseList')")
//    @PreAuthorize("@ss.hasPermi('home:page:getDiseaseList')")
    public AjaxResult getDiseaseList(@ApiParam(value = "疾病名称") @RequestParam String disesseName,
                                     @ApiParam(value = "开始时间") @RequestParam(required = false) String beginTime,
                                     @ApiParam(value = "结束时间") @RequestParam(required = false) String endTime) {
@@ -446,7 +456,16 @@
    @GetMapping("/getLineChart")
    @ApiOperation(value = "首页折线图数据")
    public AjaxResult getLineChart() {
        List<Map<Object, Object>> line = orderService.getLine();
        asyncService.getLineChart();
        if(redisCache.hasKey("getLineChart")){
            return redisCache.getCacheObject("getLineChart");
        }
        return getResult();
    }
    private AjaxResult getResult() {
//        List<Map<Object, Object>> line = orderService.getLine();
        List<LineChartsVo> line = orderService.getLine();
        Collections.reverse(line);
        return AjaxResult.success("折线图数据", line);
    }
@@ -454,6 +473,14 @@
    @GetMapping("/getPieChart")
    @ApiOperation(value = "首页饼状图登记人数接口")
    public AjaxResult getPieChart() {
        asyncService.getPieChart();
        if(redisCache.hasKey("getPieChart")){
            return redisCache.getCacheObject("getPieChart");
        }
        return getAjaxResult();
    }
    private AjaxResult getAjaxResult() {
        Map<String, Object> map = new HashMap<>();
        //获取体检登记数
@@ -477,6 +504,7 @@
        } else {
            map.put("tjyc", 0);
        }
        return AjaxResult.success(map);
    }
@@ -618,4 +646,116 @@
    public Integer RegisterToday() {
        return orderService.count(new QueryWrapper<TjOrder>().between("create_time", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date())));
    }
    @GetMapping("/getChartByDeptId")
    @ApiOperation("根据部门查询体检统计")
    public AjaxResult getChartByDeptId(@RequestParam Long deptId,
                                       @ApiParam(value = "开始时间") @RequestParam(required = false) String beginTime,
                                       @ApiParam(value = "结束时间") @RequestParam(required = false) String endTime) {
        List<TjChartVo> res=new ArrayList();
        LambdaQueryWrapper<TjOrderRemark> wq0 = new LambdaQueryWrapper<>();
        wq0.eq(TjOrderRemark::getDeptId, deptId);
        List<TjOrderRemark> remarkList = remarkService.list(wq0);
        List<Long> proIdList = remarkList.stream().map(TjOrderRemark::getProId).distinct().collect(Collectors.toList());
        for (Long aLong : proIdList) {
            LambdaQueryWrapper<TjOrderRemark> wq00 = new LambdaQueryWrapper<>();
            wq00.eq(TjOrderRemark::getDeptId, deptId);
            List<TjOrderRemark> remarkList1 = remarkService.list(wq00);
            Integer num1=0;
            Integer num2=0;
            Integer num3=0;
            Integer num4=0;
            TjChartVo chartVo=new TjChartVo();
            chartVo.setDeptId(deptId);
            chartVo.setDeptName(deptService.getById(deptId).getDeptName());
            for (TjOrderRemark tjOrderRemark : remarkList1) {
                if (tjOrderRemark.getType()==1){
                    num1+=1;
                }else if (tjOrderRemark.getType()==0){
                    num1+=1;
                }else if (tjOrderRemark.getType()==3){
                    num1+=1;
                }else if (tjOrderRemark.getType()==2){
                    num1+=1;
                }
            }
            chartVo.setYijianNum(String.valueOf(num1));
            chartVo.setWeijianNum(String.valueOf(num2));
            chartVo.setYanqiNum(String.valueOf(num3));
            chartVo.setQijianNum(String.valueOf(num4));
            res.add(chartVo);
        }
        return AjaxResult.success(res);
    }
    @GetMapping("/getTiaoByDeptId")
    @ApiOperation("根据部门和时间段查询体检统计图表")
    public AjaxResult getTiaoByDeptId(@RequestParam Long deptId,
                                       @ApiParam(value = "开始时间") @RequestParam(required = false) String beginTime,
                                       @ApiParam(value = "结束时间") @RequestParam(required = false) String endTime) {
        return AjaxResult.success();
    }
    @GetMapping("/getTiaoNumsByDate")
    @ApiOperation("根据时间查询体检统计图表")
    public AjaxResult getTiaoNumsByDate(@ApiParam(value = "开始时间")String beginTime,
                                      @ApiParam(value = "结束时间") String endTime) {
        TjChartVo chartVo=new TjChartVo();
        LambdaQueryWrapper<TjOrder> wqq = new LambdaQueryWrapper<>();
        wqq.gt(TjOrder::getStatus,200);
        if (null != beginTime && null != endTime) {
            wqq.between(TjOrder::getCreateTime, beginTime, endTime);
        }
        final List<TjOrder> list = orderService.list(wqq);
        chartVo.setTijianNum(list.size());
        Integer boys=0;
        Integer girls=0;
        Integer person=0;
        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;
            }
            if ("2".equals(tjOrder.getTjType())){
                person+=1;
            } else if ("1".equals(tjOrder.getTjType())) {
                tuan+=1;
            }
            //计算收益
            LambdaQueryWrapper<TjFlowingWater> wqqq=new LambdaQueryWrapper<>();
            wqqq.eq(TjFlowingWater::getOrderId,tjOrder.getOrderId());
            final List<TjFlowingWater> list1 = tjFlowingWaterService.list(wqqq);
            for (TjFlowingWater tjFlowingWater : list1) {
                shouyi.add(tjFlowingWater.getPaidIn());
            }
        }
        chartVo.setBoysNum(boys);
        chartVo.setGirlsNum(girls);
        chartVo.setPersonNum(person);
        chartVo.setTuanDuiNum(tuan);
        chartVo.setMoneysNum(shouyi);
        return AjaxResult.success(chartVo);
    }
    @GetMapping("/getListByTjNumber")
    @ApiOperation("根据体检号下的项目列表")
    public AjaxResult getListByTjNumber(@RequestParam String tjNumber) {
        LambdaQueryWrapper<TjOrderRemark> wq0 = new LambdaQueryWrapper<>();
        wq0.eq(TjOrderRemark::getTjNumber, tjNumber);
        List<TjOrderRemark> remarkList = remarkService.list(wq0);
        return AjaxResult.success(remarkList);
    }
}