干燥机配套车间生产管理系统/云平台服务端
baoshiwei
2024-12-11 7c585586e9bea943161676bd9d127e81123891c3
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/MobileController.java
@@ -8,6 +8,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.config.TenantContext;
import org.jeecg.common.constant.MqttConstant;
@@ -19,8 +20,11 @@
import org.jeecg.modules.dry.api.EmqxApi;
import org.jeecg.modules.dry.entity.DryEquipment;
import org.jeecg.modules.dry.entity.DryFaultRecord;
import org.jeecg.modules.dry.entity.DryOrder;
import org.jeecg.modules.dry.service.IDryEquipmentService;
import org.jeecg.modules.dry.service.IDryFaultRecordService;
import org.jeecg.modules.dry.service.IDryOrderService;
import org.jeecg.modules.dry.vo.DryFaultRecordVo;
import org.jeecg.modules.dry.vo.MoEquVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -30,6 +34,8 @@
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -46,6 +52,8 @@
  private IDryFaultRecordService faultRecordService;
  @Autowired
  private RedisUtil redisUtil;
    @Autowired
    private IDryOrderService orderService;
  @ApiOperation(value = "设备列表查询", notes = "设备列表查询")
  @GetMapping(value = "/equ/list")
@@ -62,7 +70,7 @@
    IPage<DryEquipment> pageList = dryEquipmentService.page(page, queryWrapper);
    comp(pageList, voPage);
        compEqu(pageList, voPage);
    return Result.OK(voPage);
@@ -70,17 +78,80 @@
  @ApiOperation(value = "设备报警数据", notes = "设备报警数据列表查询")
  @GetMapping(value = "/fault/list")
  public Result<IPage<DryFaultRecord>> queryFaultList(DryFaultRecord faultRecord, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req){
    public Result<IPage<DryFaultRecordVo>> queryFaultList(DryFaultRecord faultRecord, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
    int tenantId = oConvertUtils.getInt(TenantContext.getTenant(), 0);
        //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】
        if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) {
            faultRecord.setTenantId(tenantId);
        }
    QueryWrapper<DryFaultRecord> queryWrapper = QueryGenerator.initQueryWrapper(faultRecord, req.getParameterMap());
    Page<DryFaultRecord> page = new Page<DryFaultRecord>(pageNo, pageSize);
    IPage<DryFaultRecord> pageList = faultRecordService.page(page, queryWrapper);
    return Result.OK(pageList);
        Page<DryFaultRecordVo> voPage = new Page<DryFaultRecordVo>(pageNo, pageSize);
        compFault(pageList, voPage);
        return Result.OK(voPage);
    }
    private void compFault(IPage<DryFaultRecord> pageList, Page<DryFaultRecordVo> page) {
        List<DryFaultRecordVo> collect = pageList.getRecords().stream().filter(item -> item.getOrderId() != null).map(item -> {
            DryFaultRecordVo vo = new DryFaultRecordVo();
            BeanUtils.copyProperties(item, vo);
            String orderCode = item.getOrderId();
            QueryWrapper<DryOrder> orderQueryWrapper = new QueryWrapper<>();
            orderQueryWrapper.lambda().eq(DryOrder::getCode, orderCode);
            DryOrder order = orderService.getOne(orderQueryWrapper);
            if (vo.getStartTime() != null && vo.getEndTime() != null) {
                String faultTimeStr = calculateTimeDifference(DateUtils.date2Str(vo.getStartTime(), DateUtils.datetimeFormat.get()), DateUtils.date2Str(vo.getEndTime(), DateUtils.datetimeFormat.get()));
                vo.setFaultTimeStr(faultTimeStr);
            }
            if (order == null) return vo;
            String equId = order.getEquId();
            if (equId == null) return vo;
            DryEquipment equipment = dryEquipmentService.getById(equId);
            if (equipment == null || equipment.getName() == null) return vo;
            vo.setEquName(equipment.getName().substring(0, 2));
            return vo;
        }).collect(Collectors.toList());
        BeanUtils.copyProperties(pageList, page);
        page.setRecords(collect);
  }
    @ApiOperation(value = "报警图标数据", notes = "报警图标数据查询")
    @GetMapping(value = "/fault/chart")
    public List<DryFaultRecordVo> queryFaultChartData(DryFaultRecord faultRecord, HttpServletRequest req) {
        int tenantId = oConvertUtils.getInt(TenantContext.getTenant(), 0);
        //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】
        if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) {
            faultRecord.setTenantId(tenantId);
        }
        QueryWrapper<DryFaultRecord> queryWrapper = QueryGenerator.initQueryWrapper(faultRecord, req.getParameterMap());
        List<DryFaultRecord> faultList = faultRecordService.list(queryWrapper);
        List<DryFaultRecordVo> result = new ArrayList<>(faultList.stream()
                .collect(Collectors.groupingBy(DryFaultRecord::getFaultName,
                        Collectors.collectingAndThen(Collectors.toList(), list ->
                                new DryFaultRecordVo(list.get(0), list.size()))))
                .values())
                .stream()
                .sorted(Comparator.comparingInt(DryFaultRecordVo::getECount).reversed())
                .collect(Collectors.toList());
        return result;
    }
  private void comp(IPage<DryEquipment> pageList, Page<MoEquVo> page) {
    //此接口仅用作uniapp下拉返回,无实际意义
    @GetMapping(value = "/sample/list")
    public Result<IPage<Object>> querySampleList(DryFaultRecord faultRecord, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
        Page<Object> page = new Page<Object>(pageNo, pageSize);
        page.setRecords(Arrays.asList(""));
        page.setSize(1);
        page.setCurrent(1);
        return Result.OK(page);
    }
    private void compEqu(IPage<DryEquipment> pageList, Page<MoEquVo> page) {
    //当前租户id
    int tenantId = oConvertUtils.getInt(TenantContext.getTenant(), 0);
    List<MoEquVo> collect = pageList.getRecords().stream().map(item -> {
@@ -106,5 +177,38 @@
    page.setRecords(collect);
  }
    /**
     * @param startTimeStr
     * @param endTimeStr
     * @return
     */
    private String calculateTimeDifference(String startTimeStr, String endTimeStr) {
        // 定义时间格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 将字符串解析为 LocalDateTime 对象
        LocalDateTime startTime = LocalDateTime.parse(startTimeStr, formatter);
        LocalDateTime endTime = LocalDateTime.parse(endTimeStr, formatter);
        // 计算两个时间点之间的持续时间
        Duration duration = Duration.between(startTime, endTime);
        // 获取小时、分钟和秒数
        long hours = duration.toHours();
        long minutes = duration.toMinutes() % 60;
        long seconds = duration.getSeconds() % 60;
        StringBuilder result = new StringBuilder();
        if (hours > 0) {
            result.append(hours).append("时");
        }
        if (minutes > 0) {
            result.append(minutes).append("分");
        }
        if (seconds > 0) {
            result.append(seconds).append("秒");
        }
        return result.toString();
    }
}