问题清单修复

tags/yfai-mes-ext-v1.0
jun 12 months ago
parent 29351f41cc
commit 3227ee65ca

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesProduceSnService;
import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService;
import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao;
import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanMapUtilsExt;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesTraceabilityTemp;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel;
@ -25,6 +26,7 @@ import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.util.ResultBean;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -47,6 +49,7 @@ import java.util.stream.Collectors;
* @Modify:
**/
@Service
@Slf4j
public class MesYfReportServiceImpl implements IMesYfReportService {
@Autowired
@ -73,6 +76,9 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
@Autowired
private MesWorkCellScanMonitorLogRepository mesWorkCellScanMonitorLogRepository;
@Autowired
private MesProcessRepository mesProcessRepository;
@Override
public ListPager<MesDeviceDataQueryReportResultModel> queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) {
ListPager<MesDeviceDataQueryReportResultModel> mesDeviceDataQueryReportResultModelListPager =
@ -132,27 +138,25 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
public List<MesTraceabilityReportModel> findTraceabilityReport(MesProduceSn mesProduceSn) {
DdlPackBean packBean = getDdlPackBean(mesProduceSn);
//查询条码记录表
List<MesProduceSn> produceSnList = mesProduceSnService.findMesProduceSn(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn());
Map<String, MesProduceSn> mesProduceSnMap = produceSnList.stream().collect(Collectors.toMap(MesProduceSn::getPartNo, t -> t));
MesProduceSn produceSn = mesProduceSnService.findMesProduceSn(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()).iterator().next();
//设备加工记录表
List<MesProductionRecord> productionRecordList = mesProductionRecordService.findMesProductionRecord(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn());
Map<String, List<MesProductionRecord>> productionRecordMap = productionRecordList.stream().collect(Collectors.groupingBy(MesProductionRecord::getPartNo));
List<String> processCodeList = productionRecordList.stream().map(MesProductionRecord::getProcessCode).filter(StringUtil::isNotEmpty).collect(Collectors.toList());
//装配记录表
List<MesProductionAssembly> productionAssemblyList = mesProductionAssemblyRepository.findByHqlWhere(packBean);
Map<String, List<MesProductionAssembly>> productionAssemblyMap = CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().collect(Collectors.groupingBy(t -> t.getPartNo() + t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode()));
Map<String, List<MesProductionAssembly>> productionAssemblyMap = CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode()));
//工位扫描监控日志
List<MesWorkCellScanMonitorLog> mesWorkCellScanMonitorLogs = mesWorkCellScanMonitorLogRepository.findByHqlWhere(packBean);
Map<String, List<MesWorkCellScanMonitorLog>> mesWorkCellScanMonitorMap = CollectionUtils.isEmpty(mesWorkCellScanMonitorLogs) ? null : mesWorkCellScanMonitorLogs.stream().collect(Collectors.groupingBy(t -> t.getPartNo() + t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode()));
Map<String, List<MesWorkCellScanMonitorLog>> mesWorkCellScanMonitorMap = CollectionUtils.isEmpty(mesWorkCellScanMonitorLogs) ? null : mesWorkCellScanMonitorLogs.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode()));
//查询工序名称
Map<String, MesProcess> processMap = getMesProcessMap(mesProduceSn, processCodeList);
//数据组装
List<MesTraceabilityReportModel> mesTraceabilityReportModelList = new ArrayList<>();
for (Map.Entry<String, MesProduceSn> produceSnEntry : mesProduceSnMap.entrySet()) {
MesTraceabilityReportModel mesTraceabilityReportModel = new MesTraceabilityReportModel();
BeanUtils.copyProperties(produceSnEntry.getValue(), mesTraceabilityReportModel);
BeanUtils.copyProperties(produceSn, mesTraceabilityReportModel);
mesTraceabilityReportModel.setProdType(MesExtEnumUtil.TRACEABILITY_REPORT_PROD_TYPE.NO_SORT.getValue());
if (productionRecordMap.containsKey(produceSnEntry.getKey())) {
List<MesProductionRecord> mesProductionRecordList = productionRecordMap.get(produceSnEntry.getKey());
int duration = 0;
for (MesProductionRecord mesProductionRecord : mesProductionRecordList) {
for (MesProductionRecord mesProductionRecord : productionRecordList) {
MesTraceabilityReportDataModel dataModel = new MesTraceabilityReportDataModel();
BeanUtils.copyProperties(mesProductionRecord, dataModel);
//持续时间
@ -162,7 +166,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
duration += dataModel.getDuration();
}
//装配记录表
String key = mesProductionRecord.getPartNo() + mesProductionRecord.getWorkCenterCode() + mesProductionRecord.getWorkCellCode() + mesProductionRecord.getEquipmentCode();
String key = mesProductionRecord.getWorkCenterCode() + mesProductionRecord.getWorkCellCode() + mesProductionRecord.getEquipmentCode();
if (!Objects.isNull(productionAssemblyMap) && productionAssemblyMap.containsKey(key)) {
dataModel.setProductionAssemblyList(productionAssemblyMap.get(key));
}
@ -170,21 +174,29 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
if (!Objects.isNull(mesWorkCellScanMonitorMap) && mesWorkCellScanMonitorMap.containsKey(key)) {
dataModel.setMesWorkCellScanMonitorLogs(mesWorkCellScanMonitorMap.get(key));
}
//查询工序名称
if(StringUtil.isNotEmpty(dataModel.getProcessCode())){
if(!Objects.isNull(processMap) && processMap.containsKey(dataModel.getProcessCode())){
dataModel.setProcessName(processMap.get(dataModel.getProcessCode()).getProcessName());
}else{
dataModel.setProcessName(dataModel.getProcessCode());
}
}
mesTraceabilityReportModel.getMesTraceabilityReportDataModelList().add(dataModel);
}
//开始时间
mesTraceabilityReportModel.setProduceBegin(mesProductionRecordList.iterator().next().getStartDateTime());
mesTraceabilityReportModel.setProduceBegin(productionRecordList.iterator().next().getStartDateTime());
//生产状态
mesTraceabilityReportModel.setProdStatus(mesTraceabilityReportModel.getSnStatus());
//结束时间
if (mesTraceabilityReportModel.getSnStatus() >= MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()) {
mesTraceabilityReportModel.setProdStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue());
mesTraceabilityReportModel.setProduceEnd(mesProductionRecordList.get(mesProductionRecordList.size() - 1).getCompleteDateTime());
mesTraceabilityReportModel.setProduceEnd(productionRecordList.get(productionRecordList.size() - 1).getCompleteDateTime());
}
mesTraceabilityReportModel.setDurationStr(dateFormat(duration));
mesTraceabilityReportModel.setDuration(duration);
}
//生成PDF文件并上传
try {
mesTraceabilityReportModel.setUrl(MesTraceabilityTemp.getMesTraceabilityTemp(mesTraceabilityReportModel));
@ -192,12 +204,23 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
MesException.throwMesBusiException("删除文件生成PDF文件失败");
}
mesTraceabilityReportModelList.add(mesTraceabilityReportModel);
}
return mesTraceabilityReportModelList;
}
private Map<String, MesProcess> getMesProcessMap(MesProduceSn mesProduceSn, List<String> processCodeList) {
Map<String, MesProcess> processMap = null;
if(!CollectionUtils.isEmpty(processCodeList)){
try {
processMap = BeanMapUtilsExt.getBeanMap(mesProcessRepository, "processCode", mesProduceSn.getOrganizeCode(), processCodeList, "工序");
} catch (Exception e) {
log.info(e.getMessage());
}
}
return processMap;
}
private DdlPackBean getDdlPackBean(MesProduceSn mesProduceSn) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProduceSn.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesProduceSn.getProductSn(), "productSn", packBean);

Loading…
Cancel
Save