产线看板-优化

tags/yfai-mes-ext-v1.1
logic.fang 9 months ago
parent 2d94c2c66d
commit 1e77a3a7f5

@ -17,6 +17,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
@ -105,11 +107,15 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
} }
resultModel.setWorkCenterCompletedQuantity(workCenterCompletedQuantity); resultModel.setWorkCenterCompletedQuantity(workCenterCompletedQuantity);
resultModel.setWorkCenterPlannedQuantity(workCenterPlannedQuantity); resultModel.setWorkCenterPlannedQuantity(workCenterPlannedQuantity);
double workCenterCompletionRate;
if (workCenterCompletedQuantity == 0 || workCenterPlannedQuantity == 0) { if (workCenterCompletedQuantity == 0 || workCenterPlannedQuantity == 0) {
resultModel.setWorkCenterCompletionRate(0D); workCenterCompletionRate = 0;
}else { }else {
resultModel.setWorkCenterCompletionRate(workCenterCompletedQuantity * 100 / workCenterPlannedQuantity); workCenterCompletionRate = workCenterCompletedQuantity * 100 / workCenterPlannedQuantity;
} }
BigDecimal bd = new BigDecimal(workCenterCompletionRate);
bd = bd.setScale(2, RoundingMode.HALF_UP);
resultModel.setWorkCenterCompletionRate(bd);
return resultModel; return resultModel;
} }
@ -129,11 +135,18 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
resultModel.setPartDescription(mesWorkOrder.getPartName()); resultModel.setPartDescription(mesWorkOrder.getPartName());
resultModel.setWorkOrderCompletedQuantity(mesWorkOrder.getCompleteQty()); resultModel.setWorkOrderCompletedQuantity(mesWorkOrder.getCompleteQty());
resultModel.setWorkOrderPlannedQuantity(mesWorkOrder.getQty()); resultModel.setWorkOrderPlannedQuantity(mesWorkOrder.getQty());
double workOrderFirstPassRate;
if (resultModel.getWorkOrderCompletedQuantity() == 0 || resultModel.getWorkOrderPlannedQuantity() == 0) { if (resultModel.getWorkOrderCompletedQuantity() == 0 || resultModel.getWorkOrderPlannedQuantity() == 0) {
resultModel.setWorkOrderFirstPassRate(0D); workOrderFirstPassRate = 0;
}else { }else {
resultModel.setWorkOrderFirstPassRate(resultModel.getWorkOrderCompletedQuantity() * 100 / resultModel.getWorkOrderPlannedQuantity()); workOrderFirstPassRate = resultModel.getWorkOrderCompletedQuantity() * 100 / resultModel.getWorkOrderPlannedQuantity();
if (workOrderFirstPassRate > 100) {
workOrderFirstPassRate = 100;
} }
}
BigDecimal bd = new BigDecimal(workOrderFirstPassRate);
bd = bd.setScale(2, RoundingMode.HALF_UP);
resultModel.setWorkOrderFirstPassRate(bd);
resultModelList.add(resultModel); resultModelList.add(resultModel);
} }
return resultModelList; return resultModelList;
@ -146,12 +159,11 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(conditionModel.getOrganizeCode()); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(conditionModel.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(conditionModel.getWorkCenterCodeList().get(0), "workCenterCode", ddlPackBean); DdlPreparedPack.getStringEqualPack(conditionModel.getWorkCenterCodeList().get(0), "workCenterCode", ddlPackBean);
MesWorkCenter mesWorkCenter = mesWorkCenterRepository.getByProperty(ddlPackBean); MesWorkCenter mesWorkCenter = mesWorkCenterRepository.getByProperty(ddlPackBean);
String jph;
if (Objects.isNull(mesWorkCenter) || StringUtils.isEmpty(mesWorkCenter.getJph())) { if (Objects.isNull(mesWorkCenter) || StringUtils.isEmpty(mesWorkCenter.getJph())) {
throw ImppExceptionBuilder.newInstance() jph = "0";
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) }else {
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) jph = mesWorkCenter.getJph();
.setErrorDetail(conditionModel.getWorkCenterCodeList().get(0) + " 产线未维护有效的产线JPH信息")
.build();
} }
//获取并汇总当前产线在当前时间前12个小时的每个小时时间段内工单的完成数 //获取并汇总当前产线在当前时间前12个小时的每个小时时间段内工单的完成数
Map<String, Map<String, String>> timeZoneMap = getLastHoursTimeZoneMap(NUM); Map<String, Map<String, String>> timeZoneMap = getLastHoursTimeZoneMap(NUM);
@ -169,7 +181,7 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
//横坐标赋值 //横坐标赋值
resultModel.setUnitHourCompletionRateTimePeriod(timeZone); resultModel.setUnitHourCompletionRateTimePeriod(timeZone);
//目标值 //目标值
resultModel.setUnitHourCompletionRateTargetValue(Double.valueOf(mesWorkCenter.getJph())); resultModel.setUnitHourCompletionRateTargetValue(Double.valueOf(jph));
if (CollectionUtils.isEmpty(mesProductOffLineQueryResultList)) { if (CollectionUtils.isEmpty(mesProductOffLineQueryResultList)) {
resultModel.setUnitHourCompletionRate(0); resultModel.setUnitHourCompletionRate(0);
}else { }else {
@ -214,17 +226,17 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
collect(Collectors.groupingBy(MesWorkCenterBoardResultModel::getQcStatus)); collect(Collectors.groupingBy(MesWorkCenterBoardResultModel::getQcStatus));
if (CollectionUtils.isEmpty(nowResultList) if (CollectionUtils.isEmpty(nowResultList)
|| !resultModelByQcStatusMap.containsKey(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue())) { || !resultModelByQcStatusMap.containsKey(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue())) {
//当前时间段没有生产加工记录或者没有合格的生产加工条码 //当前时间段没有生产加工记录或者没有合格的生产加工条码时返回值置null保证数据为0时瀑布图连线的垂直
resultModel.setWorkCenterFirstTimeOfflineQualificationRate(0D); resultModel.setWorkCenterFirstTimeOfflineQualificationRate(null);
}else { }else {
double workCenterFirstTimeOfflineQualificationRate = ( double workCenterFirstTimeOfflineQualificationRate = resultModelByQcStatusMap.get(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()).size() * 100 / nowResultList.size();
resultModelByQcStatusMap.get(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()).size() * 100
/ nowResultList.size());
//最大值只允许100 //最大值只允许100
if (workCenterFirstTimeOfflineQualificationRate > 100) { if (workCenterFirstTimeOfflineQualificationRate > 100) {
workCenterFirstTimeOfflineQualificationRate = 100; workCenterFirstTimeOfflineQualificationRate = 100;
} }
resultModel.setWorkCenterFirstTimeOfflineQualificationRate(workCenterFirstTimeOfflineQualificationRate); BigDecimal bd = new BigDecimal(workCenterFirstTimeOfflineQualificationRate);
bd = bd.setScale(2, RoundingMode.HALF_UP);
resultModel.setWorkCenterFirstTimeOfflineQualificationRate(bd);
} }
resultModelList.add(resultModel); resultModelList.add(resultModel);
} }
@ -277,6 +289,9 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
//最新的点检单结果为 NOK //最新的点检单结果为 NOK
//结果设置为“异常” //结果设置为“异常”
resultModel.setInspectionResults(MesExtEnumUtil.INSPECTION_RESULTS.ABNORMAL.getValue()); resultModel.setInspectionResults(MesExtEnumUtil.INSPECTION_RESULTS.ABNORMAL.getValue());
}else {
//其它结果设置为“异常”
resultModel.setInspectionResults(MesExtEnumUtil.INSPECTION_RESULTS.ABNORMAL.getValue());
} }
}else { }else {
//不存在该种点检类型的点检单数据 //不存在该种点检类型的点检单数据
@ -296,10 +311,10 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
@Override @Override
public MesWorkCenterBoardResultModel queryAbnormalDowntime(MesWorkCenterBoardConditionModel conditionModel) { public MesWorkCenterBoardResultModel queryAbnormalDowntime(MesWorkCenterBoardConditionModel conditionModel) {
MesWorkCenterBoardResultModel resultModel = new MesWorkCenterBoardResultModel(); MesWorkCenterBoardResultModel resultModel = new MesWorkCenterBoardResultModel();
//获取查询时间区间 //获取查询时间区间(需求未明确,暂时注释,返回固定值)
Map<String, Map<String, String>> timeZoneMap = getTimeZoneMap(conditionModel.getWorkCenterCodeList(), // Map<String, Map<String, String>> timeZoneMap = getTimeZoneMap(conditionModel.getWorkCenterCodeList(),
conditionModel.getTimeRangeIdentification(), conditionModel.getOrganizeCode()); // conditionModel.getTimeRangeIdentification(), conditionModel.getOrganizeCode());
resultModel.setAbnormalDowntime("00:45"); resultModel.setAbnormalDowntime("00:00");
return resultModel; return resultModel;
} }

@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
/** /**
* @Description : 线- * @Description : 线-
* @Reference : * @Reference :
@ -34,7 +36,7 @@ public class MesWorkCenterBoardResultModel {
private Double workCenterPlannedQuantity; private Double workCenterPlannedQuantity;
@ApiParam(value = "产线完成率") @ApiParam(value = "产线完成率")
private Double workCenterCompletionRate; private BigDecimal workCenterCompletionRate;
/** /**
* 线 * 线
@ -55,7 +57,7 @@ public class MesWorkCenterBoardResultModel {
private Double workOrderPlannedQuantity; private Double workOrderPlannedQuantity;
@ApiParam(value = "工单一次合格率") @ApiParam(value = "工单一次合格率")
private Double workOrderFirstPassRate; private BigDecimal workOrderFirstPassRate;
/** /**
* *
@ -73,7 +75,7 @@ public class MesWorkCenterBoardResultModel {
* 线线 * 线线
*/ */
@ApiParam(value = "产线一次下线合格率") @ApiParam(value = "产线一次下线合格率")
private Double workCenterFirstTimeOfflineQualificationRate; private BigDecimal workCenterFirstTimeOfflineQualificationRate;
@ApiParam(value = "产线一次下线合格率-时间段") @ApiParam(value = "产线一次下线合格率-时间段")
private String workCenterFirstTimeOfflineQualificationRateTimePeriod; private String workCenterFirstTimeOfflineQualificationRateTimePeriod;

Loading…
Cancel
Save