|
|
@ -135,6 +135,9 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private IMesProdRuleSortCfgDao mesProdRuleSortCfgDao;
|
|
|
|
private IMesProdRuleSortCfgDao mesProdRuleSortCfgDao;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private MesPartProdGroupRepository mesPartProdGroupRao;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public MesWorkOrder queryMesWorkOrder(MesWorkOrder workOrder) {
|
|
|
|
public MesWorkOrder queryMesWorkOrder(MesWorkOrder workOrder) {
|
|
|
|
|
|
|
|
|
|
|
@ -220,9 +223,26 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
MesPcnException.throwMesBusiException("产线【%s】不存在", mesWorkOrderDb.getWorkCenterCode());
|
|
|
|
MesPcnException.throwMesBusiException("产线【%s】不存在", mesWorkOrderDb.getWorkCenterCode());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//获取生产版本
|
|
|
|
//获取生产版本
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrderDb);
|
|
|
|
MesProductVersion mesProductVersion = getProductVersion(mesWorkOrderDb.getOrganizeCode(), mesWorkOrderDb.getPartNo(), mesWorkOrderDb.getProductVersion());
|
|
|
|
|
|
|
|
String bomVersion = mesProductVersion.getAlternativePartList();
|
|
|
|
|
|
|
|
String partProdGroupCode = mesWorkOrderDb.getPartProdGroupCode();
|
|
|
|
|
|
|
|
// partProdGroupCode 不为空,查询的数据不为空,查询数据中的获取bom方式不为空且枚举是 基于默认BOM ,才bomversion = null 否则都是通过生产版本找bom
|
|
|
|
|
|
|
|
if (!StringUtil.isEmpty(partProdGroupCode)) {
|
|
|
|
|
|
|
|
DdlPackBean partProdBean = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(partProdGroupCode, "partProdGroupCode", partProdBean);
|
|
|
|
|
|
|
|
List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(partProdBean, 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 没有零件生产组用默认找生产版本、有的话找获取bom方式枚举,枚举是基于默认BOM 则直接找
|
|
|
|
|
|
|
|
if (!mesPartProdGroupList.isEmpty()) {
|
|
|
|
|
|
|
|
MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0);
|
|
|
|
|
|
|
|
if (mesPartProdGroup.getEnableBomVersion() != null && mesPartProdGroup.getEnableBomVersion() == MesExtEnumUtil.ENABLE_BOM_VERSION.ENABLE_BOM_VERSION_2.getValue()) {
|
|
|
|
|
|
|
|
log.info("基于默认BOM获取BOM");
|
|
|
|
|
|
|
|
bomVersion = "";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
List<MesBom> mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
|
|
|
|
List<MesBom> mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion);
|
|
|
|
|
|
|
|
|
|
|
|
LOGGER.info("产线:{} 零件:{}更新工单", mesWorkOrderDb.getWorkCenterCode(), mesWorkOrderDb.getPartNo());
|
|
|
|
LOGGER.info("产线:{} 零件:{}更新工单", mesWorkOrderDb.getWorkCenterCode(), mesWorkOrderDb.getPartNo());
|
|
|
|
//更新工单
|
|
|
|
//更新工单
|
|
|
@ -535,10 +555,27 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
//throw new ImppBusiException(String.format("未找到匹配的加工单"));
|
|
|
|
//throw new ImppBusiException(String.format("未找到匹配的加工单"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//获取生产版本
|
|
|
|
|
|
|
|
MesProductVersion mesProductVersion = getProductVersion(organizeCode, productionRecord.getPartNo(), oldMesWorkOrder.getProductVersion());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//查询物料信息
|
|
|
|
//获取生产版本
|
|
|
|
|
|
|
|
MesProductVersion mesProductVersion = getProductVersion(oldMesWorkOrder.getOrganizeCode(), oldMesWorkOrder.getPartNo(), oldMesWorkOrder.getProductVersion());
|
|
|
|
|
|
|
|
String bomVersion = mesProductVersion.getAlternativePartList();
|
|
|
|
|
|
|
|
String partProdGroupCode = oldMesWorkOrder.getPartProdGroupCode();
|
|
|
|
|
|
|
|
// partProdGroupCode 不为空,查询的数据不为空,查询数据中的获取bom方式不为空且枚举是 基于默认BOM ,才bomversion = null 否则都是通过生产版本找bom
|
|
|
|
|
|
|
|
if (!StringUtil.isEmpty(partProdGroupCode)) {
|
|
|
|
|
|
|
|
DdlPackBean partProdBean = DdlPackBean.getDdlPackBean(oldMesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(partProdGroupCode, "partProdGroupCode", partProdBean);
|
|
|
|
|
|
|
|
List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(partProdBean, 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 没有零件生产组用默认找生产版本、有的话找获取bom方式枚举,枚举是基于默认BOM 则直接找
|
|
|
|
|
|
|
|
if (!mesPartProdGroupList.isEmpty()) {
|
|
|
|
|
|
|
|
MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0);
|
|
|
|
|
|
|
|
if (mesPartProdGroup.getEnableBomVersion() != null && mesPartProdGroup.getEnableBomVersion() == MesExtEnumUtil.ENABLE_BOM_VERSION.ENABLE_BOM_VERSION_2.getValue()) {
|
|
|
|
|
|
|
|
log.info("基于默认BOM获取BOM");
|
|
|
|
|
|
|
|
bomVersion = "";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//查询物料信息
|
|
|
|
DdlPackBean ddlPackBeanPart = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
DdlPackBean ddlPackBeanPart = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
DdlPreparedPack.getStringEqualPack(productionRecord.getPartNo(), "partNo", ddlPackBeanPart);
|
|
|
|
DdlPreparedPack.getStringEqualPack(productionRecord.getPartNo(), "partNo", ddlPackBeanPart);
|
|
|
|
MesPart mesPart = mesPartRDao.getByProperty(ddlPackBeanPart);
|
|
|
|
MesPart mesPart = mesPartRDao.getByProperty(ddlPackBeanPart);
|
|
|
@ -546,7 +583,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
throw new ImppBusiException(String.format("物料【%s】信息不存在", productionRecord.getPartNo()));
|
|
|
|
throw new ImppBusiException(String.format("物料【%s】信息不存在", productionRecord.getPartNo()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<MesBom> mesBoms = findBomList(organizeCode, mesPart, mesProductVersion.getAlternativePartList());
|
|
|
|
List<MesBom> mesBoms = findBomList(organizeCode, mesPart, bomVersion);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(mesBoms)) {
|
|
|
|
if (CollectionUtils.isEmpty(mesBoms)) {
|
|
|
@ -1020,8 +1057,25 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
MesWorkCenter mesWorkCenter = getMesWorkCenter(mesWorkOrderDb);
|
|
|
|
MesWorkCenter mesWorkCenter = getMesWorkCenter(mesWorkOrderDb);
|
|
|
|
//获取生产版本
|
|
|
|
//获取生产版本
|
|
|
|
MesProductVersion mesProductVersion = getProductVersion(mesWorkOrderDb.getOrganizeCode(),mesWorkOrderDb.getPartNo(),mesWorkOrderDb.getProductVersion());
|
|
|
|
MesProductVersion mesProductVersion = getProductVersion(mesWorkOrderDb.getOrganizeCode(),mesWorkOrderDb.getPartNo(),mesWorkOrderDb.getProductVersion());
|
|
|
|
|
|
|
|
String bomVersion = mesProductVersion.getAlternativePartList();
|
|
|
|
|
|
|
|
String partProdGroupCode = mesWorkOrderDb.getPartProdGroupCode();
|
|
|
|
|
|
|
|
// partProdGroupCode 不为空,查询的数据不为空,查询数据中的获取bom方式不为空且枚举是 基于默认BOM ,才bomversion = null 否则都是通过生产版本找bom
|
|
|
|
|
|
|
|
if (!StringUtil.isEmpty(partProdGroupCode)) {
|
|
|
|
|
|
|
|
DdlPackBean partProdBean = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(partProdGroupCode, "partProdGroupCode", partProdBean);
|
|
|
|
|
|
|
|
List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(partProdBean, 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 没有零件生产组用默认找生产版本、有的话找获取bom方式枚举,枚举是基于默认BOM 则直接找
|
|
|
|
|
|
|
|
if (!mesPartProdGroupList.isEmpty()) {
|
|
|
|
|
|
|
|
MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0);
|
|
|
|
|
|
|
|
if (mesPartProdGroup.getEnableBomVersion() != null && mesPartProdGroup.getEnableBomVersion() == MesExtEnumUtil.ENABLE_BOM_VERSION.ENABLE_BOM_VERSION_2.getValue()) {
|
|
|
|
|
|
|
|
log.info("基于默认BOM获取BOM");
|
|
|
|
|
|
|
|
bomVersion = "";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
List<MesBom> mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
|
|
|
|
List<MesBom> mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion);
|
|
|
|
mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty()));
|
|
|
|
mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty()));
|
|
|
|
//更新工单状态
|
|
|
|
//更新工单状态
|
|
|
|
double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty());
|
|
|
|
double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty());
|
|
|
|