forked from kidgrow-microservices-platform

zhaoxiaohao
2020-11-25 6398ac4a3b9cf7d9f36756307aa1448e1e215e0c
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
@@ -12,6 +12,7 @@
import com.kidgrow.oprationcenter.service.IProductOrderDetailService;
import com.kidgrow.oprationcenter.service.IProductOrderRecordService;
import com.kidgrow.oprationcenter.service.IProductOrderService;
import com.kidgrow.oprationcenter.vo.OrderChartVo;
import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail;
import com.kidgrow.oprationcenter.vo.UserProductData;
import com.kidgrow.usercenter.feign.SysUserService;
@@ -29,9 +30,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
@@ -91,6 +90,22 @@
        }
        return productOrderDetailService.all(params);
    }
    /**
     * 列表
     */
    @ApiOperation(value = "查询列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"),
            @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
    })
    @GetMapping("alldetail")
    public PageResult alldetail(@RequestParam Map<String, Object> params) {
        if (params.size() == 0) {
            params.put("page", 1);
            params.put("limit", 10);
        }
        return productOrderDetailService.departmentProductDetail(params);
    }
    /**
     * 列表
@@ -127,7 +142,22 @@
        }
        return productOrderDetailService.groupList(params);
    }
    /**
     * 查询到期列表
     */
    @ApiOperation(value = "查询到期列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"),
            @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
    })
    @GetMapping("/productEnd")
    public PageResult productEndList(@RequestParam Map<String, Object> params) {
        if (params.size() == 0) {
            params.put("page", 1);
            params.put("limit", 10);
        }
        return productOrderDetailService.productEndList(params);
    }
    /**
     * 获取医院套餐是否到期和到期时间
     * data内 isend为true说明套餐到期
@@ -135,13 +165,14 @@
     *
     * @param hospitalId
     * @param departmentId
     * @param diagnosticId
     * @return
     */
    @ApiOperation(value = "获取医院套餐是否到期和到期时间")
    @GetMapping("/UserProductDetailData")
    public ResultBody UserProductDetailData(@RequestParam Long hospitalId, @RequestParam Long departmentId) {
        return productOrderDetailService.UserProductDetailData(hospitalId, departmentId);
    public ResultBody<UserProductData> serProductDetailData(@RequestParam Long hospitalId, @RequestParam Long departmentId,@RequestParam String diagnosticId) {
        return productOrderDetailService.userProductDetailData(hospitalId, departmentId,diagnosticId);
    }
    /**
@@ -154,8 +185,8 @@
    @ApiOperation(value = "获取医院套餐是否到期和到期时间")
    @PostMapping("/serviceperiod")
    public ResultBody<UserProductData> ServicePeriod(@RequestBody HospitalInfo hospitalInfo) {
        return productOrderDetailService.UserProductDetailData(hospitalInfo.getHospitalId(), hospitalInfo.getDepartmentId());
    public ResultBody<UserProductData> servicePeriod(@RequestBody HospitalInfo hospitalInfo) {
        return productOrderDetailService.userProductDetailData(hospitalInfo.getHospitalId(), hospitalInfo.getDepartmentId(),hospitalInfo.getDiagnosticId());
    }
    /**
@@ -361,4 +392,72 @@
    public ResultBody getTypeByUser(@LoginUser SysUser sysUser) {
        return productOrderDetailService.getTypeByUser(sysUser);
    }
    /**
     * 统计获取数据量
     * @param datatype
     * 0 试用审核量
     * 1 套餐总量
     * 2 未处理用户反馈
     * 3 未处理数据需求
     * @return
     */
    @ApiOperation(value = "统计获取数据量")
    @GetMapping("/oprationChart")
    public ResultBody oprationChart(int datatype) {
        int counts=productOrderDetailService.oprationChart(datatype);
        return ResultBody.ok().data(counts).msg("数据获取成功!") ;
    }
    /**
     * 按指定类型统计合同数量
     * @param params
     *    datatype     1 按年
     *                 2 按月
     *                 3 按天
     *                 4 按周
     *    beginTime 查询时间段的开始时间
     *    endTime   结束时间
     * @return
     */
    @ApiOperation(value = "按指定类型统计合同数量")
    @GetMapping("/productOrderChart")
    public ResultBody productOrderChart(@RequestParam  Map<String, Object> params) {
        List<OrderChartVo> orderChartVo=productOrderDetailService.productOrderChart(params);
        return ResultBody.ok().data(orderChartVo).msg("数据获取成功!") ;
    }
    /**
     * 统计产品的使用数量
     * @return  ccount 是数量
     *          units 是产品名称
     */
    @ApiOperation(value = "统计产品的使用数量")
    @GetMapping("/proCountChart")
    public ResultBody proCountChart() {
        List<OrderChartVo> orderChartVo=productOrderDetailService.proCountChart();
        return ResultBody.ok().data(orderChartVo).msg("数据获取成功!") ;
    }
    /**
     * 获取软件服务周期 和 读片总量
     *
     */
    @ApiOperation(value = "获取软件服务周期")
    @GetMapping("/getContractBeginEndTimeAndNum")
    public ResultBody getContractBeginEndTimeAndNum(@RequestParam("departmentId") Long departmentId) {
       Map<String,Object> map = new HashMap<>();
        map.put("department_id",departmentId);
        map.put("enabled",true);
        map.put("is_del",false);
        List<ProductOrder> productOrders = productOrderService.listByMap(map);
        IntSummaryStatistics intSummaryStatistics = productOrders.stream().mapToInt((x) -> x.getContractNum()).summaryStatistics();
        Date minDate = productOrders.stream().map(e -> e.getContractBeginTime()).min((e1, e2) -> e1.compareTo(e2)).get();
        Date manDate = productOrders.stream().map(e -> e.getContractEndTime()).max((e1, e2) -> e1.compareTo(e2)).get();
        map = new HashMap<>();
        map.put("count",intSummaryStatistics.getSum());
        map.put("beginTime",minDate);
        map.put("endTime",manDate);
        return  ResultBody.ok().data(map);
    }
}