| | |
| | | package org.jeecg.modules.eam.controller; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.parser.Feature; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | 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.common.util.DateUtils; |
| | | import org.jeecg.modules.eam.constant.EquipmentMaintenanceStatus; |
| | | import org.jeecg.modules.eam.constant.EquipmentRepairStatus; |
| | | import org.jeecg.common.util.TranslateDictTextUtils; |
| | | import org.jeecg.modules.eam.constant.*; |
| | | import org.jeecg.modules.eam.entity.EamEquipment; |
| | | import org.jeecg.modules.eam.service.IEamEquipmentService; |
| | | import org.jeecg.modules.eam.service.IEamReportRepairService; |
| | | import org.jeecg.modules.eam.vo.EquipmentRepairStatistics; |
| | | import org.jeecg.modules.eam.vo.EquipmentStatusStatistics; |
| | | import org.jeecg.modules.eam.entity.EamInspectionOrder; |
| | | import org.jeecg.modules.eam.entity.EamRepairOrder; |
| | | import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder; |
| | | import org.jeecg.modules.eam.service.*; |
| | | import org.jeecg.modules.eam.vo.*; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | 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.time.LocalDate; |
| | | import java.util.*; |
| | | |
| | |
| | | private IEamEquipmentService eamEquipmentService; |
| | | @Autowired |
| | | private IEamReportRepairService reportRepairService; |
| | | @Autowired |
| | | private IEamInspectionOrderService inspectionOrderService; |
| | | @Autowired |
| | | private IEamWeekMaintenanceOrderService weekMaintenanceOrderService; |
| | | @Resource |
| | | private ObjectMapper objectMapper; |
| | | @Resource |
| | | private TranslateDictTextUtils translateDictTextUtils; |
| | | @Autowired |
| | | private IEamRepairOrderService repairOrderService; |
| | | |
| | | |
| | | @ApiOperation(value = "看板接口-维保状态统计", notes = "看板接口-维保状态统计") |
| | | @GetMapping(value = "/equipmentStatusStatistics") |
| | |
| | | resultList.sort(Comparator.comparing(EquipmentRepairStatistics::getMonthStr)); |
| | | return Result.ok(resultList); |
| | | } |
| | | |
| | | @ApiOperation(value = "看板接口-点检统计", notes = "看板接口-点检统计") |
| | | @GetMapping(value = "/equipmentInspectionStatistics") |
| | | public Result<?> equipmentInspectionStatistics(@RequestParam(required = false, value = "productionId") String productionId) { |
| | | //统计结束日期 |
| | | LocalDate today = LocalDate.now(); |
| | | LocalDate localDate = today.minusMonths(5); |
| | | //统计开始日期 |
| | | LocalDate firstOfMonth = DateUtils.getFirstOfMonth(localDate); |
| | | |
| | | //初始化返回值 |
| | | Map<String, EquipmentInspectionStatistics> statisticsMap = new HashMap<>(); |
| | | List<String> monthsBetween = DateUtils.getMonthsBetween(firstOfMonth, today); |
| | | monthsBetween.forEach(month -> { |
| | | statisticsMap.put(month, new EquipmentInspectionStatistics(month)); |
| | | }); |
| | | |
| | | List<EquipmentInspectionStatistics> list = inspectionOrderService.equipmentInspectionStatistics(productionId, firstOfMonth, today); |
| | | for (EquipmentInspectionStatistics statistics : list) { |
| | | if (statisticsMap.containsKey(statistics.getMonthStr())) { |
| | | statisticsMap.put(statistics.getMonthStr(), statistics); |
| | | } |
| | | } |
| | | List<EquipmentInspectionStatistics> resultList = new ArrayList<>(statisticsMap.values()); |
| | | //排序 |
| | | resultList.sort(Comparator.comparing(EquipmentInspectionStatistics::getMonthStr)); |
| | | return Result.ok(resultList); |
| | | } |
| | | |
| | | @ApiOperation(value = "看板接口-周保统计", notes = "看板接口-周保统计") |
| | | @GetMapping(value = "/equipmentMaintenanceStatistics") |
| | | public Result<?> equipmentMaintenanceStatistics(@RequestParam(required = false, value = "productionId") String productionId) { |
| | | //统计结束日期 |
| | | LocalDate today = LocalDate.now(); |
| | | LocalDate localDate = today.minusMonths(5); |
| | | //统计开始日期 |
| | | LocalDate firstOfMonth = DateUtils.getFirstOfMonth(localDate); |
| | | |
| | | //初始化返回值 |
| | | Map<String, EquipmentMaintenanceStatistics> statisticsMap = new HashMap<>(); |
| | | List<String> monthsBetween = DateUtils.getMonthsBetween(firstOfMonth, today); |
| | | monthsBetween.forEach(month -> { |
| | | statisticsMap.put(month, new EquipmentMaintenanceStatistics(month)); |
| | | }); |
| | | |
| | | List<EquipmentMaintenanceStatistics> list = weekMaintenanceOrderService.equipmentMaintenanceStatistics(productionId, firstOfMonth, today); |
| | | for (EquipmentMaintenanceStatistics statistics : list) { |
| | | if (statisticsMap.containsKey(statistics.getMonthStr())) { |
| | | statisticsMap.put(statistics.getMonthStr(), statistics); |
| | | } |
| | | } |
| | | List<EquipmentMaintenanceStatistics> resultList = new ArrayList<>(statisticsMap.values()); |
| | | //排序 |
| | | resultList.sort(Comparator.comparing(EquipmentMaintenanceStatistics::getMonthStr)); |
| | | return Result.ok(resultList); |
| | | } |
| | | |
| | | @ApiOperation(value = "维修看板-维修状态统计", notes = "维修看板-维修状态统计") |
| | | @GetMapping(value = "/repairStatusStatistics") |
| | | public Result<?> repairStatusStatistics() { |
| | | EquipmentRepairStatusStatistics statistics = reportRepairService.repairStatusStatistics(); |
| | | return Result.OK(statistics); |
| | | } |
| | | |
| | | @ApiOperation(value = "维修看板-维修列表", notes = "维修看板-维修列表") |
| | | @GetMapping(value = "/repairList") |
| | | public Result<?> repairList() { |
| | | List<EquipmentRepairListVO> list = reportRepairService.repairList(); |
| | | if (CollectionUtil.isEmpty(list)) { |
| | | return Result.ok(Collections.emptyList()); |
| | | } |
| | | List<JSONObject> items = new ArrayList<>(); |
| | | try { |
| | | for (EquipmentRepairListVO vo : list) { |
| | | String json = objectMapper.writeValueAsString(vo); |
| | | JSONObject item = JSONObject.parseObject(json, Feature.OrderedField); |
| | | translateDictTextUtils.translateField("reportOperator", vo.getReportOperator(), item, "sys_user,realname,username"); |
| | | translateDictTextUtils.translateField("repairOperator", vo.getRepairOperator(), item, "sys_user,realname,username"); |
| | | translateDictTextUtils.translateField("reportStatus", vo.getReportStatus(), item, "report_repair_status"); |
| | | translateDictTextUtils.translateField("orgId", vo.getOrgId(), item, "mdc_production,production_name,id"); |
| | | items.add(item); |
| | | } |
| | | return Result.OK(items); |
| | | } catch (Exception e) { |
| | | return Result.error("数据转译失败!"); |
| | | } |
| | | } |
| | | |
| | | @ApiOperation(value = "维修看板-维修工排名", notes = "维修看板-维修工排名") |
| | | @GetMapping(value = "/repairmanRanking") |
| | | public Result<?> repairmanRanking() { |
| | | LocalDate today = LocalDate.now(); |
| | | LocalDate end = today.plusDays(1); |
| | | LocalDate start = today.minusDays(30); |
| | | //只取前7名 |
| | | List<RepairmanRankingVO> list = repairOrderService.repairmanRanking(start.toString(), end.toString()); |
| | | if (CollectionUtil.isEmpty(list)) { |
| | | return Result.ok(Collections.emptyList()); |
| | | } |
| | | if (list.size() > 7) { |
| | | list = list.subList(0, 7); |
| | | } |
| | | List<JSONObject> items = new ArrayList<>(); |
| | | try { |
| | | for (RepairmanRankingVO vo : list) { |
| | | String json = objectMapper.writeValueAsString(vo); |
| | | JSONObject item = JSONObject.parseObject(json, Feature.OrderedField); |
| | | translateDictTextUtils.translateField("repairer", vo.getRepairer(), item, "sys_user,realname,username"); |
| | | items.add(item); |
| | | } |
| | | return Result.OK(items); |
| | | } catch (Exception e) { |
| | | return Result.error("数据转译失败!"); |
| | | } |
| | | } |
| | | |
| | | @ApiOperation(value = "维修看板-故障类型统计", notes = "维修看板-故障类型统计") |
| | | @GetMapping(value = "/faultTypeStatistics") |
| | | public Result<?> faultTypeStatistics() { |
| | | //统计今年来故障分类情况 |
| | | LocalDate today = LocalDate.now(); |
| | | LocalDate end = today.plusDays(1); |
| | | //今年第一天 |
| | | LocalDate start = today.withDayOfYear(1); |
| | | // 统计个数 |
| | | List<FaultTypeStatisticsVO> list = reportRepairService.faultTypeStatistics(start.toString(), end.toString()); |
| | | if (CollectionUtil.isEmpty(list)) { |
| | | return Result.ok(Collections.emptyList()); |
| | | } |
| | | List<JSONObject> items = new ArrayList<>(); |
| | | try { |
| | | for (FaultTypeStatisticsVO vo : list) { |
| | | String json = objectMapper.writeValueAsString(vo); |
| | | JSONObject item = JSONObject.parseObject(json, Feature.OrderedField); |
| | | translateDictTextUtils.translateField("faultType", vo.getFaultType(), item, "fault_reason_category"); |
| | | if (item.get("faultType" + CommonConstant.DICT_TEXT_SUFFIX) != null) { |
| | | items.add(item); |
| | | } |
| | | } |
| | | return Result.OK(items); |
| | | } catch (Exception e) { |
| | | return Result.error("数据转译失败!"); |
| | | } |
| | | } |
| | | |
| | | @ApiOperation(value = "H5首页-待执行工单数量统计", notes = "H5首页-待执行工单数量统计") |
| | | @GetMapping(value = "/pendingExecOrderCountBySelf") |
| | | public Result<?> pendingExecOrderCountBySelf() { |
| | | LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | String post = user.getPost(); |
| | | Map<String, Integer> countMap = CollectionUtil.newHashMap(); |
| | | if (BusinessCodeConst.PCR0001.equals(post)) { |
| | | //是操作工,查询待点检工单、待周保工单 |
| | | List<EamInspectionOrder> unExecInspectionOrderList = inspectionOrderService.list(new LambdaQueryWrapper<EamInspectionOrder>() |
| | | .eq(EamInspectionOrder::getOperator, user.getUsername()) |
| | | .eq(EamInspectionOrder::getInspectionStatus, InspectionStatus.UNDER_INSPECTION.name()) |
| | | .eq(EamInspectionOrder::getDelFlag, CommonConstant.DEL_FLAG_0)); |
| | | List<EamWeekMaintenanceOrder> unExecMaintenanceOrderList = weekMaintenanceOrderService.list(new LambdaQueryWrapper<EamWeekMaintenanceOrder>() |
| | | .eq(EamWeekMaintenanceOrder::getOperator, user.getUsername()) |
| | | .eq(EamWeekMaintenanceOrder::getMaintenanceStatus, WeekMaintenanceStatusEnum.UNDER_MAINTENANCE.name()) |
| | | .eq(EamWeekMaintenanceOrder::getDelFlag, CommonConstant.DEL_FLAG_0)); |
| | | countMap.put("unExecInspectionOrderCount", unExecInspectionOrderList.size()); |
| | | countMap.put("unExecMaintenanceOrderCount", unExecMaintenanceOrderList.size()); |
| | | countMap.put("unExecRepairOrderCount", 0); |
| | | } |
| | | if (BusinessCodeConst.PCR0002.equals(post)) { |
| | | //是维修工,查询待维修工单 |
| | | List<EamRepairOrder> unExecRepairOrderList = repairOrderService.list(new LambdaQueryWrapper<EamRepairOrder>() |
| | | .eq(EamRepairOrder::getRepairer, user.getUsername()) |
| | | .eq(EamRepairOrder::getRepairStatus, EquipmentRepairStatus.UNDER_REPAIR.name()) |
| | | .eq(EamRepairOrder::getDelFlag, CommonConstant.DEL_FLAG_0)); |
| | | countMap.put("unExecInspectionOrderCount", 0); |
| | | countMap.put("unExecMaintenanceOrderCount", 0); |
| | | countMap.put("unExecRepairOrderCount", unExecRepairOrderList.size()); |
| | | } |
| | | return Result.OK(countMap); |
| | | } |
| | | } |