|
|
@ -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 1是客户发送ptr
|
|
|
|
* isCustomerSendPrtInfo 1是客户发送ptr
|
|
|
|
* isInterPrt 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;
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 有开始时间 和 无结束时间 和 需要的数量,只有达到数量才结束
|
|
|
|
* 有开始时间 和 无结束时间 和 需要的数量,只有达到数量才结束
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|