package cn.cetc54.platform.zhyl.api; import cn.cetc54.platform.core.common.utils.ResultUtil; import cn.cetc54.platform.core.common.vo.Result; import cn.cetc54.platform.zhyl.entity.*; import cn.cetc54.platform.zhyl.entity.vo.FwjgCount; import cn.cetc54.platform.zhyl.entity.vo.FwnlAndOrderCount; import cn.cetc54.platform.zhyl.entity.vo.OrderByExecute; import cn.cetc54.platform.zhyl.service.*; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.*; import java.util.stream.Collectors; @Slf4j @RestController @Api(description = "服务机构页面接口") @RequestMapping("/api2/fwjg") @Transactional @CrossOrigin("*") public class FwjgController { @Autowired private IOrgFuwuService iOrgFuwuService; @Autowired private IFuwuPersonService iFuwuPersonService; @Autowired private IOrderService iOrderService; @Autowired private IFuwuDetailsService iFuwuDetailsService; @RequestMapping(value = "/getCountByAreaId", method = RequestMethod.GET) @ApiOperation(value = "根据区域id获取区域下所有机构和人员数量以及订单总数") public Result getCountByAreaId(String areaId){ if (StrUtil.isNotBlank(areaId)&&areaId.equals("130100")){ //如果是全市 areaId设置未空 areaId = null; } QueryWrapper wrapper = new QueryWrapper<>(); if (StrUtil.isNotEmpty(areaId)){ wrapper.eq("area_id",areaId); } int orgFuwuCount = iOrgFuwuService.count(wrapper); QueryWrapper wrapper1 = new QueryWrapper<>(); if (StrUtil.isNotEmpty(areaId)){ wrapper1.eq("area_id",areaId); } int fuwuPersonCount = iFuwuPersonService.count(wrapper1); QueryWrapper wrapper2 = new QueryWrapper<>(); if (StrUtil.isNotEmpty(areaId)){ wrapper2.eq("area_id",areaId); } int orderCount = iOrderService.count(wrapper2); QueryWrapper wrapper3 = new QueryWrapper<>(); if (StrUtil.isNotEmpty(areaId)){ wrapper3.eq("area_id",areaId); } wrapper3.eq("state",0); int orderCount2 = iOrderService.count(wrapper3); FwjgCount fwjgCount=new FwjgCount(); fwjgCount.setFwjgCount(orgFuwuCount); fwjgCount.setFwPersonCount(fuwuPersonCount); fwjgCount.setOrderCount(orderCount); fwjgCount.setOrderWatch((orderCount2/orderCount)*100+"%"); return new ResultUtil<>().setData(fwjgCount); } @RequestMapping(value = "/getFwnlByAreaId", method = RequestMethod.GET) @ApiOperation(value = "根据区域id获取区域下所有实际服务以及服务订单数") public Result getFwnlByAreaId(String areaId){ if (StrUtil.isNotBlank(areaId)&&areaId.equals("130100")){ //如果是全市 areaId设置未空 areaId = null; } QueryWrapper wrapper = new QueryWrapper<>(); wrapper.isNull("pid"); List list = iFuwuDetailsService.list(wrapper); List fwnlAndOrderCountList=new ArrayList<>(); for (FuwuDetails fuwuDetails : list) { QueryWrapper wrapper1 = new QueryWrapper<>(); wrapper1.eq("pid",fuwuDetails.getId()); List list1 = iFuwuDetailsService.list(wrapper1); for (FuwuDetails details : list1) { QueryWrapper wrapper2 = new QueryWrapper<>(); if (StrUtil.isNotBlank(areaId)){ wrapper2.eq("area_id",areaId); } wrapper2.eq("detail_id",details.getId()); int count = iOrderService.count(wrapper2); details.setOrderNumber(count); } FwnlAndOrderCount fwnlAndOrderCount=new FwnlAndOrderCount(); fwnlAndOrderCount.setFuwuDetails(fuwuDetails); fwnlAndOrderCount.setFuwuDetailsList(list1); fwnlAndOrderCountList.add(fwnlAndOrderCount); } return new ResultUtil().setData(fwnlAndOrderCountList); } @RequestMapping(value = "/getFwjgOrderByOrderNumber", method = RequestMethod.GET) @ApiOperation(value = "根据区域id和订单量查询服务机构排名情况") public Result getFwjgOrderByOrderNumber(String areaId){ if (StrUtil.isNotBlank(areaId)&&areaId.equals("130100")){ //如果是全市 areaId设置未空 areaId = null; } QueryWrapper wrapper = new QueryWrapper<>(); if (StrUtil.isNotEmpty(areaId)){ wrapper.eq("area_id",areaId); } List list = iOrgFuwuService.list(wrapper); for (OrgFuwu orgFuwu : list) { orgFuwu.setOrderNumber(iOrderService.getOrderNum(orgFuwu.getId())); } List collectList = list.stream().sorted(Comparator.comparing(OrgFuwu::getOrderNumber).reversed()).collect(Collectors.toList()); List resList = collectList.size()>10?collectList.subList(0,10):collectList; return new ResultUtil().setData(resList); } @RequestMapping(value = "/getFuwuDetailsOrderByOrderNumber", method = RequestMethod.GET) @ApiOperation(value = "根据区域id和订单量查询实际服务排名情况") public Result getFuwuDetailsOrderByOrderNumber(String areaId){ if (StrUtil.isNotBlank(areaId)&&areaId.equals("130100")){ //如果是全市 areaId设置未空 areaId = null; } QueryWrapper wrapper = new QueryWrapper<>(); wrapper.isNotNull("pid"); wrapper.eq("del_flag",0); List list = iFuwuDetailsService.list(wrapper); for (FuwuDetails fuwuDetails : list) { QueryWrapper wrapper3 = new QueryWrapper<>(); if (StrUtil.isNotBlank(areaId)){ wrapper3.eq("area_id",areaId); } wrapper3.eq("detail_id",fuwuDetails.getId()); int count = iOrderService.count(wrapper3); fuwuDetails.setOrderNumber(count); } List collectList = list.stream().sorted(Comparator.comparing(FuwuDetails::getOrderNumber).reversed()).collect(Collectors.toList()); List resList = collectList.size()>10?collectList.subList(0,10):collectList; return ResultUtil.data(resList); } @RequestMapping(value = "/getOrder", method = RequestMethod.GET) @ApiOperation(value = "执行中订单") public Result getOrder(String areaId){ if (StrUtil.isNotBlank(areaId)&&areaId.equals("130100")){ //如果是全市 areaId设置未空 areaId = null; } QueryWrapper wrapper = new QueryWrapper<>(); if (StrUtil.isNotBlank(areaId)){ wrapper.eq("area_id",areaId); } wrapper.eq("state",0); wrapper.orderByDesc("create_time"); wrapper.last(" limit 10"); List list = iOrderService.list(wrapper); int count = iOrderService.count(wrapper); List orderByExecuteList=new ArrayList<>(); for (Order order : list) { OrderByExecute orderByExecute=new OrderByExecute(); orderByExecute.setOrder(order); FuwuPerson person = iFuwuPersonService.getById(order.getPersonId()); orderByExecute.setFuwuPerson(person); FuwuDetails fuwuDetail = iFuwuDetailsService.getById(order.getDetailId()); orderByExecute.setFuwuDetails(fuwuDetail); orderByExecuteList.add(orderByExecute); } Map map=new HashMap<>(); map.put("count",count); map.put("orderByExecuteList",orderByExecuteList); return new ResultUtil().setData(map); } }