|
|
|
@ -78,22 +78,25 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
|
|
|
@Override
|
|
|
|
|
public void doCreateSortRuleOffline(String custPartNo, String erpPartNo, String organizeCode, MesPartProdGroup mesPartProdGroup, MesPartProdGroupDetail detail) {
|
|
|
|
|
public void doCreateSortRuleOffline(String custPartNo, String erpPartNo, String productPartNo, String organizeCode, MesPartProdGroup mesPartProdGroup, MesPartProdGroupDetail detail) {
|
|
|
|
|
|
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(erpPartNo, organizeCode);
|
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(productPartNo, organizeCode);
|
|
|
|
|
//4.总成零件号打散bom
|
|
|
|
|
String bomVersion = mesProductVersion.getAlternativePartList();
|
|
|
|
|
MesBom bom = mesBomService.findBom(organizeCode, bomVersion, erpPartNo);
|
|
|
|
|
MesBom bom = mesBomService.findBom(organizeCode, bomVersion, productPartNo);
|
|
|
|
|
if (bom == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//5.5 获取客户零件号对应的车型配置
|
|
|
|
|
/**
|
|
|
|
|
* 客户零件号 对应的 erp零件号 不带z
|
|
|
|
|
*/
|
|
|
|
|
MesCustomerPart mesCustomerPart = getMesCustomerPart(custPartNo, erpPartNo, organizeCode);
|
|
|
|
|
if (mesCustomerPart == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//5.打散的bom 获取排序加工规则
|
|
|
|
|
List<MesWorkOrderPart> workOrderPartList = dismantleBom(erpPartNo, 1, TimeTool.getNowTime(true), bom.getBomCode(), organizeCode, detail.getWorkCellCode());
|
|
|
|
|
List<MesWorkOrderPart> workOrderPartList = dismantleBom(productPartNo, 1, TimeTool.getNowTime(true), bom.getBomCode(), organizeCode, detail.getWorkCellCode());
|
|
|
|
|
//6.装配件获取的三种条件
|
|
|
|
|
String custCode = mesCustomerPart.getCustCode();
|
|
|
|
|
MesCustomerCarModel mesCustomerCarModel = getMesCustomerCarModel(custPartNo, organizeCode, custCode);
|
|
|
|
@ -102,7 +105,7 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
|
|
|
|
|
}
|
|
|
|
|
//5.6 获取零件信息
|
|
|
|
|
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(erpPartNo,"partNo", partPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(productPartNo,"partNo", partPackBean);
|
|
|
|
|
List<MesPartSap> partSapList = partSapRao.findByHqlWhere(partPackBean);
|
|
|
|
|
|
|
|
|
|
//7.获取车型
|
|
|
|
@ -146,11 +149,11 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doCreatePullOffline(String custPartNo, String erpPartNo, String organizeCode, MesPartProdGroup mesPartProdGroup, MesPartProdGroupDetail detail, MesPartPull partPull, List<MesPartPullDetail> pullDetailList) {
|
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(erpPartNo, organizeCode);
|
|
|
|
|
public void doCreatePullOffline(String custPartNo, String erpPartNo,String productPartNo, String organizeCode, MesPartProdGroup mesPartProdGroup, MesPartProdGroupDetail detail, MesPartPull partPull, List<MesPartPullDetail> pullDetailList) {
|
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(productPartNo, organizeCode);
|
|
|
|
|
//4.总成零件号打散bom
|
|
|
|
|
String bomVersion = mesProductVersion.getAlternativePartList();
|
|
|
|
|
MesBom bom = mesBomService.findBom(organizeCode, bomVersion, erpPartNo);
|
|
|
|
|
MesBom bom = mesBomService.findBom(organizeCode, bomVersion, productPartNo);
|
|
|
|
|
if (bom == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -161,11 +164,11 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
|
|
|
|
|
}
|
|
|
|
|
//5.6 获取零件信息
|
|
|
|
|
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(erpPartNo,"partNo", partPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(productPartNo,"partNo", partPackBean);
|
|
|
|
|
List<MesPartSap> partSapList = partSapRao.findByHqlWhere(partPackBean);
|
|
|
|
|
|
|
|
|
|
//5.打散的bom 获取排序加工规则
|
|
|
|
|
List<MesWorkOrderPart> workOrderPartList = dismantleBom(erpPartNo, 1, TimeTool.getNowTime(true), bom.getBomCode(), organizeCode, detail.getWorkCellCode());
|
|
|
|
|
List<MesWorkOrderPart> workOrderPartList = dismantleBom(productPartNo, 1, TimeTool.getNowTime(true), bom.getBomCode(), organizeCode, detail.getWorkCellCode());
|
|
|
|
|
|
|
|
|
|
//6.过滤出需要拉动的零件号
|
|
|
|
|
List<String> partPullDetailPartNoList = workOrderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList());
|
|
|
|
@ -178,7 +181,7 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
|
|
|
|
|
}
|
|
|
|
|
mesPartPullOffline.setPullCode(partPull.getPullCode());
|
|
|
|
|
mesPartPullOffline.setCustPartNo(custPartNo);
|
|
|
|
|
mesPartPullOffline.setPartNo(erpPartNo);
|
|
|
|
|
mesPartPullOffline.setPartNo(productPartNo);
|
|
|
|
|
mesPartPullOffline.setWorkCenterCode(partPull.getWorkCenterCode());
|
|
|
|
|
mesPartPullOffline.setOrganizeCode(organizeCode);
|
|
|
|
|
ConvertBean.saveOrUpdate(mesPartPullOffline,"SPS-OFFLINE");
|
|
|
|
@ -189,7 +192,7 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
|
|
|
|
|
detailOffline.setPid(mesPartPullOffline.getId());
|
|
|
|
|
detailOffline.setPullCode(partPull.getPullCode());
|
|
|
|
|
detailOffline.setCustPartNo(custPartNo);
|
|
|
|
|
detailOffline.setAssPartNo(erpPartNo);
|
|
|
|
|
detailOffline.setAssPartNo(productPartNo);
|
|
|
|
|
detailOffline.setOrganizeCode(organizeCode);
|
|
|
|
|
detailOffline.setPartNo(pullDetail.getPartNo());
|
|
|
|
|
detailOffline.setPartName(pullDetail.getPartName());
|
|
|
|
@ -240,11 +243,11 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean);
|
|
|
|
|
ddlPackBean.setOrderByStr(" order by createDatetime desc ");
|
|
|
|
|
MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean);
|
|
|
|
|
if (Objects.isNull(mesProductVersion)) {
|
|
|
|
|
List<MesProductVersion> mesProductVersionList = mesProductVersionRDao.findByHqlTopWhere(ddlPackBean, 1);
|
|
|
|
|
if (Objects.isNull(mesProductVersionList) || mesProductVersionList.isEmpty()) {
|
|
|
|
|
MesException.throwMesBusiException("物料【%s】对应的生产版本信息不存在", partNo);
|
|
|
|
|
}
|
|
|
|
|
return mesProductVersion;
|
|
|
|
|
return mesProductVersionList.get(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<MesWorkOrderPart> dismantleBom(String partNo, double qty, String productTime, String bomCode, String organizeCode, String workCellCode) {
|
|
|
|
|