PTR逻辑修改

tags/yfai-mes-ext-v2.3
臧学普 6 months ago
parent 901cb3e00c
commit 66dcc038b2

@ -87,12 +87,12 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
public void createWorkOrder(MesPartProdGroup partProdGroup, MesPartProdGroupDetail mesPartProdGroupDetail, MesPartSap partSap, MesCustSortInfo sortInfo,Long productSeq) { public void createWorkOrder(MesPartProdGroup partProdGroup, MesPartProdGroupDetail mesPartProdGroupDetail, MesPartSap partSap, MesCustSortInfo sortInfo,Long productSeq) {
//判断vin是否已经生成了S单,如果已经生成S单 则不再生成工单 //判断vin是否已经生成了S单,如果已经生成S单 则不再生成工单
String vinCode = sortInfo.getVinCode(); String vinCode = sortInfo.getVinCode();
DdlPackBean existPackBean = DdlPackBean.getDdlPackBean(sortInfo.getOrganizeCode()); DdlPackBean existPackBean = DdlPackBean.getDdlPackBean(sortInfo.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(vinCode,"vinCode",existPackBean); DdlPreparedPack.getStringEqualPack(vinCode, "vinCode", existPackBean);
// DdlPreparedPack.getStringEqualPack(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue(),"orderFlag",existPackBean); // DdlPreparedPack.getStringEqualPack(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue(),"orderFlag",existPackBean);
List<MesWorkOrder> workOrderList = mesWorkOrderRao.findByHqlWhere(existPackBean); List<MesWorkOrder> workOrderList = mesWorkOrderRao.findByHqlWhere(existPackBean);
if (!workOrderList.isEmpty()) { if (!workOrderList.isEmpty()) {
@ -118,9 +118,9 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
mesWorkOrder.setWorkCenterCode(partProdGroup.getWorkCenterCode()); mesWorkOrder.setWorkCenterCode(partProdGroup.getWorkCenterCode());
//根据产线查找区域代码 //根据产线查找区域代码
DdlPackBean centerPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean centerPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partProdGroup.getWorkCenterCode(),"workCenterCode", centerPackBean); DdlPreparedPack.getStringEqualPack(partProdGroup.getWorkCenterCode(), "workCenterCode", centerPackBean);
List<MesWorkCenter> workCenterList = workCenterRao.findByHqlTopWhere(centerPackBean, 1); List<MesWorkCenter> workCenterList = workCenterRao.findByHqlTopWhere(centerPackBean, 1);
if (!workCenterList.isEmpty()){ if (!workCenterList.isEmpty()) {
mesWorkOrder.setAreaCode(workCenterList.get(0).getAreaCode()); mesWorkOrder.setAreaCode(workCenterList.get(0).getAreaCode());
} }
mesWorkOrder.setWorkCellCode(mesPartProdGroupDetail.getWorkCellCode()); mesWorkOrder.setWorkCellCode(mesPartProdGroupDetail.getWorkCellCode());
@ -150,7 +150,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getWorkCenterCode(), "workCenterCode", shiftPackBean); DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getWorkCenterCode(), "workCenterCode", shiftPackBean);
List<MesShift> shiftList = mesShiftRao.findByHqlWhere(shiftPackBean); List<MesShift> shiftList = mesShiftRao.findByHqlWhere(shiftPackBean);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date(); Date date = new Date();
try { try {
date = sdf.parse(sortInfo.getMatchTime()); date = sdf.parse(sortInfo.getMatchTime());
} catch (ParseException e) { } catch (ParseException e) {
@ -161,17 +161,17 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
int hours = calendar.get(Calendar.HOUR_OF_DAY); int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE); int minutes = calendar.get(Calendar.MINUTE);
long shiftTime = Long.parseLong(String.format("%02d:%02d:00", hours, minutes).replaceAll(":","")); long shiftTime = Long.parseLong(String.format("%02d:%02d:00", hours, minutes).replaceAll(":", ""));
if (!shiftList.isEmpty()) { if (!shiftList.isEmpty()) {
for (MesShift shift : shiftList) { for (MesShift shift : shiftList) {
long startTime = Long.parseLong(shift.getStartTime().replaceAll(":", "")); long startTime = Long.parseLong(shift.getStartTime().replaceAll(":", ""));
long endTime = Long.parseLong(shift.getEndTime().replaceAll(":", "")); long endTime = Long.parseLong(shift.getEndTime().replaceAll(":", ""));
if (startTime < endTime){ if (startTime < endTime) {
if (shiftTime >= startTime && shiftTime < endTime) { if (shiftTime >= startTime && shiftTime < endTime) {
mesWorkOrder.setShiftName(shift.getShiftName()); mesWorkOrder.setShiftName(shift.getShiftName());
mesWorkOrder.setShiftCode(shift.getShiftCode()); mesWorkOrder.setShiftCode(shift.getShiftCode());
} }
}else { } else {
if (shiftTime >= startTime || shiftTime < endTime) { if (shiftTime >= startTime || shiftTime < endTime) {
mesWorkOrder.setShiftName(shift.getShiftName()); mesWorkOrder.setShiftName(shift.getShiftName());
mesWorkOrder.setShiftCode(shift.getShiftCode()); mesWorkOrder.setShiftCode(shift.getShiftCode());
@ -204,9 +204,9 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
* bom * bom
*/ */
MesBom bom = mesBomService.findBom(organizeCode, prodVersion == null ? null : prodVersion.getAlternativePartList(), mesPartProdGroupDetail.getProductPartNo()); MesBom bom = mesBomService.findBom(organizeCode, prodVersion == null ? null : prodVersion.getAlternativePartList(), mesPartProdGroupDetail.getProductPartNo());
if (bom != null){ if (bom != null) {
mesWorkOrder.setBomCode(bom.getBomCode()); mesWorkOrder.setBomCode(bom.getBomCode());
}else { } else {
log.info("工厂:{},生产零件号:{}没有维护bom", organizeCode, mesPartProdGroupDetail.getProductPartNo()); log.info("工厂:{},生产零件号:{}没有维护bom", organizeCode, mesPartProdGroupDetail.getProductPartNo());
return; return;
} }
@ -266,32 +266,32 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
Calendar custCalendar = Calendar.getInstance(); Calendar custCalendar = Calendar.getInstance();
custCalendar.setTime(new Date()); custCalendar.setTime(new Date());
GenSerialNoModel custGenSerialNoModel= new GenSerialNoModel("WH_CUST_SN_RULE"); GenSerialNoModel custGenSerialNoModel = new GenSerialNoModel("WH_CUST_SN_RULE");
String partNo = mesWorkOrder.getCustPartNo(); String partNo = mesWorkOrder.getCustPartNo();
String prefix = partNo.substring(0, partNo.length() - 4); String prefix = partNo.substring(0, partNo.length() - 4);
String partNo4 = partNo.substring(partNo.length() - 4).toUpperCase(); String partNo4 = partNo.substring(partNo.length() - 4).toUpperCase();
custGenSerialNoModel.setPartNo(prefix+partNo4); custGenSerialNoModel.setPartNo(prefix + partNo4);
String year = custCalendar.get(Calendar.YEAR)+""; String year = custCalendar.get(Calendar.YEAR) + "";
custGenSerialNoModel.setYear(year.substring(2)); custGenSerialNoModel.setYear(year.substring(2));
custGenSerialNoModel.setDay(String.format("%03d",custCalendar.get(Calendar.DAY_OF_YEAR))); custGenSerialNoModel.setDay(String.format("%03d", custCalendar.get(Calendar.DAY_OF_YEAR)));
List<String> custNumRuleList = syncFuncService.syncSerialNo(custGenSerialNoModel, "edi", organizeCode, 1).getResultList(); List<String> custNumRuleList = syncFuncService.syncSerialNo(custGenSerialNoModel, "edi", organizeCode, 1).getResultList();
// [)>%RS%06%GS%Y,4110000000000X,%GS%P,%GS%12V,545238347,%GS%T1A,A2B4C,%RS%%EOT% // [)>%RS%06%GS%Y,4110000000000X,%GS%P,%GS%12V,545238347,%GS%T1A,A2B4C,%RS%%EOT%
//截取替换为ascii码 //截取替换为ascii码
String snOriginal = custNumRuleList.get(0); String snOriginal = custNumRuleList.get(0);
String[] split = snOriginal.split("%RS%"); String[] split = snOriginal.split("%RS%");
StringBuilder rsStr = new StringBuilder(); StringBuilder rsStr = new StringBuilder();
for (int i = 0; i < split.length-1; i++) { for (int i = 0; i < split.length - 1; i++) {
rsStr.append(split[i]).append((char) 30); rsStr.append(split[i]).append((char) 30);
} }
rsStr.append(split[split.length - 1]); rsStr.append(split[split.length - 1]);
StringBuilder gsStr = new StringBuilder(); StringBuilder gsStr = new StringBuilder();
String[] split1 = rsStr.toString().split("%GS%"); String[] split1 = rsStr.toString().split("%GS%");
for (int i = 0; i < split1.length-1; i++) { for (int i = 0; i < split1.length - 1; i++) {
gsStr.append(split1[i]).append((char) 29); gsStr.append(split1[i]).append((char) 29);
} }
gsStr.append(split1[split1.length-1]); gsStr.append(split1[split1.length - 1]);
String[] split2 = gsStr.toString().split("%EOT%"); String[] split2 = gsStr.toString().split("%EOT%");
String sn = split2[0]+(char)4; String sn = split2[0] + (char) 4;
//保存条码 //保存条码
mesWorkOrder.setCustSn(sn); mesWorkOrder.setCustSn(sn);
@ -301,6 +301,18 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
//打散bom使用生产零件号 //打散bom使用生产零件号
workOrderPartList = dismantleBom(mesPartProdGroupDetail.getProductPartNo(), mesWorkOrder.getQty(), sortInfo.getMatchTime(), bom.getBomCode(), sortInfo.getOrganizeCode(), mesPartProdGroupDetail.getWorkCellCode(), mesWorkOrder.getWorkOrderNo()); workOrderPartList = dismantleBom(mesPartProdGroupDetail.getProductPartNo(), mesWorkOrder.getQty(), sortInfo.getMatchTime(), bom.getBomCode(), sortInfo.getOrganizeCode(), mesPartProdGroupDetail.getWorkCellCode(), mesWorkOrder.getWorkOrderNo());
} }
/**
*
* {ORG}{dynamicRule}{dynamicRule}{dynamicrule}{serialNo}
* + +++
*/
GenSerialNoModel genSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_NO_WU_HAN");
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(organizeCode), "edi", mesPartProdGroupDetail.getOrganizeCode(), 1).getResultList();
String serialNo = resultList.get(0).replace("MES_WORK_ORDER_NO_WU_HAN", "");
String orderNoWuHan = organizeCode + mesWorkOrder.getOrderFlag() + sortInfo.getCustOrderCode() + mesWorkOrder.getShiftCode() + serialNo;
mesWorkOrder.setWorkOrderNo(orderNoWuHan);
/** /**
* bom, * bom,
* *
@ -313,7 +325,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
* isCustomerSendPrtInfo 1ptr * isCustomerSendPrtInfo 1ptr
* isInterPrt 1ptr * isInterPrt 1ptr
*/ */
Map<String,String> ptrRuleListMap = new HashMap<>(); // Map<String, String> ptrRuleListMap = new HashMap<>();
//是否修改为P单 //是否修改为P单
boolean isModifyPOrder = false; boolean isModifyPOrder = false;
boolean isFOrder = false; boolean isFOrder = false;
@ -324,100 +336,112 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
* 2. * 2.
* 3. * 3.
*/ */
if (!workOrderPartList.isEmpty()){ /**
Map<String, MesWorkOrderPart> orderPartMap = workOrderPartList.stream().collect(Collectors.toMap(MesWorkOrderPart::getPartNo, Function.identity())); * 2024/11/16
//先替换客户的ptr信息 * PTR --- mes_part_ptr
String ptrInfo = mesWorkOrder.getPtrInfo(); * 1. mes_part_ptr create_by_assembly_setting 1 true --使
if (StringUtils.isNotBlank(ptrInfo)) { *
List<String> ptrInfoList = Arrays.asList(ptrInfo.replaceAll("_", "").split("\\|")); *
if (!ptrInfoList.isEmpty()){ * 2. 2 false
List<MesPartPtr> custPartPtrList = getCustPartPtrList(ptrInfoList, organizeCode); * ,
long count = custPartPtrList.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).count(); *
if (count > 0){ * 3. is_cust_send_info is_customer_send_prt_info = 1 true
for (MesPartPtr mesPartPtr : custPartPtrList) { * ptrPart
//根据mesPartPtr的目标零件号找到零件信息 */
String destPartNo = mesPartPtr.getDestPartNo(); //是否基于排序加工规则
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, organizeCode); // boolean isCreateByAssemblySetting=false;
//更新物料清单
MesWorkOrderPart orderPart = orderPartMap.get(destPartNo); //客户ptr信息
if (orderPart != null) { StringBuilder ptrInfos = new StringBuilder();
orderPart.setPartNo(mesPartSap.getPartNo()); String ptrInfo = mesWorkOrder.getPtrInfo();
orderPart.setPartName(mesPartSap.getPartName()); List<String> custPtrPartList = Arrays.asList(ptrInfo.split("\\|"));
orderPart.setShippingPartNo(mesPartSap.getPartNo()); boolean ptrFlag = false;
if (!isModifyPOrder){ boolean fOrderFlag = false;
isModifyPOrder = true; if (!workOrderPartList.isEmpty()) {
} //是否基于排序加工规则--待定
} //查询装配目视项
} List<MesWorkOrderAssembly> assemblyList = getAssemblyList(mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getCarModelCode(), workOrderPartList, partProdGroup);
} //ptr信息
}
}
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 是规则 //遍历workOrderPartList
List<String> fPartPtrPartList = partPtrList.stream().filter(item -> item.getIsInterPrt() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).map(MesPartPtr::getSrcPartNo).collect(Collectors.toList()); for (MesWorkOrderPart orderPart : workOrderPartList) {
List<MesPartPtr> ptr = partPtrList.stream().filter(item -> item.getSrcPartNo().equals(orderPart.getPartNo())).collect(Collectors.toList());
for (MesPartPtr mesPartPtr : partPtrList) { if (ptr.isEmpty()) {
//查询ptr总成--只有特定总成才会替换 continue;
DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode); }
DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(),"ptrId",detailPartPtr); //判断是否是客户替换
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"totalPartNo",detailPartPtr); boolean isCust = false;
List<MesPartPtrDetail> ptrDetailList = partPtrDetailRao.findByHqlWhere(detailPartPtr); for (MesPartPtr mesPartPtr : ptr) {
if (!ptrDetailList.isEmpty()){ if (custPtrPartList.contains(mesPartPtr.getSrcPartNo())) {
//根据mesPartPtr的目标零件号找到零件信息 isCust = true;
String destPartNo = mesPartPtr.getDestPartNo(); break;
String srcPartNo = mesPartPtr.getSrcPartNo(); }
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, organizeCode); }
//更新物料清单 MesPartPtr mesPartPtr = null;
MesWorkOrderPart orderPart = orderPartMap.get(srcPartNo); MesPartPtrDetail mesPartPtrDetail = null;
if (orderPart != null) { if (isCust) {
MesPartPtrDetail mesPartPtrDetail = ptrDetailList.get(0); //查找客户发送的ptr信息
orderPart.setPartNo(mesPartSap.getPartNo()); List<MesPartPtr> custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && custPtrPartList.contains(item.getSrcPartNo())).collect(Collectors.toList());
orderPart.setPartName(mesPartSap.getPartName()); if (!custPartPtrList.isEmpty()) {
orderPart.setShippingPartNo(mesPartSap.getPartNo()); mesPartPtr = custPartPtrList.get(0);
ptrRuleListMap.put(mesPartSap.getPartNo(), mesPartPtr.getReplacePartSnRule()); }
if (!isModifyPOrder){ } else {
isModifyPOrder = true; //获取相同总成的ptrId 在ptr详情中
} List<MesPartPtr> custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == null || item.getIsCustomerSendPrtInfo() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).collect(Collectors.toList());
if (fPartPtrPartList.contains(mesPartPtr.getSrcPartNo())){ if (!custPtrPartList.isEmpty()) {
isFOrder = true; mesPartPtr = custPartPtrList.get(0);
//查询ptr总成--只有特定总成才会替换
DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(), "ptrId", detailPartPtr);
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "totalPartNo", detailPartPtr);
List<MesPartPtrDetail> ptrDetailList = partPtrDetailRao.findByHqlWhere(detailPartPtr);
if (!ptrDetailList.isEmpty()) {
mesPartPtrDetail = ptrDetailList.get(0);
} }
mesWorkOrder.setRemark(mesPartPtr.getRemark());
String ptrInfoStr = "INFO"+mesPartPtr.getId()+"|PART"+mesPartPtrDetail.getId();
mesWorkOrder.setPtrInfo(ptrInfoStr);
//更新mes_part_ptr的实际数量 + 1
mesPartPtr.setPrtVehicleActualCount(mesPartPtr.getPrtVehicleActualCount() + 1);
ConvertBean.saveOrUpdate(mesPartPtr,"JOB");
partPtrRao.update(mesPartPtr);
mesPartPtrDetail.setQty(mesPartPtrDetail.getQty() + 1);
ConvertBean.saveOrUpdate(mesPartPtrDetail,"JOB");
partPtrDetailRao.update(mesPartPtrDetail);
//更新mes_part_ptr_detail 的workOrder.partNo 数量加 1 ;替换了几次还是什么
} }
} }
}
}
// 生成装配件清单 if (!isCust && mesPartPtrDetail == null) {
if (!isFOrder){ continue;
if (isModifyPOrder){ }
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.PTR.getValue());
}else { ptrFlag = true;
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue()); if (!isCust && mesPartPtr.getIsInterPrt()==CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
fOrderFlag = true;
}
//将工单类零件表替换位PTR条件中维护的替换零件
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesPartPtr.getDestPartNo(), organizeCode);
orderPart.setPartNo(mesPartSap.getPartNo());
orderPart.setPartName(mesPartSap.getPartName());
//更新mes_part_ptr的实际数量 + 1
mesPartPtr.setPrtVehicleActualCount(mesPartPtr.getPrtVehicleActualCount() + 1);
ConvertBean.saveOrUpdate(mesPartPtr, "JOB");
partPtrRao.update(mesPartPtr);
if (mesPartPtrDetail != null) {
mesPartPtrDetail.setQty(mesPartPtrDetail.getQty() + 1);
ConvertBean.saveOrUpdate(mesPartPtrDetail, "JOB");
partPtrDetailRao.update(mesPartPtrDetail);
}
List<MesWorkOrderAssembly> orderAssemblyList = assemblyList.stream().filter(item -> item.getAssemblyPartNo().equals(orderPart.getPartNo())).collect(Collectors.toList());
MesWorkOrderAssembly orderAssembly = orderAssemblyList.get(0);
orderAssembly.setAssemblyPartNo(mesPartSap.getPartNo());
orderAssembly.setAssemblyPartName(mesPartSap.getPartName());
orderAssembly.setMatchRule(mesPartPtr.getReplacePartSnRule());
ptrInfos.append("INFO|").append(mesPartPtr.getId());
if (mesPartPtrDetail != null) {
ptrInfos.append("PART|").append(mesPartPtrDetail.getId());
}
} }
}else {
}
if (ptrFlag && !fOrderFlag){
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.PTR.getValue());
}else if (ptrFlag){
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.F.getValue()); mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.F.getValue());
}else {
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue());
} }
/**
*
* {ORG}{dynamicRule}{dynamicRule}{dynamicrule}{serialNo}
* + +++
*/
GenSerialNoModel genSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_NO_WU_HAN");
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(organizeCode), "edi", mesPartProdGroupDetail.getOrganizeCode(), 1).getResultList();
String serialNo = resultList.get(0).replace("MES_WORK_ORDER_NO_WU_HAN", "");
String orderNoWuHan=organizeCode+mesWorkOrder.getOrderFlag()+sortInfo.getCustOrderCode()+mesWorkOrder.getShiftCode() + serialNo;
mesWorkOrder.setWorkOrderNo(orderNoWuHan);
List<MesWorkOrderAssembly> assemblyList = new ArrayList<>(); List<MesWorkOrderAssembly> assemblyList = new ArrayList<>();
if (!workOrderPartList.isEmpty()) { if (!workOrderPartList.isEmpty()) {
for (MesWorkOrderPart orderPart : workOrderPartList) { for (MesWorkOrderPart orderPart : workOrderPartList) {
@ -426,101 +450,83 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
ConvertBean.saveOrUpdate(orderPart, "MES-JOB"); ConvertBean.saveOrUpdate(orderPart, "MES-JOB");
} }
workOrderPartRao.saveAll(workOrderPartList); workOrderPartRao.saveAll(workOrderPartList);
assemblyList = getAssemblyList(mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getCarModelCode(), workOrderPartList, partProdGroup); mesWorkOrder.setProductSeq(productSeq);
} mesWorkOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName());
// /** ConvertBean.saveOrUpdate(mesWorkOrder, "MES-JOB");
// * 生产序号 mesWorkOrderRao.insert(mesWorkOrder);
// * 工厂-产线-9位流水号,跳号10 /**
// */ *
// GenSerialNoModel prodSeqSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_SEQ_WU_HAN"); */
// prodSeqSerialNoModel.setProdLocation(mesWorkOrder.getWorkCenterCode()); mesWorkOrderService.doSaveWorkOrderPrintQueue(mesWorkOrder);
// List<String> proSeqResultList = syncFuncService.syncSerialNo(prodSeqSerialNoModel.organizeCode(organizeCode), "edi", mesPartProdGroupDetail.getOrganizeCode(), 1).getResultList(); if (!assemblyList.isEmpty()) {
// String proSeqStr = proSeqResultList.get(0); for (MesWorkOrderAssembly orderAssembly : assemblyList) {
mesWorkOrder.setProductSeq(productSeq); orderAssembly.setPartNo(mesWorkOrder.getPartNo());
orderAssembly.setPartName(mesWorkOrder.getPartName());
mesWorkOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName()); orderAssembly.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
ConvertBean.saveOrUpdate(mesWorkOrder, "MES-JOB"); orderAssembly.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue());
mesWorkOrderRao.insert(mesWorkOrder); orderAssembly.setOrganizeCode(organizeCode);
orderAssembly.setProductSn(mesWorkOrder.getWorkOrderNo());
/** orderAssembly.setAreaCode(mesWorkOrder.getAreaCode());
* ConvertBean.saveOrUpdate(orderAssembly, "MES-JOB");
*/
mesWorkOrderService.doSaveWorkOrderPrintQueue(mesWorkOrder);
if (!assemblyList.isEmpty()) {
for (MesWorkOrderAssembly orderAssembly : assemblyList) {
if (ptrRuleListMap.get(orderAssembly.getPartNo()) != null){
orderAssembly.setMatchRule(ptrRuleListMap.get(orderAssembly.getPartNo()));
} }
orderAssembly.setPartNo(mesWorkOrder.getPartNo()); workOrderAssemblyRao.saveAll(assemblyList);
orderAssembly.setPartName(mesWorkOrder.getPartName());
orderAssembly.setWorkOrderNo(mesWorkOrder.getWorkOrderNo()); List<String> cellCodeList = assemblyList.stream().map(MesWorkOrderAssembly::getWorkCellCode).distinct().collect(Collectors.toList());
orderAssembly.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()); Map<String, List<MesWorkOrderAssembly>> cellCodeMap = assemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkCellCode));
orderAssembly.setOrganizeCode(organizeCode); for (String cellCode : cellCodeList) {
orderAssembly.setProductSn(mesWorkOrder.getWorkOrderNo()); MesQueueOrder mesQueueOrder = new MesQueueOrder();
orderAssembly.setAreaCode(mesWorkOrder.getAreaCode()); mesQueueOrder.setCarModelCode(mesWorkOrder.getCarModelCode());
ConvertBean.saveOrUpdate(orderAssembly, "MES-JOB"); mesQueueOrder.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
} mesQueueOrder.setOrganizeCode(organizeCode);
workOrderAssemblyRao.saveAll(assemblyList); mesQueueOrder.setWorkCellCode(cellCode);
mesQueueOrder.setPartProdGroupCode(partProdGroup.getPartProdGroupCode());
List<String> cellCodeList = assemblyList.stream().map(MesWorkOrderAssembly::getWorkCellCode).distinct().collect(Collectors.toList()); mesQueueOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName());
Map<String, List<MesWorkOrderAssembly>> cellCodeMap = assemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkCellCode)); mesQueueOrder.setProcessSeq(cellCodeMap.get(cellCode).get(0).getProcessSeq());
for (String cellCode : cellCodeList) { mesQueueOrder.setPartNo(mesWorkOrder.getPartNo());
MesQueueOrder mesQueueOrder = new MesQueueOrder(); mesQueueOrder.setPartName(mesWorkOrder.getPartName());
mesQueueOrder.setCarModelCode(mesWorkOrder.getCarModelCode()); mesQueueOrder.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setWorkOrderNo(mesWorkOrder.getWorkOrderNo()); mesQueueOrder.setSerialNumber(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setOrganizeCode(organizeCode); mesQueueOrder.setProductSn(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setWorkCellCode(cellCode); mesQueueOrder.setCustSn(mesWorkOrder.getCustSn());
mesQueueOrder.setPartProdGroupCode(partProdGroup.getPartProdGroupCode()); mesQueueOrder.setStatus(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue());
mesQueueOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName()); mesQueueOrder.setProductSeq(mesWorkOrder.getProductSeq());
mesQueueOrder.setProcessSeq(cellCodeMap.get(cellCode).get(0).getProcessSeq()); mesQueueOrder.setWorkOrderSeq(mesWorkOrder.getWorkOrderSeq());
mesQueueOrder.setPartNo(mesWorkOrder.getPartNo()); mesQueueOrder.setCustPartNo(mesWorkOrder.getCustPartNo());
mesQueueOrder.setPartName(mesWorkOrder.getPartName()); mesQueueOrder.setCustOrderNo(mesWorkOrder.getCustOrderNo());
mesQueueOrder.setWorkOrderNo(mesWorkOrder.getWorkOrderNo()); mesQueueOrder.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
mesQueueOrder.setSerialNumber(mesWorkOrder.getWorkOrderNo()); mesQueueOrder.setAreaCode(mesWorkOrder.getAreaCode());
mesQueueOrder.setProductSn(mesWorkOrder.getWorkOrderNo()); mesQueueOrder.setOrderFlag(mesWorkOrder.getOrderFlag());
mesQueueOrder.setCustSn(mesWorkOrder.getCustSn()); ConvertBean.saveOrUpdate(mesQueueOrder, "MES-JOB");
mesQueueOrder.setStatus(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue()); queueOrderRao.insert(mesQueueOrder);
mesQueueOrder.setProductSeq(mesWorkOrder.getProductSeq()); }
mesQueueOrder.setWorkOrderSeq(mesWorkOrder.getWorkOrderSeq());
mesQueueOrder.setCustPartNo(mesWorkOrder.getCustPartNo());
mesQueueOrder.setCustOrderNo(mesWorkOrder.getCustOrderNo());
mesQueueOrder.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
mesQueueOrder.setAreaCode(mesWorkOrder.getAreaCode());
mesQueueOrder.setOrderFlag(mesWorkOrder.getOrderFlag());
ConvertBean.saveOrUpdate(mesQueueOrder, "MES-JOB");
queueOrderRao.insert(mesQueueOrder);
} }
//生成条码表
MesProduceSn mesProduceSn = new MesProduceSn();
mesProduceSn.setProductSn(mesWorkOrder.getWorkOrderNo());
mesProduceSn.setCustSn(mesWorkOrder.getCustSn());
mesProduceSn.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
mesProduceSn.setOrganizeCode(organizeCode);
mesProduceSn.setFid(UUID.randomUUID().toString());
mesProduceSn.setCustCode(mesWorkOrder.getCustCode());
mesProduceSn.setCustPartNo(mesWorkOrder.getCustPartNo());
mesProduceSn.setPartNo(mesWorkOrder.getPartNo());
mesProduceSn.setPartName(mesWorkOrder.getPartName());
mesProduceSn.setShiftCode(mesWorkOrder.getShiftCode());
mesProduceSn.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
mesProduceSn.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue());
mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
mesProduceSn.setQty(1.0);
mesProduceSn.setSerialNumber(mesWorkOrder.getWorkOrderNo());
mesProduceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue());
mesProduceSn.setSnType(MesExtEnumUtil.PRODUCE_SN_TYPE.STANDARD.getValue());
mesProduceSn.setFid(UUID.randomUUID().toString());
mesProduceSn.setAreaCode(mesWorkOrder.getAreaCode());
ConvertBean.saveOrUpdate(mesProduceSn, "MES-JOB");
mesProduceSnRao.insert(mesProduceSn);
} }
//生成条码表
MesProduceSn mesProduceSn = new MesProduceSn();
mesProduceSn.setProductSn(mesWorkOrder.getWorkOrderNo());
mesProduceSn.setCustSn(mesWorkOrder.getCustSn());
mesProduceSn.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
mesProduceSn.setOrganizeCode(organizeCode);
mesProduceSn.setFid(UUID.randomUUID().toString());
mesProduceSn.setCustCode(mesWorkOrder.getCustCode());
mesProduceSn.setCustPartNo(mesWorkOrder.getCustPartNo());
mesProduceSn.setPartNo(mesWorkOrder.getPartNo());
mesProduceSn.setPartName(mesWorkOrder.getPartName());
mesProduceSn.setShiftCode(mesWorkOrder.getShiftCode());
mesProduceSn.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
mesProduceSn.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue());
mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
mesProduceSn.setQty(1.0);
mesProduceSn.setSerialNumber(mesWorkOrder.getWorkOrderNo());
mesProduceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue());
mesProduceSn.setSnType(MesExtEnumUtil.PRODUCE_SN_TYPE.STANDARD.getValue());
mesProduceSn.setFid(UUID.randomUUID().toString());
mesProduceSn.setAreaCode(mesWorkOrder.getAreaCode());
ConvertBean.saveOrUpdate(mesProduceSn, "MES-JOB");
mesProduceSnRao.insert(mesProduceSn);
} }
private List<MesWorkOrderAssembly> getAssemblyList(String workCenterCode, String vehicleNo, List<MesWorkOrderPart> workOrderPartList, MesPartProdGroup mesPartProdGroup) { private List<MesWorkOrderAssembly> getAssemblyList(String workCenterCode, String vehicleNo, List<MesWorkOrderPart> workOrderPartList, MesPartProdGroup mesPartProdGroup) {
//TM_BAS_WORK_ORDER_ASSEMBLY_SETTING 对应 mes_prod_rule_sort_cfg 排序生产规则 //TM_BAS_WORK_ORDER_ASSEMBLY_SETTING 对应 mes_prod_rule_sort_cfg 排序生产规则
@ -569,7 +575,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
// orderAssembly.setPartNo(orderPart.getPartNo()); // orderAssembly.setPartNo(orderPart.getPartNo());
// orderAssembly.setPartName(orderPart.getPartName()); // orderAssembly.setPartName(orderPart.getPartName());
orderAssembly.setWorkCellCode(sortCfg.getWorkCellCode()); orderAssembly.setWorkCellCode(sortCfg.getWorkCellCode());
orderAssembly.setOrderPartId(orderPart.getId().toString()); // orderAssembly.setOrderPartId(orderPart.getId().toString());
orderAssembly.setEquipmentCode(sortCfg.getEquipmentCode()); orderAssembly.setEquipmentCode(sortCfg.getEquipmentCode());
orderAssembly.setReportType(sortCfg.getReportType()); orderAssembly.setReportType(sortCfg.getReportType());
if (sortCfg.getReportType() != null && sortCfg.getReportType() == MesExtEnumUtil.MES_REPORT_TYPE.REPORT.getValue()){ if (sortCfg.getReportType() != null && sortCfg.getReportType() == MesExtEnumUtil.MES_REPORT_TYPE.REPORT.getValue()){
@ -671,6 +677,19 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
return workOrderAssemblyList; return workOrderAssemblyList;
} }
private MesProdRuleSortCfg getSortRuleCfg (String organizeCode,String workCenterCode,String partNo ){
DdlPackBean prodRuleSortPackBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getStringEqualPack(mesPartProdGroup.getPartProdGroupCode(),"productGroupCode",prodRuleSortPackBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", prodRuleSortPackBean);
DdlPreparedPack.getStringEqualPack(partNo, "assemblyPartNo", prodRuleSortPackBean);
//查询当前产线的所有排序生产规则--分为当前工单清单的装配件
List<MesProdRuleSortCfg> sortCfgList = mesProdRuleSortCfgRao.findByHqlTopWhere(prodRuleSortPackBean,1);
if (sortCfgList != null && !sortCfgList.isEmpty()){
return sortCfgList.get(0);
}
return null;
}
private List<MesWorkOrderPart> dismantleBom(String partNo, double qty, String productTime, String bomCode, String organizeCode, String workCellCode, String workOrderNo) { private List<MesWorkOrderPart> dismantleBom(String partNo, double qty, String productTime, String bomCode, String organizeCode, String workCellCode, String workOrderNo) {
List<MesWorkOrderPart> orderPartList = new ArrayList<>(); List<MesWorkOrderPart> orderPartList = new ArrayList<>();
@ -764,6 +783,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
return mesProductVersionList.isEmpty() ? null : mesProductVersionList.get(0); return mesProductVersionList.isEmpty() ? null : mesProductVersionList.get(0);
} }
private List<MesPartPtr> getPartPtrList(String organizeCode,String workCenterCode, List<String> partNoList) { private List<MesPartPtr> getPartPtrList(String organizeCode,String workCenterCode, List<String> partNoList) {
/** /**
* 2024/11/16 * 2024/11/16
@ -777,10 +797,6 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
DdlPreparedPack.getInPackList(partNoList, "srcPartNo", partPtrPackBean); DdlPreparedPack.getInPackList(partNoList, "srcPartNo", partPtrPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", partPtrPackBean); DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", partPtrPackBean);
List<MesPartPtr> partPtrList = partPtrRao.findByHqlWhere(partPtrPackBean); List<MesPartPtr> partPtrList = partPtrRao.findByHqlWhere(partPtrPackBean);
DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "endTime", partPtrPackBean);
DdlPreparedPack.getIsNotNull("prtVehicleCount", partPtrPackBean);
DdlPreparedPack.getIsNotNull("endTime", partPtrPackBean);
/** /**
* *
*/ */

Loading…
Cancel
Save