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