|
|
@ -295,10 +295,19 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 总成拆bom,变成子零件
|
|
|
|
* 总成拆bom,变成子零件
|
|
|
|
* 替换子零件,通过替换后的零件,去找排序工艺
|
|
|
|
* 替换子零件,通过替换后的零件,去找排序工艺
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* PTR逻辑 3种场景互斥
|
|
|
|
|
|
|
|
* 1.如果选择了客户发送PTR信息,遇到PTR info直接转换单
|
|
|
|
|
|
|
|
* 2.如果选择了内部PTR,需要看总成是否需要替换,生成F单
|
|
|
|
|
|
|
|
* 3.如果两个都没有选择PTR,需要看总成是否需要替换 生成P单
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* isCustomerSendPrtInfo 1是客户发送ptr
|
|
|
|
|
|
|
|
* isInterPrt 1是内部ptr
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
Map<String,String> ptrRuleListMap = new HashMap<>();
|
|
|
|
Map<String,String> ptrRuleListMap = new HashMap<>();
|
|
|
|
//是否修改为P单
|
|
|
|
//是否修改为P单
|
|
|
|
boolean isModifyPOrder = false;
|
|
|
|
boolean isModifyPOrder = false;
|
|
|
|
|
|
|
|
boolean isFOrder = false;
|
|
|
|
//查询mes_part_ptr表,根据物料清单查找ptr替换信息
|
|
|
|
//查询mes_part_ptr表,根据物料清单查找ptr替换信息
|
|
|
|
if (!workOrderPartList.isEmpty()){
|
|
|
|
if (!workOrderPartList.isEmpty()){
|
|
|
|
Map<String, MesWorkOrderPart> orderPartMap = workOrderPartList.stream().collect(Collectors.toMap(MesWorkOrderPart::getPartNo, Function.identity()));
|
|
|
|
Map<String, MesWorkOrderPart> orderPartMap = workOrderPartList.stream().collect(Collectors.toMap(MesWorkOrderPart::getPartNo, Function.identity()));
|
|
|
@ -308,18 +317,21 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
|
|
|
|
List<String> ptrInfoList = Arrays.asList(ptrInfo.replace("_", "").split("\\|"));
|
|
|
|
List<String> ptrInfoList = Arrays.asList(ptrInfo.replace("_", "").split("\\|"));
|
|
|
|
if (!ptrInfoList.isEmpty()){
|
|
|
|
if (!ptrInfoList.isEmpty()){
|
|
|
|
List<MesPartPtr> custPartPtrList = getCustPartPtrList(ptrInfoList, organizeCode);
|
|
|
|
List<MesPartPtr> custPartPtrList = getCustPartPtrList(ptrInfoList, organizeCode);
|
|
|
|
for (MesPartPtr mesPartPtr : custPartPtrList) {
|
|
|
|
long count = custPartPtrList.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).count();
|
|
|
|
//根据mesPartPtr的目标零件号,找到零件信息
|
|
|
|
if (count > 0){
|
|
|
|
String destPartNo = mesPartPtr.getDestPartNo();
|
|
|
|
for (MesPartPtr mesPartPtr : custPartPtrList) {
|
|
|
|
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, organizeCode);
|
|
|
|
//根据mesPartPtr的目标零件号,找到零件信息
|
|
|
|
//更新物料清单
|
|
|
|
String destPartNo = mesPartPtr.getDestPartNo();
|
|
|
|
MesWorkOrderPart orderPart = orderPartMap.get(destPartNo);
|
|
|
|
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, organizeCode);
|
|
|
|
if (orderPart != null) {
|
|
|
|
//更新物料清单
|
|
|
|
orderPart.setPartNo(mesPartSap.getPartNo());
|
|
|
|
MesWorkOrderPart orderPart = orderPartMap.get(destPartNo);
|
|
|
|
orderPart.setPartName(mesPartSap.getPartName());
|
|
|
|
if (orderPart != null) {
|
|
|
|
orderPart.setShippingPartNo(mesPartSap.getPartNo());
|
|
|
|
orderPart.setPartNo(mesPartSap.getPartNo());
|
|
|
|
if (!isModifyPOrder){
|
|
|
|
orderPart.setPartName(mesPartSap.getPartName());
|
|
|
|
isModifyPOrder = true;
|
|
|
|
orderPart.setShippingPartNo(mesPartSap.getPartNo());
|
|
|
|
|
|
|
|
if (!isModifyPOrder){
|
|
|
|
|
|
|
|
isModifyPOrder = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -328,46 +340,60 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
|
|
|
|
List<String> partNoList = workOrderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList());
|
|
|
|
List<String> partNoList = workOrderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList());
|
|
|
|
List<MesPartPtr> partPtrList = getPartPtrList(organizeCode, mesWorkOrder.getWorkCenterCode(), partNoList);
|
|
|
|
List<MesPartPtr> partPtrList = getPartPtrList(organizeCode, mesWorkOrder.getWorkCenterCode(), partNoList);
|
|
|
|
//装配件规则如果进行了零件替换 则使用ptr的规则 key 零件号,value 是规则
|
|
|
|
//装配件规则如果进行了零件替换 则使用ptr的规则 key 零件号,value 是规则
|
|
|
|
|
|
|
|
long count = partPtrList.stream().filter(item -> item.getIsInterPrt() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).count();
|
|
|
|
|
|
|
|
if (count > 0){
|
|
|
|
|
|
|
|
isFOrder = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
for (MesPartPtr mesPartPtr : partPtrList) {
|
|
|
|
for (MesPartPtr mesPartPtr : partPtrList) {
|
|
|
|
//根据mesPartPtr的目标零件号,找到零件信息
|
|
|
|
//查询ptr总成
|
|
|
|
String destPartNo = mesPartPtr.getDestPartNo();
|
|
|
|
DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
String srcPartNo = mesPartPtr.getSrcPartNo();
|
|
|
|
DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(),"ptrId",detailPartPtr);
|
|
|
|
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, organizeCode);
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"partNo",detailPartPtr);
|
|
|
|
//更新物料清单
|
|
|
|
int detailPtrPartCount = partPtrDetailRao.findByHqlWhereCount(detailPartPtr);
|
|
|
|
MesWorkOrderPart orderPart = orderPartMap.get(srcPartNo);
|
|
|
|
if (detailPtrPartCount > 0){
|
|
|
|
if (orderPart != null) {
|
|
|
|
//根据mesPartPtr的目标零件号,找到零件信息
|
|
|
|
orderPart.setPartNo(mesPartSap.getPartNo());
|
|
|
|
String destPartNo = mesPartPtr.getDestPartNo();
|
|
|
|
orderPart.setPartName(mesPartSap.getPartName());
|
|
|
|
String srcPartNo = mesPartPtr.getSrcPartNo();
|
|
|
|
orderPart.setShippingPartNo(mesPartSap.getPartNo());
|
|
|
|
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, organizeCode);
|
|
|
|
ptrRuleListMap.put(mesPartSap.getPartNo(), mesPartPtr.getReplacePartSnRule());
|
|
|
|
//更新物料清单
|
|
|
|
if (!isModifyPOrder){
|
|
|
|
MesWorkOrderPart orderPart = orderPartMap.get(srcPartNo);
|
|
|
|
isModifyPOrder = true;
|
|
|
|
if (orderPart != null) {
|
|
|
|
}
|
|
|
|
orderPart.setPartNo(mesPartSap.getPartNo());
|
|
|
|
//更新mes_part_ptr的实际数量 + 1
|
|
|
|
orderPart.setPartName(mesPartSap.getPartName());
|
|
|
|
mesPartPtr.setPrtVehicleActualCount(mesPartPtr.getPrtVehicleActualCount() + 1);
|
|
|
|
orderPart.setShippingPartNo(mesPartSap.getPartNo());
|
|
|
|
ConvertBean.saveOrUpdate(mesPartPtr,"JOB");
|
|
|
|
ptrRuleListMap.put(mesPartSap.getPartNo(), mesPartPtr.getReplacePartSnRule());
|
|
|
|
partPtrRao.update(mesPartPtr);
|
|
|
|
if (!isModifyPOrder){
|
|
|
|
DdlPackBean partPtrDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
isModifyPOrder = true;
|
|
|
|
DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(),"ptrId",partPtrDetailPackBean);
|
|
|
|
}
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"totalPartNo",partPtrDetailPackBean);
|
|
|
|
//更新mes_part_ptr的实际数量 + 1
|
|
|
|
List<MesPartPtrDetail> partPtrDetailList = partPtrDetailRao.findByHqlWhere(partPtrDetailPackBean);
|
|
|
|
mesPartPtr.setPrtVehicleActualCount(mesPartPtr.getPrtVehicleActualCount() + 1);
|
|
|
|
if (!partPtrDetailList.isEmpty()){
|
|
|
|
ConvertBean.saveOrUpdate(mesPartPtr,"JOB");
|
|
|
|
MesPartPtrDetail mesPartPtrDetail = partPtrDetailList.get(0);
|
|
|
|
partPtrRao.update(mesPartPtr);
|
|
|
|
mesPartPtrDetail.setQty(mesPartPtrDetail.getQty() + 1);
|
|
|
|
DdlPackBean partPtrDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
ConvertBean.saveOrUpdate(mesPartPtrDetail,"JOB");
|
|
|
|
DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(),"ptrId",partPtrDetailPackBean);
|
|
|
|
partPtrDetailRao.update(mesPartPtrDetail);
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"totalPartNo",partPtrDetailPackBean);
|
|
|
|
|
|
|
|
List<MesPartPtrDetail> partPtrDetailList = partPtrDetailRao.findByHqlWhere(partPtrDetailPackBean);
|
|
|
|
|
|
|
|
if (!partPtrDetailList.isEmpty()){
|
|
|
|
|
|
|
|
MesPartPtrDetail mesPartPtrDetail = partPtrDetailList.get(0);
|
|
|
|
|
|
|
|
mesPartPtrDetail.setQty(mesPartPtrDetail.getQty() + 1);
|
|
|
|
|
|
|
|
ConvertBean.saveOrUpdate(mesPartPtrDetail,"JOB");
|
|
|
|
|
|
|
|
partPtrDetailRao.update(mesPartPtrDetail);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//更新mes_part_ptr_detail 的workOrder.partNo 数量加 1 ;替换了几次还是什么
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//更新mes_part_ptr_detail 的workOrder.partNo 数量加 1 ;替换了几次还是什么
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 生成装配件清单
|
|
|
|
// 生成装配件清单
|
|
|
|
if (isModifyPOrder){
|
|
|
|
if (!isFOrder){
|
|
|
|
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.PTR.getValue());
|
|
|
|
if (isModifyPOrder){
|
|
|
|
|
|
|
|
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.PTR.getValue());
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue());
|
|
|
|
|
|
|
|
}
|
|
|
|
}else {
|
|
|
|
}else {
|
|
|
|
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue());
|
|
|
|
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.F.getValue());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 工单号修改
|
|
|
|
* 工单号修改
|
|
|
|