yb
2 天以前 45f273a2bdef5db34da34a1ac72ee26da5452c8d
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentMagnificationServiceImpl.java
@@ -1,20 +1,25 @@
package org.jeecg.modules.mdc.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.mdc.dto.MdcEquipmentMagnificationDto;
import org.jeecg.modules.mdc.entity.Equipment;
import org.jeecg.modules.mdc.entity.MdcDriveTypeParamConfig;
import org.jeecg.modules.mdc.entity.MdcEquipmentMagnification;
import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection;
import org.jeecg.modules.mdc.dto.*;
import org.jeecg.modules.mdc.entity.*;
import org.jeecg.modules.mdc.mapper.MdcEquipmentMagnificationMapper;
import org.jeecg.modules.mdc.service.*;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mdc.vo.MdcEquipmentMagnificationVo;
import org.jeecg.modules.mdc.vo.MdcMagnificationEquipmentVo;
import org.jeecg.modules.mdc.vo.MdcMagnificationVo;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.entity.SysDepart;
import org.jeecg.modules.system.service.IMdcProductionService;
import org.jeecg.modules.system.service.ISysDepartService;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
@@ -38,17 +43,33 @@
    private IMdcEquipmentRunningSectionService mdcEquipmentRunningSectionService;
    @Resource
    private IMdcEquipmentService mdcEquipmentService;
    @Resource
    private ISysDepartService sysDepartService;
    @Resource
    private IMdcProductionService mdcProductionService;
    private static String spindlebeilv = "主轴倍率";
    private static String feedbeilv = "进给倍率";
    @Override
    public void savesEquipmentMagnifications() {
    public void savesEquipmentMagnifications(String dateTime) {
        List<MdcEquipmentMagnification> magnifications = new ArrayList<>();
        //主轴倍率
        //进给倍率
       /* Equipment e = equipmentService.getById("12345678");
        List<Equipment> equipmentList = new ArrayList<>();
        equipmentList.add(e);*/
        if (org.apache.commons.lang.StringUtils.isNotBlank(dateTime)) {
            try {
                Date initDate = DateUtils.toDate(dateTime, "yyyyMMdd");
                String date = DateUtils.format(initDate,DateUtils.STR_DATE);
                if (initDate != null) {
                    this.remove(new LambdaQueryWrapper<MdcEquipmentMagnification>().eq(MdcEquipmentMagnification::getTheDate, date));
                }
            } catch (Exception ee) {
                log.error("参数格式不对", ee);
            }
        }
        List<Equipment> equipmentList = equipmentService.list();
        Map<String,List<MdcDriveTypeParamConfig>> map = new HashMap<>();
        Date now =  DateUtils.plusTime(DateUtils.getNow(), -1);
@@ -57,7 +78,7 @@
            //查询最后一条记录
            MdcEquipmentMagnification mdcMagnification = super.baseMapper.getMaxStaticsData(equipment.getEquipmentid());
            if (mdcMagnification == null) {
                start = DateUtils.plusTime(DateUtils.getNow(), -5);
                start = DateUtils.plusTime(DateUtils.getNow(), -20);
            } else {
                start = DateUtils.toDate(mdcMagnification.getTheDate(),DateUtils.STR_DATE );
                if (now.toString().equals(start.toString())) {
@@ -181,6 +202,161 @@
        return mv;
    }
    @Override
    public MdcMagnificationVo beilvsList(MdcEquipmentMagnificationVo vo, String userId) {
        List<MdcMagnificationEquipmentVo> mdcMagnificationVos = new ArrayList<>();
        MdcMagnificationVo result = new MdcMagnificationVo();
        List<String> equipmentIds = new ArrayList<>();
        if (StringUtils.isNotEmpty(vo.getParentId()) && StringUtils.isEmpty(vo.getEquipmentId())) {
            if ("2".equals(vo.getTypeTree())) {
                // 部门层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, vo.getParentId());
            } else {
                // 产线层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, vo.getParentId());
            }
        } else if (StringUtils.isNotEmpty(vo.getEquipmentId())) {
            // 单台设备信息
            vo.setEquipmentIdList(Collections.singletonList(vo.getEquipmentId()));
        } else {
            // 查询用户拥有的所有设备信息
            if ("2".equals(vo.getTypeTree())) {
                //部门层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null);
            } else {
                //产线层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null);
            }
        }
        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
            vo.setEquipmentIdList(equipmentIds);
        }
        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        List<String> dates = DateUtils.getDatesStringList(DateUtils.getShortDate(vo.getStartTime()), DateUtils.getShortDate(vo.getEndTime()));
        result.setDates(dates);
        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
            result.setMdcMagnificationVos(mdcMagnificationVos);
        } else {
            List<String> equipmentIdList = mdcEquipmentService.listEquipmentMagnificationId(vo);
            if (equipmentIdList != null && !equipmentIdList.isEmpty()) {
                vo.setEquipmentIdList(equipmentIdList);
            } else {
                result.setMdcMagnificationVos(mdcMagnificationVos);
                return result;
            }
            // 查询利用率数据
            List<MdcEquipmentMagnificationDto> magnificationDtos = super.baseMapper.list(vo);
            // 封装结果
            if ("2".equals(vo.getTypeTree())) {
            } else {
                // 产线层级
                List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList());
                // 查询所有产线信息
                List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(MdcProduction::getProductionOrder));
                for (MdcEquProDto mdcEquProDto : equipmentList) {
                    MdcMagnificationEquipmentVo mdcMgVo = new MdcMagnificationEquipmentVo();
                    mdcMgVo.setEquipmentId(mdcEquProDto.getEquipmentId());
                    mdcMgVo.setEquipmentName(mdcEquProDto.getEquipmentName());
                    mdcMgVo.setEquipmentType(mdcEquProDto.getEquipmentType());
                    switch (mdcEquProDto.getOrgType()) {
                        case "1":
                            mdcMgVo.setLevel1(mdcEquProDto.getProductionName());
                            break;
                        case "2":
                            mdcMgVo.setLevel2(mdcEquProDto.getProductionName());
                            break;
                        case "3":
                            mdcMgVo.setLevel3(mdcEquProDto.getProductionName());
                            break;
                        default:
                    }
                    MdcProduction mdcProduction = productionList.stream().filter(production -> production.getId().equals(mdcEquProDto.getParentId())).findAny().orElse(null);
                    if (mdcProduction != null) {
                        switch (mdcProduction.getOrgType()) {
                            case "1":
                                mdcMgVo.setLevel1(mdcProduction.getProductionName());
                                break;
                            case "2":
                                mdcMgVo.setLevel2(mdcProduction.getProductionName());
                                break;
                            case "3":
                                mdcMgVo.setLevel3(mdcProduction.getProductionName());
                                break;
                            default:
                        }
                        if (StringUtils.isNotEmpty(mdcProduction.getParentId())) {
                            productionList.stream().filter(production -> production.getId().equals(mdcProduction.getParentId())).findAny().ifPresent(production1 -> {
                                switch (production1.getOrgType()) {
                                    case "1":
                                        mdcMgVo.setLevel1(production1.getProductionName());
                                        break;
                                    case "2":
                                        mdcMgVo.setLevel2(production1.getProductionName());
                                        break;
                                    case "3":
                                        mdcMgVo.setLevel3(production1.getProductionName());
                                        break;
                                    default:
                                }
                            });
                        }
                    }
                    List<MdcEquipmentMagnificationDto> list = new ArrayList<>();
                    MdcEquipmentMagnificationDto mdcMagnificationDto = new MdcEquipmentMagnificationDto();
                    mdcMagnificationDto.setTheDate("平均值");
                    for (String date : dates) {
                        list.add(this.setDataList(magnificationDtos, date, mdcEquProDto.getEquipmentId(),mdcMagnificationDto));
                    }
                    mdcMagnificationDto.setFeedbeilv(mdcMagnificationDto.getFeedbeilv().divide(new BigDecimal(dates.size()),2, RoundingMode.HALF_UP));
                    mdcMagnificationDto.setSpindlebeilv(mdcMagnificationDto.getSpindlebeilv().divide(new BigDecimal(dates.size()),2, RoundingMode.HALF_UP));
                    list.add(mdcMagnificationDto);
                    mdcMgVo.setMdcBeilvVoList(list);
                    mdcMagnificationVos.add(mdcMgVo);
                }
            }
            result.setMdcMagnificationVos(mdcMagnificationVos);
        }
        // 添加合计值和平均值
        result.getDates().add("平均值");
        MdcMagnificationEquipmentVo avg = new MdcMagnificationEquipmentVo();
        avg.setLevel1("平均值");
        avg.setLevel2("平均值");
        avg.setLevel3("平均值");
        avg.setEquipmentId("平均值");
        avg.setEquipmentName("平均值");
        avg.setEquipmentType("平均值");
        //计算平均值
        avg.setMdcBeilvVoList(null);
        result.getMdcMagnificationVos().add(avg);
        return result;
    }
    private MdcEquipmentMagnificationDto setDataList(List<MdcEquipmentMagnificationDto> list,String date,String equipmentId,MdcEquipmentMagnificationDto mdcMagnificationDto) {
        MdcEquipmentMagnificationDto result = new MdcEquipmentMagnificationDto();
        if (list != null && list.size() > 0) {
            for (MdcEquipmentMagnificationDto mdcEquipmentMagnificationDto : list) {
                if (date.equals(mdcEquipmentMagnificationDto.getTheDate()) && mdcEquipmentMagnificationDto.getEquipmentId().equals(equipmentId)) {
                    result.setEquipmentId(equipmentId);
                    result.setSpindlebeilv(mdcEquipmentMagnificationDto.getSpindlebeilv());
                    result.setFeedbeilv(mdcEquipmentMagnificationDto.getFeedbeilv());
                }
            }
        } else {
            result.setTheDate(date);
            result.setFeedbeilv(new BigDecimal(0));
            result.setEquipmentId(equipmentId);
            result.setSpindlebeilv(new BigDecimal(0));
            return result;
        }
        mdcMagnificationDto.setFeedbeilv(mdcMagnificationDto.getFeedbeilv().add(result.getFeedbeilv()));
        mdcMagnificationDto.setSpindlebeilv(mdcMagnificationDto.getSpindlebeilv().add(result.getSpindlebeilv()));
        return result;
    }
    private MdcEquipmentMagnification selectMagnification(String equipmentId,String date,String drivetype,List<MdcDriveTypeParamConfig> list) {
        Date startTime = DateUtils.plusTime(DateUtils.getShortDate(date), 0);
        Date endTime = DateUtils.plusTime(DateUtils.getShortDate(date), 1);
@@ -224,14 +400,14 @@
                    info.setSpindlebeilvValue(bigDecimal);
                    info.setSpindlebeilvNumber(numberSizeList);
                    if (bigDecimal.compareTo(BigDecimal.ZERO) >0  && new BigDecimal(numberSizeList).compareTo(BigDecimal.ZERO) > 0) {
                        info.setSpindlebeilv(bigDecimal.divide(new BigDecimal(numberSizeList),4, RoundingMode.HALF_UP));
                        info.setSpindlebeilv(bigDecimal.divide(new BigDecimal(numberSizeList),2, RoundingMode.HALF_UP));
                    }
                }
                if (config.getChineseName().equals(feedbeilv)) {
                    info.setFeedbeilvValue(bigDecimal);
                    info.setFeedbeilvNumber(numberSizeList);
                    if (bigDecimal.compareTo(BigDecimal.ZERO) >0  && new BigDecimal(numberSizeList).compareTo(BigDecimal.ZERO) > 0) {
                        info.setFeedbeilv(bigDecimal.divide(new BigDecimal(numberSizeList),4, RoundingMode.HALF_UP));
                        info.setFeedbeilv(bigDecimal.divide(new BigDecimal(numberSizeList),2, RoundingMode.HALF_UP));
                    }
                }
            }