package cn.cetc54.platform.zhyl.api; import cn.cetc54.platform.core.common.utils.PageUtil; import cn.cetc54.platform.core.common.utils.ResultUtil; import cn.cetc54.platform.core.common.vo.PageVo; 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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; 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.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.sql.Wrapper; import java.util.*; import java.util.stream.Collectors; @Slf4j @RestController @Api(description = "服务机构页面接口") @RequestMapping("/api/fwjg") @Transactional public class FwjgController { @Autowired private IAreaService iAreaService; @Autowired private IOrgFuwuService iOrgFuwuService; @Autowired private IFuwuPersonService iFuwuPersonService; @Autowired private IOrderService iOrderService; @Autowired private IFuwuDetailsService iFuwuDetailsService; @RequestMapping(value = "/getByPage", method = RequestMethod.GET) @ApiOperation(value = "分页获取所有") public Result> getByPage(PageVo page){ IPage data = iAreaService.page(PageUtil.initMpPage(page)); return new ResultUtil>().setData(data); } @RequestMapping(value = "/getCountByAreaId", method = RequestMethod.GET) @ApiOperation(value = "根据区域id获取区域下所有机构和人员数量以及订单总数") public Result getCountByAreaId(String areaId){ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("area_id",areaId); int orgFuwuCount = iOrgFuwuService.count(wrapper); QueryWrapper wrapper1 = new QueryWrapper<>(); wrapper1.eq("area_id",areaId); int fuwuPersonCount = iFuwuPersonService.count(wrapper1); QueryWrapper wrapper2 = new QueryWrapper<>(); wrapper2.eq("area_id",areaId); int orderCount = iOrderService.count(wrapper2); QueryWrapper wrapper3 = new QueryWrapper<>(); wrapper2.eq("area_id",areaId); wrapper2.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){ 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<>(); 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){ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("area_id",areaId); List list = iOrgFuwuService.list(wrapper); for (OrgFuwu orgFuwu : list) { QueryWrapper wrapper1 = new QueryWrapper<>(); wrapper1.isNull("pid"); wrapper1.eq("org_fw_id",orgFuwu.getId()); List list1 = iFuwuDetailsService.list(wrapper1); int orgFuwuCount=0; for (FuwuDetails fuwuDetails : list1) { QueryWrapper wrapper2 = new QueryWrapper<>(); wrapper2.eq("pid",fuwuDetails.getId()); List list2 = iFuwuDetailsService.list(wrapper2); int fuwuDetailsCount=0; for (FuwuDetails details : list2) { QueryWrapper wrapper3 = new QueryWrapper<>(); wrapper3.eq("area_id",areaId); wrapper3.eq("detail_id",details.getId()); int count = iOrderService.count(wrapper3); fuwuDetailsCount+=count; } orgFuwuCount+=fuwuDetailsCount; } orgFuwu.setOrderNumber(orgFuwuCount); } List collectList = list.stream().sorted(Comparator.comparing(OrgFuwu::getOrderNumber)).collect(Collectors.toList()); return new ResultUtil().setData(collectList.subList(0,10)); } @RequestMapping(value = "/getFuwuDetailsOrderByOrderNumber", method = RequestMethod.GET) @ApiOperation(value = "根据区域id和订单量查询实际服务排名情况") public Result getFuwuDetailsOrderByOrderNumber(String areaId){ 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<>(); 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)).collect(Collectors.toList()); return new ResultUtil().setData(collectList.subList(0,10)); } @RequestMapping(value = "/getOrder", method = RequestMethod.GET) @ApiOperation(value = "执行中订单") public Result getOrder(String areaId){ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("area_id",areaId); wrapper.eq("state",0); wrapper.orderByAsc("creat_time"); 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); } }