Merge branch 'dev' into dev-wuhan

# Conflicts:
#	modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java
tags/yfai-mes-ext-v2.3
jun 6 months ago
commit f41431734b

@ -5,15 +5,28 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheck;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheckPart;
import cn.estsh.i3plus.pojo.mes.bean.MesPartTransfer;
import cn.estsh.i3plus.pojo.mes.bean.MesPartTransferDetail;
import cn.estsh.i3plus.pojo.mes.repository.MesPartTransferDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartTransferRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@Slf4j
public class MesPartTransferDetailService extends BaseMesService<MesPartTransferDetail> implements IMesPartTransferDetailService {
@Autowired
private MesPartTransferRepository partTransferRepository;
protected void setPackQueryBean(MesPartTransferDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getNumEqualPack(bean.getPid(),"pid",packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustCode(),"custCode",packBean);
@ -79,4 +92,36 @@ public class MesPartTransferDetailService extends BaseMesService<MesPartTransfer
.build();
}
}
@Override
public List<MesPartTransferDetail> validateReturnImport(List<MesPartTransferDetail> beanList) {
for (MesPartTransferDetail item : beanList) {
// 数据校验
if(StringUtil.isEmpty(item.getPid())){
ValidatorBean.checkNotNull(item.getCustCode(), "客户代码不能为空");
ValidatorBean.checkNotNull(item.getCustOrganizeCode(), "客户工厂代码不能为空");
ValidatorBean.checkNotNull(item.getMessageNo(), "信息点代码不能为空");
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getCustCode(), "custCode", seriesPackBean);
DdlPreparedPack.getStringEqualPack(item.getCustOrganizeCode(), "custOrganizeCode", seriesPackBean);
DdlPreparedPack.getStringEqualPack(item.getMessageNo(), "messageNo", seriesPackBean);
MesPartTransfer itemFlg = partTransferRepository.getByProperty(seriesPackBean);
if (StringUtil.isEmpty(itemFlg)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】客户代码【%s】客户工厂代码,【%s】信息点代码请检查数据", item.getCustCode(),item.getCustOrganizeCode(), item.getMessageNo())
.build();
}
item.setPid(itemFlg.getId());
}
}
return beanList;
}
}

@ -736,10 +736,10 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
//List<String> finishList = Stream.of("Product_finish","PART_OK","Part_Finish","Product_OK").collect(Collectors.toList());
List<String> finishList = Stream.of("Product_finish","Part_Finish").collect(Collectors.toList());
String preReason = "";
int errorCount = 0;
for (MesProductRecordLog recordLog : recordLogs) {
int errorCount = 0;
if (recordLog.getId() ==1838536264741601280l) {
if (recordLog.getId() ==1846373460483817472l) {
int a = 1;
}
if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端下线")) {
@ -748,14 +748,25 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
continue;
}
if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端上线") ) {
if (!offlineFlag) {
continue;
}
endTime = recordLog.getCreateDatetime();
offlineFlag = false;
if (errorCount > 0) {
reason += String.format(offlineReason, startTime, endTime, errorCount + "");
preReason = "";
result = 0;
errorCount = 0;
} else {
if (result > 0) {
reason += String.format(offlineReason, startTime, endTime, 1 + "");
preReason = "";
result = 0;
errorCount = 0;
}
}
//result = 0;
continue;
}
@ -772,14 +783,15 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
// 如果经过了1个finish然后再经过客户端下线再遇到finish则认为是客户端下线引起,如果没有需要预处理一个下线的原因
errorCount ++;
if (result > 0) {
reason += preReason;
//reason += preReason;
preReason = String.format(offlineReason, endTime, recordLog.getCreateDatetime(), errorCount + "");
endTime = recordLog.getCreateDatetime();
continue;
} else {
}
/*else {
endTime = recordLog.getCreateDatetime();
preReason = String.format(offlineReason, startTime,endTime, errorCount + "");
}
}*/
result++;
continue ;
}
@ -887,10 +899,10 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
//List<String> finishList = Stream.of("Product_finish","PART_OK","Part_Finish","Product_OK").collect(Collectors.toList());
List<String> finishList = Stream.of("Product_finish","Part_Finish").collect(Collectors.toList());
String preReason = "";
int errorCount = 0;
for (MesProductRecordLog recordLog : recordLogs) {
int errorCount = 0;
if (recordLog.getId() ==1838551951325315072l) {
if (recordLog.getId() ==1296257140498948096l) {
int a = 1;
}
if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端下线")) {
@ -928,18 +940,28 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
if (offlineFlag && finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
// 如果经过了1个finish然后再经过客户端下线再遇到finish则认为是客户端下线引起,如果没有需要预处理一个下线的原因
errorCount ++;
if (result > 0) {
//reason += preReason;
preReason = String.format(offlineReason, endTime, recordLog.getCreateDatetime(), errorCount + "");
endTime = recordLog.getCreateDatetime();
continue;
}
/*if (result > 0) {
reason += String.format(offlineReason, startTime, startTime, errorCount + "");
continue;
} else {
endTime = recordLog.getCreateDatetime();
preReason = String.format(offlineReason, startTime,endTime, errorCount + "");
}
}*/
result++;
continue ;
}
if (Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS") && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
if (offlineFlag) {
continue;
}
// 如果有finish然后遇到bypass 需要预处理
if (result > 0) {
reason += String.format(reasonBypass,startTime, 1 +"");
@ -953,6 +975,9 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
// 遇到bypass = false 则重置错误次数
if (bypassFlag && Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS") && Objects.equal(recordLog.getEquipVariableValue(), "False")) {
if (offlineFlag) {
continue;
}
endTime = recordLog.getCreateDatetime();
errorCount = 0;
bypassFlag = false;

@ -520,7 +520,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
DdlPackBean ddlPackBean;
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(mesWorkCenter.getErpWorkCenter(), "workCenterCode", ddlPackBean);
//DdlPreparedPack.getStringEqualPack(mesWorkCenter.getErpWorkCenter(), "workCenterCode", ddlPackBean);
ddlPackBean.setOrderByStr(" order by createDatetime desc ");
MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean);
if (Objects.isNull(mesProductVersion)) {
@ -621,7 +621,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.BTO.getValue()) {
Long productSeq = 0L;
if (null != result && result.getProductSeq() != null) {
productSeq = (long) Math.toIntExact(result.getProductSeq());
//productSeq = (long) Math.toIntExact(result.getProductSeq());
productSeq = result.getProductSeq();
}
item.setProductSeq(productSeq + 1);
item.setWorkOrderSeq(seqList.get(index));
@ -688,7 +689,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
List<String> orderList=new ArrayList<>();
Map<String, List<MesProductVersion>> mesProductVersionMap =null;
if(next.getWorkOrderType() != MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()){
mesProductVersionMap = mesProductVersionList.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getPartNo()));
mesProductVersionMap = mesProductVersionList.stream().collect(Collectors.groupingBy(t -> t.getPartNo()));
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_CENTER_ORDER_NO);
genSerialNoModel.setPartNo(next.getWorkCenterCode());
orderList = syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(next.getOrganizeCode()), next.getCreateUser(), next.getOrganizeCode(), mesWorkOrderList.size()).getResultList();
@ -852,7 +853,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
List<MesBom> mesBomList = null;
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())){
//获取生产版本
List<MesProductVersion> mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo());
List<MesProductVersion> mesProductVersions = mesProductVersionMap.get(item.getPartNo());
if (CollectionUtils.isEmpty(mesProductVersions)) {
MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(),
mesWorkCenter.getErpWorkCenter());

Loading…
Cancel
Save