package com.qianwen.smartman.modules.mdc.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.List; import javax.validation.Valid; import com.qianwen.smartman.common.cache.RegionCache; import com.qianwen.smartman.common.constant.DateConstant; import com.qianwen.smartman.common.constant.ExcelConstant; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.mp.support.Query; import com.qianwen.core.oss.model.BladeFile; import com.qianwen.core.scanner.modular.annotation.PostResource; import com.qianwen.core.scanner.modular.stereotype.ApiResource; import com.qianwen.core.secure.annotation.PreAuth; import com.qianwen.core.tool.api.R; import com.qianwen.smartman.modules.mdc.service.IStatusRecordService; import com.qianwen.smartman.modules.mdc.service.IWorkstationFeedbackService; import com.qianwen.smartman.modules.mdc.vo.ChartDataVO; import com.qianwen.smartman.modules.mdc.vo.CrossDayStateVO; import com.qianwen.smartman.modules.mdc.vo.StatusRecordDateSelectVO; import com.qianwen.smartman.modules.mdc.vo.StatusRecordDateTimeSelectVO; import com.qianwen.smartman.modules.mdc.vo.StatusRecordDateVO; import com.qianwen.smartman.modules.mdc.vo.StatusRecordDetailSelectVO; import com.qianwen.smartman.modules.mdc.vo.StatusRecordShiftIndexChartVO; import com.qianwen.smartman.modules.mdc.vo.StatusRecordWorkstationSelectVO; import com.qianwen.smartman.modules.mdc.vo.StatusRecordWorkstationVO; import com.qianwen.smartman.modules.mdc.vo.SuperAggregateStateVO; import com.qianwen.smartman.modules.mdc.vo.excel.StatusRecordExcelVO; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @ApiResource({"mdc/status-record"}) @Api(value = ExcelConstant.STATUS_RECORD, tags = {ExcelConstant.STATUS_RECORD}) @RestController public class StatusRecordController { private final IStatusRecordService statusRecordService; private final IWorkstationFeedbackService feedbackService; public StatusRecordController(final IStatusRecordService statusRecordService, final IWorkstationFeedbackService feedbackService) { this.statusRecordService = statusRecordService; this.feedbackService = feedbackService; } /** * 状态记录功能中的某一天的状态数据 * @param statusRecordDateSelectVO * @param query * @return */ @ApiOperationSupport(order = 1) @PostResource({"/status-record-by-date"}) @ApiOperation(value = "根据日期查询状态记录", notes = "传入statusRecordDateSelectVO") @PreAuth public R> getStatusRecordByDate(@Validated @RequestBody StatusRecordDateSelectVO statusRecordDateSelectVO, Query query) { IPage data = this.statusRecordService.getStatusRecordByDate(Condition.getPage(query), statusRecordDateSelectVO); if (statusRecordDateSelectVO.isHumanFeedback()) { data.getRecords().parallelStream().forEach(item -> { item.setStatusRecordList(this.feedbackService.groupStatusRecordWithFeedbackCache(statusRecordDateSelectVO.getDate(), item.getWorkstationInfo().getId(), statusRecordDateSelectVO.isMachineFeedback() ? item.getStatusRecordList() : null)); }); } return R.data(data); } @ApiOperationSupport(order = 2) @PostResource({"/status-record-by-workstation"}) @ApiOperation(value = "根据工位查询状态记录", notes = "传入statusRecordWorkstationSelectVO") @PreAuth public R> getStatusRecordByWorkstation(@Validated @RequestBody StatusRecordWorkstationSelectVO statusRecordWorkstationSelectVO, Query query) { IPage data = this.statusRecordService.getStatusRecordByWorkstation(Condition.getPage(query), statusRecordWorkstationSelectVO); if (statusRecordWorkstationSelectVO.isHumanFeedback()) { data.getRecords().parallelStream().forEach(item -> { item.setStatusRecordList(this.feedbackService.groupStatusRecordWithFeedbackCache(LocalDate.parse(item.getDate(), DateTimeFormatter.ofPattern(DateConstant.PATTERN_DATE)), statusRecordWorkstationSelectVO.getWorkstationId(), item.getStatusRecordList())); }); } return R.data(data); } @ApiOperationSupport(order = 3) @PostResource({"/time-distribution"}) @ApiOperation(value = "查询用时分布情况", notes = "传入statusRecordDetailSelectVO") @PreAuth public R> getTimeDistribution(@Validated @RequestBody StatusRecordDetailSelectVO statusRecordDetailSelectVO) { return R.data(this.statusRecordService.getTimeDistribution(statusRecordDetailSelectVO)); } /** * 工位数据,稼动率,报警率,运行率 * @param statusRecordDetailSelectVO * @return */ @ApiOperationSupport(order = 4) @PostResource({"/equipment-efficiency"}) @ApiOperation(value = "查询设备效率", notes = "传入statusRecordDetailSelectVO") @PreAuth public R> getEquipmentEfficiency(@Validated @RequestBody StatusRecordDetailSelectVO statusRecordDetailSelectVO) { return R.data(this.statusRecordService.getEquipmentEfficiency(statusRecordDetailSelectVO)); } @PostMapping({"/shift-index-status-record-chart"}) @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL) @ApiOperation(value = "查询班次状态记录图表", notes = "传入statusRecordDetailSelectVO") public R> getShiftIndexStatusRecordChart(@Validated @RequestBody StatusRecordDetailSelectVO statusRecordDetailSelectVO) { return R.data(this.statusRecordService.getShiftIndexStatusRecordChart(statusRecordDetailSelectVO)); } @ApiOperationSupport(order = 6) @PostResource({"/shift-index-status-record-table"}) @ApiOperation(value = "查询班次状态记录表格", notes = "传入statusRecordDetailSelectVO") @PreAuth public R>> getShiftIndexStatusRecordTable(@Validated @RequestBody StatusRecordDetailSelectVO statusRecordDetailSelectVO) { return R.data(this.statusRecordService.getShiftIndexStatusRecordTable(statusRecordDetailSelectVO)); } @ApiOperationSupport(order = 7) @PostResource({"/excel/export"}) @ApiOperation("状态记录导出") @PreAuth public R exportStatusRecord(@Validated @RequestBody StatusRecordExcelVO vo) { return R.data(this.statusRecordService.exportStatusRecord(vo)); } /** * 我们自己前端没有调用yys * @param vo * @return */ /* @ApiOperationSupport(order = 8) @PostResource({"/cross-days"}) @ApiOperation("分割状态数据跨天数据") public R>> crossDayState(@Valid @RequestBody CrossDayStateVO vo) { return R.data(this.statusRecordService.crossDayState(vo)); }*/ @ApiOperationSupport(order = 9) @PostResource({"/status-record-by-dates"}) @ApiOperation(value = "根据开始结束时间查询状态记录", notes = "传入statusRecordDateSelectVO") @PreAuth public R> getStatusRecordByDates(@Validated @RequestBody StatusRecordDateTimeSelectVO statusRecordDateTimeSelectVO, Query query) { return R.data(this.statusRecordService.getStatusRecordByDates(Condition.getPage(query), statusRecordDateTimeSelectVO)); } }