问题清单bug修复

tags/yfai-mes-ext-v1.0
jun 12 months ago
parent 9bcc7452f8
commit 6fb3bebb71

@ -14,7 +14,6 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.Objects;
@Service @Service
@Slf4j @Slf4j
@ -22,11 +21,7 @@ public class MesPartSapService extends BaseMesService<MesPartSap> implements IMe
@Override @Override
protected void setPackQueryBean(MesPartSap bean, DdlPackBean packBean) { protected void setPackQueryBean(MesPartSap bean, DdlPackBean packBean) {
if (Objects.isNull(bean.getIsTestPiece())) { DdlPreparedPack.getNumEqualPack(bean.getIsTestPiece(), "isTestPiece", packBean);
DdlPreparedPack.getNumEqualPack(CommonEnumUtil.FALSE, "isTestPiece", packBean);
} else {
DdlPreparedPack.getNumEqualPack(bean.getIsTestPiece(), "isTestPiece", packBean);
}
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean); DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringLikeEqualPack(bean.getPartName(), "partName", packBean); DdlPreparedPack.getStringLikeEqualPack(bean.getPartName(), "partName", packBean);
} }

@ -1,8 +1,9 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartService; import cn.estsh.i3plus.ext.mes.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.api.base.IMesProdCraftRouteService; import cn.estsh.i3plus.ext.mes.api.base.IMesProdCraftRouteService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
import cn.estsh.i3plus.platform.common.util.MesConstWords; import cn.estsh.i3plus.platform.common.util.MesConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
@ -12,9 +13,9 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCraftRoute;
import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesProdCraftRoute; import cn.estsh.i3plus.pojo.mes.bean.MesProdCraftRoute;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import cn.estsh.i3plus.pojo.mes.repository.MesCraftRouteRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProdRouteCfgRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository; import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.util.ValidatorBean; import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -37,11 +38,13 @@ import java.util.Objects;
public class MesProdCraftRouteServiceImpl extends BaseMesService<MesProdCraftRoute> implements IMesProdCraftRouteService { public class MesProdCraftRouteServiceImpl extends BaseMesService<MesProdCraftRoute> implements IMesProdCraftRouteService {
@Autowired @Autowired
private MesCraftRouteRepository mesCraftRouteRDao; private IMesCraftRouteService mesCraftRouteService;
@Autowired @Autowired
private MesWorkCenterRepository mesWorkCenterRDao; private MesWorkCenterRepository mesWorkCenterRDao;
@Autowired @Autowired
private IMesPartService mesPartService; private IMesPartService mesPartService;
@Autowired
private MesProdRouteCfgRepository mesProdRouteCfgRepository;
@Override @Override
protected void setPackQueryBean(MesProdCraftRoute bean, DdlPackBean packBean) { protected void setPackQueryBean(MesProdCraftRoute bean, DdlPackBean packBean) {
@ -56,111 +59,19 @@ public class MesProdCraftRouteServiceImpl extends BaseMesService<MesProdCraftRou
@Override @Override
protected void onInsertBean(MesProdCraftRoute item) { protected void onInsertBean(MesProdCraftRoute item) {
// 数据校验 // 数据校验
ValidatorBean.checkNotNull(item.getOrganizeCode(), "工厂号不能为空"); checkData(item);
ValidatorBean.checkNotNull(item.getCraftRouteCode(), "工艺路线代码不能为空");
ValidatorBean.checkNotNull(item.getCraftRouteName(), "工艺路线名称不能为空");
ValidatorBean.checkNotNull(item.getCraftRouteType(), "工艺路线类型不能为空");
String partNo = item.getPartNo();
String pptCode = item.getPptCode();
String workCenterCode = item.getWorkCenterCode();
//校验产线
MesCraftRoute mesCraftRoute = mesCraftRouteRDao.getByProperty(
new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "craftRouteCode"},
new Object[]{item.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue(), item.getCraftRouteCode()});
if (null == mesCraftRoute) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】无效", item.getWorkCenterCode())
.build();
}
if (!StringUtil.isEmpty(workCenterCode)) {//生产线维度配置 工艺路线类型必须与产线类型保持一致
//校验产线
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(
new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "workCenterCode"},
new Object[]{item.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue(), item.getWorkCenterCode()});
if (null == mesWorkCenter) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("产线代码【%s】无效", item.getWorkCenterCode())
.build();
}
if (!Objects.equals(mesCraftRoute.getCraftRouteType(), mesWorkCenter.getCenterType())) {//todo 工作版本",notes = "使用: 生产线类型: 排序/非排序
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】工艺路线类型必须与产线类型保持一致请检查数据", item.getCraftRouteCode())
.build();
}
item.setAreaCode(mesWorkCenter.getAreaCode());
}
//20 非排序类型
if (item.getCraftRouteType().equals("20")) {
if (!StringUtil.isEmpty(partNo)) {//零件维度配置 ①非排序类型的工艺路线直接跟物料关联,生产线与零件产品类型均不填
if (!StringUtil.isEmpty(workCenterCode) || !StringUtil.isEmpty(pptCode)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】【非排序类型】【零件维度配置】生产线与零件产品类型均不填请检查数据", item.getCraftRouteCode())
.build();
}
} else if (!StringUtil.isEmpty(pptCode)) {//零件产品类型维度配置 ①非排序类型的工艺路线直接跟零件产品类型关联,生产线与零件均不填
if (!StringUtil.isEmpty(workCenterCode) || !StringUtil.isEmpty(partNo)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】【非排序类型】【零件产品类型维度配置】生产线与零件均不填请检查数据", item.getCraftRouteCode())
.build();
}
}
} else {//10 排序类型
if (StringUtil.isEmpty(workCenterCode)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】产线代码【%s】不能为空", item.getCraftRouteCode(), item.getWorkCenterCode())
.build();
}
if (!StringUtil.isEmpty(partNo)) {//零件维度配置 -排序类型的工艺路线与生产线+零件关联,零件产品类型不填;
if (!StringUtil.isEmpty(pptCode)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】【排序类型】的工艺路线与生产线+零件关联,零件产品类型不填,请检查数据", item.getCraftRouteCode())
.build();
}
} else if (!StringUtil.isEmpty(pptCode)) {//零件产品类型维度配置 -排序类型的工艺路线与生产线+零件产品类型关联,零件不填
if (!StringUtil.isEmpty(partNo)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】【非排序类型】的工艺路线与生产线+零件产品类型关联,零件不填,请检查数据", item.getCraftRouteCode())
.build();
}
}
}
DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getCraftRouteCode(), "craftRouteCode", roadPackBean);
DdlPreparedPack.getStringEqualPack(item.getCraftRouteName(), "craftRouteName", roadPackBean);
DdlPreparedPack.getNumEqualPack(item.getCraftRouteType(), "craftRouteType", roadPackBean);
boolean flg = baseRDao.isExitByHql(roadPackBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】已经存在请检查数据", item.getCraftRouteCode())
.build();
}
} }
@Override @Override
protected void onUpdateBean(MesProdCraftRoute item) { protected void onUpdateBean(MesProdCraftRoute item) {
// 数据校验 // 数据校验
checkData(item);
}
private void checkData(MesProdCraftRoute item) {
// 数据校验
ValidatorBean.checkNotNull(item.getOrganizeCode(), "工厂号不能为空");
ValidatorBean.checkNotNull(item.getCraftRouteCode(), "工艺路线代码不能为空"); ValidatorBean.checkNotNull(item.getCraftRouteCode(), "工艺路线代码不能为空");
ValidatorBean.checkNotNull(item.getCraftRouteName(), "工艺路线名称不能为空"); ValidatorBean.checkNotNull(item.getCraftRouteName(), "工艺路线名称不能为空");
ValidatorBean.checkNotNull(item.getCraftRouteType(), "工艺路线类型不能为空"); ValidatorBean.checkNotNull(item.getCraftRouteType(), "工艺路线类型不能为空");
@ -169,17 +80,7 @@ public class MesProdCraftRouteServiceImpl extends BaseMesService<MesProdCraftRou
String pptCode = item.getPptCode(); String pptCode = item.getPptCode();
String workCenterCode = item.getWorkCenterCode(); String workCenterCode = item.getWorkCenterCode();
//校验产线 //校验产线
MesCraftRoute mesCraftRoute = mesCraftRouteRDao.getByProperty( MesCraftRoute mesCraftRoute = mesCraftRouteService.getMesCraftRouteByCode(item.getCraftRouteCode(), item.getOrganizeCode());
new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "craftRouteCode"},
new Object[]{item.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue(), item.getCraftRouteCode()});
if (null == mesCraftRoute) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】无效", item.getWorkCenterCode())
.build();
}
if (!StringUtil.isEmpty(workCenterCode)) {//生产线维度配置 工艺路线类型必须与产线类型保持一致 if (!StringUtil.isEmpty(workCenterCode)) {//生产线维度配置 工艺路线类型必须与产线类型保持一致
//校验产线 //校验产线
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty( MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(
@ -187,79 +88,59 @@ public class MesProdCraftRouteServiceImpl extends BaseMesService<MesProdCraftRou
new Object[]{item.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), new Object[]{item.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue(), item.getWorkCenterCode()}); CommonEnumUtil.IS_VAILD.VAILD.getValue(), item.getWorkCenterCode()});
if (null == mesWorkCenter) { if (null == mesWorkCenter) {
throw ImppExceptionBuilder.newInstance() MesException.throwMesBusiException("产线代码【%s】无效", item.getWorkCenterCode());
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("产线代码【%s】无效", item.getWorkCenterCode())
.build();
} }
if (!Objects.equals(mesCraftRoute.getCraftRouteType(), mesWorkCenter.getCenterType())) {//todo 工作版本",notes = "使用: 生产线类型: 排序/非排序 if (!Objects.equals(mesCraftRoute.getCraftRouteType(), mesWorkCenter.getCenterType())) {
throw ImppExceptionBuilder.newInstance() MesException.throwMesBusiException("工艺路线代码【%s】工艺路线类型必须与产线类型保持一致请检查数据", item.getCraftRouteCode());
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】工艺路线类型必须与产线类型保持一致请检查数据", item.getCraftRouteCode())
.build();
} }
item.setAreaCode(mesWorkCenter.getAreaCode()); item.setAreaCode(mesWorkCenter.getAreaCode());
} }
//零件号&产型只能维护一个
if (!StringUtil.isEmpty(partNo) && !StringUtil.isEmpty(pptCode)) {
MesException.throwMesBusiException("工艺路线代码【%s】【%s】零件与零件产品类型二选一维护请检查数据", item.getCraftRouteCode(),MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(item.getCraftRouteType()));
}
//20 非排序类型 //20 非排序类型
if (item.getCraftRouteType().equals("20")) { if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == item.getCraftRouteType()) {
if (!StringUtil.isEmpty(partNo)) {//零件维度配置 ①非排序类型的工艺路线直接跟物料关联,生产线与零件产品类型均不填 if(StringUtil.isEmpty(workCenterCode) && StringUtil.isEmpty(partNo) && StringUtil.isEmpty(pptCode)){
if (!StringUtil.isEmpty(workCenterCode) || !StringUtil.isEmpty(pptCode)) { MesException.throwMesBusiException("工艺路线代码【%s】【%s】请选择产线、零件、零件产品类请检查数据", item.getCraftRouteCode(),MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(item.getCraftRouteType()));
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】【非排序类型】【零件维度配置】生产线与零件产品类型均不填请检查数据", item.getCraftRouteCode())
.build();
}
} else if (!StringUtil.isEmpty(pptCode)) {//零件产品类型维度配置 ①非排序类型的工艺路线直接跟零件产品类型关联,生产线与零件均不填
if (!StringUtil.isEmpty(workCenterCode) || !StringUtil.isEmpty(partNo)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】【非排序类型】【零件产品类型维度配置】生产线与零件均不填请检查数据", item.getCraftRouteCode())
.build();
}
} }
} else {//10 排序类型 } else {//10 排序类型
if (StringUtil.isEmpty(workCenterCode)) { if (StringUtil.isEmpty(workCenterCode)) {
throw ImppExceptionBuilder.newInstance() MesException.throwMesBusiException("工艺路线代码【%s】【%s】产线代码不能为空请检查数据", item.getCraftRouteCode(), MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(item.getCraftRouteType()));
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】产线代码【%s】不能为空", item.getCraftRouteCode(), item.getWorkCenterCode())
.build();
} }
if (!StringUtil.isEmpty(partNo)) {//零件维度配置 -排序类型的工艺路线与生产线+零件关联,零件产品类型不填; //校验产线是否绑定有流程
if (!StringUtil.isEmpty(pptCode)) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
throw ImppExceptionBuilder.newInstance() DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",packBean);
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) if(!mesProdRouteCfgRepository.isExitByHql(packBean)){
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) MesException.throwMesBusiException("【%s】【%s】未绑定流程信息请检查数据", MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(item.getCraftRouteType()),workCenterCode);
.setErrorDetail("工艺路线代码【%s】【排序类型】的工艺路线与生产线+零件关联,零件产品类型不填,请检查数据", item.getCraftRouteCode())
.build();
}
} else if (!StringUtil.isEmpty(pptCode)) {//零件产品类型维度配置 -排序类型的工艺路线与生产线+零件产品类型关联,零件不填
if (!StringUtil.isEmpty(partNo)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】【非排序类型】的工艺路线与生产线+零件产品类型关联,零件不填,请检查数据", item.getCraftRouteCode())
.build();
}
} }
} }
//唯一性校验
checkExist(item);
}
private void checkExist(MesProdCraftRoute item) {
DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getCraftRouteCode(), "craftRouteCode", roadPackBean);
DdlPreparedPack.getStringEqualPack(item.getCraftRouteName(), "craftRouteName", roadPackBean);
DdlPreparedPack.getNumEqualPack(item.getCraftRouteType(), "craftRouteType", roadPackBean); DdlPreparedPack.getNumEqualPack(item.getCraftRouteType(), "craftRouteType", roadPackBean);
if(StringUtil.isEmpty(item.getWorkCenterCode())){
DdlPreparedPack.getIsNull("workCenterCode", roadPackBean);
}else{
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", roadPackBean);
}
if(StringUtils.isEmpty(item.getPartNo())){
DdlPreparedPack.getIsNull("partNo", roadPackBean);
}else{
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", roadPackBean);
}
if(StringUtils.isEmpty(item.getPptCode())){
DdlPreparedPack.getIsNull("pptCode", roadPackBean);
}else{
DdlPreparedPack.getStringEqualPack(item.getPptCode(), "pptCode", roadPackBean);
}
DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", roadPackBean); DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", roadPackBean);
boolean flg = baseRDao.isExitByHql(roadPackBean); if (baseRDao.isExitByHql(roadPackBean)) {
if (flg) { MesException.throwMesBusiException("工艺路线类型【%s】生产线代码【%s】物料编码【%s】物料产品类型【%s】数据已经存在请检查数据",
throw ImppExceptionBuilder.newInstance() MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(item.getCraftRouteType()), item.getWorkCenterCode(), item.getPartNo(), item.getPptCode());
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】已经存在请检查数据", item.getCraftRouteCode())
.build();
} }
} }

@ -360,10 +360,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(item.getPartNo(), item.getOrganizeCode()); MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(item.getPartNo(), item.getOrganizeCode());
item.setPartName(mesPart.getPartName()); item.setPartName(mesPart.getPartName());
item.setUnit(mesPart.getUnit()); item.setUnit(mesPart.getUnit());
//试制单,只能选择试制零件
if(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() != mesPart.getIsTestPiece()){
MesException.throwMesBusiException("物料【%s】不为试制件",item.getPartNo());
}
//生产时间新增取当天 //生产时间新增取当天
if (StringUtil.isEmpty(item.getProduceTime())) { if (StringUtil.isEmpty(item.getProduceTime())) {
item.setProduceTime(TimeTool.getToday()); item.setProduceTime(TimeTool.getToday());
@ -695,24 +691,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
//计划开始时间,计划结束时间拼接 //计划开始时间,计划结束时间拼接
packPlanTime(item, mesShiftMap); packPlanTime(item, mesShiftMap);
//获取生产版本 //校验vin号
List<MesProductVersion> mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo());
if (CollectionUtils.isEmpty(mesProductVersions)) {
MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(),
mesWorkCenter.getErpWorkCenter());
}
MesProductVersion mesProductVersion = mesProductVersions.iterator().next();
item.setProductVersion(mesProductVersion.getProductVersion());
//发送工单信息给WMS
List<MesBom> mesBomList = null;
if (mesBomMap.containsKey(item.getPartNo() + mesProductVersion.getAlternativePartList())) {
mesBomList = mesBomMap.get(item.getPartNo() + mesProductVersion.getAlternativePartList());
} else {
//获取bom信息
mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList);
}
if (!StringUtil.isEmpty(item.getVinCode())) { if (!StringUtil.isEmpty(item.getVinCode())) {
if (vinCodeMap.containsKey(item.getVinCode())) { if (vinCodeMap.containsKey(item.getVinCode())) {
MesException.throwMesBusiException("vin号【%s】重复", item.getVinCode()); MesException.throwMesBusiException("vin号【%s】重复", item.getVinCode());
@ -722,15 +701,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
//排序工单数量为1 //排序工单数量为1
item.setQty(1d); item.setQty(1d);
//是否自动发布 //发送wms数据
isAuto(mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesBomList); sendToWms(mesProductVersionMap, mesBomMap, mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesWorkCenter);
//试制单,只能选择试制零件
if(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() != mesPart.getIsTestPiece()){
MesException.throwMesBusiException("物料【%s】不为试制件",item.getPartNo());
}
} else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) { } else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空"); ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空");
if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) { if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) {
MesException.throwMesBusiException("生产数量不能小于等于0"); MesException.throwMesBusiException("生产数量不能小于等于0");
} }
@ -749,32 +723,32 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
//拼接时间 //拼接时间
packPlanTime(item, mesShiftMap); packPlanTime(item, mesShiftMap);
//校验物料生产版本是否存在 //状态已发布
List<MesProductVersion> mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo()); item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
if (CollectionUtils.isEmpty(mesProductVersions)) {
MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(),
mesWorkCenter.getErpWorkCenter());
}
List<MesProductVersion> versionList = mesProductVersions.stream().filter(t -> Objects.equals(item.getProductVersion(), t.getProductVersion())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(versionList)) {
MesException.throwMesBusiException("物料【%s】产线【%s】生产版本【%s】信息不存在", item.getPartNo(), mesWorkCenter.getWorkCenterCode(), item.getProductVersion());
}
MesProductVersion mesProductVersion = versionList.iterator().next();
//获取bom信息
List<MesBom> mesBomList = null; List<MesBom> mesBomList = null;
if (mesBomMap.containsKey(item.getPartNo() + mesProductVersion.getAlternativePartList())) { if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())){
mesBomList = mesBomMap.get(item.getPartNo() + mesProductVersion.getAlternativePartList()); ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空");
} else { //校验物料生产版本是否存在
List<MesProductVersion> mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo());
if (CollectionUtils.isEmpty(mesProductVersions)) {
MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(),
mesWorkCenter.getErpWorkCenter());
}
List<MesProductVersion> versionList = mesProductVersions.stream().filter(t -> Objects.equals(item.getProductVersion(), t.getProductVersion())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(versionList)) {
MesException.throwMesBusiException("物料【%s】产线【%s】生产版本【%s】信息不存在", item.getPartNo(), mesWorkCenter.getWorkCenterCode(), item.getProductVersion());
}
MesProductVersion mesProductVersion = versionList.iterator().next();
//获取bom信息 //获取bom信息
mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); if (mesBomMap.containsKey(item.getPartNo() + mesProductVersion.getAlternativePartList())) {
mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList); mesBomList = mesBomMap.get(item.getPartNo() + mesProductVersion.getAlternativePartList());
} } else {
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); //获取bom信息
//发送工单信息给WMS mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList)); mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList);
//试制单,只能选择试制零件 }
if(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() != mesPart.getIsTestPiece()){ //发送工单信息给WMS
MesException.throwMesBusiException("物料【%s】不为试制件",item.getPartNo()); mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList));
} }
} else { } else {
ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空"); ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空");
@ -782,25 +756,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) { if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) {
MesException.throwMesBusiException("生产数量不能小于等于0"); MesException.throwMesBusiException("生产数量不能小于等于0");
} }
//获取生产版本 //发送wms数据
List<MesProductVersion> mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo()); sendToWms(mesProductVersionMap, mesBomMap, mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesWorkCenter);
if (CollectionUtils.isEmpty(mesProductVersions)) {
MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(),
mesWorkCenter.getErpWorkCenter());
}
MesProductVersion mesProductVersion = mesProductVersions.iterator().next();
item.setProductVersion(mesProductVersion.getProductVersion());
//获取bom信息
List<MesBom> mesBomList = null;
if (mesBomMap.containsKey(item.getPartNo() + mesProductVersion.getAlternativePartList())) {
mesBomList = mesBomMap.get(item.getPartNo() + mesProductVersion.getAlternativePartList());
} else {
//获取bom信息
mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList);
}
//是否自动发布
isAuto(mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesBomList);
} }
item.setUnCompleteQty(item.getQty()); item.setUnCompleteQty(item.getQty());
index++; index++;
@ -808,6 +765,30 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return mesWorkOrderToWmsList; return mesWorkOrderToWmsList;
} }
private void sendToWms(Map<String, List<MesProductVersion>> mesProductVersionMap, Map<String, List<MesBom>> mesBomMap, Map<String, MesPartProdGroup> mesPartProdGroupMap, List<MesWorkOrderToWms> mesWorkOrderToWmsList, MesWorkOrder item, MesWorkCenter mesWorkCenter) {
//发送工单信息给WMS
List<MesBom> mesBomList = null;
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())){
//获取生产版本
List<MesProductVersion> mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo());
if (CollectionUtils.isEmpty(mesProductVersions)) {
MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(),
mesWorkCenter.getErpWorkCenter());
}
MesProductVersion mesProductVersion = mesProductVersions.iterator().next();
item.setProductVersion(mesProductVersion.getProductVersion());
if (mesBomMap.containsKey(item.getPartNo() + mesProductVersion.getAlternativePartList())) {
mesBomList = mesBomMap.get(item.getPartNo() + mesProductVersion.getAlternativePartList());
} else {
//获取bom信息
mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList);
}
}
//是否自动发布
isAuto(mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesBomList);
}
private void isAuto(Map<String, MesPartProdGroup> mesPartProdGroupMap, List<MesWorkOrderToWms> mesWorkOrderToWmsList, MesWorkOrder item, List<MesBom> mesBomList) { private void isAuto(Map<String, MesPartProdGroup> mesPartProdGroupMap, List<MesWorkOrderToWms> mesWorkOrderToWmsList, MesWorkOrder item, List<MesBom> mesBomList) {
//校验零件生产组信息 //校验零件生产组信息
MesPartProdGroup mesPartProdGroup; MesPartProdGroup mesPartProdGroup;
@ -823,7 +804,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (CommonEnumUtil.VALID == mesPartProdGroup.getIsAutoRelease()) { if (CommonEnumUtil.VALID == mesPartProdGroup.getIsAutoRelease()) {
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
//发送工单信息给WMS //发送工单信息给WMS
mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList)); if(!Objects.isNull(mesBomList)){
mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList));
}
} else { } else {
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
} }

Loading…
Cancel
Save