| | |
| | | import netscape.javascript.JSObject; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Qualifier; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.Date; |
| | | import java.util.concurrent.Executor; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | @Slf4j |
| | | public class JkSketchServiceImpl implements JkSketchService { |
| | | |
| | | @Autowired |
| | | @Qualifier("asyncExecutor") |
| | | private Executor asyncExecutor; |
| | | @Autowired |
| | | private JkSketchMapper jkSketchMapper; |
| | | @Autowired |
| | |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"该线路已被优化,已无法计算原始路线路程数"); |
| | | } |
| | | checkJketchCustomerLocation(model,true); |
| | | model.setEditDate(new Date()); |
| | | model.setDistance(model.getOriginDistance()); |
| | | jkSketchMapper.updateById(model); |
| | | return model; |
| | | JkSketch update = new JkSketch(); |
| | | update.setId(model.getId()); |
| | | update.setEditDate(new Date()); |
| | | update.setDistance(model.getOriginDistance()); |
| | | update.setOriginDistance(model.getOriginDistance()); |
| | | jkSketchMapper.updateById(update); |
| | | return update; |
| | | } |
| | | |
| | | @Override |
| | |
| | | BigDecimal finalCLongitude = cLongitude; |
| | | log.error("交通规划====线程circle:"+i+"====start:"+start+"===========end:"+end); |
| | | int finalI = i; |
| | | Thread t1=new Thread(() -> { |
| | | asyncExecutor.execute(() -> { |
| | | try { |
| | | int index =0; |
| | | for (int j = start; j < end; j++) { |
| | |
| | | } |
| | | |
| | | }); |
| | | t1.start(); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | log.error("distanceCustomer异常", e); |
| | | }finally { |
| | | |
| | | } |
| | |
| | | dataModel.initDataInfo(vehicleNumber1,demands1,demands2,vehicleCapacities1,distanceMatrix1,vehicleMaxNodes); |
| | | TspSolver.startSearch(dataModel); |
| | | JkSketch nowModel = jkSketchMapper.selectById(model.getId()); |
| | | if(StringUtils.equals(model.getJobId(), nowModel.getJobId())){ |
| | | if(!StringUtils.equals(model.getJobId(), nowModel.getJobId())){ |
| | | log.error( "优化结果已失效,非最近一次操作!"); |
| | | return; |
| | | } |
| | |
| | | queryWrapper.selectAll(JkSketchCustomer.class ) |
| | | .selectAs(JkCustomer::getName,JkSketchCustomer::getName) |
| | | .selectAs(JkCustomer::getCode,JkSketchCustomer::getCode) |
| | | .selectAs(JkCustomer::getDistance,JkSketchCustomer::getDistanceJson) |
| | | // .selectAs(JkCustomer::getDistance,JkSketchCustomer::getDistanceJson) |
| | | .selectAs(JkCustomer::getLongitude,JkSketchCustomer::getLongitude) |
| | | .selectAs(JkCustomer::getLatitude,JkSketchCustomer::getLatitude) |
| | | .selectAs(JkCustomer::getStartDistance,JkSketchCustomer::getStartDistance) |
| | |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"线路【"+line.getLineName()+"】调整失败 ,未获得最优交通规划方案!"); |
| | | } |
| | | JkSketch nowModel = jkSketchMapper.selectById(model.getId()); |
| | | if(StringUtils.equals(model.getJobId(), nowModel.getJobId())){ |
| | | if(!StringUtils.equals(model.getJobId(), nowModel.getJobId())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"线路【"+line.getLineName()+"】调整失败 ,非最近一次操作!"); |
| | | } |
| | | |
| | |
| | | queryWrapper.selectAll(JkSketchCustomer.class ) |
| | | .selectAs(JkCustomer::getName,JkSketchCustomer::getName) |
| | | .selectAs(JkCustomer::getCode,JkSketchCustomer::getCode) |
| | | .selectAs(JkCustomer::getDistance,JkSketchCustomer::getDistanceJson) |
| | | // .selectAs(JkCustomer::getDistance,JkSketchCustomer::getDistanceJson) |
| | | .selectAs(JkCustomer::getLongitude,JkSketchCustomer::getLongitude) |
| | | .selectAs(JkCustomer::getLatitude,JkSketchCustomer::getLatitude) |
| | | .selectAs(JkCustomer::getStartDistance,JkSketchCustomer::getStartDistance) |
| | |
| | | .selectAs(JkCustomer::getName,JkSketchCustomer::getName) |
| | | .selectAs(JkCustomer::getCode,JkSketchCustomer::getCode) |
| | | .selectAs(JkCustomer::getDistanceStatus,JkSketchCustomer::getDistanceStatus) |
| | | .selectAs(JkCustomer::getDistance,JkSketchCustomer::getDistanceJson) |
| | | // .selectAs(JkCustomer::getDistance,JkSketchCustomer::getDistanceJson) |
| | | .selectAs(JkCustomer::getLongitude,JkSketchCustomer::getLongitude) |
| | | .selectAs(JkCustomer::getLatitude,JkSketchCustomer::getLatitude) |
| | | .selectAs(JkCustomer::getStartDistance,JkSketchCustomer::getStartDistance) |