package org.jeecg.modules.mdc.service.impl; 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.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.MdcDeviceCalendarVo; import org.jeecg.modules.mdc.vo.MdcEquipmentMagnificationVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.util.*; @Service public class MdcEquipmentMagnificationServiceImpl extends ServiceImpl implements IMdcEquipmentMagnificationService { @Resource private IEquipmentService equipmentService; @Resource private IMdcDriveTypeParamConfigService mdcDriveTypeParamConfigService; @Resource private IMdcEquipmentRunningSectionService mdcEquipmentRunningSectionService; @Resource private IMdcEquipmentService mdcEquipmentService; private static String spindlebeilv = "主轴倍率"; private static String feedbeilv = "进给倍率"; @Override public void savesEquipmentMagnifications() { List magnifications = new ArrayList<>(); //主轴倍率 //进给倍率 /* Equipment e = equipmentService.getById("12345678"); List equipmentList = new ArrayList<>(); equipmentList.add(e);*/ List equipmentList = equipmentService.list(); Map> map = new HashMap<>(); Date now = DateUtils.plusTime(DateUtils.getNow(), -1); for (Equipment equipment : equipmentList) { Date start = null; //查询最后一条记录 MdcEquipmentMagnification mdcMagnification = super.baseMapper.getMaxStaticsData(equipment.getEquipmentid()); if (mdcMagnification == null) { start = DateUtils.plusTime(DateUtils.getNow(), -5); } else { if (now.toString().equals(start.toString())) { continue; } start = DateUtils.toDate(mdcMagnification.getTheDate(),DateUtils.STR_DATE ); } List dates = DateUtils.getDatesStringList(start,now); List list = new ArrayList<>(); if (!map.containsKey(equipment.getDrivetype())) { MdcDriveTypeParamConfig config1 = mdcDriveTypeParamConfigService.getEnglishName(spindlebeilv,equipment.getDrivetype()); MdcDriveTypeParamConfig config2 = mdcDriveTypeParamConfigService.getEnglishName(feedbeilv,equipment.getDrivetype()); if (config1 != null) { list.add(config1); } if (config2 != null ) { list.add(config2); } if (list == null || list.size() == 0) { for (String date : dates) { MdcEquipmentMagnification info = new MdcEquipmentMagnification(); info.setEquipmentId(equipment.getEquipmentid()); info.setTheDate(date); info.setSpindlebeilv(new BigDecimal(0)); info.setFeedbeilv(new BigDecimal(0)); magnifications.add(info); } continue; } else { map.put(equipment.getDrivetype(), list); } } else { list = map.get(equipment.getDrivetype()); } //循环时间 //查询字段 MAP 保存 for (String date : dates) { MdcEquipmentMagnification magnification = selectMagnification(equipment.getEquipmentid(),date,equipment.getDrivetype(), list); magnifications.add(magnification); } } if (!magnifications.isEmpty() && magnifications.size() > 0) { saveBatch(magnifications); } //数据保存 return; } @Override public IPage pageList(String userId, MdcEquipmentMagnificationVo magnificationVo, Integer pageNo, Integer pageSize, HttpServletRequest req) { IPage pageData = new Page<>(pageNo, pageSize); List equipmentIds = new ArrayList<>(); if (StringUtils.isNotEmpty(magnificationVo.getParentId()) && StringUtils.isEmpty(magnificationVo.getEquipmentId())) { if ("2".equals(magnificationVo.getTypeTree())) { // 部门层级 equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, magnificationVo.getParentId()); } else { // 产线层级 equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, magnificationVo.getParentId()); } } else if (StringUtils.isNotEmpty(magnificationVo.getEquipmentId())) { // 单台设备信息 magnificationVo.setEquipmentIdList(Collections.singletonList(magnificationVo.getEquipmentId())); } else { // 查询用户拥有的所有设备信息 if ("2".equals(magnificationVo.getTypeTree())) { //部门层级 equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); } else { //产线层级 equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); } } if (magnificationVo.getEquipmentIdList() == null || magnificationVo.getEquipmentIdList().isEmpty()) { magnificationVo.setEquipmentIdList(equipmentIds); } if (magnificationVo.getEquipmentIdList() == null || magnificationVo.getEquipmentIdList().isEmpty()) { return null; } return this.baseMapper.pageList(pageData, magnificationVo); } private MdcEquipmentMagnification selectMagnification(String equipmentId,String date,String drivetype,List list) { Date startTime = DateUtils.plusTime(DateUtils.getShortDate(date), 0); Date endTime = DateUtils.plusTime(DateUtils.getShortDate(date), 1); List sectionList = mdcEquipmentRunningSectionService.selectRunningData(equipmentId,startTime,endTime); if (sectionList.isEmpty() || sectionList.size() < 1) { MdcEquipmentMagnification info = new MdcEquipmentMagnification(); info.setEquipmentId(equipmentId); info.setTheDate(date); info.setSpindlebeilv(new BigDecimal(0)); info.setFeedbeilv(new BigDecimal(0)); return info; } else { //需要时间截取 if (sectionList.get(0).getStartTime().before(startTime)) { sectionList.get(0).setStartTime(startTime); } if (sectionList.size() > 1) { if (sectionList.get(sectionList.size() - 1).getEndTime().after(endTime)) { sectionList.get(sectionList.size() - 1).setEndTime(endTime); } } else { if (sectionList.get(0).getEndTime().after(endTime)) { sectionList.get(0).setEndTime(endTime); } } MdcEquipmentMagnification info = new MdcEquipmentMagnification(); for (MdcDriveTypeParamConfig config : list) { info.setTheDate(date); info.setEquipmentId(equipmentId); BigDecimal bigDecimal = new BigDecimal(0); int numberSizeList = 0; for (MdcEquipmentRunningSection section : sectionList) { List objects = super.baseMapper.getEquipmentSequenceNumber(drivetype+ "_" + equipmentId,section.getStartTime(), section.getEndTime(),config.getEnglishName()); BigDecimal s = objNumberList(objects); bigDecimal = bigDecimal.add(s); numberSizeList += objects.size(); } if (config.getChineseName().equals(spindlebeilv)) { 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))); } } 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))); } } } return info; } } private BigDecimal objNumberList(List objects) { if (objects == null || objects.size() == 0) { return new BigDecimal(0); } else { BigDecimal bigDecimal = new BigDecimal(0); for (Object object : objects) { if (object != null && object.toString().length() > 0) { bigDecimal = bigDecimal.add(new BigDecimal(object.toString())); } } return bigDecimal; } } }