工单号顺序号调整

tags/yfai-mes-ext-v2.3
臧学普 6 months ago
parent 974ad7bc7f
commit 419fc65025

@ -13,6 +13,6 @@ public interface IMesCreateWorkOrder {
* @param partSap * @param partSap
* @param sortInfo * @param sortInfo
*/ */
void createWorkOrder(MesPartProdGroup partProdGroup, MesPartProdGroupDetail mesPartProdGroupDetail, MesPartSap partSap, MesCustSortInfo sortInfo); void createWorkOrder(MesPartProdGroup partProdGroup, MesPartProdGroupDetail mesPartProdGroupDetail, MesPartSap partSap, MesCustSortInfo sortInfo,Long productSeq);
} }

@ -117,30 +117,22 @@ public class MesPackageRoundnessService implements IRoundnessStrategy {
//2.排序信息中的零件合计数量 //2.排序信息中的零件合计数量
double qty = sortInfoList.stream().map(MesCustSortInfo::getQty).reduce(Double::sum).get(); double qty = sortInfoList.stream().map(MesCustSortInfo::getQty).reduce(Double::sum).get();
MesCustSortInfo sortInfo; MesCustSortInfo sortInfo;
/**
* 2024/10/24 by CastlecustOrderNoproductSeq
*/
log.info("castle-execute-before查询出的sortInfo数据:{}", sortInfoList);
sortInfoList = sortInfoList.stream().sorted((sortInfo1, sortInfo2) -> {
if (Long.parseLong(sortInfo1.getCustOrderCode().substring(3)) > Long.parseLong(sortInfo2.getCustOrderCode().substring(3))) {
return 1;
}
return -1;
}).collect(Collectors.toList());
log.info("castle-execute-after查询出的sortInfo数据:{}", sortInfoList);
//3.当数量未达到圆整包装数时 //3.当数量未达到圆整包装数时
if (qty < roundQty) { if (qty < roundQty) {
//4.查看客户排序信息钟的最早的一条过点时间 + 生产组最晚生成时间是否已到达当前时间 //4.查看客户排序信息钟的最早的一条过点时间 + 生产组最晚生成时间是否已到达当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// sortInfoList = sortInfoList.stream().sorted((sortInfo1, sortInfo2) -> {
// try {
// if (sdf.parse(sortInfo1.getMatchTime()).after(sdf.parse(sortInfo2.getMatchTime()))) {
// return 1;
// }
// } catch (ParseException e) {
// log.error("解析匹配时间报错:{}", e.getMessage());
// }
// return -1;
// }).collect(Collectors.toList());
/**
* 2024/10/24 by CastlecustOrderNoproductSeq
*/
sortInfoList = sortInfoList.stream().sorted((sortInfo1, sortInfo2) -> {
if (Long.parseLong(sortInfo1.getCustOrderCode().substring(3)) > Long.parseLong(sortInfo2.getCustOrderCode().substring(3))) {
return 1;
}
return -1;
}).collect(Collectors.toList());
sortInfo = sortInfoList.get(0); sortInfo = sortInfoList.get(0);
//最晚延迟的时间 //最晚延迟的时间
int latestCreationTime = Integer.parseInt(partProdGroup.getLatestCreationTime()); int latestCreationTime = Integer.parseInt(partProdGroup.getLatestCreationTime());
@ -158,11 +150,23 @@ public class MesPackageRoundnessService implements IRoundnessStrategy {
} }
} }
//批量获取生生产序号
/**
*
* -线-9,10
*/
GenSerialNoModel prodSeqSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_SEQ_WU_HAN");
prodSeqSerialNoModel.setProdLocation(partProdGroup.getWorkCenterCode());
List<String> proSeqResultList = syncFuncService.syncSerialNo(prodSeqSerialNoModel.organizeCode(partProdGroup.getOrganizeCode()), "edi", partProdGroup.getOrganizeCode(), sortInfoList.size()).getResultList();
log.info("castle-execute-顺序号:{}", proSeqResultList);
//扣减qty 生成工单 //扣减qty 生成工单
while (qty > 0) { while (qty > 0) {
//临时客户排序信息中的数量计数器 //临时客户排序信息中的数量计数器
sortInfo = sortInfoList.get(0); sortInfo = sortInfoList.get(0);
String seq = proSeqResultList.get(0);
long productSeq = Long.parseLong(seq.replace("MES_WORK_ORDER_SEQ_WU_HAN", "").replace(partProdGroup.getWorkCenterCode(), ""));
double custQty = sortInfo.getQty(); double custQty = sortInfo.getQty();
//当客户排序信息中的数量大于剩余圆整数量要Break //当客户排序信息中的数量大于剩余圆整数量要Break
if (custQty > roundQty) { if (custQty > roundQty) {
@ -187,10 +191,11 @@ public class MesPackageRoundnessService implements IRoundnessStrategy {
return; return;
} }
mesCreateWorkOrder.createWorkOrder(partProdGroup, mesPartProdGroupDetail, mesPart, sortInfo); mesCreateWorkOrder.createWorkOrder(partProdGroup, mesPartProdGroupDetail, mesPart, sortInfo,productSeq);
// doCreateWorkOrder(partProdGroup, mesPartProdGroupDetail, mesPart, sortInfo); // doCreateWorkOrder(partProdGroup, mesPartProdGroupDetail, mesPart, sortInfo);
qty -= custQty; qty -= custQty;
sortInfoList.remove(sortInfo); sortInfoList.remove(sortInfo);
proSeqResultList.remove(seq);
// 更新排序信息 已完成 // 更新排序信息 已完成
custSoftInfoService.updateCustSortInfo(sortInfo); custSoftInfoService.updateCustSortInfo(sortInfo);
} }

@ -87,7 +87,7 @@ 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) { 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();
@ -411,15 +411,16 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
workOrderPartRao.saveAll(workOrderPartList); workOrderPartRao.saveAll(workOrderPartList);
} }
List<MesWorkOrderAssembly> assemblyList = getAssemblyList(mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getCarModelCode(), workOrderPartList, partProdGroup); List<MesWorkOrderAssembly> assemblyList = getAssemblyList(mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getCarModelCode(), workOrderPartList, partProdGroup);
/** // /**
* // * 生产序号
* -线-9,10 // * 工厂-产线-9位流水号,跳号10
*/ // */
GenSerialNoModel prodSeqSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_SEQ_WU_HAN"); // GenSerialNoModel prodSeqSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_SEQ_WU_HAN");
prodSeqSerialNoModel.setProdLocation(mesWorkOrder.getWorkCenterCode()); // prodSeqSerialNoModel.setProdLocation(mesWorkOrder.getWorkCenterCode());
List<String> proSeqResultList = syncFuncService.syncSerialNo(prodSeqSerialNoModel.organizeCode(organizeCode), "edi", mesPartProdGroupDetail.getOrganizeCode(), 1).getResultList(); // List<String> proSeqResultList = syncFuncService.syncSerialNo(prodSeqSerialNoModel.organizeCode(organizeCode), "edi", mesPartProdGroupDetail.getOrganizeCode(), 1).getResultList();
String proSeqStr = proSeqResultList.get(0); // String proSeqStr = proSeqResultList.get(0);
mesWorkOrder.setProductSeq(Long.parseLong(proSeqStr.replace("MES_WORK_ORDER_SEQ_WU_HAN", "").replace(mesWorkOrder.getWorkCenterCode(),""))); mesWorkOrder.setProductSeq(productSeq);
mesWorkOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName()); mesWorkOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName());
ConvertBean.saveOrUpdate(mesWorkOrder, "MES-JOB"); ConvertBean.saveOrUpdate(mesWorkOrder, "MES-JOB");
mesWorkOrderRao.insert(mesWorkOrder); mesWorkOrderRao.insert(mesWorkOrder);

@ -104,12 +104,11 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
cfgOffline.setCustPartNo(custPartNo); cfgOffline.setCustPartNo(custPartNo);
cfgOffline.setCustPartName(mesCustomerPart.getCustPartName()); cfgOffline.setCustPartName(mesCustomerPart.getCustPartName());
cfgOffline.setPartNo(erpPartNo); cfgOffline.setPartNo(erpPartNo);
cfgOffline.setVehicleNo(carModelCode); // cfgOffline.setVehicleNo(carModelCode);
cfgOffline.setOrganizeCode(organizeCode); cfgOffline.setOrganizeCode(organizeCode);
ConvertBean.saveOrUpdate(cfgOffline, "OFFLINE-JOB"); ConvertBean.saveOrUpdate(cfgOffline, "OFFLINE-JOB");
cfgOfflineRao.insert(cfgOffline); cfgOfflineRao.insert(cfgOffline);
} }
} }
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)

Loading…
Cancel
Save