BTO单零件生产组明细重复问题

tags/yfai-mes-ext-v2.4 yfai-mes-ext-v2.4
xiangwei.zhang 5 months ago
parent ca3b8decb0
commit 010ea9ce0c

@ -1,12 +1,14 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartProdGroupDetailService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
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.mes.bean.MesPartProdGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProduceType;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
@ -29,6 +31,28 @@ public class MesPartProdGroupDetailService extends BaseMesService<MesPartProdGro
}
@Override
public void onInsertBean(MesPartProdGroupDetail item) {
// 数据校验
// 数据校验
ValidatorBean.checkNotNull(item.getPartProdGroupCode(), "零件生产组代码不能为空");
ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
ValidatorBean.checkNotNull(item.getCustPartNo(), "客户零件号不能为空");
DdlPackBean custBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", custBean);
DdlPreparedPack.getStringEqualPack(item.getCustPartNo(), "custPartNo", custBean);
boolean flg = baseRDao.isExitByHql(custBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件生产组代码下客户零件号【%s】已存在请检查数据", item.getPartProdGroupCode(), item.getCustPartNo())
.build();
}
}
@Override
public void validateImport(List<MesPartProdGroupDetail> beanList) {
@ -36,17 +60,28 @@ public class MesPartProdGroupDetailService extends BaseMesService<MesPartProdGro
// 数据校验
ValidatorBean.checkNotNull(item.getPartProdGroupCode(), "零件生产组代码不能为空");
ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
ValidatorBean.checkNotNull(item.getWorkCellCode(), "工位代码不能为空");
ValidatorBean.checkNotNull(item.getCustPartNo(), "客户零件号不能为空");
DdlPackBean custBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", custBean);
DdlPreparedPack.getStringEqualPack(item.getCustPartNo(), "custPartNo", custBean);
boolean flg = baseRDao.isExitByHql(custBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件生产组代码下客户零件号【%s】已存在请检查数据", item.getPartProdGroupCode(),item.getCustPartNo())
.build();
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", packBean);
DdlPreparedPack.getStringLikerPack(item.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCellCode(), "workCellCode", packBean);
DdlPreparedPack.getStringEqualPack(item.getCustPartNo(), "custPartNo", packBean);
boolean flg = baseRDao.isExitByHql(packBean);
if (flg) {
boolean flg2 = baseRDao.isExitByHql(packBean);
if (flg2) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())

@ -20,6 +20,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.text.DateFormat;
import java.text.ParseException;
@ -83,14 +84,16 @@ public class MesTimeRoundnessService implements IRoundnessStrategy {
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
long createSeq = Long.parseLong(dateFormat.format(new Date()));
Map<String, List<MesCustSortInfo>> sortInfoMap = sortInfoList.stream().collect(Collectors.groupingBy(MesCustSortInfo::getCustPartNo));
Map<String, MesPartProdGroupDetail> prodGroupDetailMap = details.stream().collect(Collectors.toMap(MesPartProdGroupDetail::getCustPartNo, Function.identity()));
Map<String, List<MesPartProdGroupDetail>> prodGroupDetailMap = details.stream().collect(Collectors.groupingBy(MesPartProdGroupDetail::getCustPartNo));
Set<String> softInfoKeySet = sortInfoMap.keySet();
//遍历零件生产组零件,过滤出
for (String softInfoKey : softInfoKeySet) {
MesPartProdGroupDetail detail = prodGroupDetailMap.get(softInfoKey);
if (detail == null){
List<MesPartProdGroupDetail> detailList = prodGroupDetailMap.get(softInfoKey);
if (CollectionUtils.isEmpty(detailList)){
continue;
}
MesPartProdGroupDetail detail = detailList.get(0);
//根据detail.id 获取
MesProdGroupPartBtoCount btoCountInfo = getByGroupPartId(detail.getId(), detail.getOrganizeCode());
//历史累计差异

Loading…
Cancel
Save