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<IPage<StatusRecordDateVO>> getStatusRecordByDate(@Validated @RequestBody StatusRecordDateSelectVO statusRecordDateSelectVO, Query query) {
|
IPage<StatusRecordDateVO> 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<IPage<StatusRecordWorkstationVO>> getStatusRecordByWorkstation(@Validated @RequestBody StatusRecordWorkstationSelectVO statusRecordWorkstationSelectVO, Query query) {
|
IPage<StatusRecordWorkstationVO> 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<List<ChartDataVO>> 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<List<ChartDataVO>> 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<List<StatusRecordShiftIndexChartVO>> 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<List<HashMap<String, String>>> getShiftIndexStatusRecordTable(@Validated @RequestBody StatusRecordDetailSelectVO statusRecordDetailSelectVO) {
|
return R.data(this.statusRecordService.getShiftIndexStatusRecordTable(statusRecordDetailSelectVO));
|
}
|
|
@ApiOperationSupport(order = 7)
|
@PostResource({"/excel/export"})
|
@ApiOperation("状态记录导出")
|
@PreAuth
|
public R<BladeFile> 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<List<List<SuperAggregateStateVO>>> 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<IPage<StatusRecordDateVO>> getStatusRecordByDates(@Validated @RequestBody StatusRecordDateTimeSelectVO statusRecordDateTimeSelectVO, Query query) {
|
return R.data(this.statusRecordService.getStatusRecordByDates(Condition.getPage(query), statusRecordDateTimeSelectVO));
|
}
|
}
|