|
|
|
@ -55,6 +55,15 @@ public class MesBoradServiceImpl implements IMesBoradService {
|
|
|
|
|
try {
|
|
|
|
|
boardDTO.setEquipmentTypeCode("equ_type_bzx");
|
|
|
|
|
List<BoardDTO> lineList = mesMapper.getLineList(boardDTO);
|
|
|
|
|
if (boardDTO.getIsqua()!=null){
|
|
|
|
|
//查询当天生产的产线
|
|
|
|
|
List<String> productLineList = mesMapper.getproductLineList();
|
|
|
|
|
// 使用Stream过滤lineList,只保留equCode在productLineList中的数据
|
|
|
|
|
lineList = lineList.stream()
|
|
|
|
|
.filter(item -> productLineList.contains(item.getEquCode()))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return lineList;
|
|
|
|
|
}finally {
|
|
|
|
|
DynamicDataSourceContextHolder.poll();
|
|
|
|
@ -65,157 +74,180 @@ public class MesBoradServiceImpl implements IMesBoradService {
|
|
|
|
|
@Override
|
|
|
|
|
public BoardDTO getProduction15Days(BoardDTO boardDTO) {
|
|
|
|
|
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
|
|
|
|
|
BoardDTO dto = new BoardDTO();
|
|
|
|
|
try {
|
|
|
|
|
BoardDTO dto = new BoardDTO();
|
|
|
|
|
|
|
|
|
|
String nowDate = DateUtils.getDate();
|
|
|
|
|
String nowDate = DateUtils.getDate();
|
|
|
|
|
|
|
|
|
|
List<String> days = this.getDays(15);
|
|
|
|
|
//days
|
|
|
|
|
dto.setDays(days);
|
|
|
|
|
boardDTO.setStartTime(days.get(0));
|
|
|
|
|
boardDTO.setEndTime(days.get(days.size()-1));
|
|
|
|
|
Map<String,MesReportWork> pros15Plan = mesMapper.getProduction15Days(boardDTO);
|
|
|
|
|
Map<String,MesReportWork> pros15Act = mesMapper.getProduction15DaysAct(boardDTO);
|
|
|
|
|
MesReportWork todayPlandto = pros15Plan.get(nowDate);
|
|
|
|
|
MesReportWork todayActdto = pros15Act.get(nowDate);
|
|
|
|
|
if(todayPlandto != null){
|
|
|
|
|
dto.setPlanProduction(todayPlandto.getQuantity().toString().replace(".00",""));
|
|
|
|
|
}else{
|
|
|
|
|
dto.setPlanProduction("0");
|
|
|
|
|
}
|
|
|
|
|
if(todayActdto != null){
|
|
|
|
|
dto.setActProduction(todayActdto.getQuantityFeedback().toString().replace(".00",""));
|
|
|
|
|
}else{
|
|
|
|
|
dto.setActProduction("0");
|
|
|
|
|
}
|
|
|
|
|
//plans;
|
|
|
|
|
List<String> plans = new ArrayList<>();
|
|
|
|
|
List<String> acts = new ArrayList<>();
|
|
|
|
|
//acts;
|
|
|
|
|
for(String dayStr:days){
|
|
|
|
|
MesReportWork workPlanR = pros15Plan.get(dayStr);
|
|
|
|
|
MesReportWork workActR = pros15Act.get(dayStr);
|
|
|
|
|
if(workPlanR != null){
|
|
|
|
|
plans.add(workPlanR.getQuantity().toString());
|
|
|
|
|
List<String> days = this.getDays(15);
|
|
|
|
|
//days
|
|
|
|
|
dto.setDays(days);
|
|
|
|
|
boardDTO.setStartTime(days.get(0));
|
|
|
|
|
boardDTO.setEndTime(days.get(days.size()-1));
|
|
|
|
|
Map<String,MesReportWork> pros15Plan = mesMapper.getProduction15Days(boardDTO);
|
|
|
|
|
Map<String,MesReportWork> pros15Act = mesMapper.getProduction15DaysAct(boardDTO);
|
|
|
|
|
MesReportWork todayPlandto = pros15Plan.get(nowDate);
|
|
|
|
|
MesReportWork todayActdto = pros15Act.get(nowDate);
|
|
|
|
|
if(todayPlandto != null){
|
|
|
|
|
dto.setPlanProduction(todayPlandto.getQuantity().toString().replace(".00",""));
|
|
|
|
|
}else{
|
|
|
|
|
plans.add("0");
|
|
|
|
|
dto.setPlanProduction("0");
|
|
|
|
|
}
|
|
|
|
|
if(workActR != null){
|
|
|
|
|
acts.add(workActR.getQuantityFeedback().toString());
|
|
|
|
|
if(todayActdto != null){
|
|
|
|
|
dto.setActProduction(todayActdto.getQuantityFeedback().toString().replace(".00",""));
|
|
|
|
|
}else{
|
|
|
|
|
acts.add("0");
|
|
|
|
|
dto.setActProduction("0");
|
|
|
|
|
}
|
|
|
|
|
//plans;
|
|
|
|
|
List<String> plans = new ArrayList<>();
|
|
|
|
|
List<String> acts = new ArrayList<>();
|
|
|
|
|
//acts;
|
|
|
|
|
for(String dayStr:days){
|
|
|
|
|
MesReportWork workPlanR = pros15Plan.get(dayStr);
|
|
|
|
|
MesReportWork workActR = pros15Act.get(dayStr);
|
|
|
|
|
if(workPlanR != null){
|
|
|
|
|
plans.add(workPlanR.getQuantity().toString());
|
|
|
|
|
}else{
|
|
|
|
|
plans.add("0");
|
|
|
|
|
}
|
|
|
|
|
if(workActR != null){
|
|
|
|
|
acts.add(workActR.getQuantityFeedback().toString());
|
|
|
|
|
}else{
|
|
|
|
|
acts.add("0");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
dto.setPlans(plans);
|
|
|
|
|
dto.setActs(acts);
|
|
|
|
|
return dto;
|
|
|
|
|
}finally {
|
|
|
|
|
DynamicDataSourceContextHolder.poll();
|
|
|
|
|
}
|
|
|
|
|
dto.setPlans(plans);
|
|
|
|
|
dto.setActs(acts);
|
|
|
|
|
return dto;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Map<String,BoardDTO> getProductionLineInfo(BoardDTO boardDTO) {
|
|
|
|
|
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
|
|
|
|
|
Map<String,BoardDTO> dtoMap = new HashMap<>();
|
|
|
|
|
//当前工单信息
|
|
|
|
|
BoardDTO workOrder = mesMapper.getWorkOrder(boardDTO);
|
|
|
|
|
try {
|
|
|
|
|
Map<String,BoardDTO> dtoMap = new HashMap<>();
|
|
|
|
|
//当前工单信息
|
|
|
|
|
BoardDTO workOrder = mesMapper.getWorkOrder(boardDTO);
|
|
|
|
|
|
|
|
|
|
if(workOrder == null || StringUtils.isEmpty(workOrder.getWorkorderCode())){
|
|
|
|
|
return dtoMap;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boardDTO.setWorkorderCode(workOrder.getWorkorderCode());
|
|
|
|
|
boardDTO.setProductCode(workOrder.getProductCode());
|
|
|
|
|
MesLine meslineInfo = mesMapper.getMesLineInfo(boardDTO);
|
|
|
|
|
|
|
|
|
|
QuantityDto quantityDto = new QuantityDto();
|
|
|
|
|
quantityDto.setWorkorderCode(boardDTO.getWorkorderCode());
|
|
|
|
|
quantityDto.setMachineCode(boardDTO.getEquCode());
|
|
|
|
|
quantityDto.setBoard("1");
|
|
|
|
|
QuantityDto parentMesReport = mesReportWorkMapper.getRealQuantity(quantityDto);
|
|
|
|
|
QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto);
|
|
|
|
|
if(sonMesReport == null){//单层工单的情况
|
|
|
|
|
sonMesReport = mesReportWorkMapper.getSumQuantityOne(quantityDto);
|
|
|
|
|
}
|
|
|
|
|
if(sonMesReport != null){//实际用人
|
|
|
|
|
workOrder.setActMan(sonMesReport.getUseMan());
|
|
|
|
|
}else{
|
|
|
|
|
workOrder.setActMan(new BigDecimal("0"));
|
|
|
|
|
}
|
|
|
|
|
if(parentMesReport!=null){//实际效率 = 实际母单产量/子总工时
|
|
|
|
|
BigDecimal manAvgActual = new BigDecimal(parentMesReport.getQuantityFeedbackSum())
|
|
|
|
|
.divide(sonMesReport.getWorkTime(),2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
workOrder.setActXl(manAvgActual);
|
|
|
|
|
}else{
|
|
|
|
|
workOrder.setActXl(new BigDecimal("0"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(meslineInfo != null){
|
|
|
|
|
workOrder.setStandarMan(meslineInfo.getStandarMan());
|
|
|
|
|
workOrder.setStandarXl(meslineInfo.getStandarXl());
|
|
|
|
|
}else{
|
|
|
|
|
workOrder.setStandarMan(new BigDecimal("0"));
|
|
|
|
|
workOrder.setStandarXl(new BigDecimal("0"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dtoMap.put("workOrder",workOrder);
|
|
|
|
|
|
|
|
|
|
QcCheckTaskDTO taskDTO = mesMapper.getTaskInfo(boardDTO);
|
|
|
|
|
BoardDTO task2 = new BoardDTO();
|
|
|
|
|
if(taskDTO.getQuality() != null){
|
|
|
|
|
task2.setTaskNum(taskDTO.getQuality().toString());
|
|
|
|
|
}else{
|
|
|
|
|
task2.setTaskNum("0");
|
|
|
|
|
}
|
|
|
|
|
dtoMap.put("taskNum",task2);//巡检次数
|
|
|
|
|
|
|
|
|
|
BoardDTO task3 = new BoardDTO();
|
|
|
|
|
if(taskDTO.getSampleQuality() != null){
|
|
|
|
|
task3.setTaskSampleNum(taskDTO.getSampleQuality().toString());
|
|
|
|
|
}else{
|
|
|
|
|
task3.setTaskSampleNum("0");
|
|
|
|
|
}
|
|
|
|
|
dtoMap.put("taskSampleNum",task3);//巡检抽样数量
|
|
|
|
|
|
|
|
|
|
BoardDTO task4 = new BoardDTO();
|
|
|
|
|
List<QcCheckTaskDTO> checkList = mesMapper.getCheckList(boardDTO);
|
|
|
|
|
if(!CollectionUtils.isEmpty(checkList)){
|
|
|
|
|
task4.setCheckList(checkList);
|
|
|
|
|
}
|
|
|
|
|
dtoMap.put("piedata",task4);//巡检结果
|
|
|
|
|
|
|
|
|
|
if(workOrder == null || StringUtils.isEmpty(workOrder.getWorkorderCode())){
|
|
|
|
|
return dtoMap;
|
|
|
|
|
}finally {
|
|
|
|
|
DynamicDataSourceContextHolder.poll();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boardDTO.setWorkorderCode(workOrder.getWorkorderCode());
|
|
|
|
|
boardDTO.setProductCode(workOrder.getProductCode());
|
|
|
|
|
MesLine meslineInfo = mesMapper.getMesLineInfo(boardDTO);
|
|
|
|
|
|
|
|
|
|
QuantityDto quantityDto = new QuantityDto();
|
|
|
|
|
quantityDto.setWorkorderCode(boardDTO.getWorkorderCode());
|
|
|
|
|
quantityDto.setMachineCode(boardDTO.getEquCode());
|
|
|
|
|
quantityDto.setBoard("1");
|
|
|
|
|
QuantityDto parentMesReport = mesReportWorkMapper.getRealQuantity(quantityDto);
|
|
|
|
|
QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto);
|
|
|
|
|
if(sonMesReport == null){//单层工单的情况
|
|
|
|
|
sonMesReport = mesReportWorkMapper.getSumQuantityOne(quantityDto);
|
|
|
|
|
}
|
|
|
|
|
if(sonMesReport != null){//实际用人
|
|
|
|
|
workOrder.setActMan(sonMesReport.getUseMan());
|
|
|
|
|
}else{
|
|
|
|
|
workOrder.setActMan(new BigDecimal("0"));
|
|
|
|
|
}
|
|
|
|
|
if(parentMesReport!=null){//实际效率 = 实际母单产量/子总工时
|
|
|
|
|
BigDecimal manAvgActual = new BigDecimal(parentMesReport.getQuantityFeedbackSum())
|
|
|
|
|
.divide(sonMesReport.getWorkTime(),2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
workOrder.setActXl(manAvgActual);
|
|
|
|
|
}else{
|
|
|
|
|
workOrder.setActXl(new BigDecimal("0"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(meslineInfo != null){
|
|
|
|
|
workOrder.setStandarMan(meslineInfo.getStandarMan());
|
|
|
|
|
workOrder.setStandarXl(meslineInfo.getStandarXl());
|
|
|
|
|
}else{
|
|
|
|
|
workOrder.setStandarMan(new BigDecimal("0"));
|
|
|
|
|
workOrder.setStandarXl(new BigDecimal("0"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dtoMap.put("workOrder",workOrder);
|
|
|
|
|
|
|
|
|
|
QcCheckTaskDTO taskDTO = mesMapper.getTaskInfo(boardDTO);
|
|
|
|
|
BoardDTO task2 = new BoardDTO();
|
|
|
|
|
if(taskDTO.getQuality() != null){
|
|
|
|
|
task2.setTaskNum(taskDTO.getQuality().toString());
|
|
|
|
|
}else{
|
|
|
|
|
task2.setTaskNum("0");
|
|
|
|
|
}
|
|
|
|
|
dtoMap.put("taskNum",task2);//巡检次数
|
|
|
|
|
|
|
|
|
|
BoardDTO task3 = new BoardDTO();
|
|
|
|
|
if(taskDTO.getSampleQuality() != null){
|
|
|
|
|
task3.setTaskSampleNum(taskDTO.getSampleQuality().toString());
|
|
|
|
|
}else{
|
|
|
|
|
task3.setTaskSampleNum("0");
|
|
|
|
|
}
|
|
|
|
|
dtoMap.put("taskSampleNum",task3);//巡检抽样数量
|
|
|
|
|
|
|
|
|
|
BoardDTO task4 = new BoardDTO();
|
|
|
|
|
List<QcCheckTaskDTO> checkList = mesMapper.getCheckList(boardDTO);
|
|
|
|
|
if(!CollectionUtils.isEmpty(checkList)){
|
|
|
|
|
task4.setCheckList(checkList);
|
|
|
|
|
}
|
|
|
|
|
dtoMap.put("piedata",task4);//巡检结果
|
|
|
|
|
|
|
|
|
|
return dtoMap;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<ProOrderWorkorder> getPorOrderList(BoardDTO boardDTO) {
|
|
|
|
|
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
|
|
|
|
|
List<ProOrderWorkorder> dtos = mesMapper.getPorOrderList(boardDTO);
|
|
|
|
|
return dtos;
|
|
|
|
|
try{
|
|
|
|
|
List<ProOrderWorkorder> dtos = mesMapper.getPorOrderList(boardDTO);
|
|
|
|
|
return dtos;
|
|
|
|
|
}finally {
|
|
|
|
|
DynamicDataSourceContextHolder.poll();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<BoardDTO> getHFProInfo(BoardDTO boardDTO) {
|
|
|
|
|
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
|
|
|
|
|
List<BoardDTO> dtos = mesMapper.getHFProInfo(boardDTO);
|
|
|
|
|
return dtos;
|
|
|
|
|
try {
|
|
|
|
|
List<BoardDTO> dtos = mesMapper.getHFProInfo(boardDTO);
|
|
|
|
|
return dtos;
|
|
|
|
|
}finally {
|
|
|
|
|
DynamicDataSourceContextHolder.poll();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<BoardDTO> getHFQcInfo(BoardDTO boardDTO) {
|
|
|
|
|
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
|
|
|
|
|
List<BoardDTO> dtos = mesMapper.getHFQcInfo(boardDTO);
|
|
|
|
|
// if(!CollectionUtils.isEmpty(dtos)){
|
|
|
|
|
// //不合格
|
|
|
|
|
// List<BoardDTO> isquas = dtos.stream().filter(a -> a.getIsqua().equals("0")).collect(Collectors.toList());
|
|
|
|
|
// dtos.get(0).setTaskNum(isquas.size()+"");
|
|
|
|
|
// }
|
|
|
|
|
return dtos;
|
|
|
|
|
try {
|
|
|
|
|
List<BoardDTO> dtos = mesMapper.getHFQcInfo(boardDTO);
|
|
|
|
|
return dtos;
|
|
|
|
|
}finally {
|
|
|
|
|
DynamicDataSourceContextHolder.poll();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<BoardDTO> getHFxlInfo(BoardDTO boardDTO) {
|
|
|
|
|
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
|
|
|
|
|
List<BoardDTO> dtos = mesMapper.getHFxlInfo(boardDTO);
|
|
|
|
|
return dtos;
|
|
|
|
|
try {
|
|
|
|
|
List<BoardDTO> dtos = mesMapper.getHFxlInfo(boardDTO);
|
|
|
|
|
return dtos;
|
|
|
|
|
}finally {
|
|
|
|
|
DynamicDataSourceContextHolder.poll();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -240,24 +272,12 @@ public class MesBoradServiceImpl implements IMesBoradService {
|
|
|
|
|
@Override
|
|
|
|
|
public Map getProductionNumberPLC(BoardDTO mesBoard) {
|
|
|
|
|
DynamicDataSourceContextHolder.push(mesBoard.getFactoryCode());
|
|
|
|
|
Map mapList = mesMapper.getProductionNumberPLC(mesBoard);
|
|
|
|
|
return mapList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args){
|
|
|
|
|
List<String> days = new ArrayList<>();
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
Calendar cal = Calendar.getInstance();
|
|
|
|
|
//获取前面的时间用-负号
|
|
|
|
|
Date date = new Date();
|
|
|
|
|
for(int num=0;num<15;num++){
|
|
|
|
|
cal.setTime(date);
|
|
|
|
|
cal.add(Calendar.DAY_OF_MONTH, -num);
|
|
|
|
|
days.add(sdf.format(cal.getTime()));
|
|
|
|
|
try {
|
|
|
|
|
Map mapList = mesMapper.getProductionNumberPLC(mesBoard);
|
|
|
|
|
return mapList;
|
|
|
|
|
}finally {
|
|
|
|
|
DynamicDataSourceContextHolder.poll();
|
|
|
|
|
}
|
|
|
|
|
Collections.reverse(days);
|
|
|
|
|
|
|
|
|
|
System.out.println(JSONObject.toJSONString(days));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|