|
|
|
@ -1,7 +1,6 @@
|
|
|
|
package com.op.mes.service.impl;
|
|
|
|
package com.op.mes.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
|
|
|
|
import java.text.DateFormat;
|
|
|
|
import java.text.DateFormat;
|
|
|
|
import java.text.ParseException;
|
|
|
|
import java.text.ParseException;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
@ -11,9 +10,7 @@ import java.time.format.DateTimeFormatter;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.csp.sentinel.util.StringUtil;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
|
|
|
|
|
import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
|
|
|
|
import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
|
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
|
import com.op.common.core.domain.R;
|
|
|
|
import com.op.common.core.domain.R;
|
|
|
|
@ -28,7 +25,6 @@ import com.op.mes.domain.dto.QuantityDto;
|
|
|
|
import com.op.mes.domain.dto.SysFactoryDto;
|
|
|
|
import com.op.mes.domain.dto.SysFactoryDto;
|
|
|
|
import com.op.mes.domain.vo.DynamicColumnVo;
|
|
|
|
import com.op.mes.domain.vo.DynamicColumnVo;
|
|
|
|
import com.op.mes.domain.vo.MesDailyReportVo;
|
|
|
|
import com.op.mes.domain.vo.MesDailyReportVo;
|
|
|
|
import com.op.mes.domain.vo.MesDailyReportVos;
|
|
|
|
|
|
|
|
import com.op.mes.domain.vo.MesMonthReportVo;
|
|
|
|
import com.op.mes.domain.vo.MesMonthReportVo;
|
|
|
|
import com.op.mes.service.IWCSInterfaceService;
|
|
|
|
import com.op.mes.service.IWCSInterfaceService;
|
|
|
|
import com.op.system.api.RemoteSapService;
|
|
|
|
import com.op.system.api.RemoteSapService;
|
|
|
|
@ -460,20 +456,10 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
|
|
|
|
// dto.setUseManRemark(mesDailyReportVos.getUseManRemark().replaceAll(";+", " "));
|
|
|
|
// dto.setUseManRemark(mesDailyReportVos.getUseManRemark().replaceAll(";+", " "));
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
//查询订单报工信息,并查询订单层级
|
|
|
|
QuantityDto parentMesReport = mesReportWorkMapper.getRealQuantity(quantityDto);
|
|
|
|
QuantityDto parentMesReport = mesReportWorkMapper.getRealQuantity(quantityDto);
|
|
|
|
QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto);
|
|
|
|
QuantityDto sonMesReport = new QuantityDto();
|
|
|
|
if(sonMesReport == null){//单层工单的情况
|
|
|
|
QuantityDto threeMesReport = new QuantityDto();
|
|
|
|
sonMesReport = mesReportWorkMapper.getSumQuantityOne(quantityDto);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//三层订单
|
|
|
|
|
|
|
|
QuantityDto threeMesReport =new QuantityDto();
|
|
|
|
|
|
|
|
if (sonMesReport != null ){
|
|
|
|
|
|
|
|
QuantityDto quantityDtothree = new QuantityDto();
|
|
|
|
|
|
|
|
quantityDtothree.setWorkorderCode(sonMesReport.getWorkorderCode());
|
|
|
|
|
|
|
|
quantityDtothree.setMachineCode(machineCode);
|
|
|
|
|
|
|
|
threeMesReport = mesReportWorkMapper.getSumQuantity(quantityDtothree);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 产量
|
|
|
|
// 产量
|
|
|
|
Long sumQua = 0L;
|
|
|
|
Long sumQua = 0L;
|
|
|
|
// 实际产量
|
|
|
|
// 实际产量
|
|
|
|
@ -482,99 +468,193 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
|
|
|
|
BigDecimal workTime = BigDecimal.ZERO;
|
|
|
|
BigDecimal workTime = BigDecimal.ZERO;
|
|
|
|
// 实际用人
|
|
|
|
// 实际用人
|
|
|
|
BigDecimal useMan = BigDecimal.ZERO;
|
|
|
|
BigDecimal useMan = BigDecimal.ZERO;
|
|
|
|
if (sonMesReport != null && sonMesReport != null) {
|
|
|
|
BigDecimal totalWorkTime = BigDecimal.ZERO;
|
|
|
|
sumQua = sonMesReport.getQuantityFeedbackSum();
|
|
|
|
//单层订单
|
|
|
|
|
|
|
|
if ("1".equals(parentMesReport.getCegci())){
|
|
|
|
|
|
|
|
sumQua = parentMesReport.getQuantityFeedbackSum();
|
|
|
|
realQua = parentMesReport.getQuantityFeedbackSum();
|
|
|
|
realQua = parentMesReport.getQuantityFeedbackSum();
|
|
|
|
workTime = sonMesReport.getWorkTime();
|
|
|
|
workTime = parentMesReport.getWorkTime();
|
|
|
|
useMan = BigDecimal.ZERO;
|
|
|
|
//计算
|
|
|
|
if (parentMesReport.getUseMan() != null ){
|
|
|
|
|
|
|
|
useMan = sonMesReport.getUseMan().add(parentMesReport.getUseMan());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (sonMesReport.getUseMan() != null ){
|
|
|
|
|
|
|
|
useMan = sonMesReport.getUseMan().add(parentMesReport.getUseMan());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// if(sonMesReport.getUseMan().compareTo(parentMesReport.getUseMan()) == 0){
|
|
|
|
|
|
|
|
// useMan=sonMesReport.getUseMan();
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// 若 threeMesReport 不为空,则叠加其 useMan 值
|
|
|
|
|
|
|
|
if (threeMesReport != null && threeMesReport.getUseMan() != null) {
|
|
|
|
|
|
|
|
useMan = useMan.add(threeMesReport.getUseMan());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
dto.setQuantityAct(String.valueOf(sumQua));
|
|
|
|
dto.setQuantityAct(String.valueOf(sumQua));
|
|
|
|
dto.setQuantityFeedback(String.valueOf(realQua));
|
|
|
|
dto.setQuantityFeedback(String.valueOf(realQua));
|
|
|
|
dto.setWorkTime(workTime);
|
|
|
|
dto.setWorkTime(workTime);
|
|
|
|
//实际用人
|
|
|
|
//实际用人
|
|
|
|
|
|
|
|
dto.setUseMan(parentMesReport.getUseMan());
|
|
|
|
|
|
|
|
totalWorkTime=parentMesReport.getTotalWorkTime();
|
|
|
|
|
|
|
|
}else if ("2".equals(parentMesReport.getCegci())){
|
|
|
|
|
|
|
|
sonMesReport =mesReportWorkMapper.getSumQuantity(quantityDto);
|
|
|
|
|
|
|
|
realQua = parentMesReport.getQuantityFeedbackSum();
|
|
|
|
|
|
|
|
workTime = parentMesReport.getWorkTime();
|
|
|
|
|
|
|
|
dto.setQuantityAct(String.valueOf(sonMesReport.getQuantityFeedbackSum()));
|
|
|
|
|
|
|
|
dto.setQuantityFeedback(String.valueOf(realQua));
|
|
|
|
|
|
|
|
dto.setWorkTime(workTime);
|
|
|
|
|
|
|
|
//实际用人
|
|
|
|
|
|
|
|
useMan = sonMesReport.getUseMan().add(parentMesReport.getUseMan());
|
|
|
|
dto.setUseMan(useMan);
|
|
|
|
dto.setUseMan(useMan);
|
|
|
|
// 计算规格
|
|
|
|
totalWorkTime = sonMesReport.getTotalWorkTime().add(parentMesReport.getTotalWorkTime());
|
|
|
|
//dto.setSpec(sumQua / realQua);
|
|
|
|
}else if ("3".equals(parentMesReport.getCegci())){
|
|
|
|
// 订单完成率 实际产量/计划产量
|
|
|
|
sonMesReport =mesReportWorkMapper.getSumQuantity(quantityDto);
|
|
|
|
BigDecimal completeRate = new BigDecimal(realQua)
|
|
|
|
quantityDto.setWorkorderCode(sonMesReport.getWorkorderCode());
|
|
|
|
.multiply(new BigDecimal("100.00"))
|
|
|
|
threeMesReport=mesReportWorkMapper.getSumQuantity(quantityDto);
|
|
|
|
.divide(new BigDecimal(dto.getQuantitySplit()),2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setCompleteRate(completeRate.toString()+"%");
|
|
|
|
|
|
|
|
//标准工时=母单数量*规格/产线标准效率
|
|
|
|
|
|
|
|
BigDecimal workTimeStandard = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
if(dto.getEfficiency() != null&&dto.getEfficiency().compareTo(BigDecimal.ZERO)!=0){
|
|
|
|
|
|
|
|
workTimeStandard = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
.multiply(new BigDecimal(dto.getSpec()))
|
|
|
|
|
|
|
|
.divide(dto.getEfficiency(),2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setWorkTimeStandard(workTimeStandard.toString());
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
dto.setWorkTimeStandard("-");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 产线效率 标准工时/实际工时
|
|
|
|
|
|
|
|
BigDecimal productivity = workTimeStandard
|
|
|
|
|
|
|
|
.multiply(new BigDecimal("100.00"))
|
|
|
|
|
|
|
|
.divide(workTime,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setProductivity(productivity.toString()+"%");
|
|
|
|
|
|
|
|
// 总工时 实际用人*实际工时
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal totalWorkTime = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
//人数*工时
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (parentMesReport.getTotalWorkTime() != null){
|
|
|
|
|
|
|
|
totalWorkTime = totalWorkTime.add(parentMesReport.getTotalWorkTime());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (sonMesReport.getTotalWorkTime() != null){
|
|
|
|
|
|
|
|
totalWorkTime = totalWorkTime.add(sonMesReport.getTotalWorkTime());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (threeMesReport != null && threeMesReport.getTotalWorkTime() != null ){
|
|
|
|
|
|
|
|
totalWorkTime = totalWorkTime.add(threeMesReport.getTotalWorkTime());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dto.setTotalWorkTime(totalWorkTime.toString());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 标准人均效率 实际产量/标准用人/标准工时
|
|
|
|
|
|
|
|
BigDecimal manAvgStandard = null;
|
|
|
|
|
|
|
|
if(StringUtils.isNotBlank(dto.getManStandard())){
|
|
|
|
|
|
|
|
manAvgStandard = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
.divide(new BigDecimal(dto.getManStandard()),4,BigDecimal.ROUND_HALF_UP)
|
|
|
|
|
|
|
|
.divide(workTimeStandard,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setManAvgStandard(manAvgStandard.toString());
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
dto.setManAvgStandard("0");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 实际人均效率 实际产量/总工时
|
|
|
|
|
|
|
|
BigDecimal manAvgActual = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
.divide(totalWorkTime,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setManAvgActual(manAvgActual.toString());
|
|
|
|
|
|
|
|
// 人均效率达成率 实际人均效率/标准人均效率
|
|
|
|
|
|
|
|
if(manAvgStandard!=null){
|
|
|
|
|
|
|
|
BigDecimal manAvgDo = manAvgActual
|
|
|
|
|
|
|
|
.multiply(new BigDecimal("100.00"))
|
|
|
|
|
|
|
|
.divide(manAvgStandard,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setManAvgDo(manAvgDo.toString()+"%");
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
dto.setManAvgDo("0%");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
realQua = parentMesReport.getQuantityFeedbackSum();
|
|
|
|
|
|
|
|
workTime = parentMesReport.getWorkTime();
|
|
|
|
|
|
|
|
dto.setQuantityAct(String.valueOf(sonMesReport.getQuantityFeedbackSum()));
|
|
|
|
|
|
|
|
dto.setQuantityFeedback(String.valueOf(realQua));
|
|
|
|
|
|
|
|
dto.setWorkTime(workTime);
|
|
|
|
|
|
|
|
//实际用人
|
|
|
|
|
|
|
|
useMan = sonMesReport.getUseMan().add(parentMesReport.getUseMan()).add(threeMesReport.getUseMan());
|
|
|
|
|
|
|
|
dto.setUseMan(useMan);
|
|
|
|
|
|
|
|
totalWorkTime = sonMesReport.getTotalWorkTime().add(parentMesReport.getTotalWorkTime()).add(threeMesReport.getTotalWorkTime());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
dto.setTotalWorkTime(totalWorkTime.toString());
|
|
|
|
|
|
|
|
// 订单完成率 实际产量/计划产量
|
|
|
|
|
|
|
|
BigDecimal completeRate = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
.multiply(new BigDecimal("100.00"))
|
|
|
|
|
|
|
|
.divide(new BigDecimal(dto.getQuantitySplit()),2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setCompleteRate(completeRate.toString()+"%");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//标准工时=母单数量*规格/产线标准效率
|
|
|
|
|
|
|
|
BigDecimal workTimeStandard = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
if(dto.getEfficiency() != null&&dto.getEfficiency().compareTo(BigDecimal.ZERO)!=0){
|
|
|
|
|
|
|
|
workTimeStandard = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
.multiply(new BigDecimal(dto.getSpec()))
|
|
|
|
|
|
|
|
.divide(dto.getEfficiency(),2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setWorkTimeStandard(workTimeStandard.toString());
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
dto.setWorkTimeStandard("-");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 产线效率 标准工时/实际工时
|
|
|
|
|
|
|
|
BigDecimal productivity = workTimeStandard
|
|
|
|
|
|
|
|
.multiply(new BigDecimal("100.00"))
|
|
|
|
|
|
|
|
.divide(workTime,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setProductivity(productivity.toString()+"%");
|
|
|
|
|
|
|
|
// 标准人均效率 实际产量/标准用人/标准工时
|
|
|
|
|
|
|
|
BigDecimal manAvgStandard = null;
|
|
|
|
|
|
|
|
if(StringUtils.isNotBlank(dto.getManStandard())){
|
|
|
|
|
|
|
|
manAvgStandard = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
.divide(new BigDecimal(dto.getManStandard()),4,BigDecimal.ROUND_HALF_UP)
|
|
|
|
|
|
|
|
.divide(workTimeStandard,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setManAvgStandard(manAvgStandard.toString());
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
dto.setManAvgStandard("0");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 实际人均效率 实际产量/总工时
|
|
|
|
|
|
|
|
BigDecimal manAvgActual = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
.divide(totalWorkTime,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setManAvgActual(manAvgActual.toString());
|
|
|
|
|
|
|
|
// 人均效率达成率 实际人均效率/标准人均效率
|
|
|
|
|
|
|
|
if(manAvgStandard!=null){
|
|
|
|
|
|
|
|
BigDecimal manAvgDo = manAvgActual
|
|
|
|
|
|
|
|
.multiply(new BigDecimal("100.00"))
|
|
|
|
|
|
|
|
.divide(manAvgStandard,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
dto.setManAvgDo(manAvgDo.toString()+"%");
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
dto.setManAvgDo("0%");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto);
|
|
|
|
|
|
|
|
// if(sonMesReport == null){//单层工单的情况
|
|
|
|
|
|
|
|
// sonMesReport = mesReportWorkMapper.getSumQuantityOne(quantityDto);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//三层订单
|
|
|
|
|
|
|
|
// QuantityDto threeMesReport =new QuantityDto();
|
|
|
|
|
|
|
|
// if (sonMesReport != null ){
|
|
|
|
|
|
|
|
// QuantityDto quantityDtothree = new QuantityDto();
|
|
|
|
|
|
|
|
// quantityDtothree.setWorkorderCode(sonMesReport.getWorkorderCode());
|
|
|
|
|
|
|
|
// quantityDtothree.setMachineCode(machineCode);
|
|
|
|
|
|
|
|
// threeMesReport = mesReportWorkMapper.getSumQuantity(quantityDtothree);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (sonMesReport != null) {
|
|
|
|
|
|
|
|
// sumQua = sonMesReport.getQuantityFeedbackSum();
|
|
|
|
|
|
|
|
// realQua = parentMesReport.getQuantityFeedbackSum();
|
|
|
|
|
|
|
|
// workTime = sonMesReport.getWorkTime();
|
|
|
|
|
|
|
|
// useMan = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
// if (parentMesReport.getUseMan() != null ){
|
|
|
|
|
|
|
|
// useMan = sonMesReport.getUseMan().add(parentMesReport.getUseMan());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (sonMesReport.getUseMan() != null ){
|
|
|
|
|
|
|
|
// useMan = sonMesReport.getUseMan().add(parentMesReport.getUseMan());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// // 若 threeMesReport 不为空,则叠加其 useMan 值
|
|
|
|
|
|
|
|
// if (threeMesReport != null && threeMesReport.getUseMan() != null) {
|
|
|
|
|
|
|
|
// useMan = useMan.add(threeMesReport.getUseMan());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// dto.setQuantityAct(String.valueOf(sumQua));
|
|
|
|
|
|
|
|
// dto.setQuantityFeedback(String.valueOf(realQua));
|
|
|
|
|
|
|
|
// dto.setWorkTime(workTime);
|
|
|
|
|
|
|
|
// //实际用人
|
|
|
|
|
|
|
|
// dto.setUseMan(useMan);
|
|
|
|
|
|
|
|
// // 计算规格
|
|
|
|
|
|
|
|
// //dto.setSpec(sumQua / realQua);
|
|
|
|
|
|
|
|
// // 订单完成率 实际产量/计划产量
|
|
|
|
|
|
|
|
// BigDecimal completeRate = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
// .multiply(new BigDecimal("100.00"))
|
|
|
|
|
|
|
|
// .divide(new BigDecimal(dto.getQuantitySplit()),2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
// dto.setCompleteRate(completeRate.toString()+"%");
|
|
|
|
|
|
|
|
// //标准工时=母单数量*规格/产线标准效率
|
|
|
|
|
|
|
|
// BigDecimal workTimeStandard = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
// if(dto.getEfficiency() != null&&dto.getEfficiency().compareTo(BigDecimal.ZERO)!=0){
|
|
|
|
|
|
|
|
// workTimeStandard = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
// .multiply(new BigDecimal(dto.getSpec()))
|
|
|
|
|
|
|
|
// .divide(dto.getEfficiency(),2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
// dto.setWorkTimeStandard(workTimeStandard.toString());
|
|
|
|
|
|
|
|
// }else{
|
|
|
|
|
|
|
|
// dto.setWorkTimeStandard("-");
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// // 产线效率 标准工时/实际工时
|
|
|
|
|
|
|
|
// BigDecimal productivity = workTimeStandard
|
|
|
|
|
|
|
|
// .multiply(new BigDecimal("100.00"))
|
|
|
|
|
|
|
|
// .divide(workTime,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
// dto.setProductivity(productivity.toString()+"%");
|
|
|
|
|
|
|
|
// // 总工时 实际用人*实际工时
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// BigDecimal totalWorkTime = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
// //人数*工时
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (parentMesReport.getTotalWorkTime() != null){
|
|
|
|
|
|
|
|
// totalWorkTime = totalWorkTime.add(parentMesReport.getTotalWorkTime());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (sonMesReport.getTotalWorkTime() != null){
|
|
|
|
|
|
|
|
// totalWorkTime = totalWorkTime.add(sonMesReport.getTotalWorkTime());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (threeMesReport != null && threeMesReport.getTotalWorkTime() != null ){
|
|
|
|
|
|
|
|
// totalWorkTime = totalWorkTime.add(threeMesReport.getTotalWorkTime());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// dto.setTotalWorkTime(totalWorkTime.toString());
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// // 标准人均效率 实际产量/标准用人/标准工时
|
|
|
|
|
|
|
|
// BigDecimal manAvgStandard = null;
|
|
|
|
|
|
|
|
// if(StringUtils.isNotBlank(dto.getManStandard())){
|
|
|
|
|
|
|
|
// manAvgStandard = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
// .divide(new BigDecimal(dto.getManStandard()),4,BigDecimal.ROUND_HALF_UP)
|
|
|
|
|
|
|
|
// .divide(workTimeStandard,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
// dto.setManAvgStandard(manAvgStandard.toString());
|
|
|
|
|
|
|
|
// }else{
|
|
|
|
|
|
|
|
// dto.setManAvgStandard("0");
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// // 实际人均效率 实际产量/总工时
|
|
|
|
|
|
|
|
// BigDecimal manAvgActual = new BigDecimal(realQua)
|
|
|
|
|
|
|
|
// .divide(totalWorkTime,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
// dto.setManAvgActual(manAvgActual.toString());
|
|
|
|
|
|
|
|
// // 人均效率达成率 实际人均效率/标准人均效率
|
|
|
|
|
|
|
|
// if(manAvgStandard!=null){
|
|
|
|
|
|
|
|
// BigDecimal manAvgDo = manAvgActual
|
|
|
|
|
|
|
|
// .multiply(new BigDecimal("100.00"))
|
|
|
|
|
|
|
|
// .divide(manAvgStandard,2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
// dto.setManAvgDo(manAvgDo.toString()+"%");
|
|
|
|
|
|
|
|
// }else{
|
|
|
|
|
|
|
|
// dto.setManAvgDo("0%");
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|