|  |  | 
 |  |  |         if(assemblyDao.exists(plan.name,plan.id)){ | 
 |  |  |             throw new RuntimeException("计划名称不能重复"); | 
 |  |  |         } | 
 |  |  |         PrProductionProcess process = processDao.selectByPrimaryKey(plan.processId); | 
 |  |  |         if(process == null || !process.proId.equals(plan.proId)){ | 
 |  |  |             throw new RuntimeException("产品与生产流程不匹配"); | 
 |  |  |         } | 
 |  |  |         extractedCheck(plan); | 
 |  |  |         PrBatchNumber batch = new PrBatchNumber(); | 
 |  |  |         batch.batchNumber = getNextCode(); | 
 |  |  |         batch.proId = plan.proId; | 
 |  |  | 
 |  |  |         if(process == null || !process.proId.equals(plan.proId)){ | 
 |  |  |             throw new RuntimeException("产品与生产流程不匹配"); | 
 |  |  |         } | 
 |  |  |         //开始日期要小于结束日期 | 
 |  |  |         if(plan.startDate.compareTo(plan.endDate) > 0){ | 
 |  |  |             throw new RuntimeException("开始日期不能大于结束日期"); | 
 |  |  |         } | 
 |  |  |         //Fancy add 2024/07/09   如果状态为执行 ,则结束日期必须大于等于当前日期 | 
 |  |  |         if(plan.status == PlanStatusEnum.NORMAL.getCode()){ | 
 |  |  |             String endDateStr = plan.getEndDate(); |