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)
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单 则不再生成工单
String vinCode = sortInfo.getVinCode();
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);
List<MesWorkOrder> workOrderList = mesWorkOrderRao.findByHqlWhere(existPackBean);
if (!workOrderList.isEmpty()) {
@ -118,9 +118,9 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
mesWorkOrder.setWorkCenterCode(partProdGroup.getWorkCenterCode());
//根据产线查找区域代码
DdlPackBean centerPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partProdGroup.getWorkCenterCode(),"workCenterCode", centerPackBean);
DdlPreparedPack.getStringEqualPack(partProdGroup.getWorkCenterCode(), "workCenterCode", centerPackBean);
List<MesWorkCenter> workCenterList = workCenterRao.findByHqlTopWhere(centerPackBean, 1);
if (!workCenterList.isEmpty()){
if (!workCenterList.isEmpty()) {
mesWorkOrder.setAreaCode(workCenterList.get(0).getAreaCode());
}
mesWorkOrder.setWorkCellCode(mesPartProdGroupDetail.getWorkCellCode());
@ -150,7 +150,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getWorkCenterCode(), "workCenterCode", shiftPackBean);
List<MesShift> shiftList = mesShiftRao.findByHqlWhere(shiftPackBean);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date();
Date date = new Date();
try {
date = sdf.parse(sortInfo.getMatchTime());
} catch (ParseException e) {
@ -161,17 +161,17 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
int hours = calendar.get(Calendar.HOUR_OF_DAY);
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()) {
for (MesShift shift : shiftList) {
long startTime = Long.parseLong(shift.getStartTime().replaceAll(":", ""));
long endTime = Long.parseLong(shift.getEndTime().replaceAll(":", ""));
if (startTime < endTime){
if (startTime < endTime) {
if (shiftTime >= startTime && shiftTime < endTime) {
mesWorkOrder.setShiftName(shift.getShiftName());
mesWorkOrder.setShiftCode(shift.getShiftCode());
}
}else {
} else {
if (shiftTime >= startTime || shiftTime < endTime) {
mesWorkOrder.setShiftName(shift.getShiftName());
mesWorkOrder.setShiftCode(shift.getShiftCode());
@ -204,9 +204,9 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
* bom
*/
MesBom bom = mesBomService.findBom(organizeCode, prodVersion == null ? null : prodVersion.getAlternativePartList(), mesPartProdGroupDetail.getProductPartNo());
if (bom != null){
if (bom != null) {
mesWorkOrder.setBomCode(bom.getBomCode());
}else {
} else {
log.info("工厂:{},生产零件号:{}没有维护bom", organizeCode, mesPartProdGroupDetail.getProductPartNo());
return;
}
@ -266,32 +266,32 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
Calendar custCalendar = Calendar.getInstance();
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 prefix = partNo.substring(0, partNo.length() - 4);
String partNo4 = partNo.substring(partNo.length() - 4).toUpperCase();
custGenSerialNoModel.setPartNo(prefix+partNo4);
String year = custCalendar.get(Calendar.YEAR)+"";
custGenSerialNoModel.setPartNo(prefix + partNo4);
String year = custCalendar.get(Calendar.YEAR) + "";
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();
// [)>%RS%06%GS%Y,4110000000000X,%GS%P,%GS%12V,545238347,%GS%T1A,A2B4C,%RS%%EOT%
//截取替换为ascii码
String snOriginal = custNumRuleList.get(0);
String[] split = snOriginal.split("%RS%");
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[split.length - 1]);
StringBuilder gsStr = new StringBuilder();
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[split1.length-1]);
gsStr.append(split1[split1.length - 1]);
String[] split2 = gsStr.toString().split("%EOT%");
String sn = split2[0]+(char)4;
String sn = split2[0] + (char) 4;
//保存条码
mesWorkOrder.setCustSn(sn);
@ -301,6 +301,18 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
//打散bom使用生产零件号
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,
*
@ -313,7 +325,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
* isCustomerSendPrtInfo 1ptr
* isInterPrt 1ptr
*/
Map<String,String> ptrRuleListMap = new HashMap<>();
// Map<String, String> ptrRuleListMap = new HashMap<>();
//是否修改为P单
boolean isModifyPOrder = false;
boolean isFOrder = false;
@ -324,100 +336,112 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
* 2.
* 3.
*/
if (!workOrderPartList.isEmpty()){
Map<String, MesWorkOrderPart> orderPartMap = workOrderPartList.stream().collect(Collectors.toMap(MesWorkOrderPart::getPartNo, Function.identity()));
//先替换客户的ptr信息
String ptrInfo = mesWorkOrder.getPtrInfo();
if (StringUtils.isNotBlank(ptrInfo)) {
List<String> ptrInfoList = Arrays.asList(ptrInfo.replaceAll("_", "").split("\\|"));
if (!ptrInfoList.isEmpty()){
List<MesPartPtr> custPartPtrList = getCustPartPtrList(ptrInfoList, organizeCode);
long count = custPartPtrList.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).count();
if (count > 0){
for (MesPartPtr mesPartPtr : custPartPtrList) {
//根据mesPartPtr的目标零件号找到零件信息
String destPartNo = mesPartPtr.getDestPartNo();
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, organizeCode);
//更新物料清单
MesWorkOrderPart orderPart = orderPartMap.get(destPartNo);
if (orderPart != null) {
orderPart.setPartNo(mesPartSap.getPartNo());
orderPart.setPartName(mesPartSap.getPartName());
orderPart.setShippingPartNo(mesPartSap.getPartNo());
if (!isModifyPOrder){
isModifyPOrder = true;
}
}
}
}
}
}
/**
* 2024/11/16
* PTR --- mes_part_ptr
* 1. mes_part_ptr create_by_assembly_setting 1 true --使
*
*
* 2. 2 false
* ,
*
* 3. is_cust_send_info is_customer_send_prt_info = 1 true
* ptrPart
*/
//是否基于排序加工规则
// boolean isCreateByAssemblySetting=false;
//客户ptr信息
StringBuilder ptrInfos = new StringBuilder();
String ptrInfo = mesWorkOrder.getPtrInfo();
List<String> custPtrPartList = Arrays.asList(ptrInfo.split("\\|"));
boolean ptrFlag = false;
boolean fOrderFlag = false;
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<MesPartPtr> partPtrList = getPartPtrList(organizeCode, mesWorkOrder.getWorkCenterCode(), partNoList);
//装配件规则如果进行了零件替换 则使用ptr的规则 key 零件号value 是规则
List<String> fPartPtrPartList = partPtrList.stream().filter(item -> item.getIsInterPrt() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).map(MesPartPtr::getSrcPartNo).collect(Collectors.toList());
for (MesPartPtr mesPartPtr : partPtrList) {
//查询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()){
//根据mesPartPtr的目标零件号找到零件信息
String destPartNo = mesPartPtr.getDestPartNo();
String srcPartNo = mesPartPtr.getSrcPartNo();
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, organizeCode);
//更新物料清单
MesWorkOrderPart orderPart = orderPartMap.get(srcPartNo);
if (orderPart != null) {
MesPartPtrDetail mesPartPtrDetail = ptrDetailList.get(0);
orderPart.setPartNo(mesPartSap.getPartNo());
orderPart.setPartName(mesPartSap.getPartName());
orderPart.setShippingPartNo(mesPartSap.getPartNo());
ptrRuleListMap.put(mesPartSap.getPartNo(), mesPartPtr.getReplacePartSnRule());
if (!isModifyPOrder){
isModifyPOrder = true;
}
if (fPartPtrPartList.contains(mesPartPtr.getSrcPartNo())){
isFOrder = true;
//遍历workOrderPartList
for (MesWorkOrderPart orderPart : workOrderPartList) {
List<MesPartPtr> ptr = partPtrList.stream().filter(item -> item.getSrcPartNo().equals(orderPart.getPartNo())).collect(Collectors.toList());
if (ptr.isEmpty()) {
continue;
}
//判断是否是客户替换
boolean isCust = false;
for (MesPartPtr mesPartPtr : ptr) {
if (custPtrPartList.contains(mesPartPtr.getSrcPartNo())) {
isCust = true;
break;
}
}
MesPartPtr mesPartPtr = null;
MesPartPtrDetail mesPartPtrDetail = null;
if (isCust) {
//查找客户发送的ptr信息
List<MesPartPtr> custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && custPtrPartList.contains(item.getSrcPartNo())).collect(Collectors.toList());
if (!custPartPtrList.isEmpty()) {
mesPartPtr = custPartPtrList.get(0);
}
} else {
//获取相同总成的ptrId 在ptr详情中
List<MesPartPtr> custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == null || item.getIsCustomerSendPrtInfo() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).collect(Collectors.toList());
if (!custPtrPartList.isEmpty()) {
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 (!isFOrder){
if (isModifyPOrder){
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.PTR.getValue());
}else {
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue());
if (!isCust && mesPartPtrDetail == null) {
continue;
}
ptrFlag = true;
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());
}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<>();
if (!workOrderPartList.isEmpty()) {
for (MesWorkOrderPart orderPart : workOrderPartList) {
@ -426,101 +450,83 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
ConvertBean.saveOrUpdate(orderPart, "MES-JOB");
}
workOrderPartRao.saveAll(workOrderPartList);
assemblyList = getAssemblyList(mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getCarModelCode(), workOrderPartList, partProdGroup);
}
// /**
// * 生产序号
// * 工厂-产线-9位流水号,跳号10
// */
// GenSerialNoModel prodSeqSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_SEQ_WU_HAN");
// prodSeqSerialNoModel.setProdLocation(mesWorkOrder.getWorkCenterCode());
// List<String> proSeqResultList = syncFuncService.syncSerialNo(prodSeqSerialNoModel.organizeCode(organizeCode), "edi", mesPartProdGroupDetail.getOrganizeCode(), 1).getResultList();
// String proSeqStr = proSeqResultList.get(0);
mesWorkOrder.setProductSeq(productSeq);
mesWorkOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName());
ConvertBean.saveOrUpdate(mesWorkOrder, "MES-JOB");
mesWorkOrderRao.insert(mesWorkOrder);
/**
*
*/
mesWorkOrderService.doSaveWorkOrderPrintQueue(mesWorkOrder);
if (!assemblyList.isEmpty()) {
for (MesWorkOrderAssembly orderAssembly : assemblyList) {
if (ptrRuleListMap.get(orderAssembly.getPartNo()) != null){
orderAssembly.setMatchRule(ptrRuleListMap.get(orderAssembly.getPartNo()));
mesWorkOrder.setProductSeq(productSeq);
mesWorkOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName());
ConvertBean.saveOrUpdate(mesWorkOrder, "MES-JOB");
mesWorkOrderRao.insert(mesWorkOrder);
/**
*
*/
mesWorkOrderService.doSaveWorkOrderPrintQueue(mesWorkOrder);
if (!assemblyList.isEmpty()) {
for (MesWorkOrderAssembly orderAssembly : assemblyList) {
orderAssembly.setPartNo(mesWorkOrder.getPartNo());
orderAssembly.setPartName(mesWorkOrder.getPartName());
orderAssembly.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
orderAssembly.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue());
orderAssembly.setOrganizeCode(organizeCode);
orderAssembly.setProductSn(mesWorkOrder.getWorkOrderNo());
orderAssembly.setAreaCode(mesWorkOrder.getAreaCode());
ConvertBean.saveOrUpdate(orderAssembly, "MES-JOB");
}
orderAssembly.setPartNo(mesWorkOrder.getPartNo());
orderAssembly.setPartName(mesWorkOrder.getPartName());
orderAssembly.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
orderAssembly.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue());
orderAssembly.setOrganizeCode(organizeCode);
orderAssembly.setProductSn(mesWorkOrder.getWorkOrderNo());
orderAssembly.setAreaCode(mesWorkOrder.getAreaCode());
ConvertBean.saveOrUpdate(orderAssembly, "MES-JOB");
}
workOrderAssemblyRao.saveAll(assemblyList);
List<String> cellCodeList = assemblyList.stream().map(MesWorkOrderAssembly::getWorkCellCode).distinct().collect(Collectors.toList());
Map<String, List<MesWorkOrderAssembly>> cellCodeMap = assemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkCellCode));
for (String cellCode : cellCodeList) {
MesQueueOrder mesQueueOrder = new MesQueueOrder();
mesQueueOrder.setCarModelCode(mesWorkOrder.getCarModelCode());
mesQueueOrder.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setOrganizeCode(organizeCode);
mesQueueOrder.setWorkCellCode(cellCode);
mesQueueOrder.setPartProdGroupCode(partProdGroup.getPartProdGroupCode());
mesQueueOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName());
mesQueueOrder.setProcessSeq(cellCodeMap.get(cellCode).get(0).getProcessSeq());
mesQueueOrder.setPartNo(mesWorkOrder.getPartNo());
mesQueueOrder.setPartName(mesWorkOrder.getPartName());
mesQueueOrder.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setSerialNumber(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setProductSn(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setCustSn(mesWorkOrder.getCustSn());
mesQueueOrder.setStatus(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue());
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);
workOrderAssemblyRao.saveAll(assemblyList);
List<String> cellCodeList = assemblyList.stream().map(MesWorkOrderAssembly::getWorkCellCode).distinct().collect(Collectors.toList());
Map<String, List<MesWorkOrderAssembly>> cellCodeMap = assemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkCellCode));
for (String cellCode : cellCodeList) {
MesQueueOrder mesQueueOrder = new MesQueueOrder();
mesQueueOrder.setCarModelCode(mesWorkOrder.getCarModelCode());
mesQueueOrder.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setOrganizeCode(organizeCode);
mesQueueOrder.setWorkCellCode(cellCode);
mesQueueOrder.setPartProdGroupCode(partProdGroup.getPartProdGroupCode());
mesQueueOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName());
mesQueueOrder.setProcessSeq(cellCodeMap.get(cellCode).get(0).getProcessSeq());
mesQueueOrder.setPartNo(mesWorkOrder.getPartNo());
mesQueueOrder.setPartName(mesWorkOrder.getPartName());
mesQueueOrder.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setSerialNumber(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setProductSn(mesWorkOrder.getWorkOrderNo());
mesQueueOrder.setCustSn(mesWorkOrder.getCustSn());
mesQueueOrder.setStatus(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue());
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) {
//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.setPartName(orderPart.getPartName());
orderAssembly.setWorkCellCode(sortCfg.getWorkCellCode());
orderAssembly.setOrderPartId(orderPart.getId().toString());
// orderAssembly.setOrderPartId(orderPart.getId().toString());
orderAssembly.setEquipmentCode(sortCfg.getEquipmentCode());
orderAssembly.setReportType(sortCfg.getReportType());
if (sortCfg.getReportType() != null && sortCfg.getReportType() == MesExtEnumUtil.MES_REPORT_TYPE.REPORT.getValue()){
@ -671,6 +677,19 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
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) {
List<MesWorkOrderPart> orderPartList = new ArrayList<>();
@ -764,6 +783,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
return mesProductVersionList.isEmpty() ? null : mesProductVersionList.get(0);
}
private List<MesPartPtr> getPartPtrList(String organizeCode,String workCenterCode, List<String> partNoList) {
/**
* 2024/11/16
@ -777,10 +797,6 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
DdlPreparedPack.getInPackList(partNoList, "srcPartNo", partPtrPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", 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