package com.xiaopeng.maintenance.controller; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRecord; import com.xiaopeng.api.vo.account.LoginOperationUser; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleDto; import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleListPageDto; import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInLocationVo; import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInRuleVo; import com.xiaopeng.maintenance.model.vo.CheckInMessageVo; import com.xiaopeng.maintenance.model.vo.RealTimePositionVo; import com.xiaopeng.maintenance.service.IXpCruiseCheckInRecordService; import com.xiaopeng.maintenance.service.IXpCruiseCheckInRuleService; import com.xiaopeng.maintenance.vo.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.List; /** * 巡游打卡规则 */ @RestController @RequestMapping("") @Slf4j public class XpCruiseCheckInRuleController { @Resource public IXpCruiseCheckInRuleService xpCruiseCheckInRuleService; @Resource private TokenService tokenService; @Resource private IXpCruiseCheckInRecordService xpCruiseCheckInRecordService; @ApiOperation(value = "获取个人中心巡游打卡任务", tags = {"运维APP-个人中心"}) @GetMapping("/maintenance-app/api/v1/cruiseCheckInRule/getMyXpCruiseCheckInRule") public R getMyXpCruiseCheckInRule() { LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); AppXpCruiseCheckInRuleVo myXpCruiseCheckInRule = xpCruiseCheckInRuleService.getMyXpCruiseCheckInRule(loginOperationUser.getId()); return R.ok(myXpCruiseCheckInRule); } @ApiOperation(value = "获取巡游打卡定位列表", tags = {"运维APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(value = "任务id", name = "id", required = true, dataType = "Integer") }) @GetMapping("/maintenance-app/api/v1/cruiseCheckInRule/getAppXpCruiseCheckInLocation/{id}") public R> getAppXpCruiseCheckInLocation(@PathVariable("id") Integer id){ LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); List appXpCruiseCheckInLocation = xpCruiseCheckInRuleService.getAppXpCruiseCheckInLocation(id, loginOperationUser.getId()); return R.ok(appXpCruiseCheckInLocation); } @ApiOperation(value = "巡游打卡操作", tags = {"运维APP-个人中心"}) @PostMapping("/maintenance-app/api/v1/cruiseCheckInRule/saveCruiseCheckInRecord") public R saveCruiseCheckInRecord(@RequestBody XpCruiseCheckInRecord dto){ LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); dto.setOperationsUserId(loginOperationUser.getId()); Long id = xpCruiseCheckInRuleService.saveCruiseCheckInRecord(dto); XpCruiseCheckInRecord cruiseCheckInRecordInfo = xpCruiseCheckInRecordService.getById(id); return R.ok(cruiseCheckInRecordInfo); } @ApiOperation(value = "巡游打卡5秒钟轮询上传实时位置", tags = {"运维APP-个人中心"}) @PostMapping("/maintenance-app/api/v1/cruiseCheckInRule/uploadRealTimePosition") public R uploadRealTimePosition(@RequestBody RealTimePositionVo dto){ LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); CheckInMessageVo checkInMessageVo = xpCruiseCheckInRuleService.uploadRealTimePosition(dto, loginOperationUser.getId()); return R.ok(checkInMessageVo); } @ApiOperation(value = "获取打卡结果详情", tags = {"运维APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(value = "任务id", name = "id", required = true, dataType = "Integer"), @ApiImplicitParam(value = "打卡点位id", name = "locationId", required = true, dataType = "Long") }) @GetMapping("/maintenance-app/api/v1/cruiseCheckInRule/getCruiseCheckInRecordInfo/{id}/{locationId}") public R getCruiseCheckInRecordInfo(@PathVariable("id") Integer id, @PathVariable("locationId") Long locationId) { LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser(); XpCruiseCheckInRecord cruiseCheckInRecordInfo = xpCruiseCheckInRuleService.getCruiseCheckInRecordInfo(id, locationId, loginOperationUser.getId()); return R.ok(cruiseCheckInRecordInfo); } @ApiOperation(value = "查询巡游打卡规则列表", tags = {"管理后台-巡游打卡规则管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/getXpCruiseCheckInRuleListPage") public R> getXpCruiseCheckInRuleListPage(XpCruiseCheckInRuleListPageDto dto){ Page pageInfo = PageInfo.of(dto.getPageNum(), dto.getPageSize()); List xpCruiseCheckInRuleListPage = xpCruiseCheckInRuleService.getXpCruiseCheckInRuleListPage(pageInfo, dto); pageInfo.setRecords(xpCruiseCheckInRuleListPage); return R.ok(pageInfo); } @ApiOperation(value = "添加巡游打卡规则", tags = {"管理后台-巡游打卡规则管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/addXpCruiseCheckInRule") public R addXpCruiseCheckInRule(@RequestBody XpCruiseCheckInRuleDto dto){ xpCruiseCheckInRuleService.addXpCruiseCheckInRule(dto); return R.ok(); } @ApiOperation(value = "删除巡游打卡规则", tags = {"管理后台-巡游打卡规则管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/delXpCruiseCheckInRule/{id}") public R delXpCruiseCheckInRule(@PathVariable("id") Integer id){ xpCruiseCheckInRuleService.removeById(id); return R.ok(); } @ApiOperation(value = "获取打卡规则详情", tags = {"管理后台-巡游打卡规则管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/getXpCruiseCheckInRuleInfo/{id}") public R getXpCruiseCheckInRuleInfo(@PathVariable("id") Integer id){ XpCruiseCheckInRuleInfoVo xpCruiseCheckInRuleInfo = xpCruiseCheckInRuleService.getXpCruiseCheckInRuleInfo(id); return R.ok(xpCruiseCheckInRuleInfo); } @ApiOperation(value = "查询巡游打卡记录列表", tags = {"管理后台-巡游打卡管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/pageList") public R> pageList(@RequestBody XpCruiseCheckInRecordQuery query) { PageInfo pageInfo = xpCruiseCheckInRecordService.pageList(query); return R.ok(pageInfo); } @ApiOperation(value = "查询巡游打卡记录详情", tags = {"管理后台-巡游打卡管理"}) @GetMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/{id}") public R detail(@PathVariable("id")Long id) { XpCruiseCheckInRecordVO xpCruiseCheckInRecordVO = xpCruiseCheckInRecordService.detail(id); return R.ok(xpCruiseCheckInRecordVO); } @ApiOperation(value = "巡游打卡统计", tags = {"管理后台-巡游打卡管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/statistic") public R> pageList(@RequestBody XpCruiseCheckInStatisticsQuery query) { return R.ok(xpCruiseCheckInRecordService.statistics(query)); } @ApiOperation(value = "查询巡游打卡记录列表导出", tags = {"管理后台-巡游打卡管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/export") public R> pageListExport(@RequestBody XpCruiseCheckInRecordQuery query, HttpServletResponse response) { List list = xpCruiseCheckInRecordService.all(query); Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), XpCruiseCheckInRecordVO.class, list); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode("巡游打卡记录.xls", "utf-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName); outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.flush(); } catch (IOException e) { log.error("导出巡游打卡记录失败", e); } finally { try { if (outputStream != null) { outputStream.close(); } if (workbook != null) { workbook.close(); } } catch (IOException e) { log.error("关闭输出流失败", e); } } return R.ok(); } }