package org.jeecg.modules.screen.service.impl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.system.vo.DictModel;
|
import org.jeecg.modules.mdc.entity.Equipment;
|
import org.jeecg.modules.mdc.entity.EquipmentAlarm;
|
import org.jeecg.modules.mdc.entity.EquipmentXYZ;
|
import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor;
|
import org.jeecg.modules.mdc.mapper.EquipmentAlarmMapper;
|
import org.jeecg.modules.mdc.mapper.EquipmentMapper;
|
import org.jeecg.modules.mdc.service.IEquipmentService;
|
import org.jeecg.modules.mdc.service.IEquipmentWorkLineService;
|
import org.jeecg.modules.mdc.service.IEquipmentXYZService;
|
import org.jeecg.modules.screen.dto.EquipmentInfoDto;
|
import org.jeecg.modules.screen.dto.EquipmentXYZDto;
|
import org.jeecg.modules.screen.dto.MdcProductDayscheduleDto;
|
import org.jeecg.modules.screen.dto.ToolLifeDto;
|
import org.jeecg.modules.screen.mapper.MdcSubLargeScreenMapper;
|
import org.jeecg.modules.screen.service.MdcSubLargeScreenService;
|
import org.jeecg.modules.system.service.ISysDictService;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.time.LocalTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author Lius
|
* @date 2024/8/26 15:01
|
*/
|
@Service
|
public class MdcSubLargeScreenServiceImpl implements MdcSubLargeScreenService {
|
|
@Resource
|
private MdcSubLargeScreenMapper mdcSubLargeScreenMapper;
|
|
@Resource
|
private EquipmentAlarmMapper equipmentAlarmMapper;
|
|
@Resource
|
private IEquipmentService equipmentService;
|
|
@Resource
|
private IEquipmentWorkLineService equipmentWorkLineService;
|
|
@Resource
|
private IEquipmentXYZService equipmentXYZService;
|
|
@Resource
|
private ISysDictService sysDictService;
|
|
private final String today = LocalDate.now().toString();
|
|
/**
|
* 当日生产计划
|
*
|
* @param productionId
|
* @return
|
*/
|
@Override
|
public List<MdcProductDayscheduleDto> todayProductionProgress(String productionId) {
|
List<MdcProductDayscheduleDto> mdcProductDayscheduleDtos = new ArrayList<>();
|
mdcProductDayscheduleDtos = mdcSubLargeScreenMapper.todayProductionProgress(productionId, today);
|
if (mdcProductDayscheduleDtos != null && !mdcProductDayscheduleDtos.isEmpty()) {
|
for (MdcProductDayscheduleDto mdcProductDayscheduleDto : mdcProductDayscheduleDtos) {
|
if (mdcProductDayscheduleDto.getCompletionCount() != 0) {
|
mdcProductDayscheduleDto.setPassRate(new BigDecimal(mdcProductDayscheduleDto.getQualifiedCount()).divide(new BigDecimal(mdcProductDayscheduleDto.getCompletionCount()), 0, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP));
|
}
|
}
|
}
|
return mdcProductDayscheduleDtos;
|
}
|
|
/**
|
* 设备实时状态
|
*
|
* @param productionId
|
* @return
|
*/
|
@Override
|
public List<MdcEquipmentMonitor> equipmentStatus(String productionId) {
|
List<MdcEquipmentMonitor> result = mdcSubLargeScreenMapper.checkStatusFromEquipmentIds(productionId);
|
if (result != null && !result.isEmpty()) {
|
for (MdcEquipmentMonitor mdcEquipmentMonitor : result) {
|
if (mdcEquipmentMonitor.getOporation() != null) {
|
switch (mdcEquipmentMonitor.getOporation()) {
|
case 1:
|
case 2:
|
mdcEquipmentMonitor.setOporationDict("待机");
|
break;
|
case 3:
|
mdcEquipmentMonitor.setOporationDict("运行");
|
break;
|
case 22:
|
mdcEquipmentMonitor.setOporationDict("报警");
|
break;
|
default:
|
mdcEquipmentMonitor.setOporationDict("关机");
|
break;
|
}
|
} else {
|
mdcEquipmentMonitor.setOporationDict("关机");
|
mdcEquipmentMonitor.setOporation(0);
|
}
|
}
|
}
|
return result;
|
}
|
|
/**
|
* 设备报警
|
*
|
* @param productionId
|
* @return
|
*/
|
@Override
|
public List<EquipmentAlarm> equipmentAlarm(String productionId) {
|
String startDate = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.of(LocalDate.now(), LocalTime.MIN));
|
String endDate = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.of(LocalDate.now(), LocalTime.MIN).plusDays(1));
|
return equipmentAlarmMapper.equipmentAlarm(productionId, startDate, endDate);
|
}
|
|
/**
|
* 刀具寿命管理
|
*
|
* @param productionId
|
* @return
|
*/
|
@Override
|
public List<ToolLifeDto> toolLifeList(String productionId) {
|
return mdcSubLargeScreenMapper.toolLifeList(productionId);
|
}
|
|
/**
|
* 设备详细信息
|
*
|
* @param equipmentId
|
* @return
|
*/
|
@Override
|
public EquipmentInfoDto equipmentInfo(String equipmentId) {
|
EquipmentInfoDto equipmentInfoDto = new EquipmentInfoDto();
|
Equipment equipment = equipmentService.getOne(new LambdaQueryWrapper<Equipment>().eq(Equipment::getEquipmentid, equipmentId));
|
if (equipment == null) {
|
return null;
|
}
|
equipmentInfoDto.setEquipmentId(equipment.getEquipmentid());
|
equipmentInfoDto.setEquipmentName(equipment.getEquipmentname());
|
equipmentInfoDto.setEquipmentModel(equipment.getEquipmentmodel());
|
equipmentInfoDto.setEquipmentIp(equipment.getEquipmentip());
|
equipmentInfoDto.setControlsystem(equipment.getControlsystem());
|
switch (equipment.getOporation()) {
|
case 1:
|
case 2:
|
equipmentInfoDto.setWorkstate("待机");
|
break;
|
case 3:
|
equipmentInfoDto.setWorkstate("运行");
|
break;
|
case 22:
|
equipmentInfoDto.setWorkstate("报警");
|
break;
|
default:
|
equipmentInfoDto.setWorkstate("关机");
|
break;
|
}
|
String saveTableName = equipment.getSavetablename();
|
Map<String, Object> mapData = equipmentWorkLineService.getDataList(saveTableName);
|
if (mapData != null) {
|
equipmentInfoDto.setRunModble(mapData.get("runModble") == null ? "0" : mapData.get("runModble").toString());
|
equipmentInfoDto.setEmergency(mapData.get("emergency") == null ? "0" : mapData.get("emergency").toString());
|
equipmentInfoDto.setToolNum(mapData.get("Toolnum") == null ? "0" : mapData.get("Toolnum").toString());
|
equipmentInfoDto.setMaxAxis(mapData.get("maxaxisNUM") == null ? "0" : mapData.get("maxaxisNUM").toString());
|
equipmentInfoDto.setValidAxis(mapData.get("validaxisNUM") == null ? "0": mapData.get("validaxisNUM").toString());
|
equipmentInfoDto.setFeedbeilv(mapData.get("feedbeilv") == null ? "0" : mapData.get("feedbeilv").toString());
|
equipmentInfoDto.setSpindlebeilv(mapData.get("spindlebeilv") == null ? "0" : mapData.get("spindlebeilv").toString());
|
equipmentInfoDto.setSpindleload(mapData.get("spindleload") == null ? "0" : mapData.get("spindleload").toString());
|
equipmentInfoDto.setSpindlespeed(mapData.get("spindlespeed") == null ? "0" : mapData.get("spindlespeed").toString());
|
equipmentInfoDto.setFeedrate(mapData.get("feedrate") == null ? "0" : mapData.get("feedrate").toString());
|
equipmentInfoDto.setExecutingcode(mapData.get("executingcode") == null ? "0" : mapData.get("executingcode").toString());
|
equipmentInfoDto.setSequencenumber(mapData.get("Sequencenumber") == null ? "0" : mapData.get("Sequencenumber").toString());
|
equipmentInfoDto.setProductName(mapData.get("ProductName") == null ? "0" : mapData.get("ProductName").toString());
|
}
|
//轴信息
|
List<DictModel> dictList = sysDictService.queryEnableDictItemsByCode(CommonConstant.AXIS_TYPE);
|
List<EquipmentXYZDto> equipmentXYZDtoList = new ArrayList<>();
|
if (dictList != null && !dictList.isEmpty()) {
|
EquipmentXYZ equipmentXYZ = equipmentXYZService.findByEquipmentId(equipmentId);
|
JSONObject jsonEquipmentXYZ = (JSONObject) JSONObject.toJSON(equipmentXYZ);
|
for (DictModel dictModel : dictList) {
|
EquipmentXYZDto equipmentXYZDto = new EquipmentXYZDto();
|
equipmentXYZDto.setAxisType(dictModel.getText());
|
equipmentXYZDto.setAbsolute(jsonEquipmentXYZ.get(dictModel.getText().toLowerCase() + "Machine") == null ? null : jsonEquipmentXYZ.get(dictModel.getText().toLowerCase() + "Machine").toString());
|
equipmentXYZDto.setMachine(jsonEquipmentXYZ.get(dictModel.getText().toLowerCase() + "Machine") == null ? null : jsonEquipmentXYZ.get(dictModel.getText().toLowerCase() + "Machine").toString());
|
equipmentXYZDto.setRelative(jsonEquipmentXYZ.get(dictModel.getText().toLowerCase() + "Absolute") == null ? null : jsonEquipmentXYZ.get(dictModel.getText().toLowerCase() + "Absolute").toString());
|
if (mapData != null) {
|
equipmentXYZDto.setTemperature(mapData.get("motorTemperature" + dictModel.getText()) == null ? "0" : mapData.get("motorTemperature" + dictModel.getText()).toString());
|
equipmentXYZDto.setLag(mapData.get("lag" + dictModel.getValue()) == null ? "0.000" : mapData.get("lag" + dictModel.getValue()).toString());
|
}
|
equipmentXYZDtoList.add(equipmentXYZDto);
|
}
|
equipmentInfoDto.setXyzDtoList(equipmentXYZDtoList);
|
}
|
return equipmentInfoDto;
|
}
|
}
|