package org.jeecg.modules.mdc.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.mdc.constant.MdcConstant; import org.jeecg.modules.mdc.dto.MdcEquipmentDto; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcFeedback; import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.IMdcHomeService; import org.jeecg.modules.mdc.vo.MdcCommonVo; import org.jeecg.modules.mdc.vo.MdcHomeEfficiencyVo; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.service.IMdcProductionService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author Lius * @Description: MDC首页接口 * @date 2024/3/13 14:27 */ @Slf4j @Api(tags = "MDC首页接口") @RestController @RequestMapping("/mdc/home") public class MdcHomeController { @Resource private IMdcEquipmentService mdcEquipmentService; @Resource private IMdcProductionService mdcProductionService; @Resource private IMdcHomeService mdcHomeService; @ApiOperation(value = "MDC首页接口-设备运行状态统计", notes = "MDC首页接口-设备运行状态统计") @GetMapping("/equipmentStatusStatistics") public Result equipmentStatusStatistics(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); Integer userType = user.getUserType(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //厂区/工段 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //判断是公司级还是厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getParentId, "")); if (userType.equals(MdcConstant.USER_TYPE_4)) { //公司 key = mdcProduction.getId(); } else if (userType.equals(MdcConstant.USER_TYPE_3)) { //厂区 key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId()); } else if (userType.equals(MdcConstant.USER_TYPE_2)) { //工段 查询用户拥有的工段权限 key = mdcProductionService.findThreeProductionId(userId); } } List resultMap = mdcHomeService.getEquipmentStatusStatistics(userId, key); Map map = new HashMap<>(); map.put("list", resultMap); map.put("productionId", key); return Result.OK(map); } @ApiOperation(value = "MDC首页接口-设备利用率统计(昨日)", notes = "MDC首页接口-设备运行状态统计(昨日)") @GetMapping("/equipmentUtilizationStatistics") public Result equipmentUtilizationStatistics(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); Integer userType = user.getUserType(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //判断是公司级还是厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getParentId, "")); if (userType.equals(MdcConstant.USER_TYPE_4)) { //公司 key = mdcProduction.getId(); } else if (userType.equals(MdcConstant.USER_TYPE_3)) { //厂区 key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId()); } } List result = mdcHomeService.getEquipmentUtilizationStatistics(userId, key); return Result.OK(result); } @ApiOperation(value = "MDC首页接口-设备OEE统计(上月)", notes = "MDC首页接口-设备OEE统计(上月)") @GetMapping("/equipmentOEEStatistics") public Result equipmentOEEStatistics(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); Integer userType = user.getUserType(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //判断是公司级还是厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getParentId, "")); if (userType.equals(MdcConstant.USER_TYPE_4)) { //公司 key = mdcProduction.getId(); } else if (userType.equals(MdcConstant.USER_TYPE_3)) { //厂区 key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId()); } } List result = mdcHomeService.getEquipmentOeeStatistics(userId, key); return Result.OK(result); } @ApiOperation(value = "MDC首页接口-设备OEE和利用率统计柱状图", notes = "MDC首页接口-设备OEE和利用率统计柱状图") @GetMapping("/equipmentMonthStatistics") public Result equipmentMonthStatistics(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); Integer userType = user.getUserType(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //判断是公司级还是厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getParentId, "")); if (userType.equals(MdcConstant.USER_TYPE_4)) { //公司 key = mdcProduction.getId(); } else if (userType.equals(MdcConstant.USER_TYPE_3)) { //厂区 key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId()); } } Map result = mdcHomeService.getEquipmentMonthStatistics(userId, key); return Result.OK(result); } @ApiOperation(value = "MDC首页接口-工段级前七天利用率折线图", notes = "MDC首页接口-工段级前七天利用率折线图") @GetMapping("/equipmentDayUtilizationStatistics") public Result equipmentDayUtilizationStatistics(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //工段 查询用户拥有的工段权限 key = mdcProductionService.findThreeProductionId(userId); } Map result = mdcHomeService.getEquipmentDayUtilizationStatistics(userId, key); return Result.OK(result); } @ApiOperation(value = "MDC首页接口-上月各设备OEE统计", notes = "MDC首页接口-上月各设备OEE统计") @GetMapping("/equipmentOEEMonthStatistics") public Result equipmentOEEMonthStatistics(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //工段 查询用户拥有的工段权限 key = mdcProductionService.findThreeProductionId(userId); } List result = mdcHomeService.getEquipmentOEEMonthStatistics(userId, key); return Result.OK(result); } @ApiOperation(value = "MDC首页接口-工段级设备效率统计", notes = "MDC首页接口-工段级设备效率统计") @GetMapping("/equipmentEfficiencyStatistics") public Result equipmentEfficiencyStatistics(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //工段 查询用户拥有的工段权限 key = mdcProductionService.findThreeProductionId(userId); } MdcHomeEfficiencyVo result = mdcHomeService.getEquipmentEfficiencyStatistics(userId, key); return Result.OK(result); } @ApiOperation(value = "MDC首页接口-设备级设备效率统计", notes = "MDC首页接口-设备级设备效率统计") @GetMapping("/equipmentLevelEfficiencyStatistics") public Result equipmentLevelEfficiencyStatistics(@RequestParam(name = "equipmentId", required = true) String equipmentId) { MdcHomeEfficiencyVo result = mdcHomeService.getEquipmentLevelEfficiencyStatistics(equipmentId); return Result.OK(result); } @ApiOperation(value = "MDC首页接口-设备级整年度利用率", notes = "MDC首页接口-设备级整年度利用率") @GetMapping("/equipmentAnnualEfficiencyStatistics") public Result equipmentAnnualEfficiencyStatistics(@RequestParam(name = "equipmentId", required = true) String equipmentId) { Map result = mdcHomeService.getEquipmentAnnualEfficiencyStatistics(equipmentId); return Result.OK(result); } @ApiOperation(value = "MDC首页接口-设备级设备详细信息", notes = "MDC首页接口-设备级设备详细信息") @GetMapping("/equipmentDetails") public Result equipmentDetails(@RequestParam(name = "equipmentId", required = true) String equipmentId) { MdcEquipmentDto result = mdcHomeService.getEquipmentDetails(equipmentId); return Result.OK(result); } @ApiOperation(value = "MDC首页接口-设备级设备列表", notes = "MDC首页接口-设备级设备列表") @GetMapping("/equipmentList") public Result equipmentList(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //工段 查询用户拥有的工段权限 key = mdcProductionService.findThreeProductionId(userId); } List result = mdcHomeService.getEquipmentList(key); return Result.OK(result); } @ApiOperation(value = "MDC首页接口-问题列表", notes = "MDC首页接口-问题列表") @GetMapping("/feedbackList") public Result feedbackList(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); Integer userType = user.getUserType(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //判断是公司级还是厂区 MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper().eq(MdcProduction::getParentId, "")); if (userType.equals(MdcConstant.USER_TYPE_4)) { //公司 key = mdcProduction.getId(); } else if (userType.equals(MdcConstant.USER_TYPE_3)) { //厂区 key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId()); } } List result = mdcHomeService.getFeedbackList(key); return Result.OK(result); } }