|
|
|
@ -127,27 +127,44 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
|
|
|
|
|
conditionModel.getTimeRangeIdentification(), conditionModel.getOrganizeCode());
|
|
|
|
|
//查询工单
|
|
|
|
|
List<MesWorkOrder> mesWorkOrderList = queryMesWorkOrder(timeZoneMap, conditionModel);
|
|
|
|
|
//封装汇总数据
|
|
|
|
|
for (MesWorkOrder mesWorkOrder : mesWorkOrderList) {
|
|
|
|
|
MesWorkCenterBoardResultModel resultModel = new MesWorkCenterBoardResultModel();
|
|
|
|
|
resultModel.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
|
|
|
|
|
resultModel.setPartNo(mesWorkOrder.getPartNo());
|
|
|
|
|
resultModel.setPartDescription(mesWorkOrder.getPartName());
|
|
|
|
|
resultModel.setWorkOrderCompletedQuantity(mesWorkOrder.getCompleteQty());
|
|
|
|
|
resultModel.setWorkOrderPlannedQuantity(mesWorkOrder.getQty());
|
|
|
|
|
double workOrderFirstPassRate;
|
|
|
|
|
if (resultModel.getWorkOrderCompletedQuantity() == 0 || resultModel.getWorkOrderPlannedQuantity() == 0) {
|
|
|
|
|
workOrderFirstPassRate = 0;
|
|
|
|
|
}else {
|
|
|
|
|
workOrderFirstPassRate = resultModel.getWorkOrderCompletedQuantity() * 100 / resultModel.getWorkOrderPlannedQuantity();
|
|
|
|
|
if (workOrderFirstPassRate > 100) {
|
|
|
|
|
if (!CollectionUtils.isEmpty(mesWorkOrderList)) {
|
|
|
|
|
Set<String> workOrderNoSet = mesWorkOrderList.stream().map(MesWorkOrder::getWorkOrderNo).collect(Collectors.toSet());
|
|
|
|
|
//查询当前产线在指定时间段内加工完成的工单条码数据
|
|
|
|
|
List<MesWorkCenterBoardResultModel> mesProductOffLineQueryResultList = mesYfBoardDao.queryCompletedSnInfo(
|
|
|
|
|
conditionModel.getWorkCenterCodeList().get(0),
|
|
|
|
|
conditionModel.getOrganizeCode(),
|
|
|
|
|
timeZoneMap.get(conditionModel.getWorkCenterCodeList().get(0)).get(START_TIME),
|
|
|
|
|
timeZoneMap.get(conditionModel.getWorkCenterCodeList().get(0)).get(END_TIME),
|
|
|
|
|
workOrderNoSet);
|
|
|
|
|
//查询结果按照工单号分组
|
|
|
|
|
Map<String, List<MesWorkCenterBoardResultModel>> workOrderAndSnDataByOrderNoMap =
|
|
|
|
|
mesProductOffLineQueryResultList.stream().collect(Collectors.groupingBy(MesWorkCenterBoardResultModel::getWorkOrderNo));
|
|
|
|
|
//封装汇总数据
|
|
|
|
|
for (MesWorkOrder mesWorkOrder : mesWorkOrderList) {
|
|
|
|
|
MesWorkCenterBoardResultModel resultModel = new MesWorkCenterBoardResultModel();
|
|
|
|
|
resultModel.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
|
|
|
|
|
resultModel.setPartNo(mesWorkOrder.getPartNo());
|
|
|
|
|
resultModel.setPartDescription(mesWorkOrder.getPartName());
|
|
|
|
|
resultModel.setWorkOrderCompletedQuantity(mesWorkOrder.getCompleteQty());
|
|
|
|
|
resultModel.setWorkOrderPlannedQuantity(mesWorkOrder.getQty());
|
|
|
|
|
//计算当前工单的合格率
|
|
|
|
|
double workOrderFirstPassRate;
|
|
|
|
|
List<MesWorkCenterBoardResultModel> resultModels = workOrderAndSnDataByOrderNoMap.get(mesWorkOrder.getWorkOrderNo());
|
|
|
|
|
if (CollectionUtils.isEmpty(resultModels)) {
|
|
|
|
|
workOrderFirstPassRate = 100;
|
|
|
|
|
}else {
|
|
|
|
|
//合格数
|
|
|
|
|
long count = resultModels.stream().filter(model -> model.getQcStatus() == MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()).count();
|
|
|
|
|
workOrderFirstPassRate = count * 100 / resultModels.size();
|
|
|
|
|
if (workOrderFirstPassRate > 100) {
|
|
|
|
|
workOrderFirstPassRate = 100;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
BigDecimal bd = new BigDecimal(workOrderFirstPassRate);
|
|
|
|
|
bd = bd.setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
resultModel.setWorkOrderFirstPassRate(bd);
|
|
|
|
|
resultModelList.add(resultModel);
|
|
|
|
|
}
|
|
|
|
|
BigDecimal bd = new BigDecimal(workOrderFirstPassRate);
|
|
|
|
|
bd = bd.setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
resultModel.setWorkOrderFirstPassRate(bd);
|
|
|
|
|
resultModelList.add(resultModel);
|
|
|
|
|
}
|
|
|
|
|
return resultModelList;
|
|
|
|
|
}
|
|
|
|
@ -208,7 +225,8 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
|
|
|
|
|
conditionModel.getWorkCenterCodeList().get(0),
|
|
|
|
|
conditionModel.getOrganizeCode(),
|
|
|
|
|
timeZoneMap.get(START_TIME).get(START_TIME),
|
|
|
|
|
timeZoneMap.get(END_TIME).get(END_TIME));
|
|
|
|
|
timeZoneMap.get(END_TIME).get(END_TIME),
|
|
|
|
|
null);
|
|
|
|
|
//依次汇总每个时间段的数据
|
|
|
|
|
for (String timeZone : timeZoneMap.keySet()) {
|
|
|
|
|
MesWorkCenterBoardResultModel resultModel = new MesWorkCenterBoardResultModel();
|
|
|
|
|