|  |  |  | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoBa.BaUser; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoPr.*; | 
|---|
|  |  |  | import com.dy.pmsGlobal.util.UserUtil; | 
|---|
|  |  |  | import com.dy.pmsProduct.taskPlan.PlanStatusEnum; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.apache.dubbo.common.utils.PojoUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | 
|---|
|  |  |  | if (orderDao.exists(p.name, p.id)) { | 
|---|
|  |  |  | throw new RuntimeException("订单名称不能重复"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | extractedCheck(p); | 
|---|
|  |  |  | p.setDeleted(false); | 
|---|
|  |  |  | BaUser loginUser = userUtil.getUser(UserTokenContext.get()); | 
|---|
|  |  |  | if (loginUser != null) { | 
|---|
|  |  |  | 
|---|
|  |  |  | if (orderDao.exists(p.name, p.id)) { | 
|---|
|  |  |  | throw new RuntimeException("订单名称不能重复"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | extractedCheck(p); | 
|---|
|  |  |  | int count = orderDao.updateByPrimaryKeySelective(p); | 
|---|
|  |  |  | if (count > 0) { | 
|---|
|  |  |  | saveOrderItems(p); | 
|---|
|  |  |  | 
|---|
|  |  |  | if(order.status == OrderStatusEnum.NORMAL.getCode()){ | 
|---|
|  |  |  | PrOrder prOrder = orderDao.selectByPrimaryKey(order.id); | 
|---|
|  |  |  | prOrder.status = order.status; | 
|---|
|  |  |  | //extractedCheck(prOrder); | 
|---|
|  |  |  | extractedCheck(prOrder); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | PrOrder param = new PrOrder(); | 
|---|
|  |  |  | param.id =order.id; | 
|---|
|  |  |  | param.status = order.status; | 
|---|
|  |  |  | return orderDao.updateByPrimaryKeySelective(param); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /*private void extractedCheck(PrOrder order) { | 
|---|
|  |  |  | PrProductionProcess process = processDao.selectByPrimaryKey(plan.processId); | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | LocalDate endDate = LocalDate.parse(endDateStr, DateTimeFormatter.ISO_LOCAL_DATE); | 
|---|
|  |  |  | //如果交期小于当前时间,不允许设置为正常 | 
|---|
|  |  |  | private void extractedCheck(PrOrder order) { | 
|---|
|  |  |  | if(order.status == OrderStatusEnum.NORMAL.getCode()){ | 
|---|
|  |  |  | String deliveryDateStr = order.getDeliveryDate(); | 
|---|
|  |  |  | LocalDate endDate = LocalDate.parse(deliveryDateStr, DateTimeFormatter.ISO_LOCAL_DATE); | 
|---|
|  |  |  | LocalDate nextDay = endDate.plusDays(1); | 
|---|
|  |  |  | LocalDate today = LocalDate.now(); // 获取当前日期 | 
|---|
|  |  |  | if (nextDay.isBefore(today)) { | 
|---|
|  |  |  | throw new RuntimeException("执行状态结束日期必须大于等于当前日期,请修改结束日期"); | 
|---|
|  |  |  | throw new RuntimeException("交付日期必须大于等于当前日期,请修改交付日期"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //如果有在生产的任务不能设置为暂停 或 结束 | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | PrProductionProcess process = processDao.selectByPrimaryKey(order.processId); | 
|---|
|  |  |  | if(process == null || !process.proId.equals(order.proId)){ | 
|---|
|  |  |  | throw new RuntimeException("产品与生产流程不匹配"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //开始日期要小于结束日期 | 
|---|
|  |  |  | if(order.startDate.compareTo(order.endDate) > 0){ | 
|---|
|  |  |  | throw new RuntimeException("开始日期不能大于结束日期"); | 
|---|
|  |  |  | }*/ | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|